I didn't work on this much today, because Thanksgiving, but I understand the C# codebase for Ink enough to know that I'm going to need to make some obnoxious changes if I want to keep up my current design sensibilities.
Basically, I'm trying to work solely with immutable data, because that's easier for me to think about, but that means no cyclic references, which means no parent references, which means anything that uses them needs a rewrite. In practical terms, I believe this means I need to ditch the concept of a "Pointer", and replace all of the Pointers in the ported codebase so far with AbsolutePaths. And possibly references to the root.
"Max, aren't the problems you're running into with this approach essentially self-inflicted?"
I'm attempting this port because I want to, so "because I want to do it" is a valid reason to do anything as part of the effort.
Anyway, I could make fancy changes to the Container layout to try to "optimize" stuff, but my best bet for getting anywhere with this is to focus on making the code as simple as possible.
And I can't make things simple without a clear head, so I've got to call this now.