The Kan compiler. The compiler has been implemented with {@link JParse}, a Java parser, type evaluator, and exception analyzer based on {@link ANTLR}. The compiler begins by parsing all files given on the command line, producing ASTs (Abstract Syntax Trees) as the result. It then does type analysis on the trees to deduce the return types and checked exceptions thrown by asynchronous method calls. The type information is used to generate {@link kan.thread.Future Future} objects with appropriate join() and result() methods. Then a tree walker generates the translated Java output, as well as stub classes for global objects.