anchor.diff:      return go(z);
     }
   
  -  static Conveyor<From/*<I>*/, dynamic/*=I*/> intersperse/*<I>*/(/*=I*/ sep) => Pipe.consume/*<I, I>*/((i) => Pipe.produce(i, Pipe.produce(sep))).repeat();
  +  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> {}
  
positive.code: 
    static Conveyor<From/*<I>*/, dynamic/*=I*/> dropWhile/*<I>*/(bool f(/*=I*/ i)) => consume((i) => f(i) ? dropWhile/*<I>*/(f) : identity());
  
    static Conveyor<From/*<I>*/, dynamic/*=I*/> filter/*<I>*/(bool f(/*=I*/ i)) => consume/*<I, I>*/((i) => f(i) ? produce(i) : halt()).repeat();
  
    static Conveyor<From/*<I>*/, dynamic/*=O*/> scan/*<I, O>*/(/*=O*/ z, Function2/*<O, I, O>*/ f) {
      Conveyor/*<From<I>, O>*/ go(/*=O*/ previous) => consume((/*=I*/ i) {
  
negative.code:   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) =>
  