function(vObject, vCall, oThis) {
			var oObject = typeof vObject === "function" ? vObject() : vObject;

			if (!oObject || !vCall) {
				return undefined;
			}

			oThis = oThis || oObject;

			if (typeof vCall === "function") {
				vCall.call(oThis, oObject);
				return undefined;
			} else {
				var aParameters;
				var aReturnValues = [];
				for (var sFunctionName in vCall) {
					if (typeof oObject[sFunctionName] === "function") {
						aParameters = vCall[sFunctionName];
						aReturnValues.push(oObject[sFunctionName].apply(oThis, aParameters));
					} else {
						aReturnValues.push(undefined);
					}
				}
				if (aReturnValues.length === 1) {
					return aReturnValues[0];
				} else {
					return aReturnValues;
				}
			}
		}
function(vObject, vCall, oThis) {
			var oObject = typeof vObject === "function" ? vObject() : vObject;

			if (!oObject || !vCall) {
				return undefined;
			}

			oThis = oThis || oObject;

			if (typeof vCall === "function") {
				vCall.call(oThis, oObject);
				return undefined;
			} else {
				var aParameters;
				var aReturnValues = [];
				for (var sFunctionName in vCall) {
					if (typeof oObject[sFunctionName] === "function") {
						aParameters = vCall[sFunctionName];
						aReturnValues.push(oObject[sFunctionName].apply(oThis, aParameters));
					} else {
						aReturnValues.push(undefined);
					}
				}
				if (aReturnValues.length === 1) {
					return aReturnValues[0];
				} else {
					return aReturnValues;
				}
			}
		}
function ( vObject , vCall , oThis ) { var oObject = typeof vObject === "function" ? vObject ( ) : vObject ; if ( ! oObject || ! vCall ) { return undefined ; } oThis = oThis || oObject ; if ( typeof vCall === "function" ) { vCall . call ( oThis , oObject ) ; return undefined ; } else { var aParameters ; var aReturnValues = [ ] ; for ( var sFunctionName in vCall ) { if ( typeof oObject [ sFunctionName ] === "function" ) { aParameters = vCall [ sFunctionName ] ; aReturnValues . push ( oObject [ sFunctionName ] . apply ( oThis , aParameters ) ) ; } else { aReturnValues . push ( undefined ) ; } } if ( aReturnValues . length === 1 ) { return aReturnValues [ 0 ] ; } else { return aReturnValues ; } } }
Facilitates dynamic calling.

@param {function():T | T} vObject The object, or a function returning the object, on which methods will be called.
@param {function(this:U, T) | Object<string, Array.<*>>} vCall Called if <code>vObject</code> is, or returns an object.
@param {U} [oThis] Context in the function calls, or in the callback if <code>vCall</code>is a function. Default is <code>vObject</code>.
@returns {undefined | Array.<*>} If <code>vCall</code> is a map, the return values of the calls are returned. In case of multiple calls, an
array of return values is returned.
@template T, U
Facilitates dynamic calling .
Returns the return value of a function