/**
  * {@inheritdoc}
  */
 public function enterNode(Node $node)
 {
     if ($node instanceof Node\Stmt\ClassLike) {
         if ($node instanceof Node\Stmt\Class_ && $node->isAnonymous()) {
             return;
         }
         $this->parentName = $node->namespacedName->toString();
     }
     if (!$this->hasDeprecatedDocComment($node)) {
         return;
     }
     if ($node instanceof Node\Stmt\Function_) {
         $this->phpFileInfo->addFunctionDeprecation(new FunctionDeprecation($node->name, $this->getDeprecatedDocComment($node)));
         return;
     }
     if ($node instanceof Node\Stmt\Class_) {
         $this->phpFileInfo->addClassDeprecation(new ClassDeprecation($this->parentName, $this->getDeprecatedDocComment($node)));
         return;
     }
     if ($node instanceof Node\Stmt\Interface_) {
         $this->phpFileInfo->addInterfaceDeprecation(new InterfaceDeprecation($this->parentName, $this->getDeprecatedDocComment($node)));
         return;
     }
     if ($node instanceof Node\Stmt\ClassMethod) {
         $this->phpFileInfo->addMethodDeprecation(new MethodDeprecation($this->parentName, $node->name, $this->getDeprecatedDocComment($node)));
         return;
     }
 }
 /**
  * {@inheritdoc}
  */
 public function enterNode(Node $node)
 {
     if ($node instanceof Node\Stmt\Class_ && $node->extends instanceof Node\Name) {
         if ($node->isAnonymous()) {
             return;
         }
         $superTypeUsage = new SuperTypeUsage($node->extends->toString(), $node->namespacedName->toString(), $node->getLine());
         $this->phpFileInfo->addSuperTypeUsage($superTypeUsage);
     }
 }
 public function leaveNode(Node $node)
 {
     if ($node instanceof Node\Stmt\Class_ || $node instanceof Node\Stmt\Interface_ || $node instanceof Node\Stmt\Trait_) {
         if ($node instanceof Node\Stmt\Class_ && $node->isAnonymous()) {
             return;
         }
         $this->table->leaveScope();
     }
     if ($node instanceof Node\Stmt\ClassMethod || $node instanceof Node\Stmt\Function_) {
         $this->table->leaveScope();
     }
 }
 /**
  * {@inheritdoc}
  */
 public function enterNode(Node $node)
 {
     if ($node instanceof Node\Stmt\Class_) {
         if ($node->isAnonymous()) {
             return;
         }
         $phpFileInfo = $this->phpFileInfo;
         array_map(function (Node\Name $interface) use($node, $phpFileInfo) {
             $interfaceUsage = new InterfaceUsage($interface->toString(), $node->namespacedName->toString(), $node->getLine());
             $phpFileInfo->addInterfaceUsage($interfaceUsage);
         }, $node->implements);
     }
 }