public static function __gentryLogMethodCall(string $method, string $class = null, array $args = []) : void
    {
        if (!$class) {
            $class = (new ReflectionClass(get_called_class()))
                ->getParentClass()
                ->name;
        }
        $logger = Logger::getInstance();
        $reflection = new ReflectionMethod($class, $method);
        $parameters = $reflection->getParameters();
        array_walk($args, function (&$arg, $i) use ($reflection, $parameters) {
            if (isset($parameters[$i])) {
                $arg = $parameters[$i]->getNormalisedType($arg);
            } else {
                $j = $i;
                $arg = 'unknown';
                while ($j > 0) {
                    if (isset($parameters[--$j])) {
                        $arg = $parameters[$j]->getNormalisedType($arg);
                        break;
                    }
                }
            }
        });
        $logger->logFeature($class, $method, $args);
    }