anchor.diff:  -define(TYPER_ANN_DIR, "typer_ann").
   
   -type line()      :: non_neg_integer().
  --type fa()        :: {atom(), arity()}.
   -type func_info() :: {line(), atom(), arity()}.
  +-type func_name() :: {atom(), arity()}.
  +-type func_type() ::
  +    {contract, dialyzer_contract()} |
  +    {erl_types:erl_type(), [erl_types:erl_type()] | arity()}.
  +-type func_types() :: #{func_name() => func_type()}.
  +%% This is a record (#contract{}) defined in dialyzer.hrl
  +%% but we can't include_lib that file since it also defines
  +%% #analysis
  +-type dialyzer_contract() :: tuple().
   
   -record(info, {records = maps:new() :: erl_types:type_table(),
                  functions = []       :: [func_info()],
  -               types = map__new()   :: map_dict(),
  +               types = maps:new() :: func_types(),
                  edoc = false         :: boolean()}).
  --record(inc, {map = map__new() :: map_dict(), filter = [] :: files()}).
  +-record(inc,
  +        {map = maps:new() :: #{file:filename() => [{func_name(), {pos_integer(), func_type()}}]},
  +         filter = [] :: [file:filename()]}).
   -type inc() :: #inc{}.
   
   -spec show_or_annotate(analysis()) -> 'ok'.
  
positive.code:          %% Files in 'fms' are compilable with option 'to_pp'; we keep them
           %% as {FileName, ModuleName} in case the ModuleName is different
           fms        = []                 :: [{file:filename(), module()}],
           ex_func    = map__new()         :: map_dict(),
           record     = map__new()         :: map_dict(),
           func       = map__new()         :: map_dict(),
           inc_func   = map__new()         :: map_dict(),
           trust_plt  = dialyzer_plt:new() :: plt(),
           io         = default_io()       :: io()}).
  -type analysis() :: #analysis{}.
  
negative.code:   Fun = fun ({File, Module}, Inc) ->
              Info = get_final_info(File, Module, Analysis),
              write_typed_file(File, Info, Analysis),
              IncFuns = get_inc_functions(File, Analysis),
              collect_imported_functions(IncFuns, Info#info.types, Inc, Analysis)
          end,
    NewInc = lists:foldl(Fun, #inc{}, Analysis#analysis.fms),
  