anchor.diff:  	catch _ : Reason ->
   		{error, Reason}
   	end.
  +
  +
  +resolve (Process)
  +		when is_pid (Process) orelse is_port (Process) ->
  +	{ok, Process};
  +	
  +resolve (QualifiedName) ->
  +	resolve_registered (QualifiedName).
  +
  +
  +monitor (Process) ->
  +	case resolve (Process) of
  +		{ok, RealProcess} ->
  +			try erlang:monitor (Process, RealProcess) of Monitor ->
  +				receive
  +					{'DOWN', Monitor, process, RealProcess, Reason} ->
  +						{error, Reason}
  +				after 0 ->
  +					{ok, Monitor}
  +				end
  +			catch error : badarg ->
  +				{error, {nodedown, erlang:node (RealProcess)}}
  +			end;
  +		Error = {error, _Reason} ->
  +			Error
  +	end.
  +
  +
  +demonitor (Monitor)
  +		when is_reference (Monitor) ->
  +	true = erlang:demonitor (Monitor, [flush]).
   
   
   wait (Process) ->
  
positive.code: 			{ok, Process};
  		undefined ->
  			{error, {unregistered_process, QualifiedName}}
  	end.
  
  
  
negative.code: 	end.
  
  
  resolve_registered (LocalName)
  		when is_atom (LocalName) ->
  	case erlang:whereis (LocalName) of
  		Process when (is_pid (Process) orelse is_port (Process)) ->
  			{ok, Process};
  		undefined ->
  			{error, {unregistered_process, LocalName}}
  	end;
  	
  resolve_registered (QualifiedName = {local, LocalName})
  		when is_atom (LocalName) ->
  	case erlang:whereis (LocalName) of
  