docs: def propertyNames(self):
          r"""
          Returns a generator of all distinct keys in the `Properties` object and
          its `defaults` (and its `defaults`\ ’s `defaults`, etc.) in unspecified
          order
  
          :rtype: generator of text strings
          """
          for k in self.data:
              yield k
          if self.defaults is not None:
              for k in self.defaults.propertyNames():
                  if k not in self.data:
                      yield k