private List<TextureOptionValue> parseTextureOptions(final List<String> values) {
    final List<TextureOptionValue> matchList = new ArrayList<TextureOptionValue>();

    if (values.isEmpty() || values.size() == 1) {
      return matchList;
    }

    // Loop through all but the last value, the last one is going to be the path.
    for (int i = 0; i < values.size() - 1; i++) {
      final String value = values.get(i);
      final TextureOption textureOption = TextureOption.getTextureOption(value);

      if (textureOption == null
          && !value.contains("\\")
          && !value.contains("/")
          && !values.get(0).equals("Flip")
          && !values.get(0).equals("Repeat")) {
        logger.log(
            Level.WARNING,
            "Unknown texture option \"{0}\" encountered for \"{1}\" in material \"{2}\"",
            new Object[] {value, key, material.getKey().getName()});
      } else if (textureOption != null) {
        final String option = textureOption.getOptionValue(value);
        matchList.add(new TextureOptionValue(textureOption, option));
      }
    }

    return matchList;
  }
    public static TextureOption getTextureOption(final String option) {
      for (final TextureOption textureOption : TextureOption.values()) {
        if (option.startsWith(textureOption.name())) {
          return textureOption;
        }
      }

      return null;
    }
 public void applyToTexture(final Texture texture) {
   textureOption.applyToTexture(value, texture);
 }
 public void applyToTextureKey(final TextureKey textureKey) {
   textureOption.applyToTextureKey(value, textureKey);
 }