private @Nullable TopLevelFQNames getTopLevelNames() {
    TopLevelFQNames topLevelFQNames = myTopLevelFQNames;
    StubIndexImpl stubIndex = (StubIndexImpl)StubIndex.getInstance();
    long timestamp = stubIndex.getIndexModificationStamp(GrFullClassNameStringIndex.KEY, myProject) +
                     stubIndex.getIndexModificationStamp(GrFullScriptNameStringIndex.KEY, myProject);
    if (topLevelFQNames != null && topLevelFQNames.timestamp == timestamp) {
      return topLevelFQNames.useful ? topLevelFQNames : null;
    }

    TopLevelFQNames classTopLevelFQNames = new TopLevelFQNames(GrFullClassNameStringIndex.KEY, myProject);
    TopLevelFQNames scriptTopLevelFQNames = new TopLevelFQNames(GrFullScriptNameStringIndex.KEY, myProject);
    myTopLevelScriptFQNames = scriptTopLevelFQNames;

    topLevelFQNames = classTopLevelFQNames.merge(scriptTopLevelFQNames);
    myTopLevelFQNames = topLevelFQNames;
    return topLevelFQNames;
  }
private @Nullable TopLevelFQNames getTopLevelNames()