anchor.diff:      editorFontSize = new JsonPreference<num>(_jsonStore, "editorFontSize");
       keyBindings = new JsonPreference<String>(_jsonStore, "keyBindings");
   
  -    onPreferencesReady = _jsonStore.whenLoaded;
  +    // 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:
  
positive.code:   Map _userMap;
  
    PreferenceStore _persistentStore;
    Future whenLoaded;
    bool _loaded = false;
  
    // TODO: implement isDirty
    bool get isDirty => null;
  
    Stream<PreferenceEvent> get onPreferenceChange => _changeConroller.stream;
    StreamController<PreferenceEvent> _changeConroller = new StreamController();
  
negative.code:   }
  
    Future _loadUserPrefs() {
      return _persistentStore.getValue("userJsonPrefs", "")
          .then((String json) {
        if (json == "") {
          _firstRun = true;
          json = "{}";
        }
        _userMap = JSON.decode(json);
      });
    }
  