public function withFragment(Fragment $fragment): self
    {
        $url = Structure::fromString((string) $this)->withFragment(
            new Frag((string) $fragment->substring(1))
        );

        return new self(
            (string) $url
        );
    }