| Index: pkg/serialization/lib/src/serialization_helpers.dart
 | 
| diff --git a/pkg/serialization/lib/src/serialization_helpers.dart b/pkg/serialization/lib/src/serialization_helpers.dart
 | 
| index ec898574730d0cbba7d0ad886adf306d80a6cb88..d9ad747bfa48a4b88211dcfdb8450ec6279433dd 100644
 | 
| --- a/pkg/serialization/lib/src/serialization_helpers.dart
 | 
| +++ b/pkg/serialization/lib/src/serialization_helpers.dart
 | 
| @@ -180,64 +180,3 @@ class _Sentinel {
 | 
|    final _wrappedObject;
 | 
|    const _Sentinel(this._wrappedObject);
 | 
|  }
 | 
| -
 | 
| -/**
 | 
| - * This is used in the implementation of [IdentityMap]. We wrap all the keys
 | 
| - * in an [_IdentityMapKey] that compares using the identity of the wrapped
 | 
| - * objects. It also treats equal primitive values as identical
 | 
| - * to conserve space.
 | 
| - */
 | 
| -class _IdentityMapKey {
 | 
| -  _IdentityMapKey(this._value);
 | 
| -  var _value;
 | 
| -
 | 
| -  /**
 | 
| -   * Check if an object is primitive to know if we should compare it using
 | 
| -   * equality or identity. We don't test null/true/false where it's the same.
 | 
| -   */
 | 
| -  _isPrimitive(x) => x is String || x is num;
 | 
| -
 | 
| -  operator ==(_IdentityMapKey w) =>
 | 
| -      _isPrimitive(_value) ? _value == w._value : identical(_value, w._value);
 | 
| -  get hashCode => _value.hashCode;
 | 
| -  get object => _value;
 | 
| -}
 | 
| -
 | 
| -/**
 | 
| - * This provides an identity map. We wrap all the objects in
 | 
| - * an [_IdentityMapKey] that compares using the identity of the
 | 
| - * wrapped objects. It also treats equal primitive values as identical
 | 
| - * to conserve space.
 | 
| - */
 | 
| -class IdentityMap<K, V> extends LinkedHashMap<K, V> {
 | 
| -// TODO(alanknight): Replace with a system identity-based map once
 | 
| -// one is available. Issue 4161.
 | 
| -// TODO(lrn): Replace with identity map when custom hash maps are introduced
 | 
| -// (which is soon).
 | 
| -
 | 
| -  // Check before wrapping because some methods may call others, e.g. on
 | 
| -  // dart2js putIfAbsent calls containsKey, so without this we wrap forever.
 | 
| -  _wrap(Object key) =>
 | 
| -      (key is _IdentityMapKey) ? key : new _IdentityMapKey(key);
 | 
| -  _unwrap(_IdentityMapKey wrapper) => wrapper.object;
 | 
| -
 | 
| -  Iterable<K> get keys => super.keys.map((x) => _unwrap(x));
 | 
| -  Iterable<V> get values => super.values;
 | 
| -
 | 
| -  void forEach(void f(K key, V value)) {
 | 
| -    super.forEach((k, v) => f(_unwrap(k), v));
 | 
| -  }
 | 
| -
 | 
| -  V operator [](K key) => super[_wrap(key)];
 | 
| -
 | 
| -  void operator []=(K key, V value) {
 | 
| -      super[_wrap(key)] = value;
 | 
| -  }
 | 
| -
 | 
| -  V putIfAbsent(K key, Function ifAbsent) =>
 | 
| -      super.putIfAbsent(_wrap(key), ifAbsent);
 | 
| -
 | 
| -  bool containsKey(Object key) => super.containsKey(_wrap(key));
 | 
| -
 | 
| -  V remove(Object key) => super.remove(_wrap(key));
 | 
| -}
 | 
| 
 |