code: private Object parseBean(Map<String, Object> input, Class<?> beanType) throws Exception {
          String propName = "";
          try {
              SerDeserializer deser = settings.getDeserializers().findDeserializer(beanType);
              MetaBean metaBean = deser.findMetaBean(beanType);
              BeanBuilder<?> builder = deser.createBuilder(beanType, metaBean);
              for (Entry<String, Object> entry : input.entrySet()) {
                  // property name
                  propName = entry.getKey();
                  MetaProperty<?> metaProp = deser.findMetaProperty(beanType, metaBean, propName);
                  // ignore unknown properties
                  if (metaProp != null && !metaProp.style().isDerived()) {
                      Object value = parseObject(
                              entry.getValue(), SerOptional.extractType(metaProp, beanType), metaProp, beanType, null);
                      deser.setValue(builder, metaProp, SerOptional.wrapValue(metaProp, beanType, value));
                  }
                  propName = "";
              }
              return deser.build(beanType, builder);
          } catch (Exception ex) {
              throw new IllegalArgumentException(
                      "Error parsing bean: " + beanType.getName() + "::" + propName + ", " + ex.getMessage(), ex);
          }
      }
docs: parse a bean, event after object start passed in