Yes tuples are allowed and there is no need for double `(())` as it's ugly.
How about this syntax: case mytree of StrValue as s: # if s is of type string of Minus as m: # then m is of type UnaryOp # or of Minus as (m): # unpacking, m is of type Tree of IfStmt as (cond, le, ri): # unpacking Run