private static Object[] processValues(Field field, Selection selection) {
    FieldType type = TypeUtil.getFieldType(field.getType());
    switch (type) {
      case INTEGER:
        return processIntegerValues(selection);
      case DOUBLE:
        return processDoubleValues(selection);
      case LONG:
        return processLongValues(selection);
      case DATE:
        return processDateValues(selection);
      case LOCALE:
        return processLocaleValues(selection);
      case TIMEZONE:
        return processTimeZoneValues(selection);
      case UUID:
        return processUUIDValues(selection);
      case STRING:
        return selection.values();
    }
    throw new UnsupportedOperationException("@Selection of type: " + field.getType().getSimpleName() + " is not currently supported");
  }