also firing property change notifications for indirectly related properties
keeping track of active setters to prevent duplicate property change notifications
detecting circular dependencies between properties at import-time (assert)