anchor.diff:  part of polymorphic.api;
   
   typedef void StorageChecker(Map<String, dynamic> content);
  +
  +class JsonStorageType extends StorageType {
  +  const JsonStorageType();
  +  
  +  @override
  +  Map<String, dynamic> decode(String input) =>
  +      JSON.decode(input);
  +
  +  @override
  +  String encode(Map<String, dynamic> input) =>
  +      new JsonEncoder.withIndent("  ").convert(input);
  +}
  +
  +abstract class StorageType {
  +  static const StorageType JSON = const JsonStorageType();
  +  
  +  const StorageType();
  +  
  +  String encode(Map<String, dynamic> input);
  +  Map<String, dynamic> decode(String input);
  +}
   
   class Storage extends StorageContainer {
     final String path;
     
  +  StorageType type = StorageType.JSON;
     List<StorageChecker> _checkers = [];
     Map<String, dynamic> _entries;
     Timer _timer;
  
positive.code:       _entries = {};
      } else {
        var content = file.readAsStringSync();
        var json = JSON.decode(content);
        
        if (json is! Map) {
          throw new Exception("JSON was not a map!");
        }
  
        for (var checker in _checkers) {
          checker(json);
        }
  
        _entries = json;
      }
    }
  
  
negative.code:       file.parent.createSync(recursive: true);
      }
  
      file.writeAsStringSync(type.encode(_entries) + "\n");
    }
    
    void startSaveTimer({Duration interval: const Duration(seconds: 2)}) {
  