aboutsummaryrefslogblamecommitdiff
path: root/csharp/src/Google.Protobuf/Reflection/DescriptorProtoFile.cs
blob: f9158cab7ad58e7ea94577ec07b3639c1a7c9200 (plain) (tree)
1
2
3
4
5
6
7
8
9
                                                           
                                           


                                        

                                                
                                               
                                               
                                      

                                                             
                                                     
 
                      
                                                  

                                
                                                  



                                                                      




























































































                                                                            
                                                                            
















                                                                             
                                                                                     
                                        










                                                                                                                                                                                                                                                                                                                                                                                                                                                 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                








                                                                                                                                                                                                                                                                                                                                                                                                                                                 





                                                             
                                                                                     

                                                                                                                                                   
 
                                                     
                                                                                                       

     

                                                    

     




                                  
 
                                                                




                                         
     
 
                                         


                                                                                                                                                                                         
                                                                                            

                           


                                                

     




                                                 

                    

                                                  

     
                                       
                   

                                  

     



                                                    
                                                       
                                                  

     

                                
                                                        

                  
 


                                                    
       

                             
 
                                                       
               
                                            
                     
                  
                                  

                    
                                                              
                  

           

       
 


                                                             
                                                                                         

                                                                                                                                                         
 
                                                     
                                                                                                       

     

                                                    

     




                                  
 
                                                                    











                                                                                           
     




                                           
                                         
                              
                        
                           
           
                                                               
       


                                            
                                 
                           
                              
           
                                                                  
       


                                               

                                                                             
                                                                                               
                                                  
                                 


                                                      

                                                                                
                                                                                               
                                                     
                                       


                                                    

                                                                              
                                                                                             
                                                   
                                     


                                                


                                                                                                                                                                                        
                                                                                               

                                  

                                             


                                                                                                                                                                                             
                                                                                                

                               

                                            


                                                                                                                                                                                                  
                                                                                                  

                              

                                              


                                                                                                                                                                                                
                                                                                                  

                                

                                            
                                                                    
                                                                   
                              
           

                         


                                                   
                                                                              
                                                                             
                                     
           

                                


                                            
                                
                          
                             
           
                                                                 
       

     

                                                  

     


                                                   
       











                                                                          


                                                                             



                                       
                   

                                                             








                                                                        
                                                           


                  



                                                    
                                                       
                             

                                 
       
                                

                                    
       




                                                                
                             

                                     

                                    

                                            
       

                                                                          
                               

                                   




                                
                             
                                                                  
       
                                
                                                                     
       






                                                                                
                             
                                                                      
       
                                    
                                                                             
       
                               
                                                                    
       

                  
 



                                                      
                                   

                          
                                      










                                                     
                                                                          




                                          
                                                                                    


                                                       
                                     

                              
     
 
                                                       
               
                                            
                     
                  
                                  

                    
                                      


                    
                                         


                    
                                                                          


                    
                                                                            


                    
                                                                      


                    
                                                                    


                    
                                                                        



                                   
                                                                              





                                          
                                                                                        





                                               
                                                                                      



                    
                                                                                  


                    
                                        



                  
     



                                                             
                                                                                 


                                                                                                                                             
                                                     
                                                                                                       
     
 

                                                    
     
 




                                  
 
                                                            













                                                                      
     
 

                                         
                        
                           
           
                                                               
       
     
 
                                          


                                                                                                                                                                                            
                                                                                              
                            
     

                                              


                                                                                                                                                                                                
                                                                                                  
                                
     

                                               


                                                                                                                                                                                       
                                                                                              
                                 
     

                                             


                                                                                                                                                                                             
                                                                                                
                               
     

                                                   


                                                                                                                                                                                                                                     
                                                                                                                       
                                     

     
                                              


                                                                                                                                                                                                
                                                                                                  
                                

     
                                            
                                                                       
                                                                      
                              
           

                         


                                                  


                                                                                                                                                                                                                                  
                                                                                                                     



                                                  

                                                                               
                                                                                                 
                                                    









                                               
       

                                         
       






                                                                      

                                                                    




                                                                  
                   
                                                       











                                                          



                                                    
                                                       
                             

                                 
       




                                                                      
                             

                                     
       


                                                                    



                                
                             
                                                                  
       





                                                                            
                             
                                                                      
       

                                                                          

                  
 



                                                  
                                   









                                                 
                                                                             
         
                                         
       


                                               
 
                                                       
               
                                            
                     
                  
                                  

                    
                                      


                    
                                                                


                    
                                                                          


                    
                                                                      
                  
           
                    
                                                                                  


                    
                                                                        



                                   
                                                                                 
             



                                        
                                                                        


                    
                                                                                


                    
                                                                              
                  

           
       





                                                                 
                                                                                   

                                                                                                                                              
 
                                                         
                                                                                                      

         

                                                        

         




                                      
 
                                                              





                                          
         
 
                                              
                           
                          
                                
               

                           


                                            
                         
                        
                              
               

                         

         

                                                   

         


                                                  
           

                                             
           


                                                 

         
                                           
                       


                                                      

         



                                                        
                                                           
                           

                                     

                         

                                   

           
 


                                    
                                                                      
           
                         
                                                                    
           

                      
 


                                                     
           

                                 
           

                               
           
         
 
                                                           
                   
                                                
                         
                      
                                      

                       
                                          
                      
               
                        
                                        
                      

               

           
 

       
                                                                 
                                                                                 

                                                                                                                                           
 
                                                         
                                                                                                      

         

                                                        

         


                                
 


                                                            

                                
         




                                         
                                              
                           
                          
                                
               

                           


                                            
                         
                        
                              
               

                         

         

                                                   

         


                                                 
           

                                             
           


                                                 

         
                                           
                       


                                                      

         



                                                        
                                                           
                           

                                     

                         

                                   

           
 


                                    
                                                                      
           
                         
                                                                    
           

                      
 


                                                    
           

                                 
           

                               
           
         
 
                                                           
                   
                                                
                         
                      
                                      

                       
                                          
                      
               
                        
                                        
                      

               

           
 

       


              


                                                             
                                                                                           


                                                                                                                                                            
                                                     
                                                                                                       

     

                                                    

     




                                   
 
                                                                      








                                                                      
     




                                            
                                         
                              
                        
                           
           
                                                               
       

     

                                           
                       
                             
           

                        
     
 
                                          
                                                                                                                                                                            
                                                                                      
                            
           

                       

     
                                         
                                                                                                                                                                      
                                                                                    
                           
           

                      

     

                                             
                            
                               
           
                                                                   
       

     

                                             
                            
                               
           
                                                                   
       
     
 

                                                 
                                
                                   
           
                                                                       
       

     

                                               
                           
                                 
           

                            
     
 
                                            
                                                                     
                                                                    
                              
           

                         
     


                                                   

     




                                                    

                    







                                                           

                                                               

     
                                       
                   
                                                       
                                                    

                                                                                                                                   


                                                                       




                                                            



                                                    
                                                       
                             

                                 
       
                                 

                                     
       
                        

                                  
       
                                                                                                        

                                      
       
                                                                                                   

                                     
       
                                 

                                     
       
                                     

                                         
       
                             

                                     
       
                            

                                      


       

                                
                             
                                                                  
       
                        
                                                                   
       
                                                                                                        
                                                                       
       
                                                                                                   
                                                                      
       
                                 
                                                                      
       
                                 
                                                                      
       
                                     
                                                                          
       
                            
                                                                       
       
                             
                                                                      
       

                  
 


                                                       
       
                                   
                          
       

                              
       
                                                                                                              
                            
       
                                                                                                         
                          
       
                                       
                                  
       
                                       
                                  
       
                                           
                                          
       

                                      
       

                                   
                                                                           
         
                                         
       
     
 
                                                       
               
                                            
                     
                  
                                  

                    
                                      
                  
           
                    
                                          


                    
                                       


                    
                                                                                                            
                  

                    
                                                                                                          
                  

                    
                                          


                    
                                              



                                   
                                                                               
             



                                        
                                           
                  

           
       




                                                               
                          



















                           
                           







                           
   
 
                                                             
                                                                                           

                                                                                                                                                            
 
                                                     
                                                                                                       

     

                                                    

     




                                   
 
                                                                      
                          
     




                                            

                                         
                        
                           
           
                                                               
       

     

                                                   

     








                                                    

     
                                       
                   
                                                       
                  

     



                                                    
                                                       
                             

                                 


       

                                
                             
                                                                  
       

                  
 


                                                       
       
                                   
                          
       

     
                                                       
               
                                            
                     
                  
                                  

                    
                                      


                  
       
     



                                                             
                                                                                         


                                                                                                                                                         
                                                     
                                                                                                       
     
 

                                                    
     
 




                                  
 
                                                                    






                                                                      
     
 

                                         
                        
                           
           
                                                               
       
     
 
                                          


                                                                                                                                                                                                    
                                                                                                  
                            
     

                                            
                                                                    
                                                                   
                              
           

                         

     

                                                  

     


                                                   
       

                                         
       

                                                    

                                                               
     
 
                                       
                   
                                                       



                                                          
 



                                                    
                                                       
                             

                                 
       
                                                    
                             

                                     
       
     
 

                                
                             
                                                                  
       
                                                          
                             
                                                                      
       

                  
 


                                                      
       
                                   
                          
       


                                   
                                                                          
         
                                         
       
     
 
                                                       
               
                                            
                     
                  
                                  

                    
                                      
                  
           
                    
                                                                



                                   
                                                                              
             

                                        

           
       
     
 


                                                             
                                                                                                   

                                                                                                                                                                        
 
                                                     
                                                                                                       

     

                                                    

     


                                       
 


                                                                              


                                                                      
     




                                                
                                         
                              
                        
                           
           
                                                               
       

     

                                           
                       
                             
           

                        

     
                                            
                                                                         
                                                                        
                              
           

                         

     

                                                       

     


                                                        
       

                                         
       

                                               

                                                               
     
 
                                       
                   
                                                       



                                                          
 



                                                    
                                                       
                             

                                 
       
                        

                                  
       
                             

                                     
       
     
 

                                
                             
                                                                  
       
                        
                                                                   
       
                             
                                                                      
       

                  
 


                                                           
       
                                   
                          
       




                                   
                                                                               
         
                                         
       
     
 
                                                       
               
                                            
                     
                  
                                  

                    
                                      
                  
           
                    
                                       



                                   
                                                                                   
             

                                        

           
       
     
 


                                                             
                                                                                               

                                                                                                                                                                  
 
                                                     
                                                                                                       

     

                                                    

     




                                     
 
                                                                          






                                                                      
     
 
                                         
                              
                        
                           
           
                                                               
       

     
                                           


                                                                                                                                                                                               
                                                                                                
                             


                                            
                                                                       
                                                                      
                              
           

                         
     


                                                     

     




                                                      

                    

                                                      

                                                               

     
                                       
                   
                                                       


                                                          

     



                                                    
                                                       
                             

                                 
       
                                                      
                             

                                     


       

                                
                             
                                                                  
       
                                                            
                             
                                                                      
       

                  
 


                                                         
       
                                   
                          
       


                                   
                                                                             
         
                                         
       
     
 
                                                       
               
                                            
                     
                  
                                  

                    
                                      


                    
                                                                  



                                   
                                                                                 




                                        
       
     
 
   
 
                                                             
                                                                                             

                                                                                                                                                               
 
                                                     
                                                                                                       
     
 

                                                    
     
 




                                    
 
                                                                        









                                                                      
     
 

                                         
                        
                           
           
                                                               
       
     
 

                                              
                             
                                
           
                                                                    
       

     

                                               
                              
                                 
           
                                                                     
       

     
                                            
                                                                      
                                                                     
                              
           

                         

     

                                                    
                                 
                                      
           

                                 

     

                                                    
                                 
                                      
           

                                 

     

                                                    

     


                                                     
       

                                         
       


                                                       

                                                                 

                                                                 

     
                                       
                   


                                                                   



                                                                          

     



                                                    
                                                       
                             

                                 
       
                                  

                                      
       
                                   

                                       

                             

                                     

                                     

                                          

                                     

                                          
       

     

                                
                             
                                                                  
       
                                  
                                                                       
       
                                   
                                                                        
       
                             
                                                                      
       
                                     
                      
       
                                     
                      
       

                  
 


                                                        
       
                                   
                          
       
                                        
                                    
       
                                         
                                      
       

                                   
                                                                            
         
                                         
       

                                                
       



                                                
 
                                                       
               
                                            
                     
                  
                                  

                    
                                      
                  
           
                    
                                           


                    
                                            



                                   
                                                                                
             



                                        
                                               


                    
                                               
                  

           

       
 


                                                             
                                                                         

                                                                                                                                 
 
                                                     
                                                                                                       

     

                                                    

     




                                  
 
                                                    













                                                                    
                                                                          




                                                                
     
 

                                                
                               
                                  
           
                                                                      
       

     

                                                       
                                      
                                         
           
                                                                             
       

     

                                                       
                                   
                                        
           

                                   

     

                                                               
                                           
                                                
           

                                           

     

                                                         
                                     
                                          
           

                                     

     
                                                
                                                                                                                                                                     
                                                                                          
                                  
           

                             
     
 

                                               
                             
                                
           
                                                                    
       
     
 

                                                       
                                   
                                        
           

                                   
     
 

                                                         
                                     
                                          
           

                                     
     
 

                                                       
                                   
                                        
           

                                   
     
 
                                                
                             
                            
                                 
           

                            

     

                                                    
                                
                                     
           

                                

     

                                                     
                                   
                                      
           
                                                                          
       
     
 

                                                     
                                   
                                      
           
                                                                          
       
     
 








                                                                  
                                                          


                                                                                                                                                                                                        
                                                                                                           
                                          

     

                                               

     


                                           
       

                                         
       













                                                                                     
                                                                                           




                                                                                
                   

                                                                                   


                                                                                              
                                                                                                                                    
                                                                 




                                                                                  

                                                                             
                                                                                                    



                                                 



                                                    
                                                       
                                    

                                        
       
                                           

                                               
       
                                                                                                   

                                            

                                       

                                            
       
                                  

                                      

                                       

                                            

                                         

                                              

                                       

                                            

                                               

                                                    

                                

                                     

                                         

                                              

                                    

                                         
       
                                        

                                            
       
                                        

                                            
       



                                                       
                                                                                



                                
                                    
                                                                         
       
                                           
                                                                                
       
                                       
                      
       
                                               
                      
       
                                         
                      
       
                                                                                                   
                                                                             
       
                                  
                                                                       
       
                                       
                      
       
                                         
                      
       
                                       
                      
       
                                
                      
       
                                    
                      
       
                                        
                                                                             
       
                                        
                                                                             
       


                                                  
                                                                                      

                  
 


                                              
       
                                          
                                        
       
                                                 
                                                      
       

                                                    
       




                                                                    
       
                                                                                                         
                                        
       
                                        
                                    
       

                                                    
       

                                                        
       

                                                    
       

                                      
       

                                              
       
                                              

                                                
                                              

                                                


                                                                          


                                                           
                                                       
               
                                            
                     
                  
                                  

                    
                                             


                    
                                                    


                    
                                                                                                                
                  

                    
                                                 


                    
                                           


                     
                                                 


                     
                                                   


                     
                                                 


                     
                                                         


                     
                                          


                     
                                                   


                     
                                              


                     
                                                 


                     
                                                 

                  



                                                            
                      
                                                                                            


                  

       



                                                               
                                  




                         
     

              


                                                             
                                                                               

                                                                                                                                          
 
                                                     
                                                                                                        

     

                                                    

     




                                  
 
                                                          








                                                                          
     
 

                                                         
                                      
                                           
           

                                      

     

                                                                 
                                              
                                                   
           

                                              

     
                                               
                             
                            
                                 
           

                            

     

                                             
                          
                               
           

                          

     
                                                          


                                                                                                                                                                                                        
                                                                                                           
                                          

     


                                               
 


                                              
       

                                         
       





                                                                                           

     
                                       
                   





                                                                                                    

     



                                                    
                                                       
                                          

                                               
       
                                                  

                                                       
       
                                

                                     
       
                              

                                   
       
                                                                                
     
 


                                          
                      
       
                                                  
                      
       
                                
                      
       
                              
                      
       
                                                                                      

                  
 


                                                 
       

                                                          
       




                                                                          
       




                                                           
 
                                                       
               
                                            
                     
                  
                                  

                   
                                                    
                  
           
                    
                                                            


                    
                                          


                    
                                        


                      
                                                                                            
                  

           
       
     
 
   
 
                                                             
                                                                           

                                                                                                                                    
 
                                                     
                                                                                                        
     
 

                                                    
     
 




                                  
 
                                                      






                                                                
     




                                    
                                          
                                                                                                                                                    
                                                                              
                            
           

                       

     

                                           
                        
                             
           

                        

     
                                           
                                                                                                                                                          
                                                                                
                             
           

                        

     

                                         
                      
                           
           

                      

     
                                               
                             
                            
                                 
           

                            

     

                                          
                      
                           
           

                      


                                                          


                                                                                                                                                                                                        
                                                                                                           

                                          
 

                                               

     


                                            
       

                                         
       







                                                                                

     
                                       
                   
                                                                                                                   
                                                        
                                                                                                                         




                                                                

     



                                                    
                                                       
                                                                                        

                                      
       
                            

                                 
       
                                

                                     

                          

                               
       
                                                                                             

                                       

                          

                               
       
                                                                                

     

                                
                                                                                        
                                                                       
       
                            
                      
       
                                                                                             
                                                                        
       
                          
                      
       
                                
                      
       
                          
                      
       
                                                                                      

                  
 


                                               
       
                                                                                              
                            
       

                                  
       
                                                                                                   
                              
       

                                
       







                                                           
 
                                                       
               
                                            
                     
                  
                                  

                   
                                                                                                    
                  
           
                    
                                      


                    
                                          


                    
                                    


                    
                                                                                                      
                  

                    
                                    


                      
                                                                                            
                  

           
       
     
 


                                                               
                           


                         

       
                            


                      
       
 
     

              


                                                             
                                                                         

                                                                                                                                 
 
                                                     
                                                                                                        

     

                                                    

     




                                  
 
                                                    






                                                                
     
 

                                               
                            
                                 
           

                            

     
                                               
                             
                            
                                 
           

                            


                                                          


                                                                                                                                                                                                        
                                                                                                           

                                          
 

                                               

     


                                           
       

                                         
       



                                                                                

     
                                       
                   



                                                                

     



                                                    
                                                       
                                

                                     
       
                                

                                     
       
                                                                                
     
 


                                
                      
       
                                
                      
       
                                                                                      

                  
 


                                              
       

                                      
       

                                      
       

                                                           
 
                                                       
               
                                            
                     
                  
                                  

                    
                                          
                  
           
                    
                                          


                      
                                                                                            
                  

           
       
     
 


                                                             
                                                                                   

                                                                                                                                                
 
                                                     
                                                                                                        

     

                                                    

     


                               
 


                                                              

                                                                
     




                                        

                                               
                            
                                 
           

                            

     
                                                          


                                                                                                                                                                                                        
                                                                                                           

                                          
 


                                               
 










                                                                                
 
                                       
                   



                                                                
 



                                                    
                                                       
                                

                                     
       
                                                                                
     
 


                                
                      
       
                                                                                      

                  
 








                                                           
 
                                                       
               
                                            
                     
                  
                                  

                   
                                          
                  
           
                      
                                                                                            
                  
           
         

       
 
   
 
                                                             
                                                                               

                                                                                                                                          
 
                                                     
                                                                                                        
     
 

                                                    
     
 




                                  
 
                                                          





                                                                
     
 

                                                
                            
                                 
           

                            
     
 
                                                          


                                                                                                                                                                                                        
                                                                                                           

                                          
 


                                               
 










                                                                                
 
                                       
                   



                                                                
 



                                                    
                                                       
                                

                                     
       
                                                                                
     
 


                                
                      
       
                                                                                      

                  
 








                                                           
 
                                                       
               
                                            
                     
                  
                                  

                     
                                          
                  
           
                      
                                                                                            
                  
           


         
 
   
 
                                                             
                                                                             

                                                                                                                                       
 
                                                     
                                                                                                        
     
 

                                                    
     
 




                                  
 
                                                        





                                                                
     
 

                                                
                            
                                 
           

                            

     
                                                          


                                                                                                                                                                                                        
                                                                                                           



















                                                                                
                   




                                                                



                                                    
                                                       
                                

                                     
       
                                                                                




                                
                      
       
                                                                                      

                  
 









                                                           
                                                       
               
                                            
                     
                  
                                  

                     
                                          
                  
           
                      
                                                                                            
                  

           
       




                                                             
                                                                                         

                                                                                                                                                         
 
                                                     
                                                                                                        
     
 

                                                    
     
 




                                  
 
                                                                    






                                                  
     




                                           
                                         


                                                                                                                                                                                                                       
                                                                                                           
                           


                                                    
                                         
                                   
                                      
           
                                                                          
       


                                                     
                                    
                                   
                                       
           

                                  


                                                     
                                   
                                  
                                       
           

                                  


                                                
                                
                               
                                  
           

                             


                                                
                                                               
                                       
                                  
           
                                                                      
       


                                                   
                                        
                                  
                                     
           
                                                                         
       

     

                                                  

     


                                                   
       

                                         
       










                                                                   
                   
                                  
                                                                             


                                                                          

                                                                           


                  



                                                    
                                                       
                                                  
                                        

                                            
       
                                    

                                             
       
                                   

                                            
       
                              

                                        
       
                                    

                                       
       
                                       

                                           


       

                                
                                                        
                                        
                                                                             
       
                                    
                                                                              
       
                                   
                                                                             
       
                              
                      
       
                                    
                                                                        
       
                                       
                                                                            
       

                  
 


                                                      
       
                             
                                              
                                                
       

                                                  
       

                                                  
       

                                        
       
                                          
                                        
       
                                             
                                              
       
     
 
                                                       
               
                                            
                     
                  
                                  

                    
                                                              


                    
                                                 


                    
                                                  


                    
                                                 


                    
                                             


                    
                                            


                    
                                                

                  

         
     
 



                                                                 
                                                                       

                                                                                                                            
 
                                                         
                                                                                                          
         
 

                                                        
         
 


                           
 


                                                  

                                            
         




                                    

                                                  
                                 
                                   
               
                                                                       
           

         

                                                    
                                 
                                      
               

                                 
         
 

                                                   
         










                                                             
         

                                           
                       
                                                                     

                                                                      
         
 



                                                        
                                                           
                                      

                                          

                                     

                                          
           
         


                                    
                                      
                                                                           

                                     
                          

                      
         
 



                                               
                                            




                                            
         
 
                                                           
                   
                                                
                         
                      
                                      

                        
                                               
                      
               
                        
                                               
                      
               



             







                                                             
                                                                               

                                                                                                                                          
 
                                                     
                                                                                                        
     
 

                                                    
     
 




                                  
 
                                                          




                                          
     
 
                                             


                                                                                                                                                                                                                 
                                                                                                          

                               
 


                                               
 


                                              
       

                                         
       

                                                          
     
 
                                       
                   

                                      

     



                                                    
                                                       
                                                          

     

                                
                                                                
                  
     
 




                                                 

     
                                                       
               
                                            
                     
                  
                                  

                    
                                                                      



                  





                                                                 
                                                                       

                                                                                                                            
 
                                                         
                                                                                                     

         

                                                        

         




                                      
 
                                                  




                                                                            
         




                                    
                                             

                                                                        
                                                                                       
                                             
                               


                                             

                                                                        
                                                                                       
                                             
                               


                                                        
                                             
                                       
                                          
               
                                                                              
           


                                                         
                                              
                                        
                                           
               
                                                                               
           


                                                                

                                                                                              
                                                                                                                
                                                                   
                                                  
         


                                                   

         




                                             

                        





                                                                                            

         
                                           
                       

                                      

                                                                                   

                                                         

         



                                                        
                                                           

                                                      
                                            

                                                
           
                                             

                                                 
           
                                                                                            

         

                                    

                                                            
                                            
                                                                                 
           
                                             
                                                                                  
           
                                                                                                  

                      
 


                                               
           

                                 
                                                  
                                                    
           
                                                   
                                                      
           

                                                                       
 
                                                           
                   
                                                
                         
                      
                                      


                       
                                                                  
                      
               

                        
                                                                  
                      
               
                        
                                                     
                      
               
                        
                                                      
                      
               
                        
                                                                                                        
                      
               



             

       
     

              






                                  
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/protobuf/descriptor.proto
#pragma warning disable 1591, 0612, 3021
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Google.Protobuf.Reflection {

  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
  internal static partial class DescriptorProtoFile {

    #region Descriptor
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static DescriptorProtoFile() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "CiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bxIPZ29vZ2xlLnBy", 
            "b3RvYnVmIkcKEUZpbGVEZXNjcmlwdG9yU2V0EjIKBGZpbGUYASADKAsyJC5n", 
            "b29nbGUucHJvdG9idWYuRmlsZURlc2NyaXB0b3JQcm90byLbAwoTRmlsZURl", 
            "c2NyaXB0b3JQcm90bxIMCgRuYW1lGAEgASgJEg8KB3BhY2thZ2UYAiABKAkS", 
            "EgoKZGVwZW5kZW5jeRgDIAMoCRIZChFwdWJsaWNfZGVwZW5kZW5jeRgKIAMo", 
            "BRIXCg93ZWFrX2RlcGVuZGVuY3kYCyADKAUSNgoMbWVzc2FnZV90eXBlGAQg", 
            "AygLMiAuZ29vZ2xlLnByb3RvYnVmLkRlc2NyaXB0b3JQcm90bxI3CgllbnVt", 
            "X3R5cGUYBSADKAsyJC5nb29nbGUucHJvdG9idWYuRW51bURlc2NyaXB0b3JQ", 
            "cm90bxI4CgdzZXJ2aWNlGAYgAygLMicuZ29vZ2xlLnByb3RvYnVmLlNlcnZp", 
            "Y2VEZXNjcmlwdG9yUHJvdG8SOAoJZXh0ZW5zaW9uGAcgAygLMiUuZ29vZ2xl", 
            "LnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvEi0KB29wdGlvbnMYCCAB", 
            "KAsyHC5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnMSOQoQc291cmNlX2Nv", 
            "ZGVfaW5mbxgJIAEoCzIfLmdvb2dsZS5wcm90b2J1Zi5Tb3VyY2VDb2RlSW5m", 
            "bxIOCgZzeW50YXgYDCABKAki8AQKD0Rlc2NyaXB0b3JQcm90bxIMCgRuYW1l", 
            "GAEgASgJEjQKBWZpZWxkGAIgAygLMiUuZ29vZ2xlLnByb3RvYnVmLkZpZWxk", 
            "RGVzY3JpcHRvclByb3RvEjgKCWV4dGVuc2lvbhgGIAMoCzIlLmdvb2dsZS5w", 
            "cm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90bxI1CgtuZXN0ZWRfdHlwZRgD", 
            "IAMoCzIgLmdvb2dsZS5wcm90b2J1Zi5EZXNjcmlwdG9yUHJvdG8SNwoJZW51", 
            "bV90eXBlGAQgAygLMiQuZ29vZ2xlLnByb3RvYnVmLkVudW1EZXNjcmlwdG9y", 
            "UHJvdG8SSAoPZXh0ZW5zaW9uX3JhbmdlGAUgAygLMi8uZ29vZ2xlLnByb3Rv", 
            "YnVmLkRlc2NyaXB0b3JQcm90by5FeHRlbnNpb25SYW5nZRI5CgpvbmVvZl9k", 
            "ZWNsGAggAygLMiUuZ29vZ2xlLnByb3RvYnVmLk9uZW9mRGVzY3JpcHRvclBy", 
            "b3RvEjAKB29wdGlvbnMYByABKAsyHy5nb29nbGUucHJvdG9idWYuTWVzc2Fn", 
            "ZU9wdGlvbnMSRgoOcmVzZXJ2ZWRfcmFuZ2UYCSADKAsyLi5nb29nbGUucHJv", 
            "dG9idWYuRGVzY3JpcHRvclByb3RvLlJlc2VydmVkUmFuZ2USFQoNcmVzZXJ2", 
            "ZWRfbmFtZRgKIAMoCRosCg5FeHRlbnNpb25SYW5nZRINCgVzdGFydBgBIAEo", 
            "BRILCgNlbmQYAiABKAUaKwoNUmVzZXJ2ZWRSYW5nZRINCgVzdGFydBgBIAEo", 
            "BRILCgNlbmQYAiABKAUiqQUKFEZpZWxkRGVzY3JpcHRvclByb3RvEgwKBG5h", 
            "bWUYASABKAkSDgoGbnVtYmVyGAMgASgFEjoKBWxhYmVsGAQgASgOMisuZ29v", 
            "Z2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLkxhYmVsEjgKBHR5", 
            "cGUYBSABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJv", 
            "dG8uVHlwZRIRCgl0eXBlX25hbWUYBiABKAkSEAoIZXh0ZW5kZWUYAiABKAkS", 
            "FQoNZGVmYXVsdF92YWx1ZRgHIAEoCRITCgtvbmVvZl9pbmRleBgJIAEoBRIu", 
            "CgdvcHRpb25zGAggASgLMh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9u", 
            "cyK2AgoEVHlwZRIPCgtUWVBFX0RPVUJMRRABEg4KClRZUEVfRkxPQVQQAhIO", 
            "CgpUWVBFX0lOVDY0EAMSDwoLVFlQRV9VSU5UNjQQBBIOCgpUWVBFX0lOVDMy", 
            "EAUSEAoMVFlQRV9GSVhFRDY0EAYSEAoMVFlQRV9GSVhFRDMyEAcSDQoJVFlQ", 
            "RV9CT09MEAgSDwoLVFlQRV9TVFJJTkcQCRIOCgpUWVBFX0dST1VQEAoSEAoM", 
            "VFlQRV9NRVNTQUdFEAsSDgoKVFlQRV9CWVRFUxAMEg8KC1RZUEVfVUlOVDMy", 
            "EA0SDQoJVFlQRV9FTlVNEA4SEQoNVFlQRV9TRklYRUQzMhAPEhEKDVRZUEVf", 
            "U0ZJWEVENjQQEBIPCgtUWVBFX1NJTlQzMhAREg8KC1RZUEVfU0lOVDY0EBIi", 
            "QwoFTGFiZWwSEgoOTEFCRUxfT1BUSU9OQUwQARISCg5MQUJFTF9SRVFVSVJF", 
            "RBACEhIKDkxBQkVMX1JFUEVBVEVEEAMiJAoUT25lb2ZEZXNjcmlwdG9yUHJv", 
            "dG8SDAoEbmFtZRgBIAEoCSKMAQoTRW51bURlc2NyaXB0b3JQcm90bxIMCgRu", 
            "YW1lGAEgASgJEjgKBXZhbHVlGAIgAygLMikuZ29vZ2xlLnByb3RvYnVmLkVu", 
            "dW1WYWx1ZURlc2NyaXB0b3JQcm90bxItCgdvcHRpb25zGAMgASgLMhwuZ29v", 
            "Z2xlLnByb3RvYnVmLkVudW1PcHRpb25zImwKGEVudW1WYWx1ZURlc2NyaXB0", 
            "b3JQcm90bxIMCgRuYW1lGAEgASgJEg4KBm51bWJlchgCIAEoBRIyCgdvcHRp", 
            "b25zGAMgASgLMiEuZ29vZ2xlLnByb3RvYnVmLkVudW1WYWx1ZU9wdGlvbnMi", 
            "kAEKFlNlcnZpY2VEZXNjcmlwdG9yUHJvdG8SDAoEbmFtZRgBIAEoCRI2CgZt", 
            "ZXRob2QYAiADKAsyJi5nb29nbGUucHJvdG9idWYuTWV0aG9kRGVzY3JpcHRv", 
            "clByb3RvEjAKB29wdGlvbnMYAyABKAsyHy5nb29nbGUucHJvdG9idWYuU2Vy", 
            "dmljZU9wdGlvbnMiwQEKFU1ldGhvZERlc2NyaXB0b3JQcm90bxIMCgRuYW1l", 
            "GAEgASgJEhIKCmlucHV0X3R5cGUYAiABKAkSEwoLb3V0cHV0X3R5cGUYAyAB", 
            "KAkSLwoHb3B0aW9ucxgEIAEoCzIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RP", 
            "cHRpb25zEh8KEGNsaWVudF9zdHJlYW1pbmcYBSABKAg6BWZhbHNlEh8KEHNl", 
            "cnZlcl9zdHJlYW1pbmcYBiABKAg6BWZhbHNlIqoFCgtGaWxlT3B0aW9ucxIU", 
            "CgxqYXZhX3BhY2thZ2UYASABKAkSHAoUamF2YV9vdXRlcl9jbGFzc25hbWUY", 
            "CCABKAkSIgoTamF2YV9tdWx0aXBsZV9maWxlcxgKIAEoCDoFZmFsc2USLAod", 
            "amF2YV9nZW5lcmF0ZV9lcXVhbHNfYW5kX2hhc2gYFCABKAg6BWZhbHNlEiUK", 
            "FmphdmFfc3RyaW5nX2NoZWNrX3V0ZjgYGyABKAg6BWZhbHNlEkYKDG9wdGlt", 
            "aXplX2ZvchgJIAEoDjIpLmdvb2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9ucy5P", 
            "cHRpbWl6ZU1vZGU6BVNQRUVEEhIKCmdvX3BhY2thZ2UYCyABKAkSIgoTY2Nf", 
            "Z2VuZXJpY19zZXJ2aWNlcxgQIAEoCDoFZmFsc2USJAoVamF2YV9nZW5lcmlj", 
            "X3NlcnZpY2VzGBEgASgIOgVmYWxzZRIiChNweV9nZW5lcmljX3NlcnZpY2Vz", 
            "GBIgASgIOgVmYWxzZRIZCgpkZXByZWNhdGVkGBcgASgIOgVmYWxzZRIfChBj", 
            "Y19lbmFibGVfYXJlbmFzGB8gASgIOgVmYWxzZRIZChFvYmpjX2NsYXNzX3By", 
            "ZWZpeBgkIAEoCRIYChBjc2hhcnBfbmFtZXNwYWNlGCUgASgJEicKH2phdmFu", 
            "YW5vX3VzZV9kZXByZWNhdGVkX3BhY2thZ2UYJiABKAgSQwoUdW5pbnRlcnBy", 
            "ZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJw", 
            "cmV0ZWRPcHRpb24iOgoMT3B0aW1pemVNb2RlEgkKBVNQRUVEEAESDQoJQ09E", 
            "RV9TSVpFEAISEAoMTElURV9SVU5USU1FEAMqCQjoBxCAgICAAiLmAQoOTWVz", 
            "c2FnZU9wdGlvbnMSJgoXbWVzc2FnZV9zZXRfd2lyZV9mb3JtYXQYASABKAg6", 
            "BWZhbHNlEi4KH25vX3N0YW5kYXJkX2Rlc2NyaXB0b3JfYWNjZXNzb3IYAiAB", 
            "KAg6BWZhbHNlEhkKCmRlcHJlY2F0ZWQYAyABKAg6BWZhbHNlEhEKCW1hcF9l", 
            "bnRyeRgHIAEoCBJDChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5n", 
            "b29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIAC", 
            "IpgDCgxGaWVsZE9wdGlvbnMSOgoFY3R5cGUYASABKA4yIy5nb29nbGUucHJv", 
            "dG9idWYuRmllbGRPcHRpb25zLkNUeXBlOgZTVFJJTkcSDgoGcGFja2VkGAIg", 
            "ASgIEj8KBmpzdHlwZRgGIAEoDjIkLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9w", 
            "dGlvbnMuSlNUeXBlOglKU19OT1JNQUwSEwoEbGF6eRgFIAEoCDoFZmFsc2US", 
            "GQoKZGVwcmVjYXRlZBgDIAEoCDoFZmFsc2USEwoEd2VhaxgKIAEoCDoFZmFs", 
            "c2USQwoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnBy", 
            "b3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb24iLwoFQ1R5cGUSCgoGU1RSSU5H", 
            "EAASCAoEQ09SRBABEhAKDFNUUklOR19QSUVDRRACIjUKBkpTVHlwZRINCglK", 
            "U19OT1JNQUwQABINCglKU19TVFJJTkcQARINCglKU19OVU1CRVIQAioJCOgH", 
            "EICAgIACIo0BCgtFbnVtT3B0aW9ucxITCgthbGxvd19hbGlhcxgCIAEoCBIZ", 
            "CgpkZXByZWNhdGVkGAMgASgIOgVmYWxzZRJDChR1bmludGVycHJldGVkX29w", 
            "dGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9w", 
            "dGlvbioJCOgHEICAgIACIn0KEEVudW1WYWx1ZU9wdGlvbnMSGQoKZGVwcmVj", 
            "YXRlZBgBIAEoCDoFZmFsc2USQwoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcg", 
            "AygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb24qCQjo", 
            "BxCAgICAAiJ7Cg5TZXJ2aWNlT3B0aW9ucxIZCgpkZXByZWNhdGVkGCEgASgI", 
            "OgVmYWxzZRJDChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29n", 
            "bGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACInoK", 
            "DU1ldGhvZE9wdGlvbnMSGQoKZGVwcmVjYXRlZBghIAEoCDoFZmFsc2USQwoU", 
            "dW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVm", 
            "LlVuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAiKeAgoTVW5pbnRlcnBy", 
            "ZXRlZE9wdGlvbhI7CgRuYW1lGAIgAygLMi0uZ29vZ2xlLnByb3RvYnVmLlVu", 
            "aW50ZXJwcmV0ZWRPcHRpb24uTmFtZVBhcnQSGAoQaWRlbnRpZmllcl92YWx1", 
            "ZRgDIAEoCRIaChJwb3NpdGl2ZV9pbnRfdmFsdWUYBCABKAQSGgoSbmVnYXRp", 
            "dmVfaW50X3ZhbHVlGAUgASgDEhQKDGRvdWJsZV92YWx1ZRgGIAEoARIUCgxz", 
            "dHJpbmdfdmFsdWUYByABKAwSFwoPYWdncmVnYXRlX3ZhbHVlGAggASgJGjMK", 
            "CE5hbWVQYXJ0EhEKCW5hbWVfcGFydBgBIAIoCRIUCgxpc19leHRlbnNpb24Y", 
            "AiACKAgi1QEKDlNvdXJjZUNvZGVJbmZvEjoKCGxvY2F0aW9uGAEgAygLMigu", 
            "Z29vZ2xlLnByb3RvYnVmLlNvdXJjZUNvZGVJbmZvLkxvY2F0aW9uGoYBCghM", 
            "b2NhdGlvbhIQCgRwYXRoGAEgAygFQgIQARIQCgRzcGFuGAIgAygFQgIQARIY", 
            "ChBsZWFkaW5nX2NvbW1lbnRzGAMgASgJEhkKEXRyYWlsaW5nX2NvbW1lbnRz", 
            "GAQgASgJEiEKGWxlYWRpbmdfZGV0YWNoZWRfY29tbWVudHMYBiADKAlCWwoT", 
            "Y29tLmdvb2dsZS5wcm90b2J1ZkIQRGVzY3JpcHRvclByb3Rvc0gBWgpkZXNj", 
            "cmlwdG9yogIDR1BCqgIaR29vZ2xlLlByb3RvYnVmLlJlZmxlY3Rpb26wAgE="));
      descriptor = pbr::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
          new pbr::FileDescriptor[] { },
          new pbr::GeneratedCodeInfo(null, new pbr::GeneratedCodeInfo[] {
            new pbr::GeneratedCodeInfo(typeof(global::Google.Protobuf.Reflection.FileDescriptorSet), new[]{ "File" }, null, null, null),
            new pbr::GeneratedCodeInfo(typeof(global::Google.Protobuf.Reflection.FileDescriptorProto), new[]{ "Name", "Package", "Dependency", "PublicDependency", "WeakDependency", "MessageType", "EnumType", "Service", "Extension", "Options", "SourceCodeInfo", "Syntax" }, null, null, null),
            new pbr::GeneratedCodeInfo(typeof(global::Google.Protobuf.Reflection.DescriptorProto), new[]{ "Name", "Field", "Extension", "NestedType", "EnumType", "ExtensionRange", "OneofDecl", "Options", "ReservedRange", "ReservedName" }, null, null, new pbr::GeneratedCodeInfo[] { new pbr::GeneratedCodeInfo(typeof(global::Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange), new[]{ "Start", "End" }, null, null, null),
            new pbr::GeneratedCodeInfo(typeof(global::Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange), new[]{ "Start", "End" }, null, null, null)}),
            new pbr::GeneratedCodeInfo(typeof(global::Google.Protobuf.Reflection.FieldDescriptorProto), new[]{ "Name", "Number", "Label", "Type", "TypeName", "Extendee", "DefaultValue", "OneofIndex", "Options" }, null, new[]{ typeof(global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type), typeof(global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label) }, null),
            new pbr::GeneratedCodeInfo(typeof(global::Google.Protobuf.Reflection.OneofDescriptorProto), new[]{ "Name" }, null, null, null),
            new pbr::GeneratedCodeInfo(typeof(global::Google.Protobuf.Reflection.EnumDescriptorProto), new[]{ "Name", "Value", "Options" }, null, null, null),
            new pbr::GeneratedCodeInfo(typeof(global::Google.Protobuf.Reflection.EnumValueDescriptorProto), new[]{ "Name", "Number", "Options" }, null, null, null),
            new pbr::GeneratedCodeInfo(typeof(global::Google.Protobuf.Reflection.ServiceDescriptorProto), new[]{ "Name", "Method", "Options" }, null, null, null),
            new pbr::GeneratedCodeInfo(typeof(global::Google.Protobuf.Reflection.MethodDescriptorProto), new[]{ "Name", "InputType", "OutputType", "Options", "ClientStreaming", "ServerStreaming" }, null, null, null),
            new pbr::GeneratedCodeInfo(typeof(global::Google.Protobuf.Reflection.FileOptions), new[]{ "JavaPackage", "JavaOuterClassname", "JavaMultipleFiles", "JavaGenerateEqualsAndHash", "JavaStringCheckUtf8", "OptimizeFor", "GoPackage", "CcGenericServices", "JavaGenericServices", "PyGenericServices", "Deprecated", "CcEnableArenas", "ObjcClassPrefix", "CsharpNamespace", "JavananoUseDeprecatedPackage", "UninterpretedOption" }, null, new[]{ typeof(global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode) }, null),
            new pbr::GeneratedCodeInfo(typeof(global::Google.Protobuf.Reflection.MessageOptions), new[]{ "MessageSetWireFormat", "NoStandardDescriptorAccessor", "Deprecated", "MapEntry", "UninterpretedOption" }, null, null, null),
            new pbr::GeneratedCodeInfo(typeof(global::Google.Protobuf.Reflection.FieldOptions), new[]{ "Ctype", "Packed", "Jstype", "Lazy", "Deprecated", "Weak", "UninterpretedOption" }, null, new[]{ typeof(global::Google.Protobuf.Reflection.FieldOptions.Types.CType), typeof(global::Google.Protobuf.Reflection.FieldOptions.Types.JSType) }, null),
            new pbr::GeneratedCodeInfo(typeof(global::Google.Protobuf.Reflection.EnumOptions), new[]{ "AllowAlias", "Deprecated", "UninterpretedOption" }, null, null, null),
            new pbr::GeneratedCodeInfo(typeof(global::Google.Protobuf.Reflection.EnumValueOptions), new[]{ "Deprecated", "UninterpretedOption" }, null, null, null),
            new pbr::GeneratedCodeInfo(typeof(global::Google.Protobuf.Reflection.ServiceOptions), new[]{ "Deprecated", "UninterpretedOption" }, null, null, null),
            new pbr::GeneratedCodeInfo(typeof(global::Google.Protobuf.Reflection.MethodOptions), new[]{ "Deprecated", "UninterpretedOption" }, null, null, null),
            new pbr::GeneratedCodeInfo(typeof(global::Google.Protobuf.Reflection.UninterpretedOption), new[]{ "Name", "IdentifierValue", "PositiveIntValue", "NegativeIntValue", "DoubleValue", "StringValue", "AggregateValue" }, null, null, new pbr::GeneratedCodeInfo[] { new pbr::GeneratedCodeInfo(typeof(global::Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart), new[]{ "NamePart_", "IsExtension" }, null, null, null)}),
            new pbr::GeneratedCodeInfo(typeof(global::Google.Protobuf.Reflection.SourceCodeInfo), new[]{ "Location" }, null, null, new pbr::GeneratedCodeInfo[] { new pbr::GeneratedCodeInfo(typeof(global::Google.Protobuf.Reflection.SourceCodeInfo.Types.Location), new[]{ "Path", "Span", "LeadingComments", "TrailingComments", "LeadingDetachedComments" }, null, null, null)})
          }));
    }
    #endregion

  }
  #region Messages
  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
  internal sealed partial class FileDescriptorSet : pb::IMessage<FileDescriptorSet> {
    private static readonly pb::MessageParser<FileDescriptorSet> _parser = new pb::MessageParser<FileDescriptorSet>(() => new FileDescriptorSet());
    public static pb::MessageParser<FileDescriptorSet> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[0]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public FileDescriptorSet() {
      OnConstruction();
    }

    partial void OnConstruction();

    public FileDescriptorSet(FileDescriptorSet other) : this() {
      file_ = other.file_.Clone();
    }

    public FileDescriptorSet Clone() {
      return new FileDescriptorSet(this);
    }

    public const int FileFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.FileDescriptorProto> _repeated_file_codec
        = pb::FieldCodec.ForMessage(10, global::Google.Protobuf.Reflection.FileDescriptorProto.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.FileDescriptorProto> file_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.FileDescriptorProto>();
    public pbc::RepeatedField<global::Google.Protobuf.Reflection.FileDescriptorProto> File {
      get { return file_; }
    }

    public override bool Equals(object other) {
      return Equals(other as FileDescriptorSet);
    }

    public bool Equals(FileDescriptorSet other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!file_.Equals(other.file_)) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      hash ^= file_.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.Default.Format(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      file_.WriteTo(output, _repeated_file_codec);
    }

    public int CalculateSize() {
      int size = 0;
      size += file_.CalculateSize(_repeated_file_codec);
      return size;
    }

    public void MergeFrom(FileDescriptorSet other) {
      if (other == null) {
        return;
      }
      file_.Add(other.file_);
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            file_.AddEntriesFrom(input, _repeated_file_codec);
            break;
          }
        }
      }
    }

  }

  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
  internal sealed partial class FileDescriptorProto : pb::IMessage<FileDescriptorProto> {
    private static readonly pb::MessageParser<FileDescriptorProto> _parser = new pb::MessageParser<FileDescriptorProto>(() => new FileDescriptorProto());
    public static pb::MessageParser<FileDescriptorProto> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[1]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public FileDescriptorProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    public FileDescriptorProto(FileDescriptorProto other) : this() {
      name_ = other.name_;
      package_ = other.package_;
      dependency_ = other.dependency_.Clone();
      publicDependency_ = other.publicDependency_.Clone();
      weakDependency_ = other.weakDependency_.Clone();
      messageType_ = other.messageType_.Clone();
      enumType_ = other.enumType_.Clone();
      service_ = other.service_.Clone();
      extension_ = other.extension_.Clone();
      Options = other.options_ != null ? other.Options.Clone() : null;
      SourceCodeInfo = other.sourceCodeInfo_ != null ? other.SourceCodeInfo.Clone() : null;
      syntax_ = other.syntax_;
    }

    public FileDescriptorProto Clone() {
      return new FileDescriptorProto(this);
    }

    public const int NameFieldNumber = 1;
    private string name_ = "";
    public string Name {
      get { return name_; }
      set {
        name_ = pb::Preconditions.CheckNotNull(value, "value");
      }
    }

    public const int PackageFieldNumber = 2;
    private string package_ = "";
    public string Package {
      get { return package_; }
      set {
        package_ = pb::Preconditions.CheckNotNull(value, "value");
      }
    }

    public const int DependencyFieldNumber = 3;
    private static readonly pb::FieldCodec<string> _repeated_dependency_codec
        = pb::FieldCodec.ForString(26);
    private readonly pbc::RepeatedField<string> dependency_ = new pbc::RepeatedField<string>();
    public pbc::RepeatedField<string> Dependency {
      get { return dependency_; }
    }

    public const int PublicDependencyFieldNumber = 10;
    private static readonly pb::FieldCodec<int> _repeated_publicDependency_codec
        = pb::FieldCodec.ForInt32(80);
    private readonly pbc::RepeatedField<int> publicDependency_ = new pbc::RepeatedField<int>();
    public pbc::RepeatedField<int> PublicDependency {
      get { return publicDependency_; }
    }

    public const int WeakDependencyFieldNumber = 11;
    private static readonly pb::FieldCodec<int> _repeated_weakDependency_codec
        = pb::FieldCodec.ForInt32(88);
    private readonly pbc::RepeatedField<int> weakDependency_ = new pbc::RepeatedField<int>();
    public pbc::RepeatedField<int> WeakDependency {
      get { return weakDependency_; }
    }

    public const int MessageTypeFieldNumber = 4;
    private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.DescriptorProto> _repeated_messageType_codec
        = pb::FieldCodec.ForMessage(34, global::Google.Protobuf.Reflection.DescriptorProto.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto> messageType_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto>();
    public pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto> MessageType {
      get { return messageType_; }
    }

    public const int EnumTypeFieldNumber = 5;
    private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.EnumDescriptorProto> _repeated_enumType_codec
        = pb::FieldCodec.ForMessage(42, global::Google.Protobuf.Reflection.EnumDescriptorProto.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumDescriptorProto> enumType_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumDescriptorProto>();
    public pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumDescriptorProto> EnumType {
      get { return enumType_; }
    }

    public const int ServiceFieldNumber = 6;
    private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.ServiceDescriptorProto> _repeated_service_codec
        = pb::FieldCodec.ForMessage(50, global::Google.Protobuf.Reflection.ServiceDescriptorProto.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.ServiceDescriptorProto> service_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.ServiceDescriptorProto>();
    public pbc::RepeatedField<global::Google.Protobuf.Reflection.ServiceDescriptorProto> Service {
      get { return service_; }
    }

    public const int ExtensionFieldNumber = 7;
    private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.FieldDescriptorProto> _repeated_extension_codec
        = pb::FieldCodec.ForMessage(58, global::Google.Protobuf.Reflection.FieldDescriptorProto.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto> extension_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto>();
    public pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto> Extension {
      get { return extension_; }
    }

    public const int OptionsFieldNumber = 8;
    private global::Google.Protobuf.Reflection.FileOptions options_;
    public global::Google.Protobuf.Reflection.FileOptions Options {
      get { return options_; }
      set {
        options_ = value;
      }
    }

    public const int SourceCodeInfoFieldNumber = 9;
    private global::Google.Protobuf.Reflection.SourceCodeInfo sourceCodeInfo_;
    public global::Google.Protobuf.Reflection.SourceCodeInfo SourceCodeInfo {
      get { return sourceCodeInfo_; }
      set {
        sourceCodeInfo_ = value;
      }
    }

    public const int SyntaxFieldNumber = 12;
    private string syntax_ = "";
    public string Syntax {
      get { return syntax_; }
      set {
        syntax_ = pb::Preconditions.CheckNotNull(value, "value");
      }
    }

    public override bool Equals(object other) {
      return Equals(other as FileDescriptorProto);
    }

    public bool Equals(FileDescriptorProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      if (Package != other.Package) return false;
      if(!dependency_.Equals(other.dependency_)) return false;
      if(!publicDependency_.Equals(other.publicDependency_)) return false;
      if(!weakDependency_.Equals(other.weakDependency_)) return false;
      if(!messageType_.Equals(other.messageType_)) return false;
      if(!enumType_.Equals(other.enumType_)) return false;
      if(!service_.Equals(other.service_)) return false;
      if(!extension_.Equals(other.extension_)) return false;
      if (!object.Equals(Options, other.Options)) return false;
      if (!object.Equals(SourceCodeInfo, other.SourceCodeInfo)) return false;
      if (Syntax != other.Syntax) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      if (Package.Length != 0) hash ^= Package.GetHashCode();
      hash ^= dependency_.GetHashCode();
      hash ^= publicDependency_.GetHashCode();
      hash ^= weakDependency_.GetHashCode();
      hash ^= messageType_.GetHashCode();
      hash ^= enumType_.GetHashCode();
      hash ^= service_.GetHashCode();
      hash ^= extension_.GetHashCode();
      if (options_ != null) hash ^= Options.GetHashCode();
      if (sourceCodeInfo_ != null) hash ^= SourceCodeInfo.GetHashCode();
      if (Syntax.Length != 0) hash ^= Syntax.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.Default.Format(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      if (Package.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Package);
      }
      dependency_.WriteTo(output, _repeated_dependency_codec);
      messageType_.WriteTo(output, _repeated_messageType_codec);
      enumType_.WriteTo(output, _repeated_enumType_codec);
      service_.WriteTo(output, _repeated_service_codec);
      extension_.WriteTo(output, _repeated_extension_codec);
      if (options_ != null) {
        output.WriteRawTag(66);
        output.WriteMessage(Options);
      }
      if (sourceCodeInfo_ != null) {
        output.WriteRawTag(74);
        output.WriteMessage(SourceCodeInfo);
      }
      publicDependency_.WriteTo(output, _repeated_publicDependency_codec);
      weakDependency_.WriteTo(output, _repeated_weakDependency_codec);
      if (Syntax.Length != 0) {
        output.WriteRawTag(98);
        output.WriteString(Syntax);
      }
    }

    public int CalculateSize() {
      int size = 0;
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (Package.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Package);
      }
      size += dependency_.CalculateSize(_repeated_dependency_codec);
      size += publicDependency_.CalculateSize(_repeated_publicDependency_codec);
      size += weakDependency_.CalculateSize(_repeated_weakDependency_codec);
      size += messageType_.CalculateSize(_repeated_messageType_codec);
      size += enumType_.CalculateSize(_repeated_enumType_codec);
      size += service_.CalculateSize(_repeated_service_codec);
      size += extension_.CalculateSize(_repeated_extension_codec);
      if (options_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options);
      }
      if (sourceCodeInfo_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceCodeInfo);
      }
      if (Syntax.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Syntax);
      }
      return size;
    }

    public void MergeFrom(FileDescriptorProto other) {
      if (other == null) {
        return;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      if (other.Package.Length != 0) {
        Package = other.Package;
      }
      dependency_.Add(other.dependency_);
      publicDependency_.Add(other.publicDependency_);
      weakDependency_.Add(other.weakDependency_);
      messageType_.Add(other.messageType_);
      enumType_.Add(other.enumType_);
      service_.Add(other.service_);
      extension_.Add(other.extension_);
      if (other.options_ != null) {
        if (options_ == null) {
          options_ = new global::Google.Protobuf.Reflection.FileOptions();
        }
        Options.MergeFrom(other.Options);
      }
      if (other.sourceCodeInfo_ != null) {
        if (sourceCodeInfo_ == null) {
          sourceCodeInfo_ = new global::Google.Protobuf.Reflection.SourceCodeInfo();
        }
        SourceCodeInfo.MergeFrom(other.SourceCodeInfo);
      }
      if (other.Syntax.Length != 0) {
        Syntax = other.Syntax;
      }
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            Package = input.ReadString();
            break;
          }
          case 26: {
            dependency_.AddEntriesFrom(input, _repeated_dependency_codec);
            break;
          }
          case 34: {
            messageType_.AddEntriesFrom(input, _repeated_messageType_codec);
            break;
          }
          case 42: {
            enumType_.AddEntriesFrom(input, _repeated_enumType_codec);
            break;
          }
          case 50: {
            service_.AddEntriesFrom(input, _repeated_service_codec);
            break;
          }
          case 58: {
            extension_.AddEntriesFrom(input, _repeated_extension_codec);
            break;
          }
          case 66: {
            if (options_ == null) {
              options_ = new global::Google.Protobuf.Reflection.FileOptions();
            }
            input.ReadMessage(options_);
            break;
          }
          case 74: {
            if (sourceCodeInfo_ == null) {
              sourceCodeInfo_ = new global::Google.Protobuf.Reflection.SourceCodeInfo();
            }
            input.ReadMessage(sourceCodeInfo_);
            break;
          }
          case 82:
          case 80: {
            publicDependency_.AddEntriesFrom(input, _repeated_publicDependency_codec);
            break;
          }
          case 90:
          case 88: {
            weakDependency_.AddEntriesFrom(input, _repeated_weakDependency_codec);
            break;
          }
          case 98: {
            Syntax = input.ReadString();
            break;
          }
        }
      }
    }

  }

  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
  internal sealed partial class DescriptorProto : pb::IMessage<DescriptorProto> {
    private static readonly pb::MessageParser<DescriptorProto> _parser = new pb::MessageParser<DescriptorProto>(() => new DescriptorProto());
    public static pb::MessageParser<DescriptorProto> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[2]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public DescriptorProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    public DescriptorProto(DescriptorProto other) : this() {
      name_ = other.name_;
      field_ = other.field_.Clone();
      extension_ = other.extension_.Clone();
      nestedType_ = other.nestedType_.Clone();
      enumType_ = other.enumType_.Clone();
      extensionRange_ = other.extensionRange_.Clone();
      oneofDecl_ = other.oneofDecl_.Clone();
      Options = other.options_ != null ? other.Options.Clone() : null;
      reservedRange_ = other.reservedRange_.Clone();
      reservedName_ = other.reservedName_.Clone();
    }

    public DescriptorProto Clone() {
      return new DescriptorProto(this);
    }

    public const int NameFieldNumber = 1;
    private string name_ = "";
    public string Name {
      get { return name_; }
      set {
        name_ = pb::Preconditions.CheckNotNull(value, "value");
      }
    }

    public const int FieldFieldNumber = 2;
    private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.FieldDescriptorProto> _repeated_field_codec
        = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.Reflection.FieldDescriptorProto.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto> field_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto>();
    public pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto> Field {
      get { return field_; }
    }

    public const int ExtensionFieldNumber = 6;
    private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.FieldDescriptorProto> _repeated_extension_codec
        = pb::FieldCodec.ForMessage(50, global::Google.Protobuf.Reflection.FieldDescriptorProto.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto> extension_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto>();
    public pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto> Extension {
      get { return extension_; }
    }

    public const int NestedTypeFieldNumber = 3;
    private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.DescriptorProto> _repeated_nestedType_codec
        = pb::FieldCodec.ForMessage(26, global::Google.Protobuf.Reflection.DescriptorProto.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto> nestedType_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto>();
    public pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto> NestedType {
      get { return nestedType_; }
    }

    public const int EnumTypeFieldNumber = 4;
    private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.EnumDescriptorProto> _repeated_enumType_codec
        = pb::FieldCodec.ForMessage(34, global::Google.Protobuf.Reflection.EnumDescriptorProto.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumDescriptorProto> enumType_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumDescriptorProto>();
    public pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumDescriptorProto> EnumType {
      get { return enumType_; }
    }

    public const int ExtensionRangeFieldNumber = 5;
    private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange> _repeated_extensionRange_codec
        = pb::FieldCodec.ForMessage(42, global::Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange> extensionRange_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange>();
    public pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange> ExtensionRange {
      get { return extensionRange_; }
    }

    public const int OneofDeclFieldNumber = 8;
    private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.OneofDescriptorProto> _repeated_oneofDecl_codec
        = pb::FieldCodec.ForMessage(66, global::Google.Protobuf.Reflection.OneofDescriptorProto.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.OneofDescriptorProto> oneofDecl_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.OneofDescriptorProto>();
    public pbc::RepeatedField<global::Google.Protobuf.Reflection.OneofDescriptorProto> OneofDecl {
      get { return oneofDecl_; }
    }

    public const int OptionsFieldNumber = 7;
    private global::Google.Protobuf.Reflection.MessageOptions options_;
    public global::Google.Protobuf.Reflection.MessageOptions Options {
      get { return options_; }
      set {
        options_ = value;
      }
    }

    public const int ReservedRangeFieldNumber = 9;
    private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange> _repeated_reservedRange_codec
        = pb::FieldCodec.ForMessage(74, global::Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange> reservedRange_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange>();
    public pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange> ReservedRange {
      get { return reservedRange_; }
    }

    public const int ReservedNameFieldNumber = 10;
    private static readonly pb::FieldCodec<string> _repeated_reservedName_codec
        = pb::FieldCodec.ForString(82);
    private readonly pbc::RepeatedField<string> reservedName_ = new pbc::RepeatedField<string>();
    public pbc::RepeatedField<string> ReservedName {
      get { return reservedName_; }
    }

    public override bool Equals(object other) {
      return Equals(other as DescriptorProto);
    }

    public bool Equals(DescriptorProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      if(!field_.Equals(other.field_)) return false;
      if(!extension_.Equals(other.extension_)) return false;
      if(!nestedType_.Equals(other.nestedType_)) return false;
      if(!enumType_.Equals(other.enumType_)) return false;
      if(!extensionRange_.Equals(other.extensionRange_)) return false;
      if(!oneofDecl_.Equals(other.oneofDecl_)) return false;
      if (!object.Equals(Options, other.Options)) return false;
      if(!reservedRange_.Equals(other.reservedRange_)) return false;
      if(!reservedName_.Equals(other.reservedName_)) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      hash ^= field_.GetHashCode();
      hash ^= extension_.GetHashCode();
      hash ^= nestedType_.GetHashCode();
      hash ^= enumType_.GetHashCode();
      hash ^= extensionRange_.GetHashCode();
      hash ^= oneofDecl_.GetHashCode();
      if (options_ != null) hash ^= Options.GetHashCode();
      hash ^= reservedRange_.GetHashCode();
      hash ^= reservedName_.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.Default.Format(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      field_.WriteTo(output, _repeated_field_codec);
      nestedType_.WriteTo(output, _repeated_nestedType_codec);
      enumType_.WriteTo(output, _repeated_enumType_codec);
      extensionRange_.WriteTo(output, _repeated_extensionRange_codec);
      extension_.WriteTo(output, _repeated_extension_codec);
      if (options_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(Options);
      }
      oneofDecl_.WriteTo(output, _repeated_oneofDecl_codec);
      reservedRange_.WriteTo(output, _repeated_reservedRange_codec);
      reservedName_.WriteTo(output, _repeated_reservedName_codec);
    }

    public int CalculateSize() {
      int size = 0;
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      size += field_.CalculateSize(_repeated_field_codec);
      size += extension_.CalculateSize(_repeated_extension_codec);
      size += nestedType_.CalculateSize(_repeated_nestedType_codec);
      size += enumType_.CalculateSize(_repeated_enumType_codec);
      size += extensionRange_.CalculateSize(_repeated_extensionRange_codec);
      size += oneofDecl_.CalculateSize(_repeated_oneofDecl_codec);
      if (options_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options);
      }
      size += reservedRange_.CalculateSize(_repeated_reservedRange_codec);
      size += reservedName_.CalculateSize(_repeated_reservedName_codec);
      return size;
    }

    public void MergeFrom(DescriptorProto other) {
      if (other == null) {
        return;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      field_.Add(other.field_);
      extension_.Add(other.extension_);
      nestedType_.Add(other.nestedType_);
      enumType_.Add(other.enumType_);
      extensionRange_.Add(other.extensionRange_);
      oneofDecl_.Add(other.oneofDecl_);
      if (other.options_ != null) {
        if (options_ == null) {
          options_ = new global::Google.Protobuf.Reflection.MessageOptions();
        }
        Options.MergeFrom(other.Options);
      }
      reservedRange_.Add(other.reservedRange_);
      reservedName_.Add(other.reservedName_);
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            field_.AddEntriesFrom(input, _repeated_field_codec);
            break;
          }
          case 26: {
            nestedType_.AddEntriesFrom(input, _repeated_nestedType_codec);
            break;
          }
          case 34: {
            enumType_.AddEntriesFrom(input, _repeated_enumType_codec);
            break;
          }
          case 42: {
            extensionRange_.AddEntriesFrom(input, _repeated_extensionRange_codec);
            break;
          }
          case 50: {
            extension_.AddEntriesFrom(input, _repeated_extension_codec);
            break;
          }
          case 58: {
            if (options_ == null) {
              options_ = new global::Google.Protobuf.Reflection.MessageOptions();
            }
            input.ReadMessage(options_);
            break;
          }
          case 66: {
            oneofDecl_.AddEntriesFrom(input, _repeated_oneofDecl_codec);
            break;
          }
          case 74: {
            reservedRange_.AddEntriesFrom(input, _repeated_reservedRange_codec);
            break;
          }
          case 82: {
            reservedName_.AddEntriesFrom(input, _repeated_reservedName_codec);
            break;
          }
        }
      }
    }

    #region Nested types
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public static partial class Types {
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
      internal sealed partial class ExtensionRange : pb::IMessage<ExtensionRange> {
        private static readonly pb::MessageParser<ExtensionRange> _parser = new pb::MessageParser<ExtensionRange>(() => new ExtensionRange());
        public static pb::MessageParser<ExtensionRange> Parser { get { return _parser; } }

        public static pbr::MessageDescriptor Descriptor {
          get { return global::Google.Protobuf.Reflection.DescriptorProto.Descriptor.NestedTypes[0]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor {
          get { return Descriptor; }
        }

        public ExtensionRange() {
          OnConstruction();
        }

        partial void OnConstruction();

        public ExtensionRange(ExtensionRange other) : this() {
          start_ = other.start_;
          end_ = other.end_;
        }

        public ExtensionRange Clone() {
          return new ExtensionRange(this);
        }

        public const int StartFieldNumber = 1;
        private int start_;
        public int Start {
          get { return start_; }
          set {
            start_ = value;
          }
        }

        public const int EndFieldNumber = 2;
        private int end_;
        public int End {
          get { return end_; }
          set {
            end_ = value;
          }
        }

        public override bool Equals(object other) {
          return Equals(other as ExtensionRange);
        }

        public bool Equals(ExtensionRange other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (Start != other.Start) return false;
          if (End != other.End) return false;
          return true;
        }

        public override int GetHashCode() {
          int hash = 1;
          if (Start != 0) hash ^= Start.GetHashCode();
          if (End != 0) hash ^= End.GetHashCode();
          return hash;
        }

        public override string ToString() {
          return pb::JsonFormatter.Default.Format(this);
        }

        public void WriteTo(pb::CodedOutputStream output) {
          if (Start != 0) {
            output.WriteRawTag(8);
            output.WriteInt32(Start);
          }
          if (End != 0) {
            output.WriteRawTag(16);
            output.WriteInt32(End);
          }
        }

        public int CalculateSize() {
          int size = 0;
          if (Start != 0) {
            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Start);
          }
          if (End != 0) {
            size += 1 + pb::CodedOutputStream.ComputeInt32Size(End);
          }
          return size;
        }

        public void MergeFrom(ExtensionRange other) {
          if (other == null) {
            return;
          }
          if (other.Start != 0) {
            Start = other.Start;
          }
          if (other.End != 0) {
            End = other.End;
          }
        }

        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                input.SkipLastField();
                break;
              case 8: {
                Start = input.ReadInt32();
                break;
              }
              case 16: {
                End = input.ReadInt32();
                break;
              }
            }
          }
        }

      }

      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
      internal sealed partial class ReservedRange : pb::IMessage<ReservedRange> {
        private static readonly pb::MessageParser<ReservedRange> _parser = new pb::MessageParser<ReservedRange>(() => new ReservedRange());
        public static pb::MessageParser<ReservedRange> Parser { get { return _parser; } }

        public static pbr::MessageDescriptor Descriptor {
          get { return global::Google.Protobuf.Reflection.DescriptorProto.Descriptor.NestedTypes[1]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor {
          get { return Descriptor; }
        }

        public ReservedRange() {
          OnConstruction();
        }

        partial void OnConstruction();

        public ReservedRange(ReservedRange other) : this() {
          start_ = other.start_;
          end_ = other.end_;
        }

        public ReservedRange Clone() {
          return new ReservedRange(this);
        }

        public const int StartFieldNumber = 1;
        private int start_;
        public int Start {
          get { return start_; }
          set {
            start_ = value;
          }
        }

        public const int EndFieldNumber = 2;
        private int end_;
        public int End {
          get { return end_; }
          set {
            end_ = value;
          }
        }

        public override bool Equals(object other) {
          return Equals(other as ReservedRange);
        }

        public bool Equals(ReservedRange other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (Start != other.Start) return false;
          if (End != other.End) return false;
          return true;
        }

        public override int GetHashCode() {
          int hash = 1;
          if (Start != 0) hash ^= Start.GetHashCode();
          if (End != 0) hash ^= End.GetHashCode();
          return hash;
        }

        public override string ToString() {
          return pb::JsonFormatter.Default.Format(this);
        }

        public void WriteTo(pb::CodedOutputStream output) {
          if (Start != 0) {
            output.WriteRawTag(8);
            output.WriteInt32(Start);
          }
          if (End != 0) {
            output.WriteRawTag(16);
            output.WriteInt32(End);
          }
        }

        public int CalculateSize() {
          int size = 0;
          if (Start != 0) {
            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Start);
          }
          if (End != 0) {
            size += 1 + pb::CodedOutputStream.ComputeInt32Size(End);
          }
          return size;
        }

        public void MergeFrom(ReservedRange other) {
          if (other == null) {
            return;
          }
          if (other.Start != 0) {
            Start = other.Start;
          }
          if (other.End != 0) {
            End = other.End;
          }
        }

        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                input.SkipLastField();
                break;
              case 8: {
                Start = input.ReadInt32();
                break;
              }
              case 16: {
                End = input.ReadInt32();
                break;
              }
            }
          }
        }

      }

    }
    #endregion

  }

  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
  internal sealed partial class FieldDescriptorProto : pb::IMessage<FieldDescriptorProto> {
    private static readonly pb::MessageParser<FieldDescriptorProto> _parser = new pb::MessageParser<FieldDescriptorProto>(() => new FieldDescriptorProto());
    public static pb::MessageParser<FieldDescriptorProto> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[3]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public FieldDescriptorProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    public FieldDescriptorProto(FieldDescriptorProto other) : this() {
      name_ = other.name_;
      number_ = other.number_;
      label_ = other.label_;
      type_ = other.type_;
      typeName_ = other.typeName_;
      extendee_ = other.extendee_;
      defaultValue_ = other.defaultValue_;
      oneofIndex_ = other.oneofIndex_;
      Options = other.options_ != null ? other.Options.Clone() : null;
    }

    public FieldDescriptorProto Clone() {
      return new FieldDescriptorProto(this);
    }

    public const int NameFieldNumber = 1;
    private string name_ = "";
    public string Name {
      get { return name_; }
      set {
        name_ = pb::Preconditions.CheckNotNull(value, "value");
      }
    }

    public const int NumberFieldNumber = 3;
    private int number_;
    public int Number {
      get { return number_; }
      set {
        number_ = value;
      }
    }

    public const int LabelFieldNumber = 4;
    private global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label label_ = global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL;
    public global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label Label {
      get { return label_; }
      set {
        label_ = value;
      }
    }

    public const int TypeFieldNumber = 5;
    private global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type type_ = global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.TYPE_DOUBLE;
    public global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type Type {
      get { return type_; }
      set {
        type_ = value;
      }
    }

    public const int TypeNameFieldNumber = 6;
    private string typeName_ = "";
    public string TypeName {
      get { return typeName_; }
      set {
        typeName_ = pb::Preconditions.CheckNotNull(value, "value");
      }
    }

    public const int ExtendeeFieldNumber = 2;
    private string extendee_ = "";
    public string Extendee {
      get { return extendee_; }
      set {
        extendee_ = pb::Preconditions.CheckNotNull(value, "value");
      }
    }

    public const int DefaultValueFieldNumber = 7;
    private string defaultValue_ = "";
    public string DefaultValue {
      get { return defaultValue_; }
      set {
        defaultValue_ = pb::Preconditions.CheckNotNull(value, "value");
      }
    }

    public const int OneofIndexFieldNumber = 9;
    private int oneofIndex_;
    public int OneofIndex {
      get { return oneofIndex_; }
      set {
        oneofIndex_ = value;
      }
    }

    public const int OptionsFieldNumber = 8;
    private global::Google.Protobuf.Reflection.FieldOptions options_;
    public global::Google.Protobuf.Reflection.FieldOptions Options {
      get { return options_; }
      set {
        options_ = value;
      }
    }

    public override bool Equals(object other) {
      return Equals(other as FieldDescriptorProto);
    }

    public bool Equals(FieldDescriptorProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      if (Number != other.Number) return false;
      if (Label != other.Label) return false;
      if (Type != other.Type) return false;
      if (TypeName != other.TypeName) return false;
      if (Extendee != other.Extendee) return false;
      if (DefaultValue != other.DefaultValue) return false;
      if (OneofIndex != other.OneofIndex) return false;
      if (!object.Equals(Options, other.Options)) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      if (Number != 0) hash ^= Number.GetHashCode();
      if (Label != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL) hash ^= Label.GetHashCode();
      if (Type != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.TYPE_DOUBLE) hash ^= Type.GetHashCode();
      if (TypeName.Length != 0) hash ^= TypeName.GetHashCode();
      if (Extendee.Length != 0) hash ^= Extendee.GetHashCode();
      if (DefaultValue.Length != 0) hash ^= DefaultValue.GetHashCode();
      if (OneofIndex != 0) hash ^= OneofIndex.GetHashCode();
      if (options_ != null) hash ^= Options.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.Default.Format(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      if (Extendee.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Extendee);
      }
      if (Number != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(Number);
      }
      if (Label != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL) {
        output.WriteRawTag(32);
        output.WriteEnum((int) Label);
      }
      if (Type != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.TYPE_DOUBLE) {
        output.WriteRawTag(40);
        output.WriteEnum((int) Type);
      }
      if (TypeName.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(TypeName);
      }
      if (DefaultValue.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(DefaultValue);
      }
      if (options_ != null) {
        output.WriteRawTag(66);
        output.WriteMessage(Options);
      }
      if (OneofIndex != 0) {
        output.WriteRawTag(72);
        output.WriteInt32(OneofIndex);
      }
    }

    public int CalculateSize() {
      int size = 0;
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (Number != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Number);
      }
      if (Label != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Label);
      }
      if (Type != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.TYPE_DOUBLE) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type);
      }
      if (TypeName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(TypeName);
      }
      if (Extendee.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Extendee);
      }
      if (DefaultValue.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(DefaultValue);
      }
      if (OneofIndex != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(OneofIndex);
      }
      if (options_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options);
      }
      return size;
    }

    public void MergeFrom(FieldDescriptorProto other) {
      if (other == null) {
        return;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      if (other.Number != 0) {
        Number = other.Number;
      }
      if (other.Label != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL) {
        Label = other.Label;
      }
      if (other.Type != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.TYPE_DOUBLE) {
        Type = other.Type;
      }
      if (other.TypeName.Length != 0) {
        TypeName = other.TypeName;
      }
      if (other.Extendee.Length != 0) {
        Extendee = other.Extendee;
      }
      if (other.DefaultValue.Length != 0) {
        DefaultValue = other.DefaultValue;
      }
      if (other.OneofIndex != 0) {
        OneofIndex = other.OneofIndex;
      }
      if (other.options_ != null) {
        if (options_ == null) {
          options_ = new global::Google.Protobuf.Reflection.FieldOptions();
        }
        Options.MergeFrom(other.Options);
      }
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            Extendee = input.ReadString();
            break;
          }
          case 24: {
            Number = input.ReadInt32();
            break;
          }
          case 32: {
            label_ = (global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label) input.ReadEnum();
            break;
          }
          case 40: {
            type_ = (global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type) input.ReadEnum();
            break;
          }
          case 50: {
            TypeName = input.ReadString();
            break;
          }
          case 58: {
            DefaultValue = input.ReadString();
            break;
          }
          case 66: {
            if (options_ == null) {
              options_ = new global::Google.Protobuf.Reflection.FieldOptions();
            }
            input.ReadMessage(options_);
            break;
          }
          case 72: {
            OneofIndex = input.ReadInt32();
            break;
          }
        }
      }
    }

    #region Nested types
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public static partial class Types {
      internal enum Type {
        TYPE_DOUBLE = 1,
        TYPE_FLOAT = 2,
        TYPE_INT64 = 3,
        TYPE_UINT64 = 4,
        TYPE_INT32 = 5,
        TYPE_FIXED64 = 6,
        TYPE_FIXED32 = 7,
        TYPE_BOOL = 8,
        TYPE_STRING = 9,
        TYPE_GROUP = 10,
        TYPE_MESSAGE = 11,
        TYPE_BYTES = 12,
        TYPE_UINT32 = 13,
        TYPE_ENUM = 14,
        TYPE_SFIXED32 = 15,
        TYPE_SFIXED64 = 16,
        TYPE_SINT32 = 17,
        TYPE_SINT64 = 18,
      }

      internal enum Label {
        LABEL_OPTIONAL = 1,
        LABEL_REQUIRED = 2,
        LABEL_REPEATED = 3,
      }

    }
    #endregion

  }

  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
  internal sealed partial class OneofDescriptorProto : pb::IMessage<OneofDescriptorProto> {
    private static readonly pb::MessageParser<OneofDescriptorProto> _parser = new pb::MessageParser<OneofDescriptorProto>(() => new OneofDescriptorProto());
    public static pb::MessageParser<OneofDescriptorProto> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[4]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public OneofDescriptorProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    public OneofDescriptorProto(OneofDescriptorProto other) : this() {
      name_ = other.name_;
    }

    public OneofDescriptorProto Clone() {
      return new OneofDescriptorProto(this);
    }

    public const int NameFieldNumber = 1;
    private string name_ = "";
    public string Name {
      get { return name_; }
      set {
        name_ = pb::Preconditions.CheckNotNull(value, "value");
      }
    }

    public override bool Equals(object other) {
      return Equals(other as OneofDescriptorProto);
    }

    public bool Equals(OneofDescriptorProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.Default.Format(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
    }

    public int CalculateSize() {
      int size = 0;
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      return size;
    }

    public void MergeFrom(OneofDescriptorProto other) {
      if (other == null) {
        return;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
        }
      }
    }

  }

  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
  internal sealed partial class EnumDescriptorProto : pb::IMessage<EnumDescriptorProto> {
    private static readonly pb::MessageParser<EnumDescriptorProto> _parser = new pb::MessageParser<EnumDescriptorProto>(() => new EnumDescriptorProto());
    public static pb::MessageParser<EnumDescriptorProto> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[5]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public EnumDescriptorProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    public EnumDescriptorProto(EnumDescriptorProto other) : this() {
      name_ = other.name_;
      value_ = other.value_.Clone();
      Options = other.options_ != null ? other.Options.Clone() : null;
    }

    public EnumDescriptorProto Clone() {
      return new EnumDescriptorProto(this);
    }

    public const int NameFieldNumber = 1;
    private string name_ = "";
    public string Name {
      get { return name_; }
      set {
        name_ = pb::Preconditions.CheckNotNull(value, "value");
      }
    }

    public const int ValueFieldNumber = 2;
    private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.EnumValueDescriptorProto> _repeated_value_codec
        = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.Reflection.EnumValueDescriptorProto.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumValueDescriptorProto> value_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumValueDescriptorProto>();
    public pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumValueDescriptorProto> Value {
      get { return value_; }
    }

    public const int OptionsFieldNumber = 3;
    private global::Google.Protobuf.Reflection.EnumOptions options_;
    public global::Google.Protobuf.Reflection.EnumOptions Options {
      get { return options_; }
      set {
        options_ = value;
      }
    }

    public override bool Equals(object other) {
      return Equals(other as EnumDescriptorProto);
    }

    public bool Equals(EnumDescriptorProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      if(!value_.Equals(other.value_)) return false;
      if (!object.Equals(Options, other.Options)) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      hash ^= value_.GetHashCode();
      if (options_ != null) hash ^= Options.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.Default.Format(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      value_.WriteTo(output, _repeated_value_codec);
      if (options_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(Options);
      }
    }

    public int CalculateSize() {
      int size = 0;
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      size += value_.CalculateSize(_repeated_value_codec);
      if (options_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options);
      }
      return size;
    }

    public void MergeFrom(EnumDescriptorProto other) {
      if (other == null) {
        return;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      value_.Add(other.value_);
      if (other.options_ != null) {
        if (options_ == null) {
          options_ = new global::Google.Protobuf.Reflection.EnumOptions();
        }
        Options.MergeFrom(other.Options);
      }
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            value_.AddEntriesFrom(input, _repeated_value_codec);
            break;
          }
          case 26: {
            if (options_ == null) {
              options_ = new global::Google.Protobuf.Reflection.EnumOptions();
            }
            input.ReadMessage(options_);
            break;
          }
        }
      }
    }

  }

  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
  internal sealed partial class EnumValueDescriptorProto : pb::IMessage<EnumValueDescriptorProto> {
    private static readonly pb::MessageParser<EnumValueDescriptorProto> _parser = new pb::MessageParser<EnumValueDescriptorProto>(() => new EnumValueDescriptorProto());
    public static pb::MessageParser<EnumValueDescriptorProto> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[6]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public EnumValueDescriptorProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    public EnumValueDescriptorProto(EnumValueDescriptorProto other) : this() {
      name_ = other.name_;
      number_ = other.number_;
      Options = other.options_ != null ? other.Options.Clone() : null;
    }

    public EnumValueDescriptorProto Clone() {
      return new EnumValueDescriptorProto(this);
    }

    public const int NameFieldNumber = 1;
    private string name_ = "";
    public string Name {
      get { return name_; }
      set {
        name_ = pb::Preconditions.CheckNotNull(value, "value");
      }
    }

    public const int NumberFieldNumber = 2;
    private int number_;
    public int Number {
      get { return number_; }
      set {
        number_ = value;
      }
    }

    public const int OptionsFieldNumber = 3;
    private global::Google.Protobuf.Reflection.EnumValueOptions options_;
    public global::Google.Protobuf.Reflection.EnumValueOptions Options {
      get { return options_; }
      set {
        options_ = value;
      }
    }

    public override bool Equals(object other) {
      return Equals(other as EnumValueDescriptorProto);
    }

    public bool Equals(EnumValueDescriptorProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      if (Number != other.Number) return false;
      if (!object.Equals(Options, other.Options)) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      if (Number != 0) hash ^= Number.GetHashCode();
      if (options_ != null) hash ^= Options.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.Default.Format(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      if (Number != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(Number);
      }
      if (options_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(Options);
      }
    }

    public int CalculateSize() {
      int size = 0;
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (Number != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Number);
      }
      if (options_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options);
      }
      return size;
    }

    public void MergeFrom(EnumValueDescriptorProto other) {
      if (other == null) {
        return;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      if (other.Number != 0) {
        Number = other.Number;
      }
      if (other.options_ != null) {
        if (options_ == null) {
          options_ = new global::Google.Protobuf.Reflection.EnumValueOptions();
        }
        Options.MergeFrom(other.Options);
      }
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 16: {
            Number = input.ReadInt32();
            break;
          }
          case 26: {
            if (options_ == null) {
              options_ = new global::Google.Protobuf.Reflection.EnumValueOptions();
            }
            input.ReadMessage(options_);
            break;
          }
        }
      }
    }

  }

  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
  internal sealed partial class ServiceDescriptorProto : pb::IMessage<ServiceDescriptorProto> {
    private static readonly pb::MessageParser<ServiceDescriptorProto> _parser = new pb::MessageParser<ServiceDescriptorProto>(() => new ServiceDescriptorProto());
    public static pb::MessageParser<ServiceDescriptorProto> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[7]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public ServiceDescriptorProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    public ServiceDescriptorProto(ServiceDescriptorProto other) : this() {
      name_ = other.name_;
      method_ = other.method_.Clone();
      Options = other.options_ != null ? other.Options.Clone() : null;
    }

    public ServiceDescriptorProto Clone() {
      return new ServiceDescriptorProto(this);
    }

    public const int NameFieldNumber = 1;
    private string name_ = "";
    public string Name {
      get { return name_; }
      set {
        name_ = pb::Preconditions.CheckNotNull(value, "value");
      }
    }

    public const int MethodFieldNumber = 2;
    private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.MethodDescriptorProto> _repeated_method_codec
        = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.Reflection.MethodDescriptorProto.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.MethodDescriptorProto> method_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.MethodDescriptorProto>();
    public pbc::RepeatedField<global::Google.Protobuf.Reflection.MethodDescriptorProto> Method {
      get { return method_; }
    }

    public const int OptionsFieldNumber = 3;
    private global::Google.Protobuf.Reflection.ServiceOptions options_;
    public global::Google.Protobuf.Reflection.ServiceOptions Options {
      get { return options_; }
      set {
        options_ = value;
      }
    }

    public override bool Equals(object other) {
      return Equals(other as ServiceDescriptorProto);
    }

    public bool Equals(ServiceDescriptorProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      if(!method_.Equals(other.method_)) return false;
      if (!object.Equals(Options, other.Options)) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      hash ^= method_.GetHashCode();
      if (options_ != null) hash ^= Options.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.Default.Format(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      method_.WriteTo(output, _repeated_method_codec);
      if (options_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(Options);
      }
    }

    public int CalculateSize() {
      int size = 0;
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      size += method_.CalculateSize(_repeated_method_codec);
      if (options_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options);
      }
      return size;
    }

    public void MergeFrom(ServiceDescriptorProto other) {
      if (other == null) {
        return;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      method_.Add(other.method_);
      if (other.options_ != null) {
        if (options_ == null) {
          options_ = new global::Google.Protobuf.Reflection.ServiceOptions();
        }
        Options.MergeFrom(other.Options);
      }
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            method_.AddEntriesFrom(input, _repeated_method_codec);
            break;
          }
          case 26: {
            if (options_ == null) {
              options_ = new global::Google.Protobuf.Reflection.ServiceOptions();
            }
            input.ReadMessage(options_);
            break;
          }
        }
      }
    }

  }

  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
  internal sealed partial class MethodDescriptorProto : pb::IMessage<MethodDescriptorProto> {
    private static readonly pb::MessageParser<MethodDescriptorProto> _parser = new pb::MessageParser<MethodDescriptorProto>(() => new MethodDescriptorProto());
    public static pb::MessageParser<MethodDescriptorProto> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[8]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public MethodDescriptorProto() {
      OnConstruction();
    }

    partial void OnConstruction();

    public MethodDescriptorProto(MethodDescriptorProto other) : this() {
      name_ = other.name_;
      inputType_ = other.inputType_;
      outputType_ = other.outputType_;
      Options = other.options_ != null ? other.Options.Clone() : null;
      clientStreaming_ = other.clientStreaming_;
      serverStreaming_ = other.serverStreaming_;
    }

    public MethodDescriptorProto Clone() {
      return new MethodDescriptorProto(this);
    }

    public const int NameFieldNumber = 1;
    private string name_ = "";
    public string Name {
      get { return name_; }
      set {
        name_ = pb::Preconditions.CheckNotNull(value, "value");
      }
    }

    public const int InputTypeFieldNumber = 2;
    private string inputType_ = "";
    public string InputType {
      get { return inputType_; }
      set {
        inputType_ = pb::Preconditions.CheckNotNull(value, "value");
      }
    }

    public const int OutputTypeFieldNumber = 3;
    private string outputType_ = "";
    public string OutputType {
      get { return outputType_; }
      set {
        outputType_ = pb::Preconditions.CheckNotNull(value, "value");
      }
    }

    public const int OptionsFieldNumber = 4;
    private global::Google.Protobuf.Reflection.MethodOptions options_;
    public global::Google.Protobuf.Reflection.MethodOptions Options {
      get { return options_; }
      set {
        options_ = value;
      }
    }

    public const int ClientStreamingFieldNumber = 5;
    private bool clientStreaming_;
    public bool ClientStreaming {
      get { return clientStreaming_; }
      set {
        clientStreaming_ = value;
      }
    }

    public const int ServerStreamingFieldNumber = 6;
    private bool serverStreaming_;
    public bool ServerStreaming {
      get { return serverStreaming_; }
      set {
        serverStreaming_ = value;
      }
    }

    public override bool Equals(object other) {
      return Equals(other as MethodDescriptorProto);
    }

    public bool Equals(MethodDescriptorProto other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      if (InputType != other.InputType) return false;
      if (OutputType != other.OutputType) return false;
      if (!object.Equals(Options, other.Options)) return false;
      if (ClientStreaming != other.ClientStreaming) return false;
      if (ServerStreaming != other.ServerStreaming) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      if (InputType.Length != 0) hash ^= InputType.GetHashCode();
      if (OutputType.Length != 0) hash ^= OutputType.GetHashCode();
      if (options_ != null) hash ^= Options.GetHashCode();
      if (ClientStreaming != false) hash ^= ClientStreaming.GetHashCode();
      if (ServerStreaming != false) hash ^= ServerStreaming.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.Default.Format(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      if (InputType.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(InputType);
      }
      if (OutputType.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(OutputType);
      }
      if (options_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(Options);
      }
      if (ClientStreaming != false) {
        output.WriteRawTag(40);
        output.WriteBool(ClientStreaming);
      }
      if (ServerStreaming != false) {
        output.WriteRawTag(48);
        output.WriteBool(ServerStreaming);
      }
    }

    public int CalculateSize() {
      int size = 0;
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (InputType.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(InputType);
      }
      if (OutputType.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(OutputType);
      }
      if (options_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options);
      }
      if (ClientStreaming != false) {
        size += 1 + 1;
      }
      if (ServerStreaming != false) {
        size += 1 + 1;
      }
      return size;
    }

    public void MergeFrom(MethodDescriptorProto other) {
      if (other == null) {
        return;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      if (other.InputType.Length != 0) {
        InputType = other.InputType;
      }
      if (other.OutputType.Length != 0) {
        OutputType = other.OutputType;
      }
      if (other.options_ != null) {
        if (options_ == null) {
          options_ = new global::Google.Protobuf.Reflection.MethodOptions();
        }
        Options.MergeFrom(other.Options);
      }
      if (other.ClientStreaming != false) {
        ClientStreaming = other.ClientStreaming;
      }
      if (other.ServerStreaming != false) {
        ServerStreaming = other.ServerStreaming;
      }
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            InputType = input.ReadString();
            break;
          }
          case 26: {
            OutputType = input.ReadString();
            break;
          }
          case 34: {
            if (options_ == null) {
              options_ = new global::Google.Protobuf.Reflection.MethodOptions();
            }
            input.ReadMessage(options_);
            break;
          }
          case 40: {
            ClientStreaming = input.ReadBool();
            break;
          }
          case 48: {
            ServerStreaming = input.ReadBool();
            break;
          }
        }
      }
    }

  }

  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
  internal sealed partial class FileOptions : pb::IMessage<FileOptions> {
    private static readonly pb::MessageParser<FileOptions> _parser = new pb::MessageParser<FileOptions>(() => new FileOptions());
    public static pb::MessageParser<FileOptions> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[9]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public FileOptions() {
      OnConstruction();
    }

    partial void OnConstruction();

    public FileOptions(FileOptions other) : this() {
      javaPackage_ = other.javaPackage_;
      javaOuterClassname_ = other.javaOuterClassname_;
      javaMultipleFiles_ = other.javaMultipleFiles_;
      javaGenerateEqualsAndHash_ = other.javaGenerateEqualsAndHash_;
      javaStringCheckUtf8_ = other.javaStringCheckUtf8_;
      optimizeFor_ = other.optimizeFor_;
      goPackage_ = other.goPackage_;
      ccGenericServices_ = other.ccGenericServices_;
      javaGenericServices_ = other.javaGenericServices_;
      pyGenericServices_ = other.pyGenericServices_;
      deprecated_ = other.deprecated_;
      ccEnableArenas_ = other.ccEnableArenas_;
      objcClassPrefix_ = other.objcClassPrefix_;
      csharpNamespace_ = other.csharpNamespace_;
      javananoUseDeprecatedPackage_ = other.javananoUseDeprecatedPackage_;
      uninterpretedOption_ = other.uninterpretedOption_.Clone();
    }

    public FileOptions Clone() {
      return new FileOptions(this);
    }

    public const int JavaPackageFieldNumber = 1;
    private string javaPackage_ = "";
    public string JavaPackage {
      get { return javaPackage_; }
      set {
        javaPackage_ = pb::Preconditions.CheckNotNull(value, "value");
      }
    }

    public const int JavaOuterClassnameFieldNumber = 8;
    private string javaOuterClassname_ = "";
    public string JavaOuterClassname {
      get { return javaOuterClassname_; }
      set {
        javaOuterClassname_ = pb::Preconditions.CheckNotNull(value, "value");
      }
    }

    public const int JavaMultipleFilesFieldNumber = 10;
    private bool javaMultipleFiles_;
    public bool JavaMultipleFiles {
      get { return javaMultipleFiles_; }
      set {
        javaMultipleFiles_ = value;
      }
    }

    public const int JavaGenerateEqualsAndHashFieldNumber = 20;
    private bool javaGenerateEqualsAndHash_;
    public bool JavaGenerateEqualsAndHash {
      get { return javaGenerateEqualsAndHash_; }
      set {
        javaGenerateEqualsAndHash_ = value;
      }
    }

    public const int JavaStringCheckUtf8FieldNumber = 27;
    private bool javaStringCheckUtf8_;
    public bool JavaStringCheckUtf8 {
      get { return javaStringCheckUtf8_; }
      set {
        javaStringCheckUtf8_ = value;
      }
    }

    public const int OptimizeForFieldNumber = 9;
    private global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode optimizeFor_ = global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.SPEED;
    public global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode OptimizeFor {
      get { return optimizeFor_; }
      set {
        optimizeFor_ = value;
      }
    }

    public const int GoPackageFieldNumber = 11;
    private string goPackage_ = "";
    public string GoPackage {
      get { return goPackage_; }
      set {
        goPackage_ = pb::Preconditions.CheckNotNull(value, "value");
      }
    }

    public const int CcGenericServicesFieldNumber = 16;
    private bool ccGenericServices_;
    public bool CcGenericServices {
      get { return ccGenericServices_; }
      set {
        ccGenericServices_ = value;
      }
    }

    public const int JavaGenericServicesFieldNumber = 17;
    private bool javaGenericServices_;
    public bool JavaGenericServices {
      get { return javaGenericServices_; }
      set {
        javaGenericServices_ = value;
      }
    }

    public const int PyGenericServicesFieldNumber = 18;
    private bool pyGenericServices_;
    public bool PyGenericServices {
      get { return pyGenericServices_; }
      set {
        pyGenericServices_ = value;
      }
    }

    public const int DeprecatedFieldNumber = 23;
    private bool deprecated_;
    public bool Deprecated {
      get { return deprecated_; }
      set {
        deprecated_ = value;
      }
    }

    public const int CcEnableArenasFieldNumber = 31;
    private bool ccEnableArenas_;
    public bool CcEnableArenas {
      get { return ccEnableArenas_; }
      set {
        ccEnableArenas_ = value;
      }
    }

    public const int ObjcClassPrefixFieldNumber = 36;
    private string objcClassPrefix_ = "";
    public string ObjcClassPrefix {
      get { return objcClassPrefix_; }
      set {
        objcClassPrefix_ = pb::Preconditions.CheckNotNull(value, "value");
      }
    }

    public const int CsharpNamespaceFieldNumber = 37;
    private string csharpNamespace_ = "";
    public string CsharpNamespace {
      get { return csharpNamespace_; }
      set {
        csharpNamespace_ = pb::Preconditions.CheckNotNull(value, "value");
      }
    }

    public const int JavananoUseDeprecatedPackageFieldNumber = 38;
    private bool javananoUseDeprecatedPackage_;
    public bool JavananoUseDeprecatedPackage {
      get { return javananoUseDeprecatedPackage_; }
      set {
        javananoUseDeprecatedPackage_ = value;
      }
    }

    public const int UninterpretedOptionFieldNumber = 999;
    private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.UninterpretedOption> _repeated_uninterpretedOption_codec
        = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption>();
    public pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> UninterpretedOption {
      get { return uninterpretedOption_; }
    }

    public override bool Equals(object other) {
      return Equals(other as FileOptions);
    }

    public bool Equals(FileOptions other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (JavaPackage != other.JavaPackage) return false;
      if (JavaOuterClassname != other.JavaOuterClassname) return false;
      if (JavaMultipleFiles != other.JavaMultipleFiles) return false;
      if (JavaGenerateEqualsAndHash != other.JavaGenerateEqualsAndHash) return false;
      if (JavaStringCheckUtf8 != other.JavaStringCheckUtf8) return false;
      if (OptimizeFor != other.OptimizeFor) return false;
      if (GoPackage != other.GoPackage) return false;
      if (CcGenericServices != other.CcGenericServices) return false;
      if (JavaGenericServices != other.JavaGenericServices) return false;
      if (PyGenericServices != other.PyGenericServices) return false;
      if (Deprecated != other.Deprecated) return false;
      if (CcEnableArenas != other.CcEnableArenas) return false;
      if (ObjcClassPrefix != other.ObjcClassPrefix) return false;
      if (CsharpNamespace != other.CsharpNamespace) return false;
      if (JavananoUseDeprecatedPackage != other.JavananoUseDeprecatedPackage) return false;
      if(!uninterpretedOption_.Equals(other.uninterpretedOption_)) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      if (JavaPackage.Length != 0) hash ^= JavaPackage.GetHashCode();
      if (JavaOuterClassname.Length != 0) hash ^= JavaOuterClassname.GetHashCode();
      if (JavaMultipleFiles != false) hash ^= JavaMultipleFiles.GetHashCode();
      if (JavaGenerateEqualsAndHash != false) hash ^= JavaGenerateEqualsAndHash.GetHashCode();
      if (JavaStringCheckUtf8 != false) hash ^= JavaStringCheckUtf8.GetHashCode();
      if (OptimizeFor != global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.SPEED) hash ^= OptimizeFor.GetHashCode();
      if (GoPackage.Length != 0) hash ^= GoPackage.GetHashCode();
      if (CcGenericServices != false) hash ^= CcGenericServices.GetHashCode();
      if (JavaGenericServices != false) hash ^= JavaGenericServices.GetHashCode();
      if (PyGenericServices != false) hash ^= PyGenericServices.GetHashCode();
      if (Deprecated != false) hash ^= Deprecated.GetHashCode();
      if (CcEnableArenas != false) hash ^= CcEnableArenas.GetHashCode();
      if (ObjcClassPrefix.Length != 0) hash ^= ObjcClassPrefix.GetHashCode();
      if (CsharpNamespace.Length != 0) hash ^= CsharpNamespace.GetHashCode();
      if (JavananoUseDeprecatedPackage != false) hash ^= JavananoUseDeprecatedPackage.GetHashCode();
      hash ^= uninterpretedOption_.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.Default.Format(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      if (JavaPackage.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(JavaPackage);
      }
      if (JavaOuterClassname.Length != 0) {
        output.WriteRawTag(66);
        output.WriteString(JavaOuterClassname);
      }
      if (OptimizeFor != global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.SPEED) {
        output.WriteRawTag(72);
        output.WriteEnum((int) OptimizeFor);
      }
      if (JavaMultipleFiles != false) {
        output.WriteRawTag(80);
        output.WriteBool(JavaMultipleFiles);
      }
      if (GoPackage.Length != 0) {
        output.WriteRawTag(90);
        output.WriteString(GoPackage);
      }
      if (CcGenericServices != false) {
        output.WriteRawTag(128, 1);
        output.WriteBool(CcGenericServices);
      }
      if (JavaGenericServices != false) {
        output.WriteRawTag(136, 1);
        output.WriteBool(JavaGenericServices);
      }
      if (PyGenericServices != false) {
        output.WriteRawTag(144, 1);
        output.WriteBool(PyGenericServices);
      }
      if (JavaGenerateEqualsAndHash != false) {
        output.WriteRawTag(160, 1);
        output.WriteBool(JavaGenerateEqualsAndHash);
      }
      if (Deprecated != false) {
        output.WriteRawTag(184, 1);
        output.WriteBool(Deprecated);
      }
      if (JavaStringCheckUtf8 != false) {
        output.WriteRawTag(216, 1);
        output.WriteBool(JavaStringCheckUtf8);
      }
      if (CcEnableArenas != false) {
        output.WriteRawTag(248, 1);
        output.WriteBool(CcEnableArenas);
      }
      if (ObjcClassPrefix.Length != 0) {
        output.WriteRawTag(162, 2);
        output.WriteString(ObjcClassPrefix);
      }
      if (CsharpNamespace.Length != 0) {
        output.WriteRawTag(170, 2);
        output.WriteString(CsharpNamespace);
      }
      if (JavananoUseDeprecatedPackage != false) {
        output.WriteRawTag(176, 2);
        output.WriteBool(JavananoUseDeprecatedPackage);
      }
      uninterpretedOption_.WriteTo(output, _repeated_uninterpretedOption_codec);
    }

    public int CalculateSize() {
      int size = 0;
      if (JavaPackage.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(JavaPackage);
      }
      if (JavaOuterClassname.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(JavaOuterClassname);
      }
      if (JavaMultipleFiles != false) {
        size += 1 + 1;
      }
      if (JavaGenerateEqualsAndHash != false) {
        size += 2 + 1;
      }
      if (JavaStringCheckUtf8 != false) {
        size += 2 + 1;
      }
      if (OptimizeFor != global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.SPEED) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) OptimizeFor);
      }
      if (GoPackage.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(GoPackage);
      }
      if (CcGenericServices != false) {
        size += 2 + 1;
      }
      if (JavaGenericServices != false) {
        size += 2 + 1;
      }
      if (PyGenericServices != false) {
        size += 2 + 1;
      }
      if (Deprecated != false) {
        size += 2 + 1;
      }
      if (CcEnableArenas != false) {
        size += 2 + 1;
      }
      if (ObjcClassPrefix.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(ObjcClassPrefix);
      }
      if (CsharpNamespace.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(CsharpNamespace);
      }
      if (JavananoUseDeprecatedPackage != false) {
        size += 2 + 1;
      }
      size += uninterpretedOption_.CalculateSize(_repeated_uninterpretedOption_codec);
      return size;
    }

    public void MergeFrom(FileOptions other) {
      if (other == null) {
        return;
      }
      if (other.JavaPackage.Length != 0) {
        JavaPackage = other.JavaPackage;
      }
      if (other.JavaOuterClassname.Length != 0) {
        JavaOuterClassname = other.JavaOuterClassname;
      }
      if (other.JavaMultipleFiles != false) {
        JavaMultipleFiles = other.JavaMultipleFiles;
      }
      if (other.JavaGenerateEqualsAndHash != false) {
        JavaGenerateEqualsAndHash = other.JavaGenerateEqualsAndHash;
      }
      if (other.JavaStringCheckUtf8 != false) {
        JavaStringCheckUtf8 = other.JavaStringCheckUtf8;
      }
      if (other.OptimizeFor != global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.SPEED) {
        OptimizeFor = other.OptimizeFor;
      }
      if (other.GoPackage.Length != 0) {
        GoPackage = other.GoPackage;
      }
      if (other.CcGenericServices != false) {
        CcGenericServices = other.CcGenericServices;
      }
      if (other.JavaGenericServices != false) {
        JavaGenericServices = other.JavaGenericServices;
      }
      if (other.PyGenericServices != false) {
        PyGenericServices = other.PyGenericServices;
      }
      if (other.Deprecated != false) {
        Deprecated = other.Deprecated;
      }
      if (other.CcEnableArenas != false) {
        CcEnableArenas = other.CcEnableArenas;
      }
      if (other.ObjcClassPrefix.Length != 0) {
        ObjcClassPrefix = other.ObjcClassPrefix;
      }
      if (other.CsharpNamespace.Length != 0) {
        CsharpNamespace = other.CsharpNamespace;
      }
      if (other.JavananoUseDeprecatedPackage != false) {
        JavananoUseDeprecatedPackage = other.JavananoUseDeprecatedPackage;
      }
      uninterpretedOption_.Add(other.uninterpretedOption_);
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            JavaPackage = input.ReadString();
            break;
          }
          case 66: {
            JavaOuterClassname = input.ReadString();
            break;
          }
          case 72: {
            optimizeFor_ = (global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode) input.ReadEnum();
            break;
          }
          case 80: {
            JavaMultipleFiles = input.ReadBool();
            break;
          }
          case 90: {
            GoPackage = input.ReadString();
            break;
          }
          case 128: {
            CcGenericServices = input.ReadBool();
            break;
          }
          case 136: {
            JavaGenericServices = input.ReadBool();
            break;
          }
          case 144: {
            PyGenericServices = input.ReadBool();
            break;
          }
          case 160: {
            JavaGenerateEqualsAndHash = input.ReadBool();
            break;
          }
          case 184: {
            Deprecated = input.ReadBool();
            break;
          }
          case 216: {
            JavaStringCheckUtf8 = input.ReadBool();
            break;
          }
          case 248: {
            CcEnableArenas = input.ReadBool();
            break;
          }
          case 290: {
            ObjcClassPrefix = input.ReadString();
            break;
          }
          case 298: {
            CsharpNamespace = input.ReadString();
            break;
          }
          case 304: {
            JavananoUseDeprecatedPackage = input.ReadBool();
            break;
          }
          case 7994: {
            uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec);
            break;
          }
        }
      }
    }

    #region Nested types
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public static partial class Types {
      internal enum OptimizeMode {
        SPEED = 1,
        CODE_SIZE = 2,
        LITE_RUNTIME = 3,
      }

    }
    #endregion

  }

  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
  internal sealed partial class MessageOptions : pb::IMessage<MessageOptions> {
    private static readonly pb::MessageParser<MessageOptions> _parser = new pb::MessageParser<MessageOptions>(() => new MessageOptions());
    public static pb::MessageParser<MessageOptions> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[10]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public MessageOptions() {
      OnConstruction();
    }

    partial void OnConstruction();

    public MessageOptions(MessageOptions other) : this() {
      messageSetWireFormat_ = other.messageSetWireFormat_;
      noStandardDescriptorAccessor_ = other.noStandardDescriptorAccessor_;
      deprecated_ = other.deprecated_;
      mapEntry_ = other.mapEntry_;
      uninterpretedOption_ = other.uninterpretedOption_.Clone();
    }

    public MessageOptions Clone() {
      return new MessageOptions(this);
    }

    public const int MessageSetWireFormatFieldNumber = 1;
    private bool messageSetWireFormat_;
    public bool MessageSetWireFormat {
      get { return messageSetWireFormat_; }
      set {
        messageSetWireFormat_ = value;
      }
    }

    public const int NoStandardDescriptorAccessorFieldNumber = 2;
    private bool noStandardDescriptorAccessor_;
    public bool NoStandardDescriptorAccessor {
      get { return noStandardDescriptorAccessor_; }
      set {
        noStandardDescriptorAccessor_ = value;
      }
    }

    public const int DeprecatedFieldNumber = 3;
    private bool deprecated_;
    public bool Deprecated {
      get { return deprecated_; }
      set {
        deprecated_ = value;
      }
    }

    public const int MapEntryFieldNumber = 7;
    private bool mapEntry_;
    public bool MapEntry {
      get { return mapEntry_; }
      set {
        mapEntry_ = value;
      }
    }

    public const int UninterpretedOptionFieldNumber = 999;
    private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.UninterpretedOption> _repeated_uninterpretedOption_codec
        = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption>();
    public pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> UninterpretedOption {
      get { return uninterpretedOption_; }
    }

    public override bool Equals(object other) {
      return Equals(other as MessageOptions);
    }

    public bool Equals(MessageOptions other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (MessageSetWireFormat != other.MessageSetWireFormat) return false;
      if (NoStandardDescriptorAccessor != other.NoStandardDescriptorAccessor) return false;
      if (Deprecated != other.Deprecated) return false;
      if (MapEntry != other.MapEntry) return false;
      if(!uninterpretedOption_.Equals(other.uninterpretedOption_)) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      if (MessageSetWireFormat != false) hash ^= MessageSetWireFormat.GetHashCode();
      if (NoStandardDescriptorAccessor != false) hash ^= NoStandardDescriptorAccessor.GetHashCode();
      if (Deprecated != false) hash ^= Deprecated.GetHashCode();
      if (MapEntry != false) hash ^= MapEntry.GetHashCode();
      hash ^= uninterpretedOption_.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.Default.Format(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      if (MessageSetWireFormat != false) {
        output.WriteRawTag(8);
        output.WriteBool(MessageSetWireFormat);
      }
      if (NoStandardDescriptorAccessor != false) {
        output.WriteRawTag(16);
        output.WriteBool(NoStandardDescriptorAccessor);
      }
      if (Deprecated != false) {
        output.WriteRawTag(24);
        output.WriteBool(Deprecated);
      }
      if (MapEntry != false) {
        output.WriteRawTag(56);
        output.WriteBool(MapEntry);
      }
      uninterpretedOption_.WriteTo(output, _repeated_uninterpretedOption_codec);
    }

    public int CalculateSize() {
      int size = 0;
      if (MessageSetWireFormat != false) {
        size += 1 + 1;
      }
      if (NoStandardDescriptorAccessor != false) {
        size += 1 + 1;
      }
      if (Deprecated != false) {
        size += 1 + 1;
      }
      if (MapEntry != false) {
        size += 1 + 1;
      }
      size += uninterpretedOption_.CalculateSize(_repeated_uninterpretedOption_codec);
      return size;
    }

    public void MergeFrom(MessageOptions other) {
      if (other == null) {
        return;
      }
      if (other.MessageSetWireFormat != false) {
        MessageSetWireFormat = other.MessageSetWireFormat;
      }
      if (other.NoStandardDescriptorAccessor != false) {
        NoStandardDescriptorAccessor = other.NoStandardDescriptorAccessor;
      }
      if (other.Deprecated != false) {
        Deprecated = other.Deprecated;
      }
      if (other.MapEntry != false) {
        MapEntry = other.MapEntry;
      }
      uninterpretedOption_.Add(other.uninterpretedOption_);
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 8: {
            MessageSetWireFormat = input.ReadBool();
            break;
          }
          case 16: {
            NoStandardDescriptorAccessor = input.ReadBool();
            break;
          }
          case 24: {
            Deprecated = input.ReadBool();
            break;
          }
          case 56: {
            MapEntry = input.ReadBool();
            break;
          }
          case 7994: {
            uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec);
            break;
          }
        }
      }
    }

  }

  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
  internal sealed partial class FieldOptions : pb::IMessage<FieldOptions> {
    private static readonly pb::MessageParser<FieldOptions> _parser = new pb::MessageParser<FieldOptions>(() => new FieldOptions());
    public static pb::MessageParser<FieldOptions> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[11]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public FieldOptions() {
      OnConstruction();
    }

    partial void OnConstruction();

    public FieldOptions(FieldOptions other) : this() {
      ctype_ = other.ctype_;
      packed_ = other.packed_;
      jstype_ = other.jstype_;
      lazy_ = other.lazy_;
      deprecated_ = other.deprecated_;
      weak_ = other.weak_;
      uninterpretedOption_ = other.uninterpretedOption_.Clone();
    }

    public FieldOptions Clone() {
      return new FieldOptions(this);
    }

    public const int CtypeFieldNumber = 1;
    private global::Google.Protobuf.Reflection.FieldOptions.Types.CType ctype_ = global::Google.Protobuf.Reflection.FieldOptions.Types.CType.STRING;
    public global::Google.Protobuf.Reflection.FieldOptions.Types.CType Ctype {
      get { return ctype_; }
      set {
        ctype_ = value;
      }
    }

    public const int PackedFieldNumber = 2;
    private bool packed_;
    public bool Packed {
      get { return packed_; }
      set {
        packed_ = value;
      }
    }

    public const int JstypeFieldNumber = 6;
    private global::Google.Protobuf.Reflection.FieldOptions.Types.JSType jstype_ = global::Google.Protobuf.Reflection.FieldOptions.Types.JSType.JS_NORMAL;
    public global::Google.Protobuf.Reflection.FieldOptions.Types.JSType Jstype {
      get { return jstype_; }
      set {
        jstype_ = value;
      }
    }

    public const int LazyFieldNumber = 5;
    private bool lazy_;
    public bool Lazy {
      get { return lazy_; }
      set {
        lazy_ = value;
      }
    }

    public const int DeprecatedFieldNumber = 3;
    private bool deprecated_;
    public bool Deprecated {
      get { return deprecated_; }
      set {
        deprecated_ = value;
      }
    }

    public const int WeakFieldNumber = 10;
    private bool weak_;
    public bool Weak {
      get { return weak_; }
      set {
        weak_ = value;
      }
    }

    public const int UninterpretedOptionFieldNumber = 999;
    private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.UninterpretedOption> _repeated_uninterpretedOption_codec
        = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption>();
    public pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> UninterpretedOption {
      get { return uninterpretedOption_; }
    }

    public override bool Equals(object other) {
      return Equals(other as FieldOptions);
    }

    public bool Equals(FieldOptions other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Ctype != other.Ctype) return false;
      if (Packed != other.Packed) return false;
      if (Jstype != other.Jstype) return false;
      if (Lazy != other.Lazy) return false;
      if (Deprecated != other.Deprecated) return false;
      if (Weak != other.Weak) return false;
      if(!uninterpretedOption_.Equals(other.uninterpretedOption_)) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      if (Ctype != global::Google.Protobuf.Reflection.FieldOptions.Types.CType.STRING) hash ^= Ctype.GetHashCode();
      if (Packed != false) hash ^= Packed.GetHashCode();
      if (Jstype != global::Google.Protobuf.Reflection.FieldOptions.Types.JSType.JS_NORMAL) hash ^= Jstype.GetHashCode();
      if (Lazy != false) hash ^= Lazy.GetHashCode();
      if (Deprecated != false) hash ^= Deprecated.GetHashCode();
      if (Weak != false) hash ^= Weak.GetHashCode();
      hash ^= uninterpretedOption_.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.Default.Format(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      if (Ctype != global::Google.Protobuf.Reflection.FieldOptions.Types.CType.STRING) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Ctype);
      }
      if (Packed != false) {
        output.WriteRawTag(16);
        output.WriteBool(Packed);
      }
      if (Deprecated != false) {
        output.WriteRawTag(24);
        output.WriteBool(Deprecated);
      }
      if (Lazy != false) {
        output.WriteRawTag(40);
        output.WriteBool(Lazy);
      }
      if (Jstype != global::Google.Protobuf.Reflection.FieldOptions.Types.JSType.JS_NORMAL) {
        output.WriteRawTag(48);
        output.WriteEnum((int) Jstype);
      }
      if (Weak != false) {
        output.WriteRawTag(80);
        output.WriteBool(Weak);
      }
      uninterpretedOption_.WriteTo(output, _repeated_uninterpretedOption_codec);
    }

    public int CalculateSize() {
      int size = 0;
      if (Ctype != global::Google.Protobuf.Reflection.FieldOptions.Types.CType.STRING) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Ctype);
      }
      if (Packed != false) {
        size += 1 + 1;
      }
      if (Jstype != global::Google.Protobuf.Reflection.FieldOptions.Types.JSType.JS_NORMAL) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Jstype);
      }
      if (Lazy != false) {
        size += 1 + 1;
      }
      if (Deprecated != false) {
        size += 1 + 1;
      }
      if (Weak != false) {
        size += 1 + 1;
      }
      size += uninterpretedOption_.CalculateSize(_repeated_uninterpretedOption_codec);
      return size;
    }

    public void MergeFrom(FieldOptions other) {
      if (other == null) {
        return;
      }
      if (other.Ctype != global::Google.Protobuf.Reflection.FieldOptions.Types.CType.STRING) {
        Ctype = other.Ctype;
      }
      if (other.Packed != false) {
        Packed = other.Packed;
      }
      if (other.Jstype != global::Google.Protobuf.Reflection.FieldOptions.Types.JSType.JS_NORMAL) {
        Jstype = other.Jstype;
      }
      if (other.Lazy != false) {
        Lazy = other.Lazy;
      }
      if (other.Deprecated != false) {
        Deprecated = other.Deprecated;
      }
      if (other.Weak != false) {
        Weak = other.Weak;
      }
      uninterpretedOption_.Add(other.uninterpretedOption_);
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 8: {
            ctype_ = (global::Google.Protobuf.Reflection.FieldOptions.Types.CType) input.ReadEnum();
            break;
          }
          case 16: {
            Packed = input.ReadBool();
            break;
          }
          case 24: {
            Deprecated = input.ReadBool();
            break;
          }
          case 40: {
            Lazy = input.ReadBool();
            break;
          }
          case 48: {
            jstype_ = (global::Google.Protobuf.Reflection.FieldOptions.Types.JSType) input.ReadEnum();
            break;
          }
          case 80: {
            Weak = input.ReadBool();
            break;
          }
          case 7994: {
            uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec);
            break;
          }
        }
      }
    }

    #region Nested types
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public static partial class Types {
      internal enum CType {
        STRING = 0,
        CORD = 1,
        STRING_PIECE = 2,
      }

      internal enum JSType {
        JS_NORMAL = 0,
        JS_STRING = 1,
        JS_NUMBER = 2,
      }

    }
    #endregion

  }

  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
  internal sealed partial class EnumOptions : pb::IMessage<EnumOptions> {
    private static readonly pb::MessageParser<EnumOptions> _parser = new pb::MessageParser<EnumOptions>(() => new EnumOptions());
    public static pb::MessageParser<EnumOptions> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[12]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public EnumOptions() {
      OnConstruction();
    }

    partial void OnConstruction();

    public EnumOptions(EnumOptions other) : this() {
      allowAlias_ = other.allowAlias_;
      deprecated_ = other.deprecated_;
      uninterpretedOption_ = other.uninterpretedOption_.Clone();
    }

    public EnumOptions Clone() {
      return new EnumOptions(this);
    }

    public const int AllowAliasFieldNumber = 2;
    private bool allowAlias_;
    public bool AllowAlias {
      get { return allowAlias_; }
      set {
        allowAlias_ = value;
      }
    }

    public const int DeprecatedFieldNumber = 3;
    private bool deprecated_;
    public bool Deprecated {
      get { return deprecated_; }
      set {
        deprecated_ = value;
      }
    }

    public const int UninterpretedOptionFieldNumber = 999;
    private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.UninterpretedOption> _repeated_uninterpretedOption_codec
        = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption>();
    public pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> UninterpretedOption {
      get { return uninterpretedOption_; }
    }

    public override bool Equals(object other) {
      return Equals(other as EnumOptions);
    }

    public bool Equals(EnumOptions other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (AllowAlias != other.AllowAlias) return false;
      if (Deprecated != other.Deprecated) return false;
      if(!uninterpretedOption_.Equals(other.uninterpretedOption_)) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      if (AllowAlias != false) hash ^= AllowAlias.GetHashCode();
      if (Deprecated != false) hash ^= Deprecated.GetHashCode();
      hash ^= uninterpretedOption_.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.Default.Format(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      if (AllowAlias != false) {
        output.WriteRawTag(16);
        output.WriteBool(AllowAlias);
      }
      if (Deprecated != false) {
        output.WriteRawTag(24);
        output.WriteBool(Deprecated);
      }
      uninterpretedOption_.WriteTo(output, _repeated_uninterpretedOption_codec);
    }

    public int CalculateSize() {
      int size = 0;
      if (AllowAlias != false) {
        size += 1 + 1;
      }
      if (Deprecated != false) {
        size += 1 + 1;
      }
      size += uninterpretedOption_.CalculateSize(_repeated_uninterpretedOption_codec);
      return size;
    }

    public void MergeFrom(EnumOptions other) {
      if (other == null) {
        return;
      }
      if (other.AllowAlias != false) {
        AllowAlias = other.AllowAlias;
      }
      if (other.Deprecated != false) {
        Deprecated = other.Deprecated;
      }
      uninterpretedOption_.Add(other.uninterpretedOption_);
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 16: {
            AllowAlias = input.ReadBool();
            break;
          }
          case 24: {
            Deprecated = input.ReadBool();
            break;
          }
          case 7994: {
            uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec);
            break;
          }
        }
      }
    }

  }

  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
  internal sealed partial class EnumValueOptions : pb::IMessage<EnumValueOptions> {
    private static readonly pb::MessageParser<EnumValueOptions> _parser = new pb::MessageParser<EnumValueOptions>(() => new EnumValueOptions());
    public static pb::MessageParser<EnumValueOptions> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[13]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public EnumValueOptions() {
      OnConstruction();
    }

    partial void OnConstruction();

    public EnumValueOptions(EnumValueOptions other) : this() {
      deprecated_ = other.deprecated_;
      uninterpretedOption_ = other.uninterpretedOption_.Clone();
    }

    public EnumValueOptions Clone() {
      return new EnumValueOptions(this);
    }

    public const int DeprecatedFieldNumber = 1;
    private bool deprecated_;
    public bool Deprecated {
      get { return deprecated_; }
      set {
        deprecated_ = value;
      }
    }

    public const int UninterpretedOptionFieldNumber = 999;
    private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.UninterpretedOption> _repeated_uninterpretedOption_codec
        = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption>();
    public pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> UninterpretedOption {
      get { return uninterpretedOption_; }
    }

    public override bool Equals(object other) {
      return Equals(other as EnumValueOptions);
    }

    public bool Equals(EnumValueOptions other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Deprecated != other.Deprecated) return false;
      if(!uninterpretedOption_.Equals(other.uninterpretedOption_)) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      if (Deprecated != false) hash ^= Deprecated.GetHashCode();
      hash ^= uninterpretedOption_.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.Default.Format(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      if (Deprecated != false) {
        output.WriteRawTag(8);
        output.WriteBool(Deprecated);
      }
      uninterpretedOption_.WriteTo(output, _repeated_uninterpretedOption_codec);
    }

    public int CalculateSize() {
      int size = 0;
      if (Deprecated != false) {
        size += 1 + 1;
      }
      size += uninterpretedOption_.CalculateSize(_repeated_uninterpretedOption_codec);
      return size;
    }

    public void MergeFrom(EnumValueOptions other) {
      if (other == null) {
        return;
      }
      if (other.Deprecated != false) {
        Deprecated = other.Deprecated;
      }
      uninterpretedOption_.Add(other.uninterpretedOption_);
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 8: {
            Deprecated = input.ReadBool();
            break;
          }
          case 7994: {
            uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec);
            break;
          }
        }
      }
    }

  }

  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
  internal sealed partial class ServiceOptions : pb::IMessage<ServiceOptions> {
    private static readonly pb::MessageParser<ServiceOptions> _parser = new pb::MessageParser<ServiceOptions>(() => new ServiceOptions());
    public static pb::MessageParser<ServiceOptions> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[14]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public ServiceOptions() {
      OnConstruction();
    }

    partial void OnConstruction();

    public ServiceOptions(ServiceOptions other) : this() {
      deprecated_ = other.deprecated_;
      uninterpretedOption_ = other.uninterpretedOption_.Clone();
    }

    public ServiceOptions Clone() {
      return new ServiceOptions(this);
    }

    public const int DeprecatedFieldNumber = 33;
    private bool deprecated_;
    public bool Deprecated {
      get { return deprecated_; }
      set {
        deprecated_ = value;
      }
    }

    public const int UninterpretedOptionFieldNumber = 999;
    private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.UninterpretedOption> _repeated_uninterpretedOption_codec
        = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption>();
    public pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> UninterpretedOption {
      get { return uninterpretedOption_; }
    }

    public override bool Equals(object other) {
      return Equals(other as ServiceOptions);
    }

    public bool Equals(ServiceOptions other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Deprecated != other.Deprecated) return false;
      if(!uninterpretedOption_.Equals(other.uninterpretedOption_)) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      if (Deprecated != false) hash ^= Deprecated.GetHashCode();
      hash ^= uninterpretedOption_.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.Default.Format(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      if (Deprecated != false) {
        output.WriteRawTag(136, 2);
        output.WriteBool(Deprecated);
      }
      uninterpretedOption_.WriteTo(output, _repeated_uninterpretedOption_codec);
    }

    public int CalculateSize() {
      int size = 0;
      if (Deprecated != false) {
        size += 2 + 1;
      }
      size += uninterpretedOption_.CalculateSize(_repeated_uninterpretedOption_codec);
      return size;
    }

    public void MergeFrom(ServiceOptions other) {
      if (other == null) {
        return;
      }
      if (other.Deprecated != false) {
        Deprecated = other.Deprecated;
      }
      uninterpretedOption_.Add(other.uninterpretedOption_);
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 264: {
            Deprecated = input.ReadBool();
            break;
          }
          case 7994: {
            uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec);
            break;
          }
        }
      }
    }

  }

  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
  internal sealed partial class MethodOptions : pb::IMessage<MethodOptions> {
    private static readonly pb::MessageParser<MethodOptions> _parser = new pb::MessageParser<MethodOptions>(() => new MethodOptions());
    public static pb::MessageParser<MethodOptions> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[15]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public MethodOptions() {
      OnConstruction();
    }

    partial void OnConstruction();

    public MethodOptions(MethodOptions other) : this() {
      deprecated_ = other.deprecated_;
      uninterpretedOption_ = other.uninterpretedOption_.Clone();
    }

    public MethodOptions Clone() {
      return new MethodOptions(this);
    }

    public const int DeprecatedFieldNumber = 33;
    private bool deprecated_;
    public bool Deprecated {
      get { return deprecated_; }
      set {
        deprecated_ = value;
      }
    }

    public const int UninterpretedOptionFieldNumber = 999;
    private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.UninterpretedOption> _repeated_uninterpretedOption_codec
        = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption>();
    public pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> UninterpretedOption {
      get { return uninterpretedOption_; }
    }

    public override bool Equals(object other) {
      return Equals(other as MethodOptions);
    }

    public bool Equals(MethodOptions other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Deprecated != other.Deprecated) return false;
      if(!uninterpretedOption_.Equals(other.uninterpretedOption_)) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      if (Deprecated != false) hash ^= Deprecated.GetHashCode();
      hash ^= uninterpretedOption_.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.Default.Format(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      if (Deprecated != false) {
        output.WriteRawTag(136, 2);
        output.WriteBool(Deprecated);
      }
      uninterpretedOption_.WriteTo(output, _repeated_uninterpretedOption_codec);
    }

    public int CalculateSize() {
      int size = 0;
      if (Deprecated != false) {
        size += 2 + 1;
      }
      size += uninterpretedOption_.CalculateSize(_repeated_uninterpretedOption_codec);
      return size;
    }

    public void MergeFrom(MethodOptions other) {
      if (other == null) {
        return;
      }
      if (other.Deprecated != false) {
        Deprecated = other.Deprecated;
      }
      uninterpretedOption_.Add(other.uninterpretedOption_);
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 264: {
            Deprecated = input.ReadBool();
            break;
          }
          case 7994: {
            uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec);
            break;
          }
        }
      }
    }

  }

  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
  internal sealed partial class UninterpretedOption : pb::IMessage<UninterpretedOption> {
    private static readonly pb::MessageParser<UninterpretedOption> _parser = new pb::MessageParser<UninterpretedOption>(() => new UninterpretedOption());
    public static pb::MessageParser<UninterpretedOption> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[16]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public UninterpretedOption() {
      OnConstruction();
    }

    partial void OnConstruction();

    public UninterpretedOption(UninterpretedOption other) : this() {
      name_ = other.name_.Clone();
      identifierValue_ = other.identifierValue_;
      positiveIntValue_ = other.positiveIntValue_;
      negativeIntValue_ = other.negativeIntValue_;
      doubleValue_ = other.doubleValue_;
      stringValue_ = other.stringValue_;
      aggregateValue_ = other.aggregateValue_;
    }

    public UninterpretedOption Clone() {
      return new UninterpretedOption(this);
    }

    public const int NameFieldNumber = 2;
    private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart> _repeated_name_codec
        = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart> name_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart>();
    public pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart> Name {
      get { return name_; }
    }

    public const int IdentifierValueFieldNumber = 3;
    private string identifierValue_ = "";
    public string IdentifierValue {
      get { return identifierValue_; }
      set {
        identifierValue_ = pb::Preconditions.CheckNotNull(value, "value");
      }
    }

    public const int PositiveIntValueFieldNumber = 4;
    private ulong positiveIntValue_;
    public ulong PositiveIntValue {
      get { return positiveIntValue_; }
      set {
        positiveIntValue_ = value;
      }
    }

    public const int NegativeIntValueFieldNumber = 5;
    private long negativeIntValue_;
    public long NegativeIntValue {
      get { return negativeIntValue_; }
      set {
        negativeIntValue_ = value;
      }
    }

    public const int DoubleValueFieldNumber = 6;
    private double doubleValue_;
    public double DoubleValue {
      get { return doubleValue_; }
      set {
        doubleValue_ = value;
      }
    }

    public const int StringValueFieldNumber = 7;
    private pb::ByteString stringValue_ = pb::ByteString.Empty;
    public pb::ByteString StringValue {
      get { return stringValue_; }
      set {
        stringValue_ = pb::Preconditions.CheckNotNull(value, "value");
      }
    }

    public const int AggregateValueFieldNumber = 8;
    private string aggregateValue_ = "";
    public string AggregateValue {
      get { return aggregateValue_; }
      set {
        aggregateValue_ = pb::Preconditions.CheckNotNull(value, "value");
      }
    }

    public override bool Equals(object other) {
      return Equals(other as UninterpretedOption);
    }

    public bool Equals(UninterpretedOption other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!name_.Equals(other.name_)) return false;
      if (IdentifierValue != other.IdentifierValue) return false;
      if (PositiveIntValue != other.PositiveIntValue) return false;
      if (NegativeIntValue != other.NegativeIntValue) return false;
      if (DoubleValue != other.DoubleValue) return false;
      if (StringValue != other.StringValue) return false;
      if (AggregateValue != other.AggregateValue) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      hash ^= name_.GetHashCode();
      if (IdentifierValue.Length != 0) hash ^= IdentifierValue.GetHashCode();
      if (PositiveIntValue != 0UL) hash ^= PositiveIntValue.GetHashCode();
      if (NegativeIntValue != 0L) hash ^= NegativeIntValue.GetHashCode();
      if (DoubleValue != 0D) hash ^= DoubleValue.GetHashCode();
      if (StringValue.Length != 0) hash ^= StringValue.GetHashCode();
      if (AggregateValue.Length != 0) hash ^= AggregateValue.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.Default.Format(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      name_.WriteTo(output, _repeated_name_codec);
      if (IdentifierValue.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(IdentifierValue);
      }
      if (PositiveIntValue != 0UL) {
        output.WriteRawTag(32);
        output.WriteUInt64(PositiveIntValue);
      }
      if (NegativeIntValue != 0L) {
        output.WriteRawTag(40);
        output.WriteInt64(NegativeIntValue);
      }
      if (DoubleValue != 0D) {
        output.WriteRawTag(49);
        output.WriteDouble(DoubleValue);
      }
      if (StringValue.Length != 0) {
        output.WriteRawTag(58);
        output.WriteBytes(StringValue);
      }
      if (AggregateValue.Length != 0) {
        output.WriteRawTag(66);
        output.WriteString(AggregateValue);
      }
    }

    public int CalculateSize() {
      int size = 0;
      size += name_.CalculateSize(_repeated_name_codec);
      if (IdentifierValue.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(IdentifierValue);
      }
      if (PositiveIntValue != 0UL) {
        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(PositiveIntValue);
      }
      if (NegativeIntValue != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(NegativeIntValue);
      }
      if (DoubleValue != 0D) {
        size += 1 + 8;
      }
      if (StringValue.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(StringValue);
      }
      if (AggregateValue.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AggregateValue);
      }
      return size;
    }

    public void MergeFrom(UninterpretedOption other) {
      if (other == null) {
        return;
      }
      name_.Add(other.name_);
      if (other.IdentifierValue.Length != 0) {
        IdentifierValue = other.IdentifierValue;
      }
      if (other.PositiveIntValue != 0UL) {
        PositiveIntValue = other.PositiveIntValue;
      }
      if (other.NegativeIntValue != 0L) {
        NegativeIntValue = other.NegativeIntValue;
      }
      if (other.DoubleValue != 0D) {
        DoubleValue = other.DoubleValue;
      }
      if (other.StringValue.Length != 0) {
        StringValue = other.StringValue;
      }
      if (other.AggregateValue.Length != 0) {
        AggregateValue = other.AggregateValue;
      }
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 18: {
            name_.AddEntriesFrom(input, _repeated_name_codec);
            break;
          }
          case 26: {
            IdentifierValue = input.ReadString();
            break;
          }
          case 32: {
            PositiveIntValue = input.ReadUInt64();
            break;
          }
          case 40: {
            NegativeIntValue = input.ReadInt64();
            break;
          }
          case 49: {
            DoubleValue = input.ReadDouble();
            break;
          }
          case 58: {
            StringValue = input.ReadBytes();
            break;
          }
          case 66: {
            AggregateValue = input.ReadString();
            break;
          }
        }
      }
    }

    #region Nested types
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public static partial class Types {
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
      internal sealed partial class NamePart : pb::IMessage<NamePart> {
        private static readonly pb::MessageParser<NamePart> _parser = new pb::MessageParser<NamePart>(() => new NamePart());
        public static pb::MessageParser<NamePart> Parser { get { return _parser; } }

        public static pbr::MessageDescriptor Descriptor {
          get { return global::Google.Protobuf.Reflection.UninterpretedOption.Descriptor.NestedTypes[0]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor {
          get { return Descriptor; }
        }

        public NamePart() {
          OnConstruction();
        }

        partial void OnConstruction();

        public NamePart(NamePart other) : this() {
          namePart_ = other.namePart_;
          isExtension_ = other.isExtension_;
        }

        public NamePart Clone() {
          return new NamePart(this);
        }

        public const int NamePart_FieldNumber = 1;
        private string namePart_ = "";
        public string NamePart_ {
          get { return namePart_; }
          set {
            namePart_ = pb::Preconditions.CheckNotNull(value, "value");
          }
        }

        public const int IsExtensionFieldNumber = 2;
        private bool isExtension_;
        public bool IsExtension {
          get { return isExtension_; }
          set {
            isExtension_ = value;
          }
        }

        public override bool Equals(object other) {
          return Equals(other as NamePart);
        }

        public bool Equals(NamePart other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (NamePart_ != other.NamePart_) return false;
          if (IsExtension != other.IsExtension) return false;
          return true;
        }

        public override int GetHashCode() {
          int hash = 1;
          if (NamePart_.Length != 0) hash ^= NamePart_.GetHashCode();
          if (IsExtension != false) hash ^= IsExtension.GetHashCode();
          return hash;
        }

        public override string ToString() {
          return pb::JsonFormatter.Default.Format(this);
        }

        public void WriteTo(pb::CodedOutputStream output) {
          if (NamePart_.Length != 0) {
            output.WriteRawTag(10);
            output.WriteString(NamePart_);
          }
          if (IsExtension != false) {
            output.WriteRawTag(16);
            output.WriteBool(IsExtension);
          }
        }

        public int CalculateSize() {
          int size = 0;
          if (NamePart_.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(NamePart_);
          }
          if (IsExtension != false) {
            size += 1 + 1;
          }
          return size;
        }

        public void MergeFrom(NamePart other) {
          if (other == null) {
            return;
          }
          if (other.NamePart_.Length != 0) {
            NamePart_ = other.NamePart_;
          }
          if (other.IsExtension != false) {
            IsExtension = other.IsExtension;
          }
        }

        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                input.SkipLastField();
                break;
              case 10: {
                NamePart_ = input.ReadString();
                break;
              }
              case 16: {
                IsExtension = input.ReadBool();
                break;
              }
            }
          }
        }

      }

    }
    #endregion

  }

  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
  internal sealed partial class SourceCodeInfo : pb::IMessage<SourceCodeInfo> {
    private static readonly pb::MessageParser<SourceCodeInfo> _parser = new pb::MessageParser<SourceCodeInfo>(() => new SourceCodeInfo());
    public static pb::MessageParser<SourceCodeInfo> Parser { get { return _parser; } }

    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[17]; }
    }

    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    public SourceCodeInfo() {
      OnConstruction();
    }

    partial void OnConstruction();

    public SourceCodeInfo(SourceCodeInfo other) : this() {
      location_ = other.location_.Clone();
    }

    public SourceCodeInfo Clone() {
      return new SourceCodeInfo(this);
    }

    public const int LocationFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.SourceCodeInfo.Types.Location> _repeated_location_codec
        = pb::FieldCodec.ForMessage(10, global::Google.Protobuf.Reflection.SourceCodeInfo.Types.Location.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.SourceCodeInfo.Types.Location> location_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.SourceCodeInfo.Types.Location>();
    public pbc::RepeatedField<global::Google.Protobuf.Reflection.SourceCodeInfo.Types.Location> Location {
      get { return location_; }
    }

    public override bool Equals(object other) {
      return Equals(other as SourceCodeInfo);
    }

    public bool Equals(SourceCodeInfo other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!location_.Equals(other.location_)) return false;
      return true;
    }

    public override int GetHashCode() {
      int hash = 1;
      hash ^= location_.GetHashCode();
      return hash;
    }

    public override string ToString() {
      return pb::JsonFormatter.Default.Format(this);
    }

    public void WriteTo(pb::CodedOutputStream output) {
      location_.WriteTo(output, _repeated_location_codec);
    }

    public int CalculateSize() {
      int size = 0;
      size += location_.CalculateSize(_repeated_location_codec);
      return size;
    }

    public void MergeFrom(SourceCodeInfo other) {
      if (other == null) {
        return;
      }
      location_.Add(other.location_);
    }

    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            location_.AddEntriesFrom(input, _repeated_location_codec);
            break;
          }
        }
      }
    }

    #region Nested types
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public static partial class Types {
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
      internal sealed partial class Location : pb::IMessage<Location> {
        private static readonly pb::MessageParser<Location> _parser = new pb::MessageParser<Location>(() => new Location());
        public static pb::MessageParser<Location> Parser { get { return _parser; } }

        public static pbr::MessageDescriptor Descriptor {
          get { return global::Google.Protobuf.Reflection.SourceCodeInfo.Descriptor.NestedTypes[0]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor {
          get { return Descriptor; }
        }

        public Location() {
          OnConstruction();
        }

        partial void OnConstruction();

        public Location(Location other) : this() {
          path_ = other.path_.Clone();
          span_ = other.span_.Clone();
          leadingComments_ = other.leadingComments_;
          trailingComments_ = other.trailingComments_;
          leadingDetachedComments_ = other.leadingDetachedComments_.Clone();
        }

        public Location Clone() {
          return new Location(this);
        }

        public const int PathFieldNumber = 1;
        private static readonly pb::FieldCodec<int> _repeated_path_codec
            = pb::FieldCodec.ForInt32(10);
        private readonly pbc::RepeatedField<int> path_ = new pbc::RepeatedField<int>();
        public pbc::RepeatedField<int> Path {
          get { return path_; }
        }

        public const int SpanFieldNumber = 2;
        private static readonly pb::FieldCodec<int> _repeated_span_codec
            = pb::FieldCodec.ForInt32(18);
        private readonly pbc::RepeatedField<int> span_ = new pbc::RepeatedField<int>();
        public pbc::RepeatedField<int> Span {
          get { return span_; }
        }

        public const int LeadingCommentsFieldNumber = 3;
        private string leadingComments_ = "";
        public string LeadingComments {
          get { return leadingComments_; }
          set {
            leadingComments_ = pb::Preconditions.CheckNotNull(value, "value");
          }
        }

        public const int TrailingCommentsFieldNumber = 4;
        private string trailingComments_ = "";
        public string TrailingComments {
          get { return trailingComments_; }
          set {
            trailingComments_ = pb::Preconditions.CheckNotNull(value, "value");
          }
        }

        public const int LeadingDetachedCommentsFieldNumber = 6;
        private static readonly pb::FieldCodec<string> _repeated_leadingDetachedComments_codec
            = pb::FieldCodec.ForString(50);
        private readonly pbc::RepeatedField<string> leadingDetachedComments_ = new pbc::RepeatedField<string>();
        public pbc::RepeatedField<string> LeadingDetachedComments {
          get { return leadingDetachedComments_; }
        }

        public override bool Equals(object other) {
          return Equals(other as Location);
        }

        public bool Equals(Location other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if(!path_.Equals(other.path_)) return false;
          if(!span_.Equals(other.span_)) return false;
          if (LeadingComments != other.LeadingComments) return false;
          if (TrailingComments != other.TrailingComments) return false;
          if(!leadingDetachedComments_.Equals(other.leadingDetachedComments_)) return false;
          return true;
        }

        public override int GetHashCode() {
          int hash = 1;
          hash ^= path_.GetHashCode();
          hash ^= span_.GetHashCode();
          if (LeadingComments.Length != 0) hash ^= LeadingComments.GetHashCode();
          if (TrailingComments.Length != 0) hash ^= TrailingComments.GetHashCode();
          hash ^= leadingDetachedComments_.GetHashCode();
          return hash;
        }

        public override string ToString() {
          return pb::JsonFormatter.Default.Format(this);
        }

        public void WriteTo(pb::CodedOutputStream output) {
          path_.WriteTo(output, _repeated_path_codec);
          span_.WriteTo(output, _repeated_span_codec);
          if (LeadingComments.Length != 0) {
            output.WriteRawTag(26);
            output.WriteString(LeadingComments);
          }
          if (TrailingComments.Length != 0) {
            output.WriteRawTag(34);
            output.WriteString(TrailingComments);
          }
          leadingDetachedComments_.WriteTo(output, _repeated_leadingDetachedComments_codec);
        }

        public int CalculateSize() {
          int size = 0;
          size += path_.CalculateSize(_repeated_path_codec);
          size += span_.CalculateSize(_repeated_span_codec);
          if (LeadingComments.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(LeadingComments);
          }
          if (TrailingComments.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(TrailingComments);
          }
          size += leadingDetachedComments_.CalculateSize(_repeated_leadingDetachedComments_codec);
          return size;
        }

        public void MergeFrom(Location other) {
          if (other == null) {
            return;
          }
          path_.Add(other.path_);
          span_.Add(other.span_);
          if (other.LeadingComments.Length != 0) {
            LeadingComments = other.LeadingComments;
          }
          if (other.TrailingComments.Length != 0) {
            TrailingComments = other.TrailingComments;
          }
          leadingDetachedComments_.Add(other.leadingDetachedComments_);
        }

        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                input.SkipLastField();
                break;
              case 10:
              case 8: {
                path_.AddEntriesFrom(input, _repeated_path_codec);
                break;
              }
              case 18:
              case 16: {
                span_.AddEntriesFrom(input, _repeated_span_codec);
                break;
              }
              case 26: {
                LeadingComments = input.ReadString();
                break;
              }
              case 34: {
                TrailingComments = input.ReadString();
                break;
              }
              case 50: {
                leadingDetachedComments_.AddEntriesFrom(input, _repeated_leadingDetachedComments_codec);
                break;
              }
            }
          }
        }

      }

    }
    #endregion

  }

  #endregion

}

#endregion Designer generated code