function cancelGroupChangeRequests(sGroupId0) {
			var aBatchQueue = that.mBatchQueue[sGroupId0],
				oChangeRequest,
				aChangeSet,
				oError,
				i, j;

			// restore changes in reverse order to get the same initial state
			for (j = aBatchQueue.length - 1; j >= 0; j -= 1) {
				if (Array.isArray(aBatchQueue[j])) {
					aChangeSet = aBatchQueue[j];
					for (i = aChangeSet.length - 1; i >= 0; i -= 1) {
						oChangeRequest = aChangeSet[i];
						if (oChangeRequest.$cancel && fnFilter(oChangeRequest)) {
							if (!oChangeRequest.$cancel(bResetInactive)) {
								oError = new Error("Request canceled: " + oChangeRequest.method
									+ " " + oChangeRequest.url + "; group: " + sGroupId0);
								oError.canceled = true;
								oChangeRequest.$reject(oError);
								aChangeSet.splice(i, 1);
								bCanceled = true;
							}
						}
					}
				}
			}
		}
Cancels all change requests for which the <code>$cancel</code> callback is defined and the
given filter function returns <code>true</code>. For these requests the callback is called
and the related promises are rejected with an error having property
<code>canceled = true</code>.

@param {function} fnFilter
  A filter function which gets a change request as parameter and determines whether it has
  to be canceled (returns <code>true</code>) or not.
@param {string} [sGroupId]
  The ID of the group from which the requests shall be canceled; if not given all groups
  are processed
@param {boolean} [bResetInactive]
  Whether an edited inactive entity should be reset to its initial state instead of being
  removed.
@returns {boolean}
  Whether at least one request has been canceled

@private