T (@Nullable VirtualFile file) { if (!(file instanceof VirtualFileWithId) || !file.isValid()) return myDefValue; for (VirtualFile each = file; each != null; each = each.getParent()) { int id = ((VirtualFileWithId)each).getId(); if (!myNonInterestingIds.get(id)) { T info = myRootInfos.get(each); if (info != null) { return info; } myNonInterestingIds.set(id); } } return myDefValue; }