1. A method for analyzing a program, comprising: providing an application builder that receives source code instructions and determines the minimum amount of the source code instructions that is required by a program; determining by the application builder a set of functions required by the program by performing a local flow-sensitive type constraint analysis at an intermediate language instruction level to determine which functions have the potential of being executed and to eliminate unused functions in the program, whereby the program is analyzed recursively to determine which virtual functions are called throughout the program; determining a call path for virtual calls and a value graph that may reach a function required by the program; and analyzing all possible object types that are created at every instruction of the program from the call path by tracking the object types as they pass through plural constructs in the program and calling into functions generically for handling specialized native runtime type information based on the analysis of the object types.