1. A method to execute an object-oriented program, the method comprising: automatically discovering and building in a computer a graph, wherein the graph is to represent a plurality of combinations and parent child relationships between them, wherein each of the parent child relationships has one of the combinations as a parent combination and another of the combinations as a child combination, wherein each of the plurality of combinations is a combination of a specific object-oriented instance and a specific method to be executed on that specific object-oriented instance, wherein execution of a first of the combinations will generate a current output of interest, wherein, based on the first combination, the others of the combinations are determined by iteratively discovering the child combinations for already discovered parent combinations, and wherein the graph is built of nodes coupled with links, wherein each of the plurality of combinations is identified by one of the nodes, wherein each of the links identifies one of the nodes as a parent node and another of the nodes a child node, wherein each of the parent child relationships is represented by one of the links such that the parent node of that link identifies the parent combination and the child node of that link identifies the child combination, wherein the graph has a root node, a plurality of intermediate nodes, and a plurality of end nodes, wherein the root node identifies the first combination and has a set of one or more child nodes, wherein each of the plurality of intermediate nodes has a set of one or more parent nodes and a set of one or more child nodes, wherein at least one of the plurality of intermediate nodes has the root node as a parent node, wherein at least one of the plurality of intermediate nodes has another of the intermediate nodes as a parent node; and executing the graph in the computer in an order indicated by the links until the root node is reached and executed, wherein the executing the graph includes, executing each of the parent nodes, wherein the execution of each of the parent nodes includes, executing the specific method on the specific object-oriented instance of the combination identified by that parent node to generate an output for that parent node using as inputs the outputs for that parent node's set of child nodes.