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

			recallingRoom.delInhabitant(recallingMob);
			recallToRoom.addInhabitant(recallingMob);
			recallToRoom.showOthers(recallingMob,null,CMMsg.MSG_ENTER,L("<S-NAME> appears out of the Java Plane."));

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