@Override
  public @NotNull List<DfaInstructionState> dispatch(@NotNull DfaMemoryState state,
                                                     @NotNull DataFlowInterpreter interpreter,
                                                     DfaControlTransferValue.@NotNull TransferTarget target,
                                                     @NotNull FList<Trap> nextTraps) {
    if (!(target instanceof ExceptionTransfer)) {
      return DfaControlTransferValue.dispatch(state, interpreter, target, nextTraps);
    }
    state.emptyStack();
    TypeConstraint throwableType = ((ExceptionTransfer)target).getThrowable();
    List<DfaInstructionState> result = new ArrayList<>();
    for (var entry : myClauses.entrySet()) {
      ControlFlow.ControlFlowOffset jumpOffset = entry.getValue();
      CatchClauseDescriptor catchSection = entry.getKey();

      for (TypeConstraint caughtType : catchSection.constraints()) {
        TypeConstraint caught = Objects.requireNonNull(throwableType).meet(caughtType);
        if (caught != TypeConstraints.BOTTOM) {
          result.add(new DfaInstructionState(interpreter.getInstruction(jumpOffset.getInstructionOffset()),
                                             stateForCatchClause(state, interpreter, catchSection.parameter(), caught)));
        }

        TypeConstraint negated = caughtType.tryNegate();
        if (negated != null) {
          throwableType = throwableType.meet(negated);
          if (throwableType == TypeConstraints.BOTTOM) return result;
        }
      }
    }
    return ContainerUtil.concat(result, 
                                DfaControlTransferValue.dispatch(state, interpreter, new ExceptionTransfer(throwableType), nextTraps));
  }
@Override
  public @NotNull List<DfaInstructionState> dispatch(@NotNull DfaMemoryState state,
                                                     @NotNull DataFlowInterpreter interpreter,
                                                     DfaControlTransferValue.@NotNull TransferTarget target,
                                                     @NotNull FList<Trap> nextTraps)