code: def union(self, csg):
          
          a = BSPNode(self.clone().polygons)
          b = BSPNode(csg.clone().polygons)
          a.clipTo(b)
          b.clipTo(a)
          b.invert()
          b.clipTo(a)
          b.invert()
          a.build(b.allPolygons());
          return CSG.fromPolygons(a.allPolygons())
docs: Return a new CSG solid representing space in either this solid or in the
          solid `csg`. Neither this solid nor the solid `csg` are modified.::
          
              A.union(B)
          
              +-------+            +-------+
              |       |            |       |
              |   A   |            |       |
              |    +--+----+   =   |       +----+
              +----+--+    |       +----+       |
                   |   B   |            |       |
                   |       |            |       |
                   +-------+            +-------+