function _getExpandedOptions(oOptions) {
		var oOptionsExpansion = {};
		if (oOptions.ancestor) {
			var mAncestorSelector = _extractAncestorSelector(oOptions);
			var oAncestor = _ControlFinder._findControls(mAncestorSelector)[0];
			if (oAncestor) {
				oOptionsExpansion.ancestor = oAncestor;
				delete oOptions.ancestor;
			} else {
				throw new Error("Ancestor not found using selector: " + JSON.stringify(mAncestorSelector));
			}
		}
		if (oOptions.descendant) {
			var oDescendant = _ControlFinder._findControls(oOptions.descendant)[0];
			if (oDescendant) {
				oOptionsExpansion.descendant = oDescendant;
				delete oOptions.descendant;
			} else {
				throw new Error("Descendant not found using selector: " + JSON.stringify(oOptions.descendant));
			}
		}
		if (oOptions.sibling) {
			if (Array.isArray(oOptions.sibling)) {
				var oSibling = _ControlFinder._findControls(oOptions.sibling[0])[0];
				if (oSibling) {
					// format for declarative selector with additional args: [[matcher1Arg1, matcher1Arg2,...], [matcher2Arg1, matcher2Arg2,...], ...]
					oOptionsExpansion.sibling = [[oSibling, oOptions.sibling[1]]];
					delete oOptions.sibling;
				}
			} else {
				var oSibling = _ControlFinder._findControls(oOptions.sibling)[0];
				if (oSibling) {
					oOptionsExpansion.sibling = oSibling;
					delete oOptions.sibling;
				} else {
					throw new Error("Sibling not found using selector: " + JSON.stringify(oOptions.sibling));
				}
			}
		}

		if (isEmptyObject(oOptionsExpansion)) {
			return oOptions;
		} else {
			return extend({}, oOptions, {
				matchers: oOptionsExpansion
			});
		}
	}
expand "expansion" values (values that are nested selector objects) for a given selector.
expansion means: replace each nested selector (1 level deep) with the matching control
@param {object} oOptions An Object containing conditions for control search similar to {@link sap.ui.test.Opa5#waitFor}
@return {object} "expanded" oOptions, in which nested selectors are replaced with controls
@private