We want to highly discourage using equality checks on typing modes.
Instead you should match, exhaustively, so when we ever modify the enum we get a compile
error. Only use TypingModeEqWrapper when you really really really have to.
Prefer unwrapping TypingModeEqWrapper in apis that should return a TypingMode whenever
possible, and if you ever get an TypingModeEqWrapper, prefer unwrapping it and matching on it exhaustively.
The current typing mode of an inference context. We unfortunately have some
slightly different typing rules depending on the current context. See the
doc comment for each variant for how and why they are used.