anchor.diff:  class PreferenceEvent {
     final PreferenceStore store;
     final String key;
  -  final String value;
  +  final dynamic value;
   
     PreferenceEvent(this.store, this.key, this.value);
   }
  
positive.code:     // Using a completer ensures the correct updating order: source of truth
      // (_storageArea) first, cache (_map) second.
      var completer = new Completer();
      _storageArea.remove(keys).then((Map<String, String> map) {
        keys.forEach((key) => _map.remove(key));
        completer.complete();
      });
  
negative.code:   /**
     * Get the value for the given key. The value is returned as a [Future].
     */
    Future<dynamic> getValue(String key, [var defaultVal]) {
      if (_map.containsKey(key)) {
        return new Future.value(_map[key]);
      } else {
        return _storageArea.get(key).then((Map map) {
          final val = map == null ? null : map[key];
          return val != null ? val : defaultVal;
        });
      }
  