Object (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; }