def changed(self, message=None, *args):
if message is not None:<EOL><INDENT>self.logger.debug('<STR_LIT>', self._repr(), message % args)<EOL><DEDENT>self.logger.debug('<STR_LIT>', self._repr())<EOL>if self.parent is not None:<EOL><INDENT>self.parent.changed()<EOL><DEDENT>elif isinstance(self, Mutable):<EOL><INDENT>super(TrackedObject, self).changed()<EOL><DEDENT>
Marks the object as changed.

        If a `parent` attribute is set, the `changed()` method on the parent
        will be called, propagating the change notification up the chain.

        The message (if provided) will be debug logged.