@Override
public boolean feature(final @Nullable NodeRef left, @Nullable final NodeRef right) {
final boolean cancelled = progress.isCanceled();
if (!cancelled) {
if (left == null) {
Node node = right.getNode();
boolean put = builder.put(node);
checkState(put, "Node was not added to index: %s", node);
} else if (right == null) {
Node node = left.getNode();
boolean removed = builder.remove(node);
checkState(removed, "Node was not removed from index: %s", node);
} else {
Node lnode = left.getNode();
Node rnode = right.getNode();
boolean updated = builder.update(lnode, rnode);
if (!lnode.equals(rnode)) {
checkState(updated, "Node %s was not updated to %s", lnode, rnode);
}
}
progress.setProgress(count.incrementAndGet());
}
return !cancelled;
}