1. A method comprising: maintaining an inverted tree data structure of an original Java class path indicating file dependencies, wherein the inverted tree data structure comprises a plurality of nodes representing a plurality of elements of the original Java class path, wherein the inverted tree data structure further comprises one or more links that indicate an element is depended on by another element, and wherein the inverted tree data structure further comprises element name resolution information; receiving an indication of a change in the original Java class path; retrieving a new Java class path that comprises the change in the original Java class path; determining a first set of elements of the original Java class path that have been affected by the change by comparing the original Java class path with the new Java class path, wherein the comparing comprises determining entries removed, determining entries added, and determining entries re-ordered; determining a second set of elements that have dependencies on the first set of elements using the inverted tree data structure; and recompiling the first set of elements and the second set of elements that have dependencies on the first set of elements.