All right, I've got the lookahead logic at least sort of sometimes working. That's three whole tests ported over. I feel like I should add some more anecdata about how raw coverage metrics aren't helpful: right now, this is at 77% branch coverage. As an Ink interpreter, this code is still basically useless.
I don't know if I have much to say about this. I'm really not following good commit message practices. If I get this in a state where I put it out in the world, I'll probably do a fresh repo starting from whatever state the project is in. I don't want to explain what's going on in the commit that's just labeled "HSDJKLFHSLKJDHFLKJDSHFLKDSJHFLKSDJHFLKSJDLKS". (Mostly, I was confronting the consequences of my hubris.)
Anyway, I'm still pretty excited about this whole project. I've already made some pretty sweeping changes to the design, and I'm fairly sure there are more improvements to make, both in the stuff I've yet to port, and the stuff I've already ported. (Teaser of the kinds of stuff I've done: the Pointer type has no need to exist in my design. I'm replacing it entirely with AbsolutePath, which is one of the two distinct subclasses of Path I have. I kind of suspect that I should be able to eliminate usage of the base class entirely, but I think I need more code ported before I can be sure. I'm also trying to get as far as I can without having the Object base class; much of its functionality was folded into Path.)
Anyway, I should wrap up now. It's late.