1. A computer implemented method for manipulating a bill of materials, the bill of materials comprising a plurality of components necessary to manufacture a product and a plurality of edges, wherein each component of the plurality of components is connected to at least one other component of the plurality of components with a corresponding at least one edge to form at least one ordered pair of a plurality of ordered pairs in the graph, wherein each ordered pair includes a source component and a target component of the plurality of components connected by a corresponding edge of the plurality of edges, the method comprising: assigning by a processor of a computer system a corresponding low-level code to each component of the plurality of components, wherein for each edge of the plurality of edges, a low-level code of a target component is greater than a low-level code of a source component; adding a new edge to the plurality of edges of the bill of materials connecting a first component and a second component of the plurality of components in a new ordered pair, wherein the first component is a source component and the second component is a target component of the new ordered pair, and wherein a low-level code of the second component is not greater than a low-level code of the first component; sorting topologically by the processor at the computer system a subgraph comprising the new ordered pair, a subset of the plurality of components and a corresponding subset of the plurality of edges, wherein each component of the subset of components is direct or indirect successor of the second component of the new ordered pair; and during the sorting, for each ordered pair in the subgraph, assigning a new low-level code to a target component when an old low-level code of the target component is not greater than a low-level code of a corresponding source component, the new low level code is greater than the low-level code of the corresponding source component.