anchor.diff:  join_elements_1([], _Es1, _Es2, Acc) ->
       Acc.
   
  -%% Joins types of literals; note that the left argument must either be a
  -%% literal or exactly equal to the second argument.
  -join_literal(Same, Same) ->
  -    Same;
  -join_literal({literal,_}=Lit, T) ->
  -    join_literal(T, get_literal_type(Lit));
  -join_literal(T1, T2) ->
  -    %% We're done extracting the types, try merging them again.
  -    join(T1, T2).
  -
   join_list(nil, cons) -> list;
   join_list(nil, list) -> list;
   join_list(cons, list) -> list;
  
positive.code:         {catchtag,_} -> error({catchtag,Src});
          {trytag,_} -> error({trytag,Src});
          tuple_in_progress -> error({tuple_in_progress,Src});
          {literal,_}=Lit -> get_literal_type(Lit);
          Type -> Type
      end.
  
  
negative.code: vat_1({float,_}, number) -> true;
  vat_1({integer,A}, {integer,B}) -> A =:= B orelse is_list(A) orelse is_list(B);
  vat_1({integer,_}, number) -> true;
  vat_1(nil, list) -> true;
  vat_1({tuple,SzA,EsA}, {tuple,SzB,EsB}) ->
      if
  