I think adding `EOF` and `UNKNOWN` here is bad idea because javac can check whether case statements in switch(enum) covers all available enums or not. If we include EOF and UNKNOWN here, users need to write `case EOF:` and `case UNKNOWN:` everywhere in `switch(ValueType)` even if logically type can't be EOF or UNKNOWN in their code. Same with `MessageFormat`.