docs: def properties(self):
          '''
          This is a lazily loaded dictionary containing the launchd runtime
          information of the job in question. Internally, this is retrieved
          using ServiceManagement.SMJobCopyDictionary(). Keep in mind that
          some dictionary keys are not always present (for example 'PID').
          If the job specified by the label cannot be found in launchd, then
          this method raises a ValueError exception.
          '''
          if hasattr(self, '_nsproperties'):
              self._properties = convert_NSDictionary_to_dict(self._nsproperties)
              del self._nsproperties
              #self._nsproperties = None
          if self._properties is None:
              self.refresh()
          return self._properties