anchor.diff:              {Item, {concat, Enum, Sources0}}
       end;
   
  -next({iter, N, N, _Gen}) ->
  +next({init, N, N, _Gen}) ->
       finished;
  -next({iter, Count, Num, Gen}) ->
  -    {Gen(Count), {iter, Count+1, Num, Gen}};
  +next({init, Count, Num, Gen}) ->
  +    {Gen(Count), {init, Count+1, Num, Gen}};
  +
  +next({init_infinite, Count, Gen}) ->
  +    {Gen(Count), {init_infinite, Count+1, Gen}};
   
   next({delay, F}) ->
       next(seq(F()));
  
positive.code:     Seq = [1,2,3],
      3 = countBy(fun id/1, Seq),
      1 = countBy(fun(_) -> one end, Seq),
      ok.
  
  are_seqs_test() ->
  
negative.code: skipWhile(Pred, Seq) ->
      {seq, {skip_while, Pred, seq(Seq)}}.
  
  sort(Seq) ->
      delay(fun () -> seq(lists:sort(toList(Seq))) end).
  
  sum(Seq) ->
      aggregate(seq(Seq), 0, fun erlang:'+'/2).
  
  map(F, Seq) ->
      {seq, {map, F, seq(Seq)}}.
  
  mapi(F, Seq) ->
      {seq, {mapi, F, 0, seq(Seq)}}.
  
  map2(F, Seq1, Seq2) ->
      {seq, {map2, F, seq(Seq1), seq(Seq2)}}.
  
  max(Seq) ->
      reduce_internal(seq(Seq), fun (C, Acc) when C > Acc -> C;
  