anchor.diff:  -record(r3, {a = fun(_) -> #r1{} end(1), b}).
   
   t() ->
  -    foo = fun(A) when A#r1.a > A#r1.b -> foo end(#r1{b = 2}),
  -    0 = fun(A) when A#r2.a -> 0 end(#r2{a = true}),
  +    foo = rec_call(fun(A) when A#r1.a > A#r1.b -> foo end, #r1{b = 2}),
  +    0 = rec_call(fun(A) when A#r2.a -> 0 end, #r2{a = true}),
       1 = fun(A) when (#r1{a = A})#r1.a > 2 -> 1 end(3),
       2 = fun(N) when ((#r2{a = #r{a = 4}, b = length([a,b,c])})#r2.a)#r.a > N ->
  -                2 end(2),
  -    3 = fun(A) when (A#r2.a)#r1.a =:= 3 -> 3 end(#r2{a = #r1{a = 3}}),
  +		2 end(2),
  +    3 = rec_call(fun(A) when (A#r2.a)#r1.a =:= 3 -> 3 end, #r2{a = #r1{a = 3}}),
       ok = fun() ->
                    F = fun(A) when record(A#r.a, r1) -> 4;
                           (A) when record(A#r1.a, r1) -> 5
  
positive.code:                  ok
           end(),
  
      a = fun(A) when record(A, r),
                      A#r.a =:= 1,
                      A#r.b =:= 2 ->a
          end(#r{a = 1, b = 2}),
      a = fun(A) when erlang:is_record(A, r),
                      A#r.a =:= 1,
                      A#r.b =:= 2 -> a
          end(#r{a = 1, b = 2}),
      a = fun(A) when is_record(A, r),
                      A#r.a =:= 1,
                      A#r.b =:= 2 -> a
  
negative.code:            (_) -> b
          end(#r1{a = 1}),
  
      a = rec_call(fun(A) when not (A#r.a =:= 1) or false -> a end, #r{a = 42}),
  
      ok = fun() ->
                   F = fun(A) when not (A#r.a =:= 1) -> yes;
                          (_) -> no
  