protected void doStep(final SuspendContextImpl suspendContext, final ThreadReferenceProxyImpl stepThread, int size, int depth,
                        RequestHint hint, Object commandToken) {
    if (stepThread == null) {
      return;
    }
    try {
      final ThreadReference stepThreadReference = stepThread.getThreadReference();
      if (LOG.isDebugEnabled()) {
        LOG.debug("DO_STEP: creating step request for " + stepThreadReference);
      }
      deleteStepRequests(stepThreadReference);
      EventRequestManager requestManager = suspendContext.getVirtualMachine().eventRequestManager();
      StepRequest stepRequest = requestManager.createStepRequest(stepThreadReference, size, depth);
      if (!(hint != null && hint.isIgnoreFilters()) && !isPositionFiltered(getLocation(stepThread, suspendContext))) {
        getActiveFilters().forEach(f -> stepRequest.addClassExclusionFilter(f.getPattern()));
      }

      // suspend policy to match the suspend policy of the context:
      // if all threads were suspended, then during stepping all the threads must be suspended
      // if only event thread was suspended, then only this particular thread must be suspended during stepping
      stepRequest.setSuspendPolicy(suspendContext.getSuspendPolicy() == EventRequest.SUSPEND_EVENT_THREAD
                                   ? EventRequest.SUSPEND_EVENT_THREAD
                                   : EventRequest.SUSPEND_ALL);

      stepRequest.addCountFilter(1);

      if (hint != null) {
        stepRequest.putProperty("hint", hint);
      }
      if (commandToken != null) {
        stepRequest.putProperty("commandToken", commandToken);
      }
      DebuggerUtilsAsync.setEnabled(stepRequest, true).whenComplete((__, e) -> {
        if (DebuggerUtilsAsync.unwrap(e) instanceof IllegalThreadStateException) {
          DebuggerUtilsAsync.deleteEventRequest(requestManager, stepRequest);
        }
      });
    }
    catch (ObjectCollectedException ignored) {

    }
  }
protected void doStep(final SuspendContextImpl suspendContext, final ThreadReferenceProxyImpl stepThread, int size, int depth,
                        RequestHint hint, Object commandToken)