docs: def reload(self):
          """
          Create a new partition scheme. A scheme defines which utterances are in which partition.
          The scheme only changes after every call if ``self.shuffle == True``.
  
          Returns:
              list: List of PartitionInfo objects, defining the new partitions (same as ``self.partitions``)
          """
  
          # Create the order in which utterances will be loaded
          utt_ids = sorted(self.utt_ids)
  
          if self.shuffle:
              self.rand.shuffle(utt_ids)
  
          partitions = []
  
          current_partition = PartitionInfo()
  
          for utt_id in utt_ids:
              utt_size = self.utt_sizes[utt_id]
              utt_lengths = self.utt_lengths[utt_id]
  
              # We add utterance to the partition as long the partition-size is not exceeded
              # Otherwise we start with new partition.
              if current_partition.size + utt_size > self.partition_size:
                  partitions.append(current_partition)
                  current_partition = PartitionInfo()
  
              current_partition.utt_ids.append(utt_id)
              current_partition.utt_lengths.append(utt_lengths)
              current_partition.size += utt_size
  
          if current_partition.size > 0:
              partitions.append(current_partition)
  
          self.partitions = partitions
          return self.partitions