anchor.diff:      Ft = index_parameter_types(Fs, []),
       validate_0(Module, Fs, Ft).
   
  -index_parameter_types([{function,_,_,Entry,Code0}|Fs], Acc0) ->
  -    Code = dropwhile(fun({label,L}) when L =:= Entry -> false;
  -			(_) -> true
  -		     end, Code0),
  -    case Code of
  -	[{label,Entry}|Is] ->
  -	    Acc = index_parameter_types_1(Is, Entry, Acc0),
  -	    index_parameter_types(Fs, Acc);
  -	_ ->
  -	    %% Something serious is wrong. Ignore it for now.
  -	    %% It will be detected and diagnosed later.
  -	    index_parameter_types(Fs, Acc0)
  -    end;
  -index_parameter_types([], Acc) ->
  -    gb_trees:from_orddict(lists:sort(Acc)).
  -
  -index_parameter_types_1([{'%', {type_info, Reg, Type}} | Is], Entry, Acc) ->
  -    Key = {Entry, Reg},
  -    index_parameter_types_1(Is, Entry, [{Key, Type} | Acc]);
  -index_parameter_types_1(_, _, Acc) ->
  -    Acc.
  -
   validate_0(_Module, [], _) -> [];
   validate_0(Module, [{function,Name,Ar,Entry,Code}|Fs], Ft) ->
       try validate_1(Code, Name, Ar, Entry, Ft) of
  
positive.code: 
  subtract(list, nil) -> cons;
  subtract(list, cons) -> nil;
  subtract(Type, _) -> Type.
  
  assert_type(WantedType, Term, Vst) ->
  
negative.code:     end;
  valfun_4({test,is_nil,{f,Lbl},[Src]}, Vst0) ->
      Vst = case get_term_type(Src, Vst0) of
                list ->
                    branch_state(Lbl, set_type_reg(cons, Src, Vst0));
                _ ->
                    branch_state(Lbl, Vst0)
            end,
      set_aliased_type(nil, Src, Vst);
  valfun_4({test,is_eq_exact,{f,Lbl},[Src,Val]=Ss}, Vst0) ->
      validate_src(Ss, Vst0),
  