function createControlOrExtension(node, pRequireContext, oClosestBinding) { // this will also be extended for Fragments with multiple roots

			if (localName(node) === "ExtensionPoint" && node.namespaceURI === CORE_NAMESPACE) {

				if (bEnrichFullIds) {
					// Processing the different types of ExtensionPoints (XML, JS...) is not possible, hence
					// they are skipped as well as their potentially overwritten default content.
					return SyncPromise.resolve([]);
				} else {
					// for Views the containing View's name is required to retrieve the according extension configuration,
					// whereas for Fragments the actual Fragment's name is required - oView can be either View or Fragment
					var oContainer = oView instanceof View ? oView._oContainingView : oView;

					// The ExtensionPoint module is actually the sap.ui.extensionpoint function.
					// We still call _factory for skipping the deprecation warning.
					var fnExtensionPointFactory = ExtensionPoint._factory.bind(null, oContainer, node.getAttribute("name"), function() {
						// create extensionpoint with callback function for defaultContent - will only be executed if there is no customizing configured or if customizing is disabled
						var pChild = SyncPromise.resolve();
						var aChildControlPromises = [];
						var children = node.childNodes;
						for (var i = 0; i < children.length; i++) {
							var oChildNode = children[i];
							if (oChildNode.nodeType === 1 /* ELEMENT_NODE */) { // text nodes are ignored - plaintext inside extension points is not supported; no warning log because even whitespace is a text node
								// chain the child node creation for sequential processing
								pChild = pChild.then(createControls.bind(null, oChildNode, pRequireContext, oClosestBinding));
								aChildControlPromises.push(pChild);
							}
						}

						return SyncPromise.all(aChildControlPromises).then(function(aChildControl){
							var aDefaultContent = [];
							aChildControl.forEach(function(aControls) {
								aDefaultContent = aDefaultContent.concat(aControls);
							});
							return aDefaultContent;
						});
					}, undefined /* [targetControl] */, undefined /* [aggregationName] */, bAsync);

					return SyncPromise.resolve(oView.fnScopedRunWithOwner ? oView.fnScopedRunWithOwner(fnExtensionPointFactory) : fnExtensionPointFactory());
				}

			} else {
				// a plain and simple regular UI5 control
				var vClass = findControlClass(node.namespaceURI, localName(node));
				if (vClass && typeof vClass.then === 'function') {
					return vClass.then(function (fnClass) {
						return createRegularControls(node, fnClass, pRequireContext, oClosestBinding);
					});
				} else {
					// class has already been loaded
					return createRegularControls(node, vClass, pRequireContext, oClosestBinding);
				}
			}
		}
/**
		 * Creates 0..n UI5 controls from an XML node which is not plain HTML, but a UI5 node (either control or
		 * ExtensionPoint). One control for regular controls, zero for ExtensionPoints without configured extension
		 * and n controls for multi-root Fragments.
		 *
		 * @param {Element} node The current XMLNode which is being processed
		 * @param {Promise} pRequireContext Promise which resolves with the loaded modules from require context
		 * @return {Promise} resolving to an array with 0..n controls created from a node
		 * @private
		 */
Creates 0..n UI5 controls from an XML node which is not plain HTML, but a UI5 node (either control or
ExtensionPoint). One control for regular controls, zero for ExtensionPoints without configured extension
and n controls for multi-root Fragments.

@param {Element} node The current XMLNode which is being processed
@param {Promise} pRequireContext Promise which resolves with the loaded modules from require context
@return {Promise} resolving to an array with 0..n controls created from a node
@private
Creates 0 .. n UI5 controls from an XML node which is not plain HTML but a UI5 node ( either control or ExtensionPoint ) . One control for regular controls zero for ExtensionPoints without configured extension and n controls for multi - root Fragments . @param { Element } node The current XMLNode which is being processed @param { Promise } pRequireContext Promise which resolves with the loaded modules from require context @return { Promise } resolving to an array with 0 .. n controls created from a node @private
function createControlOrExtension(node, pRequireContext, oClosestBinding) { 
			if (localName(node) === "ExtensionPoint" && node.namespaceURI === CORE_NAMESPACE) {
				if (bEnrichFullIds) {
					return SyncPromise.resolve([]);
				} else {
					var oContainer = oView instanceof View ? oView._oContainingView : oView;
					var fnExtensionPointFactory = ExtensionPoint._factory.bind(null, oContainer, node.getAttribute("name"), function() {
						var pChild = SyncPromise.resolve();
						var aChildControlPromises = [];
						var children = node.childNodes;
						for (var i = 0; i < children.length; i++) {
							var oChildNode = children[i];
							if (oChildNode.nodeType === 1 ) { 
								pChild = pChild.then(createControls.bind(null, oChildNode, pRequireContext, oClosestBinding));
								aChildControlPromises.push(pChild);
							}
						}
						return SyncPromise.all(aChildControlPromises).then(function(aChildControl){
							var aDefaultContent = [];
							aChildControl.forEach(function(aControls) {
								aDefaultContent = aDefaultContent.concat(aControls);
							});
							return aDefaultContent;
						});
					}, undefined , undefined , bAsync);
					return SyncPromise.resolve(oView.fnScopedRunWithOwner ? oView.fnScopedRunWithOwner(fnExtensionPointFactory) : fnExtensionPointFactory());
				}
			} else {
				var vClass = findControlClass(node.namespaceURI, localName(node));
				if (vClass && typeof vClass.then === 'function') {
					return vClass.then(function (fnClass) {
						return createRegularControls(node, fnClass, pRequireContext, oClosestBinding);
					});
				} else {
					return createRegularControls(node, vClass, pRequireContext, oClosestBinding);
				}
			}
		}
function createControlOrExtension ( node , pRequireContext , oClosestBinding ) { if ( localName ( node ) === "ExtensionPoint" && node . namespaceURI === CORE_NAMESPACE ) { if ( bEnrichFullIds ) { return SyncPromise . resolve ( [ ] ) ; } else { var oContainer = oView instanceof View ? oView . _oContainingView : oView ; var fnExtensionPointFactory = ExtensionPoint . _factory . bind ( null , oContainer , node . getAttribute ( "name" ) , function ( ) { var pChild = SyncPromise . resolve ( ) ; var aChildControlPromises = [ ] ; var children = node . childNodes ; for ( var i = 0 ; i < children . length ; i ++ ) { var oChildNode = children [ i ] ; if ( oChildNode . nodeType === 1 ) { pChild = pChild . then ( createControls . bind ( null , oChildNode , pRequireContext , oClosestBinding ) ) ; aChildControlPromises . push ( pChild ) ; } } return SyncPromise . all ( aChildControlPromises ) . then ( function ( aChildControl ) { var aDefaultContent = [ ] ; aChildControl . forEach ( function ( aControls ) { aDefaultContent = aDefaultContent . concat ( aControls ) ; } ) ; return aDefaultContent ; } ) ; } , undefined , undefined , bAsync ) ; return SyncPromise . resolve ( oView . fnScopedRunWithOwner ? oView . fnScopedRunWithOwner ( fnExtensionPointFactory ) : fnExtensionPointFactory ( ) ) ; } } else { var vClass = findControlClass ( node . namespaceURI , localName ( node ) ) ; if ( vClass && typeof vClass . then === 'function' ) { return vClass . then ( function ( fnClass ) { return createRegularControls ( node , fnClass , pRequireContext , oClosestBinding ) ; } ) ; } else { return createRegularControls ( node , vClass , pRequireContext , oClosestBinding ) ; } } }
Creates 0..n UI5 controls from an XML node which is not plain HTML, but a UI5 node (either control or
 ExtensionPoint).
Creates 0 .. n UI5 controls from an XML node which is not plain HTML but a UI5 node ( either control or ExtensionPoint ) .
// this will also be extended for Fragments with multiple roots // Processing the different types of ExtensionPoints (XML, JS...) is not possible, hence // they are skipped as well as their potentially overwritten default content. // for Views the containing View's name is required to retrieve the according extension configuration, // whereas for Fragments the actual Fragment's name is required - oView can be either View or Fragment // The ExtensionPoint module is actually the sap.ui.extensionpoint function. // We still call _factory for skipping the deprecation warning. // create extensionpoint with callback function for defaultContent - will only be executed if there is no customizing configured or if customizing is disabled /* ELEMENT_NODE */ // text nodes are ignored - plaintext inside extension points is not supported; no warning log because even whitespace is a text node // chain the child node creation for sequential processing /* [targetControl] */ /* [aggregationName] */ // a plain and simple regular UI5 control // class has already been loaded