<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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()