def declarative_change_handler(change):
    """ A static observer which writes to a declarative engine.

    This handler will write the change to the declarative engine
    so that the engine can notify any bound expressions. This handler
    is attached by the DeclarativeMeta class.

    Parameters
    ----------
    change : dict
        The change dictionary generated by the notification.

    """
    change_t = change['type']
    if change_t == 'update' or change_t == 'event' or change_t == 'property':
        owner = change['object']
        engine = owner._d_engine
        if engine is not None:
            engine.write(owner, change['name'], change)
