anchor.diff:  
     @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();
   
  
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)) => _root.foldLeft(z, f);
  
    B foldLeftBetween<B>(A minA, A maxA, B z, B f(B previous, A a)) => _root.foldLeftBetween(_order, minA, maxA, z, f);
  
    @override B foldRight<B>(B z, B f(A a, B previous)) => _root.foldRight(z, f);
  
    B foldRightBetween<B>(A minA, A maxA, B z, B f(A a, B previous)) => _root.foldRightBetween(_order, minA, maxA, z, f);
  
    @override B foldMap<B>(Monoid<B> bMonoid, B f(A a)) => foldLeft(bMonoid.zero(), (p, a) => bMonoid.append(p, f(a)));
  
  