anchor.diff:  
   list_gen_pattern(P0, Line, St) ->
       try
  -	{pattern(P0, St),St}
  +	pattern(P0,St)
       catch 
  -	nomatch -> {nomatch,add_warning(Line, nomatch, St)}
  +	nomatch -> {nomatch,[],add_warning(Line, nomatch, St)}
       end.
   
   %%%
  
positive.code: force_novars(Ce, St) ->
      force_safe(Ce, St).
  
  %% safe(Expr, State) -> {Safe,[PreExpr],State}.
  %%  Generate an internal safe expression.  These are simples without
  %%  binaries which can fail.  At this level we do not need to do a
  
negative.code:                        end,
      {Ce,Pre,St4} = safe(E, St3),
      Gen = #igen{anno=#a{anno=GA},acc_pat=AccPat,acc_guard=Cg,skip_pat=SkipPat,
                  tail=Tail,tail_pat=#c_literal{anno=LA,val=[]},arg={Ceps++Pre,Ce}},
      {Gen,St4};
  generator(Line, {b_generate,Lg,P,E}, Gs, St0) ->
      LA = lineno_anno(Line, St0),
      GA = lineno_anno(Lg, St0),
      {Cp = #c_binary{segments=Segs},[],St1} = pattern(P, St0),
      
      %% The function append_tail_segment/2 keeps variable patterns as-is, making
      %% it possible to have the same skip clause removal as with list generators.
      {AccSegs,Tail,TailSeg,St2} = append_tail_segment(Segs, St1),
      AccPat = Cp#c_binary{segments=AccSegs},
      {Cg,St3} = lc_guard_tests(Gs, St2),
      {SkipSegs,St4} = emasculate_segments(AccSegs, St3),
      SkipPat = Cp#c_binary{segments=SkipSegs},
      {Ce,Pre,St5} = safe(E, St4),
      Gen = #igen{anno=#a{anno=GA},acc_pat=AccPat,acc_guard=Cg,skip_pat=SkipPat,
                  tail=Tail,tail_pat=#c_binary{anno=LA,segments=[TailSeg]},
                  arg={Pre,Ce}},
      {Gen,St5}.
  
  append_tail_segment(Segs, St0) ->
      {Var,St} = new_var(St0),
  