private static <T extends JavaRunConfigurationBase, E extends JComponent, C extends JComponent & TextAccessor>
  @NotNull SettingsEditorFragment<T, E> createVmOptionsFragment(@NotNull @Nls String group,
                                                                @NotNull E vmOptions,
                                                                @NotNull Function<E, C> textAccessorGetter) {
    SettingsEditorFragment<T, E> vmParameters =
      new SettingsEditorFragment<>("vmParameters", ExecutionBundle.message("run.configuration.java.vm.parameters.name"), group, vmOptions,
                                   15,
                                   (configuration, c) -> textAccessorGetter.apply(c).setText(configuration.getVMParameters()),
                                   (configuration, c) -> configuration.setVMParameters(
                                     c.isVisible() ? textAccessorGetter.apply(c).getText() : null),
                                   configuration -> StringUtil.isNotEmpty(configuration.getVMParameters()));
    vmParameters.setHint(ExecutionBundle.message("run.configuration.java.vm.parameters.hint"));
    vmParameters.setActionHint(ExecutionBundle.message("specify.vm.options.for.running.the.application"));
    vmParameters.setEditorGetter(textAccessorGetter);
    return vmParameters;
  }
private static <T extends JavaRunConfigurationBase, E extends JComponent, C extends JComponent & TextAccessor>
  @NotNull SettingsEditorFragment<T, E> createVmOptionsFragment(@NotNull @Nls String group,
                                                                @NotNull E vmOptions,
                                                                @NotNull Function<E, C> textAccessorGetter)