code: def starlike(x):
    "weird things happen to cardinality when working with * in comma-lists. this detects when to do that."
    # todo: is '* as name' a thing?
    return isinstance(x,sqparse2.AsterX) or isinstance(x,sqparse2.AttrX) and isinstance(x.attr,sqparse2.AsterXf starlike(x):
    "weird things happen to cardinality when working with * in comma-lists. this detects when to do that."
    # todo: is '* as name' a thing?
    return isinstance(x,sqparse2.AsterX) or isinstance(x,sqparse2.AttrX) and isinstance(x.attr,sqparse2.AsterX)
docs: weird things happen to cardinality when working with * in comma-lists. this detects when to do that.