protected void moveInternalStuff(TSCall otherCall) {
		TsapiCallMonitor callback = null;

		synchronized (otherCall.monitorThreads) {
			for (int i = 0; i < otherCall.monitorThreads.size(); i++) {
				callback = (TsapiCallMonitor) otherCall.monitorThreads
						.elementAt(i);
				synchronized (this.monitorThreads) {
					if (!this.monitorThreads.contains(callback)) {
						this.monitorThreads.addElement(callback);
					}
				}
			}
		}
		DeviceObs devObs = null;
		DeviceObs otherDevObs = null;
		DevWithType devWithType = null;

		synchronized (otherCall.deviceObsVector) {
			for (int i = 0; i < otherCall.deviceObsVector.size(); i++) {
				otherDevObs = (DeviceObs) otherCall.deviceObsVector
						.elementAt(i);
				boolean found = false;
				synchronized (this.deviceObsVector) {
					for (int j = 0; j < this.deviceObsVector.size(); j++) {
						devObs = (DeviceObs) this.deviceObsVector.elementAt(j);
						if (otherDevObs.callback == devObs.callback) {
							found = true;
							synchronized (otherDevObs.devWithTypeVector) {
								for (int k = 0; k < otherDevObs.devWithTypeVector
										.size(); k++) {
									devWithType = (DevWithType) otherDevObs.devWithTypeVector
											.elementAt(k);
									synchronized (devObs.devWithTypeVector) {
										if (!devObs.devWithTypeVector
												.contains(devWithType)) {
											devObs.devWithTypeVector
													.addElement(devWithType);
										}
									}
								}
							}
							break;
						}
					}
					if (!found) {
						this.deviceObsVector.addElement(otherDevObs);
					}
				}
			}
		}

		CallbackAndType otherCbAndType = null;
		CallbackAndType cbAndType = null;
		synchronized (otherCall.callbackAndTypeVector) {
			for (int i = 0; i < otherCall.callbackAndTypeVector.size(); i++) {
				otherCbAndType = (CallbackAndType) otherCall.callbackAndTypeVector
						.elementAt(i);
				boolean found = false;
				synchronized (this.callbackAndTypeVector) {
					for (int j = 0; j < this.callbackAndTypeVector.size(); j++) {
						cbAndType = (CallbackAndType) this.callbackAndTypeVector
								.elementAt(j);
						if ((otherCbAndType.callback.equals(cbAndType.callback))
								&& (otherCbAndType.devWithType
										.equals(cbAndType.devWithType))) {
							found = true;
							break;
						}
					}
					if (!found) {
						this.callbackAndTypeVector.addElement(otherCbAndType);
					}
				}
			}
		}

		synchronized (otherCall) {
			synchronized (this) {
				if (!this.monitorPending) {
					this.monitorPending = otherCall.monitorPending;
				}
				if (this.internalDeviceMonitor == null) {
					this.internalDeviceMonitor = otherCall.internalDeviceMonitor;
				}
			}
		}

		moveStuff(otherCall);
	}