anchor.diff:  
   f_atom_type() ->
       fun(Args)->
  -	    case Args of
  -		[A1, A2, A3]-> 
  -		    {f_atom, [try_eval(A1, fun is_atom/1), 
  -			      try_eval(A2, fun is_atom/1),
  -			      try_eval_length(A3)]};
  -		[_A0,A1,A2,A3] ->
  -		     {f_atom, [try_eval(A1, fun is_atom/1), 
  -			      try_eval(A2, fun is_atom/1),
  -			       try_eval_length(A3)]};
  -		[_A0,A1,A2,A3,_A4] ->
  -		    {f_atom, [try_eval(A1, fun is_atom/1), 
  -			      try_eval(A2, fun is_atom/1),
  -			      try_eval_length(A3)]}
  -	    end
  -    end.
  +            A1 = lists:nth(length(Args)-2, Args),
  +            A2 = lists:nth(length(Args)-1, Args),
  +            A3 = lists:nth(length(Args), Args),
  +            {f_atom, [try_eval(A1, fun is_atom/1), 
  +                      try_eval(A2, fun is_atom/1),
  +                      try_eval_length(A3)]}
  +    end.
  +
  +f_atom_type_1() ->
  +    fun(Args)->
  +            A1 = lists:nth(length(Args)-3, Args),
  +            A2 = lists:nth(length(Args)-2, Args),
  +            A3 = lists:nth(length(Args)-1, Args),
  +            {f_atom, [try_eval(A1, fun is_atom/1), 
  +                      try_eval(A2, fun is_atom/1),
  +                      try_eval_length(A3)]}
  +    end.
  +
   
   server_ref_type() ->
       fun(Args) ->
  
positive.code: type(erlang, spawn_monitor, 3) -> 
      mfa_type();
  type(erlang, spawn_opt, 4) ->
      {[m_atom, f_atom_type(), any, any], any};
  type(erlang, spawn_opt, 5) ->
      {[any, m_atom, f_atom_type(), any, any], any};
  type(erlang, whereis, 1) ->
      {[p_atom], any};
  type(erlang, register, 2) ->
  
negative.code: do_type_ann_args_1(ParTypes, MappedArgs, Args, Pid) ->
      ZippedParTypeArgs = lists:zip(ParTypes, Args),
      lists:map(fun ({ParType, Arg}) ->
                        case ParType of
  			any ->
  			    Arg;
  			_ when is_function(ParType) ->
                                add_type_info(ParType(MappedArgs), Arg, Pid);
  			{f_atom, [M, F, Arity]} ->
  			      M1 = case is_function(M) of
  				   true -> M(MappedArgs);
  