/**
  * Extracts every module required by a web test by scanning its calls
  * to parent::setUp().
  *
  * @param \Pharborist\Objects\ClassNode $test
  *
  * @return string[]
  *  Array of modules set up by this module.
  */
 private function extractModules(ClassNode $test)
 {
     $modules = [];
     $test->find(Filter::isClassMethodCall('parent', 'setUp'))->filter(function (ClassMethodCallNode $call) {
         return sizeof($call->getArguments()) > 0;
     })->each(function (ClassMethodCallNode $call) use(&$modules) {
         foreach ($call->getArguments() as $argument) {
             if ($argument instanceof StringNode) {
                 $modules[] = $argument->toValue();
             }
         }
         $call->clearArguments();
     });
     return array_unique($modules);
 }