private void update(final DebuggerContextImpl context, final Runnable runnable, boolean labelOnly) {
    if (!labelOnly) {
      clear();
    }

    if (context != null && context.getDebugProcess() != null) {
      getTree().saveState(this);

      myIcon = DebuggerTreeRenderer.getDescriptorIcon(MessageDescriptor.EVALUATING);
      myText = DebuggerTreeRenderer.getDescriptorText(context, MessageDescriptor.EVALUATING, false);

      context.getDebugProcess().getManagerThread().invoke(new DebuggerContextCommandImpl(context) {
        @Override
        public void threadAction(@NotNull SuspendContextImpl suspendContext) {
          runnable.run();
        }

        @Override
        protected void commandCancelled() {
          clear();
          getDescriptor().clear();
          updateCaches();

          labelChanged();
          childrenChanged(true);
        }

        @Override
        public Priority getPriority() {
          return Priority.NORMAL;
        }
      });
    }

    labelChanged();
    if (!labelOnly) {
      childrenChanged(true);
    }
  }
private void update(final DebuggerContextImpl context, final Runnable runnable, boolean labelOnly)