prost_reflect/reflect/
wkt.rs

1use crate::descriptor::types::descriptor_proto::ExtensionRange;
2use crate::descriptor::types::descriptor_proto::ReservedRange;
3use crate::descriptor::types::field_descriptor_proto::Label::*;
4use crate::descriptor::types::field_descriptor_proto::Type::*;
5use crate::descriptor::types::DescriptorProto;
6use crate::descriptor::types::EnumDescriptorProto;
7use crate::descriptor::types::EnumValueDescriptorProto;
8use crate::descriptor::types::FieldDescriptorProto;
9use crate::descriptor::types::FieldOptions;
10use crate::descriptor::types::FileDescriptorProto;
11use crate::descriptor::types::FileDescriptorSet;
12use crate::descriptor::types::FileOptions;
13use crate::descriptor::types::MessageOptions;
14use crate::descriptor::types::OneofDescriptorProto;
15use crate::descriptor::types::Options;
16use crate::prost_types::file_options::OptimizeMode::Speed;
17use crate::DescriptorError;
18use crate::{DescriptorPool, MessageDescriptor, ReflectMessage};
19
20#[allow(deprecated)]
21fn make_descriptor() -> FileDescriptorSet {
22    FileDescriptorSet {
23        file: vec![
24            FileDescriptorProto {
25                name: Some("google/protobuf/any.proto".into()),
26                package: Some("google.protobuf".into()),
27                dependency: vec![],
28                public_dependency: vec![],
29                weak_dependency: vec![],
30                message_type: vec![DescriptorProto {
31                    name: Some("Any".into()),
32                    field: vec![
33                        FieldDescriptorProto {
34                            name: Some("type_url".into()),
35                            number: Some(1),
36                            label: Some(Optional.into()),
37                            r#type: Some(String.into()),
38                            type_name: None,
39                            extendee: None,
40                            default_value: None,
41                            oneof_index: None,
42                            json_name: Some("typeUrl".into()),
43                            options: None,
44                            proto3_optional: None,
45                        },
46                        FieldDescriptorProto {
47                            name: Some("value".into()),
48                            number: Some(2),
49                            label: Some(Optional.into()),
50                            r#type: Some(Bytes.into()),
51                            type_name: None,
52                            extendee: None,
53                            default_value: None,
54                            oneof_index: None,
55                            json_name: Some("value".into()),
56                            options: None,
57                            proto3_optional: None,
58                        },
59                    ],
60                    extension: vec![],
61                    nested_type: vec![],
62                    enum_type: vec![],
63                    extension_range: vec![],
64                    oneof_decl: vec![],
65                    options: None,
66                    reserved_range: vec![],
67                    reserved_name: vec![],
68                }],
69                enum_type: vec![],
70                service: vec![],
71                extension: vec![],
72                options: Some(Options::from_prost(FileOptions {
73                    java_package: Some("com.google.protobuf".into()),
74                    java_outer_classname: Some("AnyProto".into()),
75                    java_multiple_files: Some(true),
76                    java_generate_equals_and_hash: None,
77                    java_string_check_utf8: None,
78                    optimize_for: None,
79                    go_package: Some("google.golang.org/protobuf/types/known/anypb".into()),
80                    cc_generic_services: None,
81                    java_generic_services: None,
82                    py_generic_services: None,
83                    php_generic_services: None,
84                    deprecated: None,
85                    cc_enable_arenas: None,
86                    objc_class_prefix: Some("GPB".into()),
87                    csharp_namespace: Some("Google.Protobuf.WellKnownTypes".into()),
88                    swift_prefix: None,
89                    php_class_prefix: None,
90                    php_namespace: None,
91                    php_metadata_namespace: None,
92                    ruby_package: None,
93                    uninterpreted_option: vec![],
94                })),
95                source_code_info: None,
96                syntax: Some("proto3".into()),
97            },
98            FileDescriptorProto {
99                name: Some("google/protobuf/source_context.proto".into()),
100                package: Some("google.protobuf".into()),
101                dependency: vec![],
102                public_dependency: vec![],
103                weak_dependency: vec![],
104                message_type: vec![DescriptorProto {
105                    name: Some("SourceContext".into()),
106                    field: vec![FieldDescriptorProto {
107                        name: Some("file_name".into()),
108                        number: Some(1),
109                        label: Some(Optional.into()),
110                        r#type: Some(String.into()),
111                        type_name: None,
112                        extendee: None,
113                        default_value: None,
114                        oneof_index: None,
115                        json_name: Some("fileName".into()),
116                        options: None,
117                        proto3_optional: None,
118                    }],
119                    extension: vec![],
120                    nested_type: vec![],
121                    enum_type: vec![],
122                    extension_range: vec![],
123                    oneof_decl: vec![],
124                    options: None,
125                    reserved_range: vec![],
126                    reserved_name: vec![],
127                }],
128                enum_type: vec![],
129                service: vec![],
130                extension: vec![],
131                options: Some(Options::from_prost(FileOptions {
132                    java_package: Some("com.google.protobuf".into()),
133                    java_outer_classname: Some("SourceContextProto".into()),
134                    java_multiple_files: Some(true),
135                    java_generate_equals_and_hash: None,
136                    java_string_check_utf8: None,
137                    optimize_for: None,
138                    go_package: Some(
139                        "google.golang.org/protobuf/types/known/sourcecontextpb".into(),
140                    ),
141                    cc_generic_services: None,
142                    java_generic_services: None,
143                    py_generic_services: None,
144                    php_generic_services: None,
145                    deprecated: None,
146                    cc_enable_arenas: None,
147                    objc_class_prefix: Some("GPB".into()),
148                    csharp_namespace: Some("Google.Protobuf.WellKnownTypes".into()),
149                    swift_prefix: None,
150                    php_class_prefix: None,
151                    php_namespace: None,
152                    php_metadata_namespace: None,
153                    ruby_package: None,
154                    uninterpreted_option: vec![],
155                })),
156                source_code_info: None,
157                syntax: Some("proto3".into()),
158            },
159            FileDescriptorProto {
160                name: Some("google/protobuf/type.proto".into()),
161                package: Some("google.protobuf".into()),
162                dependency: vec![
163                    "google/protobuf/any.proto".into(),
164                    "google/protobuf/source_context.proto".into(),
165                ],
166                public_dependency: vec![],
167                weak_dependency: vec![],
168                message_type: vec![
169                    DescriptorProto {
170                        name: Some("Type".into()),
171                        field: vec![
172                            FieldDescriptorProto {
173                                name: Some("name".into()),
174                                number: Some(1),
175                                label: Some(Optional.into()),
176                                r#type: Some(String.into()),
177                                type_name: None,
178                                extendee: None,
179                                default_value: None,
180                                oneof_index: None,
181                                json_name: Some("name".into()),
182                                options: None,
183                                proto3_optional: None,
184                            },
185                            FieldDescriptorProto {
186                                name: Some("fields".into()),
187                                number: Some(2),
188                                label: Some(Repeated.into()),
189                                r#type: Some(Message.into()),
190                                type_name: Some(".google.protobuf.Field".into()),
191                                extendee: None,
192                                default_value: None,
193                                oneof_index: None,
194                                json_name: Some("fields".into()),
195                                options: None,
196                                proto3_optional: None,
197                            },
198                            FieldDescriptorProto {
199                                name: Some("oneofs".into()),
200                                number: Some(3),
201                                label: Some(Repeated.into()),
202                                r#type: Some(String.into()),
203                                type_name: None,
204                                extendee: None,
205                                default_value: None,
206                                oneof_index: None,
207                                json_name: Some("oneofs".into()),
208                                options: None,
209                                proto3_optional: None,
210                            },
211                            FieldDescriptorProto {
212                                name: Some("options".into()),
213                                number: Some(4),
214                                label: Some(Repeated.into()),
215                                r#type: Some(Message.into()),
216                                type_name: Some(".google.protobuf.Option".into()),
217                                extendee: None,
218                                default_value: None,
219                                oneof_index: None,
220                                json_name: Some("options".into()),
221                                options: None,
222                                proto3_optional: None,
223                            },
224                            FieldDescriptorProto {
225                                name: Some("source_context".into()),
226                                number: Some(5),
227                                label: Some(Optional.into()),
228                                r#type: Some(Message.into()),
229                                type_name: Some(".google.protobuf.SourceContext".into()),
230                                extendee: None,
231                                default_value: None,
232                                oneof_index: None,
233                                json_name: Some("sourceContext".into()),
234                                options: None,
235                                proto3_optional: None,
236                            },
237                            FieldDescriptorProto {
238                                name: Some("syntax".into()),
239                                number: Some(6),
240                                label: Some(Optional.into()),
241                                r#type: Some(Enum.into()),
242                                type_name: Some(".google.protobuf.Syntax".into()),
243                                extendee: None,
244                                default_value: None,
245                                oneof_index: None,
246                                json_name: Some("syntax".into()),
247                                options: None,
248                                proto3_optional: None,
249                            },
250                        ],
251                        extension: vec![],
252                        nested_type: vec![],
253                        enum_type: vec![],
254                        extension_range: vec![],
255                        oneof_decl: vec![],
256                        options: None,
257                        reserved_range: vec![],
258                        reserved_name: vec![],
259                    },
260                    DescriptorProto {
261                        name: Some("Field".into()),
262                        field: vec![
263                            FieldDescriptorProto {
264                                name: Some("kind".into()),
265                                number: Some(1),
266                                label: Some(Optional.into()),
267                                r#type: Some(Enum.into()),
268                                type_name: Some(".google.protobuf.Field.Kind".into()),
269                                extendee: None,
270                                default_value: None,
271                                oneof_index: None,
272                                json_name: Some("kind".into()),
273                                options: None,
274                                proto3_optional: None,
275                            },
276                            FieldDescriptorProto {
277                                name: Some("cardinality".into()),
278                                number: Some(2),
279                                label: Some(Optional.into()),
280                                r#type: Some(Enum.into()),
281                                type_name: Some(".google.protobuf.Field.Cardinality".into()),
282                                extendee: None,
283                                default_value: None,
284                                oneof_index: None,
285                                json_name: Some("cardinality".into()),
286                                options: None,
287                                proto3_optional: None,
288                            },
289                            FieldDescriptorProto {
290                                name: Some("number".into()),
291                                number: Some(3),
292                                label: Some(Optional.into()),
293                                r#type: Some(Int32.into()),
294                                type_name: None,
295                                extendee: None,
296                                default_value: None,
297                                oneof_index: None,
298                                json_name: Some("number".into()),
299                                options: None,
300                                proto3_optional: None,
301                            },
302                            FieldDescriptorProto {
303                                name: Some("name".into()),
304                                number: Some(4),
305                                label: Some(Optional.into()),
306                                r#type: Some(String.into()),
307                                type_name: None,
308                                extendee: None,
309                                default_value: None,
310                                oneof_index: None,
311                                json_name: Some("name".into()),
312                                options: None,
313                                proto3_optional: None,
314                            },
315                            FieldDescriptorProto {
316                                name: Some("type_url".into()),
317                                number: Some(6),
318                                label: Some(Optional.into()),
319                                r#type: Some(String.into()),
320                                type_name: None,
321                                extendee: None,
322                                default_value: None,
323                                oneof_index: None,
324                                json_name: Some("typeUrl".into()),
325                                options: None,
326                                proto3_optional: None,
327                            },
328                            FieldDescriptorProto {
329                                name: Some("oneof_index".into()),
330                                number: Some(7),
331                                label: Some(Optional.into()),
332                                r#type: Some(Int32.into()),
333                                type_name: None,
334                                extendee: None,
335                                default_value: None,
336                                oneof_index: None,
337                                json_name: Some("oneofIndex".into()),
338                                options: None,
339                                proto3_optional: None,
340                            },
341                            FieldDescriptorProto {
342                                name: Some("packed".into()),
343                                number: Some(8),
344                                label: Some(Optional.into()),
345                                r#type: Some(Bool.into()),
346                                type_name: None,
347                                extendee: None,
348                                default_value: None,
349                                oneof_index: None,
350                                json_name: Some("packed".into()),
351                                options: None,
352                                proto3_optional: None,
353                            },
354                            FieldDescriptorProto {
355                                name: Some("options".into()),
356                                number: Some(9),
357                                label: Some(Repeated.into()),
358                                r#type: Some(Message.into()),
359                                type_name: Some(".google.protobuf.Option".into()),
360                                extendee: None,
361                                default_value: None,
362                                oneof_index: None,
363                                json_name: Some("options".into()),
364                                options: None,
365                                proto3_optional: None,
366                            },
367                            FieldDescriptorProto {
368                                name: Some("json_name".into()),
369                                number: Some(10),
370                                label: Some(Optional.into()),
371                                r#type: Some(String.into()),
372                                type_name: None,
373                                extendee: None,
374                                default_value: None,
375                                oneof_index: None,
376                                json_name: Some("jsonName".into()),
377                                options: None,
378                                proto3_optional: None,
379                            },
380                            FieldDescriptorProto {
381                                name: Some("default_value".into()),
382                                number: Some(11),
383                                label: Some(Optional.into()),
384                                r#type: Some(String.into()),
385                                type_name: None,
386                                extendee: None,
387                                default_value: None,
388                                oneof_index: None,
389                                json_name: Some("defaultValue".into()),
390                                options: None,
391                                proto3_optional: None,
392                            },
393                        ],
394                        extension: vec![],
395                        nested_type: vec![],
396                        enum_type: vec![
397                            EnumDescriptorProto {
398                                name: Some("Kind".into()),
399                                value: vec![
400                                    EnumValueDescriptorProto {
401                                        name: Some("TYPE_UNKNOWN".into()),
402                                        number: Some(0),
403                                        options: None,
404                                    },
405                                    EnumValueDescriptorProto {
406                                        name: Some("TYPE_DOUBLE".into()),
407                                        number: Some(1),
408                                        options: None,
409                                    },
410                                    EnumValueDescriptorProto {
411                                        name: Some("TYPE_FLOAT".into()),
412                                        number: Some(2),
413                                        options: None,
414                                    },
415                                    EnumValueDescriptorProto {
416                                        name: Some("TYPE_INT64".into()),
417                                        number: Some(3),
418                                        options: None,
419                                    },
420                                    EnumValueDescriptorProto {
421                                        name: Some("TYPE_UINT64".into()),
422                                        number: Some(4),
423                                        options: None,
424                                    },
425                                    EnumValueDescriptorProto {
426                                        name: Some("TYPE_INT32".into()),
427                                        number: Some(5),
428                                        options: None,
429                                    },
430                                    EnumValueDescriptorProto {
431                                        name: Some("TYPE_FIXED64".into()),
432                                        number: Some(6),
433                                        options: None,
434                                    },
435                                    EnumValueDescriptorProto {
436                                        name: Some("TYPE_FIXED32".into()),
437                                        number: Some(7),
438                                        options: None,
439                                    },
440                                    EnumValueDescriptorProto {
441                                        name: Some("TYPE_BOOL".into()),
442                                        number: Some(8),
443                                        options: None,
444                                    },
445                                    EnumValueDescriptorProto {
446                                        name: Some("TYPE_STRING".into()),
447                                        number: Some(9),
448                                        options: None,
449                                    },
450                                    EnumValueDescriptorProto {
451                                        name: Some("TYPE_GROUP".into()),
452                                        number: Some(10),
453                                        options: None,
454                                    },
455                                    EnumValueDescriptorProto {
456                                        name: Some("TYPE_MESSAGE".into()),
457                                        number: Some(11),
458                                        options: None,
459                                    },
460                                    EnumValueDescriptorProto {
461                                        name: Some("TYPE_BYTES".into()),
462                                        number: Some(12),
463                                        options: None,
464                                    },
465                                    EnumValueDescriptorProto {
466                                        name: Some("TYPE_UINT32".into()),
467                                        number: Some(13),
468                                        options: None,
469                                    },
470                                    EnumValueDescriptorProto {
471                                        name: Some("TYPE_ENUM".into()),
472                                        number: Some(14),
473                                        options: None,
474                                    },
475                                    EnumValueDescriptorProto {
476                                        name: Some("TYPE_SFIXED32".into()),
477                                        number: Some(15),
478                                        options: None,
479                                    },
480                                    EnumValueDescriptorProto {
481                                        name: Some("TYPE_SFIXED64".into()),
482                                        number: Some(16),
483                                        options: None,
484                                    },
485                                    EnumValueDescriptorProto {
486                                        name: Some("TYPE_SINT32".into()),
487                                        number: Some(17),
488                                        options: None,
489                                    },
490                                    EnumValueDescriptorProto {
491                                        name: Some("TYPE_SINT64".into()),
492                                        number: Some(18),
493                                        options: None,
494                                    },
495                                ],
496                                options: None,
497                                reserved_range: vec![],
498                                reserved_name: vec![],
499                            },
500                            EnumDescriptorProto {
501                                name: Some("Cardinality".into()),
502                                value: vec![
503                                    EnumValueDescriptorProto {
504                                        name: Some("CARDINALITY_UNKNOWN".into()),
505                                        number: Some(0),
506                                        options: None,
507                                    },
508                                    EnumValueDescriptorProto {
509                                        name: Some("CARDINALITY_OPTIONAL".into()),
510                                        number: Some(1),
511                                        options: None,
512                                    },
513                                    EnumValueDescriptorProto {
514                                        name: Some("CARDINALITY_REQUIRED".into()),
515                                        number: Some(2),
516                                        options: None,
517                                    },
518                                    EnumValueDescriptorProto {
519                                        name: Some("CARDINALITY_REPEATED".into()),
520                                        number: Some(3),
521                                        options: None,
522                                    },
523                                ],
524                                options: None,
525                                reserved_range: vec![],
526                                reserved_name: vec![],
527                            },
528                        ],
529                        extension_range: vec![],
530                        oneof_decl: vec![],
531                        options: None,
532                        reserved_range: vec![],
533                        reserved_name: vec![],
534                    },
535                    DescriptorProto {
536                        name: Some("Enum".into()),
537                        field: vec![
538                            FieldDescriptorProto {
539                                name: Some("name".into()),
540                                number: Some(1),
541                                label: Some(Optional.into()),
542                                r#type: Some(String.into()),
543                                type_name: None,
544                                extendee: None,
545                                default_value: None,
546                                oneof_index: None,
547                                json_name: Some("name".into()),
548                                options: None,
549                                proto3_optional: None,
550                            },
551                            FieldDescriptorProto {
552                                name: Some("enumvalue".into()),
553                                number: Some(2),
554                                label: Some(Repeated.into()),
555                                r#type: Some(Message.into()),
556                                type_name: Some(".google.protobuf.EnumValue".into()),
557                                extendee: None,
558                                default_value: None,
559                                oneof_index: None,
560                                json_name: Some("enumvalue".into()),
561                                options: None,
562                                proto3_optional: None,
563                            },
564                            FieldDescriptorProto {
565                                name: Some("options".into()),
566                                number: Some(3),
567                                label: Some(Repeated.into()),
568                                r#type: Some(Message.into()),
569                                type_name: Some(".google.protobuf.Option".into()),
570                                extendee: None,
571                                default_value: None,
572                                oneof_index: None,
573                                json_name: Some("options".into()),
574                                options: None,
575                                proto3_optional: None,
576                            },
577                            FieldDescriptorProto {
578                                name: Some("source_context".into()),
579                                number: Some(4),
580                                label: Some(Optional.into()),
581                                r#type: Some(Message.into()),
582                                type_name: Some(".google.protobuf.SourceContext".into()),
583                                extendee: None,
584                                default_value: None,
585                                oneof_index: None,
586                                json_name: Some("sourceContext".into()),
587                                options: None,
588                                proto3_optional: None,
589                            },
590                            FieldDescriptorProto {
591                                name: Some("syntax".into()),
592                                number: Some(5),
593                                label: Some(Optional.into()),
594                                r#type: Some(Enum.into()),
595                                type_name: Some(".google.protobuf.Syntax".into()),
596                                extendee: None,
597                                default_value: None,
598                                oneof_index: None,
599                                json_name: Some("syntax".into()),
600                                options: None,
601                                proto3_optional: None,
602                            },
603                        ],
604                        extension: vec![],
605                        nested_type: vec![],
606                        enum_type: vec![],
607                        extension_range: vec![],
608                        oneof_decl: vec![],
609                        options: None,
610                        reserved_range: vec![],
611                        reserved_name: vec![],
612                    },
613                    DescriptorProto {
614                        name: Some("EnumValue".into()),
615                        field: vec![
616                            FieldDescriptorProto {
617                                name: Some("name".into()),
618                                number: Some(1),
619                                label: Some(Optional.into()),
620                                r#type: Some(String.into()),
621                                type_name: None,
622                                extendee: None,
623                                default_value: None,
624                                oneof_index: None,
625                                json_name: Some("name".into()),
626                                options: None,
627                                proto3_optional: None,
628                            },
629                            FieldDescriptorProto {
630                                name: Some("number".into()),
631                                number: Some(2),
632                                label: Some(Optional.into()),
633                                r#type: Some(Int32.into()),
634                                type_name: None,
635                                extendee: None,
636                                default_value: None,
637                                oneof_index: None,
638                                json_name: Some("number".into()),
639                                options: None,
640                                proto3_optional: None,
641                            },
642                            FieldDescriptorProto {
643                                name: Some("options".into()),
644                                number: Some(3),
645                                label: Some(Repeated.into()),
646                                r#type: Some(Message.into()),
647                                type_name: Some(".google.protobuf.Option".into()),
648                                extendee: None,
649                                default_value: None,
650                                oneof_index: None,
651                                json_name: Some("options".into()),
652                                options: None,
653                                proto3_optional: None,
654                            },
655                        ],
656                        extension: vec![],
657                        nested_type: vec![],
658                        enum_type: vec![],
659                        extension_range: vec![],
660                        oneof_decl: vec![],
661                        options: None,
662                        reserved_range: vec![],
663                        reserved_name: vec![],
664                    },
665                    DescriptorProto {
666                        name: Some("Option".into()),
667                        field: vec![
668                            FieldDescriptorProto {
669                                name: Some("name".into()),
670                                number: Some(1),
671                                label: Some(Optional.into()),
672                                r#type: Some(String.into()),
673                                type_name: None,
674                                extendee: None,
675                                default_value: None,
676                                oneof_index: None,
677                                json_name: Some("name".into()),
678                                options: None,
679                                proto3_optional: None,
680                            },
681                            FieldDescriptorProto {
682                                name: Some("value".into()),
683                                number: Some(2),
684                                label: Some(Optional.into()),
685                                r#type: Some(Message.into()),
686                                type_name: Some(".google.protobuf.Any".into()),
687                                extendee: None,
688                                default_value: None,
689                                oneof_index: None,
690                                json_name: Some("value".into()),
691                                options: None,
692                                proto3_optional: None,
693                            },
694                        ],
695                        extension: vec![],
696                        nested_type: vec![],
697                        enum_type: vec![],
698                        extension_range: vec![],
699                        oneof_decl: vec![],
700                        options: None,
701                        reserved_range: vec![],
702                        reserved_name: vec![],
703                    },
704                ],
705                enum_type: vec![EnumDescriptorProto {
706                    name: Some("Syntax".into()),
707                    value: vec![
708                        EnumValueDescriptorProto {
709                            name: Some("SYNTAX_PROTO2".into()),
710                            number: Some(0),
711                            options: None,
712                        },
713                        EnumValueDescriptorProto {
714                            name: Some("SYNTAX_PROTO3".into()),
715                            number: Some(1),
716                            options: None,
717                        },
718                    ],
719                    options: None,
720                    reserved_range: vec![],
721                    reserved_name: vec![],
722                }],
723                service: vec![],
724                extension: vec![],
725                options: Some(Options::from_prost(FileOptions {
726                    java_package: Some("com.google.protobuf".into()),
727                    java_outer_classname: Some("TypeProto".into()),
728                    java_multiple_files: Some(true),
729                    java_generate_equals_and_hash: None,
730                    java_string_check_utf8: None,
731                    optimize_for: None,
732                    go_package: Some("google.golang.org/protobuf/types/known/typepb".into()),
733                    cc_generic_services: None,
734                    java_generic_services: None,
735                    py_generic_services: None,
736                    php_generic_services: None,
737                    deprecated: None,
738                    cc_enable_arenas: Some(true),
739                    objc_class_prefix: Some("GPB".into()),
740                    csharp_namespace: Some("Google.Protobuf.WellKnownTypes".into()),
741                    swift_prefix: None,
742                    php_class_prefix: None,
743                    php_namespace: None,
744                    php_metadata_namespace: None,
745                    ruby_package: None,
746                    uninterpreted_option: vec![],
747                })),
748                source_code_info: None,
749                syntax: Some("proto3".into()),
750            },
751            FileDescriptorProto {
752                name: Some("google/protobuf/api.proto".into()),
753                package: Some("google.protobuf".into()),
754                dependency: vec![
755                    "google/protobuf/source_context.proto".into(),
756                    "google/protobuf/type.proto".into(),
757                ],
758                public_dependency: vec![],
759                weak_dependency: vec![],
760                message_type: vec![
761                    DescriptorProto {
762                        name: Some("Api".into()),
763                        field: vec![
764                            FieldDescriptorProto {
765                                name: Some("name".into()),
766                                number: Some(1),
767                                label: Some(Optional.into()),
768                                r#type: Some(String.into()),
769                                type_name: None,
770                                extendee: None,
771                                default_value: None,
772                                oneof_index: None,
773                                json_name: Some("name".into()),
774                                options: None,
775                                proto3_optional: None,
776                            },
777                            FieldDescriptorProto {
778                                name: Some("methods".into()),
779                                number: Some(2),
780                                label: Some(Repeated.into()),
781                                r#type: Some(Message.into()),
782                                type_name: Some(".google.protobuf.Method".into()),
783                                extendee: None,
784                                default_value: None,
785                                oneof_index: None,
786                                json_name: Some("methods".into()),
787                                options: None,
788                                proto3_optional: None,
789                            },
790                            FieldDescriptorProto {
791                                name: Some("options".into()),
792                                number: Some(3),
793                                label: Some(Repeated.into()),
794                                r#type: Some(Message.into()),
795                                type_name: Some(".google.protobuf.Option".into()),
796                                extendee: None,
797                                default_value: None,
798                                oneof_index: None,
799                                json_name: Some("options".into()),
800                                options: None,
801                                proto3_optional: None,
802                            },
803                            FieldDescriptorProto {
804                                name: Some("version".into()),
805                                number: Some(4),
806                                label: Some(Optional.into()),
807                                r#type: Some(String.into()),
808                                type_name: None,
809                                extendee: None,
810                                default_value: None,
811                                oneof_index: None,
812                                json_name: Some("version".into()),
813                                options: None,
814                                proto3_optional: None,
815                            },
816                            FieldDescriptorProto {
817                                name: Some("source_context".into()),
818                                number: Some(5),
819                                label: Some(Optional.into()),
820                                r#type: Some(Message.into()),
821                                type_name: Some(".google.protobuf.SourceContext".into()),
822                                extendee: None,
823                                default_value: None,
824                                oneof_index: None,
825                                json_name: Some("sourceContext".into()),
826                                options: None,
827                                proto3_optional: None,
828                            },
829                            FieldDescriptorProto {
830                                name: Some("mixins".into()),
831                                number: Some(6),
832                                label: Some(Repeated.into()),
833                                r#type: Some(Message.into()),
834                                type_name: Some(".google.protobuf.Mixin".into()),
835                                extendee: None,
836                                default_value: None,
837                                oneof_index: None,
838                                json_name: Some("mixins".into()),
839                                options: None,
840                                proto3_optional: None,
841                            },
842                            FieldDescriptorProto {
843                                name: Some("syntax".into()),
844                                number: Some(7),
845                                label: Some(Optional.into()),
846                                r#type: Some(Enum.into()),
847                                type_name: Some(".google.protobuf.Syntax".into()),
848                                extendee: None,
849                                default_value: None,
850                                oneof_index: None,
851                                json_name: Some("syntax".into()),
852                                options: None,
853                                proto3_optional: None,
854                            },
855                        ],
856                        extension: vec![],
857                        nested_type: vec![],
858                        enum_type: vec![],
859                        extension_range: vec![],
860                        oneof_decl: vec![],
861                        options: None,
862                        reserved_range: vec![],
863                        reserved_name: vec![],
864                    },
865                    DescriptorProto {
866                        name: Some("Method".into()),
867                        field: vec![
868                            FieldDescriptorProto {
869                                name: Some("name".into()),
870                                number: Some(1),
871                                label: Some(Optional.into()),
872                                r#type: Some(String.into()),
873                                type_name: None,
874                                extendee: None,
875                                default_value: None,
876                                oneof_index: None,
877                                json_name: Some("name".into()),
878                                options: None,
879                                proto3_optional: None,
880                            },
881                            FieldDescriptorProto {
882                                name: Some("request_type_url".into()),
883                                number: Some(2),
884                                label: Some(Optional.into()),
885                                r#type: Some(String.into()),
886                                type_name: None,
887                                extendee: None,
888                                default_value: None,
889                                oneof_index: None,
890                                json_name: Some("requestTypeUrl".into()),
891                                options: None,
892                                proto3_optional: None,
893                            },
894                            FieldDescriptorProto {
895                                name: Some("request_streaming".into()),
896                                number: Some(3),
897                                label: Some(Optional.into()),
898                                r#type: Some(Bool.into()),
899                                type_name: None,
900                                extendee: None,
901                                default_value: None,
902                                oneof_index: None,
903                                json_name: Some("requestStreaming".into()),
904                                options: None,
905                                proto3_optional: None,
906                            },
907                            FieldDescriptorProto {
908                                name: Some("response_type_url".into()),
909                                number: Some(4),
910                                label: Some(Optional.into()),
911                                r#type: Some(String.into()),
912                                type_name: None,
913                                extendee: None,
914                                default_value: None,
915                                oneof_index: None,
916                                json_name: Some("responseTypeUrl".into()),
917                                options: None,
918                                proto3_optional: None,
919                            },
920                            FieldDescriptorProto {
921                                name: Some("response_streaming".into()),
922                                number: Some(5),
923                                label: Some(Optional.into()),
924                                r#type: Some(Bool.into()),
925                                type_name: None,
926                                extendee: None,
927                                default_value: None,
928                                oneof_index: None,
929                                json_name: Some("responseStreaming".into()),
930                                options: None,
931                                proto3_optional: None,
932                            },
933                            FieldDescriptorProto {
934                                name: Some("options".into()),
935                                number: Some(6),
936                                label: Some(Repeated.into()),
937                                r#type: Some(Message.into()),
938                                type_name: Some(".google.protobuf.Option".into()),
939                                extendee: None,
940                                default_value: None,
941                                oneof_index: None,
942                                json_name: Some("options".into()),
943                                options: None,
944                                proto3_optional: None,
945                            },
946                            FieldDescriptorProto {
947                                name: Some("syntax".into()),
948                                number: Some(7),
949                                label: Some(Optional.into()),
950                                r#type: Some(Enum.into()),
951                                type_name: Some(".google.protobuf.Syntax".into()),
952                                extendee: None,
953                                default_value: None,
954                                oneof_index: None,
955                                json_name: Some("syntax".into()),
956                                options: None,
957                                proto3_optional: None,
958                            },
959                        ],
960                        extension: vec![],
961                        nested_type: vec![],
962                        enum_type: vec![],
963                        extension_range: vec![],
964                        oneof_decl: vec![],
965                        options: None,
966                        reserved_range: vec![],
967                        reserved_name: vec![],
968                    },
969                    DescriptorProto {
970                        name: Some("Mixin".into()),
971                        field: vec![
972                            FieldDescriptorProto {
973                                name: Some("name".into()),
974                                number: Some(1),
975                                label: Some(Optional.into()),
976                                r#type: Some(String.into()),
977                                type_name: None,
978                                extendee: None,
979                                default_value: None,
980                                oneof_index: None,
981                                json_name: Some("name".into()),
982                                options: None,
983                                proto3_optional: None,
984                            },
985                            FieldDescriptorProto {
986                                name: Some("root".into()),
987                                number: Some(2),
988                                label: Some(Optional.into()),
989                                r#type: Some(String.into()),
990                                type_name: None,
991                                extendee: None,
992                                default_value: None,
993                                oneof_index: None,
994                                json_name: Some("root".into()),
995                                options: None,
996                                proto3_optional: None,
997                            },
998                        ],
999                        extension: vec![],
1000                        nested_type: vec![],
1001                        enum_type: vec![],
1002                        extension_range: vec![],
1003                        oneof_decl: vec![],
1004                        options: None,
1005                        reserved_range: vec![],
1006                        reserved_name: vec![],
1007                    },
1008                ],
1009                enum_type: vec![],
1010                service: vec![],
1011                extension: vec![],
1012                options: Some(Options::from_prost(FileOptions {
1013                    java_package: Some("com.google.protobuf".into()),
1014                    java_outer_classname: Some("ApiProto".into()),
1015                    java_multiple_files: Some(true),
1016                    java_generate_equals_and_hash: None,
1017                    java_string_check_utf8: None,
1018                    optimize_for: None,
1019                    go_package: Some("google.golang.org/protobuf/types/known/apipb".into()),
1020                    cc_generic_services: None,
1021                    java_generic_services: None,
1022                    py_generic_services: None,
1023                    php_generic_services: None,
1024                    deprecated: None,
1025                    cc_enable_arenas: None,
1026                    objc_class_prefix: Some("GPB".into()),
1027                    csharp_namespace: Some("Google.Protobuf.WellKnownTypes".into()),
1028                    swift_prefix: None,
1029                    php_class_prefix: None,
1030                    php_namespace: None,
1031                    php_metadata_namespace: None,
1032                    ruby_package: None,
1033                    uninterpreted_option: vec![],
1034                })),
1035                source_code_info: None,
1036                syntax: Some("proto3".into()),
1037            },
1038            FileDescriptorProto {
1039                name: Some("google/protobuf/descriptor.proto".into()),
1040                package: Some("google.protobuf".into()),
1041                dependency: vec![],
1042                public_dependency: vec![],
1043                weak_dependency: vec![],
1044                message_type: vec![
1045                    DescriptorProto {
1046                        name: Some("FileDescriptorSet".into()),
1047                        field: vec![FieldDescriptorProto {
1048                            name: Some("file".into()),
1049                            number: Some(1),
1050                            label: Some(Repeated.into()),
1051                            r#type: Some(Message.into()),
1052                            type_name: Some(".google.protobuf.FileDescriptorProto".into()),
1053                            extendee: None,
1054                            default_value: None,
1055                            oneof_index: None,
1056                            json_name: Some("file".into()),
1057                            options: None,
1058                            proto3_optional: None,
1059                        }],
1060                        extension: vec![],
1061                        nested_type: vec![],
1062                        enum_type: vec![],
1063                        extension_range: vec![],
1064                        oneof_decl: vec![],
1065                        options: None,
1066                        reserved_range: vec![],
1067                        reserved_name: vec![],
1068                    },
1069                    DescriptorProto {
1070                        name: Some("FileDescriptorProto".into()),
1071                        field: vec![
1072                            FieldDescriptorProto {
1073                                name: Some("name".into()),
1074                                number: Some(1),
1075                                label: Some(Optional.into()),
1076                                r#type: Some(String.into()),
1077                                type_name: None,
1078                                extendee: None,
1079                                default_value: None,
1080                                oneof_index: None,
1081                                json_name: Some("name".into()),
1082                                options: None,
1083                                proto3_optional: None,
1084                            },
1085                            FieldDescriptorProto {
1086                                name: Some("package".into()),
1087                                number: Some(2),
1088                                label: Some(Optional.into()),
1089                                r#type: Some(String.into()),
1090                                type_name: None,
1091                                extendee: None,
1092                                default_value: None,
1093                                oneof_index: None,
1094                                json_name: Some("package".into()),
1095                                options: None,
1096                                proto3_optional: None,
1097                            },
1098                            FieldDescriptorProto {
1099                                name: Some("dependency".into()),
1100                                number: Some(3),
1101                                label: Some(Repeated.into()),
1102                                r#type: Some(String.into()),
1103                                type_name: None,
1104                                extendee: None,
1105                                default_value: None,
1106                                oneof_index: None,
1107                                json_name: Some("dependency".into()),
1108                                options: None,
1109                                proto3_optional: None,
1110                            },
1111                            FieldDescriptorProto {
1112                                name: Some("public_dependency".into()),
1113                                number: Some(10),
1114                                label: Some(Repeated.into()),
1115                                r#type: Some(Int32.into()),
1116                                type_name: None,
1117                                extendee: None,
1118                                default_value: None,
1119                                oneof_index: None,
1120                                json_name: Some("publicDependency".into()),
1121                                options: None,
1122                                proto3_optional: None,
1123                            },
1124                            FieldDescriptorProto {
1125                                name: Some("weak_dependency".into()),
1126                                number: Some(11),
1127                                label: Some(Repeated.into()),
1128                                r#type: Some(Int32.into()),
1129                                type_name: None,
1130                                extendee: None,
1131                                default_value: None,
1132                                oneof_index: None,
1133                                json_name: Some("weakDependency".into()),
1134                                options: None,
1135                                proto3_optional: None,
1136                            },
1137                            FieldDescriptorProto {
1138                                name: Some("message_type".into()),
1139                                number: Some(4),
1140                                label: Some(Repeated.into()),
1141                                r#type: Some(Message.into()),
1142                                type_name: Some(".google.protobuf.DescriptorProto".into()),
1143                                extendee: None,
1144                                default_value: None,
1145                                oneof_index: None,
1146                                json_name: Some("messageType".into()),
1147                                options: None,
1148                                proto3_optional: None,
1149                            },
1150                            FieldDescriptorProto {
1151                                name: Some("enum_type".into()),
1152                                number: Some(5),
1153                                label: Some(Repeated.into()),
1154                                r#type: Some(Message.into()),
1155                                type_name: Some(".google.protobuf.EnumDescriptorProto".into()),
1156                                extendee: None,
1157                                default_value: None,
1158                                oneof_index: None,
1159                                json_name: Some("enumType".into()),
1160                                options: None,
1161                                proto3_optional: None,
1162                            },
1163                            FieldDescriptorProto {
1164                                name: Some("service".into()),
1165                                number: Some(6),
1166                                label: Some(Repeated.into()),
1167                                r#type: Some(Message.into()),
1168                                type_name: Some(".google.protobuf.ServiceDescriptorProto".into()),
1169                                extendee: None,
1170                                default_value: None,
1171                                oneof_index: None,
1172                                json_name: Some("service".into()),
1173                                options: None,
1174                                proto3_optional: None,
1175                            },
1176                            FieldDescriptorProto {
1177                                name: Some("extension".into()),
1178                                number: Some(7),
1179                                label: Some(Repeated.into()),
1180                                r#type: Some(Message.into()),
1181                                type_name: Some(".google.protobuf.FieldDescriptorProto".into()),
1182                                extendee: None,
1183                                default_value: None,
1184                                oneof_index: None,
1185                                json_name: Some("extension".into()),
1186                                options: None,
1187                                proto3_optional: None,
1188                            },
1189                            FieldDescriptorProto {
1190                                name: Some("options".into()),
1191                                number: Some(8),
1192                                label: Some(Optional.into()),
1193                                r#type: Some(Message.into()),
1194                                type_name: Some(".google.protobuf.FileOptions".into()),
1195                                extendee: None,
1196                                default_value: None,
1197                                oneof_index: None,
1198                                json_name: Some("options".into()),
1199                                options: None,
1200                                proto3_optional: None,
1201                            },
1202                            FieldDescriptorProto {
1203                                name: Some("source_code_info".into()),
1204                                number: Some(9),
1205                                label: Some(Optional.into()),
1206                                r#type: Some(Message.into()),
1207                                type_name: Some(".google.protobuf.SourceCodeInfo".into()),
1208                                extendee: None,
1209                                default_value: None,
1210                                oneof_index: None,
1211                                json_name: Some("sourceCodeInfo".into()),
1212                                options: None,
1213                                proto3_optional: None,
1214                            },
1215                            FieldDescriptorProto {
1216                                name: Some("syntax".into()),
1217                                number: Some(12),
1218                                label: Some(Optional.into()),
1219                                r#type: Some(String.into()),
1220                                type_name: None,
1221                                extendee: None,
1222                                default_value: None,
1223                                oneof_index: None,
1224                                json_name: Some("syntax".into()),
1225                                options: None,
1226                                proto3_optional: None,
1227                            },
1228                            FieldDescriptorProto {
1229                                name: Some("edition".into()),
1230                                number: Some(13),
1231                                label: Some(Optional.into()),
1232                                r#type: Some(String.into()),
1233                                type_name: None,
1234                                extendee: None,
1235                                default_value: None,
1236                                oneof_index: None,
1237                                json_name: Some("edition".into()),
1238                                options: None,
1239                                proto3_optional: None,
1240                            },
1241                        ],
1242                        extension: vec![],
1243                        nested_type: vec![],
1244                        enum_type: vec![],
1245                        extension_range: vec![],
1246                        oneof_decl: vec![],
1247                        options: None,
1248                        reserved_range: vec![],
1249                        reserved_name: vec![],
1250                    },
1251                    DescriptorProto {
1252                        name: Some("DescriptorProto".into()),
1253                        field: vec![
1254                            FieldDescriptorProto {
1255                                name: Some("name".into()),
1256                                number: Some(1),
1257                                label: Some(Optional.into()),
1258                                r#type: Some(String.into()),
1259                                type_name: None,
1260                                extendee: None,
1261                                default_value: None,
1262                                oneof_index: None,
1263                                json_name: Some("name".into()),
1264                                options: None,
1265                                proto3_optional: None,
1266                            },
1267                            FieldDescriptorProto {
1268                                name: Some("field".into()),
1269                                number: Some(2),
1270                                label: Some(Repeated.into()),
1271                                r#type: Some(Message.into()),
1272                                type_name: Some(".google.protobuf.FieldDescriptorProto".into()),
1273                                extendee: None,
1274                                default_value: None,
1275                                oneof_index: None,
1276                                json_name: Some("field".into()),
1277                                options: None,
1278                                proto3_optional: None,
1279                            },
1280                            FieldDescriptorProto {
1281                                name: Some("extension".into()),
1282                                number: Some(6),
1283                                label: Some(Repeated.into()),
1284                                r#type: Some(Message.into()),
1285                                type_name: Some(".google.protobuf.FieldDescriptorProto".into()),
1286                                extendee: None,
1287                                default_value: None,
1288                                oneof_index: None,
1289                                json_name: Some("extension".into()),
1290                                options: None,
1291                                proto3_optional: None,
1292                            },
1293                            FieldDescriptorProto {
1294                                name: Some("nested_type".into()),
1295                                number: Some(3),
1296                                label: Some(Repeated.into()),
1297                                r#type: Some(Message.into()),
1298                                type_name: Some(".google.protobuf.DescriptorProto".into()),
1299                                extendee: None,
1300                                default_value: None,
1301                                oneof_index: None,
1302                                json_name: Some("nestedType".into()),
1303                                options: None,
1304                                proto3_optional: None,
1305                            },
1306                            FieldDescriptorProto {
1307                                name: Some("enum_type".into()),
1308                                number: Some(4),
1309                                label: Some(Repeated.into()),
1310                                r#type: Some(Message.into()),
1311                                type_name: Some(".google.protobuf.EnumDescriptorProto".into()),
1312                                extendee: None,
1313                                default_value: None,
1314                                oneof_index: None,
1315                                json_name: Some("enumType".into()),
1316                                options: None,
1317                                proto3_optional: None,
1318                            },
1319                            FieldDescriptorProto {
1320                                name: Some("extension_range".into()),
1321                                number: Some(5),
1322                                label: Some(Repeated.into()),
1323                                r#type: Some(Message.into()),
1324                                type_name: Some(
1325                                    ".google.protobuf.DescriptorProto.ExtensionRange".into(),
1326                                ),
1327                                extendee: None,
1328                                default_value: None,
1329                                oneof_index: None,
1330                                json_name: Some("extensionRange".into()),
1331                                options: None,
1332                                proto3_optional: None,
1333                            },
1334                            FieldDescriptorProto {
1335                                name: Some("oneof_decl".into()),
1336                                number: Some(8),
1337                                label: Some(Repeated.into()),
1338                                r#type: Some(Message.into()),
1339                                type_name: Some(".google.protobuf.OneofDescriptorProto".into()),
1340                                extendee: None,
1341                                default_value: None,
1342                                oneof_index: None,
1343                                json_name: Some("oneofDecl".into()),
1344                                options: None,
1345                                proto3_optional: None,
1346                            },
1347                            FieldDescriptorProto {
1348                                name: Some("options".into()),
1349                                number: Some(7),
1350                                label: Some(Optional.into()),
1351                                r#type: Some(Message.into()),
1352                                type_name: Some(".google.protobuf.MessageOptions".into()),
1353                                extendee: None,
1354                                default_value: None,
1355                                oneof_index: None,
1356                                json_name: Some("options".into()),
1357                                options: None,
1358                                proto3_optional: None,
1359                            },
1360                            FieldDescriptorProto {
1361                                name: Some("reserved_range".into()),
1362                                number: Some(9),
1363                                label: Some(Repeated.into()),
1364                                r#type: Some(Message.into()),
1365                                type_name: Some(
1366                                    ".google.protobuf.DescriptorProto.ReservedRange".into(),
1367                                ),
1368                                extendee: None,
1369                                default_value: None,
1370                                oneof_index: None,
1371                                json_name: Some("reservedRange".into()),
1372                                options: None,
1373                                proto3_optional: None,
1374                            },
1375                            FieldDescriptorProto {
1376                                name: Some("reserved_name".into()),
1377                                number: Some(10),
1378                                label: Some(Repeated.into()),
1379                                r#type: Some(String.into()),
1380                                type_name: None,
1381                                extendee: None,
1382                                default_value: None,
1383                                oneof_index: None,
1384                                json_name: Some("reservedName".into()),
1385                                options: None,
1386                                proto3_optional: None,
1387                            },
1388                        ],
1389                        extension: vec![],
1390                        nested_type: vec![
1391                            DescriptorProto {
1392                                name: Some("ExtensionRange".into()),
1393                                field: vec![
1394                                    FieldDescriptorProto {
1395                                        name: Some("start".into()),
1396                                        number: Some(1),
1397                                        label: Some(Optional.into()),
1398                                        r#type: Some(Int32.into()),
1399                                        type_name: None,
1400                                        extendee: None,
1401                                        default_value: None,
1402                                        oneof_index: None,
1403                                        json_name: Some("start".into()),
1404                                        options: None,
1405                                        proto3_optional: None,
1406                                    },
1407                                    FieldDescriptorProto {
1408                                        name: Some("end".into()),
1409                                        number: Some(2),
1410                                        label: Some(Optional.into()),
1411                                        r#type: Some(Int32.into()),
1412                                        type_name: None,
1413                                        extendee: None,
1414                                        default_value: None,
1415                                        oneof_index: None,
1416                                        json_name: Some("end".into()),
1417                                        options: None,
1418                                        proto3_optional: None,
1419                                    },
1420                                    FieldDescriptorProto {
1421                                        name: Some("options".into()),
1422                                        number: Some(3),
1423                                        label: Some(Optional.into()),
1424                                        r#type: Some(Message.into()),
1425                                        type_name: Some(
1426                                            ".google.protobuf.ExtensionRangeOptions".into(),
1427                                        ),
1428                                        extendee: None,
1429                                        default_value: None,
1430                                        oneof_index: None,
1431                                        json_name: Some("options".into()),
1432                                        options: None,
1433                                        proto3_optional: None,
1434                                    },
1435                                ],
1436                                extension: vec![],
1437                                nested_type: vec![],
1438                                enum_type: vec![],
1439                                extension_range: vec![],
1440                                oneof_decl: vec![],
1441                                options: None,
1442                                reserved_range: vec![],
1443                                reserved_name: vec![],
1444                            },
1445                            DescriptorProto {
1446                                name: Some("ReservedRange".into()),
1447                                field: vec![
1448                                    FieldDescriptorProto {
1449                                        name: Some("start".into()),
1450                                        number: Some(1),
1451                                        label: Some(Optional.into()),
1452                                        r#type: Some(Int32.into()),
1453                                        type_name: None,
1454                                        extendee: None,
1455                                        default_value: None,
1456                                        oneof_index: None,
1457                                        json_name: Some("start".into()),
1458                                        options: None,
1459                                        proto3_optional: None,
1460                                    },
1461                                    FieldDescriptorProto {
1462                                        name: Some("end".into()),
1463                                        number: Some(2),
1464                                        label: Some(Optional.into()),
1465                                        r#type: Some(Int32.into()),
1466                                        type_name: None,
1467                                        extendee: None,
1468                                        default_value: None,
1469                                        oneof_index: None,
1470                                        json_name: Some("end".into()),
1471                                        options: None,
1472                                        proto3_optional: None,
1473                                    },
1474                                ],
1475                                extension: vec![],
1476                                nested_type: vec![],
1477                                enum_type: vec![],
1478                                extension_range: vec![],
1479                                oneof_decl: vec![],
1480                                options: None,
1481                                reserved_range: vec![],
1482                                reserved_name: vec![],
1483                            },
1484                        ],
1485                        enum_type: vec![],
1486                        extension_range: vec![],
1487                        oneof_decl: vec![],
1488                        options: None,
1489                        reserved_range: vec![],
1490                        reserved_name: vec![],
1491                    },
1492                    DescriptorProto {
1493                        name: Some("ExtensionRangeOptions".into()),
1494                        field: vec![FieldDescriptorProto {
1495                            name: Some("uninterpreted_option".into()),
1496                            number: Some(999),
1497                            label: Some(Repeated.into()),
1498                            r#type: Some(Message.into()),
1499                            type_name: Some(".google.protobuf.UninterpretedOption".into()),
1500                            extendee: None,
1501                            default_value: None,
1502                            oneof_index: None,
1503                            json_name: Some("uninterpretedOption".into()),
1504                            options: None,
1505                            proto3_optional: None,
1506                        }],
1507                        extension: vec![],
1508                        nested_type: vec![],
1509                        enum_type: vec![],
1510                        extension_range: vec![ExtensionRange {
1511                            start: Some(1000),
1512                            end: Some(536870912),
1513                            options: None,
1514                        }],
1515                        oneof_decl: vec![],
1516                        options: None,
1517                        reserved_range: vec![],
1518                        reserved_name: vec![],
1519                    },
1520                    DescriptorProto {
1521                        name: Some("FieldDescriptorProto".into()),
1522                        field: vec![
1523                            FieldDescriptorProto {
1524                                name: Some("name".into()),
1525                                number: Some(1),
1526                                label: Some(Optional.into()),
1527                                r#type: Some(String.into()),
1528                                type_name: None,
1529                                extendee: None,
1530                                default_value: None,
1531                                oneof_index: None,
1532                                json_name: Some("name".into()),
1533                                options: None,
1534                                proto3_optional: None,
1535                            },
1536                            FieldDescriptorProto {
1537                                name: Some("number".into()),
1538                                number: Some(3),
1539                                label: Some(Optional.into()),
1540                                r#type: Some(Int32.into()),
1541                                type_name: None,
1542                                extendee: None,
1543                                default_value: None,
1544                                oneof_index: None,
1545                                json_name: Some("number".into()),
1546                                options: None,
1547                                proto3_optional: None,
1548                            },
1549                            FieldDescriptorProto {
1550                                name: Some("label".into()),
1551                                number: Some(4),
1552                                label: Some(Optional.into()),
1553                                r#type: Some(Enum.into()),
1554                                type_name: Some(
1555                                    ".google.protobuf.FieldDescriptorProto.Label".into(),
1556                                ),
1557                                extendee: None,
1558                                default_value: None,
1559                                oneof_index: None,
1560                                json_name: Some("label".into()),
1561                                options: None,
1562                                proto3_optional: None,
1563                            },
1564                            FieldDescriptorProto {
1565                                name: Some("type".into()),
1566                                number: Some(5),
1567                                label: Some(Optional.into()),
1568                                r#type: Some(Enum.into()),
1569                                type_name: Some(
1570                                    ".google.protobuf.FieldDescriptorProto.Type".into(),
1571                                ),
1572                                extendee: None,
1573                                default_value: None,
1574                                oneof_index: None,
1575                                json_name: Some("type".into()),
1576                                options: None,
1577                                proto3_optional: None,
1578                            },
1579                            FieldDescriptorProto {
1580                                name: Some("type_name".into()),
1581                                number: Some(6),
1582                                label: Some(Optional.into()),
1583                                r#type: Some(String.into()),
1584                                type_name: None,
1585                                extendee: None,
1586                                default_value: None,
1587                                oneof_index: None,
1588                                json_name: Some("typeName".into()),
1589                                options: None,
1590                                proto3_optional: None,
1591                            },
1592                            FieldDescriptorProto {
1593                                name: Some("extendee".into()),
1594                                number: Some(2),
1595                                label: Some(Optional.into()),
1596                                r#type: Some(String.into()),
1597                                type_name: None,
1598                                extendee: None,
1599                                default_value: None,
1600                                oneof_index: None,
1601                                json_name: Some("extendee".into()),
1602                                options: None,
1603                                proto3_optional: None,
1604                            },
1605                            FieldDescriptorProto {
1606                                name: Some("default_value".into()),
1607                                number: Some(7),
1608                                label: Some(Optional.into()),
1609                                r#type: Some(String.into()),
1610                                type_name: None,
1611                                extendee: None,
1612                                default_value: None,
1613                                oneof_index: None,
1614                                json_name: Some("defaultValue".into()),
1615                                options: None,
1616                                proto3_optional: None,
1617                            },
1618                            FieldDescriptorProto {
1619                                name: Some("oneof_index".into()),
1620                                number: Some(9),
1621                                label: Some(Optional.into()),
1622                                r#type: Some(Int32.into()),
1623                                type_name: None,
1624                                extendee: None,
1625                                default_value: None,
1626                                oneof_index: None,
1627                                json_name: Some("oneofIndex".into()),
1628                                options: None,
1629                                proto3_optional: None,
1630                            },
1631                            FieldDescriptorProto {
1632                                name: Some("json_name".into()),
1633                                number: Some(10),
1634                                label: Some(Optional.into()),
1635                                r#type: Some(String.into()),
1636                                type_name: None,
1637                                extendee: None,
1638                                default_value: None,
1639                                oneof_index: None,
1640                                json_name: Some("jsonName".into()),
1641                                options: None,
1642                                proto3_optional: None,
1643                            },
1644                            FieldDescriptorProto {
1645                                name: Some("options".into()),
1646                                number: Some(8),
1647                                label: Some(Optional.into()),
1648                                r#type: Some(Message.into()),
1649                                type_name: Some(".google.protobuf.FieldOptions".into()),
1650                                extendee: None,
1651                                default_value: None,
1652                                oneof_index: None,
1653                                json_name: Some("options".into()),
1654                                options: None,
1655                                proto3_optional: None,
1656                            },
1657                            FieldDescriptorProto {
1658                                name: Some("proto3_optional".into()),
1659                                number: Some(17),
1660                                label: Some(Optional.into()),
1661                                r#type: Some(Bool.into()),
1662                                type_name: None,
1663                                extendee: None,
1664                                default_value: None,
1665                                oneof_index: None,
1666                                json_name: Some("proto3Optional".into()),
1667                                options: None,
1668                                proto3_optional: None,
1669                            },
1670                        ],
1671                        extension: vec![],
1672                        nested_type: vec![],
1673                        enum_type: vec![
1674                            EnumDescriptorProto {
1675                                name: Some("Type".into()),
1676                                value: vec![
1677                                    EnumValueDescriptorProto {
1678                                        name: Some("TYPE_DOUBLE".into()),
1679                                        number: Some(1),
1680                                        options: None,
1681                                    },
1682                                    EnumValueDescriptorProto {
1683                                        name: Some("TYPE_FLOAT".into()),
1684                                        number: Some(2),
1685                                        options: None,
1686                                    },
1687                                    EnumValueDescriptorProto {
1688                                        name: Some("TYPE_INT64".into()),
1689                                        number: Some(3),
1690                                        options: None,
1691                                    },
1692                                    EnumValueDescriptorProto {
1693                                        name: Some("TYPE_UINT64".into()),
1694                                        number: Some(4),
1695                                        options: None,
1696                                    },
1697                                    EnumValueDescriptorProto {
1698                                        name: Some("TYPE_INT32".into()),
1699                                        number: Some(5),
1700                                        options: None,
1701                                    },
1702                                    EnumValueDescriptorProto {
1703                                        name: Some("TYPE_FIXED64".into()),
1704                                        number: Some(6),
1705                                        options: None,
1706                                    },
1707                                    EnumValueDescriptorProto {
1708                                        name: Some("TYPE_FIXED32".into()),
1709                                        number: Some(7),
1710                                        options: None,
1711                                    },
1712                                    EnumValueDescriptorProto {
1713                                        name: Some("TYPE_BOOL".into()),
1714                                        number: Some(8),
1715                                        options: None,
1716                                    },
1717                                    EnumValueDescriptorProto {
1718                                        name: Some("TYPE_STRING".into()),
1719                                        number: Some(9),
1720                                        options: None,
1721                                    },
1722                                    EnumValueDescriptorProto {
1723                                        name: Some("TYPE_GROUP".into()),
1724                                        number: Some(10),
1725                                        options: None,
1726                                    },
1727                                    EnumValueDescriptorProto {
1728                                        name: Some("TYPE_MESSAGE".into()),
1729                                        number: Some(11),
1730                                        options: None,
1731                                    },
1732                                    EnumValueDescriptorProto {
1733                                        name: Some("TYPE_BYTES".into()),
1734                                        number: Some(12),
1735                                        options: None,
1736                                    },
1737                                    EnumValueDescriptorProto {
1738                                        name: Some("TYPE_UINT32".into()),
1739                                        number: Some(13),
1740                                        options: None,
1741                                    },
1742                                    EnumValueDescriptorProto {
1743                                        name: Some("TYPE_ENUM".into()),
1744                                        number: Some(14),
1745                                        options: None,
1746                                    },
1747                                    EnumValueDescriptorProto {
1748                                        name: Some("TYPE_SFIXED32".into()),
1749                                        number: Some(15),
1750                                        options: None,
1751                                    },
1752                                    EnumValueDescriptorProto {
1753                                        name: Some("TYPE_SFIXED64".into()),
1754                                        number: Some(16),
1755                                        options: None,
1756                                    },
1757                                    EnumValueDescriptorProto {
1758                                        name: Some("TYPE_SINT32".into()),
1759                                        number: Some(17),
1760                                        options: None,
1761                                    },
1762                                    EnumValueDescriptorProto {
1763                                        name: Some("TYPE_SINT64".into()),
1764                                        number: Some(18),
1765                                        options: None,
1766                                    },
1767                                ],
1768                                options: None,
1769                                reserved_range: vec![],
1770                                reserved_name: vec![],
1771                            },
1772                            EnumDescriptorProto {
1773                                name: Some("Label".into()),
1774                                value: vec![
1775                                    EnumValueDescriptorProto {
1776                                        name: Some("LABEL_OPTIONAL".into()),
1777                                        number: Some(1),
1778                                        options: None,
1779                                    },
1780                                    EnumValueDescriptorProto {
1781                                        name: Some("LABEL_REQUIRED".into()),
1782                                        number: Some(2),
1783                                        options: None,
1784                                    },
1785                                    EnumValueDescriptorProto {
1786                                        name: Some("LABEL_REPEATED".into()),
1787                                        number: Some(3),
1788                                        options: None,
1789                                    },
1790                                ],
1791                                options: None,
1792                                reserved_range: vec![],
1793                                reserved_name: vec![],
1794                            },
1795                        ],
1796                        extension_range: vec![],
1797                        oneof_decl: vec![],
1798                        options: None,
1799                        reserved_range: vec![],
1800                        reserved_name: vec![],
1801                    },
1802                    DescriptorProto {
1803                        name: Some("OneofDescriptorProto".into()),
1804                        field: vec![
1805                            FieldDescriptorProto {
1806                                name: Some("name".into()),
1807                                number: Some(1),
1808                                label: Some(Optional.into()),
1809                                r#type: Some(String.into()),
1810                                type_name: None,
1811                                extendee: None,
1812                                default_value: None,
1813                                oneof_index: None,
1814                                json_name: Some("name".into()),
1815                                options: None,
1816                                proto3_optional: None,
1817                            },
1818                            FieldDescriptorProto {
1819                                name: Some("options".into()),
1820                                number: Some(2),
1821                                label: Some(Optional.into()),
1822                                r#type: Some(Message.into()),
1823                                type_name: Some(".google.protobuf.OneofOptions".into()),
1824                                extendee: None,
1825                                default_value: None,
1826                                oneof_index: None,
1827                                json_name: Some("options".into()),
1828                                options: None,
1829                                proto3_optional: None,
1830                            },
1831                        ],
1832                        extension: vec![],
1833                        nested_type: vec![],
1834                        enum_type: vec![],
1835                        extension_range: vec![],
1836                        oneof_decl: vec![],
1837                        options: None,
1838                        reserved_range: vec![],
1839                        reserved_name: vec![],
1840                    },
1841                    DescriptorProto {
1842                        name: Some("EnumDescriptorProto".into()),
1843                        field: vec![
1844                            FieldDescriptorProto {
1845                                name: Some("name".into()),
1846                                number: Some(1),
1847                                label: Some(Optional.into()),
1848                                r#type: Some(String.into()),
1849                                type_name: None,
1850                                extendee: None,
1851                                default_value: None,
1852                                oneof_index: None,
1853                                json_name: Some("name".into()),
1854                                options: None,
1855                                proto3_optional: None,
1856                            },
1857                            FieldDescriptorProto {
1858                                name: Some("value".into()),
1859                                number: Some(2),
1860                                label: Some(Repeated.into()),
1861                                r#type: Some(Message.into()),
1862                                type_name: Some(".google.protobuf.EnumValueDescriptorProto".into()),
1863                                extendee: None,
1864                                default_value: None,
1865                                oneof_index: None,
1866                                json_name: Some("value".into()),
1867                                options: None,
1868                                proto3_optional: None,
1869                            },
1870                            FieldDescriptorProto {
1871                                name: Some("options".into()),
1872                                number: Some(3),
1873                                label: Some(Optional.into()),
1874                                r#type: Some(Message.into()),
1875                                type_name: Some(".google.protobuf.EnumOptions".into()),
1876                                extendee: None,
1877                                default_value: None,
1878                                oneof_index: None,
1879                                json_name: Some("options".into()),
1880                                options: None,
1881                                proto3_optional: None,
1882                            },
1883                            FieldDescriptorProto {
1884                                name: Some("reserved_range".into()),
1885                                number: Some(4),
1886                                label: Some(Repeated.into()),
1887                                r#type: Some(Message.into()),
1888                                type_name: Some(
1889                                    ".google.protobuf.EnumDescriptorProto.EnumReservedRange".into(),
1890                                ),
1891                                extendee: None,
1892                                default_value: None,
1893                                oneof_index: None,
1894                                json_name: Some("reservedRange".into()),
1895                                options: None,
1896                                proto3_optional: None,
1897                            },
1898                            FieldDescriptorProto {
1899                                name: Some("reserved_name".into()),
1900                                number: Some(5),
1901                                label: Some(Repeated.into()),
1902                                r#type: Some(String.into()),
1903                                type_name: None,
1904                                extendee: None,
1905                                default_value: None,
1906                                oneof_index: None,
1907                                json_name: Some("reservedName".into()),
1908                                options: None,
1909                                proto3_optional: None,
1910                            },
1911                        ],
1912                        extension: vec![],
1913                        nested_type: vec![DescriptorProto {
1914                            name: Some("EnumReservedRange".into()),
1915                            field: vec![
1916                                FieldDescriptorProto {
1917                                    name: Some("start".into()),
1918                                    number: Some(1),
1919                                    label: Some(Optional.into()),
1920                                    r#type: Some(Int32.into()),
1921                                    type_name: None,
1922                                    extendee: None,
1923                                    default_value: None,
1924                                    oneof_index: None,
1925                                    json_name: Some("start".into()),
1926                                    options: None,
1927                                    proto3_optional: None,
1928                                },
1929                                FieldDescriptorProto {
1930                                    name: Some("end".into()),
1931                                    number: Some(2),
1932                                    label: Some(Optional.into()),
1933                                    r#type: Some(Int32.into()),
1934                                    type_name: None,
1935                                    extendee: None,
1936                                    default_value: None,
1937                                    oneof_index: None,
1938                                    json_name: Some("end".into()),
1939                                    options: None,
1940                                    proto3_optional: None,
1941                                },
1942                            ],
1943                            extension: vec![],
1944                            nested_type: vec![],
1945                            enum_type: vec![],
1946                            extension_range: vec![],
1947                            oneof_decl: vec![],
1948                            options: None,
1949                            reserved_range: vec![],
1950                            reserved_name: vec![],
1951                        }],
1952                        enum_type: vec![],
1953                        extension_range: vec![],
1954                        oneof_decl: vec![],
1955                        options: None,
1956                        reserved_range: vec![],
1957                        reserved_name: vec![],
1958                    },
1959                    DescriptorProto {
1960                        name: Some("EnumValueDescriptorProto".into()),
1961                        field: vec![
1962                            FieldDescriptorProto {
1963                                name: Some("name".into()),
1964                                number: Some(1),
1965                                label: Some(Optional.into()),
1966                                r#type: Some(String.into()),
1967                                type_name: None,
1968                                extendee: None,
1969                                default_value: None,
1970                                oneof_index: None,
1971                                json_name: Some("name".into()),
1972                                options: None,
1973                                proto3_optional: None,
1974                            },
1975                            FieldDescriptorProto {
1976                                name: Some("number".into()),
1977                                number: Some(2),
1978                                label: Some(Optional.into()),
1979                                r#type: Some(Int32.into()),
1980                                type_name: None,
1981                                extendee: None,
1982                                default_value: None,
1983                                oneof_index: None,
1984                                json_name: Some("number".into()),
1985                                options: None,
1986                                proto3_optional: None,
1987                            },
1988                            FieldDescriptorProto {
1989                                name: Some("options".into()),
1990                                number: Some(3),
1991                                label: Some(Optional.into()),
1992                                r#type: Some(Message.into()),
1993                                type_name: Some(".google.protobuf.EnumValueOptions".into()),
1994                                extendee: None,
1995                                default_value: None,
1996                                oneof_index: None,
1997                                json_name: Some("options".into()),
1998                                options: None,
1999                                proto3_optional: None,
2000                            },
2001                        ],
2002                        extension: vec![],
2003                        nested_type: vec![],
2004                        enum_type: vec![],
2005                        extension_range: vec![],
2006                        oneof_decl: vec![],
2007                        options: None,
2008                        reserved_range: vec![],
2009                        reserved_name: vec![],
2010                    },
2011                    DescriptorProto {
2012                        name: Some("ServiceDescriptorProto".into()),
2013                        field: vec![
2014                            FieldDescriptorProto {
2015                                name: Some("name".into()),
2016                                number: Some(1),
2017                                label: Some(Optional.into()),
2018                                r#type: Some(String.into()),
2019                                type_name: None,
2020                                extendee: None,
2021                                default_value: None,
2022                                oneof_index: None,
2023                                json_name: Some("name".into()),
2024                                options: None,
2025                                proto3_optional: None,
2026                            },
2027                            FieldDescriptorProto {
2028                                name: Some("method".into()),
2029                                number: Some(2),
2030                                label: Some(Repeated.into()),
2031                                r#type: Some(Message.into()),
2032                                type_name: Some(".google.protobuf.MethodDescriptorProto".into()),
2033                                extendee: None,
2034                                default_value: None,
2035                                oneof_index: None,
2036                                json_name: Some("method".into()),
2037                                options: None,
2038                                proto3_optional: None,
2039                            },
2040                            FieldDescriptorProto {
2041                                name: Some("options".into()),
2042                                number: Some(3),
2043                                label: Some(Optional.into()),
2044                                r#type: Some(Message.into()),
2045                                type_name: Some(".google.protobuf.ServiceOptions".into()),
2046                                extendee: None,
2047                                default_value: None,
2048                                oneof_index: None,
2049                                json_name: Some("options".into()),
2050                                options: None,
2051                                proto3_optional: None,
2052                            },
2053                        ],
2054                        extension: vec![],
2055                        nested_type: vec![],
2056                        enum_type: vec![],
2057                        extension_range: vec![],
2058                        oneof_decl: vec![],
2059                        options: None,
2060                        reserved_range: vec![],
2061                        reserved_name: vec![],
2062                    },
2063                    DescriptorProto {
2064                        name: Some("MethodDescriptorProto".into()),
2065                        field: vec![
2066                            FieldDescriptorProto {
2067                                name: Some("name".into()),
2068                                number: Some(1),
2069                                label: Some(Optional.into()),
2070                                r#type: Some(String.into()),
2071                                type_name: None,
2072                                extendee: None,
2073                                default_value: None,
2074                                oneof_index: None,
2075                                json_name: Some("name".into()),
2076                                options: None,
2077                                proto3_optional: None,
2078                            },
2079                            FieldDescriptorProto {
2080                                name: Some("input_type".into()),
2081                                number: Some(2),
2082                                label: Some(Optional.into()),
2083                                r#type: Some(String.into()),
2084                                type_name: None,
2085                                extendee: None,
2086                                default_value: None,
2087                                oneof_index: None,
2088                                json_name: Some("inputType".into()),
2089                                options: None,
2090                                proto3_optional: None,
2091                            },
2092                            FieldDescriptorProto {
2093                                name: Some("output_type".into()),
2094                                number: Some(3),
2095                                label: Some(Optional.into()),
2096                                r#type: Some(String.into()),
2097                                type_name: None,
2098                                extendee: None,
2099                                default_value: None,
2100                                oneof_index: None,
2101                                json_name: Some("outputType".into()),
2102                                options: None,
2103                                proto3_optional: None,
2104                            },
2105                            FieldDescriptorProto {
2106                                name: Some("options".into()),
2107                                number: Some(4),
2108                                label: Some(Optional.into()),
2109                                r#type: Some(Message.into()),
2110                                type_name: Some(".google.protobuf.MethodOptions".into()),
2111                                extendee: None,
2112                                default_value: None,
2113                                oneof_index: None,
2114                                json_name: Some("options".into()),
2115                                options: None,
2116                                proto3_optional: None,
2117                            },
2118                            FieldDescriptorProto {
2119                                name: Some("client_streaming".into()),
2120                                number: Some(5),
2121                                label: Some(Optional.into()),
2122                                r#type: Some(Bool.into()),
2123                                type_name: None,
2124                                extendee: None,
2125                                default_value: Some("false".into()),
2126                                oneof_index: None,
2127                                json_name: Some("clientStreaming".into()),
2128                                options: None,
2129                                proto3_optional: None,
2130                            },
2131                            FieldDescriptorProto {
2132                                name: Some("server_streaming".into()),
2133                                number: Some(6),
2134                                label: Some(Optional.into()),
2135                                r#type: Some(Bool.into()),
2136                                type_name: None,
2137                                extendee: None,
2138                                default_value: Some("false".into()),
2139                                oneof_index: None,
2140                                json_name: Some("serverStreaming".into()),
2141                                options: None,
2142                                proto3_optional: None,
2143                            },
2144                        ],
2145                        extension: vec![],
2146                        nested_type: vec![],
2147                        enum_type: vec![],
2148                        extension_range: vec![],
2149                        oneof_decl: vec![],
2150                        options: None,
2151                        reserved_range: vec![],
2152                        reserved_name: vec![],
2153                    },
2154                    DescriptorProto {
2155                        name: Some("FileOptions".into()),
2156                        field: vec![
2157                            FieldDescriptorProto {
2158                                name: Some("java_package".into()),
2159                                number: Some(1),
2160                                label: Some(Optional.into()),
2161                                r#type: Some(String.into()),
2162                                type_name: None,
2163                                extendee: None,
2164                                default_value: None,
2165                                oneof_index: None,
2166                                json_name: Some("javaPackage".into()),
2167                                options: None,
2168                                proto3_optional: None,
2169                            },
2170                            FieldDescriptorProto {
2171                                name: Some("java_outer_classname".into()),
2172                                number: Some(8),
2173                                label: Some(Optional.into()),
2174                                r#type: Some(String.into()),
2175                                type_name: None,
2176                                extendee: None,
2177                                default_value: None,
2178                                oneof_index: None,
2179                                json_name: Some("javaOuterClassname".into()),
2180                                options: None,
2181                                proto3_optional: None,
2182                            },
2183                            FieldDescriptorProto {
2184                                name: Some("java_multiple_files".into()),
2185                                number: Some(10),
2186                                label: Some(Optional.into()),
2187                                r#type: Some(Bool.into()),
2188                                type_name: None,
2189                                extendee: None,
2190                                default_value: Some("false".into()),
2191                                oneof_index: None,
2192                                json_name: Some("javaMultipleFiles".into()),
2193                                options: None,
2194                                proto3_optional: None,
2195                            },
2196                            FieldDescriptorProto {
2197                                name: Some("java_generate_equals_and_hash".into()),
2198                                number: Some(20),
2199                                label: Some(Optional.into()),
2200                                r#type: Some(Bool.into()),
2201                                type_name: None,
2202                                extendee: None,
2203                                default_value: None,
2204                                oneof_index: None,
2205                                json_name: Some("javaGenerateEqualsAndHash".into()),
2206                                options: Some(Options::from_prost(FieldOptions {
2207                                    ctype: None,
2208                                    packed: None,
2209                                    jstype: None,
2210                                    lazy: None,
2211                                    deprecated: Some(true),
2212                                    weak: None,
2213                                    uninterpreted_option: vec![],
2214                                })),
2215                                proto3_optional: None,
2216                            },
2217                            FieldDescriptorProto {
2218                                name: Some("java_string_check_utf8".into()),
2219                                number: Some(27),
2220                                label: Some(Optional.into()),
2221                                r#type: Some(Bool.into()),
2222                                type_name: None,
2223                                extendee: None,
2224                                default_value: Some("false".into()),
2225                                oneof_index: None,
2226                                json_name: Some("javaStringCheckUtf8".into()),
2227                                options: None,
2228                                proto3_optional: None,
2229                            },
2230                            FieldDescriptorProto {
2231                                name: Some("optimize_for".into()),
2232                                number: Some(9),
2233                                label: Some(Optional.into()),
2234                                r#type: Some(Enum.into()),
2235                                type_name: Some(".google.protobuf.FileOptions.OptimizeMode".into()),
2236                                extendee: None,
2237                                default_value: Some("SPEED".into()),
2238                                oneof_index: None,
2239                                json_name: Some("optimizeFor".into()),
2240                                options: None,
2241                                proto3_optional: None,
2242                            },
2243                            FieldDescriptorProto {
2244                                name: Some("go_package".into()),
2245                                number: Some(11),
2246                                label: Some(Optional.into()),
2247                                r#type: Some(String.into()),
2248                                type_name: None,
2249                                extendee: None,
2250                                default_value: None,
2251                                oneof_index: None,
2252                                json_name: Some("goPackage".into()),
2253                                options: None,
2254                                proto3_optional: None,
2255                            },
2256                            FieldDescriptorProto {
2257                                name: Some("cc_generic_services".into()),
2258                                number: Some(16),
2259                                label: Some(Optional.into()),
2260                                r#type: Some(Bool.into()),
2261                                type_name: None,
2262                                extendee: None,
2263                                default_value: Some("false".into()),
2264                                oneof_index: None,
2265                                json_name: Some("ccGenericServices".into()),
2266                                options: None,
2267                                proto3_optional: None,
2268                            },
2269                            FieldDescriptorProto {
2270                                name: Some("java_generic_services".into()),
2271                                number: Some(17),
2272                                label: Some(Optional.into()),
2273                                r#type: Some(Bool.into()),
2274                                type_name: None,
2275                                extendee: None,
2276                                default_value: Some("false".into()),
2277                                oneof_index: None,
2278                                json_name: Some("javaGenericServices".into()),
2279                                options: None,
2280                                proto3_optional: None,
2281                            },
2282                            FieldDescriptorProto {
2283                                name: Some("py_generic_services".into()),
2284                                number: Some(18),
2285                                label: Some(Optional.into()),
2286                                r#type: Some(Bool.into()),
2287                                type_name: None,
2288                                extendee: None,
2289                                default_value: Some("false".into()),
2290                                oneof_index: None,
2291                                json_name: Some("pyGenericServices".into()),
2292                                options: None,
2293                                proto3_optional: None,
2294                            },
2295                            FieldDescriptorProto {
2296                                name: Some("php_generic_services".into()),
2297                                number: Some(42),
2298                                label: Some(Optional.into()),
2299                                r#type: Some(Bool.into()),
2300                                type_name: None,
2301                                extendee: None,
2302                                default_value: Some("false".into()),
2303                                oneof_index: None,
2304                                json_name: Some("phpGenericServices".into()),
2305                                options: None,
2306                                proto3_optional: None,
2307                            },
2308                            FieldDescriptorProto {
2309                                name: Some("deprecated".into()),
2310                                number: Some(23),
2311                                label: Some(Optional.into()),
2312                                r#type: Some(Bool.into()),
2313                                type_name: None,
2314                                extendee: None,
2315                                default_value: Some("false".into()),
2316                                oneof_index: None,
2317                                json_name: Some("deprecated".into()),
2318                                options: None,
2319                                proto3_optional: None,
2320                            },
2321                            FieldDescriptorProto {
2322                                name: Some("cc_enable_arenas".into()),
2323                                number: Some(31),
2324                                label: Some(Optional.into()),
2325                                r#type: Some(Bool.into()),
2326                                type_name: None,
2327                                extendee: None,
2328                                default_value: Some("true".into()),
2329                                oneof_index: None,
2330                                json_name: Some("ccEnableArenas".into()),
2331                                options: None,
2332                                proto3_optional: None,
2333                            },
2334                            FieldDescriptorProto {
2335                                name: Some("objc_class_prefix".into()),
2336                                number: Some(36),
2337                                label: Some(Optional.into()),
2338                                r#type: Some(String.into()),
2339                                type_name: None,
2340                                extendee: None,
2341                                default_value: None,
2342                                oneof_index: None,
2343                                json_name: Some("objcClassPrefix".into()),
2344                                options: None,
2345                                proto3_optional: None,
2346                            },
2347                            FieldDescriptorProto {
2348                                name: Some("csharp_namespace".into()),
2349                                number: Some(37),
2350                                label: Some(Optional.into()),
2351                                r#type: Some(String.into()),
2352                                type_name: None,
2353                                extendee: None,
2354                                default_value: None,
2355                                oneof_index: None,
2356                                json_name: Some("csharpNamespace".into()),
2357                                options: None,
2358                                proto3_optional: None,
2359                            },
2360                            FieldDescriptorProto {
2361                                name: Some("swift_prefix".into()),
2362                                number: Some(39),
2363                                label: Some(Optional.into()),
2364                                r#type: Some(String.into()),
2365                                type_name: None,
2366                                extendee: None,
2367                                default_value: None,
2368                                oneof_index: None,
2369                                json_name: Some("swiftPrefix".into()),
2370                                options: None,
2371                                proto3_optional: None,
2372                            },
2373                            FieldDescriptorProto {
2374                                name: Some("php_class_prefix".into()),
2375                                number: Some(40),
2376                                label: Some(Optional.into()),
2377                                r#type: Some(String.into()),
2378                                type_name: None,
2379                                extendee: None,
2380                                default_value: None,
2381                                oneof_index: None,
2382                                json_name: Some("phpClassPrefix".into()),
2383                                options: None,
2384                                proto3_optional: None,
2385                            },
2386                            FieldDescriptorProto {
2387                                name: Some("php_namespace".into()),
2388                                number: Some(41),
2389                                label: Some(Optional.into()),
2390                                r#type: Some(String.into()),
2391                                type_name: None,
2392                                extendee: None,
2393                                default_value: None,
2394                                oneof_index: None,
2395                                json_name: Some("phpNamespace".into()),
2396                                options: None,
2397                                proto3_optional: None,
2398                            },
2399                            FieldDescriptorProto {
2400                                name: Some("php_metadata_namespace".into()),
2401                                number: Some(44),
2402                                label: Some(Optional.into()),
2403                                r#type: Some(String.into()),
2404                                type_name: None,
2405                                extendee: None,
2406                                default_value: None,
2407                                oneof_index: None,
2408                                json_name: Some("phpMetadataNamespace".into()),
2409                                options: None,
2410                                proto3_optional: None,
2411                            },
2412                            FieldDescriptorProto {
2413                                name: Some("ruby_package".into()),
2414                                number: Some(45),
2415                                label: Some(Optional.into()),
2416                                r#type: Some(String.into()),
2417                                type_name: None,
2418                                extendee: None,
2419                                default_value: None,
2420                                oneof_index: None,
2421                                json_name: Some("rubyPackage".into()),
2422                                options: None,
2423                                proto3_optional: None,
2424                            },
2425                            FieldDescriptorProto {
2426                                name: Some("uninterpreted_option".into()),
2427                                number: Some(999),
2428                                label: Some(Repeated.into()),
2429                                r#type: Some(Message.into()),
2430                                type_name: Some(".google.protobuf.UninterpretedOption".into()),
2431                                extendee: None,
2432                                default_value: None,
2433                                oneof_index: None,
2434                                json_name: Some("uninterpretedOption".into()),
2435                                options: None,
2436                                proto3_optional: None,
2437                            },
2438                        ],
2439                        extension: vec![],
2440                        nested_type: vec![],
2441                        enum_type: vec![EnumDescriptorProto {
2442                            name: Some("OptimizeMode".into()),
2443                            value: vec![
2444                                EnumValueDescriptorProto {
2445                                    name: Some("SPEED".into()),
2446                                    number: Some(1),
2447                                    options: None,
2448                                },
2449                                EnumValueDescriptorProto {
2450                                    name: Some("CODE_SIZE".into()),
2451                                    number: Some(2),
2452                                    options: None,
2453                                },
2454                                EnumValueDescriptorProto {
2455                                    name: Some("LITE_RUNTIME".into()),
2456                                    number: Some(3),
2457                                    options: None,
2458                                },
2459                            ],
2460                            options: None,
2461                            reserved_range: vec![],
2462                            reserved_name: vec![],
2463                        }],
2464                        extension_range: vec![ExtensionRange {
2465                            start: Some(1000),
2466                            end: Some(536870912),
2467                            options: None,
2468                        }],
2469                        oneof_decl: vec![],
2470                        options: None,
2471                        reserved_range: vec![ReservedRange {
2472                            start: Some(38),
2473                            end: Some(39),
2474                        }],
2475                        reserved_name: vec![],
2476                    },
2477                    DescriptorProto {
2478                        name: Some("MessageOptions".into()),
2479                        field: vec![
2480                            FieldDescriptorProto {
2481                                name: Some("message_set_wire_format".into()),
2482                                number: Some(1),
2483                                label: Some(Optional.into()),
2484                                r#type: Some(Bool.into()),
2485                                type_name: None,
2486                                extendee: None,
2487                                default_value: Some("false".into()),
2488                                oneof_index: None,
2489                                json_name: Some("messageSetWireFormat".into()),
2490                                options: None,
2491                                proto3_optional: None,
2492                            },
2493                            FieldDescriptorProto {
2494                                name: Some("no_standard_descriptor_accessor".into()),
2495                                number: Some(2),
2496                                label: Some(Optional.into()),
2497                                r#type: Some(Bool.into()),
2498                                type_name: None,
2499                                extendee: None,
2500                                default_value: Some("false".into()),
2501                                oneof_index: None,
2502                                json_name: Some("noStandardDescriptorAccessor".into()),
2503                                options: None,
2504                                proto3_optional: None,
2505                            },
2506                            FieldDescriptorProto {
2507                                name: Some("deprecated".into()),
2508                                number: Some(3),
2509                                label: Some(Optional.into()),
2510                                r#type: Some(Bool.into()),
2511                                type_name: None,
2512                                extendee: None,
2513                                default_value: Some("false".into()),
2514                                oneof_index: None,
2515                                json_name: Some("deprecated".into()),
2516                                options: None,
2517                                proto3_optional: None,
2518                            },
2519                            FieldDescriptorProto {
2520                                name: Some("map_entry".into()),
2521                                number: Some(7),
2522                                label: Some(Optional.into()),
2523                                r#type: Some(Bool.into()),
2524                                type_name: None,
2525                                extendee: None,
2526                                default_value: None,
2527                                oneof_index: None,
2528                                json_name: Some("mapEntry".into()),
2529                                options: None,
2530                                proto3_optional: None,
2531                            },
2532                            FieldDescriptorProto {
2533                                name: Some("uninterpreted_option".into()),
2534                                number: Some(999),
2535                                label: Some(Repeated.into()),
2536                                r#type: Some(Message.into()),
2537                                type_name: Some(".google.protobuf.UninterpretedOption".into()),
2538                                extendee: None,
2539                                default_value: None,
2540                                oneof_index: None,
2541                                json_name: Some("uninterpretedOption".into()),
2542                                options: None,
2543                                proto3_optional: None,
2544                            },
2545                        ],
2546                        extension: vec![],
2547                        nested_type: vec![],
2548                        enum_type: vec![],
2549                        extension_range: vec![ExtensionRange {
2550                            start: Some(1000),
2551                            end: Some(536870912),
2552                            options: None,
2553                        }],
2554                        oneof_decl: vec![],
2555                        options: None,
2556                        reserved_range: vec![
2557                            ReservedRange {
2558                                start: Some(4),
2559                                end: Some(5),
2560                            },
2561                            ReservedRange {
2562                                start: Some(5),
2563                                end: Some(6),
2564                            },
2565                            ReservedRange {
2566                                start: Some(6),
2567                                end: Some(7),
2568                            },
2569                            ReservedRange {
2570                                start: Some(8),
2571                                end: Some(9),
2572                            },
2573                            ReservedRange {
2574                                start: Some(9),
2575                                end: Some(10),
2576                            },
2577                        ],
2578                        reserved_name: vec![],
2579                    },
2580                    DescriptorProto {
2581                        name: Some("FieldOptions".into()),
2582                        field: vec![
2583                            FieldDescriptorProto {
2584                                name: Some("ctype".into()),
2585                                number: Some(1),
2586                                label: Some(Optional.into()),
2587                                r#type: Some(Enum.into()),
2588                                type_name: Some(".google.protobuf.FieldOptions.CType".into()),
2589                                extendee: None,
2590                                default_value: Some("STRING".into()),
2591                                oneof_index: None,
2592                                json_name: Some("ctype".into()),
2593                                options: None,
2594                                proto3_optional: None,
2595                            },
2596                            FieldDescriptorProto {
2597                                name: Some("packed".into()),
2598                                number: Some(2),
2599                                label: Some(Optional.into()),
2600                                r#type: Some(Bool.into()),
2601                                type_name: None,
2602                                extendee: None,
2603                                default_value: None,
2604                                oneof_index: None,
2605                                json_name: Some("packed".into()),
2606                                options: None,
2607                                proto3_optional: None,
2608                            },
2609                            FieldDescriptorProto {
2610                                name: Some("jstype".into()),
2611                                number: Some(6),
2612                                label: Some(Optional.into()),
2613                                r#type: Some(Enum.into()),
2614                                type_name: Some(".google.protobuf.FieldOptions.JSType".into()),
2615                                extendee: None,
2616                                default_value: Some("JS_NORMAL".into()),
2617                                oneof_index: None,
2618                                json_name: Some("jstype".into()),
2619                                options: None,
2620                                proto3_optional: None,
2621                            },
2622                            FieldDescriptorProto {
2623                                name: Some("lazy".into()),
2624                                number: Some(5),
2625                                label: Some(Optional.into()),
2626                                r#type: Some(Bool.into()),
2627                                type_name: None,
2628                                extendee: None,
2629                                default_value: Some("false".into()),
2630                                oneof_index: None,
2631                                json_name: Some("lazy".into()),
2632                                options: None,
2633                                proto3_optional: None,
2634                            },
2635                            FieldDescriptorProto {
2636                                name: Some("unverified_lazy".into()),
2637                                number: Some(15),
2638                                label: Some(Optional.into()),
2639                                r#type: Some(Bool.into()),
2640                                type_name: None,
2641                                extendee: None,
2642                                default_value: Some("false".into()),
2643                                oneof_index: None,
2644                                json_name: Some("unverifiedLazy".into()),
2645                                options: None,
2646                                proto3_optional: None,
2647                            },
2648                            FieldDescriptorProto {
2649                                name: Some("deprecated".into()),
2650                                number: Some(3),
2651                                label: Some(Optional.into()),
2652                                r#type: Some(Bool.into()),
2653                                type_name: None,
2654                                extendee: None,
2655                                default_value: Some("false".into()),
2656                                oneof_index: None,
2657                                json_name: Some("deprecated".into()),
2658                                options: None,
2659                                proto3_optional: None,
2660                            },
2661                            FieldDescriptorProto {
2662                                name: Some("weak".into()),
2663                                number: Some(10),
2664                                label: Some(Optional.into()),
2665                                r#type: Some(Bool.into()),
2666                                type_name: None,
2667                                extendee: None,
2668                                default_value: Some("false".into()),
2669                                oneof_index: None,
2670                                json_name: Some("weak".into()),
2671                                options: None,
2672                                proto3_optional: None,
2673                            },
2674                            FieldDescriptorProto {
2675                                name: Some("uninterpreted_option".into()),
2676                                number: Some(999),
2677                                label: Some(Repeated.into()),
2678                                r#type: Some(Message.into()),
2679                                type_name: Some(".google.protobuf.UninterpretedOption".into()),
2680                                extendee: None,
2681                                default_value: None,
2682                                oneof_index: None,
2683                                json_name: Some("uninterpretedOption".into()),
2684                                options: None,
2685                                proto3_optional: None,
2686                            },
2687                        ],
2688                        extension: vec![],
2689                        nested_type: vec![],
2690                        enum_type: vec![
2691                            EnumDescriptorProto {
2692                                name: Some("CType".into()),
2693                                value: vec![
2694                                    EnumValueDescriptorProto {
2695                                        name: Some("STRING".into()),
2696                                        number: Some(0),
2697                                        options: None,
2698                                    },
2699                                    EnumValueDescriptorProto {
2700                                        name: Some("CORD".into()),
2701                                        number: Some(1),
2702                                        options: None,
2703                                    },
2704                                    EnumValueDescriptorProto {
2705                                        name: Some("STRING_PIECE".into()),
2706                                        number: Some(2),
2707                                        options: None,
2708                                    },
2709                                ],
2710                                options: None,
2711                                reserved_range: vec![],
2712                                reserved_name: vec![],
2713                            },
2714                            EnumDescriptorProto {
2715                                name: Some("JSType".into()),
2716                                value: vec![
2717                                    EnumValueDescriptorProto {
2718                                        name: Some("JS_NORMAL".into()),
2719                                        number: Some(0),
2720                                        options: None,
2721                                    },
2722                                    EnumValueDescriptorProto {
2723                                        name: Some("JS_STRING".into()),
2724                                        number: Some(1),
2725                                        options: None,
2726                                    },
2727                                    EnumValueDescriptorProto {
2728                                        name: Some("JS_NUMBER".into()),
2729                                        number: Some(2),
2730                                        options: None,
2731                                    },
2732                                ],
2733                                options: None,
2734                                reserved_range: vec![],
2735                                reserved_name: vec![],
2736                            },
2737                        ],
2738                        extension_range: vec![ExtensionRange {
2739                            start: Some(1000),
2740                            end: Some(536870912),
2741                            options: None,
2742                        }],
2743                        oneof_decl: vec![],
2744                        options: None,
2745                        reserved_range: vec![ReservedRange {
2746                            start: Some(4),
2747                            end: Some(5),
2748                        }],
2749                        reserved_name: vec![],
2750                    },
2751                    DescriptorProto {
2752                        name: Some("OneofOptions".into()),
2753                        field: vec![FieldDescriptorProto {
2754                            name: Some("uninterpreted_option".into()),
2755                            number: Some(999),
2756                            label: Some(Repeated.into()),
2757                            r#type: Some(Message.into()),
2758                            type_name: Some(".google.protobuf.UninterpretedOption".into()),
2759                            extendee: None,
2760                            default_value: None,
2761                            oneof_index: None,
2762                            json_name: Some("uninterpretedOption".into()),
2763                            options: None,
2764                            proto3_optional: None,
2765                        }],
2766                        extension: vec![],
2767                        nested_type: vec![],
2768                        enum_type: vec![],
2769                        extension_range: vec![ExtensionRange {
2770                            start: Some(1000),
2771                            end: Some(536870912),
2772                            options: None,
2773                        }],
2774                        oneof_decl: vec![],
2775                        options: None,
2776                        reserved_range: vec![],
2777                        reserved_name: vec![],
2778                    },
2779                    DescriptorProto {
2780                        name: Some("EnumOptions".into()),
2781                        field: vec![
2782                            FieldDescriptorProto {
2783                                name: Some("allow_alias".into()),
2784                                number: Some(2),
2785                                label: Some(Optional.into()),
2786                                r#type: Some(Bool.into()),
2787                                type_name: None,
2788                                extendee: None,
2789                                default_value: None,
2790                                oneof_index: None,
2791                                json_name: Some("allowAlias".into()),
2792                                options: None,
2793                                proto3_optional: None,
2794                            },
2795                            FieldDescriptorProto {
2796                                name: Some("deprecated".into()),
2797                                number: Some(3),
2798                                label: Some(Optional.into()),
2799                                r#type: Some(Bool.into()),
2800                                type_name: None,
2801                                extendee: None,
2802                                default_value: Some("false".into()),
2803                                oneof_index: None,
2804                                json_name: Some("deprecated".into()),
2805                                options: None,
2806                                proto3_optional: None,
2807                            },
2808                            FieldDescriptorProto {
2809                                name: Some("uninterpreted_option".into()),
2810                                number: Some(999),
2811                                label: Some(Repeated.into()),
2812                                r#type: Some(Message.into()),
2813                                type_name: Some(".google.protobuf.UninterpretedOption".into()),
2814                                extendee: None,
2815                                default_value: None,
2816                                oneof_index: None,
2817                                json_name: Some("uninterpretedOption".into()),
2818                                options: None,
2819                                proto3_optional: None,
2820                            },
2821                        ],
2822                        extension: vec![],
2823                        nested_type: vec![],
2824                        enum_type: vec![],
2825                        extension_range: vec![ExtensionRange {
2826                            start: Some(1000),
2827                            end: Some(536870912),
2828                            options: None,
2829                        }],
2830                        oneof_decl: vec![],
2831                        options: None,
2832                        reserved_range: vec![ReservedRange {
2833                            start: Some(5),
2834                            end: Some(6),
2835                        }],
2836                        reserved_name: vec![],
2837                    },
2838                    DescriptorProto {
2839                        name: Some("EnumValueOptions".into()),
2840                        field: vec![
2841                            FieldDescriptorProto {
2842                                name: Some("deprecated".into()),
2843                                number: Some(1),
2844                                label: Some(Optional.into()),
2845                                r#type: Some(Bool.into()),
2846                                type_name: None,
2847                                extendee: None,
2848                                default_value: Some("false".into()),
2849                                oneof_index: None,
2850                                json_name: Some("deprecated".into()),
2851                                options: None,
2852                                proto3_optional: None,
2853                            },
2854                            FieldDescriptorProto {
2855                                name: Some("uninterpreted_option".into()),
2856                                number: Some(999),
2857                                label: Some(Repeated.into()),
2858                                r#type: Some(Message.into()),
2859                                type_name: Some(".google.protobuf.UninterpretedOption".into()),
2860                                extendee: None,
2861                                default_value: None,
2862                                oneof_index: None,
2863                                json_name: Some("uninterpretedOption".into()),
2864                                options: None,
2865                                proto3_optional: None,
2866                            },
2867                        ],
2868                        extension: vec![],
2869                        nested_type: vec![],
2870                        enum_type: vec![],
2871                        extension_range: vec![ExtensionRange {
2872                            start: Some(1000),
2873                            end: Some(536870912),
2874                            options: None,
2875                        }],
2876                        oneof_decl: vec![],
2877                        options: None,
2878                        reserved_range: vec![],
2879                        reserved_name: vec![],
2880                    },
2881                    DescriptorProto {
2882                        name: Some("ServiceOptions".into()),
2883                        field: vec![
2884                            FieldDescriptorProto {
2885                                name: Some("deprecated".into()),
2886                                number: Some(33),
2887                                label: Some(Optional.into()),
2888                                r#type: Some(Bool.into()),
2889                                type_name: None,
2890                                extendee: None,
2891                                default_value: Some("false".into()),
2892                                oneof_index: None,
2893                                json_name: Some("deprecated".into()),
2894                                options: None,
2895                                proto3_optional: None,
2896                            },
2897                            FieldDescriptorProto {
2898                                name: Some("uninterpreted_option".into()),
2899                                number: Some(999),
2900                                label: Some(Repeated.into()),
2901                                r#type: Some(Message.into()),
2902                                type_name: Some(".google.protobuf.UninterpretedOption".into()),
2903                                extendee: None,
2904                                default_value: None,
2905                                oneof_index: None,
2906                                json_name: Some("uninterpretedOption".into()),
2907                                options: None,
2908                                proto3_optional: None,
2909                            },
2910                        ],
2911                        extension: vec![],
2912                        nested_type: vec![],
2913                        enum_type: vec![],
2914                        extension_range: vec![ExtensionRange {
2915                            start: Some(1000),
2916                            end: Some(536870912),
2917                            options: None,
2918                        }],
2919                        oneof_decl: vec![],
2920                        options: None,
2921                        reserved_range: vec![],
2922                        reserved_name: vec![],
2923                    },
2924                    DescriptorProto {
2925                        name: Some("MethodOptions".into()),
2926                        field: vec![
2927                            FieldDescriptorProto {
2928                                name: Some("deprecated".into()),
2929                                number: Some(33),
2930                                label: Some(Optional.into()),
2931                                r#type: Some(Bool.into()),
2932                                type_name: None,
2933                                extendee: None,
2934                                default_value: Some("false".into()),
2935                                oneof_index: None,
2936                                json_name: Some("deprecated".into()),
2937                                options: None,
2938                                proto3_optional: None,
2939                            },
2940                            FieldDescriptorProto {
2941                                name: Some("idempotency_level".into()),
2942                                number: Some(34),
2943                                label: Some(Optional.into()),
2944                                r#type: Some(Enum.into()),
2945                                type_name: Some(
2946                                    ".google.protobuf.MethodOptions.IdempotencyLevel".into(),
2947                                ),
2948                                extendee: None,
2949                                default_value: Some("IDEMPOTENCY_UNKNOWN".into()),
2950                                oneof_index: None,
2951                                json_name: Some("idempotencyLevel".into()),
2952                                options: None,
2953                                proto3_optional: None,
2954                            },
2955                            FieldDescriptorProto {
2956                                name: Some("uninterpreted_option".into()),
2957                                number: Some(999),
2958                                label: Some(Repeated.into()),
2959                                r#type: Some(Message.into()),
2960                                type_name: Some(".google.protobuf.UninterpretedOption".into()),
2961                                extendee: None,
2962                                default_value: None,
2963                                oneof_index: None,
2964                                json_name: Some("uninterpretedOption".into()),
2965                                options: None,
2966                                proto3_optional: None,
2967                            },
2968                        ],
2969                        extension: vec![],
2970                        nested_type: vec![],
2971                        enum_type: vec![EnumDescriptorProto {
2972                            name: Some("IdempotencyLevel".into()),
2973                            value: vec![
2974                                EnumValueDescriptorProto {
2975                                    name: Some("IDEMPOTENCY_UNKNOWN".into()),
2976                                    number: Some(0),
2977                                    options: None,
2978                                },
2979                                EnumValueDescriptorProto {
2980                                    name: Some("NO_SIDE_EFFECTS".into()),
2981                                    number: Some(1),
2982                                    options: None,
2983                                },
2984                                EnumValueDescriptorProto {
2985                                    name: Some("IDEMPOTENT".into()),
2986                                    number: Some(2),
2987                                    options: None,
2988                                },
2989                            ],
2990                            options: None,
2991                            reserved_range: vec![],
2992                            reserved_name: vec![],
2993                        }],
2994                        extension_range: vec![ExtensionRange {
2995                            start: Some(1000),
2996                            end: Some(536870912),
2997                            options: None,
2998                        }],
2999                        oneof_decl: vec![],
3000                        options: None,
3001                        reserved_range: vec![],
3002                        reserved_name: vec![],
3003                    },
3004                    DescriptorProto {
3005                        name: Some("UninterpretedOption".into()),
3006                        field: vec![
3007                            FieldDescriptorProto {
3008                                name: Some("name".into()),
3009                                number: Some(2),
3010                                label: Some(Repeated.into()),
3011                                r#type: Some(Message.into()),
3012                                type_name: Some(
3013                                    ".google.protobuf.UninterpretedOption.NamePart".into(),
3014                                ),
3015                                extendee: None,
3016                                default_value: None,
3017                                oneof_index: None,
3018                                json_name: Some("name".into()),
3019                                options: None,
3020                                proto3_optional: None,
3021                            },
3022                            FieldDescriptorProto {
3023                                name: Some("identifier_value".into()),
3024                                number: Some(3),
3025                                label: Some(Optional.into()),
3026                                r#type: Some(String.into()),
3027                                type_name: None,
3028                                extendee: None,
3029                                default_value: None,
3030                                oneof_index: None,
3031                                json_name: Some("identifierValue".into()),
3032                                options: None,
3033                                proto3_optional: None,
3034                            },
3035                            FieldDescriptorProto {
3036                                name: Some("positive_int_value".into()),
3037                                number: Some(4),
3038                                label: Some(Optional.into()),
3039                                r#type: Some(Uint64.into()),
3040                                type_name: None,
3041                                extendee: None,
3042                                default_value: None,
3043                                oneof_index: None,
3044                                json_name: Some("positiveIntValue".into()),
3045                                options: None,
3046                                proto3_optional: None,
3047                            },
3048                            FieldDescriptorProto {
3049                                name: Some("negative_int_value".into()),
3050                                number: Some(5),
3051                                label: Some(Optional.into()),
3052                                r#type: Some(Int64.into()),
3053                                type_name: None,
3054                                extendee: None,
3055                                default_value: None,
3056                                oneof_index: None,
3057                                json_name: Some("negativeIntValue".into()),
3058                                options: None,
3059                                proto3_optional: None,
3060                            },
3061                            FieldDescriptorProto {
3062                                name: Some("double_value".into()),
3063                                number: Some(6),
3064                                label: Some(Optional.into()),
3065                                r#type: Some(Double.into()),
3066                                type_name: None,
3067                                extendee: None,
3068                                default_value: None,
3069                                oneof_index: None,
3070                                json_name: Some("doubleValue".into()),
3071                                options: None,
3072                                proto3_optional: None,
3073                            },
3074                            FieldDescriptorProto {
3075                                name: Some("string_value".into()),
3076                                number: Some(7),
3077                                label: Some(Optional.into()),
3078                                r#type: Some(Bytes.into()),
3079                                type_name: None,
3080                                extendee: None,
3081                                default_value: None,
3082                                oneof_index: None,
3083                                json_name: Some("stringValue".into()),
3084                                options: None,
3085                                proto3_optional: None,
3086                            },
3087                            FieldDescriptorProto {
3088                                name: Some("aggregate_value".into()),
3089                                number: Some(8),
3090                                label: Some(Optional.into()),
3091                                r#type: Some(String.into()),
3092                                type_name: None,
3093                                extendee: None,
3094                                default_value: None,
3095                                oneof_index: None,
3096                                json_name: Some("aggregateValue".into()),
3097                                options: None,
3098                                proto3_optional: None,
3099                            },
3100                        ],
3101                        extension: vec![],
3102                        nested_type: vec![DescriptorProto {
3103                            name: Some("NamePart".into()),
3104                            field: vec![
3105                                FieldDescriptorProto {
3106                                    name: Some("name_part".into()),
3107                                    number: Some(1),
3108                                    label: Some(Required.into()),
3109                                    r#type: Some(String.into()),
3110                                    type_name: None,
3111                                    extendee: None,
3112                                    default_value: None,
3113                                    oneof_index: None,
3114                                    json_name: Some("namePart".into()),
3115                                    options: None,
3116                                    proto3_optional: None,
3117                                },
3118                                FieldDescriptorProto {
3119                                    name: Some("is_extension".into()),
3120                                    number: Some(2),
3121                                    label: Some(Required.into()),
3122                                    r#type: Some(Bool.into()),
3123                                    type_name: None,
3124                                    extendee: None,
3125                                    default_value: None,
3126                                    oneof_index: None,
3127                                    json_name: Some("isExtension".into()),
3128                                    options: None,
3129                                    proto3_optional: None,
3130                                },
3131                            ],
3132                            extension: vec![],
3133                            nested_type: vec![],
3134                            enum_type: vec![],
3135                            extension_range: vec![],
3136                            oneof_decl: vec![],
3137                            options: None,
3138                            reserved_range: vec![],
3139                            reserved_name: vec![],
3140                        }],
3141                        enum_type: vec![],
3142                        extension_range: vec![],
3143                        oneof_decl: vec![],
3144                        options: None,
3145                        reserved_range: vec![],
3146                        reserved_name: vec![],
3147                    },
3148                    DescriptorProto {
3149                        name: Some("SourceCodeInfo".into()),
3150                        field: vec![FieldDescriptorProto {
3151                            name: Some("location".into()),
3152                            number: Some(1),
3153                            label: Some(Repeated.into()),
3154                            r#type: Some(Message.into()),
3155                            type_name: Some(".google.protobuf.SourceCodeInfo.Location".into()),
3156                            extendee: None,
3157                            default_value: None,
3158                            oneof_index: None,
3159                            json_name: Some("location".into()),
3160                            options: None,
3161                            proto3_optional: None,
3162                        }],
3163                        extension: vec![],
3164                        nested_type: vec![DescriptorProto {
3165                            name: Some("Location".into()),
3166                            field: vec![
3167                                FieldDescriptorProto {
3168                                    name: Some("path".into()),
3169                                    number: Some(1),
3170                                    label: Some(Repeated.into()),
3171                                    r#type: Some(Int32.into()),
3172                                    type_name: None,
3173                                    extendee: None,
3174                                    default_value: None,
3175                                    oneof_index: None,
3176                                    json_name: Some("path".into()),
3177                                    options: Some(Options::from_prost(FieldOptions {
3178                                        ctype: None,
3179                                        packed: Some(true),
3180                                        jstype: None,
3181                                        lazy: None,
3182                                        deprecated: None,
3183                                        weak: None,
3184                                        uninterpreted_option: vec![],
3185                                    })),
3186                                    proto3_optional: None,
3187                                },
3188                                FieldDescriptorProto {
3189                                    name: Some("span".into()),
3190                                    number: Some(2),
3191                                    label: Some(Repeated.into()),
3192                                    r#type: Some(Int32.into()),
3193                                    type_name: None,
3194                                    extendee: None,
3195                                    default_value: None,
3196                                    oneof_index: None,
3197                                    json_name: Some("span".into()),
3198                                    options: Some(Options::from_prost(FieldOptions {
3199                                        ctype: None,
3200                                        packed: Some(true),
3201                                        jstype: None,
3202                                        lazy: None,
3203                                        deprecated: None,
3204                                        weak: None,
3205                                        uninterpreted_option: vec![],
3206                                    })),
3207                                    proto3_optional: None,
3208                                },
3209                                FieldDescriptorProto {
3210                                    name: Some("leading_comments".into()),
3211                                    number: Some(3),
3212                                    label: Some(Optional.into()),
3213                                    r#type: Some(String.into()),
3214                                    type_name: None,
3215                                    extendee: None,
3216                                    default_value: None,
3217                                    oneof_index: None,
3218                                    json_name: Some("leadingComments".into()),
3219                                    options: None,
3220                                    proto3_optional: None,
3221                                },
3222                                FieldDescriptorProto {
3223                                    name: Some("trailing_comments".into()),
3224                                    number: Some(4),
3225                                    label: Some(Optional.into()),
3226                                    r#type: Some(String.into()),
3227                                    type_name: None,
3228                                    extendee: None,
3229                                    default_value: None,
3230                                    oneof_index: None,
3231                                    json_name: Some("trailingComments".into()),
3232                                    options: None,
3233                                    proto3_optional: None,
3234                                },
3235                                FieldDescriptorProto {
3236                                    name: Some("leading_detached_comments".into()),
3237                                    number: Some(6),
3238                                    label: Some(Repeated.into()),
3239                                    r#type: Some(String.into()),
3240                                    type_name: None,
3241                                    extendee: None,
3242                                    default_value: None,
3243                                    oneof_index: None,
3244                                    json_name: Some("leadingDetachedComments".into()),
3245                                    options: None,
3246                                    proto3_optional: None,
3247                                },
3248                            ],
3249                            extension: vec![],
3250                            nested_type: vec![],
3251                            enum_type: vec![],
3252                            extension_range: vec![],
3253                            oneof_decl: vec![],
3254                            options: None,
3255                            reserved_range: vec![],
3256                            reserved_name: vec![],
3257                        }],
3258                        enum_type: vec![],
3259                        extension_range: vec![],
3260                        oneof_decl: vec![],
3261                        options: None,
3262                        reserved_range: vec![],
3263                        reserved_name: vec![],
3264                    },
3265                    DescriptorProto {
3266                        name: Some("GeneratedCodeInfo".into()),
3267                        field: vec![FieldDescriptorProto {
3268                            name: Some("annotation".into()),
3269                            number: Some(1),
3270                            label: Some(Repeated.into()),
3271                            r#type: Some(Message.into()),
3272                            type_name: Some(".google.protobuf.GeneratedCodeInfo.Annotation".into()),
3273                            extendee: None,
3274                            default_value: None,
3275                            oneof_index: None,
3276                            json_name: Some("annotation".into()),
3277                            options: None,
3278                            proto3_optional: None,
3279                        }],
3280                        extension: vec![],
3281                        nested_type: vec![DescriptorProto {
3282                            name: Some("Annotation".into()),
3283                            field: vec![
3284                                FieldDescriptorProto {
3285                                    name: Some("path".into()),
3286                                    number: Some(1),
3287                                    label: Some(Repeated.into()),
3288                                    r#type: Some(Int32.into()),
3289                                    type_name: None,
3290                                    extendee: None,
3291                                    default_value: None,
3292                                    oneof_index: None,
3293                                    json_name: Some("path".into()),
3294                                    options: Some(Options::from_prost(FieldOptions {
3295                                        ctype: None,
3296                                        packed: Some(true),
3297                                        jstype: None,
3298                                        lazy: None,
3299                                        deprecated: None,
3300                                        weak: None,
3301                                        uninterpreted_option: vec![],
3302                                    })),
3303                                    proto3_optional: None,
3304                                },
3305                                FieldDescriptorProto {
3306                                    name: Some("source_file".into()),
3307                                    number: Some(2),
3308                                    label: Some(Optional.into()),
3309                                    r#type: Some(String.into()),
3310                                    type_name: None,
3311                                    extendee: None,
3312                                    default_value: None,
3313                                    oneof_index: None,
3314                                    json_name: Some("sourceFile".into()),
3315                                    options: None,
3316                                    proto3_optional: None,
3317                                },
3318                                FieldDescriptorProto {
3319                                    name: Some("begin".into()),
3320                                    number: Some(3),
3321                                    label: Some(Optional.into()),
3322                                    r#type: Some(Int32.into()),
3323                                    type_name: None,
3324                                    extendee: None,
3325                                    default_value: None,
3326                                    oneof_index: None,
3327                                    json_name: Some("begin".into()),
3328                                    options: None,
3329                                    proto3_optional: None,
3330                                },
3331                                FieldDescriptorProto {
3332                                    name: Some("end".into()),
3333                                    number: Some(4),
3334                                    label: Some(Optional.into()),
3335                                    r#type: Some(Int32.into()),
3336                                    type_name: None,
3337                                    extendee: None,
3338                                    default_value: None,
3339                                    oneof_index: None,
3340                                    json_name: Some("end".into()),
3341                                    options: None,
3342                                    proto3_optional: None,
3343                                },
3344                                FieldDescriptorProto {
3345                                    name: Some("semantic".into()),
3346                                    number: Some(5),
3347                                    label: Some(Optional.into()),
3348                                    r#type: Some(Enum.into()),
3349                                    type_name: Some(
3350                                        ".google.protobuf.GeneratedCodeInfo.Annotation.Semantic"
3351                                            .into(),
3352                                    ),
3353                                    extendee: None,
3354                                    default_value: None,
3355                                    oneof_index: None,
3356                                    json_name: Some("semantic".into()),
3357                                    options: None,
3358                                    proto3_optional: None,
3359                                },
3360                            ],
3361                            extension: vec![],
3362                            nested_type: vec![],
3363                            enum_type: vec![EnumDescriptorProto {
3364                                name: Some("Semantic".into()),
3365                                value: vec![
3366                                    EnumValueDescriptorProto {
3367                                        name: Some("NONE".into()),
3368                                        number: Some(0),
3369                                        options: None,
3370                                    },
3371                                    EnumValueDescriptorProto {
3372                                        name: Some("SET".into()),
3373                                        number: Some(1),
3374                                        options: None,
3375                                    },
3376                                    EnumValueDescriptorProto {
3377                                        name: Some("ALIAS".into()),
3378                                        number: Some(2),
3379                                        options: None,
3380                                    },
3381                                ],
3382                                options: None,
3383                                reserved_range: vec![],
3384                                reserved_name: vec![],
3385                            }],
3386                            extension_range: vec![],
3387                            oneof_decl: vec![],
3388                            options: None,
3389                            reserved_range: vec![],
3390                            reserved_name: vec![],
3391                        }],
3392                        enum_type: vec![],
3393                        extension_range: vec![],
3394                        oneof_decl: vec![],
3395                        options: None,
3396                        reserved_range: vec![],
3397                        reserved_name: vec![],
3398                    },
3399                ],
3400                enum_type: vec![],
3401                service: vec![],
3402                extension: vec![],
3403                options: Some(Options::from_prost(FileOptions {
3404                    java_package: Some("com.google.protobuf".into()),
3405                    java_outer_classname: Some("DescriptorProtos".into()),
3406                    java_multiple_files: None,
3407                    java_generate_equals_and_hash: None,
3408                    java_string_check_utf8: None,
3409                    optimize_for: Some(Speed.into()),
3410                    go_package: Some("google.golang.org/protobuf/types/descriptorpb".into()),
3411                    cc_generic_services: None,
3412                    java_generic_services: None,
3413                    py_generic_services: None,
3414                    php_generic_services: None,
3415                    deprecated: None,
3416                    cc_enable_arenas: Some(true),
3417                    objc_class_prefix: Some("GPB".into()),
3418                    csharp_namespace: Some("Google.Protobuf.Reflection".into()),
3419                    swift_prefix: None,
3420                    php_class_prefix: None,
3421                    php_namespace: None,
3422                    php_metadata_namespace: None,
3423                    ruby_package: None,
3424                    uninterpreted_option: vec![],
3425                })),
3426                source_code_info: None,
3427                syntax: None,
3428            },
3429            FileDescriptorProto {
3430                name: Some("google/protobuf/duration.proto".into()),
3431                package: Some("google.protobuf".into()),
3432                dependency: vec![],
3433                public_dependency: vec![],
3434                weak_dependency: vec![],
3435                message_type: vec![DescriptorProto {
3436                    name: Some("Duration".into()),
3437                    field: vec![
3438                        FieldDescriptorProto {
3439                            name: Some("seconds".into()),
3440                            number: Some(1),
3441                            label: Some(Optional.into()),
3442                            r#type: Some(Int64.into()),
3443                            type_name: None,
3444                            extendee: None,
3445                            default_value: None,
3446                            oneof_index: None,
3447                            json_name: Some("seconds".into()),
3448                            options: None,
3449                            proto3_optional: None,
3450                        },
3451                        FieldDescriptorProto {
3452                            name: Some("nanos".into()),
3453                            number: Some(2),
3454                            label: Some(Optional.into()),
3455                            r#type: Some(Int32.into()),
3456                            type_name: None,
3457                            extendee: None,
3458                            default_value: None,
3459                            oneof_index: None,
3460                            json_name: Some("nanos".into()),
3461                            options: None,
3462                            proto3_optional: None,
3463                        },
3464                    ],
3465                    extension: vec![],
3466                    nested_type: vec![],
3467                    enum_type: vec![],
3468                    extension_range: vec![],
3469                    oneof_decl: vec![],
3470                    options: None,
3471                    reserved_range: vec![],
3472                    reserved_name: vec![],
3473                }],
3474                enum_type: vec![],
3475                service: vec![],
3476                extension: vec![],
3477                options: Some(Options::from_prost(FileOptions {
3478                    java_package: Some("com.google.protobuf".into()),
3479                    java_outer_classname: Some("DurationProto".into()),
3480                    java_multiple_files: Some(true),
3481                    java_generate_equals_and_hash: None,
3482                    java_string_check_utf8: None,
3483                    optimize_for: None,
3484                    go_package: Some("google.golang.org/protobuf/types/known/durationpb".into()),
3485                    cc_generic_services: None,
3486                    java_generic_services: None,
3487                    py_generic_services: None,
3488                    php_generic_services: None,
3489                    deprecated: None,
3490                    cc_enable_arenas: Some(true),
3491                    objc_class_prefix: Some("GPB".into()),
3492                    csharp_namespace: Some("Google.Protobuf.WellKnownTypes".into()),
3493                    swift_prefix: None,
3494                    php_class_prefix: None,
3495                    php_namespace: None,
3496                    php_metadata_namespace: None,
3497                    ruby_package: None,
3498                    uninterpreted_option: vec![],
3499                })),
3500                source_code_info: None,
3501                syntax: Some("proto3".into()),
3502            },
3503            FileDescriptorProto {
3504                name: Some("google/protobuf/empty.proto".into()),
3505                package: Some("google.protobuf".into()),
3506                dependency: vec![],
3507                public_dependency: vec![],
3508                weak_dependency: vec![],
3509                message_type: vec![DescriptorProto {
3510                    name: Some("Empty".into()),
3511                    field: vec![],
3512                    extension: vec![],
3513                    nested_type: vec![],
3514                    enum_type: vec![],
3515                    extension_range: vec![],
3516                    oneof_decl: vec![],
3517                    options: None,
3518                    reserved_range: vec![],
3519                    reserved_name: vec![],
3520                }],
3521                enum_type: vec![],
3522                service: vec![],
3523                extension: vec![],
3524                options: Some(Options::from_prost(FileOptions {
3525                    java_package: Some("com.google.protobuf".into()),
3526                    java_outer_classname: Some("EmptyProto".into()),
3527                    java_multiple_files: Some(true),
3528                    java_generate_equals_and_hash: None,
3529                    java_string_check_utf8: None,
3530                    optimize_for: None,
3531                    go_package: Some("google.golang.org/protobuf/types/known/emptypb".into()),
3532                    cc_generic_services: None,
3533                    java_generic_services: None,
3534                    py_generic_services: None,
3535                    php_generic_services: None,
3536                    deprecated: None,
3537                    cc_enable_arenas: Some(true),
3538                    objc_class_prefix: Some("GPB".into()),
3539                    csharp_namespace: Some("Google.Protobuf.WellKnownTypes".into()),
3540                    swift_prefix: None,
3541                    php_class_prefix: None,
3542                    php_namespace: None,
3543                    php_metadata_namespace: None,
3544                    ruby_package: None,
3545                    uninterpreted_option: vec![],
3546                })),
3547                source_code_info: None,
3548                syntax: Some("proto3".into()),
3549            },
3550            FileDescriptorProto {
3551                name: Some("google/protobuf/field_mask.proto".into()),
3552                package: Some("google.protobuf".into()),
3553                dependency: vec![],
3554                public_dependency: vec![],
3555                weak_dependency: vec![],
3556                message_type: vec![DescriptorProto {
3557                    name: Some("FieldMask".into()),
3558                    field: vec![FieldDescriptorProto {
3559                        name: Some("paths".into()),
3560                        number: Some(1),
3561                        label: Some(Repeated.into()),
3562                        r#type: Some(String.into()),
3563                        type_name: None,
3564                        extendee: None,
3565                        default_value: None,
3566                        oneof_index: None,
3567                        json_name: Some("paths".into()),
3568                        options: None,
3569                        proto3_optional: None,
3570                    }],
3571                    extension: vec![],
3572                    nested_type: vec![],
3573                    enum_type: vec![],
3574                    extension_range: vec![],
3575                    oneof_decl: vec![],
3576                    options: None,
3577                    reserved_range: vec![],
3578                    reserved_name: vec![],
3579                }],
3580                enum_type: vec![],
3581                service: vec![],
3582                extension: vec![],
3583                options: Some(Options::from_prost(FileOptions {
3584                    java_package: Some("com.google.protobuf".into()),
3585                    java_outer_classname: Some("FieldMaskProto".into()),
3586                    java_multiple_files: Some(true),
3587                    java_generate_equals_and_hash: None,
3588                    java_string_check_utf8: None,
3589                    optimize_for: None,
3590                    go_package: Some("google.golang.org/protobuf/types/known/fieldmaskpb".into()),
3591                    cc_generic_services: None,
3592                    java_generic_services: None,
3593                    py_generic_services: None,
3594                    php_generic_services: None,
3595                    deprecated: None,
3596                    cc_enable_arenas: Some(true),
3597                    objc_class_prefix: Some("GPB".into()),
3598                    csharp_namespace: Some("Google.Protobuf.WellKnownTypes".into()),
3599                    swift_prefix: None,
3600                    php_class_prefix: None,
3601                    php_namespace: None,
3602                    php_metadata_namespace: None,
3603                    ruby_package: None,
3604                    uninterpreted_option: vec![],
3605                })),
3606                source_code_info: None,
3607                syntax: Some("proto3".into()),
3608            },
3609            FileDescriptorProto {
3610                name: Some("google/protobuf/struct.proto".into()),
3611                package: Some("google.protobuf".into()),
3612                dependency: vec![],
3613                public_dependency: vec![],
3614                weak_dependency: vec![],
3615                message_type: vec![
3616                    DescriptorProto {
3617                        name: Some("Struct".into()),
3618                        field: vec![FieldDescriptorProto {
3619                            name: Some("fields".into()),
3620                            number: Some(1),
3621                            label: Some(Repeated.into()),
3622                            r#type: Some(Message.into()),
3623                            type_name: Some(".google.protobuf.Struct.FieldsEntry".into()),
3624                            extendee: None,
3625                            default_value: None,
3626                            oneof_index: None,
3627                            json_name: Some("fields".into()),
3628                            options: None,
3629                            proto3_optional: None,
3630                        }],
3631                        extension: vec![],
3632                        nested_type: vec![DescriptorProto {
3633                            name: Some("FieldsEntry".into()),
3634                            field: vec![
3635                                FieldDescriptorProto {
3636                                    name: Some("key".into()),
3637                                    number: Some(1),
3638                                    label: Some(Optional.into()),
3639                                    r#type: Some(String.into()),
3640                                    type_name: None,
3641                                    extendee: None,
3642                                    default_value: None,
3643                                    oneof_index: None,
3644                                    json_name: Some("key".into()),
3645                                    options: None,
3646                                    proto3_optional: None,
3647                                },
3648                                FieldDescriptorProto {
3649                                    name: Some("value".into()),
3650                                    number: Some(2),
3651                                    label: Some(Optional.into()),
3652                                    r#type: Some(Message.into()),
3653                                    type_name: Some(".google.protobuf.Value".into()),
3654                                    extendee: None,
3655                                    default_value: None,
3656                                    oneof_index: None,
3657                                    json_name: Some("value".into()),
3658                                    options: None,
3659                                    proto3_optional: None,
3660                                },
3661                            ],
3662                            extension: vec![],
3663                            nested_type: vec![],
3664                            enum_type: vec![],
3665                            extension_range: vec![],
3666                            oneof_decl: vec![],
3667                            options: Some(Options::from_prost(MessageOptions {
3668                                message_set_wire_format: None,
3669                                no_standard_descriptor_accessor: None,
3670                                deprecated: None,
3671                                map_entry: Some(true),
3672                                uninterpreted_option: vec![],
3673                            })),
3674                            reserved_range: vec![],
3675                            reserved_name: vec![],
3676                        }],
3677                        enum_type: vec![],
3678                        extension_range: vec![],
3679                        oneof_decl: vec![],
3680                        options: None,
3681                        reserved_range: vec![],
3682                        reserved_name: vec![],
3683                    },
3684                    DescriptorProto {
3685                        name: Some("Value".into()),
3686                        field: vec![
3687                            FieldDescriptorProto {
3688                                name: Some("null_value".into()),
3689                                number: Some(1),
3690                                label: Some(Optional.into()),
3691                                r#type: Some(Enum.into()),
3692                                type_name: Some(".google.protobuf.NullValue".into()),
3693                                extendee: None,
3694                                default_value: None,
3695                                oneof_index: Some(0),
3696                                json_name: Some("nullValue".into()),
3697                                options: None,
3698                                proto3_optional: None,
3699                            },
3700                            FieldDescriptorProto {
3701                                name: Some("number_value".into()),
3702                                number: Some(2),
3703                                label: Some(Optional.into()),
3704                                r#type: Some(Double.into()),
3705                                type_name: None,
3706                                extendee: None,
3707                                default_value: None,
3708                                oneof_index: Some(0),
3709                                json_name: Some("numberValue".into()),
3710                                options: None,
3711                                proto3_optional: None,
3712                            },
3713                            FieldDescriptorProto {
3714                                name: Some("string_value".into()),
3715                                number: Some(3),
3716                                label: Some(Optional.into()),
3717                                r#type: Some(String.into()),
3718                                type_name: None,
3719                                extendee: None,
3720                                default_value: None,
3721                                oneof_index: Some(0),
3722                                json_name: Some("stringValue".into()),
3723                                options: None,
3724                                proto3_optional: None,
3725                            },
3726                            FieldDescriptorProto {
3727                                name: Some("bool_value".into()),
3728                                number: Some(4),
3729                                label: Some(Optional.into()),
3730                                r#type: Some(Bool.into()),
3731                                type_name: None,
3732                                extendee: None,
3733                                default_value: None,
3734                                oneof_index: Some(0),
3735                                json_name: Some("boolValue".into()),
3736                                options: None,
3737                                proto3_optional: None,
3738                            },
3739                            FieldDescriptorProto {
3740                                name: Some("struct_value".into()),
3741                                number: Some(5),
3742                                label: Some(Optional.into()),
3743                                r#type: Some(Message.into()),
3744                                type_name: Some(".google.protobuf.Struct".into()),
3745                                extendee: None,
3746                                default_value: None,
3747                                oneof_index: Some(0),
3748                                json_name: Some("structValue".into()),
3749                                options: None,
3750                                proto3_optional: None,
3751                            },
3752                            FieldDescriptorProto {
3753                                name: Some("list_value".into()),
3754                                number: Some(6),
3755                                label: Some(Optional.into()),
3756                                r#type: Some(Message.into()),
3757                                type_name: Some(".google.protobuf.ListValue".into()),
3758                                extendee: None,
3759                                default_value: None,
3760                                oneof_index: Some(0),
3761                                json_name: Some("listValue".into()),
3762                                options: None,
3763                                proto3_optional: None,
3764                            },
3765                        ],
3766                        extension: vec![],
3767                        nested_type: vec![],
3768                        enum_type: vec![],
3769                        extension_range: vec![],
3770                        oneof_decl: vec![OneofDescriptorProto {
3771                            name: Some("kind".into()),
3772                            options: None,
3773                        }],
3774                        options: None,
3775                        reserved_range: vec![],
3776                        reserved_name: vec![],
3777                    },
3778                    DescriptorProto {
3779                        name: Some("ListValue".into()),
3780                        field: vec![FieldDescriptorProto {
3781                            name: Some("values".into()),
3782                            number: Some(1),
3783                            label: Some(Repeated.into()),
3784                            r#type: Some(Message.into()),
3785                            type_name: Some(".google.protobuf.Value".into()),
3786                            extendee: None,
3787                            default_value: None,
3788                            oneof_index: None,
3789                            json_name: Some("values".into()),
3790                            options: None,
3791                            proto3_optional: None,
3792                        }],
3793                        extension: vec![],
3794                        nested_type: vec![],
3795                        enum_type: vec![],
3796                        extension_range: vec![],
3797                        oneof_decl: vec![],
3798                        options: None,
3799                        reserved_range: vec![],
3800                        reserved_name: vec![],
3801                    },
3802                ],
3803                enum_type: vec![EnumDescriptorProto {
3804                    name: Some("NullValue".into()),
3805                    value: vec![EnumValueDescriptorProto {
3806                        name: Some("NULL_VALUE".into()),
3807                        number: Some(0),
3808                        options: None,
3809                    }],
3810                    options: None,
3811                    reserved_range: vec![],
3812                    reserved_name: vec![],
3813                }],
3814                service: vec![],
3815                extension: vec![],
3816                options: Some(Options::from_prost(FileOptions {
3817                    java_package: Some("com.google.protobuf".into()),
3818                    java_outer_classname: Some("StructProto".into()),
3819                    java_multiple_files: Some(true),
3820                    java_generate_equals_and_hash: None,
3821                    java_string_check_utf8: None,
3822                    optimize_for: None,
3823                    go_package: Some("google.golang.org/protobuf/types/known/structpb".into()),
3824                    cc_generic_services: None,
3825                    java_generic_services: None,
3826                    py_generic_services: None,
3827                    php_generic_services: None,
3828                    deprecated: None,
3829                    cc_enable_arenas: Some(true),
3830                    objc_class_prefix: Some("GPB".into()),
3831                    csharp_namespace: Some("Google.Protobuf.WellKnownTypes".into()),
3832                    swift_prefix: None,
3833                    php_class_prefix: None,
3834                    php_namespace: None,
3835                    php_metadata_namespace: None,
3836                    ruby_package: None,
3837                    uninterpreted_option: vec![],
3838                })),
3839                source_code_info: None,
3840                syntax: Some("proto3".into()),
3841            },
3842            FileDescriptorProto {
3843                name: Some("google/protobuf/timestamp.proto".into()),
3844                package: Some("google.protobuf".into()),
3845                dependency: vec![],
3846                public_dependency: vec![],
3847                weak_dependency: vec![],
3848                message_type: vec![DescriptorProto {
3849                    name: Some("Timestamp".into()),
3850                    field: vec![
3851                        FieldDescriptorProto {
3852                            name: Some("seconds".into()),
3853                            number: Some(1),
3854                            label: Some(Optional.into()),
3855                            r#type: Some(Int64.into()),
3856                            type_name: None,
3857                            extendee: None,
3858                            default_value: None,
3859                            oneof_index: None,
3860                            json_name: Some("seconds".into()),
3861                            options: None,
3862                            proto3_optional: None,
3863                        },
3864                        FieldDescriptorProto {
3865                            name: Some("nanos".into()),
3866                            number: Some(2),
3867                            label: Some(Optional.into()),
3868                            r#type: Some(Int32.into()),
3869                            type_name: None,
3870                            extendee: None,
3871                            default_value: None,
3872                            oneof_index: None,
3873                            json_name: Some("nanos".into()),
3874                            options: None,
3875                            proto3_optional: None,
3876                        },
3877                    ],
3878                    extension: vec![],
3879                    nested_type: vec![],
3880                    enum_type: vec![],
3881                    extension_range: vec![],
3882                    oneof_decl: vec![],
3883                    options: None,
3884                    reserved_range: vec![],
3885                    reserved_name: vec![],
3886                }],
3887                enum_type: vec![],
3888                service: vec![],
3889                extension: vec![],
3890                options: Some(Options::from_prost(FileOptions {
3891                    java_package: Some("com.google.protobuf".into()),
3892                    java_outer_classname: Some("TimestampProto".into()),
3893                    java_multiple_files: Some(true),
3894                    java_generate_equals_and_hash: None,
3895                    java_string_check_utf8: None,
3896                    optimize_for: None,
3897                    go_package: Some("google.golang.org/protobuf/types/known/timestamppb".into()),
3898                    cc_generic_services: None,
3899                    java_generic_services: None,
3900                    py_generic_services: None,
3901                    php_generic_services: None,
3902                    deprecated: None,
3903                    cc_enable_arenas: Some(true),
3904                    objc_class_prefix: Some("GPB".into()),
3905                    csharp_namespace: Some("Google.Protobuf.WellKnownTypes".into()),
3906                    swift_prefix: None,
3907                    php_class_prefix: None,
3908                    php_namespace: None,
3909                    php_metadata_namespace: None,
3910                    ruby_package: None,
3911                    uninterpreted_option: vec![],
3912                })),
3913                source_code_info: None,
3914                syntax: Some("proto3".into()),
3915            },
3916            FileDescriptorProto {
3917                name: Some("google/protobuf/wrappers.proto".into()),
3918                package: Some("google.protobuf".into()),
3919                dependency: vec![],
3920                public_dependency: vec![],
3921                weak_dependency: vec![],
3922                message_type: vec![
3923                    DescriptorProto {
3924                        name: Some("DoubleValue".into()),
3925                        field: vec![FieldDescriptorProto {
3926                            name: Some("value".into()),
3927                            number: Some(1),
3928                            label: Some(Optional.into()),
3929                            r#type: Some(Double.into()),
3930                            type_name: None,
3931                            extendee: None,
3932                            default_value: None,
3933                            oneof_index: None,
3934                            json_name: Some("value".into()),
3935                            options: None,
3936                            proto3_optional: None,
3937                        }],
3938                        extension: vec![],
3939                        nested_type: vec![],
3940                        enum_type: vec![],
3941                        extension_range: vec![],
3942                        oneof_decl: vec![],
3943                        options: None,
3944                        reserved_range: vec![],
3945                        reserved_name: vec![],
3946                    },
3947                    DescriptorProto {
3948                        name: Some("FloatValue".into()),
3949                        field: vec![FieldDescriptorProto {
3950                            name: Some("value".into()),
3951                            number: Some(1),
3952                            label: Some(Optional.into()),
3953                            r#type: Some(Float.into()),
3954                            type_name: None,
3955                            extendee: None,
3956                            default_value: None,
3957                            oneof_index: None,
3958                            json_name: Some("value".into()),
3959                            options: None,
3960                            proto3_optional: None,
3961                        }],
3962                        extension: vec![],
3963                        nested_type: vec![],
3964                        enum_type: vec![],
3965                        extension_range: vec![],
3966                        oneof_decl: vec![],
3967                        options: None,
3968                        reserved_range: vec![],
3969                        reserved_name: vec![],
3970                    },
3971                    DescriptorProto {
3972                        name: Some("Int64Value".into()),
3973                        field: vec![FieldDescriptorProto {
3974                            name: Some("value".into()),
3975                            number: Some(1),
3976                            label: Some(Optional.into()),
3977                            r#type: Some(Int64.into()),
3978                            type_name: None,
3979                            extendee: None,
3980                            default_value: None,
3981                            oneof_index: None,
3982                            json_name: Some("value".into()),
3983                            options: None,
3984                            proto3_optional: None,
3985                        }],
3986                        extension: vec![],
3987                        nested_type: vec![],
3988                        enum_type: vec![],
3989                        extension_range: vec![],
3990                        oneof_decl: vec![],
3991                        options: None,
3992                        reserved_range: vec![],
3993                        reserved_name: vec![],
3994                    },
3995                    DescriptorProto {
3996                        name: Some("UInt64Value".into()),
3997                        field: vec![FieldDescriptorProto {
3998                            name: Some("value".into()),
3999                            number: Some(1),
4000                            label: Some(Optional.into()),
4001                            r#type: Some(Uint64.into()),
4002                            type_name: None,
4003                            extendee: None,
4004                            default_value: None,
4005                            oneof_index: None,
4006                            json_name: Some("value".into()),
4007                            options: None,
4008                            proto3_optional: None,
4009                        }],
4010                        extension: vec![],
4011                        nested_type: vec![],
4012                        enum_type: vec![],
4013                        extension_range: vec![],
4014                        oneof_decl: vec![],
4015                        options: None,
4016                        reserved_range: vec![],
4017                        reserved_name: vec![],
4018                    },
4019                    DescriptorProto {
4020                        name: Some("Int32Value".into()),
4021                        field: vec![FieldDescriptorProto {
4022                            name: Some("value".into()),
4023                            number: Some(1),
4024                            label: Some(Optional.into()),
4025                            r#type: Some(Int32.into()),
4026                            type_name: None,
4027                            extendee: None,
4028                            default_value: None,
4029                            oneof_index: None,
4030                            json_name: Some("value".into()),
4031                            options: None,
4032                            proto3_optional: None,
4033                        }],
4034                        extension: vec![],
4035                        nested_type: vec![],
4036                        enum_type: vec![],
4037                        extension_range: vec![],
4038                        oneof_decl: vec![],
4039                        options: None,
4040                        reserved_range: vec![],
4041                        reserved_name: vec![],
4042                    },
4043                    DescriptorProto {
4044                        name: Some("UInt32Value".into()),
4045                        field: vec![FieldDescriptorProto {
4046                            name: Some("value".into()),
4047                            number: Some(1),
4048                            label: Some(Optional.into()),
4049                            r#type: Some(Uint32.into()),
4050                            type_name: None,
4051                            extendee: None,
4052                            default_value: None,
4053                            oneof_index: None,
4054                            json_name: Some("value".into()),
4055                            options: None,
4056                            proto3_optional: None,
4057                        }],
4058                        extension: vec![],
4059                        nested_type: vec![],
4060                        enum_type: vec![],
4061                        extension_range: vec![],
4062                        oneof_decl: vec![],
4063                        options: None,
4064                        reserved_range: vec![],
4065                        reserved_name: vec![],
4066                    },
4067                    DescriptorProto {
4068                        name: Some("BoolValue".into()),
4069                        field: vec![FieldDescriptorProto {
4070                            name: Some("value".into()),
4071                            number: Some(1),
4072                            label: Some(Optional.into()),
4073                            r#type: Some(Bool.into()),
4074                            type_name: None,
4075                            extendee: None,
4076                            default_value: None,
4077                            oneof_index: None,
4078                            json_name: Some("value".into()),
4079                            options: None,
4080                            proto3_optional: None,
4081                        }],
4082                        extension: vec![],
4083                        nested_type: vec![],
4084                        enum_type: vec![],
4085                        extension_range: vec![],
4086                        oneof_decl: vec![],
4087                        options: None,
4088                        reserved_range: vec![],
4089                        reserved_name: vec![],
4090                    },
4091                    DescriptorProto {
4092                        name: Some("StringValue".into()),
4093                        field: vec![FieldDescriptorProto {
4094                            name: Some("value".into()),
4095                            number: Some(1),
4096                            label: Some(Optional.into()),
4097                            r#type: Some(String.into()),
4098                            type_name: None,
4099                            extendee: None,
4100                            default_value: None,
4101                            oneof_index: None,
4102                            json_name: Some("value".into()),
4103                            options: None,
4104                            proto3_optional: None,
4105                        }],
4106                        extension: vec![],
4107                        nested_type: vec![],
4108                        enum_type: vec![],
4109                        extension_range: vec![],
4110                        oneof_decl: vec![],
4111                        options: None,
4112                        reserved_range: vec![],
4113                        reserved_name: vec![],
4114                    },
4115                    DescriptorProto {
4116                        name: Some("BytesValue".into()),
4117                        field: vec![FieldDescriptorProto {
4118                            name: Some("value".into()),
4119                            number: Some(1),
4120                            label: Some(Optional.into()),
4121                            r#type: Some(Bytes.into()),
4122                            type_name: None,
4123                            extendee: None,
4124                            default_value: None,
4125                            oneof_index: None,
4126                            json_name: Some("value".into()),
4127                            options: None,
4128                            proto3_optional: None,
4129                        }],
4130                        extension: vec![],
4131                        nested_type: vec![],
4132                        enum_type: vec![],
4133                        extension_range: vec![],
4134                        oneof_decl: vec![],
4135                        options: None,
4136                        reserved_range: vec![],
4137                        reserved_name: vec![],
4138                    },
4139                ],
4140                enum_type: vec![],
4141                service: vec![],
4142                extension: vec![],
4143                options: Some(Options::from_prost(FileOptions {
4144                    java_package: Some("com.google.protobuf".into()),
4145                    java_outer_classname: Some("WrappersProto".into()),
4146                    java_multiple_files: Some(true),
4147                    java_generate_equals_and_hash: None,
4148                    java_string_check_utf8: None,
4149                    optimize_for: None,
4150                    go_package: Some("google.golang.org/protobuf/types/known/wrapperspb".into()),
4151                    cc_generic_services: None,
4152                    java_generic_services: None,
4153                    py_generic_services: None,
4154                    php_generic_services: None,
4155                    deprecated: None,
4156                    cc_enable_arenas: Some(true),
4157                    objc_class_prefix: Some("GPB".into()),
4158                    csharp_namespace: Some("Google.Protobuf.WellKnownTypes".into()),
4159                    swift_prefix: None,
4160                    php_class_prefix: None,
4161                    php_namespace: None,
4162                    php_metadata_namespace: None,
4163                    ruby_package: None,
4164                    uninterpreted_option: vec![],
4165                })),
4166                source_code_info: None,
4167                syntax: Some("proto3".into()),
4168            },
4169            FileDescriptorProto {
4170                name: Some("google/protobuf/compiler/plugin.proto".into()),
4171                package: Some("google.protobuf.compiler".into()),
4172                dependency: vec!["google/protobuf/descriptor.proto".into()],
4173                public_dependency: vec![],
4174                weak_dependency: vec![],
4175                message_type: vec![
4176                    DescriptorProto {
4177                        name: Some("Version".into()),
4178                        field: vec![
4179                            FieldDescriptorProto {
4180                                name: Some("major".into()),
4181                                number: Some(1),
4182                                label: Some(Optional.into()),
4183                                r#type: Some(Int32.into()),
4184                                type_name: None,
4185                                extendee: None,
4186                                default_value: None,
4187                                oneof_index: None,
4188                                json_name: Some("major".into()),
4189                                options: None,
4190                                proto3_optional: None,
4191                            },
4192                            FieldDescriptorProto {
4193                                name: Some("minor".into()),
4194                                number: Some(2),
4195                                label: Some(Optional.into()),
4196                                r#type: Some(Int32.into()),
4197                                type_name: None,
4198                                extendee: None,
4199                                default_value: None,
4200                                oneof_index: None,
4201                                json_name: Some("minor".into()),
4202                                options: None,
4203                                proto3_optional: None,
4204                            },
4205                            FieldDescriptorProto {
4206                                name: Some("patch".into()),
4207                                number: Some(3),
4208                                label: Some(Optional.into()),
4209                                r#type: Some(Int32.into()),
4210                                type_name: None,
4211                                extendee: None,
4212                                default_value: None,
4213                                oneof_index: None,
4214                                json_name: Some("patch".into()),
4215                                options: None,
4216                                proto3_optional: None,
4217                            },
4218                            FieldDescriptorProto {
4219                                name: Some("suffix".into()),
4220                                number: Some(4),
4221                                label: Some(Optional.into()),
4222                                r#type: Some(String.into()),
4223                                type_name: None,
4224                                extendee: None,
4225                                default_value: None,
4226                                oneof_index: None,
4227                                json_name: Some("suffix".into()),
4228                                options: None,
4229                                proto3_optional: None,
4230                            },
4231                        ],
4232                        extension: vec![],
4233                        nested_type: vec![],
4234                        enum_type: vec![],
4235                        extension_range: vec![],
4236                        oneof_decl: vec![],
4237                        options: None,
4238                        reserved_range: vec![],
4239                        reserved_name: vec![],
4240                    },
4241                    DescriptorProto {
4242                        name: Some("CodeGeneratorRequest".into()),
4243                        field: vec![
4244                            FieldDescriptorProto {
4245                                name: Some("file_to_generate".into()),
4246                                number: Some(1),
4247                                label: Some(Repeated.into()),
4248                                r#type: Some(String.into()),
4249                                type_name: None,
4250                                extendee: None,
4251                                default_value: None,
4252                                oneof_index: None,
4253                                json_name: Some("fileToGenerate".into()),
4254                                options: None,
4255                                proto3_optional: None,
4256                            },
4257                            FieldDescriptorProto {
4258                                name: Some("parameter".into()),
4259                                number: Some(2),
4260                                label: Some(Optional.into()),
4261                                r#type: Some(String.into()),
4262                                type_name: None,
4263                                extendee: None,
4264                                default_value: None,
4265                                oneof_index: None,
4266                                json_name: Some("parameter".into()),
4267                                options: None,
4268                                proto3_optional: None,
4269                            },
4270                            FieldDescriptorProto {
4271                                name: Some("proto_file".into()),
4272                                number: Some(15),
4273                                label: Some(Repeated.into()),
4274                                r#type: Some(Message.into()),
4275                                type_name: Some(".google.protobuf.FileDescriptorProto".into()),
4276                                extendee: None,
4277                                default_value: None,
4278                                oneof_index: None,
4279                                json_name: Some("protoFile".into()),
4280                                options: None,
4281                                proto3_optional: None,
4282                            },
4283                            FieldDescriptorProto {
4284                                name: Some("compiler_version".into()),
4285                                number: Some(3),
4286                                label: Some(Optional.into()),
4287                                r#type: Some(Message.into()),
4288                                type_name: Some(".google.protobuf.compiler.Version".into()),
4289                                extendee: None,
4290                                default_value: None,
4291                                oneof_index: None,
4292                                json_name: Some("compilerVersion".into()),
4293                                options: None,
4294                                proto3_optional: None,
4295                            },
4296                        ],
4297                        extension: vec![],
4298                        nested_type: vec![],
4299                        enum_type: vec![],
4300                        extension_range: vec![],
4301                        oneof_decl: vec![],
4302                        options: None,
4303                        reserved_range: vec![],
4304                        reserved_name: vec![],
4305                    },
4306                    DescriptorProto {
4307                        name: Some("CodeGeneratorResponse".into()),
4308                        field: vec![
4309                            FieldDescriptorProto {
4310                                name: Some("error".into()),
4311                                number: Some(1),
4312                                label: Some(Optional.into()),
4313                                r#type: Some(String.into()),
4314                                type_name: None,
4315                                extendee: None,
4316                                default_value: None,
4317                                oneof_index: None,
4318                                json_name: Some("error".into()),
4319                                options: None,
4320                                proto3_optional: None,
4321                            },
4322                            FieldDescriptorProto {
4323                                name: Some("supported_features".into()),
4324                                number: Some(2),
4325                                label: Some(Optional.into()),
4326                                r#type: Some(Uint64.into()),
4327                                type_name: None,
4328                                extendee: None,
4329                                default_value: None,
4330                                oneof_index: None,
4331                                json_name: Some("supportedFeatures".into()),
4332                                options: None,
4333                                proto3_optional: None,
4334                            },
4335                            FieldDescriptorProto {
4336                                name: Some("file".into()),
4337                                number: Some(15),
4338                                label: Some(Repeated.into()),
4339                                r#type: Some(Message.into()),
4340                                type_name: Some(
4341                                    ".google.protobuf.compiler.CodeGeneratorResponse.File".into(),
4342                                ),
4343                                extendee: None,
4344                                default_value: None,
4345                                oneof_index: None,
4346                                json_name: Some("file".into()),
4347                                options: None,
4348                                proto3_optional: None,
4349                            },
4350                        ],
4351                        extension: vec![],
4352                        nested_type: vec![DescriptorProto {
4353                            name: Some("File".into()),
4354                            field: vec![
4355                                FieldDescriptorProto {
4356                                    name: Some("name".into()),
4357                                    number: Some(1),
4358                                    label: Some(Optional.into()),
4359                                    r#type: Some(String.into()),
4360                                    type_name: None,
4361                                    extendee: None,
4362                                    default_value: None,
4363                                    oneof_index: None,
4364                                    json_name: Some("name".into()),
4365                                    options: None,
4366                                    proto3_optional: None,
4367                                },
4368                                FieldDescriptorProto {
4369                                    name: Some("insertion_point".into()),
4370                                    number: Some(2),
4371                                    label: Some(Optional.into()),
4372                                    r#type: Some(String.into()),
4373                                    type_name: None,
4374                                    extendee: None,
4375                                    default_value: None,
4376                                    oneof_index: None,
4377                                    json_name: Some("insertionPoint".into()),
4378                                    options: None,
4379                                    proto3_optional: None,
4380                                },
4381                                FieldDescriptorProto {
4382                                    name: Some("content".into()),
4383                                    number: Some(15),
4384                                    label: Some(Optional.into()),
4385                                    r#type: Some(String.into()),
4386                                    type_name: None,
4387                                    extendee: None,
4388                                    default_value: None,
4389                                    oneof_index: None,
4390                                    json_name: Some("content".into()),
4391                                    options: None,
4392                                    proto3_optional: None,
4393                                },
4394                                FieldDescriptorProto {
4395                                    name: Some("generated_code_info".into()),
4396                                    number: Some(16),
4397                                    label: Some(Optional.into()),
4398                                    r#type: Some(Message.into()),
4399                                    type_name: Some(".google.protobuf.GeneratedCodeInfo".into()),
4400                                    extendee: None,
4401                                    default_value: None,
4402                                    oneof_index: None,
4403                                    json_name: Some("generatedCodeInfo".into()),
4404                                    options: None,
4405                                    proto3_optional: None,
4406                                },
4407                            ],
4408                            extension: vec![],
4409                            nested_type: vec![],
4410                            enum_type: vec![],
4411                            extension_range: vec![],
4412                            oneof_decl: vec![],
4413                            options: None,
4414                            reserved_range: vec![],
4415                            reserved_name: vec![],
4416                        }],
4417                        enum_type: vec![EnumDescriptorProto {
4418                            name: Some("Feature".into()),
4419                            value: vec![
4420                                EnumValueDescriptorProto {
4421                                    name: Some("FEATURE_NONE".into()),
4422                                    number: Some(0),
4423                                    options: None,
4424                                },
4425                                EnumValueDescriptorProto {
4426                                    name: Some("FEATURE_PROTO3_OPTIONAL".into()),
4427                                    number: Some(1),
4428                                    options: None,
4429                                },
4430                            ],
4431                            options: None,
4432                            reserved_range: vec![],
4433                            reserved_name: vec![],
4434                        }],
4435                        extension_range: vec![],
4436                        oneof_decl: vec![],
4437                        options: None,
4438                        reserved_range: vec![],
4439                        reserved_name: vec![],
4440                    },
4441                ],
4442                enum_type: vec![],
4443                service: vec![],
4444                extension: vec![],
4445                options: Some(Options::from_prost(FileOptions {
4446                    java_package: Some("com.google.protobuf.compiler".into()),
4447                    java_outer_classname: Some("PluginProtos".into()),
4448                    java_multiple_files: None,
4449                    java_generate_equals_and_hash: None,
4450                    java_string_check_utf8: None,
4451                    optimize_for: None,
4452                    go_package: Some("google.golang.org/protobuf/types/pluginpb".into()),
4453                    cc_generic_services: None,
4454                    java_generic_services: None,
4455                    py_generic_services: None,
4456                    php_generic_services: None,
4457                    deprecated: None,
4458                    cc_enable_arenas: None,
4459                    objc_class_prefix: None,
4460                    csharp_namespace: None,
4461                    swift_prefix: None,
4462                    php_class_prefix: None,
4463                    php_namespace: None,
4464                    php_metadata_namespace: None,
4465                    ruby_package: None,
4466                    uninterpreted_option: vec![],
4467                })),
4468                source_code_info: None,
4469                syntax: None,
4470            },
4471        ],
4472    }
4473}
4474
4475pub fn make_wkt_descriptor_pool() -> Result<DescriptorPool, DescriptorError> {
4476    let file_descriptor_set = make_descriptor();
4477    let mut pool = DescriptorPool::new();
4478    pool.build_files(file_descriptor_set.file.into_iter())?;
4479    Ok(pool)
4480}
4481
4482macro_rules! impl_reflect_message {
4483    ($($ty:ty => $name:literal;)*) => {
4484        $(
4485            impl ReflectMessage for $ty {
4486                #[doc = concat!("Returns a descriptor for the `", $name, "` message type.")]
4487                fn descriptor(&self) -> MessageDescriptor {
4488                    match DescriptorPool::global().get_message_by_name($name) {
4489                        Some(desc) => desc,
4490                        None => panic!("descriptor for well-known type `{}` not found", $name),
4491                    }
4492                }
4493            }
4494        )*
4495
4496        #[test]
4497        fn test_reflect_message_impls() {
4498            $(
4499                assert_eq!(<$ty>::default().descriptor().full_name(), $name);
4500            )*
4501        }
4502    };
4503}
4504
4505impl_reflect_message! {
4506    () => "google.protobuf.Empty";
4507    bool => "google.protobuf.BoolValue";
4508    f32 => "google.protobuf.FloatValue";
4509    f64 => "google.protobuf.DoubleValue";
4510    i32 => "google.protobuf.Int32Value";
4511    i64 => "google.protobuf.Int64Value";
4512    std::string::String => "google.protobuf.StringValue";
4513    u32 => "google.protobuf.UInt32Value";
4514    u64 => "google.protobuf.UInt64Value";
4515    Vec<u8> => "google.protobuf.BytesValue";
4516    prost_types::Any => "google.protobuf.Any";
4517    prost_types::Api => "google.protobuf.Api";
4518    prost_types::compiler::CodeGeneratorRequest => "google.protobuf.compiler.CodeGeneratorRequest";
4519    prost_types::compiler::CodeGeneratorResponse => "google.protobuf.compiler.CodeGeneratorResponse";
4520    prost_types::compiler::code_generator_response::File => "google.protobuf.compiler.CodeGeneratorResponse.File";
4521    prost_types::compiler::Version => "google.protobuf.compiler.Version";
4522    prost_types::DescriptorProto => "google.protobuf.DescriptorProto";
4523    prost_types::descriptor_proto::ExtensionRange => "google.protobuf.DescriptorProto.ExtensionRange";
4524    prost_types::descriptor_proto::ReservedRange => "google.protobuf.DescriptorProto.ReservedRange";
4525    prost_types::Duration => "google.protobuf.Duration";
4526    prost_types::Enum => "google.protobuf.Enum";
4527    prost_types::EnumDescriptorProto => "google.protobuf.EnumDescriptorProto";
4528    prost_types::enum_descriptor_proto::EnumReservedRange => "google.protobuf.EnumDescriptorProto.EnumReservedRange";
4529    prost_types::EnumOptions => "google.protobuf.EnumOptions";
4530    prost_types::EnumValue => "google.protobuf.EnumValue";
4531    prost_types::EnumValueDescriptorProto => "google.protobuf.EnumValueDescriptorProto";
4532    prost_types::EnumValueOptions => "google.protobuf.EnumValueOptions";
4533    prost_types::ExtensionRangeOptions => "google.protobuf.ExtensionRangeOptions";
4534    prost_types::Field => "google.protobuf.Field";
4535    prost_types::FieldDescriptorProto => "google.protobuf.FieldDescriptorProto";
4536    prost_types::FieldMask => "google.protobuf.FieldMask";
4537    prost_types::FieldOptions => "google.protobuf.FieldOptions";
4538    prost_types::FileDescriptorProto => "google.protobuf.FileDescriptorProto";
4539    prost_types::FileDescriptorSet => "google.protobuf.FileDescriptorSet";
4540    prost_types::FileOptions => "google.protobuf.FileOptions";
4541    prost_types::GeneratedCodeInfo => "google.protobuf.GeneratedCodeInfo";
4542    prost_types::generated_code_info::Annotation => "google.protobuf.GeneratedCodeInfo.Annotation";
4543    prost_types::ListValue => "google.protobuf.ListValue";
4544    prost_types::MessageOptions => "google.protobuf.MessageOptions";
4545    prost_types::Method => "google.protobuf.Method";
4546    prost_types::MethodDescriptorProto => "google.protobuf.MethodDescriptorProto";
4547    prost_types::MethodOptions => "google.protobuf.MethodOptions";
4548    prost_types::Mixin => "google.protobuf.Mixin";
4549    prost_types::OneofDescriptorProto => "google.protobuf.OneofDescriptorProto";
4550    prost_types::OneofOptions => "google.protobuf.OneofOptions";
4551    prost_types::Option => "google.protobuf.Option";
4552    prost_types::ServiceDescriptorProto => "google.protobuf.ServiceDescriptorProto";
4553    prost_types::ServiceOptions => "google.protobuf.ServiceOptions";
4554    prost_types::SourceCodeInfo => "google.protobuf.SourceCodeInfo";
4555    prost_types::source_code_info::Location => "google.protobuf.SourceCodeInfo.Location";
4556    prost_types::SourceContext => "google.protobuf.SourceContext";
4557    prost_types::Struct => "google.protobuf.Struct";
4558    prost_types::Timestamp => "google.protobuf.Timestamp";
4559    prost_types::Type => "google.protobuf.Type";
4560    prost_types::UninterpretedOption => "google.protobuf.UninterpretedOption";
4561    prost_types::uninterpreted_option::NamePart => "google.protobuf.UninterpretedOption.NamePart";
4562    prost_types::Value => "google.protobuf.Value";
4563    prost::bytes::Bytes => "google.protobuf.BytesValue";
4564}
4565
4566#[test]
4567fn compare_parsed_and_coded_default_descriptors() {
4568    use prost::Message;
4569
4570    let desc =
4571        crate::descriptor::types::FileDescriptorSet::decode(expected_well_known_types().as_slice())
4572            .unwrap();
4573    let built_in_desc = make_descriptor();
4574
4575    if desc != built_in_desc {
4576        let actual = format!("{built_in_desc:#?}");
4577        let expected = format!("{desc:#?}");
4578        let diff = similar_asserts::SimpleDiff::from_str(&actual, &expected, "actual", "expected");
4579
4580        // If this fails with a non-trivial diff it's reasonable to just dump `desc` via
4581        // the debug representation and afterwards adjust the output to be valid rust code
4582        // The following steps were done for the intial version:
4583        //
4584        // * replace `[` with `vec![`
4585        // * Call `.into()` on strings and enum variants
4586        // * Wrap all options field into `Options::from_prost`
4587        //
4588        // The first two steps can be easily done with a bunch of search and
4589        // replace queries for almost all instances. There are a few cases
4590        // that need to be manually adjusted afterwards
4591        //
4592        // The last step requires manually going through these fields, but
4593        // that's only ~10 instances.
4594        panic!(
4595            "The well known file descriptor returned by `make_description()` \
4596             does not match the expected file descriptor parsed from `src/well_known_types_bytes.bin`: \
4597             {diff}"
4598        );
4599    }
4600}
4601
4602#[cfg(test)]
4603fn expected_well_known_types() -> Vec<u8> {
4604    use protox::{file::GoogleFileResolver, Compiler};
4605
4606    // protox can output a FileDescriptorSet directly, but by going through bytes, this should still work
4607    // when upgrading to a newer prost-types version.
4608    Compiler::with_file_resolver(GoogleFileResolver::new())
4609        .include_source_info(false)
4610        .open_files([
4611            "google/protobuf/any.proto",
4612            "google/protobuf/api.proto",
4613            "google/protobuf/descriptor.proto",
4614            "google/protobuf/duration.proto",
4615            "google/protobuf/empty.proto",
4616            "google/protobuf/field_mask.proto",
4617            "google/protobuf/source_context.proto",
4618            "google/protobuf/struct.proto",
4619            "google/protobuf/timestamp.proto",
4620            "google/protobuf/type.proto",
4621            "google/protobuf/wrappers.proto",
4622            "google/protobuf/compiler/plugin.proto",
4623        ])
4624        .unwrap()
4625        .encode_file_descriptor_set()
4626}