private void doUpdate(@NotNull PresentationData data) {
    ApplicationManager.getApplication().runReadAction(() -> {
      if (!validate()) {
        return;
      }

      final PsiElement value = extractPsiFromValue();
      LOG.assertTrue(value.isValid());

      int flags = getIconableFlags();
      Icon icon = null;
      boolean deprecated = false;
      try {
        icon = value.getIcon(flags);
      }
      catch (IndexNotReadyException ignored) {
      }
      try {
        deprecated = isDeprecated();
      }
      catch (IndexNotReadyException ignored) {
      }

      final Icon tagIcon;
      final ColoredText tagText;
      if (!TagManager.isEnabled()) {
        tagIcon = getBookmarkIcon(myProject, value);
        tagText = null;
      }
      else {
        var tagIconAndText = TagManager.getTagIconAndText(value);
        tagIcon = tagIconAndText.icon();
        tagText = tagIconAndText.coloredText();
      }
      data.setIcon(withIconMarker(icon, tagIcon));
      data.setPresentableText(myName);
      if (deprecated) {
        data.setAttributesKey(CodeInsightColors.DEPRECATED_ATTRIBUTES);
      }
      if (tagText != null) {
        var fragments = tagText.fragments();
        for (ColoredText.Fragment fragment : fragments) {
          data.getColoredText().add(new ColoredFragment(fragment.fragmentText(), fragment.fragmentAttributes()));
        }
        if (!fragments.isEmpty()) {
          data.getColoredText().add(new ColoredFragment(myName, getSimpleTextAttributes(data)));
        }
      }
      updateImpl(data);
      data.setIcon(patchIcon(myProject, data.getIcon(true), getVirtualFile()));
      CompoundProjectViewNodeDecorator.get(myProject).decorate(this, data);
      updateTimestamp();
    });
  }
private void doUpdate(@NotNull PresentationData data)