anchor.diff:     function PipeOut#(Vector#(n, a)) toPipeOut(Gearbox#(m, n, a) in);
         return (interface PipeOut#(Vector#(n,a));
   		 method first = in.first;
  +		 method deq = in.deq;
  +		 method notEmpty = in.notEmpty;
  +	      endinterface);
  +   endfunction
  +endinstance
  +instance ToPipeOut#(a, Gearbox#(m, 1, a));
  +   function PipeOut#(a) toPipeOut(Gearbox#(m, 1, a) in);
  +      return (interface PipeOut#(a);
  +		 method a first(); return in.first[0]; endmethod
   		 method deq = in.deq;
   		 method notEmpty = in.notEmpty;
   	      endinterface);
  
positive.code:    a value;
     Bool first;
     Bool last;
  } IteratorValue#(type a) deriving (Bits);
  
  interface IteratorWithContext#(type a, type c);
     interface PipeOut#(a) pipe;
     interface PipeOut#(IteratorValue#(a)) ivpipe;
     method a count();
     method Bool isFirst();
     method Bool isLast();
  
negative.code: 
  interface IteratorIfc#(type a);
     interface PipeOut#(a) pipe;
     interface PipeOut#(IteratorValue#(a,void)) ivpipe;
     method a count();
     method Bool isFirst();
     method Bool isLast();
  