public static function call($func, array $args)
{
if ($func instanceof self) {
return $func->execute($args);
} else {
if (is_callable($func) && is_object($func)) {
return call_user_func_array($func, $args);
}
}
throw new InvalidArgumentException('expected callable value');
}