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
- 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
- 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: