@Override
  public void annotate(@NotNull PsiElement psiElement, @NotNull AnnotationHolder holder) {
    if (!(psiElement instanceof GroovyFile groovyFile)) return;

    if (!GrFileIndexUtil.isGroovySourceFile(groovyFile)) return;
    
    final VirtualFile vfile = groovyFile.getVirtualFile();
    if (!GdslUtil.GDSL_FILTER.value(vfile)) return;
    
    final DslActivationStatus.Status status = GroovyDslFileIndex.getStatus(vfile);
    if (status == ACTIVE) return;

    final String message = status == MODIFIED
                           ? GroovyBundle.message("inspection.message.dsl.descriptor.file.has.been.changed.and.isnt.currently.executed")
                           : GroovyBundle.message("inspection.message.dsl.descriptor.file.has.been.disabled.due.to.processing.error");

    AnnotationBuilder builder = holder.newAnnotation(HighlightSeverity.WARNING, message)
      .fileLevel()
      .withFix(new ActivateFix(vfile));
    if (status == ERROR) {
      final String error = GroovyDslFileIndex.getError(vfile);
      if (error != null) {
        builder = builder.withFix(GroovyQuickFixFactory.getInstance().createInvestigateFix(error));
      }
    }
    builder.create();
  }
@Override
  public void annotate(@NotNull PsiElement psiElement, @NotNull AnnotationHolder holder)