docs: @Override
      public Object getPropertyValue(PropertyInfo propInfo) throws Exception {
          Object obj = registeredProperties == null ? null : registeredProperties.get(propInfo.getId());
  
          if (obj instanceof PropertyProxy) {
              Object value = ((PropertyProxy) obj).getValue();
              return value instanceof String ? propInfo.getPropertyType().getSerializer().deserialize((String) value) : value;
          } else {
              return obj == null ? null : propInfo.getPropertyValue(obj, obj == this);
          }
      }