code: def _field_property_generator(self, public_properties):
          
          # Local variable, to avoid messing with "self"
          stored_instance = self._ipopo_instance
  
          # Choose public or hidden properties
          # and select the method to call to notify about the property update
          if public_properties:
              properties = stored_instance.context.properties
              update_notifier = stored_instance.update_property
          else:
              # Copy Hidden properties and remove them from the context
              properties = stored_instance.context.grab_hidden_properties()
              update_notifier = stored_instance.update_hidden_property
  
          def get_value(_, name):
              """
              Retrieves the property value, from the iPOPO dictionaries
  
              :param name: The property name
              :return: The property value
              """
              return properties.get(name)
  
          def set_value(_, name, new_value):
              """
              Sets the property value and trigger an update event
  
              :param name: The property name
              :param new_value: The new property value
              """
              assert stored_instance.context is not None
  
              # Get the previous value
              old_value = properties.get(name)
              if new_value != old_value:
                  # Change the property
                  properties[name] = new_value
  
                  # New value is different of the old one, trigger an event
                  update_notifier(name, old_value, new_value)
  
              return new_value
  
          return get_value, set_value
docs: Generates the methods called by the injected class properties
  
          :param public_properties: If True, create a public property accessor,
                                    else an hidden property accessor
          :return: getter and setter methods