function needsPlaceholder(elem) {
			while ( elem && elem != oRootNode && elem.parentNode ) {
				elem = elem.parentNode;
				if ( elem.hasAttribute(ATTR_PRESERVE_MARKER) ) {
					return true;
				}
				if ( elem.hasAttribute("data-sap-ui") ) {
					break;
				}
			}
			// return false;
		}
Collects descendants of the given root node that need to be preserved before the root node
is wiped out. The "to-be-preserved" nodes are moved to a special, hidden 'preserve' area.

A node is declared "to-be-preserved" when it has the <code>data-sap-ui-preserve</code>
attribute set. When the optional parameter <code>bPreserveNodesWithId</code> is set to true,
then nodes with an id are preserved as well and their <code>data-sap-ui-preserve</code> attribute
is set automatically. This option is used by UIAreas when they render for the first time and
simplifies the handling of predefined HTML content in a web page.

The "to-be-preserved" nodes are searched with a depth first search and moved to the 'preserve'
area in the order that they are found. So for direct siblings the order should be stable.

@param {Element} oRootNode to search for "to-be-preserved" nodes
@param {boolean} [bPreserveRoot=false] whether to preserve the root itself
@param {boolean} [bPreserveNodesWithId=false] whether to preserve nodes with an id as well
@public
@static