public function run(array $argv, $exit = true, $memoryTracking = true, $bootstrap = null)
 {
     require_once __DIR__ . '/../printer/SerializePrinter.php';
     $this->arguments['printer'] = $this->handlePrinter('phpunit_parallel\\printer\\SerializePrinter');
     if ($bootstrap) {
         $this->arguments['bootstrap'] = $bootstrap;
     }
     $this->handleConfig();
     $runner = $this->createRunner();
     while ($testDetails = fgets(STDIN)) {
         if ($memoryTracking) {
             gc_collect_cycles();
         }
         if ($request = TestRequest::decode($testDetails)) {
             SerializePrinter::getInstance()->setCurrentRequest($request);
             $escapedClassName = str_replace('\\', '\\\\', $request->getClass());
             $this->arguments['filter'] = "^{$escapedClassName}::{$request->getName()}\$";
             $suite = new \PHPUnit_Framework_TestSuite($request->getClass());
             $suite->addTestFile($request->getFilename());
             $result = $runner->doRun($suite, $this->arguments);
             if ($result->count() === 0) {
                 $this->showError($request, "Test not found!");
             } elseif ($result->count() > 1) {
                 $this->showError($request, "Multiple tests executed!");
             }
         }
     }
     return 0;
 }