void (Collection<? extends PsiType> exceptions) { StreamEx<TypeConstraint> allExceptions = StreamEx.of(JAVA_LANG_ERROR, JAVA_LANG_RUNTIME_EXCEPTION) .map(fqn -> myTrapTracker.transfer(fqn).getThrowable()); if (!exceptions.isEmpty()) { allExceptions = allExceptions.append(StreamEx.of(exceptions).map(TypeConstraints::instanceOf)) .map(TypeConstraint::tryNegate).nonNull() .reduce(TypeConstraints.TOP, TypeConstraint::meet) .notInstanceOfTypes() .map(TypeConstraint.Exact::instanceOf); } allExceptions .map(exc -> myTrapTracker.transferValue(new ExceptionTransfer(exc))) .map(transfer -> new EnsureInstruction(null, RelationType.EQ, DfType.TOP, transfer)) .forEach(this::addInstruction); }