@Override
  public Object evaluate(EvaluationContextImpl context) throws EvaluateException {
    if (myValue == null) {
      return null;
    }
    VirtualMachineProxyImpl vm = context.getSuspendContext().getVirtualMachine();
    if (myValue instanceof Boolean) {
      return DebuggerUtilsEx.createValue(vm, myExpectedType, ((Boolean)myValue).booleanValue());
    }
    if (myValue instanceof Character) {
      return DebuggerUtilsEx.createValue(vm, myExpectedType, ((Character)myValue).charValue());
    }
    if (myValue instanceof Double) {
      return DebuggerUtilsEx.createValue(vm, myExpectedType, ((Number)myValue).doubleValue());
    }
    if (myValue instanceof Float) {
      return DebuggerUtilsEx.createValue(vm, myExpectedType, ((Number)myValue).floatValue());
    }
    if (myValue instanceof Number) {
      return DebuggerUtilsEx.createValue(vm, myExpectedType, ((Number)myValue).longValue());
    }
    if (myValue instanceof String) {
      return vm.mirrorOfStringLiteral(((String)myValue), () -> {
        StringReference str = DebuggerUtilsEx.mirrorOfString((String)myValue, vm, context);
        // intern starting from jdk 7
        if (Registry.is("debugger.intern.string.literals") && vm.versionHigher("1.7")) {
          Method internMethod = DebuggerUtils.findMethod(str.referenceType(), "intern", "()Ljava/lang/String;");
          if (internMethod != null) {
            return (StringReference)context.getDebugProcess().invokeMethod(context, str, internMethod, Collections.emptyList());
          }
        }
        return str;
      });
    }
    throw EvaluateExceptionUtil
      .createEvaluateException(JavaDebuggerBundle.message("evaluation.error.unknown.expression.type", myExpectedType));
  }
@Override
  public Object evaluate(EvaluationContextImpl context)