Static analysis phases ---------------------- - build package-level environment (classes & interfaces) - build class-level environment (resolve inheritance, etc) - resolve names (simple & qualified names, resolve parsing ambiguities) - fold constants - resolve fields & compute types (field access, method overloading) - type checking - widening