/**
  * @covers ::reader
  */
 public function testReader()
 {
     $this->assertInstanceOf(Reader::class, AnnotatedReflection::reader());
     $this->assertSame(AnnotatedReflection::reader(), AnnotatedReflection::reader());
 }
 /**
  * Finds the class annotations
  */
 private function findAnnotations()
 {
     foreach (AnnotatedReflection::reader()->getClassAnnotations($this) as $index => $annotation) {
         $this->annotations[$index] = $annotation;
     }
     if ($parent = $this->getParentClass()) {
         if ($annotations = $parent->getAnnotations()) {
             $this->annotations = array_merge($annotations, $this->annotations);
         }
     }
     foreach (parent::getProperties() as $property) {
         foreach (AnnotatedReflection::reader()->getPropertyAnnotations($property) as $index => $annotation) {
             $this->property_annotations[$property->getName()][$index] = $annotation;
         }
     }
     foreach ($this->property_annotations as $name => $annotations) {
         foreach ($annotations as $index => $annotation) {
             $this->annotated_properties[$index][$name] = $this->createAnnotatedProperty($name);
         }
     }
     foreach (parent::getMethods() as $method) {
         foreach (AnnotatedReflection::reader()->getMethodAnnotations($method) as $index => $annotation) {
             $this->method_annotations[$method->getName()][$index] = $annotation;
         }
     }
     foreach ($this->method_annotations as $name => $annotations) {
         foreach ($annotations as $index => $annotation) {
             $this->annotated_methods[$index][$name] = $this->createAnnotatedMethod($name);
         }
     }
 }
 /**
  * Finds the class annotations
  */
 private function findAnnotations()
 {
     foreach (AnnotatedReflection::reader()->getPropertyAnnotations($this) as $index => $annotation) {
         $this->annotations[$index] = $annotation;
     }
 }