int (PsiFile f) { if (f == null) return 0; VirtualFile v = f.getVirtualFile(); VirtualFile host = v instanceof VirtualFileWindow window ? window.getDelegate() : null; if (host == null) return 0; // host + offset in host return v.hashCode() * 37 + Objects.hashCode(ArrayUtil.getFirstElement(((VirtualFileWindow)v).getDocumentWindow().getHostRanges())); }