/** @param string|array|int|Closure|Matcher $path */ static function single($path) { $args = func_get_args(); $path = array_shift($args); $m = new Matcher(function ($node, $context = null) use($path) { $context = Matcher::inventContext($context); return Matcher::_evalPath($node, $path, $context); }, $path); return empty($args) ? $m : $m->mapRaw(call_user_func_array('\\Atrox\\Matcher::single', $args)->f); }