<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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()