public Vector<TSConnection> fastConnect(TSDevice device,
			String destAddress, CSTAPrivate reqPriv)
			throws TsapiPrivilegeViolationException,
			TsapiInvalidArgumentException, TsapiInvalidPartyException,
			TsapiInvalidStateException, TsapiResourceUnavailableException,
			TsapiMethodNotSupportedException {
		if (this.provider.getCapabilities().getMakeCall() == 0) {
			throw new TsapiMethodNotSupportedException(4, 0,
					"unsupported by driver");
		}

		if (this.state != 32) {
			throw new TsapiInvalidStateException(3, 0,
					TsapiCreateObject.getTsapiObject(this, false), 1,
					this.state, "call not idle");
		}

		String devName = device.getName();

		if (((this.provider.getCapabilities().getSnapshotCallReq() == 0) || (this.monitorPending))
				&& (this.internalDeviceMonitor == null)) {
			try {
				this.internalDeviceMonitor = device.setInternalMonitor(this);
			} catch (Exception e) {
			}

		}

		setConnection_wait_limit(1);

		MakeCallConfHandler handler = new MakeCallConfHandler(this, device,
				destAddress, 24);
		try {
			this.provider.tsapi
					.makeCall(devName, destAddress, reqPriv, handler);
		} catch (TsapiInvalidStateException e) {
			throw e;
		} catch (TsapiInvalidPartyException e) {
			throw e;
		} catch (TsapiInvalidArgumentException e) {
			throw e;
		} catch (TsapiPrivilegeViolationException e) {
			throw e;
		} catch (TsapiResourceUnavailableException e) {
			throw e;
		} catch (TsapiPlatformException e) {
			throw e;
		} catch (Exception e) {
			if ((e instanceof ITsapiException)) {
				throw new TsapiPlatformException(
						((ITsapiException) e).getErrorType(),
						((ITsapiException) e).getErrorCode(),
						"makeCall failure");
			}

			throw new TsapiPlatformException(4, 0, "makeCall failure");
		}

		synchronized (this.connections) {
			if (this.handOffCall != null) {
				return this.handOffCall.fastConnectFinish(device, destAddress,
						handler.newCall);
			}

			return fastConnectFinish(device, destAddress, handler.newCall);
		}
	}