void (@NotNull SuspendContextImpl suspendContext) { if (node.isObsolete()) { return; } if (!myContextSet) { myValueDescriptor.setContext(myEvaluationContext); } myValueDescriptor.updateRepresentationNoNotify(myEvaluationContext, new DescriptorLabelListener() { @Override public void labelChanged() { Icon nodeIcon = place == XValuePlace.TOOLTIP ? myValueDescriptor.getValueIcon() : DebuggerTreeRenderer.getValueIcon(myValueDescriptor, myParent != null ? myParent.getDescriptor() : null); XValuePresentation presentation = createPresentation(myValueDescriptor); Renderer lastRenderer = myValueDescriptor.getLastRenderer(); boolean fullEvaluatorSet = setFullValueEvaluator(lastRenderer); if (!fullEvaluatorSet && lastRenderer instanceof CompoundReferenceRenderer) { fullEvaluatorSet = setFullValueEvaluator(((CompoundReferenceRenderer)lastRenderer).getLabelRenderer()); } if (!fullEvaluatorSet) { String text = myValueDescriptor.getValueText(); if (text.length() > XValueNode.MAX_VALUE_LENGTH) { node.setFullValueEvaluator(new JavaFullValueEvaluator(myEvaluationContext) { @Override public void evaluate(@NotNull final XFullValueEvaluationCallback callback) { final ValueDescriptorImpl fullValueDescriptor = myValueDescriptor.getFullValueDescriptor(); fullValueDescriptor.updateRepresentation(myEvaluationContext, new DescriptorLabelListener() { @Override public void labelChanged() { callback.evaluated(fullValueDescriptor.getValueText()); } }); } }); } else if (StringUtil.containsLineBreak(text)) { node.setFullValueEvaluator(new XFullValueEvaluator() { @Override public void startEvaluation(@NotNull XFullValueEvaluationCallback callback) { callback.evaluated(text); } }); } } node.setPresentation(nodeIcon, presentation, myValueDescriptor.isExpandable()); } private boolean setFullValueEvaluator(Renderer renderer) { if (renderer instanceof FullValueEvaluatorProvider) { XFullValueEvaluator evaluator = ((FullValueEvaluatorProvider)renderer).getFullValueEvaluator(myEvaluationContext, myValueDescriptor); if (evaluator != null) { node.setFullValueEvaluator(evaluator); return true; } } return false; } }); }