Soot is a free tool for examining byte code. It can be used for optimisation,
decompiling or transforming byte code. It provides four intermediate representations
for analyzing and transforming Java bytecode:
Baf: a streamlined representation of bytecode which is simple
Jimple: a typed 3-address intermediate representation suitable
Shimple: a variation of Jimple.
Grimp: an aggregated version of Jimple suitable for
decompilation and code inspection.