protected void doUpdateOrDeleteAlongPath(NR node) {
		NR cur = node;
		for (; cur != null; cur = getParentOf(cur)) {
			int childCount = cur.getChildCount() - 1;
			if (childCount == 0) {
				doRemoveFromCachedChildren(cur.getParentKey(), cur, cachedNodeChildren);
				nodeStore.delete(cur);
				if (cur == root) {
					root = null;
					// Up to one orphan allowed. 
					assert dataStore.getRecordCount() == 0 || dataStore.getRecordCount() == 1;
					assert nodeStore.getRecordCount() == 0;
					init();
					return;
				}
				continue;
			}
			cur.setChildCount(childCount);
			break;
		}
		for (; cur != null; cur = getParentOf(cur)) {
			doDecrementDataCount(cur);
			doRecomputeBounds(cur);
		}
	}
Called when a node is finished being visited.

This only applies to nodes into which the visitor descends. The visitor will finish a
node in one of three ways: 1) The node's children have all been visited. 2) The visitor
returned {@link VisitResult#TERMINATE} while visiting a descendant. 3) The visitor
returned {@link VisitResult#ASCEND} while visiting a child.

This method may return any result except {@link VisitResult#DESCEND}. If the visitor is
terminating, the return value of this method is ignored.

@param parent the parent of this node, or {@code null} when visiting the root
@param n the node currently being visited
@param inclusion the original inclusion of the query before descending
@return a directive for how the visitor should proceed
Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/spatial/AbstractConstraintsTree.java