Parser | ReportForall Report unnecessary foralls. Hm: report rank>2 foralls | AnnotateForall Annotate all unbound type variables with foralls | Renamer Rename type variables and term variables | / \ / \ TypeCheckHm TypeCheckBi \ / \ / | ReportTEVar Report type existential variables and change type AST | RemoveForall RemoveForall and change type AST | Monomorpher | Desugar | CodeGen