private static boolean specialSuspendProcessing(@NotNull SuspendContextImpl suspendContext,
                                                  @NotNull LocatableEventRequestor requestor,
                                                  @NotNull SuspendManager suspendManager,
                                                  @NotNull ThreadReference thread) {

    if (suspendContext.myIsCustomSuspendLogic) {
      suspendManager.voteResume(suspendContext);
      return true;
    }
    boolean noStandardSuspendNeeded;
    if (DebuggerUtils.isAlwaysSuspendThreadBeforeSwitch()) {
      noStandardSuspendNeeded = specialSuspendProcessingForAlwaysSwitch(suspendContext, requestor, (SuspendManagerImpl)suspendManager, thread);
    }
    else {
      noStandardSuspendNeeded = requestor instanceof CustomProcessingLocatableEventRequestor customRequestor &&
                                customRequestor.customVoteSuspend(suspendContext);
    }
    if (noStandardSuspendNeeded) {
      suspendContext.myIsCustomSuspendLogic = true;
    }
    return noStandardSuspendNeeded;
  }
private static boolean specialSuspendProcessing(@NotNull SuspendContextImpl suspendContext,
                                                  @NotNull LocatableEventRequestor requestor,
                                                  @NotNull SuspendManager suspendManager,
                                                  @NotNull ThreadReference thread)