public function test()
 {
     $class = get_class($this);
     $class = substr($class, 41);
     $file_name = $class . '.inc';
     $parser = (new ParserFactory())->create(ParserFactory::PREFER_PHP7);
     $traverser = new NodeTraverser();
     // add your visitor
     $collector = new Collector();
     $traverser->addVisitor(new NodeVisitor($collector, new Config()));
     try {
         $code = file_get_contents(__DIR__ . '/../tests/' . $file_name);
         // parse
         $stmts = $parser->parse($code);
         // traverse
         $traverser->traverse($stmts);
         $found = $collector->get();
         foreach ($found as &$item) {
             unset($item['node']);
         }
         $this->assertEquals($this->expectations(), $found);
     } catch (Error $e) {
         echo 'Parse Error: ', $e->getMessage();
     }
 }
 protected function scan_file($file_name)
 {
     try {
         $this->logger->info('Scanning ' . $file_name);
         $code = file_get_contents($file_name);
         $this->traverser->traverse($this->parser->parse($code));
     } catch (Error $e) {
         $this->logger->error('Parse Error: ' . $e->getMessage());
     }
     foreach ($this->collector->get() as $result) {
         $this->logger->notice($result['function'] . '(): ' . $result['item']);
     }
     $this->collector->reset();
 }