|  | struct StructB | 
|  | { | 
|  | 1: string x | 
|  | } | 
|  |  | 
|  | struct StructA | 
|  | { | 
|  | 1: string a, | 
|  | 2: binary b, | 
|  | 3: optional string c, | 
|  | 4: optional binary d, | 
|  | 5: required string e, | 
|  | 6: required binary f, | 
|  | 7: string g = "foo", | 
|  | 8: i32 h, | 
|  | 9: optional i32 i, | 
|  | 10: required i32 j, | 
|  | 11: required i32 k = 5, | 
|  | 12: double l, | 
|  | 13: optional double m, | 
|  | 14: required double n, | 
|  | 15: double o = 3.14159, | 
|  | 16: list<string> string_list, | 
|  | 17: list<byte> byte_list = [1, 2, 3], | 
|  | 18: required list<string> rsl, | 
|  | 19: optional list<string> osl, | 
|  | 20: set<string> string_set, | 
|  | 21: required set<string> rss, | 
|  | 22: optional set<string> oss, | 
|  | 23: map<string, string> string_map, | 
|  | 24: required map<string, string> rsm, | 
|  | 25: optional map<string, string> osm, | 
|  | 26: StructB structb | 
|  | } |