Patent ID: 7631001

Claim:
A computer-implemented method of reconciling a first data structure with a second data structure, each data structure initially comprising a plurality of corresponding nodes, the method comprising: subsequent to an analysis that modifies the second data structure, creating a list of nodes that includes each of the following: each node of the second data structure that has been changed by the analysis and for which a corresponding node in the first data structure was fixed; each node of the second data structure that has been changed by the analysis and for which a corresponding node in the first data structure was deleted; each node of the second data structure which was reordered by the analysis and for which a corresponding node in the first data structure was deleted; each node of the second data structure which was linked to by the analysis and for which a corresponding node in the first data structure was deleted; each node of the second data structure which was linked to another node by the analysis and for which a corresponding node in the first data structure was fixed; each node of the second data structure which was linked to another node by the analysis and for which a corresponding node in the first data structure was deleted; and each node of the second data structure which was deleted by the analysis and for which a corresponding node in the first data structure had a child node added; accessing each node in the first data structure; determining whether a change has been made to the node in the second data structure which corresponds to the each node in the first data structure; determining whether the node is present in the created list of nodes; and for each node in the second data structure that has been changed by the analysis and which is not in the created list, applying the change to a corresponding node in the first data structure; wherein the method further comprises: storing an identifier in a stroke map for each leaf node that existed in the second data structure prior to analysis for which there is a corresponding leaf node in the first data structure; upon adding the node to the first data structure, accessing the stroke map to locate each leaf node that corresponds to the added node; and adding each leaf node under the added node.