private static <T extends Enum<T>> @NotNull T getEnumValue(@NotNull List<MarkupNode> markupNodes, @NotNull String tagName,
                                                    @Nullable Attribute attribute, @NotNull Class<T> enumClass, @NotNull T defaultValue) {
    if (attribute == null) return defaultValue;
    T value = ContainerUtil.find(enumClass.getEnumConstants(), val -> val.name().toLowerCase(Locale.ROOT).equals(attribute.value()));
    if (value == null) {
      markupNodes.add(
        new ErrorMarkup(attribute.range(), JavaBundle.message(
          "javadoc.snippet.error.unknown.enum.value",
          tagName, attribute.key(), attribute.value(),
          StreamEx.of(enumClass.getEnumConstants()).map(val -> "'" + val.name().toLowerCase(Locale.ROOT) + "'")
            .collect(NlsMessages.joiningAnd()))));
      return defaultValue;
    }
    return value;
  }
private static <T extends Enum<T>> @NotNull T getEnumValue(@NotNull List<MarkupNode> markupNodes, @NotNull String tagName,
                                                    @Nullable Attribute attribute, @NotNull Class<T> enumClass, @NotNull T defaultValue)