code: private void collectActiveElements(final List<GraphObject> resultList, final DOMNode root, final Set<String> parentDataKeys, final String parent, final int depth) {
  
  		final String childDataKey  = root.getDataKey();
  		final Set<String> dataKeys = new LinkedHashSet<>(parentDataKeys);
  		String parentId            = parent;
  		int dataCentricDepth       = depth;
  
  		if (!StringUtils.isEmpty(childDataKey)) {
  
  			dataKeys.add(childDataKey);
  			dataCentricDepth++;
  		}
  
  		final ActiveElementState state = isActive(root, dataKeys);
  		if (!state.equals(ActiveElementState.None)) {
  
  			resultList.add(extractActiveElement(root, dataKeys, parentId, state, depth));
  			if (state.equals(ActiveElementState.Query)) {
  
  				parentId = root.getUuid();
  			}
  		}
  
  		for (final DOMNode child : root.getChildren()) {
  
  			collectActiveElements(resultList, child, dataKeys, parentId, dataCentricDepth);
  		}
  
  	}
docs: ----- private methods -----