anchor.diff:    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);
   }
   
   class _NonEmptyIMapAVLNode<K, V> extends _IMapAVLNode<K, V> {
  
positive.code:     }
      return none;
    }
  }
  
  class _EmptyIMapAVLNode<K, V> extends _IMapAVLNode<K, V> {
    const _EmptyIMapAVLNode();
  
    @override foldLeft(z, f(previous, K k, V v)) => z;
  
  
negative.code: final Monoid<IMap> IMapMi = imapMonoid(secondSemigroup);
  
  final Traversable<IMap> IMapTr = new TraversableOpsTraversable<IMap>();
  final Foldable<IMap> IMapFo = IMapTr;
  final Functor<IMap> IMapF = IMapTr;
  
  
  abstract class _IMapAVLNode<K, V> extends FunctorOps<_IMapAVLNode, V> {
    _IMapAVLNode();
  
    _IMapAVLNode<K, V> insert(Order<K> order, K k, V v);
    _IMapAVLNode<K, V> remove(Order<K> order, K k);
  