Event handler registration:
 
   setup                          Registers closure that runs after the type checker finishes initialization
   finish                         Registers closure that runs after the type checker completes type checking
   beforeVisitClass               Registers closure that runs before type checking a class
   afterVisitClass                Registers closure that runs after having finished the visit of a type checked class
   beforeVisitMethod              Registers closure that runs before type checking a method body
   afterVisitMethod               Registers closure that runs after type checking a method body
   beforeMethodCall               Registers closure that runs before the type checker starts type checking a method call
   afterMethodCall                Registers closure that runs once the type checker has finished type checking a method call
   methodNotFound                 Registers closure that runs when it fails to find an appropriate method for a method call
   ambiguousMethods               Registers closure that runs when the type checker cannot choose between several candidate methods
   onMethodSelection              Registers closure that runs when it finds a method appropriate for a method call
   unresolvedVariable             Registers closure that runs when the type checker finds an unresolved variable
   unresolvedProperty             Registers closure that runs when the type checker cannot find a property on the receiver
   unresolvedAttribute            Registers closure that runs when the type checker cannot find an attribute on the receiver
   incompatibleAssignment         Registers closure that runs when the type checker thinks that the right-hand side of an assignment is incompatible with the left-hand side
   incompatibleReturnType         Registers closure that runs when the type checker thinks that a return value is incompatibe with the return type
 
 Expression categorization:
 
   isAnnotationConstantExpression Determines if argument is an 
AnnotationConstantExpression
   isArgumentListExpression       Determines if argument is an 
ArgumentListExpression
   isArrayExpression              Determines if argument is an 
ArrayExpression
   isAttributeExpression          Determines if argument is an 
AttributeExpression
   isBinaryExpression             Determines if argument is a  
BinaryExpression
   isBitwiseNegationExpression    Determines if argument is a  
BitwiseNegationExpression
   isBooleanExpression            Determines if argument is a  
BooleanExpression
   isCastExpression               Determines if argument is a  
CastExpression
   isClassExpression              Determines if argument is a  
ClassExpression
   isClosureExpression            Determines if argument is a  
ClosureExpression
   isConstantExpression           Determines if argument is a  
ConstantExpression
   isConstructorCallExpression    Determines if argument is a  
ConstructorCallExpression
   isDeclarationExpression        Determines if argument is a  
DeclarationExpression
   isElvisOperatorExpression      Determines if argument is an 
ElvisOperatorExpression
   isEmptyExpression              Determines if argument is an 
EmptyExpression
   isFieldExpression              Determines if argument is a  
FieldExpression
   isGStringExpression            Determines if argument is a  
GStringExpression
   isLambdaExpression             Determines if argument is a  
LambdaExpression
   isListExpression               Determines if argument is a  
ListExpression
   isMapExpression                Determines if argument is a  
MapExpression
   isMapEntryExpression           Determines if argument is a  
MapEntryExpression
   isMethodCallExpression         Determines if argument is a  
MethodCallExpression
   isMethodPointerExpression      Determines if argument is a  
MethodPointerExpression
   isMethodReferenceExpression    Determines if argument is a  
MethodReferenceExpression
   isNamedArgumentListExpression  Determines if argument is a  
NamedArgumentListExpression
   isNotExpression                Determines if argument is a  
NotExpression
   isPostfixExpression            Determines if argument is a  
PostfixExpression
   isPrefixExpression             Determines if argument is a  
PrefixExpression
   isPropertyExpression           Determines if argument is a  
PropertyExpression
   isRangeExpression              Determines if argument is a  
RangeExpression
   isSpreadExpression             Determines if argument is a  
SpreadExpression
   isSpreadMapExpression          Determines if argument is a  
SpreadMapExpression
   isStaticMethodCallExpression   Determines if argument is a  
StaticMethodCallExpression
   isTernaryExpression            Determines if argument is a  
TernaryExpression
   isTupleExpression              Determines if argument is a  
TupleExpression
   isUnaryMinusExpression         Determines if argument is a  
UnaryMinusExpression
   isUnaryPlusExpression          Determines if argument is a  
UnaryPlusExpression
   isVariableExpression           Determines if argument is a  
VariableExpression
 
 General utility:
 
   Delegates to 
AbstractTypeCheckingExtension
   Imports static members of 
ClassHelper
   Imports static members of 
StaticTypeCheckingSupport