docs: def make_data_splits(self, max_samples: int) -> None:
          """ Splits the utterances into training, validation and test sets."""
  
          train_f_exists = self.train_prefix_fn.is_file()
          valid_f_exists = self.valid_prefix_fn.is_file()
          test_f_exists = self.test_prefix_fn.is_file()
  
          if train_f_exists and valid_f_exists and test_f_exists:
              logger.debug("Split for training, validation and tests specified by files")
              self.train_prefixes = self.read_prefixes(self.train_prefix_fn)
              self.valid_prefixes = self.read_prefixes(self.valid_prefix_fn)
              self.test_prefixes = self.read_prefixes(self.test_prefix_fn)
              return
  
          # Otherwise we now need to load prefixes for other cases addressed
          # below
          prefixes = self.determine_prefixes()
          prefixes = utils.filter_by_size(
              self.feat_dir, prefixes, self.feat_type, max_samples)
  
          if not train_f_exists and not valid_f_exists and not test_f_exists:
              logger.debug("No files supplied to define the split for training, validation"
                           " and tests. Using default.")
              train_prefixes, valid_prefixes, test_prefixes = self.divide_prefixes(prefixes)
              self.train_prefixes = train_prefixes
              self.valid_prefixes = valid_prefixes
              self.test_prefixes = test_prefixes
              self.write_prefixes(train_prefixes, self.train_prefix_fn)
              self.write_prefixes(valid_prefixes, self.valid_prefix_fn)
              self.write_prefixes(test_prefixes, self.test_prefix_fn)
          elif not train_f_exists and valid_f_exists and test_f_exists:
              # Then we just make all other prefixes training prefixes.
              self.valid_prefixes = self.read_prefixes(self.valid_prefix_fn)
              self.test_prefixes = self.read_prefixes(self.test_prefix_fn)
              train_prefixes = list(
                  set(prefixes) - set(self.valid_prefixes))
              self.train_prefixes = list(
                  set(train_prefixes) - set(self.test_prefixes))
              self.write_prefixes(self.train_prefixes, self.train_prefix_fn)
          else:
              raise NotImplementedError(
                  "The following case has not been implemented:" + 
                  "{} exists - {}\n".format(self.train_prefix_fn, train_f_exists) +
                  "{} exists - {}\n".format(self.valid_prefix_fn, valid_f_exists) +
                  "{} exists - {}\n".format(self.test_prefix_fn, test_f_exists))