/**
  * @return ReflectionMethodMagic[]
  */
 public function getOwnMagicMethods()
 {
     if ($this->ownMagicMethods === NULL) {
         $this->ownMagicMethods = [];
         if ($this->reflectionClass->isVisibilityLevelPublic() && $this->reflectionClass->getDocComment()) {
             $extractor = new AnnotationMethodExtractor($this->reflectionClass->getReflectionFactory());
             $this->ownMagicMethods += $extractor->extractFromReflection($this->reflectionClass);
         }
     }
     return $this->ownMagicMethods;
 }
 /**
  * @return ReflectionMethod[]|array
  */
 public function getTraitMethods()
 {
     $methods = [];
     foreach ($this->originalReflection->getTraitMethods($this->reflectionClass->getVisibilityLevel()) as $method) {
         $apiMethod = $this->reflectionClass->getReflectionFactory()->createFromReflection($method);
         if (!$this->reflectionClass->isDocumented() || $apiMethod->isDocumented()) {
             /** @var ReflectionMethod $method */
             $methods[$method->getName()] = $apiMethod;
         }
     }
     return $methods;
 }