In the spring of 2000, we were asked to help with an assessment of object-oriented software. A MITRE sponsor needed to assess the quality of a C and Java software system. Specifically, the sponsor wanted to know if the software could be reused. This need was typical of the many needs that motivate analyses of software. Examples include maintenance questions, reuse questions, code upgrades, component integrations, and analysis of hidden and explicit requirements. We knew that commercial and open source resources for analyzing object-oriented software were limited. There were few tools available that fully parsed C or Java and these tended to be very expensive. Additionally, due to indirection caused by inheritance and polymorphism, it is difficult for these tools to correctly compute data flow and control flow.