anchor.diff:    Map _userMap;
   
     PreferenceStore _persistentStore;
  -  Future whenLoaded;
  +  Future<bool> whenLoaded;
     bool _loaded = false;
   
     // TODO: implement isDirty
     bool get isDirty => null;
  +
  +  bool _firstRun = false;
  +  bool get firstRun => _firstRun;
   
     Stream<PreferenceEvent> get onPreferenceChange => _changeConroller.stream;
     StreamController<PreferenceEvent> _changeConroller = new StreamController();
  
positive.code:   }
  
    Future _loadUserPrefs() {
      return _persistentStore.getValue("userJsonPrefs", "{}")
          .then((String json) {
        _userMap = JSON.decode(json);
      });
    }
  
negative.code:     editorFontSize = new JsonPreference<num>(_jsonStore, "editorFontSize");
      keyBindings = new JsonPreference<String>(_jsonStore, "keyBindings");
  
      // Check to see if we need to migrate any old store preferences to JSON.
      onPreferencesReady = _jsonStore.whenLoaded.then((_) {
        if (_jsonStore.firstRun) {
          return Future.wait([_migrateFromStore("aceTheme", "editorTheme"),
              _migrateFromStore("fontSize", "editorFontSize"),
              _migrateFromStore("keyBindings", "keyBindings"),
  
          ]);
        }
      });
    }
  
    Future _migrateFromStore(String oldKey, String newKey) {
      return _prefsStore.getValue(oldKey, null).then((String value) {
        if (value != null) _jsonStore.setValue(newKey, value);
      });
    }
  
    // Getters and setters for the value of each preference:
  