/**
  * @param genericKey
  * @return
  * @throws KeyNotFoundException
  */
 public TagField getFirstField(FieldKey genericKey) throws KeyNotFoundException {
   if (supportedKeys.contains(genericKey)) {
     return getFirstField(genericKey.name());
   } else {
     throw new UnsupportedOperationException(ErrorMessage.GENERIC_NOT_SUPPORTED.getMsg());
   }
 }
 public String getValue(FieldKey genericKey, int index) throws KeyNotFoundException {
   if (supportedKeys.contains(genericKey)) {
     return getItem(genericKey.name(), index);
   } else {
     throw new UnsupportedOperationException(ErrorMessage.GENERIC_NOT_SUPPORTED.getMsg());
   }
 }
 /**
  * @param genericKey The field id.
  * @return
  * @throws KeyNotFoundException
  */
 public List<TagField> getFields(FieldKey genericKey) throws KeyNotFoundException {
   List<TagField> list = fields.get(genericKey.name());
   if (list == null) {
     return new ArrayList<TagField>();
   }
   return list;
 }
 public TagField createField(FieldKey genericKey, String value)
     throws KeyNotFoundException, FieldDataInvalidException {
   if (supportedKeys.contains(genericKey)) {
     return new GenericTagTextField(genericKey.name(), value);
   } else {
     throw new UnsupportedOperationException(ErrorMessage.GENERIC_NOT_SUPPORTED.getMsg());
   }
 }
 public List<String> getAll(FieldKey genericKey) throws KeyNotFoundException {
   return super.getAll(genericKey.name());
 }