shape
Append v's rendering — a repair, or its own toString() — and answer whether it was a repair.
Every branch appends, true or false: on false the buffer ends in exactly v.toString(), which is what lets descend keep an unchanged walk rather than ask toString() for the same string again. Only a THROW leaves a partial render, which element undoes. A new branch owes the same.