     }
     
     fileprivate init<S : Sequence>(solids: S) where S.Iterator.Element == ShapeRegion.Solid {
-        let solids = solids.filter { !$0.area.almostZero() }
+        let solids = Array(solids)
         self.solids = solids
         self.spacePartition = RectCollection(solids.map { $0.bigBound })
         self.boundary = solids.first.map { solids.dropFirst().reduce($0.boundary) { $0.union($1.boundary) } } ?? Rect()

    
    fileprivate init?<S : Sequence>(segments: S) where S.Element == Segment {
        
        var segments = Array(segments)
        
        guard segments.count > 0 else { return nil }
        

            segments.append(Segment(segments.last!.end, segments[0].start))
        }
        
        let solid = Shape.Component(start: segments[0].start, closed: true, segments: segments.map { $0.segment })
        
        guard !solid.area.almostZero() else { return nil }
        
        self.init(solid: solid)
    }
}

