anchor.diff:    // PREFIX_MATCH - Prefix match found ("f*/b*/" partially matches "foo/")
     // COMPLETE_MATCH - Prefix match found ("f**/b*" completely matches "foo/bar/baz")
     int matchPath(String path) {
  -    int lastIndex = 0;
  -
  -    String globSoFar = "";
       int globIndex = 0;
   
  -    for (;globIndex < _globRegExpParts.length; globIndex++) {
  -      globSoFar += ((globSoFar != "") ? ".*" : "") + _globRegExpParts[globIndex];
  -      if (globIndex == _globRegExpParts.length - 1) globSoFar = globSoFar + "\$";
  -      if (new RegExp(globSoFar).matchAsPrefix(path) == null) break;
  +    for (;globIndex < _globPartsAsStrings.length; globIndex++) {
  +      if (globIndex >= _globPartsAsRegExps.length) {
  +        _globSoFar += ((_globSoFar != "") ? ".*" : "") +
  +            _globPartsAsStrings[globIndex];
  +        if (globIndex == _globPartsAsStrings.length - 1) {
  +          _globSoFar = _globSoFar + "\$";
  +        }
  +        _globPartsAsRegExps.add(new RegExp(_globSoFar));
  +      }
  +      if (_globPartsAsRegExps[globIndex].matchAsPrefix(path) == null) break;
       }
   
       if (globIndex > 0) {
  -      if (globIndex == _globRegExpParts.length) {
  +      if (globIndex == _globPartsAsStrings.length) {
           return COMPLETE_MATCH;
         }
         return PREFIX_MATCH;
  
positive.code: 
    GlobMatcher matchAsPrefix(String string, [int start = 0]) {
      int n = start;
      do {
        n = string.indexOf(new RegExp(r"[\\*?\[\{]"), n);
        GlobMatcher matcher;
  
        if (n == -1) {
  
negative.code:   static int COMPLETE_MATCH = 2;
    static final RegExp _escapePattern = new RegExp("[!@#\$%^&()-.,<>+=\\/~`|]");
  
    List<String> _globPartsAsStrings;
    List<RegExp> _globPartsAsRegExps = [];
    String _globSoFar = "";
  
    Glob(String pattern) {
      bool matchFull = pattern.substring(0,1) == "/";
  