private <V extends XSmartStepIntoVariant> void doSmartStepInto(final XSmartStepIntoHandler<V> handler,
                                                                 XSourcePosition position,
                                                                 final XDebugSession session,
                                                                 Editor editor) {
    SmartStepData stepData = editor.getUserData(SMART_STEP_INPLACE_DATA);
    if (stepData != null) {
      stepData.stepInto(stepData.myCurrentVariant);
    }
    else {
      computeVariants(handler, position)
        .onSuccess(variants -> UIUtil.invokeLaterIfNeeded(() -> {
          if (!handleSimpleCases(handler, variants, session)) {
            choose(handler, variants, position, session, editor);
          }
        }))
        .onError(throwable -> UIUtil.invokeLaterIfNeeded(session::stepInto));
    }
  }
private <V extends XSmartStepIntoVariant> void doSmartStepInto(final XSmartStepIntoHandler<V> handler,
                                                                 XSourcePosition position,
                                                                 final XDebugSession session,
                                                                 Editor editor)