private function categorizeParsedElements()
 {
     foreach ($this->parserResult->getTypes() as $type) {
         $elements = $this->parserResult->getElementsByType($type);
         foreach ($elements as $elementName => $element) {
             if (!$element->isDocumented()) {
                 continue;
             }
             if ($element instanceof ReflectionConstant) {
                 $elementType = Elements::CONSTANTS;
                 $this->constants[$elementName] = $element;
             } elseif ($element instanceof ReflectionFunction) {
                 $elementType = Elements::FUNCTIONS;
                 $this->functions[$elementName] = $element;
             } elseif ($element->isInterface()) {
                 $elementType = Elements::INTERFACES;
                 $this->interfaces[$elementName] = $element;
             } elseif ($element->isTrait()) {
                 $elementType = Elements::TRAITS;
                 $this->traits[$elementName] = $element;
             } elseif ($element->isException()) {
                 $elementType = Elements::EXCEPTIONS;
                 $this->exceptions[$elementName] = $element;
             } else {
                 $elementType = Elements::CLASSES;
                 $this->classes[$elementName] = $element;
             }
             $this->categorizeElementToNamespaceAndPackage($elementName, $elementType, $element);
         }
     }
     $this->sortNamespacesAndPackages();
     $this->areElementsCategorized = TRUE;
     $this->addUsedByAnnotation();
 }
 /**
  * @return ArrayObject|ReflectionClass[]
  */
 public function getParsedClasses()
 {
     return $this->parserResult->getElementsByType(Elements::CLASSES);
 }