Splits the Stack, either in half, or at the given indice, into two
        separate Stacks.

        :arg int indice:
            Optional. The indice to split the Stack at. Defaults to the middle
            of the ``Stack``.

        :returns:
            The two parts of the Stack, as separate Stack instances.

def split(self, indice=None):
        """
        Splits the Stack, either in half, or at the given indice, into two
        separate Stacks.

        :arg int indice:
            Optional. The indice to split the Stack at. Defaults to the middle
            of the ``Stack``.

        :returns:
            The two parts of the Stack, as separate Stack instances.

        """
        self_size = self.size
        if self_size > 1:
            if not indice:
                mid = self_size // 2
                return Stack(cards=self[0:mid]), Stack(cards=self[mid::])
            else:
                return Stack(cards=self[0:indice]), Stack(cards=self[indice::])
        else:
            return Stack(cards=self.cards), Stack()