@Override
  public void decorate(ProjectViewNode node, PresentationData data) {
    final Project project = node.getProject();
    if (project == null) {
      return;
    }

    final CoverageDataManager coverageDataManager = CoverageDataManager.getInstance(project);
    CoverageSuitesBundle javaSuite = getJavaSuite(coverageDataManager, project);
    // This decorator is applicable only to java suites
    if (javaSuite == null) return;
    final JavaCoverageAnnotator javaCovAnnotator = (JavaCoverageAnnotator) javaSuite.getAnnotator(project);

    final Object value = node.getValue();
    PsiElement element = null;
    if (value instanceof PsiElement psiElement) {
      element = psiElement;
    }
    else if (value instanceof SmartPsiElementPointer<?> smartPointer) {
      element = smartPointer.getElement();
    }
    else if (value instanceof PackageElement packageElement) {
      final String coverageString = javaCovAnnotator.getPackageCoverageInformationString(packageElement.getPackage(),
                                                                                         packageElement.getModule(),
                                                                                         coverageDataManager);
      data.setLocationString(coverageString);
    }

    if (element instanceof PsiClass) {
      final GlobalSearchScope searchScope = javaSuite.getSearchScope(project);
      final VirtualFile vFile = PsiUtilCore.getVirtualFile(element);
      if (vFile != null && searchScope.contains(vFile)) {
        final String qName = ((PsiClass)element).getQualifiedName();
        if (qName != null) {
          data.setLocationString(javaCovAnnotator.getClassCoverageInformationString(qName, coverageDataManager));
        }
      }
    }
    else if (element instanceof PsiNamedElement namedElement &&
             // handled in CoverageProjectViewDirectoryNodeDecorator
             !(element instanceof PsiFile || element instanceof PsiDirectory)) {
      for (JavaCoverageEngineExtension extension : JavaCoverageEngineExtension.EP_NAME.getExtensions()) {
        final PackageAnnotator.ClassCoverageInfo info = extension.getSummaryCoverageInfo(javaCovAnnotator, namedElement);
        if (info != null) {
          data.setLocationString(JavaCoverageAnnotator.getClassCoverageInformationString(info, coverageDataManager));
          break;
        }
      }
    }
  }
@Override
  public void decorate(ProjectViewNode node, PresentationData data)