@Override
  public Value calcValue(EvaluationContextImpl evaluationContext) throws EvaluateException {
    DebuggerManagerThreadImpl.assertIsManagerThread();
    try {
      Value fieldValue;
      if (myPresetValue != null) {
        fieldValue = myPresetValue.get();
      }
      else if (myObject != null) {
        fieldValue = myObject.getValue(myField);
      }
      else {
        fieldValue = myField.declaringType().getValue(myField);
      }

      if (myObject != null && populateExceptionStackTraceIfNeeded(fieldValue, evaluationContext)) {
        // re-read stacktrace value
        fieldValue = myObject.getValue(myField);
      }

      return fieldValue;
    }
    catch (InternalException e) {
      if (evaluationContext.getSuspendContext().getVirtualMachine().canBeModified()) { // do not care in read only vms
        LOG.debug(e);
      }
      else {
        LOG.warn(e);
      }
      throw new EvaluateException(JavaDebuggerBundle.message("internal.debugger.error"));
    }
    catch (ObjectCollectedException ignored) {
      throw EvaluateExceptionUtil.OBJECT_WAS_COLLECTED;
    }
  }
@Override
  public Value calcValue(EvaluationContextImpl evaluationContext)