Polygon(Iterable<Point> points) : _points = List.unmodifiable(points) { if (_points.isEmpty) { throw ArgumentError('$runtimeType: at least one point required'); } }