code: def add_property(self, name, value):
          # type: (str, object) -> bool
          
          with self.__properties_lock:
              if name in self.__properties:
                  # Already stored property
                  return False
  
              self.__properties[name] = value
              return True
docs: Adds a property to the framework **if it is not yet set**.
  
          If the property already exists (same name), then nothing is done.
          Properties can't be updated.
  
          :param name: The property name
          :param value: The value to set
          :return: True if the property was stored, else False