docs: def p_returnx(self,t):
      "opt_returnx : kw_returning commalist \n | "
      # note: this gets weird because '(' commalist ')' is an expression but we need bare commalist to support non-paren returns
      t[0] = None if len(t)==1 else ReturnX(t[2].children[0] if len(t[2].children)==1 else t[2])