Soot is a Java optimization framework. It provides three intermediate representations for analyzing and transforming Java bytecode: baf, a streamlined representation of bytecode which is simple to manipulate; jimple, a typed 3-address intermediate representation suitable for optimization; and grimp, an aggregated version of Jimple suitable for decompilation and code inspection. Soot can be used as a stand alone tool to optimize or inspect class files and a framework to develop optimizations or transformations on Java bytecode.