docs: @SuppressWarnings("unchecked")
    public static void setFieldValues(Object object, String fieldName, String valuesString)
    {
      Converter converter = ConverterRegistry.getConverter();
      List<String> values = Strings.split(valuesString, ',');
  
      Field field = getField(object.getClass(), fieldName);
      Type type = field.getType();
      Object instance = null;
  
      if(Types.isArray(type)) {
        Class<?> componentType = field.getClass().getComponentType();
        instance = Array.newInstance(componentType, values.size());
        for(int i = 0; i < values.size(); i++) {
          Array.set(instance, i, converter.asObject(values.get(i), componentType));
        }
      }
      else if(Types.isCollection(type)) {
        Class<?> componentType = (Class<?>)((ParameterizedType)field.getGenericType()).getActualTypeArguments()[0];
        instance = newCollection(type);
        for(int i = 0; i < values.size(); i++) {
          ((Collection<Object>)instance).add(converter.asObject(values.get(i), componentType));
        }
      }
      else {
        throw new BugError("Cannot set values list to field type |%s|.", field.getType());
      }
  
      // at this point instance cannot be null
      setFieldValue(object, field, instance);
    }