def Update(method):
    # pylint: disable=C0103
    """
    The ``@Update`` callback decorator is called when the properties of an
    injected service have been modified.

    The decorated method must accept the injected service object and its
    :class:`~pelix.framework.ServiceReference` and the previous properties
    as arguments::

       @Update
       def update_method(self, service, service_reference, old_properties):
           '''
           service: The injected service instance.
           service_reference: The injected service ServiceReference
           old_properties: The previous service properties
           '''
           # ...

    Exceptions raised by an update callback are ignored.

    :param method: The decorated method
    :raise TypeError: The decorated element is not a valid function
    """
    if not isinstance(method, types.FunctionType):
        raise TypeError("@Update can only be applied on functions")

    # Tests the number of parameters
    validate_method_arity(
        method, "service", "service_reference", "old_properties"
    )

    _append_object_entry(
        method,
        constants.IPOPO_METHOD_CALLBACKS,
        constants.IPOPO_CALLBACK_UPDATE,
    )
    return method
The ``@Update`` callback decorator is called when the properties of an
    injected service have been modified.

    The decorated method must accept the injected service object and its
    :class:`~pelix.framework.ServiceReference` and the previous properties
    as arguments::

       @Update
       def update_method(self, service, service_reference, old_properties):
           '''
           service: The injected service instance.
           service_reference: The injected service ServiceReference
           old_properties: The previous service properties
           '''
           # ...

    Exceptions raised by an update callback are ignored.

    :param method: The decorated method
    :raise TypeError: The decorated element is not a valid function