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

def aba_parameters(self):
        """
        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
        """
        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
        }