private static void forceEarlyReturnWithFinally(final Value value,
                                                  final JavaStackFrame frame,
                                                  final DebugProcessImpl debugProcess,
                                                  @Nullable final DialogWrapper dialog) {
    SwingUtilities.invokeLater(() -> {
      if (JvmDropFrameActionHandler.evaluateFinallyBlocks(debugProcess.getProject(),
                                               UIUtil.removeMnemonic(ActionsBundle.actionText("Debugger.ForceEarlyReturn")),
                                               frame,
                                               new XDebuggerEvaluator.XEvaluationCallback() {
                                                 @Override
                                                 public void evaluated(@NotNull XValue result) {
                                                   forceEarlyReturn(value, frame.getDescriptor().getFrameProxy().threadProxy(), debugProcess, dialog);
                                                 }

                                                 @Override
                                                 public void errorOccurred(@NotNull String errorMessage) {
                                                   showError(debugProcess.getProject(),
                                                             JavaDebuggerBundle.message("error.executing.finally", errorMessage));
                                                 }
                                               })) {
        return;
      }
      forceEarlyReturn(value, frame.getDescriptor().getFrameProxy().threadProxy(), debugProcess, dialog);
    });
  }
private static void forceEarlyReturnWithFinally(final Value value,
                                                  final JavaStackFrame frame,
                                                  final DebugProcessImpl debugProcess,
                                                  @Nullable final DialogWrapper dialog)