anchor.diff:              {{Last, Item}, {pairwise, Item, [], Seq}};
           finished ->
               finished
  +    end;
  +
  +next({distinct_by, KeyF, Keys, Seq0}) ->
  +    case next(Seq0) of
  +        finished ->
  +            finished;
  +        {Item, Seq} ->
  +            Key = KeyF(Item),
  +            case maps:is_key(Key, Keys) of
  +                true ->
  +                    next({distinct_by, KeyF, Keys, Seq});
  +                false ->
  +                    {Item, {distinct_by, KeyF, Keys#{Key => ok}, Seq}}
  +            end
       end;
   
   next({append, first, Enum0, Seq2}) ->
  
positive.code:             group_by(F, Groups, Seq)
      end.
  
  distinct_by(KeyF, Items, Seq0) ->
      case next(Seq0) of
          finished ->
              lists:reverse(Items);
          {Item, Seq} ->
              case lists:member(KeyF(Item), Items) of
                  true ->
                      distinct_by(KeyF, Items, Seq);
                  false ->
                      distinct_by(KeyF, [Item | Items], Seq)
              end
      end.
  
  
  
  next({seq, Enum}) ->
      next(Enum);
  next({list, [H | Tail]}) ->
  
negative.code:     Total / Num.
  
  distinct(Seq) ->
      distinctBy(fun id/1, Seq).
  
  distinctBy(F, Seq) ->
      {seq, {distinct_by, F, #{}, seq(Seq)}}.
  
  empty() ->
      {seq, {list, []}}.
  