@Contract(pure = true)
  public static @NotNull <T extends Enum<T>> OptDropdown dropdown(@Language("jvm-field-name") @NotNull String bindId,
                                                                  @NotNull @NlsContexts.Label String splitLabel,
                                                                  @NotNull Class<T> enumClass,
                                                                  @NotNull Function<@NotNull T, @NotNull @Nls String> presentableTextExtractor) {
    return new OptDropdown(bindId, new PlainMessage(splitLabel),
                           ContainerUtil.map(enumClass.getEnumConstants(), c -> option(c, presentableTextExtractor.apply(c))));
  }
@Contract(pure = true)
  public static @NotNull <T extends Enum<T>> OptDropdown dropdown(@Language("jvm-field-name") @NotNull String bindId,
                                                                  @NotNull @NlsContexts.Label String splitLabel,
                                                                  @NotNull Class<T> enumClass,
                                                                  @NotNull Function<@NotNull T, @NotNull @Nls String> presentableTextExtractor)