def __init__(self, start=None, resume=False, single=False,
                 *args, **kwargs):
        if resume and not start:
            raise ValueError('Cannot resume without a start test given.')
        # Initialise.
        unittest.TestSuite.__init__(self, *args, **kwargs)

        # Add the required set of non-optional, initialising tests depending on
        # whether the testing is to be resumed after a prior failed test run or
        # not.  NB: this set of tests precedes the test given with 'start' (or
        # test 0 if 'start' not given).
        for case in (self.test_start, self.test_restart)[resume]:
            self.addTest(unittest.TestLoader().loadTestsFromTestCase(case))
        # Load the first (after the required start/restart set) test (and the
        # remaining tests in case of single not true.  This is either test 0 or
        # the test given with 'start'.
        if start:
            # Find indices for the given (in the 'TestCase.test_method format')
            # start method.  The first index we need points to the given test
            # case (stored in self.test_list).  The second one is the index of
            # the given test method (on a sorted list of all test methods
            # defined in the test case class).
            start_indices = self._get_case_and_method_indices(start)
        else:
            start_indices = 0, 0
        # Load the given start, or the test with index 0, 0.
        method_list = list(
            unittest.TestLoader().loadTestsFromTestCase(
                self.test_list[start_indices[0]])
        )
        # We want all the subsequent methods from the selected test
        # case unless single is True, in which case we do not want to load any
        # more methods.
        last_method_index = start_indices[1] + 1 if single else None
        self.addTests(
            list(method_list)[start_indices[1]:last_method_index]
        )

        # When appropriate, load tests from all the remaining (sans stop) test
        # cases.
        # We do not want to load any other (than the stop) tests in case of
        # single.
        if single:
            end_case_index = start_indices[0]
        else:
            end_case_index = len(self.test_list)
        for i in range(start_indices[0] + 1, end_case_index):
            self.addTest(unittest.TestLoader().loadTestsFromTestCase(
                self.test_list[i]))

        # Add the required end test(s).
        for case in self.test_stop:
            self.addTest(unittest.TestLoader().loadTestsFromTestCase(case))