To enable further optimization and transformation, Bandera performs a
number of common data/control analysis. In particular, the
Bandera Object Flow Analysis (BOFA) statically collects
information about the objects that may flow into each program
expression at run-time. In a typical configuration, BOFA will
associate a set of tokens for a particular
expression e where a token
is a pair (C,s) where C is a
class name and s is the allocator site where the object was created.
Thus, BOFA is similar to points to analyses used for convention
imperative languages and closure analyses used for functional
programming languages. BOFA is typically run in a context-insensitive
flow-insensitive mode, but is designed to allow the precision
to be increased along several different axes.