anchor.diff:      Xs = #c_var{name='Xs'},
       X = #c_var{name='X'},
       H = #c_var{name='H'},
  -    C1 = #c_clause{pats=[#c_cons{hd=X, tl=Xs}], guard=#c_literal{val=true},
  +    C1 = #c_clause{anno=Anno,
  +                   pats=[#c_cons{hd=X, tl=Xs}], guard=#c_literal{val=true},
   		   body=#c_let{vars=[H], arg=#c_apply{anno=Anno,
   						      op=F,
   						      args=[X]},
  
positive.code:     X = #c_var{name='X'},
      B = #c_var{name='B'},
      Err1 = #c_tuple{es=[#c_literal{val='case_clause'}, X]},
      CC1 = #c_clause{pats=[#c_literal{val=true}], guard=#c_literal{val=true},
  		    body=#c_cons{anno=[compiler_generated], hd=X, tl=Xs}},
      CC2 = #c_clause{pats=[#c_literal{val=false}], guard=#c_literal{val=true},
  		    body=Xs},
      CC3 = #c_clause{pats=[X], guard=#c_literal{val=true},
  		    body=match_fail(Anno, Err1)},
      Case = #c_case{arg=B, clauses = [CC1, CC2, CC3]},
      C1 = #c_clause{pats=[#c_cons{hd=X, tl=Xs}], guard=#c_literal{val=true},
  
negative.code:     Avar = #c_var{name='A'},
      Match =
  	fun (A, P, E) ->
  		C1 = #c_clause{anno=Anno, pats=[P], guard=#c_literal{val=true}, body=E},
  		Err = #c_tuple{es=[#c_literal{val='badmatch'}, X]},
  		C2 = #c_clause{anno=Anno, pats=[X], guard=#c_literal{val=true},
  			       body=match_fail(Anno, Err)},
  		#c_case{arg=A, clauses=[C1, C2]}
  	end,
      C1 = #c_clause{anno=Anno,
                     pats=[#c_cons{hd=X, tl=Xs}], guard=#c_literal{val=true},
  		   body=Match(#c_apply{anno=Anno, op=F, args=[X, Avar]},
  			      #c_tuple{es=[X, Avar]},
  %%% Tuple passing version
  