ALTmode is set when we are under a pattern alternative.
BYVALmode is set when we are typing an expression that occurs in a by-value position.
FUNmode is orthogonal to above.
HKmode is set when we are typing a higher-kinded type.
LHSmode is set for the left-hand side of an assignment.
NOmode, EXPRmode and PATTERNmode are mutually exclusive.
POLYmode is orthogonal to above.
QUALmode is orthogonal to above.
SCCmode is orthogonal to above.
SNDTRYmode indicates that an application is typed for the 2nd time.
STARmode is set when star patterns are allowed.
SUPERCONSTRmode is set for the super in a superclass constructor call super.
TAPPmode is set for the function/type constructor part of a type application.
TYPEPATmode is set when we are typing a type in a pattern.
TYPEmode needs a comment.