void (List<PsiClassType> ex, List<? extends PsiClassType> thrownEx) { final List<PsiClassType> replacement = new ArrayList<>(); for (Iterator<PsiClassType> iterator = ex.iterator(); iterator.hasNext(); ) { PsiClassType classType = iterator.next(); boolean found = false; for (PsiClassType psiClassType : thrownEx) { if (psiClassType.isAssignableFrom(classType)) { found = true; break; } else if (classType.isAssignableFrom(psiClassType)) { if (isUncheckedException(classType) == isUncheckedException(psiClassType)) { replacement.add(psiClassType); } } } if (!found) { iterator.remove(); } } ex.removeAll(replacement); ex.addAll(replacement); }