/**
  * @param Node $node
  *
  * @return null|Node|void
  */
 public function enterNode(Node $node)
 {
     if ($node instanceof Node\FunctionLike) {
         // TODO: Replace these with more advanced resolvers
         $return = DocReturnTypeParser::parseNode($node);
         $param = DocParamTypeParser::parseNode($node);
         //TODO: There must be a cleaner way than getAttribute - traits maybe?
         try {
             $this->index->add($this->file, (string) $node->getAttribute("scopeInner"), $param, $return, $node->getAttribute("scope"));
         } catch (\InvalidArgumentException $e) {
             /* TODO: Ignore duplicates - better recovery on parse failure! */
         }
     }
 }
 public static function parseNode(FunctionLike $node)
 {
     $docTypes = DocReturnTypeParser::parseNode($node);
     $nodeTypes = DirectNodeReturnTypeParser::parseNode($node);
 }