anchor.diff:  
     mongoEquals(dynamic obj, List<String> what, pattern, {allowList: true}){
       if (what.isEmpty) {
  -      return obj == pattern;
  +      if (obj is List && allowList) {
  +        return obj.any((e) => mongoEquals(e, what, pattern, allowList: false));
  +      } else {
  +        return obj == pattern;
  +      }
       }
       var key = what.first;
       var rest = what.sublist(1);
       if (obj is Map) {
  -      return (obj.containsKey(what.first)) && mongoEquals(obj[key], what.sublist(1), pattern);
  +      return (obj.containsKey(what.first)) && mongoEquals(obj[key], rest, pattern);
       }
       if (obj is List && allowList) {
         return obj.any((e) => mongoEquals(e, what, pattern, allowList: false));
  
positive.code:       expect(colAll.where((d) => mongoEquals(d, ['a', 'a'], 'hello')),
            unorderedEquals(colAa));
        expect(subNoMatch.version == subAll.version, isTrue);
        
      });
      if (checkGetData) {
        for (Subscription sub in [subAll]) {
  
negative.code:     }
  
      if (data[key] is! Map && data[key] is! List && prob(PROB_ADD)) {
        if(prob(0.9)){
          data[key] = new DataList();
          randomChangeCollection(data[key], topLevel: false);
        } else {
          data[key] = new DataMap();
          randomChangeMap(data[key]);
  