aboutsummaryrefslogblamecommitdiff
path: root/src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs
blob: 4206f261927e10af34b21ba612e74bca8e38e678 (plain) (tree)
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
5831
5832
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842
5843
5844
5845
5846
5847
5848
5849
5850
5851
5852
5853
5854
5855
5856
5857
5858
5859
5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924
5925
5926
5927
5928
5929
5930
5931
5932
5933
5934
5935
5936
5937
5938
5939
5940
5941
5942
5943
5944
5945
5946
5947
5948
5949
5950
5951
5952
5953
5954
5955
5956
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968
5969
5970
5971
5972
5973
5974
5975
5976
5977
5978
5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991
5992
5993
5994
5995
5996
5997
5998
5999
6000
6001
6002
6003
6004
6005
6006
6007
6008
6009
6010
6011
6012
6013
6014
6015
6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
6026
6027
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
6060
6061
6062
6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081
6082
6083
6084
6085
6086
6087
6088
6089
6090
6091
6092
6093
6094
6095
6096
6097
6098
6099
6100
6101
6102
6103
6104
6105
6106
6107
6108
6109
6110
6111
6112
6113
6114
6115
6116
6117
6118
6119
6120
6121
6122
6123
6124
6125
6126
6127
6128
6129
6130
6131
6132
6133
6134
6135


























































































































































































                                                                                                                                                                                                                                                                                                                              
                                                          
































































































































































































                                                                                                                                                                                                        
                                                    



                                                                                                                                      
                                                                        



                                                                                                         
                                                    



                                                                                                                           
                                                                        






































































































































































































































































































































































































                                                                                                                                                                                                                 
                                                    

















                                               
                                                    



















                                                             
                                                    



                                                  
                                                    





















                                                                                                                       
                                                    



                                                                                                                                         
                                                                        



                                                                                                            
                                                    



                                                                                                                              
                                                                        





















                                                                                                                                    
                                                    



                                                                                                                                          
                                                                        



                                                                                                             
                                                    



                                                                                                                               
                                                                        





















                                                                                                                                     
                                                    



                                                                                                                                            
                                                                        



                                                                                                               
                                                    



                                                                                                                                 
                                                                        





















                                                                                                                                       
                                                    



                                                                                                                                            
                                                                        



                                                                                                               
                                                    



                                                                                                                                 
                                                                        



















                                                                                                                                       
                                                    




                                                                                                                      
                                                                        




                                                                                                      
                                                    


































































































































































































































































































































































































































































































































































































































                                                                                                                                                                                                                                                    
                                                    



















                                                                                                                      
                                                    



                                                                                                                                        
                                                                        



                                                                                                           
                                                    



                                                                                                                             
                                                                        





















                                                                                                                                   
                                                    



                                                                                                                                            
                                                                        



                                                                                                               
                                                    



                                                                                                                                 
                                                                        





















                                                                                                                                       
                                                    



                                                                                                                                        
                                                                        



                                                                                                           
                                                    



                                                                                                                             
                                                                        





















                                                                                                                                   
                                                    



                                                                                                                                          
                                                                        



                                                                                                             
                                                    



                                                                                                                               
                                                                        





















                                                                                                                                               
                                                    



                                                                                                                                                                 
                                                                        



                                                                                                                                    
                                                    



                                                                                                                                                      
                                                                        



















                                                                                                                                                            
                                                    




                                                                                                                         
                                                                        




                                                                                                         
                                                    
















































































































































































































































































































































































































                                                                                                                                                                                                      
                                                    







































































                                                                                                                        
                                                    

















                                                
                                                    

















                                                    
                                                    

















                                                                                                     
                                                    




                                                                                                                       
                                                                        




                                                                                                       
                                                    
































































































































































































































































                                                                                                                                                                                                                   
                                                    



















                                                                                                                          
                                                    



                                                                                                                                            
                                                                        



                                                                                                               
                                                    



                                                                                                                                 
                                                                        



















                                                                                                                                       
                                                    




                                                                                                                      
                                                                        




                                                                                                      
                                                    
























































































































































































































































                                                                                                                                                                                     
                                                    



































                                                                                                         
                                                    




                                                                                                                           
                                                                        




                                                                                                           
                                                    
































































































































































































































































                                                                                                                                                                                                              
                                                    



















                                                                                                                        
                                                    



                                                                                                                                          
                                                                        



                                                                                                             
                                                    



                                                                                                                               
                                                                        



















                                                                                                                                     
                                                    




                                                                                                                         
                                                                        




                                                                                                         
                                                    














































































































































































































































































                                                                                                                                                                               
                                                    

















                                                 
                                                    

















                                                  
                                                    

















                                                                                                      
                                                    




                                                                                                                        
                                                                        




                                                                                                        
                                                    























































































































































































































































                                                                                                                                                                                                                       
                                           































































                                                                                                                                                                                           
                                                    

















                                                          
                                                    























































                                                                                                                                   
                                                    



                                                                                                                                                     
                                                                        



                                                                                                                        
                                                    



                                                                                                                                          
                                                                        




















































































































































































                                                                                                                                                                                                                       
                                           


































































                                                                                                                                                                                           
                                                    



                                                                                                                                                     
                                                                        



                                                                                                                        
                                                    



                                                                                                                                          
                                                                        
















































































































































































































                                                                                                                                                                                                                       
                                           









































































                                                                                                                                                                                           
                                                    



















                                                                                                                                   
                                                    



                                                                                                                                                     
                                                                        



                                                                                                                        
                                                    



                                                                                                                                          
                                                                        


































































































































































                                                                                                                                                                                                                       
                                           












































                                                                                                                                                                                           
                                                    



                                                                                                                                                     
                                                                        



                                                                                                                        
                                                    



                                                                                                                                          
                                                                        


































































































































































                                                                                                                                                                                                                       
                                           












































                                                                                                                                                                                           
                                                    



                                                                                                                                                     
                                                                        



                                                                                                                        
                                                    



                                                                                                                                          
                                                                        


































































































































































                                                                                                                                                                                                                       
                                           












































                                                                                                                                                                                           
                                                    



                                                                                                                                                     
                                                                        



                                                                                                                        
                                                    



                                                                                                                                          
                                                                        


































































































































































                                                                                                                                                                                                                       
                                           












































                                                                                                                                                                                           
                                                    



                                                                                                                                                     
                                                                        



                                                                                                                        
                                                    



                                                                                                                                          
                                                                        



























































                                                                                                                                                                               
                                  
                                      

                                      















                                            
                                            





                                                                    
                             














                                                
                               






















































































                                                                                                                   
                                     









































                                                                                                                  

                                               


                                            
                                        
           
                                                     
                                                        
                                       


                                     

                                           
















































































































































































































































































































                                                                                                                                                                                                                                      
                                                    



                                                                                                                                                     
                                                                        



                                                                                                                        
                                                    



                                                                                                                                          
                                                                        



















                                                                                                                                                
                                                    







































































                                                           
                                                    














                                                   
// Generated by the protocol buffer compiler.  DO NOT EDIT!

using pb = global::Google.ProtocolBuffers;
using pbc = global::Google.ProtocolBuffers.Collections;
using pbd = global::Google.ProtocolBuffers.Descriptors;
using scg = global::System.Collections.Generic;
namespace Google.ProtocolBuffers.DescriptorProtos {
  
  public static partial class DescriptorProtoFile {
  
    #region Descriptor
    public static pbd::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static readonly pbd::FileDescriptor descriptor = pbd::FileDescriptor.InternalBuildGeneratedFileFrom(
        global::System.Convert.FromBase64String(
        "CiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bxIPZ29vZ2xlLnBy" + 
        "b3RvYnVmIkcKEUZpbGVEZXNjcmlwdG9yU2V0EjIKBGZpbGUYASADKAsyJC5n" + 
        "b29nbGUucHJvdG9idWYuRmlsZURlc2NyaXB0b3JQcm90byLcAgoTRmlsZURl" + 
        "c2NyaXB0b3JQcm90bxIMCgRuYW1lGAEgASgJEg8KB3BhY2thZ2UYAiABKAkS" + 
        "EgoKZGVwZW5kZW5jeRgDIAMoCRI2CgxtZXNzYWdlX3R5cGUYBCADKAsyIC5n" + 
        "b29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvEjcKCWVudW1fdHlwZRgF" + 
        "IAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5FbnVtRGVzY3JpcHRvclByb3RvEjgK" + 
        "B3NlcnZpY2UYBiADKAsyJy5nb29nbGUucHJvdG9idWYuU2VydmljZURlc2Ny" + 
        "aXB0b3JQcm90bxI4CglleHRlbnNpb24YByADKAsyJS5nb29nbGUucHJvdG9i" + 
        "dWYuRmllbGREZXNjcmlwdG9yUHJvdG8SLQoHb3B0aW9ucxgIIAEoCzIcLmdv" + 
        "b2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9ucyKpAwoPRGVzY3JpcHRvclByb3Rv" + 
        "EgwKBG5hbWUYASABKAkSNAoFZmllbGQYAiADKAsyJS5nb29nbGUucHJvdG9i" + 
        "dWYuRmllbGREZXNjcmlwdG9yUHJvdG8SOAoJZXh0ZW5zaW9uGAYgAygLMiUu" + 
        "Z29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvEjUKC25lc3Rl" + 
        "ZF90eXBlGAMgAygLMiAuZ29vZ2xlLnByb3RvYnVmLkRlc2NyaXB0b3JQcm90" + 
        "bxI3CgllbnVtX3R5cGUYBCADKAsyJC5nb29nbGUucHJvdG9idWYuRW51bURl" + 
        "c2NyaXB0b3JQcm90bxJICg9leHRlbnNpb25fcmFuZ2UYBSADKAsyLy5nb29n" + 
        "bGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvLkV4dGVuc2lvblJhbmdlEjAK" + 
        "B29wdGlvbnMYByABKAsyHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlv" + 
        "bnMaLAoORXh0ZW5zaW9uUmFuZ2USDQoFc3RhcnQYASABKAUSCwoDZW5kGAIg" + 
        "ASgFIpQFChRGaWVsZERlc2NyaXB0b3JQcm90bxIMCgRuYW1lGAEgASgJEg4K" + 
        "Bm51bWJlchgDIAEoBRI6CgVsYWJlbBgEIAEoDjIrLmdvb2dsZS5wcm90b2J1" + 
        "Zi5GaWVsZERlc2NyaXB0b3JQcm90by5MYWJlbBI4CgR0eXBlGAUgASgOMiou" + 
        "Z29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUSEQoJ" + 
        "dHlwZV9uYW1lGAYgASgJEhAKCGV4dGVuZGVlGAIgASgJEhUKDWRlZmF1bHRf" + 
        "dmFsdWUYByABKAkSLgoHb3B0aW9ucxgIIAEoCzIdLmdvb2dsZS5wcm90b2J1" + 
        "Zi5GaWVsZE9wdGlvbnMitgIKBFR5cGUSDwoLVFlQRV9ET1VCTEUQARIOCgpU" + 
        "WVBFX0ZMT0FUEAISDgoKVFlQRV9JTlQ2NBADEg8KC1RZUEVfVUlOVDY0EAQS" + 
        "DgoKVFlQRV9JTlQzMhAFEhAKDFRZUEVfRklYRUQ2NBAGEhAKDFRZUEVfRklY" + 
        "RUQzMhAHEg0KCVRZUEVfQk9PTBAIEg8KC1RZUEVfU1RSSU5HEAkSDgoKVFlQ" + 
        "RV9HUk9VUBAKEhAKDFRZUEVfTUVTU0FHRRALEg4KClRZUEVfQllURVMQDBIP" + 
        "CgtUWVBFX1VJTlQzMhANEg0KCVRZUEVfRU5VTRAOEhEKDVRZUEVfU0ZJWEVE" + 
        "MzIQDxIRCg1UWVBFX1NGSVhFRDY0EBASDwoLVFlQRV9TSU5UMzIQERIPCgtU" + 
        "WVBFX1NJTlQ2NBASIkMKBUxhYmVsEhIKDkxBQkVMX09QVElPTkFMEAESEgoO" + 
        "TEFCRUxfUkVRVUlSRUQQAhISCg5MQUJFTF9SRVBFQVRFRBADIowBChNFbnVt" + 
        "RGVzY3JpcHRvclByb3RvEgwKBG5hbWUYASABKAkSOAoFdmFsdWUYAiADKAsy" + 
        "KS5nb29nbGUucHJvdG9idWYuRW51bVZhbHVlRGVzY3JpcHRvclByb3RvEi0K" + 
        "B29wdGlvbnMYAyABKAsyHC5nb29nbGUucHJvdG9idWYuRW51bU9wdGlvbnMi" + 
        "bAoYRW51bVZhbHVlRGVzY3JpcHRvclByb3RvEgwKBG5hbWUYASABKAkSDgoG" + 
        "bnVtYmVyGAIgASgFEjIKB29wdGlvbnMYAyABKAsyIS5nb29nbGUucHJvdG9i" + 
        "dWYuRW51bVZhbHVlT3B0aW9ucyKQAQoWU2VydmljZURlc2NyaXB0b3JQcm90" + 
        "bxIMCgRuYW1lGAEgASgJEjYKBm1ldGhvZBgCIAMoCzImLmdvb2dsZS5wcm90" + 
        "b2J1Zi5NZXRob2REZXNjcmlwdG9yUHJvdG8SMAoHb3B0aW9ucxgDIAEoCzIf" + 
        "Lmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlT3B0aW9ucyJ/ChVNZXRob2REZXNj" + 
        "cmlwdG9yUHJvdG8SDAoEbmFtZRgBIAEoCRISCgppbnB1dF90eXBlGAIgASgJ" + 
        "EhMKC291dHB1dF90eXBlGAMgASgJEi8KB29wdGlvbnMYBCABKAsyHi5nb29n" + 
        "bGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucyKrAgoLRmlsZU9wdGlvbnMSFAoM" + 
        "amF2YV9wYWNrYWdlGAEgASgJEhwKFGphdmFfb3V0ZXJfY2xhc3NuYW1lGAgg" + 
        "ASgJEiIKE2phdmFfbXVsdGlwbGVfZmlsZXMYCiABKAg6BWZhbHNlEkoKDG9w" + 
        "dGltaXplX2ZvchgJIAEoDjIpLmdvb2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9u" + 
        "cy5PcHRpbWl6ZU1vZGU6CUNPREVfU0laRRJDChR1bmludGVycHJldGVkX29w" + 
        "dGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9w" + 
        "dGlvbiIoCgxPcHRpbWl6ZU1vZGUSCQoFU1BFRUQQARINCglDT0RFX1NJWkUQ" + 
        "AioJCOgHEICAgIACIogBCg5NZXNzYWdlT3B0aW9ucxImChdtZXNzYWdlX3Nl" + 
        "dF93aXJlX2Zvcm1hdBgBIAEoCDoFZmFsc2USQwoUdW5pbnRlcnByZXRlZF9v" + 
        "cHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRP" + 
        "cHRpb24qCQjoBxCAgICAAiLVAQoMRmllbGRPcHRpb25zEjIKBWN0eXBlGAEg" + 
        "ASgOMiMuZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5DVHlwZRIcChRl" + 
        "eHBlcmltZW50YWxfbWFwX2tleRgJIAEoCRJDChR1bmludGVycHJldGVkX29w" + 
        "dGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9w" + 
        "dGlvbiIjCgVDVHlwZRIICgRDT1JEEAESEAoMU1RSSU5HX1BJRUNFEAIqCQjo" + 
        "BxCAgICAAiJdCgtFbnVtT3B0aW9ucxJDChR1bmludGVycHJldGVkX29wdGlv" + 
        "bhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlv" + 
        "bioJCOgHEICAgIACImIKEEVudW1WYWx1ZU9wdGlvbnMSQwoUdW5pbnRlcnBy" + 
        "ZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJw" + 
        "cmV0ZWRPcHRpb24qCQjoBxCAgICAAiJgCg5TZXJ2aWNlT3B0aW9ucxJDChR1" + 
        "bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYu" + 
        "VW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACIl8KDU1ldGhvZE9wdGlv" + 
        "bnMSQwoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnBy" + 
        "b3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAiKFAgoTVW5p" + 
        "bnRlcnByZXRlZE9wdGlvbhI7CgRuYW1lGAIgAygLMi0uZ29vZ2xlLnByb3Rv" + 
        "YnVmLlVuaW50ZXJwcmV0ZWRPcHRpb24uTmFtZVBhcnQSGAoQaWRlbnRpZmll" + 
        "cl92YWx1ZRgDIAEoCRIaChJwb3NpdGl2ZV9pbnRfdmFsdWUYBCABKAQSGgoS" + 
        "bmVnYXRpdmVfaW50X3ZhbHVlGAUgASgDEhQKDGRvdWJsZV92YWx1ZRgGIAEo" + 
        "ARIUCgxzdHJpbmdfdmFsdWUYByABKAwaMwoITmFtZVBhcnQSEQoJbmFtZV9w" + 
        "YXJ0GAEgAigJEhQKDGlzX2V4dGVuc2lvbhgCIAIoCEIpChNjb20uZ29vZ2xl" + 
        "LnByb3RvYnVmQhBEZXNjcmlwdG9yUHJvdG9zSAE="),
        new pbd::FileDescriptor[] {
        });
    #endregion
    
    #region Static variables
    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_FileDescriptorSet__Descriptor
        = Descriptor.MessageTypes[0];
    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorSet, global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorSet.Builder> internal__static_google_protobuf_FileDescriptorSet__FieldAccessorTable
        = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorSet, global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorSet.Builder>(internal__static_google_protobuf_FileDescriptorSet__Descriptor,
            new string[] { "File", });
    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_FileDescriptorProto__Descriptor
        = Descriptor.MessageTypes[1];
    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto.Builder> internal__static_google_protobuf_FileDescriptorProto__FieldAccessorTable
        = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto.Builder>(internal__static_google_protobuf_FileDescriptorProto__Descriptor,
            new string[] { "Name", "Package", "Dependency", "MessageType", "EnumType", "Service", "Extension", "Options", });
    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_DescriptorProto__Descriptor
        = Descriptor.MessageTypes[2];
    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Builder> internal__static_google_protobuf_DescriptorProto__FieldAccessorTable
        = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Builder>(internal__static_google_protobuf_DescriptorProto__Descriptor,
            new string[] { "Name", "Field", "Extension", "NestedType", "EnumType", "ExtensionRange", "Options", });
    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_DescriptorProto_ExtensionRange__Descriptor
        = internal__static_google_protobuf_DescriptorProto__Descriptor.NestedTypes[0];
    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange, global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange.Builder> internal__static_google_protobuf_DescriptorProto_ExtensionRange__FieldAccessorTable
        = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange, global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange.Builder>(internal__static_google_protobuf_DescriptorProto_ExtensionRange__Descriptor,
            new string[] { "Start", "End", });
    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_FieldDescriptorProto__Descriptor
        = Descriptor.MessageTypes[3];
    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Builder> internal__static_google_protobuf_FieldDescriptorProto__FieldAccessorTable
        = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Builder>(internal__static_google_protobuf_FieldDescriptorProto__Descriptor,
            new string[] { "Name", "Number", "Label", "Type", "TypeName", "Extendee", "DefaultValue", "Options", });
    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_EnumDescriptorProto__Descriptor
        = Descriptor.MessageTypes[4];
    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto.Builder> internal__static_google_protobuf_EnumDescriptorProto__FieldAccessorTable
        = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto.Builder>(internal__static_google_protobuf_EnumDescriptorProto__Descriptor,
            new string[] { "Name", "Value", "Options", });
    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_EnumValueDescriptorProto__Descriptor
        = Descriptor.MessageTypes[5];
    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto.Builder> internal__static_google_protobuf_EnumValueDescriptorProto__FieldAccessorTable
        = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto.Builder>(internal__static_google_protobuf_EnumValueDescriptorProto__Descriptor,
            new string[] { "Name", "Number", "Options", });
    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_ServiceDescriptorProto__Descriptor
        = Descriptor.MessageTypes[6];
    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto.Builder> internal__static_google_protobuf_ServiceDescriptorProto__FieldAccessorTable
        = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto.Builder>(internal__static_google_protobuf_ServiceDescriptorProto__Descriptor,
            new string[] { "Name", "Method", "Options", });
    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_MethodDescriptorProto__Descriptor
        = Descriptor.MessageTypes[7];
    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto.Builder> internal__static_google_protobuf_MethodDescriptorProto__FieldAccessorTable
        = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto.Builder>(internal__static_google_protobuf_MethodDescriptorProto__Descriptor,
            new string[] { "Name", "InputType", "OutputType", "Options", });
    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_FileOptions__Descriptor
        = Descriptor.MessageTypes[8];
    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.FileOptions, global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.Builder> internal__static_google_protobuf_FileOptions__FieldAccessorTable
        = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.FileOptions, global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.Builder>(internal__static_google_protobuf_FileOptions__Descriptor,
            new string[] { "JavaPackage", "JavaOuterClassname", "JavaMultipleFiles", "OptimizeFor", "UninterpretedOption", });
    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_MessageOptions__Descriptor
        = Descriptor.MessageTypes[9];
    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions, global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions.Builder> internal__static_google_protobuf_MessageOptions__FieldAccessorTable
        = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions, global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions.Builder>(internal__static_google_protobuf_MessageOptions__Descriptor,
            new string[] { "MessageSetWireFormat", "UninterpretedOption", });
    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_FieldOptions__Descriptor
        = Descriptor.MessageTypes[10];
    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions, global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.Builder> internal__static_google_protobuf_FieldOptions__FieldAccessorTable
        = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions, global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.Builder>(internal__static_google_protobuf_FieldOptions__Descriptor,
            new string[] { "Ctype", "ExperimentalMapKey", "UninterpretedOption", });
    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_EnumOptions__Descriptor
        = Descriptor.MessageTypes[11];
    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions, global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions.Builder> internal__static_google_protobuf_EnumOptions__FieldAccessorTable
        = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions, global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions.Builder>(internal__static_google_protobuf_EnumOptions__Descriptor,
            new string[] { "UninterpretedOption", });
    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_EnumValueOptions__Descriptor
        = Descriptor.MessageTypes[12];
    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions, global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions.Builder> internal__static_google_protobuf_EnumValueOptions__FieldAccessorTable
        = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions, global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions.Builder>(internal__static_google_protobuf_EnumValueOptions__Descriptor,
            new string[] { "UninterpretedOption", });
    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_ServiceOptions__Descriptor
        = Descriptor.MessageTypes[13];
    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions, global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions.Builder> internal__static_google_protobuf_ServiceOptions__FieldAccessorTable
        = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions, global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions.Builder>(internal__static_google_protobuf_ServiceOptions__Descriptor,
            new string[] { "UninterpretedOption", });
    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_MethodOptions__Descriptor
        = Descriptor.MessageTypes[14];
    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions, global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions.Builder> internal__static_google_protobuf_MethodOptions__FieldAccessorTable
        = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions, global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions.Builder>(internal__static_google_protobuf_MethodOptions__Descriptor,
            new string[] { "UninterpretedOption", });
    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_UninterpretedOption__Descriptor
        = Descriptor.MessageTypes[15];
    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder> internal__static_google_protobuf_UninterpretedOption__FieldAccessorTable
        = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder>(internal__static_google_protobuf_UninterpretedOption__Descriptor,
            new string[] { "Name", "IdentifierValue", "PositiveIntValue", "NegativeIntValue", "DoubleValue", "StringValue", });
    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_UninterpretedOption_NamePart__Descriptor
        = internal__static_google_protobuf_UninterpretedOption__Descriptor.NestedTypes[0];
    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart.Builder> internal__static_google_protobuf_UninterpretedOption_NamePart__FieldAccessorTable
        = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart.Builder>(internal__static_google_protobuf_UninterpretedOption_NamePart__Descriptor,
            new string[] { "NamePart_", "IsExtension", });
    #endregion
  }
  #region Messages
  public sealed partial class FileDescriptorSet : pb::GeneratedMessage<FileDescriptorSet, FileDescriptorSet.Builder> {
    private static readonly FileDescriptorSet defaultInstance = new Builder().BuildPartial();
    public static FileDescriptorSet DefaultInstance {
      get { return defaultInstance; }
    }
    
    public override FileDescriptorSet DefaultInstanceForType {
      get { return defaultInstance; }
    }
    
    protected override FileDescriptorSet ThisMessage {
      get { return this; }
    }
    
    public static pbd::MessageDescriptor Descriptor {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_FileDescriptorSet__Descriptor; }
    }
    
    protected override pb::FieldAccess.FieldAccessorTable<FileDescriptorSet, FileDescriptorSet.Builder> InternalFieldAccessors {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_FileDescriptorSet__FieldAccessorTable; }
    }
    
    private pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto> file_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto>();
    public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto> FileList {
      get { return file_; }
    }
    public int FileCount {
      get { return file_.Count; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto GetFile(int index) {
      return file_[index];
    }
    
    public override bool IsInitialized {
      get {
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto element in FileList) {
          if (!element.IsInitialized) return false;
        }
        return true;
      }
    }
    
    public override void WriteTo(pb::CodedOutputStream output) {
      foreach (global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto element in FileList) {
        output.WriteMessage(1, element);
      }
      UnknownFields.WriteTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public override int SerializedSize {
      get {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
        
        size = 0;
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto element in FileList) {
          size += pb::CodedOutputStream.ComputeMessageSize(1, element);
        }
        size += UnknownFields.SerializedSize;
        memoizedSerializedSize = size;
        return size;
      }
    }
    
    public static FileDescriptorSet ParseFrom(pb::ByteString data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static FileDescriptorSet ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static FileDescriptorSet ParseFrom(byte[] data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static FileDescriptorSet ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static FileDescriptorSet ParseFrom(global::System.IO.Stream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static FileDescriptorSet ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static FileDescriptorSet ParseFrom(pb::CodedInputStream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static FileDescriptorSet ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static Builder CreateBuilder() { return new Builder(); }
    public override Builder CreateBuilderForType() { return new Builder(); }
    public static Builder CreateBuilder(FileDescriptorSet prototype) {
      return (Builder) new Builder().MergeFrom(prototype);
    }
    
    public sealed partial class Builder : pb::GeneratedBuilder<FileDescriptorSet, Builder> {
      protected override Builder ThisBuilder {
        get { return this; }
      }
      public Builder() {}
      
      FileDescriptorSet result = new FileDescriptorSet();
      
      protected override FileDescriptorSet MessageBeingBuilt {
        get { return result; }
      }
      
      public override Builder Clear() {
        result = new FileDescriptorSet();
        return this;
      }
      
      public override Builder Clone() {
        return new Builder().MergeFrom(result);
      }
      
      public override pbd::MessageDescriptor DescriptorForType {
        get { return FileDescriptorSet.Descriptor; }
      }
      
      public override FileDescriptorSet DefaultInstanceForType {
        get { return FileDescriptorSet.DefaultInstance; }
      }
      
      public override FileDescriptorSet BuildPartial() {
        result.file_.MakeReadOnly();
        FileDescriptorSet returnMe = result;
        result = null;
        return returnMe;
      }
      
      public override Builder MergeFrom(pb::IMessage other) {
        if (other is FileDescriptorSet) {
          return MergeFrom((FileDescriptorSet) other);
        } else {
          base.MergeFrom(other);
          return this;
        }
      }
      
      public override Builder MergeFrom(FileDescriptorSet other) {
        if (other == FileDescriptorSet.DefaultInstance) return this;
        if (other.file_.Count != 0) {
          base.AddRange(other.file_, result.file_);
        }
        this.MergeUnknownFields(other.UnknownFields);
        return this;
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input) {
        return MergeFrom(input, pb::ExtensionRegistry.Empty);
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
        pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
        while (true) {
          uint tag = input.ReadTag();
          switch (tag) {
            case 0: {
              this.UnknownFields = unknownFields.Build();
              return this;
            }
            default: {
              if (!ParseUnknownField(input, unknownFields, extensionRegistry, tag)) {
                this.UnknownFields = unknownFields.Build();
                return this;
              }
              break;
            }
            case 10: {
              global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto.CreateBuilder();
              input.ReadMessage(subBuilder, extensionRegistry);
              AddFile(subBuilder.BuildPartial());
              break;
            }
          }
        }
      }
      
      
      public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto> FileList {
        get { return result.file_; }
      }
      public int FileCount {
        get { return result.FileCount; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto GetFile(int index) {
        return result.GetFile(index);
      }
      public Builder SetFile(int index, global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.file_[index] = value;
        return this;
      }
      public Builder SetFile(int index, global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.file_[index] = builderForValue.Build();
        return this;
      }
      public Builder AddFile(global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.file_.Add(value);
        return this;
      }
      public Builder AddFile(global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.file_.Add(builderForValue.Build());
        return this;
      }
      public Builder AddRangeFile(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto> values) {
        base.AddRange(values, result.file_);
        return this;
      }
      public Builder ClearFile() {
        result.file_.Clear();
        return this;
      }
    }
  }
  
  public sealed partial class FileDescriptorProto : pb::GeneratedMessage<FileDescriptorProto, FileDescriptorProto.Builder> {
    private static readonly FileDescriptorProto defaultInstance = new Builder().BuildPartial();
    public static FileDescriptorProto DefaultInstance {
      get { return defaultInstance; }
    }
    
    public override FileDescriptorProto DefaultInstanceForType {
      get { return defaultInstance; }
    }
    
    protected override FileDescriptorProto ThisMessage {
      get { return this; }
    }
    
    public static pbd::MessageDescriptor Descriptor {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_FileDescriptorProto__Descriptor; }
    }
    
    protected override pb::FieldAccess.FieldAccessorTable<FileDescriptorProto, FileDescriptorProto.Builder> InternalFieldAccessors {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_FileDescriptorProto__FieldAccessorTable; }
    }
    
    private bool hasName;
    private string name_ = "";
    public bool HasName {
      get { return hasName; }
    }
    public string Name {
      get { return name_; }
    }
    
    private bool hasPackage;
    private string package_ = "";
    public bool HasPackage {
      get { return hasPackage; }
    }
    public string Package {
      get { return package_; }
    }
    
    private pbc::PopsicleList<string> dependency_ = new pbc::PopsicleList<string>();
    public scg::IList<string> DependencyList {
      get { return pbc::Lists.AsReadOnly(dependency_); }
    }
    public int DependencyCount {
      get { return dependency_.Count; }
    }
    public string GetDependency(int index) {
      return dependency_[index];
    }
    
    private pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto> messageType_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto>();
    public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto> MessageTypeList {
      get { return messageType_; }
    }
    public int MessageTypeCount {
      get { return messageType_.Count; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto GetMessageType(int index) {
      return messageType_[index];
    }
    
    private pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto> enumType_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto>();
    public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto> EnumTypeList {
      get { return enumType_; }
    }
    public int EnumTypeCount {
      get { return enumType_.Count; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto GetEnumType(int index) {
      return enumType_[index];
    }
    
    private pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto> service_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto>();
    public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto> ServiceList {
      get { return service_; }
    }
    public int ServiceCount {
      get { return service_.Count; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto GetService(int index) {
      return service_[index];
    }
    
    private pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto> extension_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto>();
    public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto> ExtensionList {
      get { return extension_; }
    }
    public int ExtensionCount {
      get { return extension_.Count; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto GetExtension(int index) {
      return extension_[index];
    }
    
    private bool hasOptions;
    private global::Google.ProtocolBuffers.DescriptorProtos.FileOptions options_ = global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.DefaultInstance;
    public bool HasOptions {
      get { return hasOptions; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.FileOptions Options {
      get { return options_; }
    }
    
    public override bool IsInitialized {
      get {
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto element in MessageTypeList) {
          if (!element.IsInitialized) return false;
        }
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto element in EnumTypeList) {
          if (!element.IsInitialized) return false;
        }
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto element in ServiceList) {
          if (!element.IsInitialized) return false;
        }
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto element in ExtensionList) {
          if (!element.IsInitialized) return false;
        }
        if (HasOptions) {
          if (!Options.IsInitialized) return false;
        }
        return true;
      }
    }
    
    public override void WriteTo(pb::CodedOutputStream output) {
      if (HasName) {
        output.WriteString(1, Name);
      }
      if (HasPackage) {
        output.WriteString(2, Package);
      }
      foreach (string element in DependencyList) {
        output.WriteString(3, element);
      }
      foreach (global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto element in MessageTypeList) {
        output.WriteMessage(4, element);
      }
      foreach (global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto element in EnumTypeList) {
        output.WriteMessage(5, element);
      }
      foreach (global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto element in ServiceList) {
        output.WriteMessage(6, element);
      }
      foreach (global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto element in ExtensionList) {
        output.WriteMessage(7, element);
      }
      if (HasOptions) {
        output.WriteMessage(8, Options);
      }
      UnknownFields.WriteTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public override int SerializedSize {
      get {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
        
        size = 0;
        if (HasName) {
          size += pb::CodedOutputStream.ComputeStringSize(1, Name);
        }
        if (HasPackage) {
          size += pb::CodedOutputStream.ComputeStringSize(2, Package);
        }
        foreach (string element in DependencyList) {
          size += pb::CodedOutputStream.ComputeStringSize(3, element);
        }
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto element in MessageTypeList) {
          size += pb::CodedOutputStream.ComputeMessageSize(4, element);
        }
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto element in EnumTypeList) {
          size += pb::CodedOutputStream.ComputeMessageSize(5, element);
        }
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto element in ServiceList) {
          size += pb::CodedOutputStream.ComputeMessageSize(6, element);
        }
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto element in ExtensionList) {
          size += pb::CodedOutputStream.ComputeMessageSize(7, element);
        }
        if (HasOptions) {
          size += pb::CodedOutputStream.ComputeMessageSize(8, Options);
        }
        size += UnknownFields.SerializedSize;
        memoizedSerializedSize = size;
        return size;
      }
    }
    
    public static FileDescriptorProto ParseFrom(pb::ByteString data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static FileDescriptorProto ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static FileDescriptorProto ParseFrom(byte[] data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static FileDescriptorProto ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static FileDescriptorProto ParseFrom(global::System.IO.Stream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static FileDescriptorProto ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static FileDescriptorProto ParseFrom(pb::CodedInputStream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static FileDescriptorProto ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static Builder CreateBuilder() { return new Builder(); }
    public override Builder CreateBuilderForType() { return new Builder(); }
    public static Builder CreateBuilder(FileDescriptorProto prototype) {
      return (Builder) new Builder().MergeFrom(prototype);
    }
    
    public sealed partial class Builder : pb::GeneratedBuilder<FileDescriptorProto, Builder> {
      protected override Builder ThisBuilder {
        get { return this; }
      }
      public Builder() {}
      
      FileDescriptorProto result = new FileDescriptorProto();
      
      protected override FileDescriptorProto MessageBeingBuilt {
        get { return result; }
      }
      
      public override Builder Clear() {
        result = new FileDescriptorProto();
        return this;
      }
      
      public override Builder Clone() {
        return new Builder().MergeFrom(result);
      }
      
      public override pbd::MessageDescriptor DescriptorForType {
        get { return FileDescriptorProto.Descriptor; }
      }
      
      public override FileDescriptorProto DefaultInstanceForType {
        get { return FileDescriptorProto.DefaultInstance; }
      }
      
      public override FileDescriptorProto BuildPartial() {
        result.dependency_.MakeReadOnly();
        result.messageType_.MakeReadOnly();
        result.enumType_.MakeReadOnly();
        result.service_.MakeReadOnly();
        result.extension_.MakeReadOnly();
        FileDescriptorProto returnMe = result;
        result = null;
        return returnMe;
      }
      
      public override Builder MergeFrom(pb::IMessage other) {
        if (other is FileDescriptorProto) {
          return MergeFrom((FileDescriptorProto) other);
        } else {
          base.MergeFrom(other);
          return this;
        }
      }
      
      public override Builder MergeFrom(FileDescriptorProto other) {
        if (other == FileDescriptorProto.DefaultInstance) return this;
        if (other.HasName) {
          Name = other.Name;
        }
        if (other.HasPackage) {
          Package = other.Package;
        }
        if (other.dependency_.Count != 0) {
          base.AddRange(other.dependency_, result.dependency_);
        }
        if (other.messageType_.Count != 0) {
          base.AddRange(other.messageType_, result.messageType_);
        }
        if (other.enumType_.Count != 0) {
          base.AddRange(other.enumType_, result.enumType_);
        }
        if (other.service_.Count != 0) {
          base.AddRange(other.service_, result.service_);
        }
        if (other.extension_.Count != 0) {
          base.AddRange(other.extension_, result.extension_);
        }
        if (other.HasOptions) {
          MergeOptions(other.Options);
        }
        this.MergeUnknownFields(other.UnknownFields);
        return this;
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input) {
        return MergeFrom(input, pb::ExtensionRegistry.Empty);
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
        pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
        while (true) {
          uint tag = input.ReadTag();
          switch (tag) {
            case 0: {
              this.UnknownFields = unknownFields.Build();
              return this;
            }
            default: {
              if (!ParseUnknownField(input, unknownFields, extensionRegistry, tag)) {
                this.UnknownFields = unknownFields.Build();
                return this;
              }
              break;
            }
            case 10: {
              Name = input.ReadString();
              break;
            }
            case 18: {
              Package = input.ReadString();
              break;
            }
            case 26: {
              AddDependency(input.ReadString());
              break;
            }
            case 34: {
              global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.CreateBuilder();
              input.ReadMessage(subBuilder, extensionRegistry);
              AddMessageType(subBuilder.BuildPartial());
              break;
            }
            case 42: {
              global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto.CreateBuilder();
              input.ReadMessage(subBuilder, extensionRegistry);
              AddEnumType(subBuilder.BuildPartial());
              break;
            }
            case 50: {
              global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto.CreateBuilder();
              input.ReadMessage(subBuilder, extensionRegistry);
              AddService(subBuilder.BuildPartial());
              break;
            }
            case 58: {
              global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.CreateBuilder();
              input.ReadMessage(subBuilder, extensionRegistry);
              AddExtension(subBuilder.BuildPartial());
              break;
            }
            case 66: {
              global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.CreateBuilder();
              if (HasOptions) {
                subBuilder.MergeFrom(Options);
              }
              input.ReadMessage(subBuilder, extensionRegistry);
              Options = subBuilder.BuildPartial();
              break;
            }
          }
        }
      }
      
      
      public bool HasName {
        get { return result.HasName; }
      }
      public string Name {
        get { return result.Name; }
        set { SetName(value); }
      }
      public Builder SetName(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasName = true;
        result.name_ = value;
        return this;
      }
      public Builder ClearName() {
        result.hasName = false;
        result.name_ = "";
        return this;
      }
      
      public bool HasPackage {
        get { return result.HasPackage; }
      }
      public string Package {
        get { return result.Package; }
        set { SetPackage(value); }
      }
      public Builder SetPackage(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasPackage = true;
        result.package_ = value;
        return this;
      }
      public Builder ClearPackage() {
        result.hasPackage = false;
        result.package_ = "";
        return this;
      }
      
      public scg::IList<string> DependencyList {
        get { return result.dependency_; }
      }
      public int DependencyCount {
        get { return result.DependencyCount; }
      }
      public string GetDependency(int index) {
        return result.GetDependency(index);
      }
      public Builder SetDependency(int index, string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.dependency_[index] = value;
        return this;
      }
      public Builder AddDependency(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.dependency_.Add(value);
        return this;
      }
      public Builder AddRangeDependency(scg::IEnumerable<string> values) {
        base.AddRange(values, result.dependency_);
        return this;
      }
      public Builder ClearDependency() {
        result.dependency_.Clear();
        return this;
      }
      
      public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto> MessageTypeList {
        get { return result.messageType_; }
      }
      public int MessageTypeCount {
        get { return result.MessageTypeCount; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto GetMessageType(int index) {
        return result.GetMessageType(index);
      }
      public Builder SetMessageType(int index, global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.messageType_[index] = value;
        return this;
      }
      public Builder SetMessageType(int index, global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.messageType_[index] = builderForValue.Build();
        return this;
      }
      public Builder AddMessageType(global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.messageType_.Add(value);
        return this;
      }
      public Builder AddMessageType(global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.messageType_.Add(builderForValue.Build());
        return this;
      }
      public Builder AddRangeMessageType(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto> values) {
        base.AddRange(values, result.messageType_);
        return this;
      }
      public Builder ClearMessageType() {
        result.messageType_.Clear();
        return this;
      }
      
      public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto> EnumTypeList {
        get { return result.enumType_; }
      }
      public int EnumTypeCount {
        get { return result.EnumTypeCount; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto GetEnumType(int index) {
        return result.GetEnumType(index);
      }
      public Builder SetEnumType(int index, global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.enumType_[index] = value;
        return this;
      }
      public Builder SetEnumType(int index, global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.enumType_[index] = builderForValue.Build();
        return this;
      }
      public Builder AddEnumType(global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.enumType_.Add(value);
        return this;
      }
      public Builder AddEnumType(global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.enumType_.Add(builderForValue.Build());
        return this;
      }
      public Builder AddRangeEnumType(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto> values) {
        base.AddRange(values, result.enumType_);
        return this;
      }
      public Builder ClearEnumType() {
        result.enumType_.Clear();
        return this;
      }
      
      public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto> ServiceList {
        get { return result.service_; }
      }
      public int ServiceCount {
        get { return result.ServiceCount; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto GetService(int index) {
        return result.GetService(index);
      }
      public Builder SetService(int index, global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.service_[index] = value;
        return this;
      }
      public Builder SetService(int index, global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.service_[index] = builderForValue.Build();
        return this;
      }
      public Builder AddService(global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.service_.Add(value);
        return this;
      }
      public Builder AddService(global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.service_.Add(builderForValue.Build());
        return this;
      }
      public Builder AddRangeService(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto> values) {
        base.AddRange(values, result.service_);
        return this;
      }
      public Builder ClearService() {
        result.service_.Clear();
        return this;
      }
      
      public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto> ExtensionList {
        get { return result.extension_; }
      }
      public int ExtensionCount {
        get { return result.ExtensionCount; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto GetExtension(int index) {
        return result.GetExtension(index);
      }
      public Builder SetExtension(int index, global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.extension_[index] = value;
        return this;
      }
      public Builder SetExtension(int index, global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.extension_[index] = builderForValue.Build();
        return this;
      }
      public Builder AddExtension(global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.extension_.Add(value);
        return this;
      }
      public Builder AddExtension(global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.extension_.Add(builderForValue.Build());
        return this;
      }
      public Builder AddRangeExtension(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto> values) {
        base.AddRange(values, result.extension_);
        return this;
      }
      public Builder ClearExtension() {
        result.extension_.Clear();
        return this;
      }
      
      public bool HasOptions {
       get { return result.HasOptions; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.FileOptions Options {
        get { return result.Options; }
        set { SetOptions(value); }
      }
      public Builder SetOptions(global::Google.ProtocolBuffers.DescriptorProtos.FileOptions value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasOptions = true;
        result.options_ = value;
        return this;
      }
      public Builder SetOptions(global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.hasOptions = true;
        result.options_ = builderForValue.Build();
        return this;
      }
      public Builder MergeOptions(global::Google.ProtocolBuffers.DescriptorProtos.FileOptions value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        if (result.HasOptions &&
            result.options_ != global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.DefaultInstance) {
            result.options_ = global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.CreateBuilder(result.options_).MergeFrom(value).BuildPartial();
        } else {
          result.options_ = value;
        }
        result.hasOptions = true;
        return this;
      }
      public Builder ClearOptions() {
        result.hasOptions = false;
        result.options_ = global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.DefaultInstance;
        return this;
      }
    }
  }
  
  public sealed partial class DescriptorProto : pb::GeneratedMessage<DescriptorProto, DescriptorProto.Builder> {
    private static readonly DescriptorProto defaultInstance = new Builder().BuildPartial();
    public static DescriptorProto DefaultInstance {
      get { return defaultInstance; }
    }
    
    public override DescriptorProto DefaultInstanceForType {
      get { return defaultInstance; }
    }
    
    protected override DescriptorProto ThisMessage {
      get { return this; }
    }
    
    public static pbd::MessageDescriptor Descriptor {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_DescriptorProto__Descriptor; }
    }
    
    protected override pb::FieldAccess.FieldAccessorTable<DescriptorProto, DescriptorProto.Builder> InternalFieldAccessors {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_DescriptorProto__FieldAccessorTable; }
    }
    
    #region Nested types
    public static class Types {
      public sealed partial class ExtensionRange : pb::GeneratedMessage<ExtensionRange, ExtensionRange.Builder> {
        private static readonly ExtensionRange defaultInstance = new Builder().BuildPartial();
        public static ExtensionRange DefaultInstance {
          get { return defaultInstance; }
        }
        
        public override ExtensionRange DefaultInstanceForType {
          get { return defaultInstance; }
        }
        
        protected override ExtensionRange ThisMessage {
          get { return this; }
        }
        
        public static pbd::MessageDescriptor Descriptor {
          get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_DescriptorProto_ExtensionRange__Descriptor; }
        }
        
        protected override pb::FieldAccess.FieldAccessorTable<ExtensionRange, ExtensionRange.Builder> InternalFieldAccessors {
          get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_DescriptorProto_ExtensionRange__FieldAccessorTable; }
        }
        
        private bool hasStart;
        private int start_ = 0;
        public bool HasStart {
          get { return hasStart; }
        }
        public int Start {
          get { return start_; }
        }
        
        private bool hasEnd;
        private int end_ = 0;
        public bool HasEnd {
          get { return hasEnd; }
        }
        public int End {
          get { return end_; }
        }
        
        public override bool IsInitialized {
          get {
            return true;
          }
        }
        
        public override void WriteTo(pb::CodedOutputStream output) {
          if (HasStart) {
            output.WriteInt32(1, Start);
          }
          if (HasEnd) {
            output.WriteInt32(2, End);
          }
          UnknownFields.WriteTo(output);
        }
        
        private int memoizedSerializedSize = -1;
        public override int SerializedSize {
          get {
            int size = memoizedSerializedSize;
            if (size != -1) return size;
            
            size = 0;
            if (HasStart) {
              size += pb::CodedOutputStream.ComputeInt32Size(1, Start);
            }
            if (HasEnd) {
              size += pb::CodedOutputStream.ComputeInt32Size(2, End);
            }
            size += UnknownFields.SerializedSize;
            memoizedSerializedSize = size;
            return size;
          }
        }
        
        public static ExtensionRange ParseFrom(pb::ByteString data) {
          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
        }
        public static ExtensionRange ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
        }
        public static ExtensionRange ParseFrom(byte[] data) {
          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
        }
        public static ExtensionRange ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
        }
        public static ExtensionRange ParseFrom(global::System.IO.Stream input) {
          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
        }
        public static ExtensionRange ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
        }
        public static ExtensionRange ParseFrom(pb::CodedInputStream input) {
          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
        }
        public static ExtensionRange ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
        }
        public static Builder CreateBuilder() { return new Builder(); }
        public override Builder CreateBuilderForType() { return new Builder(); }
        public static Builder CreateBuilder(ExtensionRange prototype) {
          return (Builder) new Builder().MergeFrom(prototype);
        }
        
        public sealed partial class Builder : pb::GeneratedBuilder<ExtensionRange, Builder> {
          protected override Builder ThisBuilder {
            get { return this; }
          }
          public Builder() {}
          
          ExtensionRange result = new ExtensionRange();
          
          protected override ExtensionRange MessageBeingBuilt {
            get { return result; }
          }
          
          public override Builder Clear() {
            result = new ExtensionRange();
            return this;
          }
          
          public override Builder Clone() {
            return new Builder().MergeFrom(result);
          }
          
          public override pbd::MessageDescriptor DescriptorForType {
            get { return ExtensionRange.Descriptor; }
          }
          
          public override ExtensionRange DefaultInstanceForType {
            get { return ExtensionRange.DefaultInstance; }
          }
          
          public override ExtensionRange BuildPartial() {
            ExtensionRange returnMe = result;
            result = null;
            return returnMe;
          }
          
          public override Builder MergeFrom(pb::IMessage other) {
            if (other is ExtensionRange) {
              return MergeFrom((ExtensionRange) other);
            } else {
              base.MergeFrom(other);
              return this;
            }
          }
          
          public override Builder MergeFrom(ExtensionRange other) {
            if (other == ExtensionRange.DefaultInstance) return this;
            if (other.HasStart) {
              Start = other.Start;
            }
            if (other.HasEnd) {
              End = other.End;
            }
            this.MergeUnknownFields(other.UnknownFields);
            return this;
          }
          
          public override Builder MergeFrom(pb::CodedInputStream input) {
            return MergeFrom(input, pb::ExtensionRegistry.Empty);
          }
          
          public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
            pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
            while (true) {
              uint tag = input.ReadTag();
              switch (tag) {
                case 0: {
                  this.UnknownFields = unknownFields.Build();
                  return this;
                }
                default: {
                  if (!ParseUnknownField(input, unknownFields, extensionRegistry, tag)) {
                    this.UnknownFields = unknownFields.Build();
                    return this;
                  }
                  break;
                }
                case 8: {
                  Start = input.ReadInt32();
                  break;
                }
                case 16: {
                  End = input.ReadInt32();
                  break;
                }
              }
            }
          }
          
          
          public bool HasStart {
            get { return result.HasStart; }
          }
          public int Start {
            get { return result.Start; }
            set { SetStart(value); }
          }
          public Builder SetStart(int value) {
            result.hasStart = true;
            result.start_ = value;
            return this;
          }
          public Builder ClearStart() {
            result.hasStart = false;
            result.start_ = 0;
            return this;
          }
          
          public bool HasEnd {
            get { return result.HasEnd; }
          }
          public int End {
            get { return result.End; }
            set { SetEnd(value); }
          }
          public Builder SetEnd(int value) {
            result.hasEnd = true;
            result.end_ = value;
            return this;
          }
          public Builder ClearEnd() {
            result.hasEnd = false;
            result.end_ = 0;
            return this;
          }
        }
      }
      
    }
    #endregion
    
    private bool hasName;
    private string name_ = "";
    public bool HasName {
      get { return hasName; }
    }
    public string Name {
      get { return name_; }
    }
    
    private pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto> field_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto>();
    public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto> FieldList {
      get { return field_; }
    }
    public int FieldCount {
      get { return field_.Count; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto GetField(int index) {
      return field_[index];
    }
    
    private pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto> extension_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto>();
    public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto> ExtensionList {
      get { return extension_; }
    }
    public int ExtensionCount {
      get { return extension_.Count; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto GetExtension(int index) {
      return extension_[index];
    }
    
    private pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto> nestedType_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto>();
    public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto> NestedTypeList {
      get { return nestedType_; }
    }
    public int NestedTypeCount {
      get { return nestedType_.Count; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto GetNestedType(int index) {
      return nestedType_[index];
    }
    
    private pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto> enumType_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto>();
    public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto> EnumTypeList {
      get { return enumType_; }
    }
    public int EnumTypeCount {
      get { return enumType_.Count; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto GetEnumType(int index) {
      return enumType_[index];
    }
    
    private pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange> extensionRange_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange>();
    public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange> ExtensionRangeList {
      get { return extensionRange_; }
    }
    public int ExtensionRangeCount {
      get { return extensionRange_.Count; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange GetExtensionRange(int index) {
      return extensionRange_[index];
    }
    
    private bool hasOptions;
    private global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions options_ = global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions.DefaultInstance;
    public bool HasOptions {
      get { return hasOptions; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions Options {
      get { return options_; }
    }
    
    public override bool IsInitialized {
      get {
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto element in FieldList) {
          if (!element.IsInitialized) return false;
        }
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto element in ExtensionList) {
          if (!element.IsInitialized) return false;
        }
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto element in NestedTypeList) {
          if (!element.IsInitialized) return false;
        }
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto element in EnumTypeList) {
          if (!element.IsInitialized) return false;
        }
        if (HasOptions) {
          if (!Options.IsInitialized) return false;
        }
        return true;
      }
    }
    
    public override void WriteTo(pb::CodedOutputStream output) {
      if (HasName) {
        output.WriteString(1, Name);
      }
      foreach (global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto element in FieldList) {
        output.WriteMessage(2, element);
      }
      foreach (global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto element in NestedTypeList) {
        output.WriteMessage(3, element);
      }
      foreach (global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto element in EnumTypeList) {
        output.WriteMessage(4, element);
      }
      foreach (global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange element in ExtensionRangeList) {
        output.WriteMessage(5, element);
      }
      foreach (global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto element in ExtensionList) {
        output.WriteMessage(6, element);
      }
      if (HasOptions) {
        output.WriteMessage(7, Options);
      }
      UnknownFields.WriteTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public override int SerializedSize {
      get {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
        
        size = 0;
        if (HasName) {
          size += pb::CodedOutputStream.ComputeStringSize(1, Name);
        }
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto element in FieldList) {
          size += pb::CodedOutputStream.ComputeMessageSize(2, element);
        }
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto element in ExtensionList) {
          size += pb::CodedOutputStream.ComputeMessageSize(6, element);
        }
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto element in NestedTypeList) {
          size += pb::CodedOutputStream.ComputeMessageSize(3, element);
        }
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto element in EnumTypeList) {
          size += pb::CodedOutputStream.ComputeMessageSize(4, element);
        }
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange element in ExtensionRangeList) {
          size += pb::CodedOutputStream.ComputeMessageSize(5, element);
        }
        if (HasOptions) {
          size += pb::CodedOutputStream.ComputeMessageSize(7, Options);
        }
        size += UnknownFields.SerializedSize;
        memoizedSerializedSize = size;
        return size;
      }
    }
    
    public static DescriptorProto ParseFrom(pb::ByteString data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static DescriptorProto ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static DescriptorProto ParseFrom(byte[] data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static DescriptorProto ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static DescriptorProto ParseFrom(global::System.IO.Stream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static DescriptorProto ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static DescriptorProto ParseFrom(pb::CodedInputStream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static DescriptorProto ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static Builder CreateBuilder() { return new Builder(); }
    public override Builder CreateBuilderForType() { return new Builder(); }
    public static Builder CreateBuilder(DescriptorProto prototype) {
      return (Builder) new Builder().MergeFrom(prototype);
    }
    
    public sealed partial class Builder : pb::GeneratedBuilder<DescriptorProto, Builder> {
      protected override Builder ThisBuilder {
        get { return this; }
      }
      public Builder() {}
      
      DescriptorProto result = new DescriptorProto();
      
      protected override DescriptorProto MessageBeingBuilt {
        get { return result; }
      }
      
      public override Builder Clear() {
        result = new DescriptorProto();
        return this;
      }
      
      public override Builder Clone() {
        return new Builder().MergeFrom(result);
      }
      
      public override pbd::MessageDescriptor DescriptorForType {
        get { return DescriptorProto.Descriptor; }
      }
      
      public override DescriptorProto DefaultInstanceForType {
        get { return DescriptorProto.DefaultInstance; }
      }
      
      public override DescriptorProto BuildPartial() {
        result.field_.MakeReadOnly();
        result.extension_.MakeReadOnly();
        result.nestedType_.MakeReadOnly();
        result.enumType_.MakeReadOnly();
        result.extensionRange_.MakeReadOnly();
        DescriptorProto returnMe = result;
        result = null;
        return returnMe;
      }
      
      public override Builder MergeFrom(pb::IMessage other) {
        if (other is DescriptorProto) {
          return MergeFrom((DescriptorProto) other);
        } else {
          base.MergeFrom(other);
          return this;
        }
      }
      
      public override Builder MergeFrom(DescriptorProto other) {
        if (other == DescriptorProto.DefaultInstance) return this;
        if (other.HasName) {
          Name = other.Name;
        }
        if (other.field_.Count != 0) {
          base.AddRange(other.field_, result.field_);
        }
        if (other.extension_.Count != 0) {
          base.AddRange(other.extension_, result.extension_);
        }
        if (other.nestedType_.Count != 0) {
          base.AddRange(other.nestedType_, result.nestedType_);
        }
        if (other.enumType_.Count != 0) {
          base.AddRange(other.enumType_, result.enumType_);
        }
        if (other.extensionRange_.Count != 0) {
          base.AddRange(other.extensionRange_, result.extensionRange_);
        }
        if (other.HasOptions) {
          MergeOptions(other.Options);
        }
        this.MergeUnknownFields(other.UnknownFields);
        return this;
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input) {
        return MergeFrom(input, pb::ExtensionRegistry.Empty);
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
        pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
        while (true) {
          uint tag = input.ReadTag();
          switch (tag) {
            case 0: {
              this.UnknownFields = unknownFields.Build();
              return this;
            }
            default: {
              if (!ParseUnknownField(input, unknownFields, extensionRegistry, tag)) {
                this.UnknownFields = unknownFields.Build();
                return this;
              }
              break;
            }
            case 10: {
              Name = input.ReadString();
              break;
            }
            case 18: {
              global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.CreateBuilder();
              input.ReadMessage(subBuilder, extensionRegistry);
              AddField(subBuilder.BuildPartial());
              break;
            }
            case 26: {
              global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.CreateBuilder();
              input.ReadMessage(subBuilder, extensionRegistry);
              AddNestedType(subBuilder.BuildPartial());
              break;
            }
            case 34: {
              global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto.CreateBuilder();
              input.ReadMessage(subBuilder, extensionRegistry);
              AddEnumType(subBuilder.BuildPartial());
              break;
            }
            case 42: {
              global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange.CreateBuilder();
              input.ReadMessage(subBuilder, extensionRegistry);
              AddExtensionRange(subBuilder.BuildPartial());
              break;
            }
            case 50: {
              global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.CreateBuilder();
              input.ReadMessage(subBuilder, extensionRegistry);
              AddExtension(subBuilder.BuildPartial());
              break;
            }
            case 58: {
              global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions.CreateBuilder();
              if (HasOptions) {
                subBuilder.MergeFrom(Options);
              }
              input.ReadMessage(subBuilder, extensionRegistry);
              Options = subBuilder.BuildPartial();
              break;
            }
          }
        }
      }
      
      
      public bool HasName {
        get { return result.HasName; }
      }
      public string Name {
        get { return result.Name; }
        set { SetName(value); }
      }
      public Builder SetName(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasName = true;
        result.name_ = value;
        return this;
      }
      public Builder ClearName() {
        result.hasName = false;
        result.name_ = "";
        return this;
      }
      
      public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto> FieldList {
        get { return result.field_; }
      }
      public int FieldCount {
        get { return result.FieldCount; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto GetField(int index) {
        return result.GetField(index);
      }
      public Builder SetField(int index, global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.field_[index] = value;
        return this;
      }
      public Builder SetField(int index, global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.field_[index] = builderForValue.Build();
        return this;
      }
      public Builder AddField(global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.field_.Add(value);
        return this;
      }
      public Builder AddField(global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.field_.Add(builderForValue.Build());
        return this;
      }
      public Builder AddRangeField(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto> values) {
        base.AddRange(values, result.field_);
        return this;
      }
      public Builder ClearField() {
        result.field_.Clear();
        return this;
      }
      
      public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto> ExtensionList {
        get { return result.extension_; }
      }
      public int ExtensionCount {
        get { return result.ExtensionCount; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto GetExtension(int index) {
        return result.GetExtension(index);
      }
      public Builder SetExtension(int index, global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.extension_[index] = value;
        return this;
      }
      public Builder SetExtension(int index, global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.extension_[index] = builderForValue.Build();
        return this;
      }
      public Builder AddExtension(global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.extension_.Add(value);
        return this;
      }
      public Builder AddExtension(global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.extension_.Add(builderForValue.Build());
        return this;
      }
      public Builder AddRangeExtension(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto> values) {
        base.AddRange(values, result.extension_);
        return this;
      }
      public Builder ClearExtension() {
        result.extension_.Clear();
        return this;
      }
      
      public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto> NestedTypeList {
        get { return result.nestedType_; }
      }
      public int NestedTypeCount {
        get { return result.NestedTypeCount; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto GetNestedType(int index) {
        return result.GetNestedType(index);
      }
      public Builder SetNestedType(int index, global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.nestedType_[index] = value;
        return this;
      }
      public Builder SetNestedType(int index, global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.nestedType_[index] = builderForValue.Build();
        return this;
      }
      public Builder AddNestedType(global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.nestedType_.Add(value);
        return this;
      }
      public Builder AddNestedType(global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.nestedType_.Add(builderForValue.Build());
        return this;
      }
      public Builder AddRangeNestedType(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto> values) {
        base.AddRange(values, result.nestedType_);
        return this;
      }
      public Builder ClearNestedType() {
        result.nestedType_.Clear();
        return this;
      }
      
      public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto> EnumTypeList {
        get { return result.enumType_; }
      }
      public int EnumTypeCount {
        get { return result.EnumTypeCount; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto GetEnumType(int index) {
        return result.GetEnumType(index);
      }
      public Builder SetEnumType(int index, global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.enumType_[index] = value;
        return this;
      }
      public Builder SetEnumType(int index, global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.enumType_[index] = builderForValue.Build();
        return this;
      }
      public Builder AddEnumType(global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.enumType_.Add(value);
        return this;
      }
      public Builder AddEnumType(global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.enumType_.Add(builderForValue.Build());
        return this;
      }
      public Builder AddRangeEnumType(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto> values) {
        base.AddRange(values, result.enumType_);
        return this;
      }
      public Builder ClearEnumType() {
        result.enumType_.Clear();
        return this;
      }
      
      public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange> ExtensionRangeList {
        get { return result.extensionRange_; }
      }
      public int ExtensionRangeCount {
        get { return result.ExtensionRangeCount; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange GetExtensionRange(int index) {
        return result.GetExtensionRange(index);
      }
      public Builder SetExtensionRange(int index, global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.extensionRange_[index] = value;
        return this;
      }
      public Builder SetExtensionRange(int index, global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.extensionRange_[index] = builderForValue.Build();
        return this;
      }
      public Builder AddExtensionRange(global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.extensionRange_.Add(value);
        return this;
      }
      public Builder AddExtensionRange(global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.extensionRange_.Add(builderForValue.Build());
        return this;
      }
      public Builder AddRangeExtensionRange(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange> values) {
        base.AddRange(values, result.extensionRange_);
        return this;
      }
      public Builder ClearExtensionRange() {
        result.extensionRange_.Clear();
        return this;
      }
      
      public bool HasOptions {
       get { return result.HasOptions; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions Options {
        get { return result.Options; }
        set { SetOptions(value); }
      }
      public Builder SetOptions(global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasOptions = true;
        result.options_ = value;
        return this;
      }
      public Builder SetOptions(global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.hasOptions = true;
        result.options_ = builderForValue.Build();
        return this;
      }
      public Builder MergeOptions(global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        if (result.HasOptions &&
            result.options_ != global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions.DefaultInstance) {
            result.options_ = global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions.CreateBuilder(result.options_).MergeFrom(value).BuildPartial();
        } else {
          result.options_ = value;
        }
        result.hasOptions = true;
        return this;
      }
      public Builder ClearOptions() {
        result.hasOptions = false;
        result.options_ = global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions.DefaultInstance;
        return this;
      }
    }
  }
  
  public sealed partial class FieldDescriptorProto : pb::GeneratedMessage<FieldDescriptorProto, FieldDescriptorProto.Builder> {
    private static readonly FieldDescriptorProto defaultInstance = new Builder().BuildPartial();
    public static FieldDescriptorProto DefaultInstance {
      get { return defaultInstance; }
    }
    
    public override FieldDescriptorProto DefaultInstanceForType {
      get { return defaultInstance; }
    }
    
    protected override FieldDescriptorProto ThisMessage {
      get { return this; }
    }
    
    public static pbd::MessageDescriptor Descriptor {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_FieldDescriptorProto__Descriptor; }
    }
    
    protected override pb::FieldAccess.FieldAccessorTable<FieldDescriptorProto, FieldDescriptorProto.Builder> InternalFieldAccessors {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_FieldDescriptorProto__FieldAccessorTable; }
    }
    
    #region Nested types
    public static class Types {
      public enum Type {
        TYPE_DOUBLE = 1,
        TYPE_FLOAT = 2,
        TYPE_INT64 = 3,
        TYPE_UINT64 = 4,
        TYPE_INT32 = 5,
        TYPE_FIXED64 = 6,
        TYPE_FIXED32 = 7,
        TYPE_BOOL = 8,
        TYPE_STRING = 9,
        TYPE_GROUP = 10,
        TYPE_MESSAGE = 11,
        TYPE_BYTES = 12,
        TYPE_UINT32 = 13,
        TYPE_ENUM = 14,
        TYPE_SFIXED32 = 15,
        TYPE_SFIXED64 = 16,
        TYPE_SINT32 = 17,
        TYPE_SINT64 = 18,
      }
      
      public enum Label {
        LABEL_OPTIONAL = 1,
        LABEL_REQUIRED = 2,
        LABEL_REPEATED = 3,
      }
      
    }
    #endregion
    
    private bool hasName;
    private string name_ = "";
    public bool HasName {
      get { return hasName; }
    }
    public string Name {
      get { return name_; }
    }
    
    private bool hasNumber;
    private int number_ = 0;
    public bool HasNumber {
      get { return hasNumber; }
    }
    public int Number {
      get { return number_; }
    }
    
    private bool hasLabel;
    private global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Types.Label label_ = global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL;
    public bool HasLabel {
      get { return hasLabel; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Types.Label Label {
      get { return label_; }
    }
    
    private bool hasType;
    private global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Types.Type type_ = global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Types.Type.TYPE_DOUBLE;
    public bool HasType {
      get { return hasType; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Types.Type Type {
      get { return type_; }
    }
    
    private bool hasTypeName;
    private string typeName_ = "";
    public bool HasTypeName {
      get { return hasTypeName; }
    }
    public string TypeName {
      get { return typeName_; }
    }
    
    private bool hasExtendee;
    private string extendee_ = "";
    public bool HasExtendee {
      get { return hasExtendee; }
    }
    public string Extendee {
      get { return extendee_; }
    }
    
    private bool hasDefaultValue;
    private string defaultValue_ = "";
    public bool HasDefaultValue {
      get { return hasDefaultValue; }
    }
    public string DefaultValue {
      get { return defaultValue_; }
    }
    
    private bool hasOptions;
    private global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions options_ = global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.DefaultInstance;
    public bool HasOptions {
      get { return hasOptions; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions Options {
      get { return options_; }
    }
    
    public override bool IsInitialized {
      get {
        if (HasOptions) {
          if (!Options.IsInitialized) return false;
        }
        return true;
      }
    }
    
    public override void WriteTo(pb::CodedOutputStream output) {
      if (HasName) {
        output.WriteString(1, Name);
      }
      if (HasExtendee) {
        output.WriteString(2, Extendee);
      }
      if (HasNumber) {
        output.WriteInt32(3, Number);
      }
      if (HasLabel) {
        output.WriteEnum(4, (int) Label);
      }
      if (HasType) {
        output.WriteEnum(5, (int) Type);
      }
      if (HasTypeName) {
        output.WriteString(6, TypeName);
      }
      if (HasDefaultValue) {
        output.WriteString(7, DefaultValue);
      }
      if (HasOptions) {
        output.WriteMessage(8, Options);
      }
      UnknownFields.WriteTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public override int SerializedSize {
      get {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
        
        size = 0;
        if (HasName) {
          size += pb::CodedOutputStream.ComputeStringSize(1, Name);
        }
        if (HasNumber) {
          size += pb::CodedOutputStream.ComputeInt32Size(3, Number);
        }
        if (HasLabel) {
          size += pb::CodedOutputStream.ComputeEnumSize(4, (int) Label);
        }
        if (HasType) {
          size += pb::CodedOutputStream.ComputeEnumSize(5, (int) Type);
        }
        if (HasTypeName) {
          size += pb::CodedOutputStream.ComputeStringSize(6, TypeName);
        }
        if (HasExtendee) {
          size += pb::CodedOutputStream.ComputeStringSize(2, Extendee);
        }
        if (HasDefaultValue) {
          size += pb::CodedOutputStream.ComputeStringSize(7, DefaultValue);
        }
        if (HasOptions) {
          size += pb::CodedOutputStream.ComputeMessageSize(8, Options);
        }
        size += UnknownFields.SerializedSize;
        memoizedSerializedSize = size;
        return size;
      }
    }
    
    public static FieldDescriptorProto ParseFrom(pb::ByteString data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static FieldDescriptorProto ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static FieldDescriptorProto ParseFrom(byte[] data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static FieldDescriptorProto ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static FieldDescriptorProto ParseFrom(global::System.IO.Stream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static FieldDescriptorProto ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static FieldDescriptorProto ParseFrom(pb::CodedInputStream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static FieldDescriptorProto ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static Builder CreateBuilder() { return new Builder(); }
    public override Builder CreateBuilderForType() { return new Builder(); }
    public static Builder CreateBuilder(FieldDescriptorProto prototype) {
      return (Builder) new Builder().MergeFrom(prototype);
    }
    
    public sealed partial class Builder : pb::GeneratedBuilder<FieldDescriptorProto, Builder> {
      protected override Builder ThisBuilder {
        get { return this; }
      }
      public Builder() {}
      
      FieldDescriptorProto result = new FieldDescriptorProto();
      
      protected override FieldDescriptorProto MessageBeingBuilt {
        get { return result; }
      }
      
      public override Builder Clear() {
        result = new FieldDescriptorProto();
        return this;
      }
      
      public override Builder Clone() {
        return new Builder().MergeFrom(result);
      }
      
      public override pbd::MessageDescriptor DescriptorForType {
        get { return FieldDescriptorProto.Descriptor; }
      }
      
      public override FieldDescriptorProto DefaultInstanceForType {
        get { return FieldDescriptorProto.DefaultInstance; }
      }
      
      public override FieldDescriptorProto BuildPartial() {
        FieldDescriptorProto returnMe = result;
        result = null;
        return returnMe;
      }
      
      public override Builder MergeFrom(pb::IMessage other) {
        if (other is FieldDescriptorProto) {
          return MergeFrom((FieldDescriptorProto) other);
        } else {
          base.MergeFrom(other);
          return this;
        }
      }
      
      public override Builder MergeFrom(FieldDescriptorProto other) {
        if (other == FieldDescriptorProto.DefaultInstance) return this;
        if (other.HasName) {
          Name = other.Name;
        }
        if (other.HasNumber) {
          Number = other.Number;
        }
        if (other.HasLabel) {
          Label = other.Label;
        }
        if (other.HasType) {
          Type = other.Type;
        }
        if (other.HasTypeName) {
          TypeName = other.TypeName;
        }
        if (other.HasExtendee) {
          Extendee = other.Extendee;
        }
        if (other.HasDefaultValue) {
          DefaultValue = other.DefaultValue;
        }
        if (other.HasOptions) {
          MergeOptions(other.Options);
        }
        this.MergeUnknownFields(other.UnknownFields);
        return this;
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input) {
        return MergeFrom(input, pb::ExtensionRegistry.Empty);
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
        pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
        while (true) {
          uint tag = input.ReadTag();
          switch (tag) {
            case 0: {
              this.UnknownFields = unknownFields.Build();
              return this;
            }
            default: {
              if (!ParseUnknownField(input, unknownFields, extensionRegistry, tag)) {
                this.UnknownFields = unknownFields.Build();
                return this;
              }
              break;
            }
            case 10: {
              Name = input.ReadString();
              break;
            }
            case 18: {
              Extendee = input.ReadString();
              break;
            }
            case 24: {
              Number = input.ReadInt32();
              break;
            }
            case 32: {
              int rawValue = input.ReadEnum();
              if (!global::System.Enum.IsDefined(typeof(global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Types.Label), rawValue)) {
                unknownFields.MergeVarintField(4, (ulong) rawValue);
              } else {
                Label = (global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Types.Label) rawValue;
              }
              break;
            }
            case 40: {
              int rawValue = input.ReadEnum();
              if (!global::System.Enum.IsDefined(typeof(global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Types.Type), rawValue)) {
                unknownFields.MergeVarintField(5, (ulong) rawValue);
              } else {
                Type = (global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Types.Type) rawValue;
              }
              break;
            }
            case 50: {
              TypeName = input.ReadString();
              break;
            }
            case 58: {
              DefaultValue = input.ReadString();
              break;
            }
            case 66: {
              global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.CreateBuilder();
              if (HasOptions) {
                subBuilder.MergeFrom(Options);
              }
              input.ReadMessage(subBuilder, extensionRegistry);
              Options = subBuilder.BuildPartial();
              break;
            }
          }
        }
      }
      
      
      public bool HasName {
        get { return result.HasName; }
      }
      public string Name {
        get { return result.Name; }
        set { SetName(value); }
      }
      public Builder SetName(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasName = true;
        result.name_ = value;
        return this;
      }
      public Builder ClearName() {
        result.hasName = false;
        result.name_ = "";
        return this;
      }
      
      public bool HasNumber {
        get { return result.HasNumber; }
      }
      public int Number {
        get { return result.Number; }
        set { SetNumber(value); }
      }
      public Builder SetNumber(int value) {
        result.hasNumber = true;
        result.number_ = value;
        return this;
      }
      public Builder ClearNumber() {
        result.hasNumber = false;
        result.number_ = 0;
        return this;
      }
      
      public bool HasLabel {
       get { return result.HasLabel; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Types.Label Label {
        get { return result.Label; }
        set { SetLabel(value); }
      }
      public Builder SetLabel(global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Types.Label value) {
        result.hasLabel = true;
        result.label_ = value;
        return this;
      }
      public Builder ClearLabel() {
        result.hasLabel = false;
        result.label_ = global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL;
        return this;
      }
      
      public bool HasType {
       get { return result.HasType; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Types.Type Type {
        get { return result.Type; }
        set { SetType(value); }
      }
      public Builder SetType(global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Types.Type value) {
        result.hasType = true;
        result.type_ = value;
        return this;
      }
      public Builder ClearType() {
        result.hasType = false;
        result.type_ = global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Types.Type.TYPE_DOUBLE;
        return this;
      }
      
      public bool HasTypeName {
        get { return result.HasTypeName; }
      }
      public string TypeName {
        get { return result.TypeName; }
        set { SetTypeName(value); }
      }
      public Builder SetTypeName(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasTypeName = true;
        result.typeName_ = value;
        return this;
      }
      public Builder ClearTypeName() {
        result.hasTypeName = false;
        result.typeName_ = "";
        return this;
      }
      
      public bool HasExtendee {
        get { return result.HasExtendee; }
      }
      public string Extendee {
        get { return result.Extendee; }
        set { SetExtendee(value); }
      }
      public Builder SetExtendee(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasExtendee = true;
        result.extendee_ = value;
        return this;
      }
      public Builder ClearExtendee() {
        result.hasExtendee = false;
        result.extendee_ = "";
        return this;
      }
      
      public bool HasDefaultValue {
        get { return result.HasDefaultValue; }
      }
      public string DefaultValue {
        get { return result.DefaultValue; }
        set { SetDefaultValue(value); }
      }
      public Builder SetDefaultValue(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasDefaultValue = true;
        result.defaultValue_ = value;
        return this;
      }
      public Builder ClearDefaultValue() {
        result.hasDefaultValue = false;
        result.defaultValue_ = "";
        return this;
      }
      
      public bool HasOptions {
       get { return result.HasOptions; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions Options {
        get { return result.Options; }
        set { SetOptions(value); }
      }
      public Builder SetOptions(global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasOptions = true;
        result.options_ = value;
        return this;
      }
      public Builder SetOptions(global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.hasOptions = true;
        result.options_ = builderForValue.Build();
        return this;
      }
      public Builder MergeOptions(global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        if (result.HasOptions &&
            result.options_ != global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.DefaultInstance) {
            result.options_ = global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.CreateBuilder(result.options_).MergeFrom(value).BuildPartial();
        } else {
          result.options_ = value;
        }
        result.hasOptions = true;
        return this;
      }
      public Builder ClearOptions() {
        result.hasOptions = false;
        result.options_ = global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.DefaultInstance;
        return this;
      }
    }
  }
  
  public sealed partial class EnumDescriptorProto : pb::GeneratedMessage<EnumDescriptorProto, EnumDescriptorProto.Builder> {
    private static readonly EnumDescriptorProto defaultInstance = new Builder().BuildPartial();
    public static EnumDescriptorProto DefaultInstance {
      get { return defaultInstance; }
    }
    
    public override EnumDescriptorProto DefaultInstanceForType {
      get { return defaultInstance; }
    }
    
    protected override EnumDescriptorProto ThisMessage {
      get { return this; }
    }
    
    public static pbd::MessageDescriptor Descriptor {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_EnumDescriptorProto__Descriptor; }
    }
    
    protected override pb::FieldAccess.FieldAccessorTable<EnumDescriptorProto, EnumDescriptorProto.Builder> InternalFieldAccessors {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_EnumDescriptorProto__FieldAccessorTable; }
    }
    
    private bool hasName;
    private string name_ = "";
    public bool HasName {
      get { return hasName; }
    }
    public string Name {
      get { return name_; }
    }
    
    private pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto> value_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto>();
    public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto> ValueList {
      get { return value_; }
    }
    public int ValueCount {
      get { return value_.Count; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto GetValue(int index) {
      return value_[index];
    }
    
    private bool hasOptions;
    private global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions options_ = global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions.DefaultInstance;
    public bool HasOptions {
      get { return hasOptions; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions Options {
      get { return options_; }
    }
    
    public override bool IsInitialized {
      get {
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto element in ValueList) {
          if (!element.IsInitialized) return false;
        }
        if (HasOptions) {
          if (!Options.IsInitialized) return false;
        }
        return true;
      }
    }
    
    public override void WriteTo(pb::CodedOutputStream output) {
      if (HasName) {
        output.WriteString(1, Name);
      }
      foreach (global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto element in ValueList) {
        output.WriteMessage(2, element);
      }
      if (HasOptions) {
        output.WriteMessage(3, Options);
      }
      UnknownFields.WriteTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public override int SerializedSize {
      get {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
        
        size = 0;
        if (HasName) {
          size += pb::CodedOutputStream.ComputeStringSize(1, Name);
        }
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto element in ValueList) {
          size += pb::CodedOutputStream.ComputeMessageSize(2, element);
        }
        if (HasOptions) {
          size += pb::CodedOutputStream.ComputeMessageSize(3, Options);
        }
        size += UnknownFields.SerializedSize;
        memoizedSerializedSize = size;
        return size;
      }
    }
    
    public static EnumDescriptorProto ParseFrom(pb::ByteString data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static EnumDescriptorProto ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static EnumDescriptorProto ParseFrom(byte[] data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static EnumDescriptorProto ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static EnumDescriptorProto ParseFrom(global::System.IO.Stream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static EnumDescriptorProto ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static EnumDescriptorProto ParseFrom(pb::CodedInputStream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static EnumDescriptorProto ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static Builder CreateBuilder() { return new Builder(); }
    public override Builder CreateBuilderForType() { return new Builder(); }
    public static Builder CreateBuilder(EnumDescriptorProto prototype) {
      return (Builder) new Builder().MergeFrom(prototype);
    }
    
    public sealed partial class Builder : pb::GeneratedBuilder<EnumDescriptorProto, Builder> {
      protected override Builder ThisBuilder {
        get { return this; }
      }
      public Builder() {}
      
      EnumDescriptorProto result = new EnumDescriptorProto();
      
      protected override EnumDescriptorProto MessageBeingBuilt {
        get { return result; }
      }
      
      public override Builder Clear() {
        result = new EnumDescriptorProto();
        return this;
      }
      
      public override Builder Clone() {
        return new Builder().MergeFrom(result);
      }
      
      public override pbd::MessageDescriptor DescriptorForType {
        get { return EnumDescriptorProto.Descriptor; }
      }
      
      public override EnumDescriptorProto DefaultInstanceForType {
        get { return EnumDescriptorProto.DefaultInstance; }
      }
      
      public override EnumDescriptorProto BuildPartial() {
        result.value_.MakeReadOnly();
        EnumDescriptorProto returnMe = result;
        result = null;
        return returnMe;
      }
      
      public override Builder MergeFrom(pb::IMessage other) {
        if (other is EnumDescriptorProto) {
          return MergeFrom((EnumDescriptorProto) other);
        } else {
          base.MergeFrom(other);
          return this;
        }
      }
      
      public override Builder MergeFrom(EnumDescriptorProto other) {
        if (other == EnumDescriptorProto.DefaultInstance) return this;
        if (other.HasName) {
          Name = other.Name;
        }
        if (other.value_.Count != 0) {
          base.AddRange(other.value_, result.value_);
        }
        if (other.HasOptions) {
          MergeOptions(other.Options);
        }
        this.MergeUnknownFields(other.UnknownFields);
        return this;
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input) {
        return MergeFrom(input, pb::ExtensionRegistry.Empty);
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
        pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
        while (true) {
          uint tag = input.ReadTag();
          switch (tag) {
            case 0: {
              this.UnknownFields = unknownFields.Build();
              return this;
            }
            default: {
              if (!ParseUnknownField(input, unknownFields, extensionRegistry, tag)) {
                this.UnknownFields = unknownFields.Build();
                return this;
              }
              break;
            }
            case 10: {
              Name = input.ReadString();
              break;
            }
            case 18: {
              global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto.CreateBuilder();
              input.ReadMessage(subBuilder, extensionRegistry);
              AddValue(subBuilder.BuildPartial());
              break;
            }
            case 26: {
              global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions.CreateBuilder();
              if (HasOptions) {
                subBuilder.MergeFrom(Options);
              }
              input.ReadMessage(subBuilder, extensionRegistry);
              Options = subBuilder.BuildPartial();
              break;
            }
          }
        }
      }
      
      
      public bool HasName {
        get { return result.HasName; }
      }
      public string Name {
        get { return result.Name; }
        set { SetName(value); }
      }
      public Builder SetName(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasName = true;
        result.name_ = value;
        return this;
      }
      public Builder ClearName() {
        result.hasName = false;
        result.name_ = "";
        return this;
      }
      
      public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto> ValueList {
        get { return result.value_; }
      }
      public int ValueCount {
        get { return result.ValueCount; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto GetValue(int index) {
        return result.GetValue(index);
      }
      public Builder SetValue(int index, global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.value_[index] = value;
        return this;
      }
      public Builder SetValue(int index, global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.value_[index] = builderForValue.Build();
        return this;
      }
      public Builder AddValue(global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.value_.Add(value);
        return this;
      }
      public Builder AddValue(global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.value_.Add(builderForValue.Build());
        return this;
      }
      public Builder AddRangeValue(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto> values) {
        base.AddRange(values, result.value_);
        return this;
      }
      public Builder ClearValue() {
        result.value_.Clear();
        return this;
      }
      
      public bool HasOptions {
       get { return result.HasOptions; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions Options {
        get { return result.Options; }
        set { SetOptions(value); }
      }
      public Builder SetOptions(global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasOptions = true;
        result.options_ = value;
        return this;
      }
      public Builder SetOptions(global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.hasOptions = true;
        result.options_ = builderForValue.Build();
        return this;
      }
      public Builder MergeOptions(global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        if (result.HasOptions &&
            result.options_ != global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions.DefaultInstance) {
            result.options_ = global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions.CreateBuilder(result.options_).MergeFrom(value).BuildPartial();
        } else {
          result.options_ = value;
        }
        result.hasOptions = true;
        return this;
      }
      public Builder ClearOptions() {
        result.hasOptions = false;
        result.options_ = global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions.DefaultInstance;
        return this;
      }
    }
  }
  
  public sealed partial class EnumValueDescriptorProto : pb::GeneratedMessage<EnumValueDescriptorProto, EnumValueDescriptorProto.Builder> {
    private static readonly EnumValueDescriptorProto defaultInstance = new Builder().BuildPartial();
    public static EnumValueDescriptorProto DefaultInstance {
      get { return defaultInstance; }
    }
    
    public override EnumValueDescriptorProto DefaultInstanceForType {
      get { return defaultInstance; }
    }
    
    protected override EnumValueDescriptorProto ThisMessage {
      get { return this; }
    }
    
    public static pbd::MessageDescriptor Descriptor {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_EnumValueDescriptorProto__Descriptor; }
    }
    
    protected override pb::FieldAccess.FieldAccessorTable<EnumValueDescriptorProto, EnumValueDescriptorProto.Builder> InternalFieldAccessors {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_EnumValueDescriptorProto__FieldAccessorTable; }
    }
    
    private bool hasName;
    private string name_ = "";
    public bool HasName {
      get { return hasName; }
    }
    public string Name {
      get { return name_; }
    }
    
    private bool hasNumber;
    private int number_ = 0;
    public bool HasNumber {
      get { return hasNumber; }
    }
    public int Number {
      get { return number_; }
    }
    
    private bool hasOptions;
    private global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions options_ = global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions.DefaultInstance;
    public bool HasOptions {
      get { return hasOptions; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions Options {
      get { return options_; }
    }
    
    public override bool IsInitialized {
      get {
        if (HasOptions) {
          if (!Options.IsInitialized) return false;
        }
        return true;
      }
    }
    
    public override void WriteTo(pb::CodedOutputStream output) {
      if (HasName) {
        output.WriteString(1, Name);
      }
      if (HasNumber) {
        output.WriteInt32(2, Number);
      }
      if (HasOptions) {
        output.WriteMessage(3, Options);
      }
      UnknownFields.WriteTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public override int SerializedSize {
      get {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
        
        size = 0;
        if (HasName) {
          size += pb::CodedOutputStream.ComputeStringSize(1, Name);
        }
        if (HasNumber) {
          size += pb::CodedOutputStream.ComputeInt32Size(2, Number);
        }
        if (HasOptions) {
          size += pb::CodedOutputStream.ComputeMessageSize(3, Options);
        }
        size += UnknownFields.SerializedSize;
        memoizedSerializedSize = size;
        return size;
      }
    }
    
    public static EnumValueDescriptorProto ParseFrom(pb::ByteString data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static EnumValueDescriptorProto ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static EnumValueDescriptorProto ParseFrom(byte[] data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static EnumValueDescriptorProto ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static EnumValueDescriptorProto ParseFrom(global::System.IO.Stream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static EnumValueDescriptorProto ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static EnumValueDescriptorProto ParseFrom(pb::CodedInputStream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static EnumValueDescriptorProto ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static Builder CreateBuilder() { return new Builder(); }
    public override Builder CreateBuilderForType() { return new Builder(); }
    public static Builder CreateBuilder(EnumValueDescriptorProto prototype) {
      return (Builder) new Builder().MergeFrom(prototype);
    }
    
    public sealed partial class Builder : pb::GeneratedBuilder<EnumValueDescriptorProto, Builder> {
      protected override Builder ThisBuilder {
        get { return this; }
      }
      public Builder() {}
      
      EnumValueDescriptorProto result = new EnumValueDescriptorProto();
      
      protected override EnumValueDescriptorProto MessageBeingBuilt {
        get { return result; }
      }
      
      public override Builder Clear() {
        result = new EnumValueDescriptorProto();
        return this;
      }
      
      public override Builder Clone() {
        return new Builder().MergeFrom(result);
      }
      
      public override pbd::MessageDescriptor DescriptorForType {
        get { return EnumValueDescriptorProto.Descriptor; }
      }
      
      public override EnumValueDescriptorProto DefaultInstanceForType {
        get { return EnumValueDescriptorProto.DefaultInstance; }
      }
      
      public override EnumValueDescriptorProto BuildPartial() {
        EnumValueDescriptorProto returnMe = result;
        result = null;
        return returnMe;
      }
      
      public override Builder MergeFrom(pb::IMessage other) {
        if (other is EnumValueDescriptorProto) {
          return MergeFrom((EnumValueDescriptorProto) other);
        } else {
          base.MergeFrom(other);
          return this;
        }
      }
      
      public override Builder MergeFrom(EnumValueDescriptorProto other) {
        if (other == EnumValueDescriptorProto.DefaultInstance) return this;
        if (other.HasName) {
          Name = other.Name;
        }
        if (other.HasNumber) {
          Number = other.Number;
        }
        if (other.HasOptions) {
          MergeOptions(other.Options);
        }
        this.MergeUnknownFields(other.UnknownFields);
        return this;
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input) {
        return MergeFrom(input, pb::ExtensionRegistry.Empty);
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
        pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
        while (true) {
          uint tag = input.ReadTag();
          switch (tag) {
            case 0: {
              this.UnknownFields = unknownFields.Build();
              return this;
            }
            default: {
              if (!ParseUnknownField(input, unknownFields, extensionRegistry, tag)) {
                this.UnknownFields = unknownFields.Build();
                return this;
              }
              break;
            }
            case 10: {
              Name = input.ReadString();
              break;
            }
            case 16: {
              Number = input.ReadInt32();
              break;
            }
            case 26: {
              global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions.CreateBuilder();
              if (HasOptions) {
                subBuilder.MergeFrom(Options);
              }
              input.ReadMessage(subBuilder, extensionRegistry);
              Options = subBuilder.BuildPartial();
              break;
            }
          }
        }
      }
      
      
      public bool HasName {
        get { return result.HasName; }
      }
      public string Name {
        get { return result.Name; }
        set { SetName(value); }
      }
      public Builder SetName(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasName = true;
        result.name_ = value;
        return this;
      }
      public Builder ClearName() {
        result.hasName = false;
        result.name_ = "";
        return this;
      }
      
      public bool HasNumber {
        get { return result.HasNumber; }
      }
      public int Number {
        get { return result.Number; }
        set { SetNumber(value); }
      }
      public Builder SetNumber(int value) {
        result.hasNumber = true;
        result.number_ = value;
        return this;
      }
      public Builder ClearNumber() {
        result.hasNumber = false;
        result.number_ = 0;
        return this;
      }
      
      public bool HasOptions {
       get { return result.HasOptions; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions Options {
        get { return result.Options; }
        set { SetOptions(value); }
      }
      public Builder SetOptions(global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasOptions = true;
        result.options_ = value;
        return this;
      }
      public Builder SetOptions(global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.hasOptions = true;
        result.options_ = builderForValue.Build();
        return this;
      }
      public Builder MergeOptions(global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        if (result.HasOptions &&
            result.options_ != global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions.DefaultInstance) {
            result.options_ = global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions.CreateBuilder(result.options_).MergeFrom(value).BuildPartial();
        } else {
          result.options_ = value;
        }
        result.hasOptions = true;
        return this;
      }
      public Builder ClearOptions() {
        result.hasOptions = false;
        result.options_ = global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions.DefaultInstance;
        return this;
      }
    }
  }
  
  public sealed partial class ServiceDescriptorProto : pb::GeneratedMessage<ServiceDescriptorProto, ServiceDescriptorProto.Builder> {
    private static readonly ServiceDescriptorProto defaultInstance = new Builder().BuildPartial();
    public static ServiceDescriptorProto DefaultInstance {
      get { return defaultInstance; }
    }
    
    public override ServiceDescriptorProto DefaultInstanceForType {
      get { return defaultInstance; }
    }
    
    protected override ServiceDescriptorProto ThisMessage {
      get { return this; }
    }
    
    public static pbd::MessageDescriptor Descriptor {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_ServiceDescriptorProto__Descriptor; }
    }
    
    protected override pb::FieldAccess.FieldAccessorTable<ServiceDescriptorProto, ServiceDescriptorProto.Builder> InternalFieldAccessors {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_ServiceDescriptorProto__FieldAccessorTable; }
    }
    
    private bool hasName;
    private string name_ = "";
    public bool HasName {
      get { return hasName; }
    }
    public string Name {
      get { return name_; }
    }
    
    private pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto> method_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto>();
    public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto> MethodList {
      get { return method_; }
    }
    public int MethodCount {
      get { return method_.Count; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto GetMethod(int index) {
      return method_[index];
    }
    
    private bool hasOptions;
    private global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions options_ = global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions.DefaultInstance;
    public bool HasOptions {
      get { return hasOptions; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions Options {
      get { return options_; }
    }
    
    public override bool IsInitialized {
      get {
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto element in MethodList) {
          if (!element.IsInitialized) return false;
        }
        if (HasOptions) {
          if (!Options.IsInitialized) return false;
        }
        return true;
      }
    }
    
    public override void WriteTo(pb::CodedOutputStream output) {
      if (HasName) {
        output.WriteString(1, Name);
      }
      foreach (global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto element in MethodList) {
        output.WriteMessage(2, element);
      }
      if (HasOptions) {
        output.WriteMessage(3, Options);
      }
      UnknownFields.WriteTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public override int SerializedSize {
      get {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
        
        size = 0;
        if (HasName) {
          size += pb::CodedOutputStream.ComputeStringSize(1, Name);
        }
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto element in MethodList) {
          size += pb::CodedOutputStream.ComputeMessageSize(2, element);
        }
        if (HasOptions) {
          size += pb::CodedOutputStream.ComputeMessageSize(3, Options);
        }
        size += UnknownFields.SerializedSize;
        memoizedSerializedSize = size;
        return size;
      }
    }
    
    public static ServiceDescriptorProto ParseFrom(pb::ByteString data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static ServiceDescriptorProto ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static ServiceDescriptorProto ParseFrom(byte[] data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static ServiceDescriptorProto ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static ServiceDescriptorProto ParseFrom(global::System.IO.Stream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static ServiceDescriptorProto ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static ServiceDescriptorProto ParseFrom(pb::CodedInputStream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static ServiceDescriptorProto ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static Builder CreateBuilder() { return new Builder(); }
    public override Builder CreateBuilderForType() { return new Builder(); }
    public static Builder CreateBuilder(ServiceDescriptorProto prototype) {
      return (Builder) new Builder().MergeFrom(prototype);
    }
    
    public sealed partial class Builder : pb::GeneratedBuilder<ServiceDescriptorProto, Builder> {
      protected override Builder ThisBuilder {
        get { return this; }
      }
      public Builder() {}
      
      ServiceDescriptorProto result = new ServiceDescriptorProto();
      
      protected override ServiceDescriptorProto MessageBeingBuilt {
        get { return result; }
      }
      
      public override Builder Clear() {
        result = new ServiceDescriptorProto();
        return this;
      }
      
      public override Builder Clone() {
        return new Builder().MergeFrom(result);
      }
      
      public override pbd::MessageDescriptor DescriptorForType {
        get { return ServiceDescriptorProto.Descriptor; }
      }
      
      public override ServiceDescriptorProto DefaultInstanceForType {
        get { return ServiceDescriptorProto.DefaultInstance; }
      }
      
      public override ServiceDescriptorProto BuildPartial() {
        result.method_.MakeReadOnly();
        ServiceDescriptorProto returnMe = result;
        result = null;
        return returnMe;
      }
      
      public override Builder MergeFrom(pb::IMessage other) {
        if (other is ServiceDescriptorProto) {
          return MergeFrom((ServiceDescriptorProto) other);
        } else {
          base.MergeFrom(other);
          return this;
        }
      }
      
      public override Builder MergeFrom(ServiceDescriptorProto other) {
        if (other == ServiceDescriptorProto.DefaultInstance) return this;
        if (other.HasName) {
          Name = other.Name;
        }
        if (other.method_.Count != 0) {
          base.AddRange(other.method_, result.method_);
        }
        if (other.HasOptions) {
          MergeOptions(other.Options);
        }
        this.MergeUnknownFields(other.UnknownFields);
        return this;
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input) {
        return MergeFrom(input, pb::ExtensionRegistry.Empty);
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
        pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
        while (true) {
          uint tag = input.ReadTag();
          switch (tag) {
            case 0: {
              this.UnknownFields = unknownFields.Build();
              return this;
            }
            default: {
              if (!ParseUnknownField(input, unknownFields, extensionRegistry, tag)) {
                this.UnknownFields = unknownFields.Build();
                return this;
              }
              break;
            }
            case 10: {
              Name = input.ReadString();
              break;
            }
            case 18: {
              global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto.CreateBuilder();
              input.ReadMessage(subBuilder, extensionRegistry);
              AddMethod(subBuilder.BuildPartial());
              break;
            }
            case 26: {
              global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions.CreateBuilder();
              if (HasOptions) {
                subBuilder.MergeFrom(Options);
              }
              input.ReadMessage(subBuilder, extensionRegistry);
              Options = subBuilder.BuildPartial();
              break;
            }
          }
        }
      }
      
      
      public bool HasName {
        get { return result.HasName; }
      }
      public string Name {
        get { return result.Name; }
        set { SetName(value); }
      }
      public Builder SetName(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasName = true;
        result.name_ = value;
        return this;
      }
      public Builder ClearName() {
        result.hasName = false;
        result.name_ = "";
        return this;
      }
      
      public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto> MethodList {
        get { return result.method_; }
      }
      public int MethodCount {
        get { return result.MethodCount; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto GetMethod(int index) {
        return result.GetMethod(index);
      }
      public Builder SetMethod(int index, global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.method_[index] = value;
        return this;
      }
      public Builder SetMethod(int index, global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.method_[index] = builderForValue.Build();
        return this;
      }
      public Builder AddMethod(global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.method_.Add(value);
        return this;
      }
      public Builder AddMethod(global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.method_.Add(builderForValue.Build());
        return this;
      }
      public Builder AddRangeMethod(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto> values) {
        base.AddRange(values, result.method_);
        return this;
      }
      public Builder ClearMethod() {
        result.method_.Clear();
        return this;
      }
      
      public bool HasOptions {
       get { return result.HasOptions; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions Options {
        get { return result.Options; }
        set { SetOptions(value); }
      }
      public Builder SetOptions(global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasOptions = true;
        result.options_ = value;
        return this;
      }
      public Builder SetOptions(global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.hasOptions = true;
        result.options_ = builderForValue.Build();
        return this;
      }
      public Builder MergeOptions(global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        if (result.HasOptions &&
            result.options_ != global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions.DefaultInstance) {
            result.options_ = global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions.CreateBuilder(result.options_).MergeFrom(value).BuildPartial();
        } else {
          result.options_ = value;
        }
        result.hasOptions = true;
        return this;
      }
      public Builder ClearOptions() {
        result.hasOptions = false;
        result.options_ = global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions.DefaultInstance;
        return this;
      }
    }
  }
  
  public sealed partial class MethodDescriptorProto : pb::GeneratedMessage<MethodDescriptorProto, MethodDescriptorProto.Builder> {
    private static readonly MethodDescriptorProto defaultInstance = new Builder().BuildPartial();
    public static MethodDescriptorProto DefaultInstance {
      get { return defaultInstance; }
    }
    
    public override MethodDescriptorProto DefaultInstanceForType {
      get { return defaultInstance; }
    }
    
    protected override MethodDescriptorProto ThisMessage {
      get { return this; }
    }
    
    public static pbd::MessageDescriptor Descriptor {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_MethodDescriptorProto__Descriptor; }
    }
    
    protected override pb::FieldAccess.FieldAccessorTable<MethodDescriptorProto, MethodDescriptorProto.Builder> InternalFieldAccessors {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_MethodDescriptorProto__FieldAccessorTable; }
    }
    
    private bool hasName;
    private string name_ = "";
    public bool HasName {
      get { return hasName; }
    }
    public string Name {
      get { return name_; }
    }
    
    private bool hasInputType;
    private string inputType_ = "";
    public bool HasInputType {
      get { return hasInputType; }
    }
    public string InputType {
      get { return inputType_; }
    }
    
    private bool hasOutputType;
    private string outputType_ = "";
    public bool HasOutputType {
      get { return hasOutputType; }
    }
    public string OutputType {
      get { return outputType_; }
    }
    
    private bool hasOptions;
    private global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions options_ = global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions.DefaultInstance;
    public bool HasOptions {
      get { return hasOptions; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions Options {
      get { return options_; }
    }
    
    public override bool IsInitialized {
      get {
        if (HasOptions) {
          if (!Options.IsInitialized) return false;
        }
        return true;
      }
    }
    
    public override void WriteTo(pb::CodedOutputStream output) {
      if (HasName) {
        output.WriteString(1, Name);
      }
      if (HasInputType) {
        output.WriteString(2, InputType);
      }
      if (HasOutputType) {
        output.WriteString(3, OutputType);
      }
      if (HasOptions) {
        output.WriteMessage(4, Options);
      }
      UnknownFields.WriteTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public override int SerializedSize {
      get {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
        
        size = 0;
        if (HasName) {
          size += pb::CodedOutputStream.ComputeStringSize(1, Name);
        }
        if (HasInputType) {
          size += pb::CodedOutputStream.ComputeStringSize(2, InputType);
        }
        if (HasOutputType) {
          size += pb::CodedOutputStream.ComputeStringSize(3, OutputType);
        }
        if (HasOptions) {
          size += pb::CodedOutputStream.ComputeMessageSize(4, Options);
        }
        size += UnknownFields.SerializedSize;
        memoizedSerializedSize = size;
        return size;
      }
    }
    
    public static MethodDescriptorProto ParseFrom(pb::ByteString data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static MethodDescriptorProto ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static MethodDescriptorProto ParseFrom(byte[] data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static MethodDescriptorProto ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static MethodDescriptorProto ParseFrom(global::System.IO.Stream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static MethodDescriptorProto ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static MethodDescriptorProto ParseFrom(pb::CodedInputStream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static MethodDescriptorProto ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static Builder CreateBuilder() { return new Builder(); }
    public override Builder CreateBuilderForType() { return new Builder(); }
    public static Builder CreateBuilder(MethodDescriptorProto prototype) {
      return (Builder) new Builder().MergeFrom(prototype);
    }
    
    public sealed partial class Builder : pb::GeneratedBuilder<MethodDescriptorProto, Builder> {
      protected override Builder ThisBuilder {
        get { return this; }
      }
      public Builder() {}
      
      MethodDescriptorProto result = new MethodDescriptorProto();
      
      protected override MethodDescriptorProto MessageBeingBuilt {
        get { return result; }
      }
      
      public override Builder Clear() {
        result = new MethodDescriptorProto();
        return this;
      }
      
      public override Builder Clone() {
        return new Builder().MergeFrom(result);
      }
      
      public override pbd::MessageDescriptor DescriptorForType {
        get { return MethodDescriptorProto.Descriptor; }
      }
      
      public override MethodDescriptorProto DefaultInstanceForType {
        get { return MethodDescriptorProto.DefaultInstance; }
      }
      
      public override MethodDescriptorProto BuildPartial() {
        MethodDescriptorProto returnMe = result;
        result = null;
        return returnMe;
      }
      
      public override Builder MergeFrom(pb::IMessage other) {
        if (other is MethodDescriptorProto) {
          return MergeFrom((MethodDescriptorProto) other);
        } else {
          base.MergeFrom(other);
          return this;
        }
      }
      
      public override Builder MergeFrom(MethodDescriptorProto other) {
        if (other == MethodDescriptorProto.DefaultInstance) return this;
        if (other.HasName) {
          Name = other.Name;
        }
        if (other.HasInputType) {
          InputType = other.InputType;
        }
        if (other.HasOutputType) {
          OutputType = other.OutputType;
        }
        if (other.HasOptions) {
          MergeOptions(other.Options);
        }
        this.MergeUnknownFields(other.UnknownFields);
        return this;
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input) {
        return MergeFrom(input, pb::ExtensionRegistry.Empty);
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
        pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
        while (true) {
          uint tag = input.ReadTag();
          switch (tag) {
            case 0: {
              this.UnknownFields = unknownFields.Build();
              return this;
            }
            default: {
              if (!ParseUnknownField(input, unknownFields, extensionRegistry, tag)) {
                this.UnknownFields = unknownFields.Build();
                return this;
              }
              break;
            }
            case 10: {
              Name = input.ReadString();
              break;
            }
            case 18: {
              InputType = input.ReadString();
              break;
            }
            case 26: {
              OutputType = input.ReadString();
              break;
            }
            case 34: {
              global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions.CreateBuilder();
              if (HasOptions) {
                subBuilder.MergeFrom(Options);
              }
              input.ReadMessage(subBuilder, extensionRegistry);
              Options = subBuilder.BuildPartial();
              break;
            }
          }
        }
      }
      
      
      public bool HasName {
        get { return result.HasName; }
      }
      public string Name {
        get { return result.Name; }
        set { SetName(value); }
      }
      public Builder SetName(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasName = true;
        result.name_ = value;
        return this;
      }
      public Builder ClearName() {
        result.hasName = false;
        result.name_ = "";
        return this;
      }
      
      public bool HasInputType {
        get { return result.HasInputType; }
      }
      public string InputType {
        get { return result.InputType; }
        set { SetInputType(value); }
      }
      public Builder SetInputType(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasInputType = true;
        result.inputType_ = value;
        return this;
      }
      public Builder ClearInputType() {
        result.hasInputType = false;
        result.inputType_ = "";
        return this;
      }
      
      public bool HasOutputType {
        get { return result.HasOutputType; }
      }
      public string OutputType {
        get { return result.OutputType; }
        set { SetOutputType(value); }
      }
      public Builder SetOutputType(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasOutputType = true;
        result.outputType_ = value;
        return this;
      }
      public Builder ClearOutputType() {
        result.hasOutputType = false;
        result.outputType_ = "";
        return this;
      }
      
      public bool HasOptions {
       get { return result.HasOptions; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions Options {
        get { return result.Options; }
        set { SetOptions(value); }
      }
      public Builder SetOptions(global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasOptions = true;
        result.options_ = value;
        return this;
      }
      public Builder SetOptions(global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.hasOptions = true;
        result.options_ = builderForValue.Build();
        return this;
      }
      public Builder MergeOptions(global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        if (result.HasOptions &&
            result.options_ != global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions.DefaultInstance) {
            result.options_ = global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions.CreateBuilder(result.options_).MergeFrom(value).BuildPartial();
        } else {
          result.options_ = value;
        }
        result.hasOptions = true;
        return this;
      }
      public Builder ClearOptions() {
        result.hasOptions = false;
        result.options_ = global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions.DefaultInstance;
        return this;
      }
    }
  }
  
  public sealed partial class FileOptions : pb::ExtendableMessage<FileOptions, FileOptions.Builder> {
    private static readonly FileOptions defaultInstance = new Builder().BuildPartial();
    public static FileOptions DefaultInstance {
      get { return defaultInstance; }
    }
    
    public override FileOptions DefaultInstanceForType {
      get { return defaultInstance; }
    }
    
    protected override FileOptions ThisMessage {
      get { return this; }
    }
    
    public static pbd::MessageDescriptor Descriptor {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_FileOptions__Descriptor; }
    }
    
    protected override pb::FieldAccess.FieldAccessorTable<FileOptions, FileOptions.Builder> InternalFieldAccessors {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_FileOptions__FieldAccessorTable; }
    }
    
    #region Nested types
    public static class Types {
      public enum OptimizeMode {
        SPEED = 1,
        CODE_SIZE = 2,
      }
      
    }
    #endregion
    
    private bool hasJavaPackage;
    private string javaPackage_ = "";
    public bool HasJavaPackage {
      get { return hasJavaPackage; }
    }
    public string JavaPackage {
      get { return javaPackage_; }
    }
    
    private bool hasJavaOuterClassname;
    private string javaOuterClassname_ = "";
    public bool HasJavaOuterClassname {
      get { return hasJavaOuterClassname; }
    }
    public string JavaOuterClassname {
      get { return javaOuterClassname_; }
    }
    
    private bool hasJavaMultipleFiles;
    private bool javaMultipleFiles_ = false;
    public bool HasJavaMultipleFiles {
      get { return hasJavaMultipleFiles; }
    }
    public bool JavaMultipleFiles {
      get { return javaMultipleFiles_; }
    }
    
    private bool hasOptimizeFor;
    private global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.Types.OptimizeMode optimizeFor_ = global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.Types.OptimizeMode.CODE_SIZE;
    public bool HasOptimizeFor {
      get { return hasOptimizeFor; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.Types.OptimizeMode OptimizeFor {
      get { return optimizeFor_; }
    }
    
    private pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> uninterpretedOption_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption>();
    public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> UninterpretedOptionList {
      get { return uninterpretedOption_; }
    }
    public int UninterpretedOptionCount {
      get { return uninterpretedOption_.Count; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption GetUninterpretedOption(int index) {
      return uninterpretedOption_[index];
    }
    
    public override bool IsInitialized {
      get {
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
          if (!element.IsInitialized) return false;
        }
        if (!ExtensionsAreInitialized) return false;
        return true;
      }
    }
    
    public override void WriteTo(pb::CodedOutputStream output) {
      pb::ExtendableMessage<FileOptions, FileOptions.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
      if (HasJavaPackage) {
        output.WriteString(1, JavaPackage);
      }
      if (HasJavaOuterClassname) {
        output.WriteString(8, JavaOuterClassname);
      }
      if (HasOptimizeFor) {
        output.WriteEnum(9, (int) OptimizeFor);
      }
      if (HasJavaMultipleFiles) {
        output.WriteBool(10, JavaMultipleFiles);
      }
      foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
        output.WriteMessage(999, element);
      }
      extensionWriter.WriteUntil(536870912, output);
      UnknownFields.WriteTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public override int SerializedSize {
      get {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
        
        size = 0;
        if (HasJavaPackage) {
          size += pb::CodedOutputStream.ComputeStringSize(1, JavaPackage);
        }
        if (HasJavaOuterClassname) {
          size += pb::CodedOutputStream.ComputeStringSize(8, JavaOuterClassname);
        }
        if (HasJavaMultipleFiles) {
          size += pb::CodedOutputStream.ComputeBoolSize(10, JavaMultipleFiles);
        }
        if (HasOptimizeFor) {
          size += pb::CodedOutputStream.ComputeEnumSize(9, (int) OptimizeFor);
        }
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
          size += pb::CodedOutputStream.ComputeMessageSize(999, element);
        }
        size += ExtensionsSerializedSize;
        size += UnknownFields.SerializedSize;
        memoizedSerializedSize = size;
        return size;
      }
    }
    
    public static FileOptions ParseFrom(pb::ByteString data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static FileOptions ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static FileOptions ParseFrom(byte[] data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static FileOptions ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static FileOptions ParseFrom(global::System.IO.Stream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static FileOptions ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static FileOptions ParseFrom(pb::CodedInputStream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static FileOptions ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static Builder CreateBuilder() { return new Builder(); }
    public override Builder CreateBuilderForType() { return new Builder(); }
    public static Builder CreateBuilder(FileOptions prototype) {
      return (Builder) new Builder().MergeFrom(prototype);
    }
    
    public sealed partial class Builder : pb::ExtendableBuilder<FileOptions, Builder> {
      protected override Builder ThisBuilder {
        get { return this; }
      }
      public Builder() {}
      
      FileOptions result = new FileOptions();
      
      protected override FileOptions MessageBeingBuilt {
        get { return result; }
      }
      
      public override Builder Clear() {
        result = new FileOptions();
        return this;
      }
      
      public override Builder Clone() {
        return new Builder().MergeFrom(result);
      }
      
      public override pbd::MessageDescriptor DescriptorForType {
        get { return FileOptions.Descriptor; }
      }
      
      public override FileOptions DefaultInstanceForType {
        get { return FileOptions.DefaultInstance; }
      }
      
      public override FileOptions BuildPartial() {
        result.uninterpretedOption_.MakeReadOnly();
        FileOptions returnMe = result;
        result = null;
        return returnMe;
      }
      
      public override Builder MergeFrom(pb::IMessage other) {
        if (other is FileOptions) {
          return MergeFrom((FileOptions) other);
        } else {
          base.MergeFrom(other);
          return this;
        }
      }
      
      public override Builder MergeFrom(FileOptions other) {
        if (other == FileOptions.DefaultInstance) return this;
        if (other.HasJavaPackage) {
          JavaPackage = other.JavaPackage;
        }
        if (other.HasJavaOuterClassname) {
          JavaOuterClassname = other.JavaOuterClassname;
        }
        if (other.HasJavaMultipleFiles) {
          JavaMultipleFiles = other.JavaMultipleFiles;
        }
        if (other.HasOptimizeFor) {
          OptimizeFor = other.OptimizeFor;
        }
        if (other.uninterpretedOption_.Count != 0) {
          base.AddRange(other.uninterpretedOption_, result.uninterpretedOption_);
        }
          this.MergeExtensionFields(other);
        this.MergeUnknownFields(other.UnknownFields);
        return this;
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input) {
        return MergeFrom(input, pb::ExtensionRegistry.Empty);
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
        pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
        while (true) {
          uint tag = input.ReadTag();
          switch (tag) {
            case 0: {
              this.UnknownFields = unknownFields.Build();
              return this;
            }
            default: {
              if (!ParseUnknownField(input, unknownFields, extensionRegistry, tag)) {
                this.UnknownFields = unknownFields.Build();
                return this;
              }
              break;
            }
            case 10: {
              JavaPackage = input.ReadString();
              break;
            }
            case 66: {
              JavaOuterClassname = input.ReadString();
              break;
            }
            case 72: {
              int rawValue = input.ReadEnum();
              if (!global::System.Enum.IsDefined(typeof(global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.Types.OptimizeMode), rawValue)) {
                unknownFields.MergeVarintField(9, (ulong) rawValue);
              } else {
                OptimizeFor = (global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.Types.OptimizeMode) rawValue;
              }
              break;
            }
            case 80: {
              JavaMultipleFiles = input.ReadBool();
              break;
            }
            case 7994: {
              global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.CreateBuilder();
              input.ReadMessage(subBuilder, extensionRegistry);
              AddUninterpretedOption(subBuilder.BuildPartial());
              break;
            }
          }
        }
      }
      
      
      public bool HasJavaPackage {
        get { return result.HasJavaPackage; }
      }
      public string JavaPackage {
        get { return result.JavaPackage; }
        set { SetJavaPackage(value); }
      }
      public Builder SetJavaPackage(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasJavaPackage = true;
        result.javaPackage_ = value;
        return this;
      }
      public Builder ClearJavaPackage() {
        result.hasJavaPackage = false;
        result.javaPackage_ = "";
        return this;
      }
      
      public bool HasJavaOuterClassname {
        get { return result.HasJavaOuterClassname; }
      }
      public string JavaOuterClassname {
        get { return result.JavaOuterClassname; }
        set { SetJavaOuterClassname(value); }
      }
      public Builder SetJavaOuterClassname(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasJavaOuterClassname = true;
        result.javaOuterClassname_ = value;
        return this;
      }
      public Builder ClearJavaOuterClassname() {
        result.hasJavaOuterClassname = false;
        result.javaOuterClassname_ = "";
        return this;
      }
      
      public bool HasJavaMultipleFiles {
        get { return result.HasJavaMultipleFiles; }
      }
      public bool JavaMultipleFiles {
        get { return result.JavaMultipleFiles; }
        set { SetJavaMultipleFiles(value); }
      }
      public Builder SetJavaMultipleFiles(bool value) {
        result.hasJavaMultipleFiles = true;
        result.javaMultipleFiles_ = value;
        return this;
      }
      public Builder ClearJavaMultipleFiles() {
        result.hasJavaMultipleFiles = false;
        result.javaMultipleFiles_ = false;
        return this;
      }
      
      public bool HasOptimizeFor {
       get { return result.HasOptimizeFor; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.Types.OptimizeMode OptimizeFor {
        get { return result.OptimizeFor; }
        set { SetOptimizeFor(value); }
      }
      public Builder SetOptimizeFor(global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.Types.OptimizeMode value) {
        result.hasOptimizeFor = true;
        result.optimizeFor_ = value;
        return this;
      }
      public Builder ClearOptimizeFor() {
        result.hasOptimizeFor = false;
        result.optimizeFor_ = global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.Types.OptimizeMode.CODE_SIZE;
        return this;
      }
      
      public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> UninterpretedOptionList {
        get { return result.uninterpretedOption_; }
      }
      public int UninterpretedOptionCount {
        get { return result.UninterpretedOptionCount; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption GetUninterpretedOption(int index) {
        return result.GetUninterpretedOption(index);
      }
      public Builder SetUninterpretedOption(int index, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.uninterpretedOption_[index] = value;
        return this;
      }
      public Builder SetUninterpretedOption(int index, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.uninterpretedOption_[index] = builderForValue.Build();
        return this;
      }
      public Builder AddUninterpretedOption(global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.uninterpretedOption_.Add(value);
        return this;
      }
      public Builder AddUninterpretedOption(global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.uninterpretedOption_.Add(builderForValue.Build());
        return this;
      }
      public Builder AddRangeUninterpretedOption(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> values) {
        base.AddRange(values, result.uninterpretedOption_);
        return this;
      }
      public Builder ClearUninterpretedOption() {
        result.uninterpretedOption_.Clear();
        return this;
      }
    }
  }
  
  public sealed partial class MessageOptions : pb::ExtendableMessage<MessageOptions, MessageOptions.Builder> {
    private static readonly MessageOptions defaultInstance = new Builder().BuildPartial();
    public static MessageOptions DefaultInstance {
      get { return defaultInstance; }
    }
    
    public override MessageOptions DefaultInstanceForType {
      get { return defaultInstance; }
    }
    
    protected override MessageOptions ThisMessage {
      get { return this; }
    }
    
    public static pbd::MessageDescriptor Descriptor {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_MessageOptions__Descriptor; }
    }
    
    protected override pb::FieldAccess.FieldAccessorTable<MessageOptions, MessageOptions.Builder> InternalFieldAccessors {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_MessageOptions__FieldAccessorTable; }
    }
    
    private bool hasMessageSetWireFormat;
    private bool messageSetWireFormat_ = false;
    public bool HasMessageSetWireFormat {
      get { return hasMessageSetWireFormat; }
    }
    public bool MessageSetWireFormat {
      get { return messageSetWireFormat_; }
    }
    
    private pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> uninterpretedOption_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption>();
    public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> UninterpretedOptionList {
      get { return uninterpretedOption_; }
    }
    public int UninterpretedOptionCount {
      get { return uninterpretedOption_.Count; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption GetUninterpretedOption(int index) {
      return uninterpretedOption_[index];
    }
    
    public override bool IsInitialized {
      get {
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
          if (!element.IsInitialized) return false;
        }
        if (!ExtensionsAreInitialized) return false;
        return true;
      }
    }
    
    public override void WriteTo(pb::CodedOutputStream output) {
      pb::ExtendableMessage<MessageOptions, MessageOptions.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
      if (HasMessageSetWireFormat) {
        output.WriteBool(1, MessageSetWireFormat);
      }
      foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
        output.WriteMessage(999, element);
      }
      extensionWriter.WriteUntil(536870912, output);
      UnknownFields.WriteTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public override int SerializedSize {
      get {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
        
        size = 0;
        if (HasMessageSetWireFormat) {
          size += pb::CodedOutputStream.ComputeBoolSize(1, MessageSetWireFormat);
        }
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
          size += pb::CodedOutputStream.ComputeMessageSize(999, element);
        }
        size += ExtensionsSerializedSize;
        size += UnknownFields.SerializedSize;
        memoizedSerializedSize = size;
        return size;
      }
    }
    
    public static MessageOptions ParseFrom(pb::ByteString data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static MessageOptions ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static MessageOptions ParseFrom(byte[] data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static MessageOptions ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static MessageOptions ParseFrom(global::System.IO.Stream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static MessageOptions ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static MessageOptions ParseFrom(pb::CodedInputStream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static MessageOptions ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static Builder CreateBuilder() { return new Builder(); }
    public override Builder CreateBuilderForType() { return new Builder(); }
    public static Builder CreateBuilder(MessageOptions prototype) {
      return (Builder) new Builder().MergeFrom(prototype);
    }
    
    public sealed partial class Builder : pb::ExtendableBuilder<MessageOptions, Builder> {
      protected override Builder ThisBuilder {
        get { return this; }
      }
      public Builder() {}
      
      MessageOptions result = new MessageOptions();
      
      protected override MessageOptions MessageBeingBuilt {
        get { return result; }
      }
      
      public override Builder Clear() {
        result = new MessageOptions();
        return this;
      }
      
      public override Builder Clone() {
        return new Builder().MergeFrom(result);
      }
      
      public override pbd::MessageDescriptor DescriptorForType {
        get { return MessageOptions.Descriptor; }
      }
      
      public override MessageOptions DefaultInstanceForType {
        get { return MessageOptions.DefaultInstance; }
      }
      
      public override MessageOptions BuildPartial() {
        result.uninterpretedOption_.MakeReadOnly();
        MessageOptions returnMe = result;
        result = null;
        return returnMe;
      }
      
      public override Builder MergeFrom(pb::IMessage other) {
        if (other is MessageOptions) {
          return MergeFrom((MessageOptions) other);
        } else {
          base.MergeFrom(other);
          return this;
        }
      }
      
      public override Builder MergeFrom(MessageOptions other) {
        if (other == MessageOptions.DefaultInstance) return this;
        if (other.HasMessageSetWireFormat) {
          MessageSetWireFormat = other.MessageSetWireFormat;
        }
        if (other.uninterpretedOption_.Count != 0) {
          base.AddRange(other.uninterpretedOption_, result.uninterpretedOption_);
        }
          this.MergeExtensionFields(other);
        this.MergeUnknownFields(other.UnknownFields);
        return this;
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input) {
        return MergeFrom(input, pb::ExtensionRegistry.Empty);
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
        pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
        while (true) {
          uint tag = input.ReadTag();
          switch (tag) {
            case 0: {
              this.UnknownFields = unknownFields.Build();
              return this;
            }
            default: {
              if (!ParseUnknownField(input, unknownFields, extensionRegistry, tag)) {
                this.UnknownFields = unknownFields.Build();
                return this;
              }
              break;
            }
            case 8: {
              MessageSetWireFormat = input.ReadBool();
              break;
            }
            case 7994: {
              global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.CreateBuilder();
              input.ReadMessage(subBuilder, extensionRegistry);
              AddUninterpretedOption(subBuilder.BuildPartial());
              break;
            }
          }
        }
      }
      
      
      public bool HasMessageSetWireFormat {
        get { return result.HasMessageSetWireFormat; }
      }
      public bool MessageSetWireFormat {
        get { return result.MessageSetWireFormat; }
        set { SetMessageSetWireFormat(value); }
      }
      public Builder SetMessageSetWireFormat(bool value) {
        result.hasMessageSetWireFormat = true;
        result.messageSetWireFormat_ = value;
        return this;
      }
      public Builder ClearMessageSetWireFormat() {
        result.hasMessageSetWireFormat = false;
        result.messageSetWireFormat_ = false;
        return this;
      }
      
      public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> UninterpretedOptionList {
        get { return result.uninterpretedOption_; }
      }
      public int UninterpretedOptionCount {
        get { return result.UninterpretedOptionCount; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption GetUninterpretedOption(int index) {
        return result.GetUninterpretedOption(index);
      }
      public Builder SetUninterpretedOption(int index, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.uninterpretedOption_[index] = value;
        return this;
      }
      public Builder SetUninterpretedOption(int index, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.uninterpretedOption_[index] = builderForValue.Build();
        return this;
      }
      public Builder AddUninterpretedOption(global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.uninterpretedOption_.Add(value);
        return this;
      }
      public Builder AddUninterpretedOption(global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.uninterpretedOption_.Add(builderForValue.Build());
        return this;
      }
      public Builder AddRangeUninterpretedOption(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> values) {
        base.AddRange(values, result.uninterpretedOption_);
        return this;
      }
      public Builder ClearUninterpretedOption() {
        result.uninterpretedOption_.Clear();
        return this;
      }
    }
  }
  
  public sealed partial class FieldOptions : pb::ExtendableMessage<FieldOptions, FieldOptions.Builder> {
    private static readonly FieldOptions defaultInstance = new Builder().BuildPartial();
    public static FieldOptions DefaultInstance {
      get { return defaultInstance; }
    }
    
    public override FieldOptions DefaultInstanceForType {
      get { return defaultInstance; }
    }
    
    protected override FieldOptions ThisMessage {
      get { return this; }
    }
    
    public static pbd::MessageDescriptor Descriptor {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_FieldOptions__Descriptor; }
    }
    
    protected override pb::FieldAccess.FieldAccessorTable<FieldOptions, FieldOptions.Builder> InternalFieldAccessors {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_FieldOptions__FieldAccessorTable; }
    }
    
    #region Nested types
    public static class Types {
      public enum CType {
        CORD = 1,
        STRING_PIECE = 2,
      }
      
    }
    #endregion
    
    private bool hasCtype;
    private global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.Types.CType ctype_ = global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.Types.CType.CORD;
    public bool HasCtype {
      get { return hasCtype; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.Types.CType Ctype {
      get { return ctype_; }
    }
    
    private bool hasExperimentalMapKey;
    private string experimentalMapKey_ = "";
    public bool HasExperimentalMapKey {
      get { return hasExperimentalMapKey; }
    }
    public string ExperimentalMapKey {
      get { return experimentalMapKey_; }
    }
    
    private pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> uninterpretedOption_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption>();
    public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> UninterpretedOptionList {
      get { return uninterpretedOption_; }
    }
    public int UninterpretedOptionCount {
      get { return uninterpretedOption_.Count; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption GetUninterpretedOption(int index) {
      return uninterpretedOption_[index];
    }
    
    public override bool IsInitialized {
      get {
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
          if (!element.IsInitialized) return false;
        }
        if (!ExtensionsAreInitialized) return false;
        return true;
      }
    }
    
    public override void WriteTo(pb::CodedOutputStream output) {
      pb::ExtendableMessage<FieldOptions, FieldOptions.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
      if (HasCtype) {
        output.WriteEnum(1, (int) Ctype);
      }
      if (HasExperimentalMapKey) {
        output.WriteString(9, ExperimentalMapKey);
      }
      foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
        output.WriteMessage(999, element);
      }
      extensionWriter.WriteUntil(536870912, output);
      UnknownFields.WriteTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public override int SerializedSize {
      get {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
        
        size = 0;
        if (HasCtype) {
          size += pb::CodedOutputStream.ComputeEnumSize(1, (int) Ctype);
        }
        if (HasExperimentalMapKey) {
          size += pb::CodedOutputStream.ComputeStringSize(9, ExperimentalMapKey);
        }
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
          size += pb::CodedOutputStream.ComputeMessageSize(999, element);
        }
        size += ExtensionsSerializedSize;
        size += UnknownFields.SerializedSize;
        memoizedSerializedSize = size;
        return size;
      }
    }
    
    public static FieldOptions ParseFrom(pb::ByteString data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static FieldOptions ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static FieldOptions ParseFrom(byte[] data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static FieldOptions ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static FieldOptions ParseFrom(global::System.IO.Stream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static FieldOptions ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static FieldOptions ParseFrom(pb::CodedInputStream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static FieldOptions ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static Builder CreateBuilder() { return new Builder(); }
    public override Builder CreateBuilderForType() { return new Builder(); }
    public static Builder CreateBuilder(FieldOptions prototype) {
      return (Builder) new Builder().MergeFrom(prototype);
    }
    
    public sealed partial class Builder : pb::ExtendableBuilder<FieldOptions, Builder> {
      protected override Builder ThisBuilder {
        get { return this; }
      }
      public Builder() {}
      
      FieldOptions result = new FieldOptions();
      
      protected override FieldOptions MessageBeingBuilt {
        get { return result; }
      }
      
      public override Builder Clear() {
        result = new FieldOptions();
        return this;
      }
      
      public override Builder Clone() {
        return new Builder().MergeFrom(result);
      }
      
      public override pbd::MessageDescriptor DescriptorForType {
        get { return FieldOptions.Descriptor; }
      }
      
      public override FieldOptions DefaultInstanceForType {
        get { return FieldOptions.DefaultInstance; }
      }
      
      public override FieldOptions BuildPartial() {
        result.uninterpretedOption_.MakeReadOnly();
        FieldOptions returnMe = result;
        result = null;
        return returnMe;
      }
      
      public override Builder MergeFrom(pb::IMessage other) {
        if (other is FieldOptions) {
          return MergeFrom((FieldOptions) other);
        } else {
          base.MergeFrom(other);
          return this;
        }
      }
      
      public override Builder MergeFrom(FieldOptions other) {
        if (other == FieldOptions.DefaultInstance) return this;
        if (other.HasCtype) {
          Ctype = other.Ctype;
        }
        if (other.HasExperimentalMapKey) {
          ExperimentalMapKey = other.ExperimentalMapKey;
        }
        if (other.uninterpretedOption_.Count != 0) {
          base.AddRange(other.uninterpretedOption_, result.uninterpretedOption_);
        }
          this.MergeExtensionFields(other);
        this.MergeUnknownFields(other.UnknownFields);
        return this;
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input) {
        return MergeFrom(input, pb::ExtensionRegistry.Empty);
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
        pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
        while (true) {
          uint tag = input.ReadTag();
          switch (tag) {
            case 0: {
              this.UnknownFields = unknownFields.Build();
              return this;
            }
            default: {
              if (!ParseUnknownField(input, unknownFields, extensionRegistry, tag)) {
                this.UnknownFields = unknownFields.Build();
                return this;
              }
              break;
            }
            case 8: {
              int rawValue = input.ReadEnum();
              if (!global::System.Enum.IsDefined(typeof(global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.Types.CType), rawValue)) {
                unknownFields.MergeVarintField(1, (ulong) rawValue);
              } else {
                Ctype = (global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.Types.CType) rawValue;
              }
              break;
            }
            case 74: {
              ExperimentalMapKey = input.ReadString();
              break;
            }
            case 7994: {
              global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.CreateBuilder();
              input.ReadMessage(subBuilder, extensionRegistry);
              AddUninterpretedOption(subBuilder.BuildPartial());
              break;
            }
          }
        }
      }
      
      
      public bool HasCtype {
       get { return result.HasCtype; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.Types.CType Ctype {
        get { return result.Ctype; }
        set { SetCtype(value); }
      }
      public Builder SetCtype(global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.Types.CType value) {
        result.hasCtype = true;
        result.ctype_ = value;
        return this;
      }
      public Builder ClearCtype() {
        result.hasCtype = false;
        result.ctype_ = global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.Types.CType.CORD;
        return this;
      }
      
      public bool HasExperimentalMapKey {
        get { return result.HasExperimentalMapKey; }
      }
      public string ExperimentalMapKey {
        get { return result.ExperimentalMapKey; }
        set { SetExperimentalMapKey(value); }
      }
      public Builder SetExperimentalMapKey(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasExperimentalMapKey = true;
        result.experimentalMapKey_ = value;
        return this;
      }
      public Builder ClearExperimentalMapKey() {
        result.hasExperimentalMapKey = false;
        result.experimentalMapKey_ = "";
        return this;
      }
      
      public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> UninterpretedOptionList {
        get { return result.uninterpretedOption_; }
      }
      public int UninterpretedOptionCount {
        get { return result.UninterpretedOptionCount; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption GetUninterpretedOption(int index) {
        return result.GetUninterpretedOption(index);
      }
      public Builder SetUninterpretedOption(int index, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.uninterpretedOption_[index] = value;
        return this;
      }
      public Builder SetUninterpretedOption(int index, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.uninterpretedOption_[index] = builderForValue.Build();
        return this;
      }
      public Builder AddUninterpretedOption(global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.uninterpretedOption_.Add(value);
        return this;
      }
      public Builder AddUninterpretedOption(global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.uninterpretedOption_.Add(builderForValue.Build());
        return this;
      }
      public Builder AddRangeUninterpretedOption(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> values) {
        base.AddRange(values, result.uninterpretedOption_);
        return this;
      }
      public Builder ClearUninterpretedOption() {
        result.uninterpretedOption_.Clear();
        return this;
      }
    }
  }
  
  public sealed partial class EnumOptions : pb::ExtendableMessage<EnumOptions, EnumOptions.Builder> {
    private static readonly EnumOptions defaultInstance = new Builder().BuildPartial();
    public static EnumOptions DefaultInstance {
      get { return defaultInstance; }
    }
    
    public override EnumOptions DefaultInstanceForType {
      get { return defaultInstance; }
    }
    
    protected override EnumOptions ThisMessage {
      get { return this; }
    }
    
    public static pbd::MessageDescriptor Descriptor {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_EnumOptions__Descriptor; }
    }
    
    protected override pb::FieldAccess.FieldAccessorTable<EnumOptions, EnumOptions.Builder> InternalFieldAccessors {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_EnumOptions__FieldAccessorTable; }
    }
    
    private pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> uninterpretedOption_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption>();
    public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> UninterpretedOptionList {
      get { return uninterpretedOption_; }
    }
    public int UninterpretedOptionCount {
      get { return uninterpretedOption_.Count; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption GetUninterpretedOption(int index) {
      return uninterpretedOption_[index];
    }
    
    public override bool IsInitialized {
      get {
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
          if (!element.IsInitialized) return false;
        }
        if (!ExtensionsAreInitialized) return false;
        return true;
      }
    }
    
    public override void WriteTo(pb::CodedOutputStream output) {
      pb::ExtendableMessage<EnumOptions, EnumOptions.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
      foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
        output.WriteMessage(999, element);
      }
      extensionWriter.WriteUntil(536870912, output);
      UnknownFields.WriteTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public override int SerializedSize {
      get {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
        
        size = 0;
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
          size += pb::CodedOutputStream.ComputeMessageSize(999, element);
        }
        size += ExtensionsSerializedSize;
        size += UnknownFields.SerializedSize;
        memoizedSerializedSize = size;
        return size;
      }
    }
    
    public static EnumOptions ParseFrom(pb::ByteString data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static EnumOptions ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static EnumOptions ParseFrom(byte[] data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static EnumOptions ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static EnumOptions ParseFrom(global::System.IO.Stream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static EnumOptions ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static EnumOptions ParseFrom(pb::CodedInputStream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static EnumOptions ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static Builder CreateBuilder() { return new Builder(); }
    public override Builder CreateBuilderForType() { return new Builder(); }
    public static Builder CreateBuilder(EnumOptions prototype) {
      return (Builder) new Builder().MergeFrom(prototype);
    }
    
    public sealed partial class Builder : pb::ExtendableBuilder<EnumOptions, Builder> {
      protected override Builder ThisBuilder {
        get { return this; }
      }
      public Builder() {}
      
      EnumOptions result = new EnumOptions();
      
      protected override EnumOptions MessageBeingBuilt {
        get { return result; }
      }
      
      public override Builder Clear() {
        result = new EnumOptions();
        return this;
      }
      
      public override Builder Clone() {
        return new Builder().MergeFrom(result);
      }
      
      public override pbd::MessageDescriptor DescriptorForType {
        get { return EnumOptions.Descriptor; }
      }
      
      public override EnumOptions DefaultInstanceForType {
        get { return EnumOptions.DefaultInstance; }
      }
      
      public override EnumOptions BuildPartial() {
        result.uninterpretedOption_.MakeReadOnly();
        EnumOptions returnMe = result;
        result = null;
        return returnMe;
      }
      
      public override Builder MergeFrom(pb::IMessage other) {
        if (other is EnumOptions) {
          return MergeFrom((EnumOptions) other);
        } else {
          base.MergeFrom(other);
          return this;
        }
      }
      
      public override Builder MergeFrom(EnumOptions other) {
        if (other == EnumOptions.DefaultInstance) return this;
        if (other.uninterpretedOption_.Count != 0) {
          base.AddRange(other.uninterpretedOption_, result.uninterpretedOption_);
        }
          this.MergeExtensionFields(other);
        this.MergeUnknownFields(other.UnknownFields);
        return this;
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input) {
        return MergeFrom(input, pb::ExtensionRegistry.Empty);
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
        pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
        while (true) {
          uint tag = input.ReadTag();
          switch (tag) {
            case 0: {
              this.UnknownFields = unknownFields.Build();
              return this;
            }
            default: {
              if (!ParseUnknownField(input, unknownFields, extensionRegistry, tag)) {
                this.UnknownFields = unknownFields.Build();
                return this;
              }
              break;
            }
            case 7994: {
              global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.CreateBuilder();
              input.ReadMessage(subBuilder, extensionRegistry);
              AddUninterpretedOption(subBuilder.BuildPartial());
              break;
            }
          }
        }
      }
      
      
      public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> UninterpretedOptionList {
        get { return result.uninterpretedOption_; }
      }
      public int UninterpretedOptionCount {
        get { return result.UninterpretedOptionCount; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption GetUninterpretedOption(int index) {
        return result.GetUninterpretedOption(index);
      }
      public Builder SetUninterpretedOption(int index, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.uninterpretedOption_[index] = value;
        return this;
      }
      public Builder SetUninterpretedOption(int index, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.uninterpretedOption_[index] = builderForValue.Build();
        return this;
      }
      public Builder AddUninterpretedOption(global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.uninterpretedOption_.Add(value);
        return this;
      }
      public Builder AddUninterpretedOption(global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.uninterpretedOption_.Add(builderForValue.Build());
        return this;
      }
      public Builder AddRangeUninterpretedOption(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> values) {
        base.AddRange(values, result.uninterpretedOption_);
        return this;
      }
      public Builder ClearUninterpretedOption() {
        result.uninterpretedOption_.Clear();
        return this;
      }
    }
  }
  
  public sealed partial class EnumValueOptions : pb::ExtendableMessage<EnumValueOptions, EnumValueOptions.Builder> {
    private static readonly EnumValueOptions defaultInstance = new Builder().BuildPartial();
    public static EnumValueOptions DefaultInstance {
      get { return defaultInstance; }
    }
    
    public override EnumValueOptions DefaultInstanceForType {
      get { return defaultInstance; }
    }
    
    protected override EnumValueOptions ThisMessage {
      get { return this; }
    }
    
    public static pbd::MessageDescriptor Descriptor {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_EnumValueOptions__Descriptor; }
    }
    
    protected override pb::FieldAccess.FieldAccessorTable<EnumValueOptions, EnumValueOptions.Builder> InternalFieldAccessors {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_EnumValueOptions__FieldAccessorTable; }
    }
    
    private pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> uninterpretedOption_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption>();
    public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> UninterpretedOptionList {
      get { return uninterpretedOption_; }
    }
    public int UninterpretedOptionCount {
      get { return uninterpretedOption_.Count; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption GetUninterpretedOption(int index) {
      return uninterpretedOption_[index];
    }
    
    public override bool IsInitialized {
      get {
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
          if (!element.IsInitialized) return false;
        }
        if (!ExtensionsAreInitialized) return false;
        return true;
      }
    }
    
    public override void WriteTo(pb::CodedOutputStream output) {
      pb::ExtendableMessage<EnumValueOptions, EnumValueOptions.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
      foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
        output.WriteMessage(999, element);
      }
      extensionWriter.WriteUntil(536870912, output);
      UnknownFields.WriteTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public override int SerializedSize {
      get {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
        
        size = 0;
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
          size += pb::CodedOutputStream.ComputeMessageSize(999, element);
        }
        size += ExtensionsSerializedSize;
        size += UnknownFields.SerializedSize;
        memoizedSerializedSize = size;
        return size;
      }
    }
    
    public static EnumValueOptions ParseFrom(pb::ByteString data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static EnumValueOptions ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static EnumValueOptions ParseFrom(byte[] data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static EnumValueOptions ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static EnumValueOptions ParseFrom(global::System.IO.Stream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static EnumValueOptions ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static EnumValueOptions ParseFrom(pb::CodedInputStream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static EnumValueOptions ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static Builder CreateBuilder() { return new Builder(); }
    public override Builder CreateBuilderForType() { return new Builder(); }
    public static Builder CreateBuilder(EnumValueOptions prototype) {
      return (Builder) new Builder().MergeFrom(prototype);
    }
    
    public sealed partial class Builder : pb::ExtendableBuilder<EnumValueOptions, Builder> {
      protected override Builder ThisBuilder {
        get { return this; }
      }
      public Builder() {}
      
      EnumValueOptions result = new EnumValueOptions();
      
      protected override EnumValueOptions MessageBeingBuilt {
        get { return result; }
      }
      
      public override Builder Clear() {
        result = new EnumValueOptions();
        return this;
      }
      
      public override Builder Clone() {
        return new Builder().MergeFrom(result);
      }
      
      public override pbd::MessageDescriptor DescriptorForType {
        get { return EnumValueOptions.Descriptor; }
      }
      
      public override EnumValueOptions DefaultInstanceForType {
        get { return EnumValueOptions.DefaultInstance; }
      }
      
      public override EnumValueOptions BuildPartial() {
        result.uninterpretedOption_.MakeReadOnly();
        EnumValueOptions returnMe = result;
        result = null;
        return returnMe;
      }
      
      public override Builder MergeFrom(pb::IMessage other) {
        if (other is EnumValueOptions) {
          return MergeFrom((EnumValueOptions) other);
        } else {
          base.MergeFrom(other);
          return this;
        }
      }
      
      public override Builder MergeFrom(EnumValueOptions other) {
        if (other == EnumValueOptions.DefaultInstance) return this;
        if (other.uninterpretedOption_.Count != 0) {
          base.AddRange(other.uninterpretedOption_, result.uninterpretedOption_);
        }
          this.MergeExtensionFields(other);
        this.MergeUnknownFields(other.UnknownFields);
        return this;
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input) {
        return MergeFrom(input, pb::ExtensionRegistry.Empty);
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
        pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
        while (true) {
          uint tag = input.ReadTag();
          switch (tag) {
            case 0: {
              this.UnknownFields = unknownFields.Build();
              return this;
            }
            default: {
              if (!ParseUnknownField(input, unknownFields, extensionRegistry, tag)) {
                this.UnknownFields = unknownFields.Build();
                return this;
              }
              break;
            }
            case 7994: {
              global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.CreateBuilder();
              input.ReadMessage(subBuilder, extensionRegistry);
              AddUninterpretedOption(subBuilder.BuildPartial());
              break;
            }
          }
        }
      }
      
      
      public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> UninterpretedOptionList {
        get { return result.uninterpretedOption_; }
      }
      public int UninterpretedOptionCount {
        get { return result.UninterpretedOptionCount; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption GetUninterpretedOption(int index) {
        return result.GetUninterpretedOption(index);
      }
      public Builder SetUninterpretedOption(int index, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.uninterpretedOption_[index] = value;
        return this;
      }
      public Builder SetUninterpretedOption(int index, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.uninterpretedOption_[index] = builderForValue.Build();
        return this;
      }
      public Builder AddUninterpretedOption(global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.uninterpretedOption_.Add(value);
        return this;
      }
      public Builder AddUninterpretedOption(global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.uninterpretedOption_.Add(builderForValue.Build());
        return this;
      }
      public Builder AddRangeUninterpretedOption(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> values) {
        base.AddRange(values, result.uninterpretedOption_);
        return this;
      }
      public Builder ClearUninterpretedOption() {
        result.uninterpretedOption_.Clear();
        return this;
      }
    }
  }
  
  public sealed partial class ServiceOptions : pb::ExtendableMessage<ServiceOptions, ServiceOptions.Builder> {
    private static readonly ServiceOptions defaultInstance = new Builder().BuildPartial();
    public static ServiceOptions DefaultInstance {
      get { return defaultInstance; }
    }
    
    public override ServiceOptions DefaultInstanceForType {
      get { return defaultInstance; }
    }
    
    protected override ServiceOptions ThisMessage {
      get { return this; }
    }
    
    public static pbd::MessageDescriptor Descriptor {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_ServiceOptions__Descriptor; }
    }
    
    protected override pb::FieldAccess.FieldAccessorTable<ServiceOptions, ServiceOptions.Builder> InternalFieldAccessors {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_ServiceOptions__FieldAccessorTable; }
    }
    
    private pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> uninterpretedOption_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption>();
    public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> UninterpretedOptionList {
      get { return uninterpretedOption_; }
    }
    public int UninterpretedOptionCount {
      get { return uninterpretedOption_.Count; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption GetUninterpretedOption(int index) {
      return uninterpretedOption_[index];
    }
    
    public override bool IsInitialized {
      get {
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
          if (!element.IsInitialized) return false;
        }
        if (!ExtensionsAreInitialized) return false;
        return true;
      }
    }
    
    public override void WriteTo(pb::CodedOutputStream output) {
      pb::ExtendableMessage<ServiceOptions, ServiceOptions.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
      foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
        output.WriteMessage(999, element);
      }
      extensionWriter.WriteUntil(536870912, output);
      UnknownFields.WriteTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public override int SerializedSize {
      get {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
        
        size = 0;
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
          size += pb::CodedOutputStream.ComputeMessageSize(999, element);
        }
        size += ExtensionsSerializedSize;
        size += UnknownFields.SerializedSize;
        memoizedSerializedSize = size;
        return size;
      }
    }
    
    public static ServiceOptions ParseFrom(pb::ByteString data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static ServiceOptions ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static ServiceOptions ParseFrom(byte[] data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static ServiceOptions ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static ServiceOptions ParseFrom(global::System.IO.Stream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static ServiceOptions ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static ServiceOptions ParseFrom(pb::CodedInputStream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static ServiceOptions ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static Builder CreateBuilder() { return new Builder(); }
    public override Builder CreateBuilderForType() { return new Builder(); }
    public static Builder CreateBuilder(ServiceOptions prototype) {
      return (Builder) new Builder().MergeFrom(prototype);
    }
    
    public sealed partial class Builder : pb::ExtendableBuilder<ServiceOptions, Builder> {
      protected override Builder ThisBuilder {
        get { return this; }
      }
      public Builder() {}
      
      ServiceOptions result = new ServiceOptions();
      
      protected override ServiceOptions MessageBeingBuilt {
        get { return result; }
      }
      
      public override Builder Clear() {
        result = new ServiceOptions();
        return this;
      }
      
      public override Builder Clone() {
        return new Builder().MergeFrom(result);
      }
      
      public override pbd::MessageDescriptor DescriptorForType {
        get { return ServiceOptions.Descriptor; }
      }
      
      public override ServiceOptions DefaultInstanceForType {
        get { return ServiceOptions.DefaultInstance; }
      }
      
      public override ServiceOptions BuildPartial() {
        result.uninterpretedOption_.MakeReadOnly();
        ServiceOptions returnMe = result;
        result = null;
        return returnMe;
      }
      
      public override Builder MergeFrom(pb::IMessage other) {
        if (other is ServiceOptions) {
          return MergeFrom((ServiceOptions) other);
        } else {
          base.MergeFrom(other);
          return this;
        }
      }
      
      public override Builder MergeFrom(ServiceOptions other) {
        if (other == ServiceOptions.DefaultInstance) return this;
        if (other.uninterpretedOption_.Count != 0) {
          base.AddRange(other.uninterpretedOption_, result.uninterpretedOption_);
        }
          this.MergeExtensionFields(other);
        this.MergeUnknownFields(other.UnknownFields);
        return this;
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input) {
        return MergeFrom(input, pb::ExtensionRegistry.Empty);
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
        pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
        while (true) {
          uint tag = input.ReadTag();
          switch (tag) {
            case 0: {
              this.UnknownFields = unknownFields.Build();
              return this;
            }
            default: {
              if (!ParseUnknownField(input, unknownFields, extensionRegistry, tag)) {
                this.UnknownFields = unknownFields.Build();
                return this;
              }
              break;
            }
            case 7994: {
              global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.CreateBuilder();
              input.ReadMessage(subBuilder, extensionRegistry);
              AddUninterpretedOption(subBuilder.BuildPartial());
              break;
            }
          }
        }
      }
      
      
      public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> UninterpretedOptionList {
        get { return result.uninterpretedOption_; }
      }
      public int UninterpretedOptionCount {
        get { return result.UninterpretedOptionCount; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption GetUninterpretedOption(int index) {
        return result.GetUninterpretedOption(index);
      }
      public Builder SetUninterpretedOption(int index, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.uninterpretedOption_[index] = value;
        return this;
      }
      public Builder SetUninterpretedOption(int index, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.uninterpretedOption_[index] = builderForValue.Build();
        return this;
      }
      public Builder AddUninterpretedOption(global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.uninterpretedOption_.Add(value);
        return this;
      }
      public Builder AddUninterpretedOption(global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.uninterpretedOption_.Add(builderForValue.Build());
        return this;
      }
      public Builder AddRangeUninterpretedOption(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> values) {
        base.AddRange(values, result.uninterpretedOption_);
        return this;
      }
      public Builder ClearUninterpretedOption() {
        result.uninterpretedOption_.Clear();
        return this;
      }
    }
  }
  
  public sealed partial class MethodOptions : pb::ExtendableMessage<MethodOptions, MethodOptions.Builder> {
    private static readonly MethodOptions defaultInstance = new Builder().BuildPartial();
    public static MethodOptions DefaultInstance {
      get { return defaultInstance; }
    }
    
    public override MethodOptions DefaultInstanceForType {
      get { return defaultInstance; }
    }
    
    protected override MethodOptions ThisMessage {
      get { return this; }
    }
    
    public static pbd::MessageDescriptor Descriptor {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_MethodOptions__Descriptor; }
    }
    
    protected override pb::FieldAccess.FieldAccessorTable<MethodOptions, MethodOptions.Builder> InternalFieldAccessors {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_MethodOptions__FieldAccessorTable; }
    }
    
    private pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> uninterpretedOption_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption>();
    public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> UninterpretedOptionList {
      get { return uninterpretedOption_; }
    }
    public int UninterpretedOptionCount {
      get { return uninterpretedOption_.Count; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption GetUninterpretedOption(int index) {
      return uninterpretedOption_[index];
    }
    
    public override bool IsInitialized {
      get {
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
          if (!element.IsInitialized) return false;
        }
        if (!ExtensionsAreInitialized) return false;
        return true;
      }
    }
    
    public override void WriteTo(pb::CodedOutputStream output) {
      pb::ExtendableMessage<MethodOptions, MethodOptions.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
      foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
        output.WriteMessage(999, element);
      }
      extensionWriter.WriteUntil(536870912, output);
      UnknownFields.WriteTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public override int SerializedSize {
      get {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
        
        size = 0;
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
          size += pb::CodedOutputStream.ComputeMessageSize(999, element);
        }
        size += ExtensionsSerializedSize;
        size += UnknownFields.SerializedSize;
        memoizedSerializedSize = size;
        return size;
      }
    }
    
    public static MethodOptions ParseFrom(pb::ByteString data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static MethodOptions ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static MethodOptions ParseFrom(byte[] data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static MethodOptions ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static MethodOptions ParseFrom(global::System.IO.Stream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static MethodOptions ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static MethodOptions ParseFrom(pb::CodedInputStream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static MethodOptions ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static Builder CreateBuilder() { return new Builder(); }
    public override Builder CreateBuilderForType() { return new Builder(); }
    public static Builder CreateBuilder(MethodOptions prototype) {
      return (Builder) new Builder().MergeFrom(prototype);
    }
    
    public sealed partial class Builder : pb::ExtendableBuilder<MethodOptions, Builder> {
      protected override Builder ThisBuilder {
        get { return this; }
      }
      public Builder() {}
      
      MethodOptions result = new MethodOptions();
      
      protected override MethodOptions MessageBeingBuilt {
        get { return result; }
      }
      
      public override Builder Clear() {
        result = new MethodOptions();
        return this;
      }
      
      public override Builder Clone() {
        return new Builder().MergeFrom(result);
      }
      
      public override pbd::MessageDescriptor DescriptorForType {
        get { return MethodOptions.Descriptor; }
      }
      
      public override MethodOptions DefaultInstanceForType {
        get { return MethodOptions.DefaultInstance; }
      }
      
      public override MethodOptions BuildPartial() {
        result.uninterpretedOption_.MakeReadOnly();
        MethodOptions returnMe = result;
        result = null;
        return returnMe;
      }
      
      public override Builder MergeFrom(pb::IMessage other) {
        if (other is MethodOptions) {
          return MergeFrom((MethodOptions) other);
        } else {
          base.MergeFrom(other);
          return this;
        }
      }
      
      public override Builder MergeFrom(MethodOptions other) {
        if (other == MethodOptions.DefaultInstance) return this;
        if (other.uninterpretedOption_.Count != 0) {
          base.AddRange(other.uninterpretedOption_, result.uninterpretedOption_);
        }
          this.MergeExtensionFields(other);
        this.MergeUnknownFields(other.UnknownFields);
        return this;
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input) {
        return MergeFrom(input, pb::ExtensionRegistry.Empty);
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
        pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
        while (true) {
          uint tag = input.ReadTag();
          switch (tag) {
            case 0: {
              this.UnknownFields = unknownFields.Build();
              return this;
            }
            default: {
              if (!ParseUnknownField(input, unknownFields, extensionRegistry, tag)) {
                this.UnknownFields = unknownFields.Build();
                return this;
              }
              break;
            }
            case 7994: {
              global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.CreateBuilder();
              input.ReadMessage(subBuilder, extensionRegistry);
              AddUninterpretedOption(subBuilder.BuildPartial());
              break;
            }
          }
        }
      }
      
      
      public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> UninterpretedOptionList {
        get { return result.uninterpretedOption_; }
      }
      public int UninterpretedOptionCount {
        get { return result.UninterpretedOptionCount; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption GetUninterpretedOption(int index) {
        return result.GetUninterpretedOption(index);
      }
      public Builder SetUninterpretedOption(int index, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.uninterpretedOption_[index] = value;
        return this;
      }
      public Builder SetUninterpretedOption(int index, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.uninterpretedOption_[index] = builderForValue.Build();
        return this;
      }
      public Builder AddUninterpretedOption(global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.uninterpretedOption_.Add(value);
        return this;
      }
      public Builder AddUninterpretedOption(global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.uninterpretedOption_.Add(builderForValue.Build());
        return this;
      }
      public Builder AddRangeUninterpretedOption(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> values) {
        base.AddRange(values, result.uninterpretedOption_);
        return this;
      }
      public Builder ClearUninterpretedOption() {
        result.uninterpretedOption_.Clear();
        return this;
      }
    }
  }
  
  public sealed partial class UninterpretedOption : pb::GeneratedMessage<UninterpretedOption, UninterpretedOption.Builder> {
    private static readonly UninterpretedOption defaultInstance = new Builder().BuildPartial();
    public static UninterpretedOption DefaultInstance {
      get { return defaultInstance; }
    }
    
    public override UninterpretedOption DefaultInstanceForType {
      get { return defaultInstance; }
    }
    
    protected override UninterpretedOption ThisMessage {
      get { return this; }
    }
    
    public static pbd::MessageDescriptor Descriptor {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_UninterpretedOption__Descriptor; }
    }
    
    protected override pb::FieldAccess.FieldAccessorTable<UninterpretedOption, UninterpretedOption.Builder> InternalFieldAccessors {
      get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_UninterpretedOption__FieldAccessorTable; }
    }
    
    #region Nested types
    public static class Types {
      public sealed partial class NamePart : pb::GeneratedMessage<NamePart, NamePart.Builder> {
        private static readonly NamePart defaultInstance = new Builder().BuildPartial();
        public static NamePart DefaultInstance {
          get { return defaultInstance; }
        }
        
        public override NamePart DefaultInstanceForType {
          get { return defaultInstance; }
        }
        
        protected override NamePart ThisMessage {
          get { return this; }
        }
        
        public static pbd::MessageDescriptor Descriptor {
          get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_UninterpretedOption_NamePart__Descriptor; }
        }
        
        protected override pb::FieldAccess.FieldAccessorTable<NamePart, NamePart.Builder> InternalFieldAccessors {
          get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_UninterpretedOption_NamePart__FieldAccessorTable; }
        }
        
        private bool hasNamePart_;
        private string namePart_ = "";
        public bool HasNamePart_ {
          get { return hasNamePart_; }
        }
        public string NamePart_ {
          get { return namePart_; }
        }
        
        private bool hasIsExtension;
        private bool isExtension_ = false;
        public bool HasIsExtension {
          get { return hasIsExtension; }
        }
        public bool IsExtension {
          get { return isExtension_; }
        }
        
        public override bool IsInitialized {
          get {
            if (!hasNamePart_) return false;
            if (!hasIsExtension) return false;
            return true;
          }
        }
        
        public override void WriteTo(pb::CodedOutputStream output) {
          if (HasNamePart_) {
            output.WriteString(1, NamePart_);
          }
          if (HasIsExtension) {
            output.WriteBool(2, IsExtension);
          }
          UnknownFields.WriteTo(output);
        }
        
        private int memoizedSerializedSize = -1;
        public override int SerializedSize {
          get {
            int size = memoizedSerializedSize;
            if (size != -1) return size;
            
            size = 0;
            if (HasNamePart_) {
              size += pb::CodedOutputStream.ComputeStringSize(1, NamePart_);
            }
            if (HasIsExtension) {
              size += pb::CodedOutputStream.ComputeBoolSize(2, IsExtension);
            }
            size += UnknownFields.SerializedSize;
            memoizedSerializedSize = size;
            return size;
          }
        }
        
        public static NamePart ParseFrom(pb::ByteString data) {
          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
        }
        public static NamePart ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
        }
        public static NamePart ParseFrom(byte[] data) {
          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
        }
        public static NamePart ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
        }
        public static NamePart ParseFrom(global::System.IO.Stream input) {
          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
        }
        public static NamePart ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
        }
        public static NamePart ParseFrom(pb::CodedInputStream input) {
          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
        }
        public static NamePart ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
        }
        public static Builder CreateBuilder() { return new Builder(); }
        public override Builder CreateBuilderForType() { return new Builder(); }
        public static Builder CreateBuilder(NamePart prototype) {
          return (Builder) new Builder().MergeFrom(prototype);
        }
        
        public sealed partial class Builder : pb::GeneratedBuilder<NamePart, Builder> {
          protected override Builder ThisBuilder {
            get { return this; }
          }
          public Builder() {}
          
          NamePart result = new NamePart();
          
          protected override NamePart MessageBeingBuilt {
            get { return result; }
          }
          
          public override Builder Clear() {
            result = new NamePart();
            return this;
          }
          
          public override Builder Clone() {
            return new Builder().MergeFrom(result);
          }
          
          public override pbd::MessageDescriptor DescriptorForType {
            get { return NamePart.Descriptor; }
          }
          
          public override NamePart DefaultInstanceForType {
            get { return NamePart.DefaultInstance; }
          }
          
          public override NamePart BuildPartial() {
            NamePart returnMe = result;
            result = null;
            return returnMe;
          }
          
          public override Builder MergeFrom(pb::IMessage other) {
            if (other is NamePart) {
              return MergeFrom((NamePart) other);
            } else {
              base.MergeFrom(other);
              return this;
            }
          }
          
          public override Builder MergeFrom(NamePart other) {
            if (other == NamePart.DefaultInstance) return this;
            if (other.HasNamePart_) {
              NamePart_ = other.NamePart_;
            }
            if (other.HasIsExtension) {
              IsExtension = other.IsExtension;
            }
            this.MergeUnknownFields(other.UnknownFields);
            return this;
          }
          
          public override Builder MergeFrom(pb::CodedInputStream input) {
            return MergeFrom(input, pb::ExtensionRegistry.Empty);
          }
          
          public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
            pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
            while (true) {
              uint tag = input.ReadTag();
              switch (tag) {
                case 0: {
                  this.UnknownFields = unknownFields.Build();
                  return this;
                }
                default: {
                  if (!ParseUnknownField(input, unknownFields, extensionRegistry, tag)) {
                    this.UnknownFields = unknownFields.Build();
                    return this;
                  }
                  break;
                }
                case 10: {
                  NamePart_ = input.ReadString();
                  break;
                }
                case 16: {
                  IsExtension = input.ReadBool();
                  break;
                }
              }
            }
          }
          
          
          public bool HasNamePart_ {
            get { return result.HasNamePart_; }
          }
          public string NamePart_ {
            get { return result.NamePart_; }
            set { SetNamePart_(value); }
          }
          public Builder SetNamePart_(string value) {
            pb::ThrowHelper.ThrowIfNull(value, "value");
            result.hasNamePart_ = true;
            result.namePart_ = value;
            return this;
          }
          public Builder ClearNamePart_() {
            result.hasNamePart_ = false;
            result.namePart_ = "";
            return this;
          }
          
          public bool HasIsExtension {
            get { return result.HasIsExtension; }
          }
          public bool IsExtension {
            get { return result.IsExtension; }
            set { SetIsExtension(value); }
          }
          public Builder SetIsExtension(bool value) {
            result.hasIsExtension = true;
            result.isExtension_ = value;
            return this;
          }
          public Builder ClearIsExtension() {
            result.hasIsExtension = false;
            result.isExtension_ = false;
            return this;
          }
        }
      }
      
    }
    #endregion
    
    private pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart> name_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart>();
    public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart> NameList {
      get { return name_; }
    }
    public int NameCount {
      get { return name_.Count; }
    }
    public global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart GetName(int index) {
      return name_[index];
    }
    
    private bool hasIdentifierValue;
    private string identifierValue_ = "";
    public bool HasIdentifierValue {
      get { return hasIdentifierValue; }
    }
    public string IdentifierValue {
      get { return identifierValue_; }
    }
    
    private bool hasPositiveIntValue;
    private ulong positiveIntValue_ = 0UL;
    public bool HasPositiveIntValue {
      get { return hasPositiveIntValue; }
    }
    public ulong PositiveIntValue {
      get { return positiveIntValue_; }
    }
    
    private bool hasNegativeIntValue;
    private long negativeIntValue_ = 0L;
    public bool HasNegativeIntValue {
      get { return hasNegativeIntValue; }
    }
    public long NegativeIntValue {
      get { return negativeIntValue_; }
    }
    
    private bool hasDoubleValue;
    private double doubleValue_ = 0D;
    public bool HasDoubleValue {
      get { return hasDoubleValue; }
    }
    public double DoubleValue {
      get { return doubleValue_; }
    }
    
    private bool hasStringValue;
    private pb::ByteString stringValue_ = pb::ByteString.Empty;
    public bool HasStringValue {
      get { return hasStringValue; }
    }
    public pb::ByteString StringValue {
      get { return stringValue_; }
    }
    
    public override bool IsInitialized {
      get {
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart element in NameList) {
          if (!element.IsInitialized) return false;
        }
        return true;
      }
    }
    
    public override void WriteTo(pb::CodedOutputStream output) {
      foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart element in NameList) {
        output.WriteMessage(2, element);
      }
      if (HasIdentifierValue) {
        output.WriteString(3, IdentifierValue);
      }
      if (HasPositiveIntValue) {
        output.WriteUInt64(4, PositiveIntValue);
      }
      if (HasNegativeIntValue) {
        output.WriteInt64(5, NegativeIntValue);
      }
      if (HasDoubleValue) {
        output.WriteDouble(6, DoubleValue);
      }
      if (HasStringValue) {
        output.WriteBytes(7, StringValue);
      }
      UnknownFields.WriteTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public override int SerializedSize {
      get {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
        
        size = 0;
        foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart element in NameList) {
          size += pb::CodedOutputStream.ComputeMessageSize(2, element);
        }
        if (HasIdentifierValue) {
          size += pb::CodedOutputStream.ComputeStringSize(3, IdentifierValue);
        }
        if (HasPositiveIntValue) {
          size += pb::CodedOutputStream.ComputeUInt64Size(4, PositiveIntValue);
        }
        if (HasNegativeIntValue) {
          size += pb::CodedOutputStream.ComputeInt64Size(5, NegativeIntValue);
        }
        if (HasDoubleValue) {
          size += pb::CodedOutputStream.ComputeDoubleSize(6, DoubleValue);
        }
        if (HasStringValue) {
          size += pb::CodedOutputStream.ComputeBytesSize(7, StringValue);
        }
        size += UnknownFields.SerializedSize;
        memoizedSerializedSize = size;
        return size;
      }
    }
    
    public static UninterpretedOption ParseFrom(pb::ByteString data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static UninterpretedOption ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static UninterpretedOption ParseFrom(byte[] data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static UninterpretedOption ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static UninterpretedOption ParseFrom(global::System.IO.Stream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static UninterpretedOption ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static UninterpretedOption ParseFrom(pb::CodedInputStream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static UninterpretedOption ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static Builder CreateBuilder() { return new Builder(); }
    public override Builder CreateBuilderForType() { return new Builder(); }
    public static Builder CreateBuilder(UninterpretedOption prototype) {
      return (Builder) new Builder().MergeFrom(prototype);
    }
    
    public sealed partial class Builder : pb::GeneratedBuilder<UninterpretedOption, Builder> {
      protected override Builder ThisBuilder {
        get { return this; }
      }
      public Builder() {}
      
      UninterpretedOption result = new UninterpretedOption();
      
      protected override UninterpretedOption MessageBeingBuilt {
        get { return result; }
      }
      
      public override Builder Clear() {
        result = new UninterpretedOption();
        return this;
      }
      
      public override Builder Clone() {
        return new Builder().MergeFrom(result);
      }
      
      public override pbd::MessageDescriptor DescriptorForType {
        get { return UninterpretedOption.Descriptor; }
      }
      
      public override UninterpretedOption DefaultInstanceForType {
        get { return UninterpretedOption.DefaultInstance; }
      }
      
      public override UninterpretedOption BuildPartial() {
        result.name_.MakeReadOnly();
        UninterpretedOption returnMe = result;
        result = null;
        return returnMe;
      }
      
      public override Builder MergeFrom(pb::IMessage other) {
        if (other is UninterpretedOption) {
          return MergeFrom((UninterpretedOption) other);
        } else {
          base.MergeFrom(other);
          return this;
        }
      }
      
      public override Builder MergeFrom(UninterpretedOption other) {
        if (other == UninterpretedOption.DefaultInstance) return this;
        if (other.name_.Count != 0) {
          base.AddRange(other.name_, result.name_);
        }
        if (other.HasIdentifierValue) {
          IdentifierValue = other.IdentifierValue;
        }
        if (other.HasPositiveIntValue) {
          PositiveIntValue = other.PositiveIntValue;
        }
        if (other.HasNegativeIntValue) {
          NegativeIntValue = other.NegativeIntValue;
        }
        if (other.HasDoubleValue) {
          DoubleValue = other.DoubleValue;
        }
        if (other.HasStringValue) {
          StringValue = other.StringValue;
        }
        this.MergeUnknownFields(other.UnknownFields);
        return this;
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input) {
        return MergeFrom(input, pb::ExtensionRegistry.Empty);
      }
      
      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
        pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
        while (true) {
          uint tag = input.ReadTag();
          switch (tag) {
            case 0: {
              this.UnknownFields = unknownFields.Build();
              return this;
            }
            default: {
              if (!ParseUnknownField(input, unknownFields, extensionRegistry, tag)) {
                this.UnknownFields = unknownFields.Build();
                return this;
              }
              break;
            }
            case 18: {
              global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart.CreateBuilder();
              input.ReadMessage(subBuilder, extensionRegistry);
              AddName(subBuilder.BuildPartial());
              break;
            }
            case 26: {
              IdentifierValue = input.ReadString();
              break;
            }
            case 32: {
              PositiveIntValue = input.ReadUInt64();
              break;
            }
            case 40: {
              NegativeIntValue = input.ReadInt64();
              break;
            }
            case 49: {
              DoubleValue = input.ReadDouble();
              break;
            }
            case 58: {
              StringValue = input.ReadBytes();
              break;
            }
          }
        }
      }
      
      
      public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart> NameList {
        get { return result.name_; }
      }
      public int NameCount {
        get { return result.NameCount; }
      }
      public global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart GetName(int index) {
        return result.GetName(index);
      }
      public Builder SetName(int index, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.name_[index] = value;
        return this;
      }
      public Builder SetName(int index, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.name_[index] = builderForValue.Build();
        return this;
      }
      public Builder AddName(global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.name_.Add(value);
        return this;
      }
      public Builder AddName(global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.name_.Add(builderForValue.Build());
        return this;
      }
      public Builder AddRangeName(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart> values) {
        base.AddRange(values, result.name_);
        return this;
      }
      public Builder ClearName() {
        result.name_.Clear();
        return this;
      }
      
      public bool HasIdentifierValue {
        get { return result.HasIdentifierValue; }
      }
      public string IdentifierValue {
        get { return result.IdentifierValue; }
        set { SetIdentifierValue(value); }
      }
      public Builder SetIdentifierValue(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasIdentifierValue = true;
        result.identifierValue_ = value;
        return this;
      }
      public Builder ClearIdentifierValue() {
        result.hasIdentifierValue = false;
        result.identifierValue_ = "";
        return this;
      }
      
      public bool HasPositiveIntValue {
        get { return result.HasPositiveIntValue; }
      }
      public ulong PositiveIntValue {
        get { return result.PositiveIntValue; }
        set { SetPositiveIntValue(value); }
      }
      public Builder SetPositiveIntValue(ulong value) {
        result.hasPositiveIntValue = true;
        result.positiveIntValue_ = value;
        return this;
      }
      public Builder ClearPositiveIntValue() {
        result.hasPositiveIntValue = false;
        result.positiveIntValue_ = 0UL;
        return this;
      }
      
      public bool HasNegativeIntValue {
        get { return result.HasNegativeIntValue; }
      }
      public long NegativeIntValue {
        get { return result.NegativeIntValue; }
        set { SetNegativeIntValue(value); }
      }
      public Builder SetNegativeIntValue(long value) {
        result.hasNegativeIntValue = true;
        result.negativeIntValue_ = value;
        return this;
      }
      public Builder ClearNegativeIntValue() {
        result.hasNegativeIntValue = false;
        result.negativeIntValue_ = 0L;
        return this;
      }
      
      public bool HasDoubleValue {
        get { return result.HasDoubleValue; }
      }
      public double DoubleValue {
        get { return result.DoubleValue; }
        set { SetDoubleValue(value); }
      }
      public Builder SetDoubleValue(double value) {
        result.hasDoubleValue = true;
        result.doubleValue_ = value;
        return this;
      }
      public Builder ClearDoubleValue() {
        result.hasDoubleValue = false;
        result.doubleValue_ = 0D;
        return this;
      }
      
      public bool HasStringValue {
        get { return result.HasStringValue; }
      }
      public pb::ByteString StringValue {
        get { return result.StringValue; }
        set { SetStringValue(value); }
      }
      public Builder SetStringValue(pb::ByteString value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasStringValue = true;
        result.stringValue_ = value;
        return this;
      }
      public Builder ClearStringValue() {
        result.hasStringValue = false;
        result.stringValue_ = pb::ByteString.Empty;
        return this;
      }
    }
  }
  
  #endregion
  
}