anchor.diff:  }
   
   /// Abstract base implementation for [ObjectDecoder] and [MapDecoder].
  -abstract class AbstractDecoder<K> {
  +abstract class AbstractDecoder<M, K> {
     final Deserializer _deserializer;
  -  final Map<K, dynamic> _map;
  +  final Map<M, dynamic> _map;
   
     AbstractDecoder(this._deserializer, this._map) {
       assert(_deserializer != null);
  
positive.code: 
  /// [MapDecoder] reads serialized values from a [Map] encoded from an
  /// [MapValue] where entries are stored using [String] values as keys.
  class MapDecoder extends AbstractDecoder<String> {
    /// Creates an [MapDecoder] that decodes [map] into deserialized values
    /// using [deserializer] to create canonicalized values.
    MapDecoder(Deserializer deserializer, Map<String, dynamic> map)
        : super(deserializer, map);
  
    @override
    _getKeyValue(String key) => key;
  
    /// Applies [f] to every key in the decoded [Map].
    void forEachKey(f(String key)) {
  
negative.code: 
  /// [ObjectDecoder] reads serialized values from a [Map] encoded from an
  /// [ObjectValue] where properties are stored using [Key] values as keys.
  class ObjectDecoder extends AbstractDecoder<dynamic, Key> {
    /// Creates an [ObjectDecoder] that decodes [map] into deserialized values
    /// using [deserializer] to create canonicalized values.
    ObjectDecoder(Deserializer deserializer, Map map) : super(deserializer, map);
  