anchor.diff:                return _limitedDiffFromVersion(diff);
               }
   
  -            if (project!=null) {
  +            if (projection!=null) {
                 for (Map elem in diff) {
                   if(elem.containsKey('data')){
  -                  project(elem['data']);
  +                  projection(elem['data']);
                   }
                 }
               }
  
positive.code:       ).then((_) => _release_locks()).then((_) => nextVersion);
    }
  
    Future<Map> diffFromVersion(num version, {project: null}) {
      try{
        return _diffFromVersion(version, project: project).then((d) {
          return d;
        });
      } on DiffNotPossibleException catch(e) {
        return data(project: project).then((d) {
          d['diff'] = null;
          return d;
        });
  
negative.code:   /**
     * Returns data and version of this data 7.
     */
    Future<Map> data({projection: null}) {
      return collection.find(where.raw(_rawSelector).limit(_limit).skip(_skip)).toList().then((data) {
        //return _maxVersion.then((version) => {'data': data, 'version': version});
        var version = data.length == 0 ? 0 :
          data.map((item) => item['__clean_version']).reduce(max);
  
        _stripCleanVersion(data);
        if (projection!=null){
          data.forEach((e) => projection(e));
        }
        return {'data': data, 'version': version};
      });
  