private Node mergeNodes(Node source, Node target, boolean delete, RefactorConfig conf) { try { Map<String, Object> properties = source.getAllProperties(); copyRelationships(source, copyLabels(source, target), delete); PropertiesManager.mergeProperties(properties, target, conf); if (conf.getMergeRelsAllowed()) { if(!conf.hasProperties()) { Map<String, Object> map = Collections.singletonMap("properties", "combine"); conf = new RefactorConfig(map); } mergeRelsWithSameTypeAndDirectionInMergeNodes(target, conf, Direction.OUTGOING); mergeRelsWithSameTypeAndDirectionInMergeNodes(target, conf, Direction.INCOMING); } if (delete) source.delete(); } catch (NotFoundException e) { log.warn("skipping a node for merging: " + e.getCause().getMessage()); } return target; }