anchor.diff:      Other;
   join(Other, none) ->
       Other;
  -join({literal,_}=T1, T2) ->
  -    join_literal(T1, T2);
  -join(T1, {literal,_}=T2) ->
  -    join_literal(T2, T1);
   join({tuple,Size,EsA}, {tuple,Size,EsB}) ->
       Es = join_tuple_elements(tuple_sz(Size), EsA, EsB),
       {tuple, Size, Es};
  
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: join_elements_1([], _Es1, _Es2, Acc) ->
      Acc.
  
  join_list(nil, cons) -> list;
  join_list(nil, list) -> list;
  join_list(cons, list) -> list;
  