@Nullable
  protected InvocationWatcher startInvokeWatching(int invokePolicy,
                                                  @Nullable ThreadReferenceProxyImpl thread,
                                                  @NotNull SuspendContextImpl context) {
    if (thread != null && getSingleThreadedEvaluationThreshold() > 0 &&
        context.getSuspendPolicy() == EventRequest.SUSPEND_ALL &&
        BitUtil.isSet(invokePolicy, ObjectReference.INVOKE_SINGLE_THREADED)) {
      if (isNewSuspendAllInvocationWatcher()) {
        return new InvocationWatcherNewImpl(this, thread, context);
      }
      else {
        return new InvocationWatcherOldImpl(this, thread);
      }
    }
    return null;
  }
@Nullable
  protected InvocationWatcher startInvokeWatching(int invokePolicy,
                                                  @Nullable ThreadReferenceProxyImpl thread,
                                                  @NotNull SuspendContextImpl context)