The interplay between Drupal\Component\Annotation, Drupal\Component\Reflection & Drupal\Component\Plugin\Discovery\AnnotatedClassDiscovery is very scattered and difficult to follow. In terms of organizing this code properly, we should either include the Reflection & Annotation components as part of the Plugins component or we should separate the AnnotatedClassDiscovery from the Plugin Component and put it in the Component that's already supporting it. I've chosen the latter here as a.) it makes sense b.) more clearly defines dependencies for plugin & their discovery and c.) co-locates all the annotation stuff together in one place.
This should have no impact on core beyond the scope of the very very small patch I've already provided and should have 0 impact on contrib as none of these classes are likely to be used on their own. We have Drupal classes that stand in front of all of this stuff currently and have pointed contrib developers to it.
The "Reflection" component is really a subset of the AnnotatedClassDiscovery's needs. No other subsystem uses it and it's just one file. There's really no benefit to it being separated into another component. By contrast the "Annotation" component is heavily used all over core through subclasses of the Plugin annotation. This reorganization would start the ball rolling on getting Utility, Annotation & Plugin components all ready for Composer and this specific patch would bring about cohesion to the Annotation/Reflection & AnnotatedClassDiscovery by really associating these all together in a logical way.
PASSED: [[SimpleTest]]: [MySQL] 58,735 pass(es).
PASSED: [[SimpleTest]]: [MySQL] 58,857 pass(es).
PASSED: [[SimpleTest]]: [MySQL] 58,915 pass(es).
PASSED: [[SimpleTest]]: [MySQL] 58,123 pass(es).
PASSED: [[SimpleTest]]: [MySQL] 58,204 pass(es).