code: private void modifyEndNodes(final Principal user, final NodeInterface startNode, final NodeInterface endNode, final RelationshipInterface rel, final boolean isDeletion) {
  
  		// only modify if nodes are accessible
  		if (startNode != null && endNode != null) {
  
  			final RelationshipType relType = rel.getRelType();
  
  			if (RelType.OWNS.equals(relType)) {
  
  				modifyOwner(startNode);
  				modifyOwner(endNode);
  				return;
  			}
  
  			if (RelType.SECURITY.equals(relType)) {
  
  				modifySecurity(startNode);
  				modifySecurity(endNode);
  				return;
  			}
  
  			if (RelType.IS_AT.equals(relType)) {
  
  				modifyLocation(startNode);
  				modifyLocation(endNode);
  				return;
  			}
  
  			final Relation relation  = Relation.getInstance((Class)rel.getClass());
  			final PropertyKey source = relation.getSourceProperty();
  			final PropertyKey target = relation.getTargetProperty();
  			final Object sourceValue = source != null && source.isCollection() ? new LinkedList<>() : null;
  			final Object targetValue = target != null && target.isCollection() ? new LinkedList<>() : null;
  
  			modify(user, startNode, target, null, targetValue);
  			modify(user, endNode, source, null, sourceValue);
  
  			if (source != null && target != null) {
  
  				if (isDeletion) {
  
  					// update removed properties
  					getState(startNode).remove(target, endNode);
  					getState(endNode).remove(source, startNode);
  
  				} else {
  
  
  					// update added properties
  					getState(startNode).add(target, endNode);
  					getState(endNode).add(source, startNode);
  				}
  
  			} else {
  
  				// dont log so much..
  				//logger.warn("No properties registered for {}: source: {}, target: {}", rel.getClass(), source, target);
  			}
  		}
  	}
docs: ----- private methods -----