anchor.diff:              "version" : nextVersion++
           }).toList(growable: false)));
         },
  -      onError: (e) {
  +      onError: (e,s) {
           // Errors thrown by MongoDatabase are Map objects with fields err, code,
           // ...
           return _release_locks().then((_) {
  -          throw new MongoException(e);
  +          throw new MongoException(e,s);
           });
         }
         ).then((_) => _release_locks()).then((_) => nextVersion);
  
positive.code:           oldData = data;
            return Future.forEach(data,
                (item) => collection.update({'_id': item['_id']},
                    prepare(modifier(item)))
                );
          });
        }).then((_) {
  
negative.code: class MongoException implements Exception {
     final Map mongoError;
     final String msg;
     final String stackTrace;
     const MongoException(this.mongoError, this.stackTrace, [this.msg]);
     String toString() =>
         msg == null ? 'MongoError: $mongoError \n Stack trace: $stackTrace' : '$msg MongoError: $mongoError \n Stack trace: $stackTrace';
  }
  
  const String QUERY = "\$query";
  