I recently finally admitted that the whole "state machine" idea isn't working for the Ink port, so I pulled that out, and was then able to get rid of the "CommonState" concept. While I was at it, I made the choice-choosing logic more in line with the original API, because what I was having it do was not accomplishing anything that I wanted it to.
I made these changes because I finally reached the tests that involve manipulating the VariablesState, and having all of the different states lying around would have made it difficult to implement an API that I could reliably expect to have access to. Shout-out to all of the tests I ported, which showed me that I apparently got the refactors all right on the first try, which is great, and not something I could have relied on happening.
It looks like there around around twenty tests left for me to finish up the initial port. Unfortunately, the next test is of variable observers, which I'm going to have to think about to figure out how I want to implement them. And also look over the C# code pretty closely.
Also, looking over the stuff I haven't tested yet, I think I've found some testing gaps in the C# codebase. So, that'll be fun.
Anyway, it's too late at night, because I kept spacing out while writing this.