docs: def get_unit_spike_feature_names(self, unit_id=None):
          '''This function returns the names of spike features for a single
          unit or across all units (depending on the given unit_id).
  
          Returns
          ----------
          spike_features: list
              A list of string names for each feature in the specified unit.
  
          unit_id: int
              The unit_id for which the feature names will be returned. If None,
              the function will return all feature names across all units).
          '''
          if unit_id is None:
              feature_names = []
              for unit_id in self.get_unit_ids():
                  curr_feature_names = self.get_unit_spike_feature_names(unit_id)
                  for curr_feature_name in curr_feature_names:
                      feature_names.append(curr_feature_name)
              feature_names = sorted(list(set(feature_names)))
              return feature_names
          if isinstance(unit_id, (int, np.integer)):
              if unit_id in self.get_unit_ids():
                  if unit_id not in self._unit_features:
                      self._unit_features[unit_id] = {}
                  feature_names = sorted(self._unit_features[unit_id].keys())
                  return feature_names
              else:
                  raise ValueError(str(unit_id) + " is not a valid unit_id")
          else:
              raise ValueError(str(unit_id) + " must be an int")