/**
  * @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.");
     }
 }