Map<String, dynamic> asMap() { return {"name": name, "columns": columns.map((c) => c.asMap()).toList()}; }