protected function getParameterSignatures($method)
    {
        $signatures = [];
        $parameters = $method->getParameters();
        foreach ($parameters as $parameter) {
            $signature = '';
            $signature .= $this->getParameterTypeHint($parameter);
            if ($parameter->isPassedByReference()) {
                $signature .= '&';
            }
            // Guard: Variadic methods only supported by PHP 5.6+
            $isVariadic = (PHP_VERSION_ID >= 50600) && $parameter->isVariadic();
            if ($isVariadic) {
                $signature .= '...';
            }
            $signature .= '$' . $parameter->getName();
            if (!$isVariadic) {
                if ($parameter->isDefaultValueAvailable()) {
                    $signature .= ' = ' . var_export($parameter->getDefaultValue(), true);
                } elseif ($parameter->isOptional()) {
                    $signature .= ' = null';
                }
            }

            $signatures[] = $signature;
        }

        return implode(', ', $signatures);
    }