Annotate let bindings with how their bound variables are used.
Tracks how a bound variable is used.
Bound variable is used as the function in an application.
Bound variable is destructed by a case-expression.
Bound variable is used inside a
Bound variable has an occurrence that is not one of the above.
Usage is inside a Lambda abstraction (either type or value)
Usage is inside a case alternative.
Map of bound name to how the variable is used.
Annotate all binding occurrences of variables in an expression with how they are used.