@Override
	public void handleRecall(CMMsg msg)
	{
		final MOB recallingmob=msg.source();
		if((msg.target()!=null)
		&&(msg.target() instanceof Room)
		&&(recallingmob.location() != msg.target()))
		{
			recallingmob.tell(msg.source(),null,msg.tool(),msg.targetMessage());

			recallingmob.location().delInhabitant(recallingmob);
			((Room)msg.target()).addInhabitant(recallingmob);
			((Room)msg.target()).showOthers(recallingmob,null,CMMsg.MSG_ENTER,_("<S-NAME> appears out of the Java Plane."));

			recallingmob.setLocation(((Room)msg.target()));
			if((recallingmob.riding()!=null)
			&&(recallingmob.location()!=CMLib.map().roomLocation(recallingmob.riding())))
			{
				if(recallingmob.riding().mobileRideBasis())
				{
					if(recallingmob.riding() instanceof Item)
						recallingmob.location().moveItemTo((Item)recallingmob.riding(),ItemPossessor.Expire.Never,ItemPossessor.Move.Followers);
					else
					if(recallingmob.riding() instanceof MOB)
						recallingmob.location().bringMobHere((MOB)recallingmob.riding(),true);
				}
				else
					recallingmob.setRiding(null);
			}
			recallingmob.recoverPhyStats();
			recallingmob.recoverCharStats();
			recallingmob.recoverMaxState();
			postLook(recallingmob,true);
		}
	}