Right now we have to load all the AST files, traverse them and retrieve the reference ids for every contract, struct, enum in order to resolve the variable types. However, we could do this lazily and only evaluate the contract if there is a variable that we need to resolve.