aboutsummaryrefslogblamecommitdiff
path: root/src/ProtoBench/BenchmarkSpeedProtoFile.cs
blob: 5c5e28413aff3c7a051e2110c6365eb22afb9405 (plain) (tree)
1
2
3
4
5
6
7
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
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
5471
5472
5473
5474
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484
5485
5486
5487
5488
5489
5490
5491
5492
5493
5494
5495
5496
5497
5498
5499
5500
5501
5502
5503
5504
5505
5506
5507
5508
5509
5510
5511
5512
5513
5514
5515
5516
5517
5518
5519
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
5543
5544
5545
5546
5547
5548
5549
5550
5551
5552
5553
5554
5555
5556
5557
5558
5559
5560
5561
5562
5563
5564
5565
5566
5567
5568
5569
5570
5571
5572
5573
5574
5575
5576
5577
5578
5579
5580
5581
5582
5583
5584
5585
5586
5587
5588
5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
5614
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
5630
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
5659
5660
5661
5662
5663
5664
5665
5666
5667
5668
5669
5670
5671
5672
5673
5674
5675
5676
5677
5678
5679
5680
5681
5682
5683
5684
5685
5686
5687
5688
5689
5690
5691
5692
5693
5694
5695
5696
5697
5698
5699
5700
5701
5702
5703
5704
5705
5706
5707
5708
5709
5710
5711
5712
5713
5714
5715
5716
5717
5718
5719
5720
5721
5722
5723
5724
5725
5726
5727
5728
5729
5730
5731
5732
5733
5734
5735
5736
5737
5738
5739
5740
5741
5742
5743
5744
5745
5746
5747
5748
5749
5750
5751
5752
5753
5754
5755
5756
5757
5758
5759
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769
5770
5771
5772
5773
5774
5775
5776
5777
5778
5779
5780
5781
5782
5783
5784
5785
5786
5787
5788
5789
5790
5791
5792
5793
5794
5795
5796
5797
5798
5799
5800
5801
5802
5803
5804
5805
5806
5807
5808
5809
5810
5811
5812
5813
5814
5815
5816
5817
5818
5819
5820
5821
5822
5823
5824
5825
5826
5827
5828
5829
5830





                                                           
                                             

































































                                                                                                                


                                                                         







                                                                                                                      

                                                                                                                                                                                                                                                           


                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      

                                                                                                                                                                                                                                                           


                                                                                                                                                                                                                                                             

                                                                                                                                                                                                                                                           


                                                                                                                                                                                                                                                                                                                                                                                    

                                                                                                                                                                                                                                                                                            


                                                                                                                                                                                                             

                                                                                                                                                                                                                                                           


















                                                                                                                                              
                                                                                                                                                          


                                                                                                                        
                                                                                                                                                                  






















































































































































































































































































































                                                                              
                                                                                                                                                       


                                
                                                                            














































































                                                                



                                            























































































































































                                                                        




                                       






















































































































                                                                                                                    
                                                                       



















































































































































































































































                                                                                                              
                                                                                                                                                                   







































































































































                                                               
                                                    

















                                              
                                                    

















                                               
                                                    















































































































































                                              
                                                    





























































                                                                     
                                                    



















































































































































































                                                
                                                    

















                                                
                                                    














































































































































































                                             
                                                                              


                                      
                                                                                                
                                                    



                                 
                                                                                                                  
                                                                        



                                                  
                                                                                                  
                                                    
                                

                                                                                                                                                     







                                     
                                                                                                  


















































































                                                
                                                    












































                                                                                                          
                                                                                                                                                          


                                                                                                                        
                                                                                                                                                                  





























































































































































































































































































































































                                                                                                                    
                                                                       

























































































































































































































































































                                                                                                              
                                                    



























































































































































































































































                                                
                                                    






























































                                                                                                          
                                                                                                                                                          


                                                                                                                        
                                                                                                                                                                  


















                                                                                         
                                                                                                                                                                     


                                                                                                              
                                                                                                                                                                             















































































































































                                                                                     
                                                                                                                                                           


                                    
                                                                                























                                                                    



                                                  









                                            



                                                  


















                                             



                                               






















                                                                           






                                                                                  


















                                                                           






                                                                                  
             






                                                                                 








































                                                                                                                 
                                                                           






















































































































































































                                                                                                                  
                                                                                                                                                                       



























































                                                                   
                                                        

















                                                   
                                                        



















                                                              
                                                        



                                                   
                                                        























































                                                                           
                                                        



































                                                   
                                                        

















                                                   
                                                        



















                                                              
                                                        



                                                   
                                                        































































                                                                           
                                                        












                                            
                                                                                  


                                          
                                                                                                    
                                                        



                                     
                                                                                                                      
                                                                            



                                                      
                                                                                                      
                                                        
                                    

                                                                                                                                                         







                                         
                                                                                                      













































































































































































































                                                          

                                                                                                                                                                                                            




                                   
                                                                                                      





























































































                                                                                  
                                                                                                            






















                                         



                                               
       



                                               



                                         



                                             



















































































































                                                                        
                                                                                                              

                                                                      






                                                                              



                                                                        






                                                                              



                                                                        






                                                                             





































                                                                                                                    
                                                                       





























































































































































































                                                                                                              
                                                                                                                                                                                             
















































































































                                                                 
                                                    

























































































                                              
                                                    

















                                                      
                                                    























































































































































































































































































                                               
                                                                                                          




                                          
                                                                                                        

                                       
                                                                                                                       
                                                    


                                      
                                                                                                                                         
                                                                        


                                                        
                                                                                                            
                                                    


                                  
                                                                                                                              
                                                                        


                                                    
                                                                                                                                    

















                                                           
                                                    



                                                
                                                    







































                                                                        
                                                    



                                                
                                                    












































































































                                                                                                          
                                                                                                                                                          


                                                                                                                        
                                                                                                                                                                  






















































































































































































































                                                                                                                    
                                                                       







































































































































































































































































































































































                                                                                                              
// 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.ProtoBench {
  
  public static partial class BenchmarkSpeedProtoFile {
  
    #region Descriptor
    public static pbd::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static readonly pbd::FileDescriptor descriptor = pbd::FileDescriptor.InternalBuildGeneratedFileFrom(
        global::System.Convert.FromBase64String(
        "CiVnb29nbGUvcHJvdG9idWYvYmVuY2htYXJrX3NwZWVkLnByb3RvEhdwcm90" + 
        "bzIuYmVuY2htYXJrLnYyX2FwaRokZ29vZ2xlL3Byb3RvYnVmL2NzaGFycF9v" + 
        "cHRpb25zLnByb3RvIvsGCg1TcGVlZE1lc3NhZ2UxEg4KBmZpZWxkMRgBIAIo" + 
        "CRIOCgZmaWVsZDkYCSABKAkSDwoHZmllbGQxOBgSIAEoCRIWCgdmaWVsZDgw" + 
        "GFAgASgIOgVmYWxzZRIVCgdmaWVsZDgxGFEgASgIOgR0cnVlEg4KBmZpZWxk" + 
        "MhgCIAIoBRIOCgZmaWVsZDMYAyACKAUSEQoIZmllbGQyODAYmAIgASgFEhEK" + 
        "BmZpZWxkNhgGIAEoBToBMBIPCgdmaWVsZDIyGBYgASgDEg4KBmZpZWxkNBgE" + 
        "IAEoCRIOCgZmaWVsZDUYBSADKAYSFgoHZmllbGQ1ORg7IAEoCDoFZmFsc2US" + 
        "DgoGZmllbGQ3GAcgASgJEg8KB2ZpZWxkMTYYECABKAUSFAoIZmllbGQxMzAY" + 
        "ggEgASgFOgEwEhUKB2ZpZWxkMTIYDCABKAg6BHRydWUSFQoHZmllbGQxNxgR" + 
        "IAEoCDoEdHJ1ZRIVCgdmaWVsZDEzGA0gASgIOgR0cnVlEhUKB2ZpZWxkMTQY" + 
        "DiABKAg6BHRydWUSEwoIZmllbGQxMDQYaCABKAU6ATASEwoIZmllbGQxMDAY" + 
        "ZCABKAU6ATASEwoIZmllbGQxMDEYZSABKAU6ATASEAoIZmllbGQxMDIYZiAB" + 
        "KAkSEAoIZmllbGQxMDMYZyABKAkSEgoHZmllbGQyORgdIAEoBToBMBIWCgdm" + 
        "aWVsZDMwGB4gASgIOgVmYWxzZRITCgdmaWVsZDYwGDwgASgFOgItMRIVCghm" + 
        "aWVsZDI3MRiPAiABKAU6Ai0xEhUKCGZpZWxkMjcyGJACIAEoBToCLTESEQoI" + 
        "ZmllbGQxNTAYlgEgASgFEhIKB2ZpZWxkMjMYFyABKAU6ATASFgoHZmllbGQy" + 
        "NBgYIAEoCDoFZmFsc2USEgoHZmllbGQyNRgZIAEoBToBMBI3CgdmaWVsZDE1" + 
        "GA8gASgLMiYucHJvdG8yLmJlbmNobWFyay52Ml9hcGkuU3BlZWRNZXNzYWdl" + 
        "MhIPCgdmaWVsZDc4GE4gASgIEhIKB2ZpZWxkNjcYQyABKAU6ATASDwoHZmll" + 
        "bGQ2OBhEIAEoBRIUCghmaWVsZDEyOBiAASABKAU6ATASKAoIZmllbGQxMjkY" + 
        "gQEgASgJOhV4eHh4eHh4eHh4eHh4eHh4eHh4eHgSFAoIZmllbGQxMzEYgwEg" + 
        "ASgFOgEwIpgDCg1TcGVlZE1lc3NhZ2UyEhEKBmZpZWxkMRgBIAEoBToBMBIR" + 
        "CgZmaWVsZDIYAiABKAU6ATASEQoGZmllbGQzGAMgASgFOgEwEg8KB2ZpZWxk" + 
        "MTUYDyABKAkSFQoHZmllbGQxMhgMIAEoCDoEdHJ1ZRIPCgdmaWVsZDEzGA0g" + 
        "ASgDEg8KB2ZpZWxkMTQYDiABKAMSDwoHZmllbGQxNhgQIAEoBRISCgdmaWVs" + 
        "ZDE5GBMgASgFOgEyEhUKB2ZpZWxkMjAYFCABKAg6BHRydWUSFQoHZmllbGQy" + 
        "OBgcIAEoCDoEdHJ1ZRIPCgdmaWVsZDIxGBUgASgGEg8KB2ZpZWxkMjIYFiAB" + 
        "KAUSFgoHZmllbGQyMxgXIAEoCDoFZmFsc2USGAoIZmllbGQyMDYYzgEgASgI" + 
        "OgVmYWxzZRIRCghmaWVsZDIwMxjLASABKAcSEQoIZmllbGQyMDQYzAEgASgF" + 
        "EhEKCGZpZWxkMjA1GM0BIAEoCRIRCghmaWVsZDIwNxjPASABKAQSEQoIZmll" + 
        "bGQzMDAYrAIgASgEItYHCg1TcGVlZE1lc3NhZ2UzEg4KBmZpZWxkMRgBIAEo" + 
        "CRIOCgZmaWVsZDMYAyABKAMSDgoGZmllbGQ0GAQgASgDEg8KB2ZpZWxkMzAY" + 
        "HiABKAMSFgoHZmllbGQ3NRhLIAEoCDoFZmFsc2USDgoGZmllbGQ2GAYgASgJ" + 
        "Eg4KBmZpZWxkMhgCIAEoDBISCgdmaWVsZDIxGBUgASgFOgEwEg8KB2ZpZWxk" + 
        "NzEYRyABKAUSDwoHZmllbGQyNRgZIAEoAhITCghmaWVsZDEwORhtIAEoBToB" + 
        "MBIUCghmaWVsZDIxMBjSASABKAU6ATASFAoIZmllbGQyMTEY0wEgASgFOgEw" + 
        "EhQKCGZpZWxkMjEyGNQBIAEoBToBMBIUCghmaWVsZDIxMxjVASABKAU6ATAS" + 
        "FAoIZmllbGQyMTYY2AEgASgFOgEwEhQKCGZpZWxkMjE3GNkBIAEoBToBMBIU" + 
        "CghmaWVsZDIxOBjaASABKAU6ATASFAoIZmllbGQyMjAY3AEgASgFOgEwEhQK" + 
        "CGZpZWxkMjIxGN0BIAEoBToBMBIUCghmaWVsZDIyMhjeASABKAI6ATASDwoH" + 
        "ZmllbGQ2Mxg/IAEoBRI9CgZncm91cDEYCiADKAoyLS5wcm90bzIuYmVuY2ht" + 
        "YXJrLnYyX2FwaS5TcGVlZE1lc3NhZ2UzLkdyb3VwMRIRCghmaWVsZDEyOBiA" + 
        "ASADKAkSEQoIZmllbGQxMzEYgwEgASgDEhAKCGZpZWxkMTI3GH8gAygJEhEK" + 
        "CGZpZWxkMTI5GIEBIAEoBRIRCghmaWVsZDEzMBiCASADKAMSGAoIZmllbGQy" + 
        "MDUYzQEgASgIOgVmYWxzZRIYCghmaWVsZDIwNhjOASABKAg6BWZhbHNlGsIC" + 
        "CgZHcm91cDESDwoHZmllbGQxMRgLIAIoAhIPCgdmaWVsZDI2GBogASgCEg8K" + 
        "B2ZpZWxkMTIYDCABKAkSDwoHZmllbGQxMxgNIAEoCRIPCgdmaWVsZDE0GA4g" + 
        "AygJEg8KB2ZpZWxkMTUYDyACKAQSDgoGZmllbGQ1GAUgASgFEg8KB2ZpZWxk" + 
        "MjcYGyABKAkSDwoHZmllbGQyOBgcIAEoBRIPCgdmaWVsZDI5GB0gASgJEg8K" + 
        "B2ZpZWxkMTYYECABKAkSDwoHZmllbGQyMhgWIAMoCRIPCgdmaWVsZDczGEkg" + 
        "AygFEhIKB2ZpZWxkMjAYFCABKAU6ATASDwoHZmllbGQyNBgYIAEoCRI3Cgdm" + 
        "aWVsZDMxGB8gASgLMiYucHJvdG8yLmJlbmNobWFyay52Ml9hcGkuU3BlZWRN" + 
        "ZXNzYWdlNCLRAQoNU3BlZWRNZXNzYWdlNBIOCgZmaWVsZDEYASABKAISDgoG" + 
        "ZmllbGQyGAIgASgCEhEKBmZpZWxkMxgDIAEoAjoBMBIOCgZmaWVsZDQYBCAB" + 
        "KAgSDgoGZmllbGQ1GAUgASgIEhQKBmZpZWxkNhgGIAEoCDoEdHJ1ZRIVCgZm" + 
        "aWVsZDcYByABKAg6BWZhbHNlEg4KBmZpZWxkOBgIIAEoAhIOCgZmaWVsZDkY" + 
        "CSABKAgSDwoHZmllbGQxMBgKIAEoAhIPCgdmaWVsZDExGAsgASgDQkFIAcI+" + 
        "PAohR29vZ2xlLlByb3RvY29sQnVmZmVycy5Qcm90b0JlbmNoEhdCZW5jaG1h" + 
        "cmtTcGVlZFByb3RvRmlsZQ=="),
        new pbd::FileDescriptor[] {
          global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.Descriptor, 
        });
    #endregion
    
    #region Static variables
    internal static readonly pbd::MessageDescriptor internal__static_proto2_benchmark_v2_api_SpeedMessage1__Descriptor
        = Descriptor.MessageTypes[0];
    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.ProtoBench.SpeedMessage1, global::Google.ProtocolBuffers.ProtoBench.SpeedMessage1.Builder> internal__static_proto2_benchmark_v2_api_SpeedMessage1__FieldAccessorTable
        = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.ProtoBench.SpeedMessage1, global::Google.ProtocolBuffers.ProtoBench.SpeedMessage1.Builder>(internal__static_proto2_benchmark_v2_api_SpeedMessage1__Descriptor,
            new string[] { "Field1", "Field9", "Field18", "Field80", "Field81", "Field2", "Field3", "Field280", "Field6", "Field22", "Field4", "Field5", "Field59", "Field7", "Field16", "Field130", "Field12", "Field17", "Field13", "Field14", "Field104", "Field100", "Field101", "Field102", "Field103", "Field29", "Field30", "Field60", "Field271", "Field272", "Field150", "Field23", "Field24", "Field25", "Field15", "Field78", "Field67", "Field68", "Field128", "Field129", "Field131", });
    internal static readonly pbd::MessageDescriptor internal__static_proto2_benchmark_v2_api_SpeedMessage2__Descriptor
        = Descriptor.MessageTypes[1];
    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.ProtoBench.SpeedMessage2, global::Google.ProtocolBuffers.ProtoBench.SpeedMessage2.Builder> internal__static_proto2_benchmark_v2_api_SpeedMessage2__FieldAccessorTable
        = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.ProtoBench.SpeedMessage2, global::Google.ProtocolBuffers.ProtoBench.SpeedMessage2.Builder>(internal__static_proto2_benchmark_v2_api_SpeedMessage2__Descriptor,
            new string[] { "Field1", "Field2", "Field3", "Field15", "Field12", "Field13", "Field14", "Field16", "Field19", "Field20", "Field28", "Field21", "Field22", "Field23", "Field206", "Field203", "Field204", "Field205", "Field207", "Field300", });
    internal static readonly pbd::MessageDescriptor internal__static_proto2_benchmark_v2_api_SpeedMessage3__Descriptor
        = Descriptor.MessageTypes[2];
    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.ProtoBench.SpeedMessage3, global::Google.ProtocolBuffers.ProtoBench.SpeedMessage3.Builder> internal__static_proto2_benchmark_v2_api_SpeedMessage3__FieldAccessorTable
        = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.ProtoBench.SpeedMessage3, global::Google.ProtocolBuffers.ProtoBench.SpeedMessage3.Builder>(internal__static_proto2_benchmark_v2_api_SpeedMessage3__Descriptor,
            new string[] { "Field1", "Field3", "Field4", "Field30", "Field75", "Field6", "Field2", "Field21", "Field71", "Field25", "Field109", "Field210", "Field211", "Field212", "Field213", "Field216", "Field217", "Field218", "Field220", "Field221", "Field222", "Field63", "Group1", "Field128", "Field131", "Field127", "Field129", "Field130", "Field205", "Field206", });
    internal static readonly pbd::MessageDescriptor internal__static_proto2_benchmark_v2_api_SpeedMessage3_Group1__Descriptor
        = internal__static_proto2_benchmark_v2_api_SpeedMessage3__Descriptor.NestedTypes[0];
    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.ProtoBench.SpeedMessage3.Types.Group1, global::Google.ProtocolBuffers.ProtoBench.SpeedMessage3.Types.Group1.Builder> internal__static_proto2_benchmark_v2_api_SpeedMessage3_Group1__FieldAccessorTable
        = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.ProtoBench.SpeedMessage3.Types.Group1, global::Google.ProtocolBuffers.ProtoBench.SpeedMessage3.Types.Group1.Builder>(internal__static_proto2_benchmark_v2_api_SpeedMessage3_Group1__Descriptor,
            new string[] { "Field11", "Field26", "Field12", "Field13", "Field14", "Field15", "Field5", "Field27", "Field28", "Field29", "Field16", "Field22", "Field73", "Field20", "Field24", "Field31", });
    internal static readonly pbd::MessageDescriptor internal__static_proto2_benchmark_v2_api_SpeedMessage4__Descriptor
        = Descriptor.MessageTypes[3];
    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.ProtoBench.SpeedMessage4, global::Google.ProtocolBuffers.ProtoBench.SpeedMessage4.Builder> internal__static_proto2_benchmark_v2_api_SpeedMessage4__FieldAccessorTable
        = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.ProtoBench.SpeedMessage4, global::Google.ProtocolBuffers.ProtoBench.SpeedMessage4.Builder>(internal__static_proto2_benchmark_v2_api_SpeedMessage4__Descriptor,
            new string[] { "Field1", "Field2", "Field3", "Field4", "Field5", "Field6", "Field7", "Field8", "Field9", "Field10", "Field11", });
    #endregion
  }
  #region Messages
  public sealed partial class SpeedMessage1 : pb::GeneratedMessage<SpeedMessage1, SpeedMessage1.Builder> {
    private static readonly SpeedMessage1 defaultInstance = new Builder().BuildPartial();
    public static SpeedMessage1 DefaultInstance {
      get { return defaultInstance; }
    }
    
    public override SpeedMessage1 DefaultInstanceForType {
      get { return defaultInstance; }
    }
    
    protected override SpeedMessage1 ThisMessage {
      get { return this; }
    }
    
    public static pbd::MessageDescriptor Descriptor {
      get { return global::Google.ProtocolBuffers.ProtoBench.BenchmarkSpeedProtoFile.internal__static_proto2_benchmark_v2_api_SpeedMessage1__Descriptor; }
    }
    
    protected override pb::FieldAccess.FieldAccessorTable<SpeedMessage1, SpeedMessage1.Builder> InternalFieldAccessors {
      get { return global::Google.ProtocolBuffers.ProtoBench.BenchmarkSpeedProtoFile.internal__static_proto2_benchmark_v2_api_SpeedMessage1__FieldAccessorTable; }
    }
    
    private bool hasField1;
    private string field1_ = "";
    public bool HasField1 {
      get { return hasField1; }
    }
    public string Field1 {
      get { return field1_; }
    }
    
    private bool hasField9;
    private string field9_ = "";
    public bool HasField9 {
      get { return hasField9; }
    }
    public string Field9 {
      get { return field9_; }
    }
    
    private bool hasField18;
    private string field18_ = "";
    public bool HasField18 {
      get { return hasField18; }
    }
    public string Field18 {
      get { return field18_; }
    }
    
    private bool hasField80;
    private bool field80_ = false;
    public bool HasField80 {
      get { return hasField80; }
    }
    public bool Field80 {
      get { return field80_; }
    }
    
    private bool hasField81;
    private bool field81_ = true;
    public bool HasField81 {
      get { return hasField81; }
    }
    public bool Field81 {
      get { return field81_; }
    }
    
    private bool hasField2;
    private int field2_ = 0;
    public bool HasField2 {
      get { return hasField2; }
    }
    public int Field2 {
      get { return field2_; }
    }
    
    private bool hasField3;
    private int field3_ = 0;
    public bool HasField3 {
      get { return hasField3; }
    }
    public int Field3 {
      get { return field3_; }
    }
    
    private bool hasField280;
    private int field280_ = 0;
    public bool HasField280 {
      get { return hasField280; }
    }
    public int Field280 {
      get { return field280_; }
    }
    
    private bool hasField6;
    private int field6_ = 0;
    public bool HasField6 {
      get { return hasField6; }
    }
    public int Field6 {
      get { return field6_; }
    }
    
    private bool hasField22;
    private long field22_ = 0L;
    public bool HasField22 {
      get { return hasField22; }
    }
    public long Field22 {
      get { return field22_; }
    }
    
    private bool hasField4;
    private string field4_ = "";
    public bool HasField4 {
      get { return hasField4; }
    }
    public string Field4 {
      get { return field4_; }
    }
    
    private pbc::PopsicleList<ulong> field5_ = new pbc::PopsicleList<ulong>();
    public scg::IList<ulong> Field5List {
      get { return pbc::Lists.AsReadOnly(field5_); }
    }
    public int Field5Count {
      get { return field5_.Count; }
    }
    public ulong GetField5(int index) {
      return field5_[index];
    }
    
    private bool hasField59;
    private bool field59_ = false;
    public bool HasField59 {
      get { return hasField59; }
    }
    public bool Field59 {
      get { return field59_; }
    }
    
    private bool hasField7;
    private string field7_ = "";
    public bool HasField7 {
      get { return hasField7; }
    }
    public string Field7 {
      get { return field7_; }
    }
    
    private bool hasField16;
    private int field16_ = 0;
    public bool HasField16 {
      get { return hasField16; }
    }
    public int Field16 {
      get { return field16_; }
    }
    
    private bool hasField130;
    private int field130_ = 0;
    public bool HasField130 {
      get { return hasField130; }
    }
    public int Field130 {
      get { return field130_; }
    }
    
    private bool hasField12;
    private bool field12_ = true;
    public bool HasField12 {
      get { return hasField12; }
    }
    public bool Field12 {
      get { return field12_; }
    }
    
    private bool hasField17;
    private bool field17_ = true;
    public bool HasField17 {
      get { return hasField17; }
    }
    public bool Field17 {
      get { return field17_; }
    }
    
    private bool hasField13;
    private bool field13_ = true;
    public bool HasField13 {
      get { return hasField13; }
    }
    public bool Field13 {
      get { return field13_; }
    }
    
    private bool hasField14;
    private bool field14_ = true;
    public bool HasField14 {
      get { return hasField14; }
    }
    public bool Field14 {
      get { return field14_; }
    }
    
    private bool hasField104;
    private int field104_ = 0;
    public bool HasField104 {
      get { return hasField104; }
    }
    public int Field104 {
      get { return field104_; }
    }
    
    private bool hasField100;
    private int field100_ = 0;
    public bool HasField100 {
      get { return hasField100; }
    }
    public int Field100 {
      get { return field100_; }
    }
    
    private bool hasField101;
    private int field101_ = 0;
    public bool HasField101 {
      get { return hasField101; }
    }
    public int Field101 {
      get { return field101_; }
    }
    
    private bool hasField102;
    private string field102_ = "";
    public bool HasField102 {
      get { return hasField102; }
    }
    public string Field102 {
      get { return field102_; }
    }
    
    private bool hasField103;
    private string field103_ = "";
    public bool HasField103 {
      get { return hasField103; }
    }
    public string Field103 {
      get { return field103_; }
    }
    
    private bool hasField29;
    private int field29_ = 0;
    public bool HasField29 {
      get { return hasField29; }
    }
    public int Field29 {
      get { return field29_; }
    }
    
    private bool hasField30;
    private bool field30_ = false;
    public bool HasField30 {
      get { return hasField30; }
    }
    public bool Field30 {
      get { return field30_; }
    }
    
    private bool hasField60;
    private int field60_ = -1;
    public bool HasField60 {
      get { return hasField60; }
    }
    public int Field60 {
      get { return field60_; }
    }
    
    private bool hasField271;
    private int field271_ = -1;
    public bool HasField271 {
      get { return hasField271; }
    }
    public int Field271 {
      get { return field271_; }
    }
    
    private bool hasField272;
    private int field272_ = -1;
    public bool HasField272 {
      get { return hasField272; }
    }
    public int Field272 {
      get { return field272_; }
    }
    
    private bool hasField150;
    private int field150_ = 0;
    public bool HasField150 {
      get { return hasField150; }
    }
    public int Field150 {
      get { return field150_; }
    }
    
    private bool hasField23;
    private int field23_ = 0;
    public bool HasField23 {
      get { return hasField23; }
    }
    public int Field23 {
      get { return field23_; }
    }
    
    private bool hasField24;
    private bool field24_ = false;
    public bool HasField24 {
      get { return hasField24; }
    }
    public bool Field24 {
      get { return field24_; }
    }
    
    private bool hasField25;
    private int field25_ = 0;
    public bool HasField25 {
      get { return hasField25; }
    }
    public int Field25 {
      get { return field25_; }
    }
    
    private bool hasField15;
    private global::Google.ProtocolBuffers.ProtoBench.SpeedMessage2 field15_ = global::Google.ProtocolBuffers.ProtoBench.SpeedMessage2.DefaultInstance;
    public bool HasField15 {
      get { return hasField15; }
    }
    public global::Google.ProtocolBuffers.ProtoBench.SpeedMessage2 Field15 {
      get { return field15_; }
    }
    
    private bool hasField78;
    private bool field78_ = false;
    public bool HasField78 {
      get { return hasField78; }
    }
    public bool Field78 {
      get { return field78_; }
    }
    
    private bool hasField67;
    private int field67_ = 0;
    public bool HasField67 {
      get { return hasField67; }
    }
    public int Field67 {
      get { return field67_; }
    }
    
    private bool hasField68;
    private int field68_ = 0;
    public bool HasField68 {
      get { return hasField68; }
    }
    public int Field68 {
      get { return field68_; }
    }
    
    private bool hasField128;
    private int field128_ = 0;
    public bool HasField128 {
      get { return hasField128; }
    }
    public int Field128 {
      get { return field128_; }
    }
    
    private bool hasField129;
    private string field129_ = "xxxxxxxxxxxxxxxxxxxxx";
    public bool HasField129 {
      get { return hasField129; }
    }
    public string Field129 {
      get { return field129_; }
    }
    
    private bool hasField131;
    private int field131_ = 0;
    public bool HasField131 {
      get { return hasField131; }
    }
    public int Field131 {
      get { return field131_; }
    }
    
    public override bool IsInitialized {
      get {
        if (!hasField1) return false;
        if (!hasField2) return false;
        if (!hasField3) return false;
        return true;
      }
    }
    
    public override void WriteTo(pb::CodedOutputStream output) {
      if (HasField1) {
        output.WriteString(1, Field1);
      }
      if (HasField2) {
        output.WriteInt32(2, Field2);
      }
      if (HasField3) {
        output.WriteInt32(3, Field3);
      }
      if (HasField4) {
        output.WriteString(4, Field4);
      }
      if (field5_.Count > 0) {
        foreach (ulong element in field5_) {
          output.WriteFixed64(5, element);
        }
      }
      if (HasField6) {
        output.WriteInt32(6, Field6);
      }
      if (HasField7) {
        output.WriteString(7, Field7);
      }
      if (HasField9) {
        output.WriteString(9, Field9);
      }
      if (HasField12) {
        output.WriteBool(12, Field12);
      }
      if (HasField13) {
        output.WriteBool(13, Field13);
      }
      if (HasField14) {
        output.WriteBool(14, Field14);
      }
      if (HasField15) {
        output.WriteMessage(15, Field15);
      }
      if (HasField16) {
        output.WriteInt32(16, Field16);
      }
      if (HasField17) {
        output.WriteBool(17, Field17);
      }
      if (HasField18) {
        output.WriteString(18, Field18);
      }
      if (HasField22) {
        output.WriteInt64(22, Field22);
      }
      if (HasField23) {
        output.WriteInt32(23, Field23);
      }
      if (HasField24) {
        output.WriteBool(24, Field24);
      }
      if (HasField25) {
        output.WriteInt32(25, Field25);
      }
      if (HasField29) {
        output.WriteInt32(29, Field29);
      }
      if (HasField30) {
        output.WriteBool(30, Field30);
      }
      if (HasField59) {
        output.WriteBool(59, Field59);
      }
      if (HasField60) {
        output.WriteInt32(60, Field60);
      }
      if (HasField67) {
        output.WriteInt32(67, Field67);
      }
      if (HasField68) {
        output.WriteInt32(68, Field68);
      }
      if (HasField78) {
        output.WriteBool(78, Field78);
      }
      if (HasField80) {
        output.WriteBool(80, Field80);
      }
      if (HasField81) {
        output.WriteBool(81, Field81);
      }
      if (HasField100) {
        output.WriteInt32(100, Field100);
      }
      if (HasField101) {
        output.WriteInt32(101, Field101);
      }
      if (HasField102) {
        output.WriteString(102, Field102);
      }
      if (HasField103) {
        output.WriteString(103, Field103);
      }
      if (HasField104) {
        output.WriteInt32(104, Field104);
      }
      if (HasField128) {
        output.WriteInt32(128, Field128);
      }
      if (HasField129) {
        output.WriteString(129, Field129);
      }
      if (HasField130) {
        output.WriteInt32(130, Field130);
      }
      if (HasField131) {
        output.WriteInt32(131, Field131);
      }
      if (HasField150) {
        output.WriteInt32(150, Field150);
      }
      if (HasField271) {
        output.WriteInt32(271, Field271);
      }
      if (HasField272) {
        output.WriteInt32(272, Field272);
      }
      if (HasField280) {
        output.WriteInt32(280, Field280);
      }
      UnknownFields.WriteTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public override int SerializedSize {
      get {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
        
        size = 0;
        if (HasField1) {
          size += pb::CodedOutputStream.ComputeStringSize(1, Field1);
        }
        if (HasField9) {
          size += pb::CodedOutputStream.ComputeStringSize(9, Field9);
        }
        if (HasField18) {
          size += pb::CodedOutputStream.ComputeStringSize(18, Field18);
        }
        if (HasField80) {
          size += pb::CodedOutputStream.ComputeBoolSize(80, Field80);
        }
        if (HasField81) {
          size += pb::CodedOutputStream.ComputeBoolSize(81, Field81);
        }
        if (HasField2) {
          size += pb::CodedOutputStream.ComputeInt32Size(2, Field2);
        }
        if (HasField3) {
          size += pb::CodedOutputStream.ComputeInt32Size(3, Field3);
        }
        if (HasField280) {
          size += pb::CodedOutputStream.ComputeInt32Size(280, Field280);
        }
        if (HasField6) {
          size += pb::CodedOutputStream.ComputeInt32Size(6, Field6);
        }
        if (HasField22) {
          size += pb::CodedOutputStream.ComputeInt64Size(22, Field22);
        }
        if (HasField4) {
          size += pb::CodedOutputStream.ComputeStringSize(4, Field4);
        }
        {
          int dataSize = 0;
          dataSize = 8 * field5_.Count;
          size += dataSize;
          size += 1 * field5_.Count;
        }
        if (HasField59) {
          size += pb::CodedOutputStream.ComputeBoolSize(59, Field59);
        }
        if (HasField7) {
          size += pb::CodedOutputStream.ComputeStringSize(7, Field7);
        }
        if (HasField16) {
          size += pb::CodedOutputStream.ComputeInt32Size(16, Field16);
        }
        if (HasField130) {
          size += pb::CodedOutputStream.ComputeInt32Size(130, Field130);
        }
        if (HasField12) {
          size += pb::CodedOutputStream.ComputeBoolSize(12, Field12);
        }
        if (HasField17) {
          size += pb::CodedOutputStream.ComputeBoolSize(17, Field17);
        }
        if (HasField13) {
          size += pb::CodedOutputStream.ComputeBoolSize(13, Field13);
        }
        if (HasField14) {
          size += pb::CodedOutputStream.ComputeBoolSize(14, Field14);
        }
        if (HasField104) {
          size += pb::CodedOutputStream.ComputeInt32Size(104, Field104);
        }
        if (HasField100) {
          size += pb::CodedOutputStream.ComputeInt32Size(100, Field100);
        }
        if (HasField101) {
          size += pb::CodedOutputStream.ComputeInt32Size(101, Field101);
        }
        if (HasField102) {
          size += pb::CodedOutputStream.ComputeStringSize(102, Field102);
        }
        if (HasField103) {
          size += pb::CodedOutputStream.ComputeStringSize(103, Field103);
        }
        if (HasField29) {
          size += pb::CodedOutputStream.ComputeInt32Size(29, Field29);
        }
        if (HasField30) {
          size += pb::CodedOutputStream.ComputeBoolSize(30, Field30);
        }
        if (HasField60) {
          size += pb::CodedOutputStream.ComputeInt32Size(60, Field60);
        }
        if (HasField271) {
          size += pb::CodedOutputStream.ComputeInt32Size(271, Field271);
        }
        if (HasField272) {
          size += pb::CodedOutputStream.ComputeInt32Size(272, Field272);
        }
        if (HasField150) {
          size += pb::CodedOutputStream.ComputeInt32Size(150, Field150);
        }
        if (HasField23) {
          size += pb::CodedOutputStream.ComputeInt32Size(23, Field23);
        }
        if (HasField24) {
          size += pb::CodedOutputStream.ComputeBoolSize(24, Field24);
        }
        if (HasField25) {
          size += pb::CodedOutputStream.ComputeInt32Size(25, Field25);
        }
        if (HasField15) {
          size += pb::CodedOutputStream.ComputeMessageSize(15, Field15);
        }
        if (HasField78) {
          size += pb::CodedOutputStream.ComputeBoolSize(78, Field78);
        }
        if (HasField67) {
          size += pb::CodedOutputStream.ComputeInt32Size(67, Field67);
        }
        if (HasField68) {
          size += pb::CodedOutputStream.ComputeInt32Size(68, Field68);
        }
        if (HasField128) {
          size += pb::CodedOutputStream.ComputeInt32Size(128, Field128);
        }
        if (HasField129) {
          size += pb::CodedOutputStream.ComputeStringSize(129, Field129);
        }
        if (HasField131) {
          size += pb::CodedOutputStream.ComputeInt32Size(131, Field131);
        }
        size += UnknownFields.SerializedSize;
        memoizedSerializedSize = size;
        return size;
      }
    }
    
    public static SpeedMessage1 ParseFrom(pb::ByteString data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static SpeedMessage1 ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static SpeedMessage1 ParseFrom(byte[] data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static SpeedMessage1 ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static SpeedMessage1 ParseFrom(global::System.IO.Stream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static SpeedMessage1 ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static SpeedMessage1 ParseFrom(pb::CodedInputStream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static SpeedMessage1 ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static Builder CreateBuilder() { return new Builder(); }
    public override Builder ToBuilder() { return CreateBuilder(this); }
    public override Builder CreateBuilderForType() { return new Builder(); }
    public static Builder CreateBuilder(SpeedMessage1 prototype) {
      return (Builder) new Builder().MergeFrom(prototype);
    }
    
    public sealed partial class Builder : pb::GeneratedBuilder<SpeedMessage1, Builder> {
      protected override Builder ThisBuilder {
        get { return this; }
      }
      public Builder() {}
      
      SpeedMessage1 result = new SpeedMessage1();
      
      protected override SpeedMessage1 MessageBeingBuilt {
        get { return result; }
      }
      
      public override Builder Clear() {
        result = new SpeedMessage1();
        return this;
      }
      
      public override Builder Clone() {
        return new Builder().MergeFrom(result);
      }
      
      public override pbd::MessageDescriptor DescriptorForType {
        get { return SpeedMessage1.Descriptor; }
      }
      
      public override SpeedMessage1 DefaultInstanceForType {
        get { return SpeedMessage1.DefaultInstance; }
      }
      
      public override SpeedMessage1 BuildPartial() {
        result.field5_.MakeReadOnly();
        SpeedMessage1 returnMe = result;
        result = null;
        return returnMe;
      }
      
      public override Builder MergeFrom(pb::IMessage other) {
        if (other is SpeedMessage1) {
          return MergeFrom((SpeedMessage1) other);
        } else {
          base.MergeFrom(other);
          return this;
        }
      }
      
      public override Builder MergeFrom(SpeedMessage1 other) {
        if (other == SpeedMessage1.DefaultInstance) return this;
        if (other.HasField1) {
          Field1 = other.Field1;
        }
        if (other.HasField9) {
          Field9 = other.Field9;
        }
        if (other.HasField18) {
          Field18 = other.Field18;
        }
        if (other.HasField80) {
          Field80 = other.Field80;
        }
        if (other.HasField81) {
          Field81 = other.Field81;
        }
        if (other.HasField2) {
          Field2 = other.Field2;
        }
        if (other.HasField3) {
          Field3 = other.Field3;
        }
        if (other.HasField280) {
          Field280 = other.Field280;
        }
        if (other.HasField6) {
          Field6 = other.Field6;
        }
        if (other.HasField22) {
          Field22 = other.Field22;
        }
        if (other.HasField4) {
          Field4 = other.Field4;
        }
        if (other.field5_.Count != 0) {
          base.AddRange(other.field5_, result.field5_);
        }
        if (other.HasField59) {
          Field59 = other.Field59;
        }
        if (other.HasField7) {
          Field7 = other.Field7;
        }
        if (other.HasField16) {
          Field16 = other.Field16;
        }
        if (other.HasField130) {
          Field130 = other.Field130;
        }
        if (other.HasField12) {
          Field12 = other.Field12;
        }
        if (other.HasField17) {
          Field17 = other.Field17;
        }
        if (other.HasField13) {
          Field13 = other.Field13;
        }
        if (other.HasField14) {
          Field14 = other.Field14;
        }
        if (other.HasField104) {
          Field104 = other.Field104;
        }
        if (other.HasField100) {
          Field100 = other.Field100;
        }
        if (other.HasField101) {
          Field101 = other.Field101;
        }
        if (other.HasField102) {
          Field102 = other.Field102;
        }
        if (other.HasField103) {
          Field103 = other.Field103;
        }
        if (other.HasField29) {
          Field29 = other.Field29;
        }
        if (other.HasField30) {
          Field30 = other.Field30;
        }
        if (other.HasField60) {
          Field60 = other.Field60;
        }
        if (other.HasField271) {
          Field271 = other.Field271;
        }
        if (other.HasField272) {
          Field272 = other.Field272;
        }
        if (other.HasField150) {
          Field150 = other.Field150;
        }
        if (other.HasField23) {
          Field23 = other.Field23;
        }
        if (other.HasField24) {
          Field24 = other.Field24;
        }
        if (other.HasField25) {
          Field25 = other.Field25;
        }
        if (other.HasField15) {
          MergeField15(other.Field15);
        }
        if (other.HasField78) {
          Field78 = other.Field78;
        }
        if (other.HasField67) {
          Field67 = other.Field67;
        }
        if (other.HasField68) {
          Field68 = other.Field68;
        }
        if (other.HasField128) {
          Field128 = other.Field128;
        }
        if (other.HasField129) {
          Field129 = other.Field129;
        }
        if (other.HasField131) {
          Field131 = other.Field131;
        }
        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: {
              Field1 = input.ReadString();
              break;
            }
            case 16: {
              Field2 = input.ReadInt32();
              break;
            }
            case 24: {
              Field3 = input.ReadInt32();
              break;
            }
            case 34: {
              Field4 = input.ReadString();
              break;
            }
            case 41: {
              AddField5(input.ReadFixed64());
              break;
            }
            case 48: {
              Field6 = input.ReadInt32();
              break;
            }
            case 58: {
              Field7 = input.ReadString();
              break;
            }
            case 74: {
              Field9 = input.ReadString();
              break;
            }
            case 96: {
              Field12 = input.ReadBool();
              break;
            }
            case 104: {
              Field13 = input.ReadBool();
              break;
            }
            case 112: {
              Field14 = input.ReadBool();
              break;
            }
            case 122: {
              global::Google.ProtocolBuffers.ProtoBench.SpeedMessage2.Builder subBuilder = global::Google.ProtocolBuffers.ProtoBench.SpeedMessage2.CreateBuilder();
              if (HasField15) {
                subBuilder.MergeFrom(Field15);
              }
              input.ReadMessage(subBuilder, extensionRegistry);
              Field15 = subBuilder.BuildPartial();
              break;
            }
            case 128: {
              Field16 = input.ReadInt32();
              break;
            }
            case 136: {
              Field17 = input.ReadBool();
              break;
            }
            case 146: {
              Field18 = input.ReadString();
              break;
            }
            case 176: {
              Field22 = input.ReadInt64();
              break;
            }
            case 184: {
              Field23 = input.ReadInt32();
              break;
            }
            case 192: {
              Field24 = input.ReadBool();
              break;
            }
            case 200: {
              Field25 = input.ReadInt32();
              break;
            }
            case 232: {
              Field29 = input.ReadInt32();
              break;
            }
            case 240: {
              Field30 = input.ReadBool();
              break;
            }
            case 472: {
              Field59 = input.ReadBool();
              break;
            }
            case 480: {
              Field60 = input.ReadInt32();
              break;
            }
            case 536: {
              Field67 = input.ReadInt32();
              break;
            }
            case 544: {
              Field68 = input.ReadInt32();
              break;
            }
            case 624: {
              Field78 = input.ReadBool();
              break;
            }
            case 640: {
              Field80 = input.ReadBool();
              break;
            }
            case 648: {
              Field81 = input.ReadBool();
              break;
            }
            case 800: {
              Field100 = input.ReadInt32();
              break;
            }
            case 808: {
              Field101 = input.ReadInt32();
              break;
            }
            case 818: {
              Field102 = input.ReadString();
              break;
            }
            case 826: {
              Field103 = input.ReadString();
              break;
            }
            case 832: {
              Field104 = input.ReadInt32();
              break;
            }
            case 1024: {
              Field128 = input.ReadInt32();
              break;
            }
            case 1034: {
              Field129 = input.ReadString();
              break;
            }
            case 1040: {
              Field130 = input.ReadInt32();
              break;
            }
            case 1048: {
              Field131 = input.ReadInt32();
              break;
            }
            case 1200: {
              Field150 = input.ReadInt32();
              break;
            }
            case 2168: {
              Field271 = input.ReadInt32();
              break;
            }
            case 2176: {
              Field272 = input.ReadInt32();
              break;
            }
            case 2240: {
              Field280 = input.ReadInt32();
              break;
            }
          }
        }
      }
      
      
      public bool HasField1 {
        get { return result.HasField1; }
      }
      public string Field1 {
        get { return result.Field1; }
        set { SetField1(value); }
      }
      public Builder SetField1(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasField1 = true;
        result.field1_ = value;
        return this;
      }
      public Builder ClearField1() {
        result.hasField1 = false;
        result.field1_ = "";
        return this;
      }
      
      public bool HasField9 {
        get { return result.HasField9; }
      }
      public string Field9 {
        get { return result.Field9; }
        set { SetField9(value); }
      }
      public Builder SetField9(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasField9 = true;
        result.field9_ = value;
        return this;
      }
      public Builder ClearField9() {
        result.hasField9 = false;
        result.field9_ = "";
        return this;
      }
      
      public bool HasField18 {
        get { return result.HasField18; }
      }
      public string Field18 {
        get { return result.Field18; }
        set { SetField18(value); }
      }
      public Builder SetField18(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasField18 = true;
        result.field18_ = value;
        return this;
      }
      public Builder ClearField18() {
        result.hasField18 = false;
        result.field18_ = "";
        return this;
      }
      
      public bool HasField80 {
        get { return result.HasField80; }
      }
      public bool Field80 {
        get { return result.Field80; }
        set { SetField80(value); }
      }
      public Builder SetField80(bool value) {
        result.hasField80 = true;
        result.field80_ = value;
        return this;
      }
      public Builder ClearField80() {
        result.hasField80 = false;
        result.field80_ = false;
        return this;
      }
      
      public bool HasField81 {
        get { return result.HasField81; }
      }
      public bool Field81 {
        get { return result.Field81; }
        set { SetField81(value); }
      }
      public Builder SetField81(bool value) {
        result.hasField81 = true;
        result.field81_ = value;
        return this;
      }
      public Builder ClearField81() {
        result.hasField81 = false;
        result.field81_ = true;
        return this;
      }
      
      public bool HasField2 {
        get { return result.HasField2; }
      }
      public int Field2 {
        get { return result.Field2; }
        set { SetField2(value); }
      }
      public Builder SetField2(int value) {
        result.hasField2 = true;
        result.field2_ = value;
        return this;
      }
      public Builder ClearField2() {
        result.hasField2 = false;
        result.field2_ = 0;
        return this;
      }
      
      public bool HasField3 {
        get { return result.HasField3; }
      }
      public int Field3 {
        get { return result.Field3; }
        set { SetField3(value); }
      }
      public Builder SetField3(int value) {
        result.hasField3 = true;
        result.field3_ = value;
        return this;
      }
      public Builder ClearField3() {
        result.hasField3 = false;
        result.field3_ = 0;
        return this;
      }
      
      public bool HasField280 {
        get { return result.HasField280; }
      }
      public int Field280 {
        get { return result.Field280; }
        set { SetField280(value); }
      }
      public Builder SetField280(int value) {
        result.hasField280 = true;
        result.field280_ = value;
        return this;
      }
      public Builder ClearField280() {
        result.hasField280 = false;
        result.field280_ = 0;
        return this;
      }
      
      public bool HasField6 {
        get { return result.HasField6; }
      }
      public int Field6 {
        get { return result.Field6; }
        set { SetField6(value); }
      }
      public Builder SetField6(int value) {
        result.hasField6 = true;
        result.field6_ = value;
        return this;
      }
      public Builder ClearField6() {
        result.hasField6 = false;
        result.field6_ = 0;
        return this;
      }
      
      public bool HasField22 {
        get { return result.HasField22; }
      }
      public long Field22 {
        get { return result.Field22; }
        set { SetField22(value); }
      }
      public Builder SetField22(long value) {
        result.hasField22 = true;
        result.field22_ = value;
        return this;
      }
      public Builder ClearField22() {
        result.hasField22 = false;
        result.field22_ = 0L;
        return this;
      }
      
      public bool HasField4 {
        get { return result.HasField4; }
      }
      public string Field4 {
        get { return result.Field4; }
        set { SetField4(value); }
      }
      public Builder SetField4(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasField4 = true;
        result.field4_ = value;
        return this;
      }
      public Builder ClearField4() {
        result.hasField4 = false;
        result.field4_ = "";
        return this;
      }
      
      public scg::IList<ulong> Field5List {
        get { return result.field5_; }
      }
      public int Field5Count {
        get { return result.Field5Count; }
      }
      public ulong GetField5(int index) {
        return result.GetField5(index);
      }
      public Builder SetField5(int index, ulong value) {
        result.field5_[index] = value;
        return this;
      }
      public Builder AddField5(ulong value) {
        result.field5_.Add(value);
        return this;
      }
      public Builder AddRangeField5(scg::IEnumerable<ulong> values) {
        base.AddRange(values, result.field5_);
        return this;
      }
      public Builder ClearField5() {
        result.field5_.Clear();
        return this;
      }
      
      public bool HasField59 {
        get { return result.HasField59; }
      }
      public bool Field59 {
        get { return result.Field59; }
        set { SetField59(value); }
      }
      public Builder SetField59(bool value) {
        result.hasField59 = true;
        result.field59_ = value;
        return this;
      }
      public Builder ClearField59() {
        result.hasField59 = false;
        result.field59_ = false;
        return this;
      }
      
      public bool HasField7 {
        get { return result.HasField7; }
      }
      public string Field7 {
        get { return result.Field7; }
        set { SetField7(value); }
      }
      public Builder SetField7(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasField7 = true;
        result.field7_ = value;
        return this;
      }
      public Builder ClearField7() {
        result.hasField7 = false;
        result.field7_ = "";
        return this;
      }
      
      public bool HasField16 {
        get { return result.HasField16; }
      }
      public int Field16 {
        get { return result.Field16; }
        set { SetField16(value); }
      }
      public Builder SetField16(int value) {
        result.hasField16 = true;
        result.field16_ = value;
        return this;
      }
      public Builder ClearField16() {
        result.hasField16 = false;
        result.field16_ = 0;
        return this;
      }
      
      public bool HasField130 {
        get { return result.HasField130; }
      }
      public int Field130 {
        get { return result.Field130; }
        set { SetField130(value); }
      }
      public Builder SetField130(int value) {
        result.hasField130 = true;
        result.field130_ = value;
        return this;
      }
      public Builder ClearField130() {
        result.hasField130 = false;
        result.field130_ = 0;
        return this;
      }
      
      public bool HasField12 {
        get { return result.HasField12; }
      }
      public bool Field12 {
        get { return result.Field12; }
        set { SetField12(value); }
      }
      public Builder SetField12(bool value) {
        result.hasField12 = true;
        result.field12_ = value;
        return this;
      }
      public Builder ClearField12() {
        result.hasField12 = false;
        result.field12_ = true;
        return this;
      }
      
      public bool HasField17 {
        get { return result.HasField17; }
      }
      public bool Field17 {
        get { return result.Field17; }
        set { SetField17(value); }
      }
      public Builder SetField17(bool value) {
        result.hasField17 = true;
        result.field17_ = value;
        return this;
      }
      public Builder ClearField17() {
        result.hasField17 = false;
        result.field17_ = true;
        return this;
      }
      
      public bool HasField13 {
        get { return result.HasField13; }
      }
      public bool Field13 {
        get { return result.Field13; }
        set { SetField13(value); }
      }
      public Builder SetField13(bool value) {
        result.hasField13 = true;
        result.field13_ = value;
        return this;
      }
      public Builder ClearField13() {
        result.hasField13 = false;
        result.field13_ = true;
        return this;
      }
      
      public bool HasField14 {
        get { return result.HasField14; }
      }
      public bool Field14 {
        get { return result.Field14; }
        set { SetField14(value); }
      }
      public Builder SetField14(bool value) {
        result.hasField14 = true;
        result.field14_ = value;
        return this;
      }
      public Builder ClearField14() {
        result.hasField14 = false;
        result.field14_ = true;
        return this;
      }
      
      public bool HasField104 {
        get { return result.HasField104; }
      }
      public int Field104 {
        get { return result.Field104; }
        set { SetField104(value); }
      }
      public Builder SetField104(int value) {
        result.hasField104 = true;
        result.field104_ = value;
        return this;
      }
      public Builder ClearField104() {
        result.hasField104 = false;
        result.field104_ = 0;
        return this;
      }
      
      public bool HasField100 {
        get { return result.HasField100; }
      }
      public int Field100 {
        get { return result.Field100; }
        set { SetField100(value); }
      }
      public Builder SetField100(int value) {
        result.hasField100 = true;
        result.field100_ = value;
        return this;
      }
      public Builder ClearField100() {
        result.hasField100 = false;
        result.field100_ = 0;
        return this;
      }
      
      public bool HasField101 {
        get { return result.HasField101; }
      }
      public int Field101 {
        get { return result.Field101; }
        set { SetField101(value); }
      }
      public Builder SetField101(int value) {
        result.hasField101 = true;
        result.field101_ = value;
        return this;
      }
      public Builder ClearField101() {
        result.hasField101 = false;
        result.field101_ = 0;
        return this;
      }
      
      public bool HasField102 {
        get { return result.HasField102; }
      }
      public string Field102 {
        get { return result.Field102; }
        set { SetField102(value); }
      }
      public Builder SetField102(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasField102 = true;
        result.field102_ = value;
        return this;
      }
      public Builder ClearField102() {
        result.hasField102 = false;
        result.field102_ = "";
        return this;
      }
      
      public bool HasField103 {
        get { return result.HasField103; }
      }
      public string Field103 {
        get { return result.Field103; }
        set { SetField103(value); }
      }
      public Builder SetField103(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasField103 = true;
        result.field103_ = value;
        return this;
      }
      public Builder ClearField103() {
        result.hasField103 = false;
        result.field103_ = "";
        return this;
      }
      
      public bool HasField29 {
        get { return result.HasField29; }
      }
      public int Field29 {
        get { return result.Field29; }
        set { SetField29(value); }
      }
      public Builder SetField29(int value) {
        result.hasField29 = true;
        result.field29_ = value;
        return this;
      }
      public Builder ClearField29() {
        result.hasField29 = false;
        result.field29_ = 0;
        return this;
      }
      
      public bool HasField30 {
        get { return result.HasField30; }
      }
      public bool Field30 {
        get { return result.Field30; }
        set { SetField30(value); }
      }
      public Builder SetField30(bool value) {
        result.hasField30 = true;
        result.field30_ = value;
        return this;
      }
      public Builder ClearField30() {
        result.hasField30 = false;
        result.field30_ = false;
        return this;
      }
      
      public bool HasField60 {
        get { return result.HasField60; }
      }
      public int Field60 {
        get { return result.Field60; }
        set { SetField60(value); }
      }
      public Builder SetField60(int value) {
        result.hasField60 = true;
        result.field60_ = value;
        return this;
      }
      public Builder ClearField60() {
        result.hasField60 = false;
        result.field60_ = -1;
        return this;
      }
      
      public bool HasField271 {
        get { return result.HasField271; }
      }
      public int Field271 {
        get { return result.Field271; }
        set { SetField271(value); }
      }
      public Builder SetField271(int value) {
        result.hasField271 = true;
        result.field271_ = value;
        return this;
      }
      public Builder ClearField271() {
        result.hasField271 = false;
        result.field271_ = -1;
        return this;
      }
      
      public bool HasField272 {
        get { return result.HasField272; }
      }
      public int Field272 {
        get { return result.Field272; }
        set { SetField272(value); }
      }
      public Builder SetField272(int value) {
        result.hasField272 = true;
        result.field272_ = value;
        return this;
      }
      public Builder ClearField272() {
        result.hasField272 = false;
        result.field272_ = -1;
        return this;
      }
      
      public bool HasField150 {
        get { return result.HasField150; }
      }
      public int Field150 {
        get { return result.Field150; }
        set { SetField150(value); }
      }
      public Builder SetField150(int value) {
        result.hasField150 = true;
        result.field150_ = value;
        return this;
      }
      public Builder ClearField150() {
        result.hasField150 = false;
        result.field150_ = 0;
        return this;
      }
      
      public bool HasField23 {
        get { return result.HasField23; }
      }
      public int Field23 {
        get { return result.Field23; }
        set { SetField23(value); }
      }
      public Builder SetField23(int value) {
        result.hasField23 = true;
        result.field23_ = value;
        return this;
      }
      public Builder ClearField23() {
        result.hasField23 = false;
        result.field23_ = 0;
        return this;
      }
      
      public bool HasField24 {
        get { return result.HasField24; }
      }
      public bool Field24 {
        get { return result.Field24; }
        set { SetField24(value); }
      }
      public Builder SetField24(bool value) {
        result.hasField24 = true;
        result.field24_ = value;
        return this;
      }
      public Builder ClearField24() {
        result.hasField24 = false;
        result.field24_ = false;
        return this;
      }
      
      public bool HasField25 {
        get { return result.HasField25; }
      }
      public int Field25 {
        get { return result.Field25; }
        set { SetField25(value); }
      }
      public Builder SetField25(int value) {
        result.hasField25 = true;
        result.field25_ = value;
        return this;
      }
      public Builder ClearField25() {
        result.hasField25 = false;
        result.field25_ = 0;
        return this;
      }
      
      public bool HasField15 {
       get { return result.HasField15; }
      }
      public global::Google.ProtocolBuffers.ProtoBench.SpeedMessage2 Field15 {
        get { return result.Field15; }
        set { SetField15(value); }
      }
      public Builder SetField15(global::Google.ProtocolBuffers.ProtoBench.SpeedMessage2 value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasField15 = true;
        result.field15_ = value;
        return this;
      }
      public Builder SetField15(global::Google.ProtocolBuffers.ProtoBench.SpeedMessage2.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.hasField15 = true;
        result.field15_ = builderForValue.Build();
        return this;
      }
      public Builder MergeField15(global::Google.ProtocolBuffers.ProtoBench.SpeedMessage2 value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        if (result.HasField15 &&
            result.field15_ != global::Google.ProtocolBuffers.ProtoBench.SpeedMessage2.DefaultInstance) {
            result.field15_ = global::Google.ProtocolBuffers.ProtoBench.SpeedMessage2.CreateBuilder(result.field15_).MergeFrom(value).BuildPartial();
        } else {
          result.field15_ = value;
        }
        result.hasField15 = true;
        return this;
      }
      public Builder ClearField15() {
        result.hasField15 = false;
        result.field15_ = global::Google.ProtocolBuffers.ProtoBench.SpeedMessage2.DefaultInstance;
        return this;
      }
      
      public bool HasField78 {
        get { return result.HasField78; }
      }
      public bool Field78 {
        get { return result.Field78; }
        set { SetField78(value); }
      }
      public Builder SetField78(bool value) {
        result.hasField78 = true;
        result.field78_ = value;
        return this;
      }
      public Builder ClearField78() {
        result.hasField78 = false;
        result.field78_ = false;
        return this;
      }
      
      public bool HasField67 {
        get { return result.HasField67; }
      }
      public int Field67 {
        get { return result.Field67; }
        set { SetField67(value); }
      }
      public Builder SetField67(int value) {
        result.hasField67 = true;
        result.field67_ = value;
        return this;
      }
      public Builder ClearField67() {
        result.hasField67 = false;
        result.field67_ = 0;
        return this;
      }
      
      public bool HasField68 {
        get { return result.HasField68; }
      }
      public int Field68 {
        get { return result.Field68; }
        set { SetField68(value); }
      }
      public Builder SetField68(int value) {
        result.hasField68 = true;
        result.field68_ = value;
        return this;
      }
      public Builder ClearField68() {
        result.hasField68 = false;
        result.field68_ = 0;
        return this;
      }
      
      public bool HasField128 {
        get { return result.HasField128; }
      }
      public int Field128 {
        get { return result.Field128; }
        set { SetField128(value); }
      }
      public Builder SetField128(int value) {
        result.hasField128 = true;
        result.field128_ = value;
        return this;
      }
      public Builder ClearField128() {
        result.hasField128 = false;
        result.field128_ = 0;
        return this;
      }
      
      public bool HasField129 {
        get { return result.HasField129; }
      }
      public string Field129 {
        get { return result.Field129; }
        set { SetField129(value); }
      }
      public Builder SetField129(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasField129 = true;
        result.field129_ = value;
        return this;
      }
      public Builder ClearField129() {
        result.hasField129 = false;
        result.field129_ = "xxxxxxxxxxxxxxxxxxxxx";
        return this;
      }
      
      public bool HasField131 {
        get { return result.HasField131; }
      }
      public int Field131 {
        get { return result.Field131; }
        set { SetField131(value); }
      }
      public Builder SetField131(int value) {
        result.hasField131 = true;
        result.field131_ = value;
        return this;
      }
      public Builder ClearField131() {
        result.hasField131 = false;
        result.field131_ = 0;
        return this;
      }
    }
  }
  
  public sealed partial class SpeedMessage2 : pb::GeneratedMessage<SpeedMessage2, SpeedMessage2.Builder> {
    private static readonly SpeedMessage2 defaultInstance = new Builder().BuildPartial();
    public static SpeedMessage2 DefaultInstance {
      get { return defaultInstance; }
    }
    
    public override SpeedMessage2 DefaultInstanceForType {
      get { return defaultInstance; }
    }
    
    protected override SpeedMessage2 ThisMessage {
      get { return this; }
    }
    
    public static pbd::MessageDescriptor Descriptor {
      get { return global::Google.ProtocolBuffers.ProtoBench.BenchmarkSpeedProtoFile.internal__static_proto2_benchmark_v2_api_SpeedMessage2__Descriptor; }
    }
    
    protected override pb::FieldAccess.FieldAccessorTable<SpeedMessage2, SpeedMessage2.Builder> InternalFieldAccessors {
      get { return global::Google.ProtocolBuffers.ProtoBench.BenchmarkSpeedProtoFile.internal__static_proto2_benchmark_v2_api_SpeedMessage2__FieldAccessorTable; }
    }
    
    private bool hasField1;
    private int field1_ = 0;
    public bool HasField1 {
      get { return hasField1; }
    }
    public int Field1 {
      get { return field1_; }
    }
    
    private bool hasField2;
    private int field2_ = 0;
    public bool HasField2 {
      get { return hasField2; }
    }
    public int Field2 {
      get { return field2_; }
    }
    
    private bool hasField3;
    private int field3_ = 0;
    public bool HasField3 {
      get { return hasField3; }
    }
    public int Field3 {
      get { return field3_; }
    }
    
    private bool hasField15;
    private string field15_ = "";
    public bool HasField15 {
      get { return hasField15; }
    }
    public string Field15 {
      get { return field15_; }
    }
    
    private bool hasField12;
    private bool field12_ = true;
    public bool HasField12 {
      get { return hasField12; }
    }
    public bool Field12 {
      get { return field12_; }
    }
    
    private bool hasField13;
    private long field13_ = 0L;
    public bool HasField13 {
      get { return hasField13; }
    }
    public long Field13 {
      get { return field13_; }
    }
    
    private bool hasField14;
    private long field14_ = 0L;
    public bool HasField14 {
      get { return hasField14; }
    }
    public long Field14 {
      get { return field14_; }
    }
    
    private bool hasField16;
    private int field16_ = 0;
    public bool HasField16 {
      get { return hasField16; }
    }
    public int Field16 {
      get { return field16_; }
    }
    
    private bool hasField19;
    private int field19_ = 2;
    public bool HasField19 {
      get { return hasField19; }
    }
    public int Field19 {
      get { return field19_; }
    }
    
    private bool hasField20;
    private bool field20_ = true;
    public bool HasField20 {
      get { return hasField20; }
    }
    public bool Field20 {
      get { return field20_; }
    }
    
    private bool hasField28;
    private bool field28_ = true;
    public bool HasField28 {
      get { return hasField28; }
    }
    public bool Field28 {
      get { return field28_; }
    }
    
    private bool hasField21;
    private ulong field21_ = 0;
    public bool HasField21 {
      get { return hasField21; }
    }
    public ulong Field21 {
      get { return field21_; }
    }
    
    private bool hasField22;
    private int field22_ = 0;
    public bool HasField22 {
      get { return hasField22; }
    }
    public int Field22 {
      get { return field22_; }
    }
    
    private bool hasField23;
    private bool field23_ = false;
    public bool HasField23 {
      get { return hasField23; }
    }
    public bool Field23 {
      get { return field23_; }
    }
    
    private bool hasField206;
    private bool field206_ = false;
    public bool HasField206 {
      get { return hasField206; }
    }
    public bool Field206 {
      get { return field206_; }
    }
    
    private bool hasField203;
    private uint field203_ = 0;
    public bool HasField203 {
      get { return hasField203; }
    }
    public uint Field203 {
      get { return field203_; }
    }
    
    private bool hasField204;
    private int field204_ = 0;
    public bool HasField204 {
      get { return hasField204; }
    }
    public int Field204 {
      get { return field204_; }
    }
    
    private bool hasField205;
    private string field205_ = "";
    public bool HasField205 {
      get { return hasField205; }
    }
    public string Field205 {
      get { return field205_; }
    }
    
    private bool hasField207;
    private ulong field207_ = 0UL;
    public bool HasField207 {
      get { return hasField207; }
    }
    public ulong Field207 {
      get { return field207_; }
    }
    
    private bool hasField300;
    private ulong field300_ = 0UL;
    public bool HasField300 {
      get { return hasField300; }
    }
    public ulong Field300 {
      get { return field300_; }
    }
    
    public override bool IsInitialized {
      get {
        return true;
      }
    }
    
    public override void WriteTo(pb::CodedOutputStream output) {
      if (HasField1) {
        output.WriteInt32(1, Field1);
      }
      if (HasField2) {
        output.WriteInt32(2, Field2);
      }
      if (HasField3) {
        output.WriteInt32(3, Field3);
      }
      if (HasField12) {
        output.WriteBool(12, Field12);
      }
      if (HasField13) {
        output.WriteInt64(13, Field13);
      }
      if (HasField14) {
        output.WriteInt64(14, Field14);
      }
      if (HasField15) {
        output.WriteString(15, Field15);
      }
      if (HasField16) {
        output.WriteInt32(16, Field16);
      }
      if (HasField19) {
        output.WriteInt32(19, Field19);
      }
      if (HasField20) {
        output.WriteBool(20, Field20);
      }
      if (HasField21) {
        output.WriteFixed64(21, Field21);
      }
      if (HasField22) {
        output.WriteInt32(22, Field22);
      }
      if (HasField23) {
        output.WriteBool(23, Field23);
      }
      if (HasField28) {
        output.WriteBool(28, Field28);
      }
      if (HasField203) {
        output.WriteFixed32(203, Field203);
      }
      if (HasField204) {
        output.WriteInt32(204, Field204);
      }
      if (HasField205) {
        output.WriteString(205, Field205);
      }
      if (HasField206) {
        output.WriteBool(206, Field206);
      }
      if (HasField207) {
        output.WriteUInt64(207, Field207);
      }
      if (HasField300) {
        output.WriteUInt64(300, Field300);
      }
      UnknownFields.WriteTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public override int SerializedSize {
      get {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
        
        size = 0;
        if (HasField1) {
          size += pb::CodedOutputStream.ComputeInt32Size(1, Field1);
        }
        if (HasField2) {
          size += pb::CodedOutputStream.ComputeInt32Size(2, Field2);
        }
        if (HasField3) {
          size += pb::CodedOutputStream.ComputeInt32Size(3, Field3);
        }
        if (HasField15) {
          size += pb::CodedOutputStream.ComputeStringSize(15, Field15);
        }
        if (HasField12) {
          size += pb::CodedOutputStream.ComputeBoolSize(12, Field12);
        }
        if (HasField13) {
          size += pb::CodedOutputStream.ComputeInt64Size(13, Field13);
        }
        if (HasField14) {
          size += pb::CodedOutputStream.ComputeInt64Size(14, Field14);
        }
        if (HasField16) {
          size += pb::CodedOutputStream.ComputeInt32Size(16, Field16);
        }
        if (HasField19) {
          size += pb::CodedOutputStream.ComputeInt32Size(19, Field19);
        }
        if (HasField20) {
          size += pb::CodedOutputStream.ComputeBoolSize(20, Field20);
        }
        if (HasField28) {
          size += pb::CodedOutputStream.ComputeBoolSize(28, Field28);
        }
        if (HasField21) {
          size += pb::CodedOutputStream.ComputeFixed64Size(21, Field21);
        }
        if (HasField22) {
          size += pb::CodedOutputStream.ComputeInt32Size(22, Field22);
        }
        if (HasField23) {
          size += pb::CodedOutputStream.ComputeBoolSize(23, Field23);
        }
        if (HasField206) {
          size += pb::CodedOutputStream.ComputeBoolSize(206, Field206);
        }
        if (HasField203) {
          size += pb::CodedOutputStream.ComputeFixed32Size(203, Field203);
        }
        if (HasField204) {
          size += pb::CodedOutputStream.ComputeInt32Size(204, Field204);
        }
        if (HasField205) {
          size += pb::CodedOutputStream.ComputeStringSize(205, Field205);
        }
        if (HasField207) {
          size += pb::CodedOutputStream.ComputeUInt64Size(207, Field207);
        }
        if (HasField300) {
          size += pb::CodedOutputStream.ComputeUInt64Size(300, Field300);
        }
        size += UnknownFields.SerializedSize;
        memoizedSerializedSize = size;
        return size;
      }
    }
    
    public static SpeedMessage2 ParseFrom(pb::ByteString data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static SpeedMessage2 ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static SpeedMessage2 ParseFrom(byte[] data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static SpeedMessage2 ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static SpeedMessage2 ParseFrom(global::System.IO.Stream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static SpeedMessage2 ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static SpeedMessage2 ParseFrom(pb::CodedInputStream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static SpeedMessage2 ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static Builder CreateBuilder() { return new Builder(); }
    public override Builder ToBuilder() { return CreateBuilder(this); }
    public override Builder CreateBuilderForType() { return new Builder(); }
    public static Builder CreateBuilder(SpeedMessage2 prototype) {
      return (Builder) new Builder().MergeFrom(prototype);
    }
    
    public sealed partial class Builder : pb::GeneratedBuilder<SpeedMessage2, Builder> {
      protected override Builder ThisBuilder {
        get { return this; }
      }
      public Builder() {}
      
      SpeedMessage2 result = new SpeedMessage2();
      
      protected override SpeedMessage2 MessageBeingBuilt {
        get { return result; }
      }
      
      public override Builder Clear() {
        result = new SpeedMessage2();
        return this;
      }
      
      public override Builder Clone() {
        return new Builder().MergeFrom(result);
      }
      
      public override pbd::MessageDescriptor DescriptorForType {
        get { return SpeedMessage2.Descriptor; }
      }
      
      public override SpeedMessage2 DefaultInstanceForType {
        get { return SpeedMessage2.DefaultInstance; }
      }
      
      public override SpeedMessage2 BuildPartial() {
        SpeedMessage2 returnMe = result;
        result = null;
        return returnMe;
      }
      
      public override Builder MergeFrom(pb::IMessage other) {
        if (other is SpeedMessage2) {
          return MergeFrom((SpeedMessage2) other);
        } else {
          base.MergeFrom(other);
          return this;
        }
      }
      
      public override Builder MergeFrom(SpeedMessage2 other) {
        if (other == SpeedMessage2.DefaultInstance) return this;
        if (other.HasField1) {
          Field1 = other.Field1;
        }
        if (other.HasField2) {
          Field2 = other.Field2;
        }
        if (other.HasField3) {
          Field3 = other.Field3;
        }
        if (other.HasField15) {
          Field15 = other.Field15;
        }
        if (other.HasField12) {
          Field12 = other.Field12;
        }
        if (other.HasField13) {
          Field13 = other.Field13;
        }
        if (other.HasField14) {
          Field14 = other.Field14;
        }
        if (other.HasField16) {
          Field16 = other.Field16;
        }
        if (other.HasField19) {
          Field19 = other.Field19;
        }
        if (other.HasField20) {
          Field20 = other.Field20;
        }
        if (other.HasField28) {
          Field28 = other.Field28;
        }
        if (other.HasField21) {
          Field21 = other.Field21;
        }
        if (other.HasField22) {
          Field22 = other.Field22;
        }
        if (other.HasField23) {
          Field23 = other.Field23;
        }
        if (other.HasField206) {
          Field206 = other.Field206;
        }
        if (other.HasField203) {
          Field203 = other.Field203;
        }
        if (other.HasField204) {
          Field204 = other.Field204;
        }
        if (other.HasField205) {
          Field205 = other.Field205;
        }
        if (other.HasField207) {
          Field207 = other.Field207;
        }
        if (other.HasField300) {
          Field300 = other.Field300;
        }
        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: {
              Field1 = input.ReadInt32();
              break;
            }
            case 16: {
              Field2 = input.ReadInt32();
              break;
            }
            case 24: {
              Field3 = input.ReadInt32();
              break;
            }
            case 96: {
              Field12 = input.ReadBool();
              break;
            }
            case 104: {
              Field13 = input.ReadInt64();
              break;
            }
            case 112: {
              Field14 = input.ReadInt64();
              break;
            }
            case 122: {
              Field15 = input.ReadString();
              break;
            }
            case 128: {
              Field16 = input.ReadInt32();
              break;
            }
            case 152: {
              Field19 = input.ReadInt32();
              break;
            }
            case 160: {
              Field20 = input.ReadBool();
              break;
            }
            case 169: {
              Field21 = input.ReadFixed64();
              break;
            }
            case 176: {
              Field22 = input.ReadInt32();
              break;
            }
            case 184: {
              Field23 = input.ReadBool();
              break;
            }
            case 224: {
              Field28 = input.ReadBool();
              break;
            }
            case 1629: {
              Field203 = input.ReadFixed32();
              break;
            }
            case 1632: {
              Field204 = input.ReadInt32();
              break;
            }
            case 1642: {
              Field205 = input.ReadString();
              break;
            }
            case 1648: {
              Field206 = input.ReadBool();
              break;
            }
            case 1656: {
              Field207 = input.ReadUInt64();
              break;
            }
            case 2400: {
              Field300 = input.ReadUInt64();
              break;
            }
          }
        }
      }
      
      
      public bool HasField1 {
        get { return result.HasField1; }
      }
      public int Field1 {
        get { return result.Field1; }
        set { SetField1(value); }
      }
      public Builder SetField1(int value) {
        result.hasField1 = true;
        result.field1_ = value;
        return this;
      }
      public Builder ClearField1() {
        result.hasField1 = false;
        result.field1_ = 0;
        return this;
      }
      
      public bool HasField2 {
        get { return result.HasField2; }
      }
      public int Field2 {
        get { return result.Field2; }
        set { SetField2(value); }
      }
      public Builder SetField2(int value) {
        result.hasField2 = true;
        result.field2_ = value;
        return this;
      }
      public Builder ClearField2() {
        result.hasField2 = false;
        result.field2_ = 0;
        return this;
      }
      
      public bool HasField3 {
        get { return result.HasField3; }
      }
      public int Field3 {
        get { return result.Field3; }
        set { SetField3(value); }
      }
      public Builder SetField3(int value) {
        result.hasField3 = true;
        result.field3_ = value;
        return this;
      }
      public Builder ClearField3() {
        result.hasField3 = false;
        result.field3_ = 0;
        return this;
      }
      
      public bool HasField15 {
        get { return result.HasField15; }
      }
      public string Field15 {
        get { return result.Field15; }
        set { SetField15(value); }
      }
      public Builder SetField15(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasField15 = true;
        result.field15_ = value;
        return this;
      }
      public Builder ClearField15() {
        result.hasField15 = false;
        result.field15_ = "";
        return this;
      }
      
      public bool HasField12 {
        get { return result.HasField12; }
      }
      public bool Field12 {
        get { return result.Field12; }
        set { SetField12(value); }
      }
      public Builder SetField12(bool value) {
        result.hasField12 = true;
        result.field12_ = value;
        return this;
      }
      public Builder ClearField12() {
        result.hasField12 = false;
        result.field12_ = true;
        return this;
      }
      
      public bool HasField13 {
        get { return result.HasField13; }
      }
      public long Field13 {
        get { return result.Field13; }
        set { SetField13(value); }
      }
      public Builder SetField13(long value) {
        result.hasField13 = true;
        result.field13_ = value;
        return this;
      }
      public Builder ClearField13() {
        result.hasField13 = false;
        result.field13_ = 0L;
        return this;
      }
      
      public bool HasField14 {
        get { return result.HasField14; }
      }
      public long Field14 {
        get { return result.Field14; }
        set { SetField14(value); }
      }
      public Builder SetField14(long value) {
        result.hasField14 = true;
        result.field14_ = value;
        return this;
      }
      public Builder ClearField14() {
        result.hasField14 = false;
        result.field14_ = 0L;
        return this;
      }
      
      public bool HasField16 {
        get { return result.HasField16; }
      }
      public int Field16 {
        get { return result.Field16; }
        set { SetField16(value); }
      }
      public Builder SetField16(int value) {
        result.hasField16 = true;
        result.field16_ = value;
        return this;
      }
      public Builder ClearField16() {
        result.hasField16 = false;
        result.field16_ = 0;
        return this;
      }
      
      public bool HasField19 {
        get { return result.HasField19; }
      }
      public int Field19 {
        get { return result.Field19; }
        set { SetField19(value); }
      }
      public Builder SetField19(int value) {
        result.hasField19 = true;
        result.field19_ = value;
        return this;
      }
      public Builder ClearField19() {
        result.hasField19 = false;
        result.field19_ = 2;
        return this;
      }
      
      public bool HasField20 {
        get { return result.HasField20; }
      }
      public bool Field20 {
        get { return result.Field20; }
        set { SetField20(value); }
      }
      public Builder SetField20(bool value) {
        result.hasField20 = true;
        result.field20_ = value;
        return this;
      }
      public Builder ClearField20() {
        result.hasField20 = false;
        result.field20_ = true;
        return this;
      }
      
      public bool HasField28 {
        get { return result.HasField28; }
      }
      public bool Field28 {
        get { return result.Field28; }
        set { SetField28(value); }
      }
      public Builder SetField28(bool value) {
        result.hasField28 = true;
        result.field28_ = value;
        return this;
      }
      public Builder ClearField28() {
        result.hasField28 = false;
        result.field28_ = true;
        return this;
      }
      
      public bool HasField21 {
        get { return result.HasField21; }
      }
      public ulong Field21 {
        get { return result.Field21; }
        set { SetField21(value); }
      }
      public Builder SetField21(ulong value) {
        result.hasField21 = true;
        result.field21_ = value;
        return this;
      }
      public Builder ClearField21() {
        result.hasField21 = false;
        result.field21_ = 0;
        return this;
      }
      
      public bool HasField22 {
        get { return result.HasField22; }
      }
      public int Field22 {
        get { return result.Field22; }
        set { SetField22(value); }
      }
      public Builder SetField22(int value) {
        result.hasField22 = true;
        result.field22_ = value;
        return this;
      }
      public Builder ClearField22() {
        result.hasField22 = false;
        result.field22_ = 0;
        return this;
      }
      
      public bool HasField23 {
        get { return result.HasField23; }
      }
      public bool Field23 {
        get { return result.Field23; }
        set { SetField23(value); }
      }
      public Builder SetField23(bool value) {
        result.hasField23 = true;
        result.field23_ = value;
        return this;
      }
      public Builder ClearField23() {
        result.hasField23 = false;
        result.field23_ = false;
        return this;
      }
      
      public bool HasField206 {
        get { return result.HasField206; }
      }
      public bool Field206 {
        get { return result.Field206; }
        set { SetField206(value); }
      }
      public Builder SetField206(bool value) {
        result.hasField206 = true;
        result.field206_ = value;
        return this;
      }
      public Builder ClearField206() {
        result.hasField206 = false;
        result.field206_ = false;
        return this;
      }
      
      public bool HasField203 {
        get { return result.HasField203; }
      }
      public uint Field203 {
        get { return result.Field203; }
        set { SetField203(value); }
      }
      public Builder SetField203(uint value) {
        result.hasField203 = true;
        result.field203_ = value;
        return this;
      }
      public Builder ClearField203() {
        result.hasField203 = false;
        result.field203_ = 0;
        return this;
      }
      
      public bool HasField204 {
        get { return result.HasField204; }
      }
      public int Field204 {
        get { return result.Field204; }
        set { SetField204(value); }
      }
      public Builder SetField204(int value) {
        result.hasField204 = true;
        result.field204_ = value;
        return this;
      }
      public Builder ClearField204() {
        result.hasField204 = false;
        result.field204_ = 0;
        return this;
      }
      
      public bool HasField205 {
        get { return result.HasField205; }
      }
      public string Field205 {
        get { return result.Field205; }
        set { SetField205(value); }
      }
      public Builder SetField205(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasField205 = true;
        result.field205_ = value;
        return this;
      }
      public Builder ClearField205() {
        result.hasField205 = false;
        result.field205_ = "";
        return this;
      }
      
      public bool HasField207 {
        get { return result.HasField207; }
      }
      public ulong Field207 {
        get { return result.Field207; }
        set { SetField207(value); }
      }
      public Builder SetField207(ulong value) {
        result.hasField207 = true;
        result.field207_ = value;
        return this;
      }
      public Builder ClearField207() {
        result.hasField207 = false;
        result.field207_ = 0UL;
        return this;
      }
      
      public bool HasField300 {
        get { return result.HasField300; }
      }
      public ulong Field300 {
        get { return result.Field300; }
        set { SetField300(value); }
      }
      public Builder SetField300(ulong value) {
        result.hasField300 = true;
        result.field300_ = value;
        return this;
      }
      public Builder ClearField300() {
        result.hasField300 = false;
        result.field300_ = 0UL;
        return this;
      }
    }
  }
  
  public sealed partial class SpeedMessage3 : pb::GeneratedMessage<SpeedMessage3, SpeedMessage3.Builder> {
    private static readonly SpeedMessage3 defaultInstance = new Builder().BuildPartial();
    public static SpeedMessage3 DefaultInstance {
      get { return defaultInstance; }
    }
    
    public override SpeedMessage3 DefaultInstanceForType {
      get { return defaultInstance; }
    }
    
    protected override SpeedMessage3 ThisMessage {
      get { return this; }
    }
    
    public static pbd::MessageDescriptor Descriptor {
      get { return global::Google.ProtocolBuffers.ProtoBench.BenchmarkSpeedProtoFile.internal__static_proto2_benchmark_v2_api_SpeedMessage3__Descriptor; }
    }
    
    protected override pb::FieldAccess.FieldAccessorTable<SpeedMessage3, SpeedMessage3.Builder> InternalFieldAccessors {
      get { return global::Google.ProtocolBuffers.ProtoBench.BenchmarkSpeedProtoFile.internal__static_proto2_benchmark_v2_api_SpeedMessage3__FieldAccessorTable; }
    }
    
    #region Nested types
    public static class Types {
      public sealed partial class Group1 : pb::GeneratedMessage<Group1, Group1.Builder> {
        private static readonly Group1 defaultInstance = new Builder().BuildPartial();
        public static Group1 DefaultInstance {
          get { return defaultInstance; }
        }
        
        public override Group1 DefaultInstanceForType {
          get { return defaultInstance; }
        }
        
        protected override Group1 ThisMessage {
          get { return this; }
        }
        
        public static pbd::MessageDescriptor Descriptor {
          get { return global::Google.ProtocolBuffers.ProtoBench.BenchmarkSpeedProtoFile.internal__static_proto2_benchmark_v2_api_SpeedMessage3_Group1__Descriptor; }
        }
        
        protected override pb::FieldAccess.FieldAccessorTable<Group1, Group1.Builder> InternalFieldAccessors {
          get { return global::Google.ProtocolBuffers.ProtoBench.BenchmarkSpeedProtoFile.internal__static_proto2_benchmark_v2_api_SpeedMessage3_Group1__FieldAccessorTable; }
        }
        
        private bool hasField11;
        private float field11_ = 0F;
        public bool HasField11 {
          get { return hasField11; }
        }
        public float Field11 {
          get { return field11_; }
        }
        
        private bool hasField26;
        private float field26_ = 0F;
        public bool HasField26 {
          get { return hasField26; }
        }
        public float Field26 {
          get { return field26_; }
        }
        
        private bool hasField12;
        private string field12_ = "";
        public bool HasField12 {
          get { return hasField12; }
        }
        public string Field12 {
          get { return field12_; }
        }
        
        private bool hasField13;
        private string field13_ = "";
        public bool HasField13 {
          get { return hasField13; }
        }
        public string Field13 {
          get { return field13_; }
        }
        
        private pbc::PopsicleList<string> field14_ = new pbc::PopsicleList<string>();
        public scg::IList<string> Field14List {
          get { return pbc::Lists.AsReadOnly(field14_); }
        }
        public int Field14Count {
          get { return field14_.Count; }
        }
        public string GetField14(int index) {
          return field14_[index];
        }
        
        private bool hasField15;
        private ulong field15_ = 0UL;
        public bool HasField15 {
          get { return hasField15; }
        }
        public ulong Field15 {
          get { return field15_; }
        }
        
        private bool hasField5;
        private int field5_ = 0;
        public bool HasField5 {
          get { return hasField5; }
        }
        public int Field5 {
          get { return field5_; }
        }
        
        private bool hasField27;
        private string field27_ = "";
        public bool HasField27 {
          get { return hasField27; }
        }
        public string Field27 {
          get { return field27_; }
        }
        
        private bool hasField28;
        private int field28_ = 0;
        public bool HasField28 {
          get { return hasField28; }
        }
        public int Field28 {
          get { return field28_; }
        }
        
        private bool hasField29;
        private string field29_ = "";
        public bool HasField29 {
          get { return hasField29; }
        }
        public string Field29 {
          get { return field29_; }
        }
        
        private bool hasField16;
        private string field16_ = "";
        public bool HasField16 {
          get { return hasField16; }
        }
        public string Field16 {
          get { return field16_; }
        }
        
        private pbc::PopsicleList<string> field22_ = new pbc::PopsicleList<string>();
        public scg::IList<string> Field22List {
          get { return pbc::Lists.AsReadOnly(field22_); }
        }
        public int Field22Count {
          get { return field22_.Count; }
        }
        public string GetField22(int index) {
          return field22_[index];
        }
        
        private pbc::PopsicleList<int> field73_ = new pbc::PopsicleList<int>();
        public scg::IList<int> Field73List {
          get { return pbc::Lists.AsReadOnly(field73_); }
        }
        public int Field73Count {
          get { return field73_.Count; }
        }
        public int GetField73(int index) {
          return field73_[index];
        }
        
        private bool hasField20;
        private int field20_ = 0;
        public bool HasField20 {
          get { return hasField20; }
        }
        public int Field20 {
          get { return field20_; }
        }
        
        private bool hasField24;
        private string field24_ = "";
        public bool HasField24 {
          get { return hasField24; }
        }
        public string Field24 {
          get { return field24_; }
        }
        
        private bool hasField31;
        private global::Google.ProtocolBuffers.ProtoBench.SpeedMessage4 field31_ = global::Google.ProtocolBuffers.ProtoBench.SpeedMessage4.DefaultInstance;
        public bool HasField31 {
          get { return hasField31; }
        }
        public global::Google.ProtocolBuffers.ProtoBench.SpeedMessage4 Field31 {
          get { return field31_; }
        }
        
        public override bool IsInitialized {
          get {
            if (!hasField11) return false;
            if (!hasField15) return false;
            return true;
          }
        }
        
        public override void WriteTo(pb::CodedOutputStream output) {
          if (HasField5) {
            output.WriteInt32(5, Field5);
          }
          if (HasField11) {
            output.WriteFloat(11, Field11);
          }
          if (HasField12) {
            output.WriteString(12, Field12);
          }
          if (HasField13) {
            output.WriteString(13, Field13);
          }
          if (field14_.Count > 0) {
            foreach (string element in field14_) {
              output.WriteString(14, element);
            }
          }
          if (HasField15) {
            output.WriteUInt64(15, Field15);
          }
          if (HasField16) {
            output.WriteString(16, Field16);
          }
          if (HasField20) {
            output.WriteInt32(20, Field20);
          }
          if (field22_.Count > 0) {
            foreach (string element in field22_) {
              output.WriteString(22, element);
            }
          }
          if (HasField24) {
            output.WriteString(24, Field24);
          }
          if (HasField26) {
            output.WriteFloat(26, Field26);
          }
          if (HasField27) {
            output.WriteString(27, Field27);
          }
          if (HasField28) {
            output.WriteInt32(28, Field28);
          }
          if (HasField29) {
            output.WriteString(29, Field29);
          }
          if (HasField31) {
            output.WriteMessage(31, Field31);
          }
          if (field73_.Count > 0) {
            foreach (int element in field73_) {
              output.WriteInt32(73, element);
            }
          }
          UnknownFields.WriteTo(output);
        }
        
        private int memoizedSerializedSize = -1;
        public override int SerializedSize {
          get {
            int size = memoizedSerializedSize;
            if (size != -1) return size;
            
            size = 0;
            if (HasField11) {
              size += pb::CodedOutputStream.ComputeFloatSize(11, Field11);
            }
            if (HasField26) {
              size += pb::CodedOutputStream.ComputeFloatSize(26, Field26);
            }
            if (HasField12) {
              size += pb::CodedOutputStream.ComputeStringSize(12, Field12);
            }
            if (HasField13) {
              size += pb::CodedOutputStream.ComputeStringSize(13, Field13);
            }
            {
              int dataSize = 0;
              foreach (string element in Field14List) {
                dataSize += pb::CodedOutputStream.ComputeStringSizeNoTag(element);
              }
              size += dataSize;
              size += 1 * field14_.Count;
            }
            if (HasField15) {
              size += pb::CodedOutputStream.ComputeUInt64Size(15, Field15);
            }
            if (HasField5) {
              size += pb::CodedOutputStream.ComputeInt32Size(5, Field5);
            }
            if (HasField27) {
              size += pb::CodedOutputStream.ComputeStringSize(27, Field27);
            }
            if (HasField28) {
              size += pb::CodedOutputStream.ComputeInt32Size(28, Field28);
            }
            if (HasField29) {
              size += pb::CodedOutputStream.ComputeStringSize(29, Field29);
            }
            if (HasField16) {
              size += pb::CodedOutputStream.ComputeStringSize(16, Field16);
            }
            {
              int dataSize = 0;
              foreach (string element in Field22List) {
                dataSize += pb::CodedOutputStream.ComputeStringSizeNoTag(element);
              }
              size += dataSize;
              size += 2 * field22_.Count;
            }
            {
              int dataSize = 0;
              foreach (int element in Field73List) {
                dataSize += pb::CodedOutputStream.ComputeInt32SizeNoTag(element);
              }
              size += dataSize;
              size += 2 * field73_.Count;
            }
            if (HasField20) {
              size += pb::CodedOutputStream.ComputeInt32Size(20, Field20);
            }
            if (HasField24) {
              size += pb::CodedOutputStream.ComputeStringSize(24, Field24);
            }
            if (HasField31) {
              size += pb::CodedOutputStream.ComputeMessageSize(31, Field31);
            }
            size += UnknownFields.SerializedSize;
            memoizedSerializedSize = size;
            return size;
          }
        }
        
        public static Group1 ParseFrom(pb::ByteString data) {
          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
        }
        public static Group1 ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
        }
        public static Group1 ParseFrom(byte[] data) {
          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
        }
        public static Group1 ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
        }
        public static Group1 ParseFrom(global::System.IO.Stream input) {
          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
        }
        public static Group1 ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
        }
        public static Group1 ParseFrom(pb::CodedInputStream input) {
          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
        }
        public static Group1 ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
        }
        public static Builder CreateBuilder() { return new Builder(); }
        public override Builder ToBuilder() { return CreateBuilder(this); }
        public override Builder CreateBuilderForType() { return new Builder(); }
        public static Builder CreateBuilder(Group1 prototype) {
          return (Builder) new Builder().MergeFrom(prototype);
        }
        
        public sealed partial class Builder : pb::GeneratedBuilder<Group1, Builder> {
          protected override Builder ThisBuilder {
            get { return this; }
          }
          public Builder() {}
          
          Group1 result = new Group1();
          
          protected override Group1 MessageBeingBuilt {
            get { return result; }
          }
          
          public override Builder Clear() {
            result = new Group1();
            return this;
          }
          
          public override Builder Clone() {
            return new Builder().MergeFrom(result);
          }
          
          public override pbd::MessageDescriptor DescriptorForType {
            get { return Group1.Descriptor; }
          }
          
          public override Group1 DefaultInstanceForType {
            get { return Group1.DefaultInstance; }
          }
          
          public override Group1 BuildPartial() {
            result.field14_.MakeReadOnly();
            result.field22_.MakeReadOnly();
            result.field73_.MakeReadOnly();
            Group1 returnMe = result;
            result = null;
            return returnMe;
          }
          
          public override Builder MergeFrom(pb::IMessage other) {
            if (other is Group1) {
              return MergeFrom((Group1) other);
            } else {
              base.MergeFrom(other);
              return this;
            }
          }
          
          public override Builder MergeFrom(Group1 other) {
            if (other == Group1.DefaultInstance) return this;
            if (other.HasField11) {
              Field11 = other.Field11;
            }
            if (other.HasField26) {
              Field26 = other.Field26;
            }
            if (other.HasField12) {
              Field12 = other.Field12;
            }
            if (other.HasField13) {
              Field13 = other.Field13;
            }
            if (other.field14_.Count != 0) {
              base.AddRange(other.field14_, result.field14_);
            }
            if (other.HasField15) {
              Field15 = other.Field15;
            }
            if (other.HasField5) {
              Field5 = other.Field5;
            }
            if (other.HasField27) {
              Field27 = other.Field27;
            }
            if (other.HasField28) {
              Field28 = other.Field28;
            }
            if (other.HasField29) {
              Field29 = other.Field29;
            }
            if (other.HasField16) {
              Field16 = other.Field16;
            }
            if (other.field22_.Count != 0) {
              base.AddRange(other.field22_, result.field22_);
            }
            if (other.field73_.Count != 0) {
              base.AddRange(other.field73_, result.field73_);
            }
            if (other.HasField20) {
              Field20 = other.Field20;
            }
            if (other.HasField24) {
              Field24 = other.Field24;
            }
            if (other.HasField31) {
              MergeField31(other.Field31);
            }
            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 40: {
                  Field5 = input.ReadInt32();
                  break;
                }
                case 93: {
                  Field11 = input.ReadFloat();
                  break;
                }
                case 98: {
                  Field12 = input.ReadString();
                  break;
                }
                case 106: {
                  Field13 = input.ReadString();
                  break;
                }
                case 114: {
                  AddField14(input.ReadString());
                  break;
                }
                case 120: {
                  Field15 = input.ReadUInt64();
                  break;
                }
                case 130: {
                  Field16 = input.ReadString();
                  break;
                }
                case 160: {
                  Field20 = input.ReadInt32();
                  break;
                }
                case 178: {
                  AddField22(input.ReadString());
                  break;
                }
                case 194: {
                  Field24 = input.ReadString();
                  break;
                }
                case 213: {
                  Field26 = input.ReadFloat();
                  break;
                }
                case 218: {
                  Field27 = input.ReadString();
                  break;
                }
                case 224: {
                  Field28 = input.ReadInt32();
                  break;
                }
                case 234: {
                  Field29 = input.ReadString();
                  break;
                }
                case 250: {
                  global::Google.ProtocolBuffers.ProtoBench.SpeedMessage4.Builder subBuilder = global::Google.ProtocolBuffers.ProtoBench.SpeedMessage4.CreateBuilder();
                  if (HasField31) {
                    subBuilder.MergeFrom(Field31);
                  }
                  input.ReadMessage(subBuilder, extensionRegistry);
                  Field31 = subBuilder.BuildPartial();
                  break;
                }
                case 584: {
                  AddField73(input.ReadInt32());
                  break;
                }
              }
            }
          }
          
          
          public bool HasField11 {
            get { return result.HasField11; }
          }
          public float Field11 {
            get { return result.Field11; }
            set { SetField11(value); }
          }
          public Builder SetField11(float value) {
            result.hasField11 = true;
            result.field11_ = value;
            return this;
          }
          public Builder ClearField11() {
            result.hasField11 = false;
            result.field11_ = 0F;
            return this;
          }
          
          public bool HasField26 {
            get { return result.HasField26; }
          }
          public float Field26 {
            get { return result.Field26; }
            set { SetField26(value); }
          }
          public Builder SetField26(float value) {
            result.hasField26 = true;
            result.field26_ = value;
            return this;
          }
          public Builder ClearField26() {
            result.hasField26 = false;
            result.field26_ = 0F;
            return this;
          }
          
          public bool HasField12 {
            get { return result.HasField12; }
          }
          public string Field12 {
            get { return result.Field12; }
            set { SetField12(value); }
          }
          public Builder SetField12(string value) {
            pb::ThrowHelper.ThrowIfNull(value, "value");
            result.hasField12 = true;
            result.field12_ = value;
            return this;
          }
          public Builder ClearField12() {
            result.hasField12 = false;
            result.field12_ = "";
            return this;
          }
          
          public bool HasField13 {
            get { return result.HasField13; }
          }
          public string Field13 {
            get { return result.Field13; }
            set { SetField13(value); }
          }
          public Builder SetField13(string value) {
            pb::ThrowHelper.ThrowIfNull(value, "value");
            result.hasField13 = true;
            result.field13_ = value;
            return this;
          }
          public Builder ClearField13() {
            result.hasField13 = false;
            result.field13_ = "";
            return this;
          }
          
          public scg::IList<string> Field14List {
            get { return result.field14_; }
          }
          public int Field14Count {
            get { return result.Field14Count; }
          }
          public string GetField14(int index) {
            return result.GetField14(index);
          }
          public Builder SetField14(int index, string value) {
            pb::ThrowHelper.ThrowIfNull(value, "value");
            result.field14_[index] = value;
            return this;
          }
          public Builder AddField14(string value) {
            pb::ThrowHelper.ThrowIfNull(value, "value");
            result.field14_.Add(value);
            return this;
          }
          public Builder AddRangeField14(scg::IEnumerable<string> values) {
            base.AddRange(values, result.field14_);
            return this;
          }
          public Builder ClearField14() {
            result.field14_.Clear();
            return this;
          }
          
          public bool HasField15 {
            get { return result.HasField15; }
          }
          public ulong Field15 {
            get { return result.Field15; }
            set { SetField15(value); }
          }
          public Builder SetField15(ulong value) {
            result.hasField15 = true;
            result.field15_ = value;
            return this;
          }
          public Builder ClearField15() {
            result.hasField15 = false;
            result.field15_ = 0UL;
            return this;
          }
          
          public bool HasField5 {
            get { return result.HasField5; }
          }
          public int Field5 {
            get { return result.Field5; }
            set { SetField5(value); }
          }
          public Builder SetField5(int value) {
            result.hasField5 = true;
            result.field5_ = value;
            return this;
          }
          public Builder ClearField5() {
            result.hasField5 = false;
            result.field5_ = 0;
            return this;
          }
          
          public bool HasField27 {
            get { return result.HasField27; }
          }
          public string Field27 {
            get { return result.Field27; }
            set { SetField27(value); }
          }
          public Builder SetField27(string value) {
            pb::ThrowHelper.ThrowIfNull(value, "value");
            result.hasField27 = true;
            result.field27_ = value;
            return this;
          }
          public Builder ClearField27() {
            result.hasField27 = false;
            result.field27_ = "";
            return this;
          }
          
          public bool HasField28 {
            get { return result.HasField28; }
          }
          public int Field28 {
            get { return result.Field28; }
            set { SetField28(value); }
          }
          public Builder SetField28(int value) {
            result.hasField28 = true;
            result.field28_ = value;
            return this;
          }
          public Builder ClearField28() {
            result.hasField28 = false;
            result.field28_ = 0;
            return this;
          }
          
          public bool HasField29 {
            get { return result.HasField29; }
          }
          public string Field29 {
            get { return result.Field29; }
            set { SetField29(value); }
          }
          public Builder SetField29(string value) {
            pb::ThrowHelper.ThrowIfNull(value, "value");
            result.hasField29 = true;
            result.field29_ = value;
            return this;
          }
          public Builder ClearField29() {
            result.hasField29 = false;
            result.field29_ = "";
            return this;
          }
          
          public bool HasField16 {
            get { return result.HasField16; }
          }
          public string Field16 {
            get { return result.Field16; }
            set { SetField16(value); }
          }
          public Builder SetField16(string value) {
            pb::ThrowHelper.ThrowIfNull(value, "value");
            result.hasField16 = true;
            result.field16_ = value;
            return this;
          }
          public Builder ClearField16() {
            result.hasField16 = false;
            result.field16_ = "";
            return this;
          }
          
          public scg::IList<string> Field22List {
            get { return result.field22_; }
          }
          public int Field22Count {
            get { return result.Field22Count; }
          }
          public string GetField22(int index) {
            return result.GetField22(index);
          }
          public Builder SetField22(int index, string value) {
            pb::ThrowHelper.ThrowIfNull(value, "value");
            result.field22_[index] = value;
            return this;
          }
          public Builder AddField22(string value) {
            pb::ThrowHelper.ThrowIfNull(value, "value");
            result.field22_.Add(value);
            return this;
          }
          public Builder AddRangeField22(scg::IEnumerable<string> values) {
            base.AddRange(values, result.field22_);
            return this;
          }
          public Builder ClearField22() {
            result.field22_.Clear();
            return this;
          }
          
          public scg::IList<int> Field73List {
            get { return result.field73_; }
          }
          public int Field73Count {
            get { return result.Field73Count; }
          }
          public int GetField73(int index) {
            return result.GetField73(index);
          }
          public Builder SetField73(int index, int value) {
            result.field73_[index] = value;
            return this;
          }
          public Builder AddField73(int value) {
            result.field73_.Add(value);
            return this;
          }
          public Builder AddRangeField73(scg::IEnumerable<int> values) {
            base.AddRange(values, result.field73_);
            return this;
          }
          public Builder ClearField73() {
            result.field73_.Clear();
            return this;
          }
          
          public bool HasField20 {
            get { return result.HasField20; }
          }
          public int Field20 {
            get { return result.Field20; }
            set { SetField20(value); }
          }
          public Builder SetField20(int value) {
            result.hasField20 = true;
            result.field20_ = value;
            return this;
          }
          public Builder ClearField20() {
            result.hasField20 = false;
            result.field20_ = 0;
            return this;
          }
          
          public bool HasField24 {
            get { return result.HasField24; }
          }
          public string Field24 {
            get { return result.Field24; }
            set { SetField24(value); }
          }
          public Builder SetField24(string value) {
            pb::ThrowHelper.ThrowIfNull(value, "value");
            result.hasField24 = true;
            result.field24_ = value;
            return this;
          }
          public Builder ClearField24() {
            result.hasField24 = false;
            result.field24_ = "";
            return this;
          }
          
          public bool HasField31 {
           get { return result.HasField31; }
          }
          public global::Google.ProtocolBuffers.ProtoBench.SpeedMessage4 Field31 {
            get { return result.Field31; }
            set { SetField31(value); }
          }
          public Builder SetField31(global::Google.ProtocolBuffers.ProtoBench.SpeedMessage4 value) {
            pb::ThrowHelper.ThrowIfNull(value, "value");
            result.hasField31 = true;
            result.field31_ = value;
            return this;
          }
          public Builder SetField31(global::Google.ProtocolBuffers.ProtoBench.SpeedMessage4.Builder builderForValue) {
            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
            result.hasField31 = true;
            result.field31_ = builderForValue.Build();
            return this;
          }
          public Builder MergeField31(global::Google.ProtocolBuffers.ProtoBench.SpeedMessage4 value) {
            pb::ThrowHelper.ThrowIfNull(value, "value");
            if (result.HasField31 &&
                result.field31_ != global::Google.ProtocolBuffers.ProtoBench.SpeedMessage4.DefaultInstance) {
                result.field31_ = global::Google.ProtocolBuffers.ProtoBench.SpeedMessage4.CreateBuilder(result.field31_).MergeFrom(value).BuildPartial();
            } else {
              result.field31_ = value;
            }
            result.hasField31 = true;
            return this;
          }
          public Builder ClearField31() {
            result.hasField31 = false;
            result.field31_ = global::Google.ProtocolBuffers.ProtoBench.SpeedMessage4.DefaultInstance;
            return this;
          }
        }
      }
      
    }
    #endregion
    
    private bool hasField1;
    private string field1_ = "";
    public bool HasField1 {
      get { return hasField1; }
    }
    public string Field1 {
      get { return field1_; }
    }
    
    private bool hasField3;
    private long field3_ = 0L;
    public bool HasField3 {
      get { return hasField3; }
    }
    public long Field3 {
      get { return field3_; }
    }
    
    private bool hasField4;
    private long field4_ = 0L;
    public bool HasField4 {
      get { return hasField4; }
    }
    public long Field4 {
      get { return field4_; }
    }
    
    private bool hasField30;
    private long field30_ = 0L;
    public bool HasField30 {
      get { return hasField30; }
    }
    public long Field30 {
      get { return field30_; }
    }
    
    private bool hasField75;
    private bool field75_ = false;
    public bool HasField75 {
      get { return hasField75; }
    }
    public bool Field75 {
      get { return field75_; }
    }
    
    private bool hasField6;
    private string field6_ = "";
    public bool HasField6 {
      get { return hasField6; }
    }
    public string Field6 {
      get { return field6_; }
    }
    
    private bool hasField2;
    private pb::ByteString field2_ = pb::ByteString.Empty;
    public bool HasField2 {
      get { return hasField2; }
    }
    public pb::ByteString Field2 {
      get { return field2_; }
    }
    
    private bool hasField21;
    private int field21_ = 0;
    public bool HasField21 {
      get { return hasField21; }
    }
    public int Field21 {
      get { return field21_; }
    }
    
    private bool hasField71;
    private int field71_ = 0;
    public bool HasField71 {
      get { return hasField71; }
    }
    public int Field71 {
      get { return field71_; }
    }
    
    private bool hasField25;
    private float field25_ = 0F;
    public bool HasField25 {
      get { return hasField25; }
    }
    public float Field25 {
      get { return field25_; }
    }
    
    private bool hasField109;
    private int field109_ = 0;
    public bool HasField109 {
      get { return hasField109; }
    }
    public int Field109 {
      get { return field109_; }
    }
    
    private bool hasField210;
    private int field210_ = 0;
    public bool HasField210 {
      get { return hasField210; }
    }
    public int Field210 {
      get { return field210_; }
    }
    
    private bool hasField211;
    private int field211_ = 0;
    public bool HasField211 {
      get { return hasField211; }
    }
    public int Field211 {
      get { return field211_; }
    }
    
    private bool hasField212;
    private int field212_ = 0;
    public bool HasField212 {
      get { return hasField212; }
    }
    public int Field212 {
      get { return field212_; }
    }
    
    private bool hasField213;
    private int field213_ = 0;
    public bool HasField213 {
      get { return hasField213; }
    }
    public int Field213 {
      get { return field213_; }
    }
    
    private bool hasField216;
    private int field216_ = 0;
    public bool HasField216 {
      get { return hasField216; }
    }
    public int Field216 {
      get { return field216_; }
    }
    
    private bool hasField217;
    private int field217_ = 0;
    public bool HasField217 {
      get { return hasField217; }
    }
    public int Field217 {
      get { return field217_; }
    }
    
    private bool hasField218;
    private int field218_ = 0;
    public bool HasField218 {
      get { return hasField218; }
    }
    public int Field218 {
      get { return field218_; }
    }
    
    private bool hasField220;
    private int field220_ = 0;
    public bool HasField220 {
      get { return hasField220; }
    }
    public int Field220 {
      get { return field220_; }
    }
    
    private bool hasField221;
    private int field221_ = 0;
    public bool HasField221 {
      get { return hasField221; }
    }
    public int Field221 {
      get { return field221_; }
    }
    
    private bool hasField222;
    private float field222_ = 0F;
    public bool HasField222 {
      get { return hasField222; }
    }
    public float Field222 {
      get { return field222_; }
    }
    
    private bool hasField63;
    private int field63_ = 0;
    public bool HasField63 {
      get { return hasField63; }
    }
    public int Field63 {
      get { return field63_; }
    }
    
    private pbc::PopsicleList<global::Google.ProtocolBuffers.ProtoBench.SpeedMessage3.Types.Group1> group1_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.ProtoBench.SpeedMessage3.Types.Group1>();
    public scg::IList<global::Google.ProtocolBuffers.ProtoBench.SpeedMessage3.Types.Group1> Group1List {
      get { return group1_; }
    }
    public int Group1Count {
      get { return group1_.Count; }
    }
    public global::Google.ProtocolBuffers.ProtoBench.SpeedMessage3.Types.Group1 GetGroup1(int index) {
      return group1_[index];
    }
    
    private pbc::PopsicleList<string> field128_ = new pbc::PopsicleList<string>();
    public scg::IList<string> Field128List {
      get { return pbc::Lists.AsReadOnly(field128_); }
    }
    public int Field128Count {
      get { return field128_.Count; }
    }
    public string GetField128(int index) {
      return field128_[index];
    }
    
    private bool hasField131;
    private long field131_ = 0L;
    public bool HasField131 {
      get { return hasField131; }
    }
    public long Field131 {
      get { return field131_; }
    }
    
    private pbc::PopsicleList<string> field127_ = new pbc::PopsicleList<string>();
    public scg::IList<string> Field127List {
      get { return pbc::Lists.AsReadOnly(field127_); }
    }
    public int Field127Count {
      get { return field127_.Count; }
    }
    public string GetField127(int index) {
      return field127_[index];
    }
    
    private bool hasField129;
    private int field129_ = 0;
    public bool HasField129 {
      get { return hasField129; }
    }
    public int Field129 {
      get { return field129_; }
    }
    
    private pbc::PopsicleList<long> field130_ = new pbc::PopsicleList<long>();
    public scg::IList<long> Field130List {
      get { return pbc::Lists.AsReadOnly(field130_); }
    }
    public int Field130Count {
      get { return field130_.Count; }
    }
    public long GetField130(int index) {
      return field130_[index];
    }
    
    private bool hasField205;
    private bool field205_ = false;
    public bool HasField205 {
      get { return hasField205; }
    }
    public bool Field205 {
      get { return field205_; }
    }
    
    private bool hasField206;
    private bool field206_ = false;
    public bool HasField206 {
      get { return hasField206; }
    }
    public bool Field206 {
      get { return field206_; }
    }
    
    public override bool IsInitialized {
      get {
        return true;
      }
    }
    
    public override void WriteTo(pb::CodedOutputStream output) {
      if (HasField1) {
        output.WriteString(1, Field1);
      }
      if (HasField2) {
        output.WriteBytes(2, Field2);
      }
      if (HasField3) {
        output.WriteInt64(3, Field3);
      }
      if (HasField4) {
        output.WriteInt64(4, Field4);
      }
      if (HasField6) {
        output.WriteString(6, Field6);
      }
      foreach (global::Google.ProtocolBuffers.ProtoBench.SpeedMessage3.Types.Group1 element in Group1List) {
        output.WriteGroup(10, element);
      }
      if (HasField21) {
        output.WriteInt32(21, Field21);
      }
      if (HasField25) {
        output.WriteFloat(25, Field25);
      }
      if (HasField30) {
        output.WriteInt64(30, Field30);
      }
      if (HasField63) {
        output.WriteInt32(63, Field63);
      }
      if (HasField71) {
        output.WriteInt32(71, Field71);
      }
      if (HasField75) {
        output.WriteBool(75, Field75);
      }
      if (HasField109) {
        output.WriteInt32(109, Field109);
      }
      if (field127_.Count > 0) {
        foreach (string element in field127_) {
          output.WriteString(127, element);
        }
      }
      if (field128_.Count > 0) {
        foreach (string element in field128_) {
          output.WriteString(128, element);
        }
      }
      if (HasField129) {
        output.WriteInt32(129, Field129);
      }
      if (field130_.Count > 0) {
        foreach (long element in field130_) {
          output.WriteInt64(130, element);
        }
      }
      if (HasField131) {
        output.WriteInt64(131, Field131);
      }
      if (HasField205) {
        output.WriteBool(205, Field205);
      }
      if (HasField206) {
        output.WriteBool(206, Field206);
      }
      if (HasField210) {
        output.WriteInt32(210, Field210);
      }
      if (HasField211) {
        output.WriteInt32(211, Field211);
      }
      if (HasField212) {
        output.WriteInt32(212, Field212);
      }
      if (HasField213) {
        output.WriteInt32(213, Field213);
      }
      if (HasField216) {
        output.WriteInt32(216, Field216);
      }
      if (HasField217) {
        output.WriteInt32(217, Field217);
      }
      if (HasField218) {
        output.WriteInt32(218, Field218);
      }
      if (HasField220) {
        output.WriteInt32(220, Field220);
      }
      if (HasField221) {
        output.WriteInt32(221, Field221);
      }
      if (HasField222) {
        output.WriteFloat(222, Field222);
      }
      UnknownFields.WriteTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public override int SerializedSize {
      get {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
        
        size = 0;
        if (HasField1) {
          size += pb::CodedOutputStream.ComputeStringSize(1, Field1);
        }
        if (HasField3) {
          size += pb::CodedOutputStream.ComputeInt64Size(3, Field3);
        }
        if (HasField4) {
          size += pb::CodedOutputStream.ComputeInt64Size(4, Field4);
        }
        if (HasField30) {
          size += pb::CodedOutputStream.ComputeInt64Size(30, Field30);
        }
        if (HasField75) {
          size += pb::CodedOutputStream.ComputeBoolSize(75, Field75);
        }
        if (HasField6) {
          size += pb::CodedOutputStream.ComputeStringSize(6, Field6);
        }
        if (HasField2) {
          size += pb::CodedOutputStream.ComputeBytesSize(2, Field2);
        }
        if (HasField21) {
          size += pb::CodedOutputStream.ComputeInt32Size(21, Field21);
        }
        if (HasField71) {
          size += pb::CodedOutputStream.ComputeInt32Size(71, Field71);
        }
        if (HasField25) {
          size += pb::CodedOutputStream.ComputeFloatSize(25, Field25);
        }
        if (HasField109) {
          size += pb::CodedOutputStream.ComputeInt32Size(109, Field109);
        }
        if (HasField210) {
          size += pb::CodedOutputStream.ComputeInt32Size(210, Field210);
        }
        if (HasField211) {
          size += pb::CodedOutputStream.ComputeInt32Size(211, Field211);
        }
        if (HasField212) {
          size += pb::CodedOutputStream.ComputeInt32Size(212, Field212);
        }
        if (HasField213) {
          size += pb::CodedOutputStream.ComputeInt32Size(213, Field213);
        }
        if (HasField216) {
          size += pb::CodedOutputStream.ComputeInt32Size(216, Field216);
        }
        if (HasField217) {
          size += pb::CodedOutputStream.ComputeInt32Size(217, Field217);
        }
        if (HasField218) {
          size += pb::CodedOutputStream.ComputeInt32Size(218, Field218);
        }
        if (HasField220) {
          size += pb::CodedOutputStream.ComputeInt32Size(220, Field220);
        }
        if (HasField221) {
          size += pb::CodedOutputStream.ComputeInt32Size(221, Field221);
        }
        if (HasField222) {
          size += pb::CodedOutputStream.ComputeFloatSize(222, Field222);
        }
        if (HasField63) {
          size += pb::CodedOutputStream.ComputeInt32Size(63, Field63);
        }
        foreach (global::Google.ProtocolBuffers.ProtoBench.SpeedMessage3.Types.Group1 element in Group1List) {
          size += pb::CodedOutputStream.ComputeGroupSize(10, element);
        }
        {
          int dataSize = 0;
          foreach (string element in Field128List) {
            dataSize += pb::CodedOutputStream.ComputeStringSizeNoTag(element);
          }
          size += dataSize;
          size += 2 * field128_.Count;
        }
        if (HasField131) {
          size += pb::CodedOutputStream.ComputeInt64Size(131, Field131);
        }
        {
          int dataSize = 0;
          foreach (string element in Field127List) {
            dataSize += pb::CodedOutputStream.ComputeStringSizeNoTag(element);
          }
          size += dataSize;
          size += 2 * field127_.Count;
        }
        if (HasField129) {
          size += pb::CodedOutputStream.ComputeInt32Size(129, Field129);
        }
        {
          int dataSize = 0;
          foreach (long element in Field130List) {
            dataSize += pb::CodedOutputStream.ComputeInt64SizeNoTag(element);
          }
          size += dataSize;
          size += 2 * field130_.Count;
        }
        if (HasField205) {
          size += pb::CodedOutputStream.ComputeBoolSize(205, Field205);
        }
        if (HasField206) {
          size += pb::CodedOutputStream.ComputeBoolSize(206, Field206);
        }
        size += UnknownFields.SerializedSize;
        memoizedSerializedSize = size;
        return size;
      }
    }
    
    public static SpeedMessage3 ParseFrom(pb::ByteString data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static SpeedMessage3 ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static SpeedMessage3 ParseFrom(byte[] data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static SpeedMessage3 ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static SpeedMessage3 ParseFrom(global::System.IO.Stream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static SpeedMessage3 ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static SpeedMessage3 ParseFrom(pb::CodedInputStream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static SpeedMessage3 ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static Builder CreateBuilder() { return new Builder(); }
    public override Builder ToBuilder() { return CreateBuilder(this); }
    public override Builder CreateBuilderForType() { return new Builder(); }
    public static Builder CreateBuilder(SpeedMessage3 prototype) {
      return (Builder) new Builder().MergeFrom(prototype);
    }
    
    public sealed partial class Builder : pb::GeneratedBuilder<SpeedMessage3, Builder> {
      protected override Builder ThisBuilder {
        get { return this; }
      }
      public Builder() {}
      
      SpeedMessage3 result = new SpeedMessage3();
      
      protected override SpeedMessage3 MessageBeingBuilt {
        get { return result; }
      }
      
      public override Builder Clear() {
        result = new SpeedMessage3();
        return this;
      }
      
      public override Builder Clone() {
        return new Builder().MergeFrom(result);
      }
      
      public override pbd::MessageDescriptor DescriptorForType {
        get { return SpeedMessage3.Descriptor; }
      }
      
      public override SpeedMessage3 DefaultInstanceForType {
        get { return SpeedMessage3.DefaultInstance; }
      }
      
      public override SpeedMessage3 BuildPartial() {
        result.group1_.MakeReadOnly();
        result.field128_.MakeReadOnly();
        result.field127_.MakeReadOnly();
        result.field130_.MakeReadOnly();
        SpeedMessage3 returnMe = result;
        result = null;
        return returnMe;
      }
      
      public override Builder MergeFrom(pb::IMessage other) {
        if (other is SpeedMessage3) {
          return MergeFrom((SpeedMessage3) other);
        } else {
          base.MergeFrom(other);
          return this;
        }
      }
      
      public override Builder MergeFrom(SpeedMessage3 other) {
        if (other == SpeedMessage3.DefaultInstance) return this;
        if (other.HasField1) {
          Field1 = other.Field1;
        }
        if (other.HasField3) {
          Field3 = other.Field3;
        }
        if (other.HasField4) {
          Field4 = other.Field4;
        }
        if (other.HasField30) {
          Field30 = other.Field30;
        }
        if (other.HasField75) {
          Field75 = other.Field75;
        }
        if (other.HasField6) {
          Field6 = other.Field6;
        }
        if (other.HasField2) {
          Field2 = other.Field2;
        }
        if (other.HasField21) {
          Field21 = other.Field21;
        }
        if (other.HasField71) {
          Field71 = other.Field71;
        }
        if (other.HasField25) {
          Field25 = other.Field25;
        }
        if (other.HasField109) {
          Field109 = other.Field109;
        }
        if (other.HasField210) {
          Field210 = other.Field210;
        }
        if (other.HasField211) {
          Field211 = other.Field211;
        }
        if (other.HasField212) {
          Field212 = other.Field212;
        }
        if (other.HasField213) {
          Field213 = other.Field213;
        }
        if (other.HasField216) {
          Field216 = other.Field216;
        }
        if (other.HasField217) {
          Field217 = other.Field217;
        }
        if (other.HasField218) {
          Field218 = other.Field218;
        }
        if (other.HasField220) {
          Field220 = other.Field220;
        }
        if (other.HasField221) {
          Field221 = other.Field221;
        }
        if (other.HasField222) {
          Field222 = other.Field222;
        }
        if (other.HasField63) {
          Field63 = other.Field63;
        }
        if (other.group1_.Count != 0) {
          base.AddRange(other.group1_, result.group1_);
        }
        if (other.field128_.Count != 0) {
          base.AddRange(other.field128_, result.field128_);
        }
        if (other.HasField131) {
          Field131 = other.Field131;
        }
        if (other.field127_.Count != 0) {
          base.AddRange(other.field127_, result.field127_);
        }
        if (other.HasField129) {
          Field129 = other.Field129;
        }
        if (other.field130_.Count != 0) {
          base.AddRange(other.field130_, result.field130_);
        }
        if (other.HasField205) {
          Field205 = other.Field205;
        }
        if (other.HasField206) {
          Field206 = other.Field206;
        }
        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: {
              Field1 = input.ReadString();
              break;
            }
            case 18: {
              Field2 = input.ReadBytes();
              break;
            }
            case 24: {
              Field3 = input.ReadInt64();
              break;
            }
            case 32: {
              Field4 = input.ReadInt64();
              break;
            }
            case 50: {
              Field6 = input.ReadString();
              break;
            }
            case 83: {
              global::Google.ProtocolBuffers.ProtoBench.SpeedMessage3.Types.Group1.Builder subBuilder = global::Google.ProtocolBuffers.ProtoBench.SpeedMessage3.Types.Group1.CreateBuilder();
              input.ReadGroup(10, subBuilder, extensionRegistry);
              AddGroup1(subBuilder.BuildPartial());
              break;
            }
            case 168: {
              Field21 = input.ReadInt32();
              break;
            }
            case 205: {
              Field25 = input.ReadFloat();
              break;
            }
            case 240: {
              Field30 = input.ReadInt64();
              break;
            }
            case 504: {
              Field63 = input.ReadInt32();
              break;
            }
            case 568: {
              Field71 = input.ReadInt32();
              break;
            }
            case 600: {
              Field75 = input.ReadBool();
              break;
            }
            case 872: {
              Field109 = input.ReadInt32();
              break;
            }
            case 1018: {
              AddField127(input.ReadString());
              break;
            }
            case 1026: {
              AddField128(input.ReadString());
              break;
            }
            case 1032: {
              Field129 = input.ReadInt32();
              break;
            }
            case 1040: {
              AddField130(input.ReadInt64());
              break;
            }
            case 1048: {
              Field131 = input.ReadInt64();
              break;
            }
            case 1640: {
              Field205 = input.ReadBool();
              break;
            }
            case 1648: {
              Field206 = input.ReadBool();
              break;
            }
            case 1680: {
              Field210 = input.ReadInt32();
              break;
            }
            case 1688: {
              Field211 = input.ReadInt32();
              break;
            }
            case 1696: {
              Field212 = input.ReadInt32();
              break;
            }
            case 1704: {
              Field213 = input.ReadInt32();
              break;
            }
            case 1728: {
              Field216 = input.ReadInt32();
              break;
            }
            case 1736: {
              Field217 = input.ReadInt32();
              break;
            }
            case 1744: {
              Field218 = input.ReadInt32();
              break;
            }
            case 1760: {
              Field220 = input.ReadInt32();
              break;
            }
            case 1768: {
              Field221 = input.ReadInt32();
              break;
            }
            case 1781: {
              Field222 = input.ReadFloat();
              break;
            }
          }
        }
      }
      
      
      public bool HasField1 {
        get { return result.HasField1; }
      }
      public string Field1 {
        get { return result.Field1; }
        set { SetField1(value); }
      }
      public Builder SetField1(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasField1 = true;
        result.field1_ = value;
        return this;
      }
      public Builder ClearField1() {
        result.hasField1 = false;
        result.field1_ = "";
        return this;
      }
      
      public bool HasField3 {
        get { return result.HasField3; }
      }
      public long Field3 {
        get { return result.Field3; }
        set { SetField3(value); }
      }
      public Builder SetField3(long value) {
        result.hasField3 = true;
        result.field3_ = value;
        return this;
      }
      public Builder ClearField3() {
        result.hasField3 = false;
        result.field3_ = 0L;
        return this;
      }
      
      public bool HasField4 {
        get { return result.HasField4; }
      }
      public long Field4 {
        get { return result.Field4; }
        set { SetField4(value); }
      }
      public Builder SetField4(long value) {
        result.hasField4 = true;
        result.field4_ = value;
        return this;
      }
      public Builder ClearField4() {
        result.hasField4 = false;
        result.field4_ = 0L;
        return this;
      }
      
      public bool HasField30 {
        get { return result.HasField30; }
      }
      public long Field30 {
        get { return result.Field30; }
        set { SetField30(value); }
      }
      public Builder SetField30(long value) {
        result.hasField30 = true;
        result.field30_ = value;
        return this;
      }
      public Builder ClearField30() {
        result.hasField30 = false;
        result.field30_ = 0L;
        return this;
      }
      
      public bool HasField75 {
        get { return result.HasField75; }
      }
      public bool Field75 {
        get { return result.Field75; }
        set { SetField75(value); }
      }
      public Builder SetField75(bool value) {
        result.hasField75 = true;
        result.field75_ = value;
        return this;
      }
      public Builder ClearField75() {
        result.hasField75 = false;
        result.field75_ = false;
        return this;
      }
      
      public bool HasField6 {
        get { return result.HasField6; }
      }
      public string Field6 {
        get { return result.Field6; }
        set { SetField6(value); }
      }
      public Builder SetField6(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasField6 = true;
        result.field6_ = value;
        return this;
      }
      public Builder ClearField6() {
        result.hasField6 = false;
        result.field6_ = "";
        return this;
      }
      
      public bool HasField2 {
        get { return result.HasField2; }
      }
      public pb::ByteString Field2 {
        get { return result.Field2; }
        set { SetField2(value); }
      }
      public Builder SetField2(pb::ByteString value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.hasField2 = true;
        result.field2_ = value;
        return this;
      }
      public Builder ClearField2() {
        result.hasField2 = false;
        result.field2_ = pb::ByteString.Empty;
        return this;
      }
      
      public bool HasField21 {
        get { return result.HasField21; }
      }
      public int Field21 {
        get { return result.Field21; }
        set { SetField21(value); }
      }
      public Builder SetField21(int value) {
        result.hasField21 = true;
        result.field21_ = value;
        return this;
      }
      public Builder ClearField21() {
        result.hasField21 = false;
        result.field21_ = 0;
        return this;
      }
      
      public bool HasField71 {
        get { return result.HasField71; }
      }
      public int Field71 {
        get { return result.Field71; }
        set { SetField71(value); }
      }
      public Builder SetField71(int value) {
        result.hasField71 = true;
        result.field71_ = value;
        return this;
      }
      public Builder ClearField71() {
        result.hasField71 = false;
        result.field71_ = 0;
        return this;
      }
      
      public bool HasField25 {
        get { return result.HasField25; }
      }
      public float Field25 {
        get { return result.Field25; }
        set { SetField25(value); }
      }
      public Builder SetField25(float value) {
        result.hasField25 = true;
        result.field25_ = value;
        return this;
      }
      public Builder ClearField25() {
        result.hasField25 = false;
        result.field25_ = 0F;
        return this;
      }
      
      public bool HasField109 {
        get { return result.HasField109; }
      }
      public int Field109 {
        get { return result.Field109; }
        set { SetField109(value); }
      }
      public Builder SetField109(int value) {
        result.hasField109 = true;
        result.field109_ = value;
        return this;
      }
      public Builder ClearField109() {
        result.hasField109 = false;
        result.field109_ = 0;
        return this;
      }
      
      public bool HasField210 {
        get { return result.HasField210; }
      }
      public int Field210 {
        get { return result.Field210; }
        set { SetField210(value); }
      }
      public Builder SetField210(int value) {
        result.hasField210 = true;
        result.field210_ = value;
        return this;
      }
      public Builder ClearField210() {
        result.hasField210 = false;
        result.field210_ = 0;
        return this;
      }
      
      public bool HasField211 {
        get { return result.HasField211; }
      }
      public int Field211 {
        get { return result.Field211; }
        set { SetField211(value); }
      }
      public Builder SetField211(int value) {
        result.hasField211 = true;
        result.field211_ = value;
        return this;
      }
      public Builder ClearField211() {
        result.hasField211 = false;
        result.field211_ = 0;
        return this;
      }
      
      public bool HasField212 {
        get { return result.HasField212; }
      }
      public int Field212 {
        get { return result.Field212; }
        set { SetField212(value); }
      }
      public Builder SetField212(int value) {
        result.hasField212 = true;
        result.field212_ = value;
        return this;
      }
      public Builder ClearField212() {
        result.hasField212 = false;
        result.field212_ = 0;
        return this;
      }
      
      public bool HasField213 {
        get { return result.HasField213; }
      }
      public int Field213 {
        get { return result.Field213; }
        set { SetField213(value); }
      }
      public Builder SetField213(int value) {
        result.hasField213 = true;
        result.field213_ = value;
        return this;
      }
      public Builder ClearField213() {
        result.hasField213 = false;
        result.field213_ = 0;
        return this;
      }
      
      public bool HasField216 {
        get { return result.HasField216; }
      }
      public int Field216 {
        get { return result.Field216; }
        set { SetField216(value); }
      }
      public Builder SetField216(int value) {
        result.hasField216 = true;
        result.field216_ = value;
        return this;
      }
      public Builder ClearField216() {
        result.hasField216 = false;
        result.field216_ = 0;
        return this;
      }
      
      public bool HasField217 {
        get { return result.HasField217; }
      }
      public int Field217 {
        get { return result.Field217; }
        set { SetField217(value); }
      }
      public Builder SetField217(int value) {
        result.hasField217 = true;
        result.field217_ = value;
        return this;
      }
      public Builder ClearField217() {
        result.hasField217 = false;
        result.field217_ = 0;
        return this;
      }
      
      public bool HasField218 {
        get { return result.HasField218; }
      }
      public int Field218 {
        get { return result.Field218; }
        set { SetField218(value); }
      }
      public Builder SetField218(int value) {
        result.hasField218 = true;
        result.field218_ = value;
        return this;
      }
      public Builder ClearField218() {
        result.hasField218 = false;
        result.field218_ = 0;
        return this;
      }
      
      public bool HasField220 {
        get { return result.HasField220; }
      }
      public int Field220 {
        get { return result.Field220; }
        set { SetField220(value); }
      }
      public Builder SetField220(int value) {
        result.hasField220 = true;
        result.field220_ = value;
        return this;
      }
      public Builder ClearField220() {
        result.hasField220 = false;
        result.field220_ = 0;
        return this;
      }
      
      public bool HasField221 {
        get { return result.HasField221; }
      }
      public int Field221 {
        get { return result.Field221; }
        set { SetField221(value); }
      }
      public Builder SetField221(int value) {
        result.hasField221 = true;
        result.field221_ = value;
        return this;
      }
      public Builder ClearField221() {
        result.hasField221 = false;
        result.field221_ = 0;
        return this;
      }
      
      public bool HasField222 {
        get { return result.HasField222; }
      }
      public float Field222 {
        get { return result.Field222; }
        set { SetField222(value); }
      }
      public Builder SetField222(float value) {
        result.hasField222 = true;
        result.field222_ = value;
        return this;
      }
      public Builder ClearField222() {
        result.hasField222 = false;
        result.field222_ = 0F;
        return this;
      }
      
      public bool HasField63 {
        get { return result.HasField63; }
      }
      public int Field63 {
        get { return result.Field63; }
        set { SetField63(value); }
      }
      public Builder SetField63(int value) {
        result.hasField63 = true;
        result.field63_ = value;
        return this;
      }
      public Builder ClearField63() {
        result.hasField63 = false;
        result.field63_ = 0;
        return this;
      }
      
      public scg::IList<global::Google.ProtocolBuffers.ProtoBench.SpeedMessage3.Types.Group1> Group1List {
        get { return result.group1_; }
      }
      public int Group1Count {
        get { return result.Group1Count; }
      }
      public global::Google.ProtocolBuffers.ProtoBench.SpeedMessage3.Types.Group1 GetGroup1(int index) {
        return result.GetGroup1(index);
      }
      public Builder SetGroup1(int index, global::Google.ProtocolBuffers.ProtoBench.SpeedMessage3.Types.Group1 value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.group1_[index] = value;
        return this;
      }
      public Builder SetGroup1(int index, global::Google.ProtocolBuffers.ProtoBench.SpeedMessage3.Types.Group1.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.group1_[index] = builderForValue.Build();
        return this;
      }
      public Builder AddGroup1(global::Google.ProtocolBuffers.ProtoBench.SpeedMessage3.Types.Group1 value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.group1_.Add(value);
        return this;
      }
      public Builder AddGroup1(global::Google.ProtocolBuffers.ProtoBench.SpeedMessage3.Types.Group1.Builder builderForValue) {
        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
        result.group1_.Add(builderForValue.Build());
        return this;
      }
      public Builder AddRangeGroup1(scg::IEnumerable<global::Google.ProtocolBuffers.ProtoBench.SpeedMessage3.Types.Group1> values) {
        base.AddRange(values, result.group1_);
        return this;
      }
      public Builder ClearGroup1() {
        result.group1_.Clear();
        return this;
      }
      
      public scg::IList<string> Field128List {
        get { return result.field128_; }
      }
      public int Field128Count {
        get { return result.Field128Count; }
      }
      public string GetField128(int index) {
        return result.GetField128(index);
      }
      public Builder SetField128(int index, string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.field128_[index] = value;
        return this;
      }
      public Builder AddField128(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.field128_.Add(value);
        return this;
      }
      public Builder AddRangeField128(scg::IEnumerable<string> values) {
        base.AddRange(values, result.field128_);
        return this;
      }
      public Builder ClearField128() {
        result.field128_.Clear();
        return this;
      }
      
      public bool HasField131 {
        get { return result.HasField131; }
      }
      public long Field131 {
        get { return result.Field131; }
        set { SetField131(value); }
      }
      public Builder SetField131(long value) {
        result.hasField131 = true;
        result.field131_ = value;
        return this;
      }
      public Builder ClearField131() {
        result.hasField131 = false;
        result.field131_ = 0L;
        return this;
      }
      
      public scg::IList<string> Field127List {
        get { return result.field127_; }
      }
      public int Field127Count {
        get { return result.Field127Count; }
      }
      public string GetField127(int index) {
        return result.GetField127(index);
      }
      public Builder SetField127(int index, string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.field127_[index] = value;
        return this;
      }
      public Builder AddField127(string value) {
        pb::ThrowHelper.ThrowIfNull(value, "value");
        result.field127_.Add(value);
        return this;
      }
      public Builder AddRangeField127(scg::IEnumerable<string> values) {
        base.AddRange(values, result.field127_);
        return this;
      }
      public Builder ClearField127() {
        result.field127_.Clear();
        return this;
      }
      
      public bool HasField129 {
        get { return result.HasField129; }
      }
      public int Field129 {
        get { return result.Field129; }
        set { SetField129(value); }
      }
      public Builder SetField129(int value) {
        result.hasField129 = true;
        result.field129_ = value;
        return this;
      }
      public Builder ClearField129() {
        result.hasField129 = false;
        result.field129_ = 0;
        return this;
      }
      
      public scg::IList<long> Field130List {
        get { return result.field130_; }
      }
      public int Field130Count {
        get { return result.Field130Count; }
      }
      public long GetField130(int index) {
        return result.GetField130(index);
      }
      public Builder SetField130(int index, long value) {
        result.field130_[index] = value;
        return this;
      }
      public Builder AddField130(long value) {
        result.field130_.Add(value);
        return this;
      }
      public Builder AddRangeField130(scg::IEnumerable<long> values) {
        base.AddRange(values, result.field130_);
        return this;
      }
      public Builder ClearField130() {
        result.field130_.Clear();
        return this;
      }
      
      public bool HasField205 {
        get { return result.HasField205; }
      }
      public bool Field205 {
        get { return result.Field205; }
        set { SetField205(value); }
      }
      public Builder SetField205(bool value) {
        result.hasField205 = true;
        result.field205_ = value;
        return this;
      }
      public Builder ClearField205() {
        result.hasField205 = false;
        result.field205_ = false;
        return this;
      }
      
      public bool HasField206 {
        get { return result.HasField206; }
      }
      public bool Field206 {
        get { return result.Field206; }
        set { SetField206(value); }
      }
      public Builder SetField206(bool value) {
        result.hasField206 = true;
        result.field206_ = value;
        return this;
      }
      public Builder ClearField206() {
        result.hasField206 = false;
        result.field206_ = false;
        return this;
      }
    }
  }
  
  public sealed partial class SpeedMessage4 : pb::GeneratedMessage<SpeedMessage4, SpeedMessage4.Builder> {
    private static readonly SpeedMessage4 defaultInstance = new Builder().BuildPartial();
    public static SpeedMessage4 DefaultInstance {
      get { return defaultInstance; }
    }
    
    public override SpeedMessage4 DefaultInstanceForType {
      get { return defaultInstance; }
    }
    
    protected override SpeedMessage4 ThisMessage {
      get { return this; }
    }
    
    public static pbd::MessageDescriptor Descriptor {
      get { return global::Google.ProtocolBuffers.ProtoBench.BenchmarkSpeedProtoFile.internal__static_proto2_benchmark_v2_api_SpeedMessage4__Descriptor; }
    }
    
    protected override pb::FieldAccess.FieldAccessorTable<SpeedMessage4, SpeedMessage4.Builder> InternalFieldAccessors {
      get { return global::Google.ProtocolBuffers.ProtoBench.BenchmarkSpeedProtoFile.internal__static_proto2_benchmark_v2_api_SpeedMessage4__FieldAccessorTable; }
    }
    
    private bool hasField1;
    private float field1_ = 0F;
    public bool HasField1 {
      get { return hasField1; }
    }
    public float Field1 {
      get { return field1_; }
    }
    
    private bool hasField2;
    private float field2_ = 0F;
    public bool HasField2 {
      get { return hasField2; }
    }
    public float Field2 {
      get { return field2_; }
    }
    
    private bool hasField3;
    private float field3_ = 0F;
    public bool HasField3 {
      get { return hasField3; }
    }
    public float Field3 {
      get { return field3_; }
    }
    
    private bool hasField4;
    private bool field4_ = false;
    public bool HasField4 {
      get { return hasField4; }
    }
    public bool Field4 {
      get { return field4_; }
    }
    
    private bool hasField5;
    private bool field5_ = false;
    public bool HasField5 {
      get { return hasField5; }
    }
    public bool Field5 {
      get { return field5_; }
    }
    
    private bool hasField6;
    private bool field6_ = true;
    public bool HasField6 {
      get { return hasField6; }
    }
    public bool Field6 {
      get { return field6_; }
    }
    
    private bool hasField7;
    private bool field7_ = false;
    public bool HasField7 {
      get { return hasField7; }
    }
    public bool Field7 {
      get { return field7_; }
    }
    
    private bool hasField8;
    private float field8_ = 0F;
    public bool HasField8 {
      get { return hasField8; }
    }
    public float Field8 {
      get { return field8_; }
    }
    
    private bool hasField9;
    private bool field9_ = false;
    public bool HasField9 {
      get { return hasField9; }
    }
    public bool Field9 {
      get { return field9_; }
    }
    
    private bool hasField10;
    private float field10_ = 0F;
    public bool HasField10 {
      get { return hasField10; }
    }
    public float Field10 {
      get { return field10_; }
    }
    
    private bool hasField11;
    private long field11_ = 0L;
    public bool HasField11 {
      get { return hasField11; }
    }
    public long Field11 {
      get { return field11_; }
    }
    
    public override bool IsInitialized {
      get {
        return true;
      }
    }
    
    public override void WriteTo(pb::CodedOutputStream output) {
      if (HasField1) {
        output.WriteFloat(1, Field1);
      }
      if (HasField2) {
        output.WriteFloat(2, Field2);
      }
      if (HasField3) {
        output.WriteFloat(3, Field3);
      }
      if (HasField4) {
        output.WriteBool(4, Field4);
      }
      if (HasField5) {
        output.WriteBool(5, Field5);
      }
      if (HasField6) {
        output.WriteBool(6, Field6);
      }
      if (HasField7) {
        output.WriteBool(7, Field7);
      }
      if (HasField8) {
        output.WriteFloat(8, Field8);
      }
      if (HasField9) {
        output.WriteBool(9, Field9);
      }
      if (HasField10) {
        output.WriteFloat(10, Field10);
      }
      if (HasField11) {
        output.WriteInt64(11, Field11);
      }
      UnknownFields.WriteTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public override int SerializedSize {
      get {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
        
        size = 0;
        if (HasField1) {
          size += pb::CodedOutputStream.ComputeFloatSize(1, Field1);
        }
        if (HasField2) {
          size += pb::CodedOutputStream.ComputeFloatSize(2, Field2);
        }
        if (HasField3) {
          size += pb::CodedOutputStream.ComputeFloatSize(3, Field3);
        }
        if (HasField4) {
          size += pb::CodedOutputStream.ComputeBoolSize(4, Field4);
        }
        if (HasField5) {
          size += pb::CodedOutputStream.ComputeBoolSize(5, Field5);
        }
        if (HasField6) {
          size += pb::CodedOutputStream.ComputeBoolSize(6, Field6);
        }
        if (HasField7) {
          size += pb::CodedOutputStream.ComputeBoolSize(7, Field7);
        }
        if (HasField8) {
          size += pb::CodedOutputStream.ComputeFloatSize(8, Field8);
        }
        if (HasField9) {
          size += pb::CodedOutputStream.ComputeBoolSize(9, Field9);
        }
        if (HasField10) {
          size += pb::CodedOutputStream.ComputeFloatSize(10, Field10);
        }
        if (HasField11) {
          size += pb::CodedOutputStream.ComputeInt64Size(11, Field11);
        }
        size += UnknownFields.SerializedSize;
        memoizedSerializedSize = size;
        return size;
      }
    }
    
    public static SpeedMessage4 ParseFrom(pb::ByteString data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static SpeedMessage4 ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static SpeedMessage4 ParseFrom(byte[] data) {
      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
    }
    public static SpeedMessage4 ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
    }
    public static SpeedMessage4 ParseFrom(global::System.IO.Stream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static SpeedMessage4 ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static SpeedMessage4 ParseFrom(pb::CodedInputStream input) {
      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
    }
    public static SpeedMessage4 ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
    }
    public static Builder CreateBuilder() { return new Builder(); }
    public override Builder ToBuilder() { return CreateBuilder(this); }
    public override Builder CreateBuilderForType() { return new Builder(); }
    public static Builder CreateBuilder(SpeedMessage4 prototype) {
      return (Builder) new Builder().MergeFrom(prototype);
    }
    
    public sealed partial class Builder : pb::GeneratedBuilder<SpeedMessage4, Builder> {
      protected override Builder ThisBuilder {
        get { return this; }
      }
      public Builder() {}
      
      SpeedMessage4 result = new SpeedMessage4();
      
      protected override SpeedMessage4 MessageBeingBuilt {
        get { return result; }
      }
      
      public override Builder Clear() {
        result = new SpeedMessage4();
        return this;
      }
      
      public override Builder Clone() {
        return new Builder().MergeFrom(result);
      }
      
      public override pbd::MessageDescriptor DescriptorForType {
        get { return SpeedMessage4.Descriptor; }
      }
      
      public override SpeedMessage4 DefaultInstanceForType {
        get { return SpeedMessage4.DefaultInstance; }
      }
      
      public override SpeedMessage4 BuildPartial() {
        SpeedMessage4 returnMe = result;
        result = null;
        return returnMe;
      }
      
      public override Builder MergeFrom(pb::IMessage other) {
        if (other is SpeedMessage4) {
          return MergeFrom((SpeedMessage4) other);
        } else {
          base.MergeFrom(other);
          return this;
        }
      }
      
      public override Builder MergeFrom(SpeedMessage4 other) {
        if (other == SpeedMessage4.DefaultInstance) return this;
        if (other.HasField1) {
          Field1 = other.Field1;
        }
        if (other.HasField2) {
          Field2 = other.Field2;
        }
        if (other.HasField3) {
          Field3 = other.Field3;
        }
        if (other.HasField4) {
          Field4 = other.Field4;
        }
        if (other.HasField5) {
          Field5 = other.Field5;
        }
        if (other.HasField6) {
          Field6 = other.Field6;
        }
        if (other.HasField7) {
          Field7 = other.Field7;
        }
        if (other.HasField8) {
          Field8 = other.Field8;
        }
        if (other.HasField9) {
          Field9 = other.Field9;
        }
        if (other.HasField10) {
          Field10 = other.Field10;
        }
        if (other.HasField11) {
          Field11 = other.Field11;
        }
        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 13: {
              Field1 = input.ReadFloat();
              break;
            }
            case 21: {
              Field2 = input.ReadFloat();
              break;
            }
            case 29: {
              Field3 = input.ReadFloat();
              break;
            }
            case 32: {
              Field4 = input.ReadBool();
              break;
            }
            case 40: {
              Field5 = input.ReadBool();
              break;
            }
            case 48: {
              Field6 = input.ReadBool();
              break;
            }
            case 56: {
              Field7 = input.ReadBool();
              break;
            }
            case 69: {
              Field8 = input.ReadFloat();
              break;
            }
            case 72: {
              Field9 = input.ReadBool();
              break;
            }
            case 85: {
              Field10 = input.ReadFloat();
              break;
            }
            case 88: {
              Field11 = input.ReadInt64();
              break;
            }
          }
        }
      }
      
      
      public bool HasField1 {
        get { return result.HasField1; }
      }
      public float Field1 {
        get { return result.Field1; }
        set { SetField1(value); }
      }
      public Builder SetField1(float value) {
        result.hasField1 = true;
        result.field1_ = value;
        return this;
      }
      public Builder ClearField1() {
        result.hasField1 = false;
        result.field1_ = 0F;
        return this;
      }
      
      public bool HasField2 {
        get { return result.HasField2; }
      }
      public float Field2 {
        get { return result.Field2; }
        set { SetField2(value); }
      }
      public Builder SetField2(float value) {
        result.hasField2 = true;
        result.field2_ = value;
        return this;
      }
      public Builder ClearField2() {
        result.hasField2 = false;
        result.field2_ = 0F;
        return this;
      }
      
      public bool HasField3 {
        get { return result.HasField3; }
      }
      public float Field3 {
        get { return result.Field3; }
        set { SetField3(value); }
      }
      public Builder SetField3(float value) {
        result.hasField3 = true;
        result.field3_ = value;
        return this;
      }
      public Builder ClearField3() {
        result.hasField3 = false;
        result.field3_ = 0F;
        return this;
      }
      
      public bool HasField4 {
        get { return result.HasField4; }
      }
      public bool Field4 {
        get { return result.Field4; }
        set { SetField4(value); }
      }
      public Builder SetField4(bool value) {
        result.hasField4 = true;
        result.field4_ = value;
        return this;
      }
      public Builder ClearField4() {
        result.hasField4 = false;
        result.field4_ = false;
        return this;
      }
      
      public bool HasField5 {
        get { return result.HasField5; }
      }
      public bool Field5 {
        get { return result.Field5; }
        set { SetField5(value); }
      }
      public Builder SetField5(bool value) {
        result.hasField5 = true;
        result.field5_ = value;
        return this;
      }
      public Builder ClearField5() {
        result.hasField5 = false;
        result.field5_ = false;
        return this;
      }
      
      public bool HasField6 {
        get { return result.HasField6; }
      }
      public bool Field6 {
        get { return result.Field6; }
        set { SetField6(value); }
      }
      public Builder SetField6(bool value) {
        result.hasField6 = true;
        result.field6_ = value;
        return this;
      }
      public Builder ClearField6() {
        result.hasField6 = false;
        result.field6_ = true;
        return this;
      }
      
      public bool HasField7 {
        get { return result.HasField7; }
      }
      public bool Field7 {
        get { return result.Field7; }
        set { SetField7(value); }
      }
      public Builder SetField7(bool value) {
        result.hasField7 = true;
        result.field7_ = value;
        return this;
      }
      public Builder ClearField7() {
        result.hasField7 = false;
        result.field7_ = false;
        return this;
      }
      
      public bool HasField8 {
        get { return result.HasField8; }
      }
      public float Field8 {
        get { return result.Field8; }
        set { SetField8(value); }
      }
      public Builder SetField8(float value) {
        result.hasField8 = true;
        result.field8_ = value;
        return this;
      }
      public Builder ClearField8() {
        result.hasField8 = false;
        result.field8_ = 0F;
        return this;
      }
      
      public bool HasField9 {
        get { return result.HasField9; }
      }
      public bool Field9 {
        get { return result.Field9; }
        set { SetField9(value); }
      }
      public Builder SetField9(bool value) {
        result.hasField9 = true;
        result.field9_ = value;
        return this;
      }
      public Builder ClearField9() {
        result.hasField9 = false;
        result.field9_ = false;
        return this;
      }
      
      public bool HasField10 {
        get { return result.HasField10; }
      }
      public float Field10 {
        get { return result.Field10; }
        set { SetField10(value); }
      }
      public Builder SetField10(float value) {
        result.hasField10 = true;
        result.field10_ = value;
        return this;
      }
      public Builder ClearField10() {
        result.hasField10 = false;
        result.field10_ = 0F;
        return this;
      }
      
      public bool HasField11 {
        get { return result.HasField11; }
      }
      public long Field11 {
        get { return result.Field11; }
        set { SetField11(value); }
      }
      public Builder SetField11(long value) {
        result.hasField11 = true;
        result.field11_ = value;
        return this;
      }
      public Builder ClearField11() {
        result.hasField11 = false;
        result.field11_ = 0L;
        return this;
      }
    }
  }
  
  #endregion
  
}