# File lib/tapkit/control/description.rb, line 49
                def propagate_delete( object, editing_context )
                        # to-one
                        object.to_one_relationship_keys.each do |key|
                                delete_rule = object.delete_rule(key)

                                if delete_rule == Relationship::DELETE_RULE_DENY then
                                        next
                                end

                                if related = object.retrieve_stored_value(key) then
                                        related.will_read
                                else
                                        next
                                end

                                case delete_rule
                                when Relationship::DELETE_RULE_NULLIFY
                                        object.remove_object_from_both_sides_of_relationship(related, key)
                                when Relationship::DELETE_RULE_CASCADE
                                        object.remove_object_from_both_sides_of_relationship(related, key)
                                        editing_context.delete related
                                end
                        end

                        # to-many
                        object.to_many_relationship_keys.each do |key|
                                delete_rule = object.delete_rule(key)

                                if delete_rule == Relationship::DELETE_RULE_DENY then
                                        next
                                end

                                # copy related objects to an other array to delete
                                # to-many related objects.
                                related_objects = object.retrieve_stored_value key
                                related_objects.size # faulting
                                copied_objects = []
                                related_objects.each do |related_object|
                                        copied_objects << related_object
                                end

                                case delete_rule
                                when Relationship::DELETE_RULE_NULLIFY
                                        copied_objects.each do |related_object|
                                                object.remove_object_from_both_sides_of_relationship(
                                                        related_object, key)
                                        end
                                when Relationship::DELETE_RULE_CASCADE
                                        copied_objects.each do |related_object|
                                                object.remove_object_from_both_sides_of_relationship(
                                                        related_object, key)
                                                editing_context.delete related_object
                                        end
                                end
                        end
                end