code: def _adjust_boundaries(self, boundary_indices, text_file, real_wave_mfcc, sync_root, force_aba_auto=False, leaf_level=False):
          
          # boundary_indices contains the boundary indices in the all_mfcc of real_wave_mfcc
          # starting with the (head-1st fragment) and ending with (-1th fragment-tail)
          aba_parameters = self.task.configuration.aba_parameters()
          if force_aba_auto:
              self.log(u"Forced running algorithm: 'auto'")
              aba_parameters["algorithm"] = (AdjustBoundaryAlgorithm.AUTO, [])
              # note that the other aba settings (nonspeech and nozero)
              # remain as specified by the user
          self.log([u"ABA parameters: %s", aba_parameters])
          aba = AdjustBoundaryAlgorithm(rconf=self.rconf, logger=self.logger)
          aba.adjust(
              aba_parameters=aba_parameters,
              real_wave_mfcc=real_wave_mfcc,
              boundary_indices=boundary_indices,
              text_file=text_file,
              allow_arbitrary_shift=leaf_level
          )
          aba.append_fragment_list_to_sync_root(sync_root=sync_root)
docs: Adjust boundaries as requested by the user.
  
          Return the computed time map, that is,
          a list of pairs ``[start_time, end_time]``,
          of length equal to number of fragments + 2,
          where the two extra elements are for
          the HEAD (first) and TAIL (last).