expand(oNode, iLevels = 1) {
			if (!this.sNodeProperty) {
				return;
			}

			if (iLevels >= Number.MAX_SAFE_INTEGER) {
				iLevels = null;
				this.deleteExpandInfo(oNode);
			}
			const sPredicate = _Helper.getPrivateAnnotation(oNode, "predicate");
			const oExpandInfo = this.mPredicate2ExpandInfo[sPredicate];
			if (oExpandInfo && !oExpandInfo.levels && !oExpandInfo.collapseAll) {
				delete this.mPredicate2ExpandInfo[sPredicate];
			} else {
				// must determine node ID and key filter now; the node may be missing when calling
				// #getExpandLevels or #getExpandFilters
				this.mPredicate2ExpandInfo[sPredicate] = {
					filter : this.fnGetKeyFilter(oNode),
					levels : iLevels,
					nodeId : _Helper.drillDown(oNode, this.sNodeProperty)
				};
			}
		}
Expand a node by the given number of levels.

@param {object} oNode - The node
@param {number} [iLevels=1]
  The number of levels to expand, <code>iLevels >= Number.MAX_SAFE_INTEGER</code> can be
  used to expand all levels

@public