<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def update(self, properties=None):
 # pylint: disable=W0212 """ If called without properties, only notifies listeners Update the properties of this Configuration object. Stores the properties in persistent storage after adding or overwriting the following properties: * "service.pid" : is set to be the PID of this configuration. * "service.factoryPid" : if this is a factory configuration it is set to the factory PID else it is not set. These system properties are all of type String. If the corresponding Managed Service/Managed Service Factory is registered, its updated method must be called asynchronously. Else, this callback is delayed until aforementioned registration occurs. Also initiates an asynchronous call to all ConfigurationListeners with a ConfigurationEvent.CM_UPDATED event. :param properties: the new set of properties for this configuration :raise IOError: Error storing the configuration """

        with self.__lock:
            # Update properties
            if self.__properties_update(properties):
                # Update configurations, if something changed
                self.__config_admin._update(self)