Actually, I think we can get rid of this explicit EOI model.
All we have to do is to add this line to the `LiteralChar.fromTree`:

    case Apply(Select(This(typeName), termName), List(Select(This(argTypeName), Decoded("EOI")))) ⇒ LiteralChar(Parser.EOI)