anchor.diff:  
     @override Option<Tuple3<_IMapAVLNode<K, V>, K, V>> _removeMax() => none();
   
  -  @override Option<_IMapAVLNode<K, V>> set(Order<K> order, K k, V v) => none();
  +  @override _IMapAVLNode<K, V> setIfPresent(Order<K> order, K k, V v) => this;
   
     @override _IMapAVLNode<K, V> modify(Order<K> order, K k, V f(V v), V dflt) => new _NonEmptyIMapAVLNode(k, dflt, emptyIMapAVLNode(), emptyIMapAVLNode());
   
  
positive.code:   int get height;
    int get balance;
    Option<Tuple3<_IMapAVLNode<K, V>, K, V>> _removeMax();
    Option<_IMapAVLNode<K, V>> set(Order<K> order, K k, V v);
    _IMapAVLNode<K, V> modify(Order<K> order, K k, V f(V v), V dflt);
    _IMapAVLNode<K, dynamic/*=V2*/> map/*<V2>*/(/*=V2*/ f(V v));
    bool get empty;
  
negative.code: 
    IMap<K, V> modify(K k, V f(V v), V dflt) => new IMap(_order, _tree.modify(_order, k, f, dflt));
  
    Option<IMap<K, V>> set(K k, V v) {
      final newMap = setIfPresent(k, v);
      return identical(this, newMap) ? none() : some(newMap);
    }
  
    IMap<K, V> setIfPresent(K k, V v) {
      final newTree = _tree.setIfPresent(_order, k, v);
      return identical(_tree, newTree) ? this : new IMap(_order, newTree);
    }
  
    IMap<K, V> remove(K k) => new IMap(_order, _tree.remove(_order, k));
  
  