I have an partially obfuscated dll in which all private members and some classes are called like \u0019\u0006 (EM``ACK), \u000A\u0009 (LF``TAB), etc. But of course compiler doesn't allow such identifiers.
I think when decompiler encounters invalid identifier, it should replace it with a different, but valid one. For example for fields it might do newName = "field_" + oldName.GetHashCode().

I have an partially obfuscated dll in which all private members and some classes are called like
\u0019\u0006(EM``ACK),\u000A\u0009(LF``TAB), etc. But of course compiler doesn't allow such identifiers.I think when decompiler encounters invalid identifier, it should replace it with a different, but valid one. For example for fields it might do
newName = "field_" + oldName.GetHashCode().