@Override public void accept(final Visitor visitor) { if (hasNodeStatesMap() && !nodeStatesMap().isEmpty()) { for (NodeState node : nodeStates()) { DiffSets<Long> labelDiff = node.labelDiffSets(); visitor.visitNodeLabelChanges(node.getId(), labelDiff.getAdded(), labelDiff.getRemoved()); } } if (hasIndexChangesDiffSets() && !indexChanges().isEmpty()) { indexChanges().accept(indexVisitor(visitor, false)); } if (hasConstraintIndexChangesDiffSets() && !constraintIndexChanges().isEmpty()) { constraintIndexChanges().accept(indexVisitor(visitor, true)); } if (hasConstraintsChangesDiffSets() && !constraintsChanges().isEmpty()) { constraintsChanges() .accept( new DiffSets.Visitor<UniquenessConstraint>() { @Override public void visitAdded(UniquenessConstraint element) { visitor.visitAddedConstraint( element, createdConstraintIndexesByConstraint().get(element)); } @Override public void visitRemoved(UniquenessConstraint element) { visitor.visitRemovedConstraint(element); } }); } }