| Index: runtime/lib/collection_patch.dart
 | 
| diff --git a/runtime/lib/collection_patch.dart b/runtime/lib/collection_patch.dart
 | 
| index e0bde4a5c61d984be421e883c69d9964dcb42521..6946681cd2d5cbacef944bf21e582ac7d8cd1513 100644
 | 
| --- a/runtime/lib/collection_patch.dart
 | 
| +++ b/runtime/lib/collection_patch.dart
 | 
| @@ -174,9 +174,11 @@ class _HashMap<K, V> implements HashMap<K, V> {
 | 
|    }
 | 
|  
 | 
|    void clear() {
 | 
| -    _elementCount = 0;
 | 
|      _buckets = new List(_INITIAL_CAPACITY);
 | 
| -    _modificationCount = (_modificationCount + 1) & _MODIFICATION_COUNT_MASK;
 | 
| +    if (_elementCount > 0) {
 | 
| +      _elementCount = 0;
 | 
| +      _modificationCount = (_modificationCount + 1) & _MODIFICATION_COUNT_MASK;
 | 
| +    }
 | 
|    }
 | 
|  
 | 
|    void _removeEntry(_HashMapEntry entry,
 | 
| @@ -673,9 +675,11 @@ class _HashSet<E> extends _HashSetBase<E> implements HashSet<E> {
 | 
|    }
 | 
|  
 | 
|    void clear() {
 | 
| -    _elementCount = 0;
 | 
|      _buckets = new List(_INITIAL_CAPACITY);
 | 
| -    _modificationCount++;
 | 
| +    if (_elementCount > 0) {
 | 
| +      _elementCount = 0;
 | 
| +      _modificationCount = (_modificationCount + 1) & _MODIFICATION_COUNT_MASK;
 | 
| +    }
 | 
|    }
 | 
|  
 | 
|    void _addEntry(E key, int hashCode, int index) {
 | 
| @@ -963,9 +967,11 @@ abstract class _LinkedHashMapMixin<K, V> implements LinkedHashMap<K, V> {
 | 
|  
 | 
|    void clear() {
 | 
|      _nextEntry = _previousEntry = this;
 | 
| -    _elementCount = 0;
 | 
|      _buckets = new List(_HashMap._INITIAL_CAPACITY);
 | 
| -    _modificationCount = (_modificationCount + 1) & _MODIFICATION_COUNT_MASK;
 | 
| +    if (_elementCount > 0) {
 | 
| +      _elementCount = 0;
 | 
| +      _modificationCount = (_modificationCount + 1) & _MODIFICATION_COUNT_MASK;
 | 
| +    }
 | 
|    }
 | 
|  
 | 
|    void _addEntry(List buckets, int index, int length,
 | 
| 
 |