void (@Nullable FrameworkType frameworkType, final @Nullable VirtualFile file) { final Iterator<ExcludeListItem> iterator = myModel.iterator(); boolean add = true; while (iterator.hasNext()) { ExcludeListItem item = iterator.next(); final String fileUrl = item.getFileUrl(); VirtualFile itemFile = fileUrl != null ? VirtualFileManager.getInstance().findFileByUrl(fileUrl) : null; final String itemTypeId = item.getFrameworkTypeId(); if (file == null) { if (frameworkType != null && frameworkType.getId().equals(itemTypeId)) { iterator.remove(); } } else if (itemFile != null) { if (VfsUtilCore.isAncestor(file, itemFile, false) && (frameworkType == null || frameworkType.getId().equals(itemTypeId))) { iterator.remove(); } if (VfsUtilCore.isAncestor(itemFile, file, false) && (itemTypeId == null || frameworkType != null && itemTypeId.equals(frameworkType.getId()))) { add = false; } } } if (add) { myModel.add(new ValidExcludeListItem(frameworkType, file)); } }