}
T object = constructor.newInstance();
for (Map.Entry<String, FieldDeserializer> entry : setters.entrySet()) {
String key = entry.getKey();
FieldDeserializer fieldDeser = entry.getValue();
if (map.containsKey(key)) {
Object value = map.get(key);
Method method = fieldDeser.getMethod();
if (method != null) {
Type paramType = method.getGenericParameterTypes()[0];
value = cast(value, paramType, mapping);
method.invoke(object, new Object[] { value });
} else {
Field field = fieldDeser.getField();
Type paramType = field.getGenericType();
value = cast(value, paramType, mapping);
field.set(object, value);
}