anchor.diff:    bool get hasFragment => false;
   
     @override
  -  int get hashCode => _text.hashCode;
  +  int get hashCode {
  +    return _hashCode ??= _hashUsingText
  +        ? _computeHashUsingText(this)
  +        : _computeHashUsingCombine(this);
  +  }
   
     @override
     bool get hasPort => false;
  
positive.code:   static int _currentCacheLength = 0;
    static int _currentCacheGeneration = 0;
  
    final int _cacheGeneration;
    final String _text;
    final String _scheme;
  
negative.code:       }
      }
      return uri;
    }
  
    /**
     * This implementation was used before 'fast-URI' in Dart VM.
     */
    static int _computeHashUsingCombine(FastUri uri) {
      // This code is copied from the standard Uri implementation.
      // It is important that Uri and FastUri generate compatible hashCodes
      // because Uri and FastUri may be used as keys in the same map.
      int combine(part, current) {
        // The sum is truncated to 30 bits to make sure it fits into a Smi.
        return (current * 31 + part.hashCode) & 0x3FFFFFFF;
      }
  
      return combine(
          uri.scheme,
          combine(
              uri.userInfo,
              combine(
                  uri.host,
                  combine(
                      uri.port,
                      combine(uri.path,
                          combine(uri.query, combine(uri.fragment, 1)))))));
    }
  
    /**
     * This implementation should be used with 'fast-URI' in Dart VM.
     * https://github.com/dart-lang/sdk/commit/afbbbb97cfcd86a64d0ba5dcfe1ab758954adaf4
     */
    static int _computeHashUsingText(FastUri uri) {
      return uri._text.hashCode;
    }
  
    static bool _isAlphabetic(int char) {
  