Enums where no case has associated values are transformed into actual TypeScript
enums.
Enums where at least one case has associated values are kept as union types, but
cases without associated values receive a nested property in snake case as well.
Such an enum case without associated values must have an empty object as the
value of the nested property.