The change I've been psyching myself up for is to convert from using paths everywhere, to having an explicit analogue to Ink's "Pointer" type. C# Ink Pointers are a combination of a Container object and an integer index.
What I want is a combination of a CanonicalPath (which is a rough, rough equivalent of the path attribute on Ink Objects) with an index. I tried to do this, and I ended up changing too much at once. It was supposed to be a refactor, but there was just so, so much red.
Tonight ended up being a bust, but at least now I know what to do next: figure out how to roll out the changes bit by bit, using a compatibility interface between old and new to gradually expand the coverage to the entire codebase.
Once that's done, I can finish implementing serialization and deserialization, and get back to work on the tests.
EDIT: What are "days"?