@Override
    public boolean equals(Object o) {
        if (!(o instanceof Url)) {
            return false;
        }
        Url other = (Url) o;
        return Util.equiv(getScheme(), other.getScheme()) &&
                Util.equiv(getUserInfoRaw(), other.getUserInfoRaw()) &&
                Util.equiv(getHostRaw(), other.getHostRaw()) &&
                Util.equiv(getPort(), other.getPort()) &&
                Util.equiv(getPathRaw(), other.getPathRaw()) &&
                Util.equiv(getQueryRaw(), other.getQueryRaw()) &&
                Util.equiv(getFragment(), other.getFragment());
    }