public static function method($since = null, $suggest = '', $subject = 0): void
    {
        if ($subject === null || is_int($subject)) {
            [$subject, $function, $constructor] = static::getCaller($subject ?: 0);
        } else {
            Assert::stringNotEmpty($subject, 'Expected a non-empty string. Got: %s');
            $function = $subject;
            $constructor = false;
        }

        // Shortcut for suggested method
        if ($suggest && preg_match('/\s/', $suggest) === 0) {
            // Append () if it is a method/function (not a class)
            if (! class_exists($suggest)) {
                $suggest .= '()';
            } elseif (! $constructor && method_exists($suggest, $function)) {
                // $suggest is class that has matching method name and is not the constructor
                $suggest .= '::' . $function . '()';
            }
            $suggest = "Use ${suggest} instead.";
        }

        if (! $constructor) {
            $subject .= '()';
        }

        static::warn($subject, $since, $suggest);
    }