@Override
      public void contextAction(@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 (VisualizedTextPopup.INSTANCE.isVisualizable(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;
          }
        });
      }
@Override
      public void contextAction(@NotNull SuspendContextImpl suspendContext)