code: public synchronized void onPropertyValueChanged(Property property, Object oldValue, Object newValue) {
          if (!configuration.isUseGc()) {
              return;
          }
          removeReferenceAndCheckForGC(property, oldValue);
  
          if (newValue != null && DolphinUtils.isDolphinBean(newValue.getClass())) {
              Instance instance = getInstance(newValue);
              Reference reference = new PropertyReference(propertyToParent.get(property), property, instance);
              if (reference.hasCircularReference()) {
                  throw new CircularDependencyException("Circular dependency detected!");
              }
              instance.getReferences().add(reference);
              removeFromGC(instance);
          }
      }
docs: This method must be called for each value change of a {@link Property}
  
  @param property the property
  @param oldValue the old value
  @param newValue the new value