code: def update(self, properties=None):
          # pylint: disable=W0212
          
          with self.__lock:
              # Update properties
              if self.__properties_update(properties):
                  # Update configurations, if something changed
                  self.__config_admin._update(self)
docs: 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