anchor.diff:        AccIn :: Acc,
         AccOut :: Acc.
   
  -fold(F, Init, D) ->
  -    lists:foldl(fun(E,Acc) -> F(E,Acc) end,Init,maps:keys(D)).
  +fold(Fun, Init, Set) ->
  +    fold_1(Fun, Init, maps:iterator(Set)).
  +
  +fold_1(Fun, Acc, Iter) ->
  +    case maps:next(Iter) of
  +        {K, _, NextIter} ->
  +            fold_1(Fun, Fun(K,Acc), NextIter);
  +        none ->
  +            Acc
  +    end.
   
   %% filter(Fun, Set) -> Set.
   %%  Filter Set with Fun.
  
positive.code:       Set1 :: set(Element),
        Set2 :: set(Element).
  
  filter(F, D) ->
      maps:filter(fun(K,_) -> F(K) end, D).
  
negative.code:       Set1 :: set(Element),
        Set2 :: set(Element).
  
  is_subset(S1, S2) when map_size(S1) > map_size(S2) ->
      false;
  is_subset(S1, S2) ->
      is_subset_1(S2, maps:iterator(S1)).
  
  is_subset_1(Set, Iter) ->
      case maps:next(Iter) of
          {K, _, NextIter} ->
              case Set of
                  #{K := _} -> is_subset_1(Set, NextIter);
                  #{} -> false
              end;
          none ->
              true
      end.
  
  %% fold(Fun, Accumulator, Set) -> Accumulator.
  %%  Fold function Fun over all elements in Set and return Accumulator.
  