private <T, S extends ResponseObjectBuilder<T>> T parseMap(
     S builder, Map<String, Reply> response) {
   for (Map.Entry<String, Reply> entry : response.entrySet()) {
     String method = buildSetterName(entry.getKey());
     Class valueType = getObjectClass(entry.getValue());
     builder.set(method, entry.getValue(), valueType);
   }
   return builder.build();
 }
 public <T, S extends ResponseObjectBuilder<T>> T parse(S builder, Object response) {
   return response instanceof Map
       ? parseMap(builder, (Map<String, Reply>) response)
       : builder.build();
 }