anchor.diff:    _AVLNode<A> insert(Order<A> order, A a);
     _AVLNode<A> remove(Order<A> order, A a);
     B foldLeft<B>(B z, B f(B previous, A a));
  +  B foldLeftBetween<B>(Order<A> order, A minA, A maxA, B z, B f(B previous, A a));
     B foldRight<B>(B z, B f(A a, B previous));
  +  B foldRightBetween<B>(Order<A> order, A minA, A maxA, B z, B f(A a, B previous));
     Option<A> get(Order<A> order, A a);
     Option<A> min();
     Option<A> max();
  
positive.code:     return _right.foldLeft(midResult, f);
    }
  
    B foldRight<B>(B z, B f(A a, B previous)) {
      final rightResult =_right.foldRight(z, f);
      final midResult = f(_a, rightResult);
      return _left.foldRight(midResult, f);
    }
  
    Option<A> get(Order<A> order, A a) {
      var current = this;
  
negative.code: 
    @override B foldLeft<B>(B z, B f(B previous, A a)) => z;
  
    @override B foldLeftBetween<B>(Order<A> order, A minA, A maxA, B z, B f(B previous, A a)) => z;
  
    @override B foldRight<B>(B z, B f(A a, B previous)) => z;
  
    @override B foldRightBetween<B>(Order<A> order, A minA, A maxA, B z, B f(A a, B previous)) => z;
  
    @override Option<A> get(Order<A> order, A a) => none();
  
  