For various nefarious reaons, the reference parser has decided to implement
            And(And(a, b), c) --> And(a, b, c).  We've got to do the same

def _and_collapser(container: ShapeAnd, containee: shapeExpr) -> None:
        """ For various nefarious reaons, the reference parser has decided to implement
            And(And(a, b), c) --> And(a, b, c).  We've got to do the same
        """
        if isinstance(containee, ShapeAnd):
            for expr in containee.shapeExprs:
                container.shapeExprs.append(expr)
        else:
            container.shapeExprs.append(containee)