cq-prolyfill.js
function updateClassesRead(treeNodes, dontMarkAsDone) {
	var hasChanges = false;
	var i, node, j, query;
	for (i = 0; i < treeNodes.length; i++) {
		node = treeNodes[i];
		if (!node._done) {
			for (j = 0; j < node._queries.length; j++) {
				query = node._queries[j];
				var queryMatches = evaluateQuery(node._element.parentNode, query);
				if (queryMatches !== hasQuery(node._element, query)) {
					node._changes.push([queryMatches, query]);
				}
			}
			node._done = !dontMarkAsDone;
		}
		hasChanges = updateClassesRead(node._children, dontMarkAsDone || node._changes.length)
			|| node._changes.length
			|| hasChanges;
	}
	return hasChanges;
}
function updateClassesRead(treeNodes, dontMarkAsDone) {
	var hasChanges = false;
	var i, node, j, query;
	for (i = 0; i < treeNodes.length; i++) {
		node = treeNodes[i];
		if (!node._done) {
			for (j = 0; j < node._queries.length; j++) {
				query = node._queries[j];
				var queryMatches = evaluateQuery(node._element.parentNode, query);
				if (queryMatches !== hasQuery(node._element, query)) {
					node._changes.push([queryMatches, query]);
				}
			}
			node._done = !dontMarkAsDone;
		}
		hasChanges = updateClassesRead(node._children, dontMarkAsDone || node._changes.length)
			|| node._changes.length
			|| hasChanges;
	}
	return hasChanges;
}
function updateClassesRead ( treeNodes , dontMarkAsDone ) { var hasChanges = false ; var i , node , j , query ; for ( i = 0 ; i < treeNodes . length ; i ++ ) { node = treeNodes [ i ] ; if ( ! node . _done ) { for ( j = 0 ; j < node . _queries . length ; j ++ ) { query = node . _queries [ j ] ; var queryMatches = evaluateQuery ( node . _element . parentNode , query ) ; if ( queryMatches !== hasQuery ( node . _element , query ) ) { node . _changes . push ( [ queryMatches , query ] ) ; } } node . _done = ! dontMarkAsDone ; } hasChanges = updateClassesRead ( node . _children , dontMarkAsDone || node . _changes . length ) || node . _changes . length || hasChanges ; } return hasChanges ; }
Update classes read step

@param  {Array.<{_element: Element, _children: array, _queries: array, _changes: array, _done: boolean}>} treeNodes
@param  {boolean}                                                                                         dontMarkAsDone
@return {boolean} True if changes were found
Update classes read step