void (@NotNull PsiExpressionStatement statement) { startElement(statement); final PsiExpression expression = statement.getExpression(); expression.accept(this); for (PsiParameter catchParameter : myCatchParameters) { ProgressManager.checkCanceled(); if (myUnhandledExceptionCatchBlocks.contains(((PsiCatchSection)catchParameter.getDeclarationScope()).getCatchBlock())) { continue; } PsiType type = catchParameter.getType(); List<PsiType> types = type instanceof PsiDisjunctionType ? ((PsiDisjunctionType)type).getDisjunctions() : Collections.singletonList(type); for (PsiType subType : types) { if (subType instanceof PsiClassType) { generateThrow((PsiClassType)subType, statement); } } } finishElement(statement); }