protected static function toss(/** @noinspection PhpUnusedParameterInspection */ $exception, $message, $code = 0)
    {
        $args = array_values(get_defined_vars());
        foreach(func_get_args() as $i => $value) {
            $args[$i] = $value;
        }
        list($exception, $message, $code) = array_splice($args, 0, 3);
        $exception = self::getNamespaceName() . "\\Exceptions\\{$exception}";
        if (strpos($exception, 'Headzoo\Core\\') === 0 && substr($exception, -9) != "Exception") {
            $exception .= "Exception";
        }
        
        if (!is_int($code)) {
            array_unshift($args, $code);
            $code = 0;
        }
        $placeholders = array_merge($args, [
            "me"        => get_called_class(),
            "exception" => $exception,
            "code"      => $code,
            "date"      => date("Y-m-d H:i:s")
        ]);
        $message = self::interpolate($message, $placeholders);
        
        throw new $exception(
            $message,
            $code
        );
    }