Overview of type checking goals: type safety and runtime type errors:
Why type check intermediate AST repeatedly inside a compiler?