anchor.diff:      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)}.
  +    {maps:from_list(IndexedTab), maps:from_list(Pointer2Rule)}.
   
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   % Computing parse action table from list of states and goto table:
  
positive.code:     end.
  
  upd_first(NT, Ts, LC) ->
      dict:update(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),
              case empty_member(First) of
                  true ->
                      NTs = set_union(empty_delete(First), Ts),
  
negative.code: 
  rule(RulePointer, St) ->
      #rule{n = N, anno = Anno, symbols = Symbols} =
          maps:get(RulePointer, St#yecc.rule_pointer2rule),
      {Symbols, Anno, N}.
  
  get_rule(RuleNmbr, St) ->
      maps:get(RuleNmbr, St#yecc.rule_pointer2rule).
  
  tokens(RuleNmbr, St) ->
      Rule = maps:get(RuleNmbr, St#yecc.rule_pointer2rule),
      Rule#rule.tokens.
  
  goto(From, Symbol, St) ->
  