See comments

Cleaned up some comments
Found that we need to set cur dispatch name and index just as for when
we visit a var expression. After I did that using this. or noting were
just the same.
I found that the error that said it was trying to write to a file only
happened when we used (new TextIO()).putString(s); They went away when
I declared TextIO t = new TextIO() and then called t.putString(). So
unless we can think of a different design, we need to have some sort of
updating of those fields done after every expression.

Also, this doesn’t parse:
(t).putString(s);
Is that an error?