code: @Override
  	public void apply(final App app, final Page sourcePage, final Page newPage) throws FrameworkException {
  
  		final InsertPosition insertPosition = findInsertPosition(sourcePage, parentHash, siblingHashes, newNode);
  		if (insertPosition != null) {
  
  			final DOMNode parent  = insertPosition.getParent();
  			final DOMNode sibling = insertPosition.getSibling();
  
  			if (parent != null && !parent.isSynced()) {
  
  				if (sourcePage != null) {
  					sourcePage.adoptNode(newNode);
  				}
  
  				parent.insertBefore(newNode, sibling);
  
  				// make existing node known to other operations
  				hashMappedExistingNodes.put(newNode.getIdHashOrProperty(), newNode);
  
  				// remove children of new node so that existing nodes can be moved later
  				for (final RelationshipInterface childRel : newNode.getChildRelationships()) {
  					app.delete(childRel);
  				}
  			}
  		}
  	}
docs: ----- interface InvertibleModificationOperation -----