anchor.diff:      pattern_list([H,T], Def, Ps, St);
   pattern(#c_tuple{es=Es}, Def, Ps, St) ->
       pattern_list(Es, Def, Ps, St);
  -pattern(#c_binary{segments=Ss}, Def, Ps, St) ->
  +pattern(#c_binary{segments=Ss}, Def, Ps, St0) ->
  +    St = pat_bin_tail_check(Ss, St0),
       pat_bin(Ss, Def, Ps, St);
   pattern(#c_alias{var=V,pat=P}, Def, Ps, St0) ->
       {Vvs,St1} = variable(V, Ps, St0),
  
positive.code: %%
  %% %CopyrightBegin%
  %% 
  %% Copyright Ericsson AB 1999-2009. All Rights Reserved.
  %% 
  %% The contents of this file are subject to the Erlang Public License,
  %% Version 1.1, (the "License"); you may not use this file except in
  
negative.code: format_error({unbound_var,N,{F,A}}) ->
      io_lib:format("unbound variable ~s in ~w/~w", [N,F,A]);
  format_error({undefined_function,{F1,A1},{F2,A2}}) ->
      io_lib:format("undefined function ~w/~w in ~w/~w", [F1,A1,F2,A2]);
  format_error({tail_segment_not_at_end,{F,A}}) ->
      io_lib:format("binary tail segment not at end in ~w/~w", [F,A]).
  
  -type ret() :: {'ok', [{module(), [warning(),...]}]}
               | {'error', [{module(), [error(),...]}],
  