docs: def check_all_features_are_same_type(self, ds):
          """
          Check that the feature types in a dataset are all the same.
  
          9.1 The features contained within a collection must always be of the same type; and all the collections in a CF file
          must be of the same feature type.
  
          point, timeSeries, trajectory, profile, timeSeriesProfile, trajectoryProfile.
  
          The space-time coordinates that are indicated for each feature are mandatory.  However a featureType may also include
          other space-time coordinates which are not mandatory (notably the z coordinate).
  
          :param netCDF4.Dataset ds: An open netCDF dataset
          :rtype: compliance_checker.base.Result
          """
          all_the_same = TestCtx(BaseCheck.HIGH,
                                 self.section_titles['9.1'])
          feature_types_found = defaultdict(list)
          for name in self._find_geophysical_vars(ds):
              feature = cfutil.guess_feature_type(ds, name)
              # If we can't figure out the feature type, don't penalize, just
              # make a note of it in the messages
              if feature is not None:
                  feature_types_found[feature].append(name)
              else:
                  all_the_same.messages.append("Unidentifiable feature for variable {}"
                                               "".format(name))
          feature_description = ', '.join(['{} ({})'.format(ftr, ', '.join(vrs)) for ftr, vrs in feature_types_found.items()])
  
          all_the_same.assert_true(len(feature_types_found) < 2,
                                   "Different feature types discovered in this dataset: {}"
                                   "".format(feature_description))
  
          return all_the_same.to_result()