anchor.diff:  function({#c_var{name={_,_}},B}, Def, St) ->
       %% Body must be a fun!
       case B of
  -	#c_fun{} -> expr(B, Def, any, St);
  +	#c_fun{} -> expr(B, Def, 1, St);
   	_ -> add_error({illegal_expr,St#lint.func}, St)
       end.
   
  
positive.code: 
  %% expr(Expr, Defined, RetCount, State) -> State.
  
  expr(#c_var{name={_,_}=FA}, Def, _Rt, St) ->
      expr_fname(FA, Def, St);
  expr(#c_var{name=N}, Def, _Rt, St) -> expr_var(N, Def, St);
  expr(#c_literal{}, _Def, _Rt, St) -> St;
  expr(#c_cons{hd=H,tl=T}, Def, _Rt, St) ->
      expr_list([H,T], Def, St);
  expr(#c_tuple{es=Es}, Def, _Rt, St) ->
      expr_list(Es, Def, St);
  expr(#c_map{es=Es}, Def, _Rt, St) ->
      expr_list(Es, Def, St);
  expr(#c_map_pair{key=K,val=V},Def,_Rt,St) ->
      expr_list([K,V],Def,St);
  expr(#c_binary{segments=Ss}, Def, _Rt, St) ->
      bitstr_list(Ss, Def, St);
  expr(#c_fun{vars=Vs,body=B}, Def, Rt, St0) ->
      {Vvs,St1} = variable_list(Vs, St0),
      return_match(Rt, 1, body(B, union(Vvs, Def), any, St1));
  expr(#c_seq{arg=Arg,body=B}, Def, Rt, St0) ->
      St1 = expr(Arg, Def, 1, St0),
      body(B, Def, Rt, St1);
  
negative.code:     St1 = expr(T, Def, 1, St0),
      St2 = body(A, Def, Rt, St1),
      clauses(Cs, Def, 1, Rt, St2);
  expr(#c_apply{op=Op,args=As}, Def, Rt, St0) ->
      St1 = apply_op(Op, Def, length(As), St0),
      return_match(Rt, 1, expr_list(As, Def, St1));
  expr(#c_call{module=M,name=N,args=As}, Def, _Rt, St0) ->
      St1 = expr(M, Def, 1, St0),
      St2 = expr(N, Def, 1, St1),
  