} else if (clazz.isPrimitive()) {
return new PrimitiveValueWriter(name, clazz, currentDepth, this);
} else if (Number.class.isAssignableFrom(clazz)) {
return new PrimitiveValueWriter(name, clazz, currentDepth, this);
} else if (clazz.equals(String.class)) {
return new StringValueWriter(name, clazz, currentDepth, this);
} else if (clazz.isEnum()) {
return new EnumValueWriter(name, clazz, currentDepth, this);
} else if (List.class.isAssignableFrom(clazz)) {
return new ListWriter(name, clazz, currentDepth, paramNameIndex, this);
}