anchor.diff:    Conveyor<F, dynamic/*=O2*/> bind/*<O2>*/(Conveyor<F, dynamic/*=O2*/> f(O o)) => flatMap(f);
   
     Conveyor<F, O> repeat() => lazyPlus(repeat);
  +
  +  Conveyor<F, O> repeatNotEmpty() =>
  +      interpret((h, t) => produce(h, t.lazyPlus(repeatNotEmpty)),
  +          (req, recv) => consume(req, (ea) => ea.fold((l) => recv(left(l)), (r) => recv(right(r)).lazyPlus(repeatNotEmpty))),
  +          halt);
   
     F/*=FLA*/ runLog/*<FLA extends F>*/(MonadCatch<F> monadCatch) {
       F go(Conveyor<F, O> cur, IList<O> acc) =>
  
positive.code: 
    static Conveyor<From/*<I>*/, dynamic/*=I*/> identity/*<I>*/() => lift(id);
  
    static Conveyor<From/*<I>*/, dynamic/*=O*/> lift/*<I, O>*/(Function1/*<I, O>*/ f) => consume/*<I, O>*/((i) => produce(f(i))).repeat();
  
    static Conveyor<From/*<I>*/, dynamic/*=I*/> take/*<I>*/(int n) => n <= 0 ? halt() : consume((i) => produce(i, take/*<I>*/(n-1)));
  
  
negative.code:     return go(z);
    }
  
    static Conveyor<From/*<I>*/, dynamic/*=I*/> intersperse/*<I>*/(/*=I*/ sep) => Pipe.consume/*<I, I>*/((i) => Pipe.produce(i, Pipe.produce(sep))).repeatNotEmpty();
  }
  
  class Both<L, R> {}
  