
Tuple Expr: Join Group, Union, Statement Pattern, Constraint
TupleExpr = IBindingsProducerNode?
ValueExpr = IValueExpressionNode?

Only an IGroupNode can have children (Union, Join Group), 
and those children will be IBindingsProducerNodes 
(other groups, statements patterns, constraints)

IGroupNode:
-children: IBindingsProducerNode[]
-group ID?

IBindingsProducerNode:
-parent: IGroupNode

abstractBindingsProducerNode
-setParent(IGroupNode)

abstract GroupNodeBase Iterable<IBindingsProdu