function phase2(Config $config, OutputInterface $output, $toProcess)
 {
     $traverser1 = new NodeTraverser();
     $traverser1->addVisitor(new DocBlockNameResolver());
     $analyzer = new StaticAnalyzer($config->getBasePath(), $config->getSymbolTable(), $output, $config);
     $traverser2 = new NodeTraverser();
     $traverser2->addVisitor(new TraitImportingVisitor($config->getSymbolTable()));
     $traverser3 = new NodeTraverser();
     $traverser3->addVisitor($analyzer);
     $parser = (new ParserFactory())->create(ParserFactory::PREFER_PHP7);
     $processingCount = 0;
     foreach ($toProcess as $file) {
         try {
             $name = Util::removeInitialPath($config->getBasePath(), $file);
             $output->output(".", $name);
             $processingCount++;
             //echo " - $processingCount:" . $file . "\n";
             $fileData = file_get_contents($file);
             $stmts = $parser->parse($fileData);
             if ($stmts) {
                 $analyzer->setFile($name);
                 $stmts = $traverser1->traverse($stmts);
                 $stmts = $traverser2->traverse($stmts);
                 $traverser3->traverse($stmts);
             }
         } catch (Error $e) {
             $output->emitError(__CLASS__, $file, 0, "Parse error", $e->getMessage());
         } catch (\Guardrail\Exceptions\UnknownTraitException $e) {
             $output->emitError(__CLASS__, $file, 0, "Unknown trait error", $e->getMessage());
         }
     }
     if ($output instanceof XUnitOutput) {
         //	print_r($output->getCounts());
     }
     return $output->getErrorCount() > 0 ? 1 : 0;
 }