jhm: Fix bug where if you delete the actual file we didn't notice
Change NO_DEFAULT_CASE to allow compilers to warn if not all cases in an enum are covered.

If you want to assert more than one case is unreachable, use DEFAULT_UNREACHABLE;