private static function generateParameterPrototypeCode(\ReflectionParameter $rp) : string
    {
        $param_name = $rp->getName();
        $has_type   = $rp->hasType();
        $type       = $rp->getType();
        $class      = $rp->getClass();
        $optional   = $rp->isOptional();
        $default    = $optional ? self::describeDefault($rp->getDefaultValue()) : '';
        
        $typehint = $has_type ? ($type->isBuiltin() ? "$type" : $class->getShortName()) : '';
        
        $code = $typehint . ' ' . Code::PHP_DOLLAR . $param_name . (!empty($default) ? ' ' . Code::PHP_EQUAL . ' ' . $default : '');
        
        return $code;
    }