bool InternalEquals (Uri uri)
{
#if NET_2_0
if (this.isAbsoluteUri != uri.isAbsoluteUri)
return false;
if (!this.isAbsoluteUri)
return this.source == uri.source;
#endif
CultureInfo inv = CultureInfo.InvariantCulture;
return this.scheme.ToLower (inv) == uri.scheme.ToLower (inv)
&& this.host.ToLower (inv) == uri.host.ToLower (inv)
&& this.port == uri.port
#if NET_2_0
&& this.query == uri.query
#else
// Note: MS.NET 1.x has bug - ignores query check altogether
&& this.query.ToLower (inv) == uri.query.ToLower (inv)
#endif
&& this.path == uri.path;
}