anchor.diff:  
     Uri _cachedFallbackUri;
   
  -  FastUri(this._text, this._scheme, this._path, this._lastSlashIndex);
  +  FastUri._(this._cacheGeneration, this._text, this._scheme, this._path,
  +      this._lastSlashIndex);
   
     @override
     String get authority => '';
  
positive.code:    * of [FastUri] or [Uri] is returned for the same [text].
     */
    static Uri parse(String text) {
      // TODO(scheglov) clear the cache if it is too big
      Uri uri = _cache[text];
      if (uri == null) {
        uri = _parse(text);
        uri ??= Uri.parse(text);
        _cache[text] = uri;
      }
      return uri;
    }
  
negative.code:  * limited URI format, so almost always can be processed fast.
   */
  class FastUri implements Uri {
    /***
     * The maximum [_cache] length before we flush it and start a new generation.
     */
    static const int _MAX_CACHE_LENGTH_BEFORE_FLUSH = 50000;
  
    static HashMap<String, Uri> _cache = new HashMap<String, Uri>();
    static int _currentCacheLength = 0;
    static int _currentCacheGeneration = 0;
  
    final int _cacheGeneration;
    final String _text;
    final String _scheme;
    final String _path;
  