@Override
  public List<Option> getOptions(int optionSetId, String key, Integer max) {
    List<Option> options = null;

    if (key != null || max != null) {
      // Use query as option set size might be very high

      options = optionStore.getOptions(optionSetId, key, max);
    } else {
      // Return all from object association to preserve custom order

      OptionSet optionSet = getOptionSet(optionSetId);

      options = new ArrayList<>(optionSet.getOptions());
    }

    return options;
  }
 @Override
 public void deleteOption(Option option) {
   optionStore.delete(option);
 }
 @Override
 public List<Option> getOptions(OptionSet optionSet, String option, Integer min, Integer max) {
   return i18n(i18nService, optionStore.getOptions(optionSet, option, min, max));
 }
 @Override
 public Option getOptionByCode(OptionSet optionSet, String name) {
   return i18n(i18nService, optionStore.getOptionByName(optionSet, name));
 }
 @Override
 public Option getOptionByCode(String code) {
   return i18n(i18nService, optionStore.getByCode(code));
 }
 @Override
 public Option getOption(int id) {
   return i18n(i18nService, optionStore.get(id));
 }
 @Override
 public void updateOption(Option option) {
   optionStore.update(option);
 }
 @Override
 public Integer getOptionSetsCountByName(String name) {
   return optionStore.getCountLikeName(name);
 }