@Override
  protected Object getValueOf(AbstractProperty property) {
    if (myModifications.containsKey(property)) return myModifications.get(property);
    AbstractProperty.AbstractPropertyContainer container = findContainerOf(property);
    if (container == null) return property.getDefault(this);
    Object originalValue = delegateGet(container, property);
    property.copy(originalValue);
    return originalValue;
  }
@Override
  protected Object getValueOf(AbstractProperty property)