Classes to represent a Java method as a control flow graph of basic blocks. A basic block is a sequence of code that is entered only in once place (e.g. the target of a branch statement) and is exited at only one place (e.g. a branch statement). Each basic block consists of an expression tree. There are also classes to represent try-catch blocks, Java subroutines (finally blocks), certain properties of the control flow graph such as its dominator tree, and to visualize a control flow graph.