"Match nonexhaustive" is a commonly used error message in pattern matching which means that the cases provided to not cover all possible inputs. Functional languages usually do it with static analysis, but this is not really plausible here so I have to do it in runtime(similar to `final switch`).

It is not the input that's not exhaustive - it's the patterns.