public static function filterArguments(array $args)
{
foreach ($args as $k => $v) {
if ($v === '...') {
unset($args[$k]);
} elseif (is_string($v) && preg_match('#^[\\w\\\\]*::[A-Z][A-Z0-9_]*\\z#', $v, $m)) {
$args[$k] = constant(ltrim($v, ':'));
} elseif (is_array($v)) {
$args[$k] = self::filterArguments($v);
} elseif ($v instanceof Statement) {
$tmp = self::filterArguments([$v->getEntity()]);
$args[$k] = new Statement($tmp[0], self::filterArguments($v->arguments));
}
}
return $args;
}