Thrown when a derived tree is used after its base was mutated (the base-immutability contract was
violated). Detect-on-next-use: surfaces on the child's next operation, not at the base's mutation. A
base has no back-reference to its children, so the base mutation itself succeeds silently; the child
notices at its next op that the base's version no longer matches the snapshot it took at construction.
Not recoverable by re-find (unlike InvalidPathError): the shared structure is already suspect.
If you need a base you can keep mutating, BTree.flatten a truly-isolated copy up front.
Thrown when a derived tree is used after its base was mutated (the base-immutability contract was violated). Detect-on-next-use: surfaces on the child's next operation, not at the base's mutation. A base has no back-reference to its children, so the base mutation itself succeeds silently; the child notices at its next op that the base's version no longer matches the snapshot it took at construction. Not recoverable by re-
find(unlike InvalidPathError): the shared structure is already suspect. If you need a base you can keep mutating, BTree.flatten a truly-isolated copy up front.