docs: public void registerProperty(Object instance, String propertyName, boolean override) {
          if (registeredProperties == null) {
              registeredProperties = new HashMap<>();
          }
  
          if (instance == null) {
              registeredProperties.remove(propertyName);
          } else {
              Object oldInstance = registeredProperties.get(propertyName);
              PropertyProxy proxy = oldInstance instanceof PropertyProxy ? (PropertyProxy) oldInstance : null;
  
              if (!override && oldInstance != null && proxy == null) {
                  return;
              }
  
              registeredProperties.put(propertyName, instance);
  
              // If previous registrant was a property proxy, transfer its value to new registrant.
              if (proxy != null) {
                  try {
                      proxy.getPropertyInfo().setPropertyValue(instance, proxy.getValue());
                  } catch (Exception e) {
                      throw createChainedException("Register Property", e, null);
                  }
              }
          }
      }