anchor.diff:  
         SubTree<T> next = subTree.fixed[seg];
         if (subTree.hasVarPaths) {
  +        // If has variable path, only consider fixed path if it is a match
           if (next != null) {
             T ret = _match(next, segments.skip(i + 1), tag);
             if (ret != null) return ret;
  
positive.code: }
  
  class SubTree<T> {
    final value = <String, T>{};
  
    final regexes = <MapEntry<RegExp, SubTree<T>>>[];
  
    final fixed = <String, SubTree<T>>{};
  
    SubTree<T> varSubTree;
  
    final globValue = <String, T>{};
  
    bool get hasVarPaths =>
        regexes.isNotEmpty ||
        varSubTree != null ||
        globValue != null; // TODO cache this
  }
  
  class PathTree<T> {
  
negative.code:         subTree.globValue['*'];
    }
  
    T _matchRegex(SubTree<T> root, Iterable<String> segments, String tag) {
      for (MapEntry<RegExp, SubTree<T>> regex in root.regexes) {
        if (regex.key.allMatches(segments.first).isNotEmpty) {
          T ret = _match(regex.value, segments.skip(1), tag);
  