anchor.diff:  
     void save() {
       var file = new File(path);
  -    
  +
       if (!file.parent.existsSync()) {
         file.parent.createSync(recursive: true);
       }
   
       file.writeAsStringSync(type.encode(_entries) + "\n");
     }
  -  
  +
     void startSaveTimer({Duration interval: const Duration(seconds: 2)}) {
       if (_timer != null) {
         throw new StateError("Timer already started.");
       }
  -    
  +
       _timer = new Timer.periodic(interval, (timer) {
         if (_changed) {
           save();
         }
       });
     }
  -  
  +
     void stopSaveTimer() {
       if (_timer != null) {
         _timer.cancel();
         _timer = null;
       }
     }
  -  
  +
     void destroy() {
       stopSaveTimer();
       save();
  
positive.code:   void onChange() {
      _changed = true;
    }
    
    void delete() {
      destroy();
      var file = new File(path);
  
negative.code:     onChange();
      entries[key] = value;
    }
  
    List<String> get keys => entries.keys.toList();
  
    void onChange();
    Map<String, dynamic> get entries;
  }
  