void (EvaluationContextImpl evaluationContext) { DebuggerManagerThreadImpl.assertIsManagerThread(); myStoredEvaluationContext = evaluationContext; Value value; try { value = calcValue(evaluationContext); if (!myIsNew) { try { if (myValue instanceof DoubleValue && Double.isNaN(((DoubleValue)myValue).doubleValue())) { myIsDirty = !(value instanceof DoubleValue); } else if (myValue instanceof FloatValue && Float.isNaN(((FloatValue)myValue).floatValue())) { myIsDirty = !(value instanceof FloatValue); } else { myIsDirty = !Objects.equals(value, myValue); } } catch (ObjectCollectedException ignored) { myIsDirty = true; } } myValue = value; myValueException = null; } catch (EvaluateException e) { myValueException = e; setFailed(e); myValue = getTargetExceptionWithStackTraceFilled(evaluationContext, e, isPrintExceptionToConsole() || ApplicationManager.getApplication().isUnitTestMode()); myIsExpandable = false; } finally { myValueReady = true; } myIsNew = false; }