/**
  * @return true[]
  */
 public function getBootstrapModules()
 {
     $bootstrap_modules = array();
     foreach ($this->discoverModuleFilenames('module') as $name => $filename) {
         $php = file_get_contents($filename);
         foreach (PureFunctions::bootstrapHooks() as $hook) {
             if (FALSE !== strpos($php, 'function ' . $name . '_' . $hook)) {
                 $bootstrap_modules[$name] = TRUE;
                 break;
             }
         }
     }
     return $bootstrap_modules;
 }
 /**
  * @see module_invoke()
  *
  * @param string $module
  * @param string $hook
  *
  * @return mixed
  *
  * @throws \Exception
  */
 function moduleInvoke($module, $hook)
 {
     $args = func_get_args();
     switch (count($args)) {
         case 2:
             return PureFunctions::moduleInvoke($module, $hook);
         case 3:
             return PureFunctions::moduleInvoke($module, $hook, $args[2]);
         case 4:
             return PureFunctions::moduleInvoke($module, $hook, $args[2], $args[3]);
         default:
             throw new \Exception("More arguments than expected.");
     }
 }