int (@NotNull VirtualFile file) { AtomicInteger invalidationCount = file.getUserData(GIST_INVALIDATION_COUNT_KEY); int reindexCount = ((GistManagerImpl)getInstance()).getReindexCount(); long fileModificationCount = file.getModificationCount(); //mix the bits in all 4 components so that there is little chance change in one counter // 'compensate' change in another, and the resulting stamp happens to be the same: return mixBits( mixBits(Long.hashCode(fileModificationCount), reindexCount), mixBits(invalidationCount != null ? invalidationCount.get() : 0, INTERNAL_VERSION) ); }