ShapeStack(Iterable<ShapePart> children) : children = List.unmodifiable(children) { if (this.children.isEmpty) throw ArgumentError('A stack requires children'); }