Phased Type Checker For Java