@Override
  public Object evaluate(EvaluationContextImpl context) throws EvaluateException {
    // first check if assertions are enabled
    StackFrameProxyImpl frameProxy = context.getFrameProxy();
    if (frameProxy == null) {
      throw EvaluateExceptionUtil.NULL_STACK_FRAME;
    }
    ThreeState status = DebuggerUtilsEx.getEffectiveAssertionStatus(frameProxy.location());
    if (status == ThreeState.UNSURE) {
      // No assertions compiled in current class, so assertions flag is not initialized.
      // Request the status from the Class#desiredAssertionStatus.
      ClassObjectReference classObjectReference = frameProxy.location().declaringType().classObject();
      Method method = DebuggerUtils.findMethod(classObjectReference.referenceType(), "desiredAssertionStatus", "()Z");
      if (method != null) {
        Value res = context.getDebugProcess().invokeMethod(context, classObjectReference, method, Collections.emptyList());
        if (res instanceof BooleanValue) {
          status = ThreeState.fromBoolean(((BooleanValue)res).value());
        }
      }
    }
    if (status == ThreeState.NO) {
      return context.getSuspendContext().getVirtualMachine().mirrorOfVoid();
    }
    return myEvaluator.evaluate(context);
  }
@Override
  public Object evaluate(EvaluationContextImpl context)