Modern Compiler Implementation in Java