void moveStuff(TSCall otherCall) {
		if (otherCall == null) {
			return;
		}

		if (callIsInVDNDomain(otherCall)) {
			Vector<TsapiCallMonitor> observers = otherCall.getCallObservers();

			for (int i = 0; i < observers.size(); i++) {
				if ((((TsapiCallMonitor) observers.elementAt(i)).isVDN())
						&& (!this.monitorThreads.contains(observers
								.elementAt(i)))) {
					this.monitorThreads.addElement(observers.elementAt(i));
					((TsapiCallMonitor) observers.elementAt(i)).addReference();
				} else {
					otherCall.removeCallMonitor((TsapiCallMonitor) observers
							.elementAt(i));
				}
			}
		} else {
			otherCall.removeObservers(100, null, 0);
		}

		if (this.callingAddress == null)
			this.callingAddress = otherCall.callingAddress;
		if (this.callingTerminal == null)
			this.callingTerminal = otherCall.callingTerminal;
		if (this.calledDevice == null)
			this.calledDevice = otherCall.calledDevice;
		if (this.lastRedirectionDevice == null)
			this.lastRedirectionDevice = otherCall.lastRedirectionDevice;
		if (this.confController == null)
			this.confController = otherCall.confController;
		if (this.xferController == null)
			this.xferController = otherCall.xferController;
		if (this.uui == null)
			this.uui = otherCall.uui;
		if (this.lai == null)
			this.lai = otherCall.lai;
		if (this.uec == null)
			this.uec = otherCall.uec;
		if (this.oci == null)
			this.oci = otherCall.oci;
		if (getDeviceHistory() == null) {
			setDeviceHistory(otherCall.getDeviceHistory());
		}

		this.replyPriv = otherCall.replyPriv;
		this.confEnable = otherCall.confEnable;
		this.xferEnable = otherCall.xferEnable;

		TSTrunk trk = null;
		synchronized (otherCall.trkVector) {
			for (int i = 0; i < otherCall.trkVector.size(); i++) {
				trk = (TSTrunk) otherCall.trkVector.elementAt(i);
				trk.setCall(this, null);
				synchronized (this.trkVector) {
					if (!this.trkVector.contains(trk)) {
						this.trkVector.addElement(trk);
					}
				}
			}
		}

		if (!checkForMonitors()) {
			setNeedSnapshot(true);
		}
	}