static function grabFunctionParameters($class, $function, array $paramValues)
    {
        $declaredParams = (new \ReflectionMethod($class, $function))->getParameters();
        $paramNames = array_map(function(\ReflectionParameter $v) {
            return $v->getName();
        },
            $declaredParams
        );
        $paramDefaults = array_map(function(\ReflectionParameter $v) {
            return $v->isOptional() ? $v->getDefaultValue() : null;
        },
            $declaredParams
        );

        return array_combine($paramNames, array_replace($paramDefaults, $paramValues));
    }