public TSConnection addParty(String newParty, boolean active)
			throws TsapiInvalidStateException, TsapiInvalidPartyException,
			TsapiMethodNotSupportedException, TsapiPrivilegeViolationException,
			TsapiResourceUnavailableException {
		if (!this.provider.isLucentV5()) {
			throw new TsapiMethodNotSupportedException(4, 0,
					"unsupported by driver");
		}

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

		}

		CSTAConnectionID connID = selectConnectionIdForAddParty();

		if (connID == null) {
			throw new TsapiInvalidStateException(3, 0,
					TsapiCreateObject.getTsapiObject(this, false), 1,
					this.state, "call is not active (no connections)");
		}

		LucentSingleStepConferenceCall ssc = new LucentSingleStepConferenceCall(
				connID, newParty, (short) (active ? 1 : 0), false);

		ConfHandler handler = new ConfXferConfHandler(this, null, 90);
		try {
			this.provider.sendPrivateData(ssc.makeTsapiPrivate(), handler);
		} catch (TsapiInvalidStateException e) {
			throw e;
		} catch (TsapiInvalidPartyException e) {
			throw e;
		} catch (TsapiPrivilegeViolationException e) {
			throw e;
		} catch (TsapiResourceUnavailableException e) {
			throw e;
		} catch (Exception e) {
			if ((e instanceof ITsapiException)) {
				throw new TsapiPlatformException(
						((ITsapiException) e).getErrorType(),
						((ITsapiException) e).getErrorCode(),
						"addParty failure, exception: " + e);
			}

			throw new TsapiPlatformException(3, 0,
					"addParty failure, exception: " + e);
		}

		return ((ConfXferConfHandler) handler).newConn;
	}