public function withScheme($scheme): UriInterface
    {
        if (!in_array(strtolower($scheme), ['', 'http', 'https'])) {
            throw new InvalidArgumentException('Scheme must be one of : "", "http" or "https"');
        }

        $uri = clone $this;
        $uri->scheme = $scheme;

        return $uri;
    }