anchor.diff:  -type instr_split_info()  :: {icode_instr(), [{label(),info()}]}.
   -type last_instr_return() :: {instr_split_info(), range()}.
   
  --record(state, {info_map = gb_trees:empty()	:: info(), 
  -		counter  = dict:new()		:: dict:dict(),
  -		cfg				:: cfg(), 
  +-record(state, {info_map = #{}			:: info(),
  +		cfg				:: cfg(),
   		liveness = gb_trees:empty()	:: gb_trees:tree(),
   		ret_type			:: range(),
   		lookup_fun			:: call_fun(),
  
positive.code: lookup(PossibleVar, Info) ->
    case hipe_icode:is_var(PossibleVar) of
      true -> 
        case gb_trees:lookup(hipe_icode:var_name(PossibleVar), Info) of
  	none ->
  	  none_type();
  	{value, Val} ->
  	  Val
        end;
      false ->
        none_type()
  
negative.code: -type final_fun() :: fun((mfa(), [range()]) -> 'ok').
  -type data() :: {mfa(), args_fun(), call_fun(), final_fun()}.
  -type label() :: non_neg_integer().
  -type info() :: map().
  -type work_list() :: {[label()], [label()], set(label())}.
  -type variable() :: #icode_variable{}.
  -type annotated_variable() :: #icode_variable{}.
  -type argument() :: #icode_const{} | variable().
  