@classmethod
def from_nested_parenthesis(cls, nested_parenthesis):
    """
        Initiate recursively a tree with tuple (node, (left value, right value))

        :example:

        >>> nested_par = ("+", (1, 2))
        >>> t = Tree.from_nested_parenthesis(nested_par)
        >>> t.node
        '+'
        >>> t.left_value
        1
        >>> t.right_value
        2
        >>> nested_par = ("+", (
        ...    ("*", (3, 4)),
        ...    2))
        >>> t = Tree.from_nested_parenthesis(nested_par)
        >>> t.node
        '+'
        >>> type(t.left_value)
        <class 'mapytex.calculus.core.tree.Tree'>
        >>> t.right_value
        2

        """
    try:
        nested_len = len(nested_parenthesis)
        num_len = len(nested_parenthesis[1])
    except TypeError:
        raise ValueError('Nested parenthesis are not composed of lists')
    if nested_len != 2 and num_len != 2:
        raise ValueError("Nested parenthesis don't have right shape")
    node = nested_parenthesis[0]
    try:
        left_value = cls.from_nested_parenthesis(nested_parenthesis[1][0])
    except ValueError:
        left_value = nested_parenthesis[1][0]
    try:
        right_value = cls.from_nested_parenthesis(nested_parenthesis[1][1])
    except ValueError:
        right_value = nested_parenthesis[1][1]
    return cls(node, left_value, right_value)
