docs: def get_unit_property_names(self, unit_id=None):
          '''Get a list of property names for a given unit, or for all units if unit_id is None
  
          Parameters
          ----------
          unit_id: int
              The unit id for which the property names will be returned
              If None (default), will return property names for all units
          Returns
          ----------
          property_names
              The list of property names from the specified unit(s)
          '''
          if unit_id is None:
              property_names = []
              for unit_id in self.get_unit_ids():
                  curr_property_names = self.get_unit_property_names(unit_id)
                  for curr_property_name in curr_property_names:
                      property_names.append(curr_property_name)
              property_names = sorted(list(set(property_names)))
              return property_names
          if isinstance(unit_id, (int, np.integer)):
              if unit_id in self.get_unit_ids():
                  if unit_id not in self._unit_properties:
                      self._unit_properties[unit_id] = {}
                  property_names = sorted(self._unit_properties[unit_id].keys())
                  return property_names
              else:
                  raise ValueError(str(unit_id) + " is not a valid unit_id")
          else:
              raise ValueError(str(unit_id) + " must be an int")