@Override
  protected boolean validate(
    @NotNull PsiAnnotation psiAnnotation, @NotNull PsiClass psiClass, @NotNull ProblemSink builder
  ) {
    if (!super.validate(psiAnnotation, psiClass, builder)) {
      return false;
    }

    final LoggerInitializerDeclaration declaration = CustomLogParser.parseInitializerParameters(getCustomDeclaration(psiClass));
    if (declaration == null) {
      builder.addErrorMessage("inspection.message.custom.log.not.configured.correctly");
      return false;
    }
    final String topic = PsiAnnotationUtil.getStringAnnotationValue(psiAnnotation, "topic", "");
    final boolean topicPresent = !StringUtil.isEmptyOrSpaces(topic);
    if (topicPresent) {
      if (!declaration.hasWithTopic()) {
        builder.addErrorMessage("inspection.message.custom.log.does.not.allow.topic");
        return false;
      }
    } else {
      if (!declaration.hasWithoutTopic()) {
        builder.addErrorMessage("inspection.message.custom.log.requires.topic");
        return false;
      }
    }
    return true;
  }
@Override
  protected boolean validate(
    @NotNull PsiAnnotation psiAnnotation, @NotNull PsiClass psiClass, @NotNull ProblemSink builder
  )