anchor.diff:          throw new FormatException("Invalid character in selector at ${tokenizer.index}");
       }
     }
  -  
  +
     final bool isPath = false;
  -  
  +
     final UnmodifiableListView<FieldSelector> fields;
  -  FieldListSelector(List<FieldSelector> fields, {Selector parent}) : 
  +  FieldListSelector(List<FieldSelector> fields, {Selector parent}) :
       super(parent),
       this.fields = new UnmodifiableListView(fields);
  -  
  +
     bool _matchPath(FieldPath path, {matchSubpaths: true, matchDepth: 0}) {
       var p = parent;
       while (p != null) {
  
positive.code:     path = _firstNonIndexAncestor(path.parent);
      return parent._matchPath(path, matchSubpaths: false, matchDepth: matchDepth);
    }
    
    Map<String,dynamic> _filterMap(Map<String,dynamic> map) => new Map.from(map);
    
    String toString() => (parent == null) ? '*' : '$parent/*';
    
    bool operator ==(Object other) => other is AnySelector;
    int get hashCode => 0;
  }
  
negative.code:         return null;
      }
    }
  
    Selector parent;
  
    Selector(this.parent);
  
    Selector get root => parent == null ? this : parent.root;
  
    List<Selector> get _ancestors =>
        ((parent == null ? [] : parent._ancestors) as List)
        ..add(this);
  
    /**
     * Check whether the provided `path` is in the selection defined by `this`.
     *
     */
    bool isPathInSelection(Path path) {
      path = _firstNonIndexAncestor(path);
  