code: def aba_parameters(self):
          
          ABA_MAP = {
              AdjustBoundaryAlgorithm.AFTERCURRENT: [self[gc.PPN_TASK_ADJUST_BOUNDARY_AFTERCURRENT_VALUE]],
              AdjustBoundaryAlgorithm.AUTO: [],
              AdjustBoundaryAlgorithm.BEFORENEXT: [self[gc.PPN_TASK_ADJUST_BOUNDARY_BEFORENEXT_VALUE]],
              AdjustBoundaryAlgorithm.OFFSET: [self[gc.PPN_TASK_ADJUST_BOUNDARY_OFFSET_VALUE]],
              AdjustBoundaryAlgorithm.PERCENT: [self[gc.PPN_TASK_ADJUST_BOUNDARY_PERCENT_VALUE]],
              AdjustBoundaryAlgorithm.RATE: [self[gc.PPN_TASK_ADJUST_BOUNDARY_RATE_VALUE]],
              AdjustBoundaryAlgorithm.RATEAGGRESSIVE: [self[gc.PPN_TASK_ADJUST_BOUNDARY_RATE_VALUE]]
          }
          aba_algorithm = self[gc.PPN_TASK_ADJUST_BOUNDARY_ALGORITHM] or AdjustBoundaryAlgorithm.AUTO
          ns_min = self[gc.PPN_TASK_ADJUST_BOUNDARY_NONSPEECH_MIN]
          ns_string = self[gc.PPN_TASK_ADJUST_BOUNDARY_NONSPEECH_STRING]
          nozero = self[gc.PPN_TASK_ADJUST_BOUNDARY_NO_ZERO] or False
          return {
              "algorithm": (aba_algorithm, ABA_MAP[aba_algorithm]),
              "nonspeech": (ns_min, ns_string),
              "nozero": nozero
          }
docs: Return a dictionary representing the
          :class:`~aeneas.adjustboundaryalgorithm.AdjustBoundaryAlgorithm`
          parameters stored in this task configuration.
  
          Available keys:
  
          * ``algorithm``, tuple: (string, list)
          * ``nonspeech``, tuple: (TimeValue or None, string)
          * ``nozero``, bool
  
          :rtype: dict