Map<String, dynamic> toMap() { return { 'role': role, 'contents': contents.map((c) => c.toMap()).toList(), }; }