anchor.diff:      end.
   
   upd_first(NT, Ts, LC) ->
  -    dict:update(NT, fun(First) -> set_union(First, Ts) end, LC).
  +    maps:update_with(NT, fun(First) -> set_union(First, Ts) end, LC).
   
   left_corner_rhs([S | Ss], Head, LC, Ts, SymbolTab) ->
       case ets:lookup(SymbolTab, S) of
           [{_,Num}=SymbolAndNum] when Num >= 0 ->
               set_add_terminal(SymbolAndNum, Ts);
           [_NonTerminalSymbol] ->
  -            First = dict:fetch(S, LC),
  +            First = maps:get(S, LC),
               case empty_member(First) of
                   true ->
                       NTs = set_union(empty_delete(First), Ts),
  
positive.code:     Symbol2Rule = [{Foo,R} || #rule{symbols = Symbols}=R <- RulesListNoCodes,
                                Foo <- Symbols],
      Pointer2Rule = [{I, R} || {{_Foo,R},I} <- count(1, Symbol2Rule)],
      {dict:from_list(IndexedTab), dict:from_list(Pointer2Rule)}.
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  % Computing parse action table from list of states and goto table:
  
negative.code:     Rules = map(fun(#rule{symbols = [Lhs | Rhs]}) ->
                          {Lhs,{Lhs, Rhs}}
                  end, RulesList),
      LeftHandTab = maps:from_list(family(Rules)),
      X0 = [{S,H} || {H,{H,Rhs}} <- Rules, 
                     S <- Rhs, 
                     not is_terminal(SymbolTab, S)],
      XL = family_with_domain(X0, St#yecc.nonterminals),
      X = maps:from_list(XL),
      Xref = fun(NT) -> maps:get(NT, X) end,
      E = set_empty(),
      LC0 = maps:from_list([{H, E} || {H,_} <- XL]),
      %% Handle H -> a S, where a is a terminal ('$empty' inclusive).
      {Q, LC1} =
          foldl(fun({H,{H,[S | _]}}, {Q0, LC}) ->
  