anchor.diff:      {erlang, Comp, 2} when Comp =:= '<'; Comp =:= '=<';
                              Comp =:= '>'; Comp =:= '>=' ->
         handle_guard_comp(Guard, Comp, Map, Env, Eval, State);
  -    _ ->
  -      handle_guard_gen_fun(MFA, Guard, Map, Env, Eval, State)
  +    {erlang, F, A} ->
  +      TypeTestType = type_test_type(F, A),
  +      case t_is_any(TypeTestType) of
  +        true ->
  +          handle_guard_gen_fun(MFA, Guard, Map, Env, Eval, State);
  +        false ->
  +          handle_guard_type_test(Guard, TypeTestType, Map, Env, Eval, State)
  +      end
     end.
   
   handle_guard_gen_fun({M, F, A}, Guard, Map, Env, Eval, State) ->
  
positive.code:       end
    end.
  
  handle_guard_type_test(Guard, F, Map, Env, Eval, State) ->
    [Arg] = cerl:call_args(Guard),
    {Map1, ArgType} = bind_guard(Arg, Map, Env, dont_know, State),
    case bind_type_test(Eval, F, ArgType, State) of
      error ->
        ?debug("Type test: ~w failed\n", [F]),
        signal_guard_fail(Eval, Guard, [ArgType], State);
  
negative.code:     dont_know ->
        {ok, ArgType, t_boolean()}
    end.
  
  type_test_type(TypeTest, 1) ->
    case TypeTest of
      is_atom -> t_atom();
      is_boolean -> t_boolean();
      is_binary -> t_binary();
      is_bitstring -> t_bitstr();
      is_float -> t_float();
      is_function -> t_fun();
      is_integer -> t_integer();
      is_list -> t_maybe_improper_list();
      is_map -> t_map();
      is_number -> t_number();
      is_pid -> t_pid();
      is_port -> t_port();
      is_reference -> t_reference();
      is_tuple -> t_tuple();
      _ -> t_any()                         % Not a known type test.
    end;
  type_test_type(_, _) ->
    t_any().
  
  handle_guard_comp(Guard, Comp, Map, Env, Eval, State) ->
    Args = cerl:call_args(Guard),
  