anchor.diff:    String _author;
     IdGenerator _idGenerator;
     Map args = {};
  -  Map<String, Set<String>> _modifiedFields = {};
  +  Map<String, Map<String, num>> _modifiedFields = {};
     Future get initialSync => _communicator._initialSync.future;
     bool get diffInProgress => _communicator.diffInProgress;
     List<StreamSubscription> _subscriptions = [];
  
positive.code: void handleDiff(List<Map> diff, Subscription subscription, String author) {
    print(diff);
    DataCollection collection = subscription.collection;
    Set<String> modifiedFields;
    
    diff.forEach((Map change) {
      if (change["action"] == "add") {
  
negative.code:             "_id": data["_id"],
              "change" : change,
              "author" : _author
            })).then((_) {
              // TODO: check if server really accepted the change
              tokens.forEach((field, token) {
                if (tokenForDataField(data, field) == token) {
                  _clearTokenForDataField(data, field);
                }
              });
            });
          });
  
          event["change"].removedItems.forEach((data) {
  