code: public void populate(Object bean) {
          Objects.requireNonNull(bean);
          compileProperties(bean.getClass());
  
          Class<?> clazz = bean.getClass();
  
          while (clazz != Object.class) {
              Map<Field, PropertyInfo> propertyInfoMap = resolve(clazz.getDeclaredFields());
  
              for (Field field : propertyInfoMap.keySet()) {
                  PropertyInfo info = propertyInfoMap.get(field);
                  setValueToField(field, bean, info.getValue());
              }
              clazz = clazz.getSuperclass();
          }
      }
docs: Populate given bean using properties from {@link #defaults} and
  {@link PropertyProvider#provide(ClassLoader, Class)}