anchor.diff:  
     A intercalate(Monoid<A> mi, A a) => foldRight(none/*<A>*/(), (A ca, Option oa) => some(mi.append(ca, oa.fold(mi.zero, mi.appendC(a))))) | mi.zero();
   
  -  collapse(ApplicativePlus ap) => foldLeft(ap.empty(), (p, a) => ap.plus(p, ap.pure(a)));
  +  /*=G*/ collapse/*<G>*/(ApplicativePlus/*<G>*/ ap) => foldLeft(ap.empty(), (p, a) => ap.plus(p, ap.pure(a)));
   
  -  foldLeftM(Monad m, z, f(previous, A a)) => foldRight(m.pure, (A a, b) => (w) => m.bind(f(w, a), b))(z);
  +  /*=G*/ foldLeftM/*<G>*/(Monad/*<G>*/ m, z, /*=G*/ f(previous, A a)) => foldRight/*<Function1<dynamic, G>>*/(m.pure, (A a, b) => (w) => m.bind(f(w, a), b))(z);
   
  -  foldRightM(Monad m, z, f(A a, previous)) => foldLeft(m.pure, (b, A a) => (w) => m.bind(f(a, w), b))(z);
  +  /*=G*/ foldRightM/*<G>*/(Monad/*<G>*/ m, z, /*=G*/ f(A a, previous)) => foldLeft/*<Function1<dynamic, G>>*/(m.pure, (b, A a) => (w) => m.bind(f(a, w), b))(z);
   }
   
   class FoldableOpsFoldable<F extends FoldableOps> extends Foldable<F> {
  
positive.code: 
    /*=B*/ foldLeft/*<B>*/(F fa, /*=B*/ z, /*=B*/ f(/*=B*/ previous, a)) => foldMap/*<Endo<B>>*/(DualEndoMi, fa, curry2(flip(f)))(z);
  
    foldMapO(Semigroup si, F fa, f(a)) => foldMap(new OptionMonoid(si), fa, composeF(some, f));
  
    concatenate(Monoid mi, F fa) => foldMap(mi, fa, id);
  
    concatenateO(Semigroup si, F fa) => foldMapO(si, fa, id);
  
    int length(F fa) => foldLeft(fa, 0, (a, _) => a+1);
  
  
negative.code: 
    /*=B*/ foldLeft/*<B>*/(/*=B*/ z, /*=B*/ f(/*=B*/ previous, A a)) => foldMap/*<Endo<B>>*/(DualEndoMi, curry2(flip(f)))(z);
  
    Option/*<B>*/ foldMapO/*<B>*/(Semigroup/*<B>*/ si, /*=B*/ f(A a)) => foldMap/*<Option<B>>*/(new OptionMonoid/*<B>*/(si), composeF(some, f));
  
    A concatenate(Monoid<A> mi) => foldMap(mi, id);
  
  