<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def next_basis_label_or_index(self, label_or_index, n=1):
 """Given the label or index of a basis state, return the label the next basis state. More generally, if `n` is given, return the `n`'th next basis state label/index; `n` may also be negative to obtain previous basis state labels. Returns a :class:`str` label if `label_or_index` is a :class:`str` or :class:`int`, or a :class:`SpinIndex` if `label_or_index` is a :class:`SpinIndex`. Args: label_or_index (int or str or SpinIndex):
 If `int`, the zero-based index of a basis state; if `str`, the label of a basis state n (int):
 The increment Raises: IndexError: If going beyond the last or first basis state ValueError: If `label` is not a label for any basis state in the Hilbert space .BasisNotSetError: If the Hilbert space has no defined basis TypeError: if `label_or_index` is neither a :class:`str` nor an :class:`int`, nor a :class:`SpinIndex` Note: This differs from its super-method only by never returning an integer index (which is not accepted when instantiating a :class:`BasisKet` for a :class:`SpinSpace`) """

        if isinstance(label_or_index, int):
            new_index = label_or_index + n
            if new_index < 0:
                raise IndexError("index %d < 0" % new_index)
            if new_index >= self.dimension:
                raise IndexError(
                    "index %d out of range for basis %s"
                    % (new_index, self._basis))
            return self.basis_labels[new_index]
        elif isinstance(label_or_index, str):
            label_index = self.basis_labels.index(label_or_index)
            new_index = label_index + n
            if (new_index < 0) or (new_index >= len(self._basis)):
                raise IndexError(
                    "index %d out of range for basis %s"
                    % (new_index, self._basis))
            return self.basis_labels[new_index]
        elif isinstance(label_or_index, SpinIndex):
            return label_or_index.__class__(expr=label_or_index.expr + n)