Compute all the possible unique texts

    @type text: str
    @param text: Text written used spin syntax

    @type final: list
    @param final: An empty list where all the unique texts will be stored
    @return: Nothing. The result will be in the 'final' list

def _all_unique_texts(text, final):
    """
    Compute all the possible unique texts

    @type text: str
    @param text: Text written used spin syntax

    @type final: list
    @param final: An empty list where all the unique texts will be stored
    @return: Nothing. The result will be in the 'final' list
    """
    if not char_opening in text:
        if not text in final:
            final.append(text)
        return

    stack = []
    indexes = []
    for i, c in enumerate(text):
        if c == char_closing:
            if stack[-1] == char_opening:
                start_index = indexes.pop()
                substring = '' if i == start_index + 1 else text[start_index:i + 1]
                # get some random combination
                combination = next(_choices(substring))
                new_text = text.replace(substring, combination)
                _all_unique_texts(new_text, final)
                return
        elif c == char_opening:
            stack.append(c)
            indexes.append(i)