function _GroupLock(sGroupId, oOwner, bLocked, bModifying, iSerialNumber, fnCancel) {
		if (!oOwner) {
			throw new Error("Missing owner");
		}
		if (bModifying && !bLocked) {
			throw new Error("A modifying group lock has to be locked");
		}
		this.fnCancel = fnCancel;
		this.bCanceled = false;
		this.sGroupId = sGroupId;
		this.bLocked = !!bLocked; // whether it is locked; explicitly unlocked if undefined
		this.bModifying = !!bModifying; // whether this lock belongs to a modifying request
		this.oOwner = oOwner;
		this.oPromise = null; // the promise resolving when the lock is unlocked
		this.iSerialNumber = iSerialNumber === undefined ? Infinity : iSerialNumber;
	}
Constructs a potential lock for the given group ID. A group lock may be created locked or
unlocked. If locked, its {@link #waitFor} returns a promise that is resolved when the lock is
unlocked.

Do not use this constructor directly. Use
{@link sap.ui.model.odata.v4.lib._Requestor#lockGroup} instead, so that the
<code>bLocked</code> flag is handled.

@param {string} sGroupId
  The group ID
@param {object} oOwner
  The lock's owner for debugging
@param {boolean} [bLocked]
  Whether the lock is locked
@param {boolean} [bModifying]
  Whether the reason for the group lock is a modifying request
@param {number} [iSerialNumber=Infinity]
  A {@link #getSerialNumber serial number} which may be used on unlock, or <code>NaN</code>
  if none should be used
@param {function} [fnCancel]
  Function that is called when the group lock is canceled
@throws {Error}
  If <code>oOwner</code> is missing, or if <code>bModifying</code> is set but
  <code>bLocked</code> is unset

@alias sap.ui.model.odata.v4.lib._GroupLock
@constructor
@private