Skip to main content
aboutsummaryrefslogblamecommitdiffstats
blob: c3a3d3e10f861f91bbfa7e820ce88ff29575ce5f (plain) (tree)
39595
39596
39597
39598
39599
39600
39601
39602
39603
39604
39605
39606
39607
39608
39609
39610
39611
39612
39613
39614
39615
39616
39617
39618
39619
39620
39621
39622
39623
39624
39625
39626
39627
39628
39629
39630
39631
39632
39633
39634
39635
39636
39637
39638
39639
39640
39641
39642
39643
39644
39645
39646
39647
39648
39649
39650
39651
39652
39653
39654
39655
39656
39657
39658
39659
39660
39661
39662
39663
39664
39665
39666
39667
39668
39669
39670
39671
39672
39673
39674
39675
39676
39677
39678
39679
39680
39681
39682
39683
39684
39685
39686
39687
39688
39689
39690
39691
39692
39693
39694
39695
39696
39697
39698
39699
39700
39701
39702
39703
39704
39705
39706
39707
39708
39709
39710
39711
39712
39713
39714
39715
39716
39717
39718
39719
39720
39721
39722
39723
39724
39725
39726
39727
39728
39729
39730
39731
39732
39733
39734
39735
39736
39737
39738
39739
39740
39741
39742
39743
39744
39745
39746
39747
39748
39749
39750
39751
39752
39753
39754
39755
39756
39757
39758
39759
39760
39761
39762
39763
39764
39765
39766
39767
39768
39769
39770
39771
39772
39773
39774
39775
39776
39777
39778
39779
39780
39781
39782
39783
39784
39785
39786
39787
39788
39789
39790
39791
39792
39793
39794
39795
39796
39797
39798
39799
39800
39801
39802
39803
39804
39805
39806
39807
39808
39809
39810
39811
39812
39813
39814
39815
39816
39817
39818
39819
39820
39821
39822
39823
39824
39825
39826
39827
39828
39829
39830
39831
39832
39833
39834
39835
39836
39837
39838
39839
39840
39841
39842
39843
39844
39845
39846
39847
39848
39849
39850
39851
39852
39853
39854
39855
39856
39857
39858
39859
39860
39861
39862
39863
39864
39865
39866
39867
39868
39869
39870
39871
39872
39873
39874
39875
39876
39877
39878
39879
39880
39881
39882
39883
39884
39885
39886
39887
39888
39889
39890
39891
39892
39893
39894
39895

























                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           











                                      
                                       































                                                      
                                      
                                        
                                      



                                        
                                      



                                                          
                                      
                                      
                                      
                                      














                                                          
                                                  

                                      

                                                
                                      
                                        



                                        
                                        







                                        
                                        
                                      
                                        
                                      
                                        
                                      
                                        
                                        












                                        














                                                                                   
                                                                   




























                                                                                                
                                                                                                                                    






                                                                                 

                                                                                    



                                                                         
                                  






                                                        
                                                                         
















                                               
                                                                                                                                                                                                                                                                                                                                                        















                                                                            

                                                                                                                                                                                                                                                                                                               
              

                                                                                                                                                                                                                                                                                                          
              
                                                                                          







                                     
                                                                                             
                      

                                                                                             





                                                                                                                                                     
                                          












                                                                                                                  
                                                                                                 











                                                             
                                                                                 











                                                    
                                                                                    
                      

                                                                                    





                                                                                                                                           
                                          












                                                                                                                  
                                                                                              














                                                             
                                                                                             







                                                         
                                                                                                
                      

                                                                                                
                      
                                                                                                                                    













                                                                                                                                                                                 
                                                                                                  










                             
                                                                                        











                                         
                                                                                           
                      

                                                                                           





                                                                                                                                                  
                                          












                                                                                                                  
                                                                                                 














                                                             

                                                                                      
              

                                                                                  





                                                                                                                                         
                                  












                                                                                                          
                                                                                        































                                                     
                                                                                                                                                       






                                                                                       

                                                                                                 



                                                                               
                                  






                                                                    
                                                                         
















                                                  
                                                                                                                                                                                                                                                                                             















                                                                                  

                                                                                                                                                                                                                                              
              

                                                                                                                                                                                                                                         
              
                                                                                         




                                                                                                                          

                                                                                    
              

                                                                                





                                                                                                                                             
                                  












                                                                                                                
                                                                                  








                                                     
                                                                                                                                                                       







                                     
                                                                                                                                                                           
                      
                                                                                                 




                                                                                                                                       
                                                                                                                                             













































                                                                                                      
                                                                                               
                              

                                                                                               
                              

                                                                                           





                                                                                                                                                            
                                                  












                                                                                                                                
                                                                                                      












                                                                     
                                                                                                    
                              

                                                                                                    
                              

                                                                                                





                                                                                                                                                                 
                                                  












                                                                                                                                
                                                                                                    














                                                                     
                                                                                                 

































                                                                                                                                        
                                                                                                                                        






                                                                                  

                                                                                       



                                                                          
                                  






                                                          
                                                                         
















                                               
                                                                                                                                                                                                











                                                                             

                                                                                                                                                      
              

                                                                                                                                                 
              

                                                                               
              

                                                                           





                                                                                                                                   
                                  












                                                                                                           
                                                                                








                                                     
                                                                                                  











                                         
                                                                                                      
                      
                                                                                                 




                                                                                                                        

                                                                                       
                      

                                                                                   





                                                                                                                                             
                                          












                                                                                                                   
                                                                                        








































                                                             
                                                                                                                            






                                                                              

                                                                               



                                                                      
                                  






                                                  
                                                                         
















                                               
                                                                                                                                                                                                                                                                                                                                          















                                                                         

                                                                                                                                                                                                                                                                                                    
              

                                                                                                                                                                                                                                                                                               
              

                                                                 
              

                                                             





                                                                                                                 
                                  












                                                                                                       
                                                                         








                                                     
                                                                                         




                                                                                                                              
                                                                                                                                                                                                                                              

































                                                                               
                                                                                    
                      

                                                                                    
                      

                                                                                
                      
                                                                                                                    













                                                                                                                                                        
                                                                                          











                             
                                                                                                                                          
                      

                                                                                                                                          
                      
                                                                                              







                                                        
                                                                                                 
                              

                                                                                                 





                                                                                                                                                         
                                                   












                                                                                                                       
                                                                                                         











                                                                     

                                                                                    
                      

                                                                                
                      
                                                                                                                    













                                                                                                                                                          
                                                                                          














                             
                                                                     
                      

                                                                     
                      

                                                                 
                      
                                                                                                    






















                                                                                                                               
                                                                             
                      

                                                                             
                      

                                                                         
                      
                                                                                                             













                                                                                                                                                 
                                                                                   




































                                                    
                                                                                                                                                       






                                                                                       

                                                                                                 



                                                                               
                                  






                                                                    
                                                                         
















                                                  
                                                                                                                                                                         










                                                                                  

                                                                                                                          
              

                                                                                                                     
              
                                                                                         














                                                                                                                           
                                   









                                                       
                                                                                         



























                                                                                                                       
                                                                                                                                              






                                                                                    

                                                                                           



                                                                            
                                  






                                                              
                                                                         
















                                               
                                                                                                                                                                                                                                 











                                                                               

                                                                                                                                                                                     
              

                                                                                                                                                                                
              
                                                                                                                                                             













































                                                                                   
                                                                                                      










                                                                                                                                           
                                           













                                                                                
                                                                                                      










                                                                                                                                           
                                           















                                                                                
                                                                                         



























                                                                                                                    
                                                                                                                                                             






                                                                                         

                                                                                                     



                                                                                 
                                  






                                                                        
                                                                         
















                                                    
                                                                                                                                                                                                                                                                          














                                                                                    

                                                                                                                                                                                                                         
              

                                                                                                                                                                                                                    
              

                                                                                            
              

                                                                                        





                                                                                                                                                       
                                   












                                                                                                                  
                                                                                              








                                                     
                                                                                         




                                                                                                                      

                                                                                  
              

                                                                              





                                                                                                                                             
                                   












                                                                                                                  
                                                                                  








                                                     
                                                                                      







                                      
                                                                                          
                      
                                                                                                 




                                                                                                                            

                                                                          
                      

                                                                      





                                                                                                                                       
                                          












                                                                                                                          
                                                                                 





































                                                             
                                                                                                                                                             






                                                                                         

                                                                                                     



                                                                                 
                                  






                                                                        
                                                                         
















                                                    
                                                                                                                                                                                                                                     











                                                                                    

                                                                                                                                                                                    
              

                                                                                                                                                                               
              

                                                                                            
              

                                                                                        





                                                                                                                                                       
                                   












                                                                                                                  
                                                                                              








                                                     
                                                                                         




                                                                                                                      

                                                                                               
              

                                                                                           





                                                                                                                                                          
                                  












                                                                                                                  
                                                                                               































                                                          
                                                                                                                                                                         






                                                                                             

                                                                                                             



                                                                                     
                                  






                                                                                
                                                                         
















                                                        
                                                                                                                                                                                                                                                                                                                                                     


















                                                                                        

                                                                                                                                                                                                                                                                                                
              

                                                                                                                                                                                                                                                                                           
              

                                                                               
              

                                                                           





                                                                                                                                              
                                   












                                                                                                                      
                                                                                








                                                     
                                                                                                                                                                                                                                            

















                                                                               
                                                                                                                                              
                      

                                                                                                                                              
                      
                                                                                                           

















                                                                                           
                                                                                                               
                              
                                                                                                         




                                                                                                                                                    

                                                                                               
                              

                                                                                           





                                                                                                                                                                    
                                                   












                                                                                                                                      
                                                                                                

















                                                                     
                                                                                                  




                                                                                                                                          
                                                                                                 











                                                                                                                                        
                                                                                                                                            
                      

                                                                                                                                            
                      
                                                                                                          

















                                                                                           
                                                                                                              
                              
                                                                                                         




                                                                                                                                                  

                                                                                               
                              

                                                                                           





                                                                                                                                                                    
                                                   












                                                                                                                                      
                                                                                                

















                                                                     
                                                                                                  




                                                                                                                                        
                                                                                                 




































                                                                                                                                        
                                                                                                                                                                     






                                                                                           

                                                                                                           



                                                                                    
                                  






                                                                              
                                                                         
















                                                       
                                                                                                                                                                    







                                                                                                      

                                                                         
              
                                                                    

















                                                                               
                                                         
                      
                                                                                          









                                                                                                                         
                                                          
                      
                                                                                          































                                                                                                                          
                                                                                                                                                    






                                                                                      

                                                                                               



                                                                              
                                  






                                                                  
                                                                         
















                                                 
                                                                                                                                                                                                  










                                                                                 

                                                                                                                                                    
              
                                                                                                                                               

















                                                                                               
                                                                                            










                                                                                                                                      
                                          













                                                                      
                                                                                                  










                                                                                                                                         
                                          



































                                                                            
                                                                                                                                                   






                                                                                     

                                                                                               



                                                                              
                                  






                                                                  
                                                                         
















                                                 
                                                                                                                                                                                                                   









                                                                                                

                                                                                                                              
              
                                                                                                                         

















                                                                               
                                                                                                            





                                                                                                                                              
                                          

















                                                                                      
                                                            
                      
                                                                                          































                                                                                                                      
                                                                                                                                              






                                                                                    

                                                                                           



                                                                            
                                  






                                                              
                                                                         
















                                               
                                                                                                                                                                                                                        













                                                                               

                                                                                                                                                                            
              

                                                                                                                                                                       
              
                                                                                         




                                                                                                                  

                                                                 
              

                                                             





                                                                                                                       
                                   












                                                                                                             
                                                                         








                                                     
                                                                                          




                                                                                                                           
                                                                                    











                                                                                                      
                                                                                       
                      

                                                                                       





                                                                                                                                                 
                                           












                                                                                                                     
                                                                                            














                                                             
                                                                                         



























                                                                                                                            
                                                                                                                                                                






                                                                                          

                                                                                                       



                                                                                  
                                  






                                                                          
                                                                         
















                                                     
                                                                                                                                                                                                                                                                 














                                                                                     

                                                                                                                                                                                                                
              

                                                                                                                                                                                                           
              
                                                                                         




                                                                                                                        

                                                                  
              

                                                              





                                                                                                                             
                                   












                                                                                                                   
                                                                         








                                                     
                                                                                                                                                      

















                                                                               
                                                                       
                      

                                                                       
                      

                                                                   
                      
                                                                                                     






















                                                                                                                                              
                                                                                                                              
                      

                                                                                                                              
                      
                                                                                                  




                                                                                                                                             
                                                                                             











                                                                                                              
                                                                                                
                              

                                                                                                





                                                                                                                                                                   
                                                   












                                                                                                                                   
                                                                                                    














                                                                     
                                                                                                 




































                                                                                                                                              
                                                                                                                                         






                                                                                  

                                                                                        



                                                                          
                                  






                                                          
                                                                         
















                                               
                                                                                                                                                                                                                                                                                                                     













                                                                             

                                                                                                                                                                                                                                                                           
              

                                                                                                                                                                                                                                                                      
              
                                                                                              







                                                          
                                                                                                 
                      

                                                                                                 
                      
                                                                                                                                     













                                                                                                                                                                                  
                                                                                                  










                             
                                                                                         











                                          
                                                                                            
                      

                                                                                            





                                                                                                                                                   
                                           












                                                                                                                   
                                                                                                 














                                                             

                                                                                             
              

                                                                                         





                                                                                                                                                
                                  












                                                                                                           
                                                                                              








                                                     

                                                                                             
              

                                                                                         





                                                                                                                                                
                                  












                                                                                                           
                                                                                              































                                                         
                                                                                                                                                                       






                                                                                            

                                                                                                            



                                                                                    
                                  






                                                                              
                                                                         
















                                                       
                                                                                                                                                                                                                                 










                                                                                       

                                                                                                                                                                             
              
                                                                                                                                                                        

















                                                                                               
                                                                                                         










                                                                                                                                                  
                                          













                                                                                  
                                                                                                               










                                                                                                                                                     
                                          



































                                                                                        
                                                                                                                                                        






                                                                                       

                                                                                                  



                                                                               
                                  






                                                                    
                                                                         
















                                                  
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              




















                                                                                  

                                                                                                                                                                                                                                                                                                                                                                                                                               
              
                                                                                                                                                                                                                                                                                                                                                                                                                          




                                         




                             



















                             






















































                                                                                   
                                                                                         










                                                                                                                                     
                                          













                                                                  
                                                                                                     










                                                                                                                                           
                                          













                                                                              
                                                                                               










                                                                                                                                        
                                          













                                                                        
                                                                                                     










                                                                                                                                           
                                          













                                                                              
                                                                                                     










                                                                                                                                           
                                          













                                                                              
                                                                                           










                                                                                                                                      
                                          













                                                                    
                                                                                               










                                                                                                                                        
                                          



































                                                                        
                                                                                                                                                                          






                                                                                             

                                                                                                              



                                                                                     
                                  






                                                                                
                                                                         
















                                                        
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        




















                                                                                        

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              




                                         









                             




                             




                             
                         
                      
                             
























































                                                                                   
                                                                                                     










                                                                                                                                                 
                                          













                                                                              
                                                                                                                 










                                                                                                                                                       
                                          













                                                                                          
                                                                                                           










                                                                                                                                                    
                                          













                                                                                    
                                                                                                                 










                                                                                                                                                       
                                          













                                                                                          
                                                                                                                 










                                                                                                                                                       
                                          













                                                                                          
                                                                                                       










                                                                                                                                                  
                                          













                                                                                
                                                                                                           










                                                                                                                                                    
                                          



































                                                                                    
                                                                                                                                                                             






                                                                                              

                                                                                                                



                                                                                      
                                  






                                                                                  
                                                                         
















                                                         
                                                                                                                                                                                                                                 









                                                                                         

                                                                                                                                                                           
              

                                                                                                                                                                      
              
                                                                                              







                                                          
                                                                                                 
                      

                                                                                                 
                      
                                                                                                                                    













                                                                                                                                                                                              
                                                                                                  










                             

                                                                                                         
              

                                                                                                     





                                                                                                                                                                        
                                  












                                                                                                                       
                                                                                                          































                                                                     
                                                                                                                                                                                                           






                                                                                                        

                                                                                                                                    



                                                                                                
                                  






                                                                                                      
                                                                         
















                                                                   
                                                                                                                                                                                                                                      











                                                                                                   

                                                                                                                                                                      
              

                                                                                                                                                                 
              

                                                                  
              

                                                              





                                                                                                                                           
                                   












                                                                                                                                 
                                                                         








                                                     
                                                                                                                                







                                      
                                                                                                                                    
                      
                                                                                                 




                                                                                                                                                    

                                                                                                           
                      

                                                                                                       





                                                                                                                                                                                      
                                          












                                                                                                                                         
                                                                                                        





































                                                              
                                                                                                                                                                             






                                                                                              

                                                                                                                



                                                                                      
                                  






                                                                                  
                                                                         
















                                                         
                                                                                                                                      








                                                                                         

                                                                                
              

                                                                           
              

                                                                       





                                                                                                                                        
                                  












                                                                                                                       
                                                                                  




























                                                     
                                                                                                                                                        






                                                                                       

                                                                                                  



                                                                               
                                  






                                                                    
                                                                         
















                                                  
                                                                                                                                                                     









                                                                                  

                                                                                                                      
              

                                                                                                                 
              
                                                                                         














                                                                                                                               
                                  
































                                                              
                                                                                                                                            






                                                                                   

                                                                                          



                                                                           
                                  






                                                            
                                                                         
















                                               
                                                                                                                                                                                                                                                                                                                                                                                                                  



















                                                                              

                                                                                                                                                                                                                                                                                                                                                                       
              

                                                                                                                                                                                                                                                                                                                                                                  
              
                                                                           







                                      
                                                                              
                      

                                                                              
                      
                                                                                                          





















                                                                                                                                            
                                                                                         




                                                                                                               

                                                                  
              

                                                              





                                                                                                                      
                                   












                                                                                                            
                                                                         








                                                     
                                                                                                                                                                                                                







                                      
                                                                                                                                                                                                                    
                      
                                                                                                  




                                                                                                                                

                                                                                                        
                      

                                                                                                    





                                                                                                                                                              
                                           












                                                                                                                    
                                                                                                        








                                                             
                                                                                                                           











                                                  
                                                                                                                               
                              
                                                                                                          




                                                                                                                                   

                                                                                                                
                              

                                                                                                            





                                                                                                                                                                        
                                                   












                                                                                                                            
                                                                                                                

















                                                                     
                                                                                                  










                                                                                                                                   
                                                                                             







                                      
                                                                                                
                      

                                                                                                





                                                                                                                                                        
                                          












                                                                                                                    
                                                                                                 


































                                                             
                                                                                                                                         






                                                                                  

                                                                                        



                                                                          
                                  






                                                          
                                                                         
















                                               
                                                                                                                                                                                                               












                                                                             

                                                                                                                                                                     
              

                                                                                                                                                                










                                                                                                                         
                                   









                                                            
                                                                                          




                                                                                                                         
                                                                                 











                                                                                                                                                                                                                               
                                                                                    
                      

                                                                                    





                                                                                                                                           
                                           












                                                                                                                   
                                                                                        














                                                             
                                                                                         



























                                                                                                                          
                                                                                                                                                           






                                                                                        

                                                                                                    



                                                                                
                                  






                                                                      
                                                                         
















                                                   
                                                                                                                                                                                                                                                        













                                                                                   

                                                                                                                                                                                                        
              

                                                                                                                                                                                                   










                                                                                                                               
                                   









                                                            
                                                                                                                                                  

















                                                                               
                                                                       
                      

                                                                       
                      

                                                                   
                      
                                                                                                     






















                                                                                                                                            
                                                                                                                          
                      

                                                                                                                          
                      
                                                                                                  




                                                                                                                                           
                                                                                         











                                                                                                                                                                                                                                       
                                                                                            
                              

                                                                                            





                                                                                                                                                             
                                                   












                                                                                                                                 
                                                                                                














                                                                     
                                                                                                 




































                                                                                                                                            
                                                                                                                             






                                                                              

                                                                                



                                                                      
                                  






                                                  
                                                                         
















                                               
                                                                                                                                                                                                                                                                                                        













                                                                         

                                                                                                                                                                                                                                                                  
              

                                                                                                                                                                                                                                                             
              




                                                                                              
 


                                                              
 
 








                                                                                                                                     
 














                                                                                                                                                                              
 
                      
 
 

                           
 





                                                                                         











                                          
                                                                                            
                      

                                                                                            





                                                                                                                                               
                                           












                                                                                                               
                                                                                                 














                                                             
                                                                                        







                                                  
                                                                                           
                      

                                                                                           





                                                                                                                                              
                                           












                                                                                                               
                                                                                                











                                                             

                                                                                         
              

                                                                                     





                                                                                                                                        
                                  












                                                                                                       
                                                                                          































                                                     
                                                                                                                                                           






                                                                                        

                                                                                                    



                                                                                
                                  






                                                                      
                                                                         
















                                                   
                                                                                                                                                                                                                             










                                                                                   

                                                                                                                                                                             
              
                                                                                                                                                                        





                                          
                                                                                          

                             


                                                                                    



































                                                                                   
                                                                                                               










                                                                                                                                                 
                                          













                                                                                        
                                                                                                         










                                                                                                                                              
                                          



































                                                                                  
                                                                                                                                                              






                                                                                         

                                                                                                      



                                                                                 
                                  






                                                                        
                                                                         
















                                                    
                                                                                                                                                                                                                                                                                                                                                                                                                                            




















                                                                                    

                                                                                                                                                                                                                                                                                                                                                                                           
              

                                                                                                                                                                                                                                                                                                                                                                                      
              
                                                                           







                                      
                                                                              
                      

                                                                              
                      
                                                                                                          





















                                                                                                                                                  
                                                                                          




                                                                                                                      
                                                                                         




                                                                                                                     

                                                                  
              

                                                              





                                                                                                                            
                                   












                                                                                                                  
                                                                         








                                                     
                                                                                                                                                                                                                







                                      
                                                                                                                                                                                                                    
                      
                                                                                                  




                                                                                                                                      

                                                                                                        
                      

                                                                                                    





                                                                                                                                                                    
                                           












                                                                                                                          
                                                                                                        








                                                             
                                                                                                                           











                                                  
                                                                                                                               
                              
                                                                                                          




                                                                                                                                         

                                                                                                                
                              

                                                                                                            





                                                                                                                                                                              
                                                   












                                                                                                                                  
                                                                                                                

















                                                                     
                                                                                                  










                                                                                                                                         
                                                                                             







                                      
                                                                                                
                      

                                                                                                





                                                                                                                                                              
                                          












                                                                                                                          
                                                                                                 


































                                                             
                                                                                                                                                           






                                                                                        

                                                                                                    



                                                                                
                                  






                                                                      
                                                                         
















                                                   
                                                                                                                                                                                                                                                                                                                















                                                                                   

                                                                                                                                                                                                                                                                
              

                                                                                                                                                                                                                                                           










                                                                                                                                     
                                   









                                                                        
                                                                                          




                                                                                                                               
                                                                                       











                                                                                                                                                                                                                                           
                                                                                          
                      

                                                                                          





                                                                                                                                                       
                                           












                                                                                                                         
                                                                                              














                                                             
                                                                                          




                                                                                                                                
                                                                                                              







                                      
                                                                                                                  
                      
                                                                                                  




                                                                                                                           

                                                                                                  
                      

                                                                                              





                                                                                                                                                             
                                          












                                                                                                                         
                                                                                           





































                                                             
                                                                                                                                                                             






                                                                                              

                                                                                                                



                                                                                      
                                  






                                                                                  
                                                                         
















                                                         
                                                                                                                                                                                                                                                                                                                                                         
















                                                                                         

                                                                                                                                                                                                                                                                                                   
              

                                                                                                                                                                                                                                                                                              










                                                                                                                                           
                                   









                                                                        
                                                                                                                                                                                                                                 

















                                                                               
                                                                       
                      

                                                                       
                      

                                                                   
                      
                                                                                                     






















                                                                                                                                                  
                                                                                                                                                                                                         
                      

                                                                                                                                                                                                         
                      
                                                                                                  




                                                                                                                                                 
                                                                                               











                                                                                                                                                                                                                                                   
                                                                                                  
                              

                                                                                                  





                                                                                                                                                                         
                                                   












                                                                                                                                       
                                                                                                      














                                                                     
                                                                                                  




                                                                                                                                                  
                                                                                                                      







                                              
                                                                                                                          
                              
                                                                                                          




                                                                                                                                             

                                                                                                          
                              

                                                                                                      





                                                                                                                                                                               
                                                  












                                                                                                                                       
                                                                                                   














































                                                                     
                                                                                                                                      






                                                                                 

                                                                                      



                                                                         
                                  






                                                        
                                                                         
















                                               
                                                                                                                                                    










                                                                            

                                                                                                           
              
                                                                                                      

















                                                                                
                                                                           
                      

                                                                           
                      

                                                                       





                                                                                                                             
                                          












                                                                                                                  
                                                                                  












                                                             
                                                                          
                      

                                                                          
                      

                                                                      





                                                                                                                            
                                          












                                                                                                                  
                                                                                 


































                                                             
                                                                                                                                               






                                                                                    

                                                                                            



                                                                            
                                  






                                                              
                                                                         
















                                               
                                                                                                                                                                                                                                                                                                                    













                                                                               

                                                                                                                                                                                                                                                                        
              

                                                                                                                                                                                                                                                                   
              
                                                                                              







                                                          
                                                                                                 
                      

                                                                                                 
                      
                                                                                                                                     













                                                                                                                                                                                    
                                                                                                  










                             
                                                                                         











                                          
                                                                                            
                      

                                                                                            





                                                                                                                                                     
                                           












                                                                                                                     
                                                                                                 














                                                             
                                                                                        







                                                  
                                                                                           
                      

                                                                                           





                                                                                                                                                    
                                           












                                                                                                                     
                                                                                                











                                                             

                                                                                               
              

                                                                                           





                                                                                                                                                    
                                  












                                                                                                             
                                                                                                































                                                           
                                                                                                                                                                             






                                                                                              

                                                                                                                



                                                                                      
                                  






                                                                                  
                                                                         
















                                                         
                                                                                                                                                                                                                                     










                                                                                         

                                                                                                                                                                               
              
                                                                                                                                                                          

















                                                                                                                                               
                                                                                                     










                                                                                                                                                  
                                          













                                                                              
                                                                                                                     










                                                                                                                                                          
                                          



































                                                                                              
                                                                                                                                                     






                                                                                      

                                                                                                



                                                                              
                                  






                                                                  
                                                                         
















                                                 
                                                                                                                                                                                                                                                                                                                                                                                                                        



















                                                                                 

                                                                                                                                                                                                                                                                                                                                                                          
              

                                                                                                                                                                                                                                                                                                                                                                     
              
                                                                           







                                      
                                                                              
                      

                                                                              
                      
                                                                                                          





















                                                                                                                                               
                                                                                         




                                                                                                                     

                                                                  
              

                                                              





                                                                                                                         
                                   












                                                                                                               
                                                                         








                                                     
                                                                                                                                                                                                                







                                      
                                                                                                                                                                                                                    
                      
                                                                                                  




                                                                                                                                   

                                                                                                        
                      

                                                                                                    





                                                                                                                                                                 
                                           












                                                                                                                       
                                                                                                        








                                                             
                                                                                                                           











                                                  
                                                                                                                               
                              
                                                                                                          




                                                                                                                                      

                                                                                                                
                              

                                                                                                            





                                                                                                                                                                           
                                                   












                                                                                                                               
                                                                                                                

















                                                                     
                                                                                                  










                                                                                                                                      
                                                                                             







                                      
                                                                                                
                      

                                                                                                





                                                                                                                                                           
                                          












                                                                                                                       
                                                                                                 


































                                                             
                                                                                                                                                  






                                                                                     

                                                                                              



                                                                             
                                  






                                                                
                                                                         
















                                                
                                                                                                                                                                                                                             












                                                                                

                                                                                                                                                                                
              

                                                                                                                                                                           










                                                                                                                               
                                   









                                                                  
                                                                                          




                                                                                                                            
                                                                                      











                                                                                                                                           
                                                                                         
                      

                                                                                         





                                                                                                                                                   
                                           












                                                                                                                      
                                                                                             














                                                             
                                                                                         



























                                                                                                                             
                                                                                                                                                                    






                                                                                           

                                                                                                          



                                                                                   
                                  






                                                                            
                                                                         
















                                                      
                                                                                                                                                                                                                                                                      













                                                                                      

                                                                                                                                                                                                                   
              

                                                                                                                                                                                                              










                                                                                                                                     
                                   









                                                                  
                                                                                                                                                       

















                                                                               
                                                                       
                      

                                                                       
                      

                                                                   
                      
                                                                                                     






















                                                                                                                                               
                                                                                                                               
                      

                                                                                                                               
                      
                                                                                                  




                                                                                                                                              
                                                                                              











                                                                                                                                                   
                                                                                                 
                              

                                                                                                 





                                                                                                                                                                     
                                                   












                                                                                                                                    
                                                                                                     














                                                                     
                                                                                                 




































                                                                                                                                               
                                                                                                                                            






                                                                                   

                                                                                          



                                                                           
                                  






                                                            
                                                                         
















                                               
                                                                                                                                                                                                                                                                                           












                                                                              

                                                                                                                                                                                                                                                
              

                                                                                                                                                                                                                                           
              
                                                                                              







                                                          
                                                                                                 
                      

                                                                                                 
                      
                                                                                                                                     













                                                                                                                                                                                   
                                                                                                  










                             
                                                                                         











                                          
                                                                                            
                      

                                                                                            





                                                                                                                                                    
                                           












                                                                                                                    
                                                                                                 














                                                             
                                                                         







                                      
                                                                            
                      

                                                                            
                      
                                                                                                          





















                                                                                                                                          

                                                                                      
              

                                                                                  





                                                                                                                                          
                                  












                                                                                                            
                                                                                       































                                                      
                                                                                                                                                              






                                                                                         

                                                                                                      



                                                                                 
                                  






                                                                        
                                                                         
















                                                    
                                                                                                                                                                                                                                                                                                                                                                                                                        



















                                                                                    

                                                                                                                                                                                                                                                                                                                                                                       
              

                                                                                                                                                                                                                                                                                                                                                                  
              
                                                                           







                                      
                                                                              
                      

                                                                              
                      
                                                                                                          





















                                                                                                                                                  
                                                                                         




                                                                                                                     

                                                                  
              

                                                              





                                                                                                                            
                                   












                                                                                                                  
                                                                         








                                                     
                                                                                                                                                                                                                







                                      
                                                                                                                                                                                                                    
                      
                                                                                                  




                                                                                                                                      

                                                                                                        
                      

                                                                                                    





                                                                                                                                                                    
                                           












                                                                                                                          
                                                                                                        








                                                             
                                                                                                                           











                                                  
                                                                                                                               
                              
                                                                                                          




                                                                                                                                         

                                                                                                                
                              

                                                                                                            





                                                                                                                                                                              
                                                   












                                                                                                                                  
                                                                                                                

















                                                                     
                                                                                                  










                                                                                                                                         
                                                                                             







                                      
                                                                                                
                      

                                                                                                





                                                                                                                                                              
                                          












                                                                                                                          
                                                                                                 


































                                                             
                                                                                                                                                           






                                                                                        

                                                                                                    



                                                                                
                                  






                                                                      
                                                                         
















                                                   
                                                                                                                                                                                                                                      












                                                                                   

                                                                                                                                                                                      
              

                                                                                                                                                                                 










                                                                                                                                     
                                   









                                                                        
                                                                                          




                                                                                                                               
                                                                                      











                                                                                                                                           
                                                                                         
                      

                                                                                         





                                                                                                                                                      
                                           












                                                                                                                         
                                                                                             














                                                             
                                                                                         



























                                                                                                                                
                                                                                                                                                                             






                                                                                              

                                                                                                                



                                                                                      
                                  






                                                                                  
                                                                         
















                                                         
                                                                                                                                                                                                                                                                               













                                                                                         

                                                                                                                                                                                                                         
              

                                                                                                                                                                                                                    










                                                                                                                                           
                                   









                                                                        
                                                                                                                                                       

















                                                                               
                                                                       
                      

                                                                       
                      

                                                                   
                      
                                                                                                     






















                                                                                                                                                  
                                                                                                                               
                      

                                                                                                                               
                      
                                                                                                  




                                                                                                                                                 
                                                                                              











                                                                                                                                                   
                                                                                                 
                              

                                                                                                 





                                                                                                                                                                        
                                                   












                                                                                                                                       
                                                                                                     














                                                                     
                                                                                                 




































                                                                                                                                                  
                                                                                                                                                              






                                                                                         

                                                                                                      



                                                                                 
                                  






                                                                        
                                                                         
















                                                    
                                                                                                                                                                                                     











                                                                                    

                                                                                                                                                    
              

                                                                                                                                               
              
                                                                                         




                                                                                                                    

                                                                  
              

                                                              





                                                                                                                            
                                   












                                                                                                                  
                                                                         








                                                     
                                                                                             







                                      
                                                                                                
                      

                                                                                                





                                                                                                                                                              
                                          












                                                                                                                          
                                                                                                 


































                                                             
                                                                                                                                                           






                                                                                        

                                                                                                    



                                                                                
                                  






                                                                      
                                                                         
















                                                   
                                                                                                                                                                                                                                                                                                                         















                                                                                   

                                                                                                                                                                                                                                                                         
              

                                                                                                                                                                                                                                                                    










                                                                                                                                     
                                   









                                                                        
                                                                                          




                                                                                                                               
                                                                                                                                                                         







                                                                                                               
                                                                                                                                                                            
                      

                                                                                                   
                      

                                                                                               





                                                                                                                                                              
                                           












                                                                                                                         
                                                                                                   








                                                             
                                                                                                                      











                                                  
                                                                                                                          
                              
                                                                                                          




                                                                                                                                        

                                                                                                           
                              

                                                                                                       





                                                                                                                                                                        
                                                   












                                                                                                                                 
                                                                                                           























                                                                     
                                                                                         



























                                                                                                                                
                                                                                                                                                                             






                                                                                              

                                                                                                                



                                                                                      
                                  






                                                                                  
                                                                         
















                                                         
                                                                                                                                                                                                                                                                                                                                                                  
















                                                                                         

                                                                                                                                                                                                                                                                                                            
              

                                                                                                                                                                                                                                                                                                       










                                                                                                                                           
                                   









                                                                        
                                                                                                                                                                                                                                          

















                                                                               
                                                                       
                      

                                                                       
                      

                                                                   
                      
                                                                                                     






















                                                                                                                                                  
                                                                                                                                                                                                                  
                      

                                                                                                                                                                                                                  
                      
                                                                                                  




                                                                                                                                                 
                                                                                                                                                                                 







                                                                                                                       
                                                                                                                                                                                    
                              

                                                                                                           
                              

                                                                                                       





                                                                                                                                                                                
                                                   












                                                                                                                                       
                                                                                                           








                                                                     
                                                                                                                              











                                                          
                                                                                                                                  
                                      
                                                                                                                  




                                                                                                                                                          

                                                                                                                   
                                      

                                                                                                               





                                                                                                                                                                                          
                                                           












                                                                                                                                               
                                                                                                                   























                                                                             
                                                                                                 




































                                                                                                                                                  
                                                                                                                                                              






                                                                                         

                                                                                                      



                                                                                 
                                  






                                                                        
                                                                         
















                                                    
                                                                                                                                                                                                                       









                                                                                    

                                                                                                                                                                      
              

                                                                                                                                                                 
              
                                                                                              







                                                          
                                                                                                 
                      

                                                                                                 
                      
                                                                                                                                     













                                                                                                                                                                                         
                                                                                                  










                             

                                                                                                    
              

                                                                                                





                                                                                                                                                              
                                  












                                                                                                                  
                                                                                                     































                                                                
                                                                                                                                                                                            






                                                                                                   

                                                                                                                          



                                                                                           
                                  






                                                                                            
                                                                         
















                                                              
                                                                                                                                  








                                                                                              

                                                                       
              

                                                                  
              

                                                              





                                                                                                                                    
                                  












                                                                                                                            
                                                                         




























                                                         
                                                                                                                                               






                                                                                    

                                                                                            



                                                                            
                                  






                                                              
                                                                         
















                                               
                                                                                                                                                                                                                                                                                                                                                                                                                    



















                                                                               

                                                                                                                                                                                                                                                                                                                                                                        
              

                                                                                                                                                                                                                                                                                                                                                                   
              
                                                                           







                                      
                                                                              
                      

                                                                              
                      
                                                                                                          





















                                                                                                                                             
                                                                                         




                                                                                                                 

                                                                  
              

                                                              





                                                                                                                       
                                   












                                                                                                             
                                                                         








                                                     
                                                                                                                                                                                                                







                                      
                                                                                                                                                                                                                    
                      
                                                                                                  




                                                                                                                                 

                                                                                                        
                      

                                                                                                    





                                                                                                                                                               
                                           












                                                                                                                     
                                                                                                        








                                                             
                                                                                                                           











                                                  
                                                                                                                               
                              
                                                                                                          




                                                                                                                                    

                                                                                                                
                              

                                                                                                            





                                                                                                                                                                         
                                                   












                                                                                                                             
                                                                                                                

















                                                                     
                                                                                                  










                                                                                                                                    
                                                                                             







                                      
                                                                                                
                      

                                                                                                





                                                                                                                                                         
                                          












                                                                                                                     
                                                                                                 


































                                                             
                                                                                                                                            






                                                                                   

                                                                                          



                                                                           
                                  






                                                            
                                                                         
















                                               
                                                                                                                                                                                                                       












                                                                              

                                                                                                                                                                            
              

                                                                                                                                                                       










                                                                                                                           
                                   









                                                              
                                                                                          




                                                                                                                          
                                                                                      











                                                                                                                                           
                                                                                         
                      

                                                                                         





                                                                                                                                                 
                                           












                                                                                                                    
                                                                                             














                                                             
                                                                                         



























                                                                                                                           
                                                                                                                                                              






                                                                                         

                                                                                                      



                                                                                 
                                  






                                                                        
                                                                         
















                                                    
                                                                                                                                                                                                                                                                













                                                                                    

                                                                                                                                                                                                               
              

                                                                                                                                                                                                          










                                                                                                                                 
                                   









                                                              
                                                                                                                                                       

















                                                                               
                                                                       
                      

                                                                       
                      

                                                                   
                      
                                                                                                     






















                                                                                                                                             
                                                                                                                               
                      

                                                                                                                               
                      
                                                                                                  




                                                                                                                                            
                                                                                              











                                                                                                                                                   
                                                                                                 
                              

                                                                                                 





                                                                                                                                                                   
                                                   












                                                                                                                                  
                                                                                                     














                                                                     
                                                                                                 




































                                                                                                                                             
                                                                                                                                                     






                                                                                      

                                                                                                



                                                                              
                                  






                                                                  
                                                                         
















                                                 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                

























                                                                                 

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
              

                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
              
                                                                                         




                                                                                                                     

                                                                  
              

                                                              





                                                                                                                         
                                   












                                                                                                               
                                                                         








                                                     
                                                                                                                                                                                                                







                                      
                                                                                                                                                                                                                    
                      
                                                                                                  




                                                                                                                                   

                                                                                                        
                      

                                                                                                    





                                                                                                                                                                 
                                           












                                                                                                                       
                                                                                                        








                                                             
                                                                                                                           











                                                  
                                                                                                                               
                              
                                                                                                          




                                                                                                                                      

                                                                                                                
                              

                                                                                                            





                                                                                                                                                                           
                                                   












                                                                                                                               
                                                                                                                

















                                                                     
                                                                                                  










                                                                                                                                      
                                                                                          




                                                                                                                            
                                                                                                                                                            







                                                                                                  
                                                                                                                                                               
                      

                                                                                            
                      

                                                                                        





                                                                                                                                                     
                                           












                                                                                                                       
                                                                                            








                                                             
                                                                                                                











                                                  
                                                                                                                    
                              
                                                                                                          




                                                                                                                                      

                                                                                                     
                              

                                                                                                 





                                                                                                                                                               
                                                   












                                                                                                                               
                                                                                                    























                                                                     
                                                                                           




                                                                                                                              
                                                                                      







                                      
                                                                                         
                      

                                                                                         





                                                                                                                                                   
                                          












                                                                                                                       
                                                                                            


































                                                             
                                                                                                                                                  






                                                                                     

                                                                                              



                                                                             
                                  






                                                                
                                                                         
















                                                
                                                                                                                                                                            










                                                                                

                                                                                                                               
              

                                                                                                                          










                                                                                                                               
                                   









                                                                  

                                                                   
              

                                                               





                                                                                                                         
                                  












                                                                                                              
                                                                          































                                                        
                                                                                                                                                                    






                                                                                           

                                                                                                          



                                                                                   
                                  






                                                                            
                                                                         
















                                                      
                                                                                                                                                                                                                  











                                                                                      

                                                                                                                                                               
              

                                                                                                                                                          










                                                                                                                                     
                                   









                                                                  
                                                                                                   

















                                                                               
                                                                       
                      

                                                                       
                      

                                                                   
                      
                                                                                                     






















                                                                                                                                               
                                                                           
                      

                                                                           
                      

                                                                       





                                                                                                                                         
                                          












                                                                                                                            
                                                                                  





































                                                             
                                                                                                                                         






                                                                                  

                                                                                        



                                                                          
                                  






                                                          
                                                                         
















                                               
                                                                                                                                                                                                                                                             











                                                                             

                                                                                                                                                                                                                   
              

                                                                                                                                                                                                              
              
                                                                                              







                                                          
                                                                                                 
                      

                                                                                                 
                      
                                                                                                                                     













                                                                                                                                                                                  
                                                                                                  










                             
                                                                                         











                                          
                                                                                            
                      

                                                                                            





                                                                                                                                                   
                                           












                                                                                                                   
                                                                                                 














                                                             

                                                                                             
              

                                                                                         





                                                                                                                                                
                                  












                                                                                                           
                                                                                              































                                                         
                                                                                                                                                                       






                                                                                            

                                                                                                            



                                                                                    
                                  






                                                                              
                                                                         
















                                                       
                                                                                                                                                                                                                                   













                                                                                       

                                                                                                                                                                               
              

                                                                                                                                                                          
              

                                                                                     
              

                                                                                 





                                                                                                                                                  
                                  












                                                                                                                     
                                                                                       








                                                     

                                                                  
              

                                                              





                                                                                                                               
                                   












                                                                                                                     
                                                                         








                                                     
                                                                                          




                                                                                                                        

                                                                          
              

                                                                      





                                                                                                                                       
                                  












                                                                                                                     
                                                                             































                                                     
                                                                                                                                         






                                                                                  

                                                                                        



                                                                          
                                  






                                                          
                                                                         
















                                               
                                                                                                                                            








                                                                             

                                                                                                  
              

                                                                                             
              

                                                                                         





                                                                                                                                              
                                  












                                                                                                           
                                                                                              




























                                                         
                                                                                                                                                                       






                                                                                            

                                                                                                            



                                                                                    
                                  






                                                                              
                                                                         
















                                                       
                                                                                                                                                     









                                                                                       

                                                                                                 
              

                                                                                            
              
                                                                                          




                                                                                                                        

                                                                          
              

                                                                      





                                                                                                                                       
                                  












                                                                                                                     
                                                                             































                                                     
                                                                                                                                                 






                                                                                    

                                                                                              



                                                                             
                                  






                                                                
                                                                         
















                                                
                                                                                                                                                                    







                                                                                               

                                                                                
              
                                                                           


























                                                                               
                                                      
                      
                                                                                          









                                                                                                              
                                                       
                      
                                                                                          









                                                                                                               
                                                         
                      
                                                                                          































                                                                                                                 
                                                                                                                                                                 






                                                                                          

                                                                                                        



                                                                                  
                                  






                                                                          
                                                                         
















                                                     
                                                                                                                                                                                                                     










                                                                                     

                                                                                                                                                                   
              
                                                                                                                                                              





                                          
                                      

                             


                                           












                                                                                   
                                      

                             


                                           























                                                                                   
                                                                                                 










                                                                                                                                            
                                          













                                                                          
                                                                                                             










                                                                                                                                                  
                                          



































                                                                                      
                                                                                                                                                                                   






                                                                                                

                                                                                                                    



                                                                                        
                                  






                                                                                      
                                                                         
















                                                           
                                                                                                                                                                                                                                       










                                                                                           

                                                                                                                                                                               
              
                                                                                                                                                                          




























                                                                                    
                                                                                                 










                                                                                                                                                  
                                          













                                                                          
                                                                                                                         










                                                                                                                                                              
                                          



































                                                                                                  
                                                                                                                                                  






                                                                                     

                                                                                              



                                                                             
                                  






                                                                
                                                                         
















                                                
                                                                                                                                                             









                                                                                

                                                                                                                
              

                                                                                                           










                                                                                                                               
                                   









                                                                  
                                                                                         



























                                                                                                                     
                                                                                                                                                     






                                                                                      

                                                                                                



                                                                              
                                  






                                                                  
                                                                         
















                                                 
                                                                                                                                                                                                                   











                                                                                 

                                                                                                                                                                     
              

                                                                                                                                                                










                                                                                                                                
                                   









                                                                  
                                                                                          







                                      
                                                                                             
                      

                                                                                             





                                                                                                                                                        
                                           












                                                                                                                       
                                                                                                 











                                                             
                                                                                         



























                                                                                                                      
                                                                                                                                                        






                                                                                       

                                                                                                  



                                                                               
                                  






                                                                    
                                                                         
















                                                  
                                                                                                                                                                         









                                                                                  

                                                                                                                          
              

                                                                                                                     
              
                                                                                          














                                                                                                                                      
                                  
































                                                                            
                                                                                                                                                     






                                                                                      

                                                                                                



                                                                              
                                  






                                                                  
                                                                         
















                                                 
                                                                                                                                                                                                                   












                                                                                 

                                                                                                                                                                     
              

                                                                                                                                                                
              

                                                                  
              

                                                              





                                                                                                                         
                                   












                                                                                                               
                                                                         








                                                     
                                                                                          




                                                                                                                  
                                                                           







                                      
                                                                              
                      

                                                                              
                      
                                                                                                           





















                                                                                                                                                

                                                                          
              

                                                                      





                                                                                                                                 
                                  












                                                                                                               
                                                                             































                                                     
                                                                                                                    






                                                                           

                                                                          



                                                                   
                                  






                                              
                                                                         
















                                               
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      





















                                                                      

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
              

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
              
                                                                                                                

















                                                                                
                                                                        
                      

                                                                        
                      

                                                                    
                      
                                                                                                     






















                                                                                                                       
                                                                                       
                      

                                                                                       
                      

                                                                                   





                                                                                                                                     
                                           












                                                                                                            
                                                                                          














                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                               



                                            
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
                      
                                                                                                                                                                                                                                                   







                                               
                                                                                                                                                                                                                                                       
                              
                                                                                                          




                                                                                                                                       
                                                                                                                                                                                                                                        

















                                                                                               
                                                                                               
                                      

                                                                                               
                                      

                                                                                           
                                      
                                                                                                                              






















                                                                                                                                                                            
                                                                                                                                                                                                        
                                      

                                                                                                                                                                                                        
                                      
                                                                                                                               











                                                                          
                                                                                                                                  
                                              

                                                                                                                  
                                              

                                                                                                              
                                              
                                                                                                                                                  













                                                                                                                                                                                               
                                                                                                                  







                                                     
                                                                                                                          










                                                                                                                                                            

                                                                                                                   
                                      

                                                                                                               





                                                                                                                                                                       
                                                           












                                                                                                                            
                                                                                                                    








                                                                             
                                                                                                                  



















                                                                                                                                                    
                                                                                                                                                                                                                                                            




















                                             
                                                                                                                                    
                              

                                                                                                                                    
                              

                                                                                        
                              

                                                                                    
                              
                                                                                                                 


















                                                                                                                                               
                                                                                             







                                                       
                                                                                                
                                      

                                                                                                
                                      
                                                                                                                          




























                                                                                                                                                             
                                                                                                                                      
                              

                                                                                                                                      
                              

                                                                                             
                              

                                                                                         
                              
                                                                                                                    


















                                                                                                                                                      
                                                                                          







                                                       
                                                                                             
                                      

                                                                                             
                                      
                                                                                                                         




























                                                                                                                                                        
                                                                                           
                              

                                                                                           
                              

                                                                                       
                              
                                                                                                                  





















































                                                                                                                                                 
                                                                                                                                                                






                                                                                         

                                                                                                        



                                                                                  
                                  






                                                                          
                                                                         
















                                                     
                                                                                                                                                                                         








                                                                                                    

                                                                                                
              
                                                                                           

















                                                                               
                                                                                      
                      
                                                                                                                            













                                                                                                                                                     
                                                     
                      
                                                                                          































                                                                                                                         
                                                                                                                                                        






                                                                                       

                                                                                                  



                                                                               
                                  






                                                                    
                                                                         
















                                                  
                                                                                                                                                                                                                                                                                                                                                                                                                        




















                                                                                  

                                                                                                                                                                                                                                                                                                                                                                         
              

                                                                                                                                                                                                                                                                                                                                                                    
              
                                                                           







                                       
                                                                              
                      

                                                                              
                      
                                                                                                         





















                                                                                                                                                

                                                                  
              

                                                              





                                                                                                                          
                                   












                                                                                                                
                                                                         








                                                     
                                                                                          




                                                                                                                             
                                                                                                                                                           







                                                                                                      
                                                                                                                                                              
                      

                                                                                            
                      

                                                                                        





                                                                                                                                                      
                                           












                                                                                                                        
                                                                                            








                                                             
                                                                                                               











                                                   
                                                                                                                   
                              
                                                                                                          




                                                                                                                                       

                                                                                                    
                              

                                                                                                





                                                                                                                                                                
                                                   












                                                                                                                                
                                                                                                    























                                                                     
                                                                                          




                                                                                                                              
                                                                                     







                                       
                                                                                        
                      

                                                                                        





                                                                                                                                                    
                                           












                                                                                                                        
                                                                                            











                                                             
                                                                                         







                                       
                                                                                            
                      

                                                                                            





                                                                                                                                                        
                                          












                                                                                                                        
                                                                                               


































                                                             
                                                                                                                                                                       






                                                                                            

                                                                                                            



                                                                                    
                                  






                                                                              
                                                                         
















                                                       
                                                                                                                                                                                                                     











                                                                                       

                                                                                                                                                                 
              

                                                                                                                                                            










                                                                                                                                       
                                   









                                                                    
                                                                                                   

















                                                                               
                                                                       
                      

                                                                       
                      

                                                                   
                      
                                                                                                     






















                                                                                                                                                
                                                                           
                      

                                                                           
                      

                                                                       





                                                                                                                                          
                                          












                                                                                                                             
                                                                                  





































                                                             
                                                                                                                                                  






                                                                                     

                                                                                              



                                                                             
                                  






                                                                
                                                                         
















                                                
                                                                                                                                                                 









                                                                                

                                                                                                                    
              

                                                                                                               
              
                                                                                         














                                                                                                                             
                                  
































                                                              
                                                                                                                                                     






                                                                                      

                                                                                                



                                                                              
                                  






                                                                  
                                                                         
















                                                 
                                                                                                                                                                           










                                                                                 

                                                                                                                             
              

                                                                                                                        
              
                                                                                         




                                                                                                                    

                                                                                 
              

                                                                             





                                                                                                                                        
                                   












                                                                                                               
                                                                                  








                                                     
                                                                                         



























                                                                                                                      
                                                                                                                                                                          






                                                                                             

                                                                                                              



                                                                                     
                                  






                                                                                
                                                                         
















                                                        
                                                                                                                                                                                                                                












                                                                                        

                                                                                                                                                                           
              

                                                                                                                                                                      
              
                                                                                          




                                                                                                                           
                                                                                         




                                                                                                                          

                                                                  
              

                                                              





                                                                                                                                
                                   












                                                                                                                      
                                                                         








                                                     
                                                                                             







                                       
                                                                                                
                      

                                                                                                





                                                                                                                                                                  
                                          












                                                                                                                              
                                                                                                 


































                                                               
                                                                                                                                                                                         






                                                                                                  

                                                                                                                        



                                                                                          
                                  






                                                                                          
                                                                         
















                                                             
                                                                                                                                                                                                                                                                                           













                                                                                             

                                                                                                                                                                                                                                 
              

                                                                                                                                                                                                                            










                                                                                                                                                   
                                   









                                                                                
                                                                                                                                                       

















                                                                               
                                                                       
                      

                                                                       
                      

                                                                   
                      
                                                                                                     






















                                                                                                                                                      
                                                                                                                               
                      

                                                                                                                               
                      
                                                                                                  




                                                                                                                                                     
                                                                                              











                                                                                                                                                        
                                                                                                 
                              

                                                                                                 





                                                                                                                                                                            
                                                   












                                                                                                                                           
                                                                                                     














                                                                     
                                                                                                 




































                                                                                                                                                      
                                                                                                       






                                                                      

                                                                  



                                                               
                                  






                                                
                                                                         
















                                               
                                                                                                                                                                                         








                                                                                 

                                                                                                                   
              
                                                                                                              

















                                                                               
                                                                
                      
                                                                                                      













                                                                                                            
                                                                                               
                      
                                                                                                                                    



































                                                                                                                                          
                                                                                                                                   






                                                                                

                                                                                    



                                                                        
                                  






                                                      
                                                                         
















                                               
                                                                                                                                                                                                                                                                     














                                                                           

                                                                                                                                                                                                                             
              

                                                                                                                                                                                                                        










                                                                                                                      
                                   









                                                          
                                                                                                                                                                         

























                                                                
                                                                                                            
                      
                                                                                                            












                                                   
                                                                                                                
                              
                                                                                                         




                                                                                                                                     

                                                                                                
                              

                                                                                            





                                                                                                                                                     
                                                   












                                                                                                                         
                                                                                                


























                                                                                           
                                                                                                           
                      
                                                                                                           

































                                                                            
                                                                                                               
                              
                                                                                                         




                                                                                                                                   

                                                                                                
                              

                                                                                            





                                                                                                                                                     
                                                   












                                                                                                                         
                                                                                                



















































                                                                                           
                                                                                                                                                                                               






                                                                                                    

                                                                                                                            



                                                                                            
                                  






                                                                                              
                                                                         
















                                                               
                                                                                                                                                                                                                                                                                                                                                                       

















                                                                                               

                                                                                                                                                                                                                                                                                                           
              

                                                                                                                                                                                                                                                                                                      










                                                                                                                                          
                                   









                                                          
                                                                                                                                                                                                                                                       

























                                                                
                                                                                                            
                      
                                                                                                            












                                                   
                                                                                                                
                              
                                                                                                         




                                                                                                                                                         

                                                                                                
                              

                                                                                            





                                                                                                                                                                         
                                                   












                                                                                                                                             
                                                                                                


























                                                                                           
                                                                                                                                                                                         
                      

                                                                                                                                                                                         
                      

                                                                            
                      

                                                                        
                      
                                                                                                          


















                                                                                                                                                                   

                                                                                        
                      

                                                                                    





                                                                                                                                                                 
                                           












                                                                                                                                     
                                                                                        








                                                             
                                                                                                           
































                                                                            
                                                                                                               
                              
                                                                                                         




                                                                                                                                                         

                                                                                                
                              

                                                                                            





                                                                                                                                                                           
                                                   












                                                                                                                                             
                                                                                                

















































                                                                     
                                                                                                                                         






                                                                                  

                                                                                        



                                                                          
                                  






                                                          
                                                                         
















                                               
                                                                                                                               








                                                                             

                                                                                     
              

                                                                                
              

                                                                            





                                                                                                                                 
                                  












                                                                                                           
                                                                                




























                                                     
                                                                                                                             






                                                                              

                                                                                



                                                                      
                                  






                                                  
                                                                         
















                                               
                                                                                                                                                             










                                                                         

                                                                                                                       
              

                                                                                                                  
              

                                                                  
              

                                                              





                                                                                                                 
                                   












                                                                                                       
                                                                         








                                                     
                                                                                 



                                            
                                                                                    
                      

                                                                                    





                                                                                                                                       
                                          












                                                                                                               
                                                                                            


































                                                             
                                                                                                                                         






                                                                                  

                                                                                        



                                                                          
                                  






                                                          
                                                                         
















                                               
                                                                                                                                                                                                                                                












                                                                             

                                                                                                                                                                                                      
              

                                                                                                                                                                                                 
              
                                                                                         




                                                                                                                     
                                                                                                                                                                





                                           
                                       

                              


                                                                                                        

































                                                                                                   
                                                                                                   










                                                                                                                                       
                                           













                                                                            
                                                                                                             










                                                                                                                                            
                                           















                                                                                      
                                                                                         



























                                                                                                                        
                                                                                                                                                                       






                                                                                            

                                                                                                            



                                                                                    
                                  






                                                                              
                                                                         
















                                                       
                                                                                                                                                                                                                 











                                                                                       

                                                                                                                                                             
              

                                                                                                                                                        
              

                                                                                   
              

                                                                               





                                                                                                                                                
                                  












                                                                                                                     
                                                                                  








                                                     
                                                                                                      











                                           
                                                                                                          
                      
                                                                                                 




                                                                                                                                  

                                                                                           
                      

                                                                                       





                                                                                                                                                          
                                          












                                                                                                                             
                                                                                          








































                                                             
                                                                                                                                                        






                                                                                       

                                                                                                  



                                                                               
                                  






                                                                    
                                                                         
















                                                  
                                                                                                                                                                                                                                            











                                                                                  

                                                                                                                                                                                             
              

                                                                                                                                                                                        
              

                                                                                                   
              

                                                                                               





                                                                                                                                                           
                                  












                                                                                                                
                                                                                                  








                                                     
                                                                                                                      











                                           
                                                                                                                          
                      
                                                                                                 




                                                                                                                             

                                                                                                           
                      

                                                                                                       





                                                                                                                                                                     
                                          












                                                                                                                        
                                                                                                          








































                                                             
                                                                                                                                                                                   






                                                                                                

                                                                                                                    



                                                                                        
                                  






                                                                                      
                                                                         
















                                                           
                                                                                                                                                                                                          











                                                                                           

                                                                                                                                                  
              

                                                                                                                                             
              

                                                                           
              

                                                                       





                                                                                                                                            
                                  












                                                                                                                         
                                                                         








                                                     
                                                                                         




                                                                                                                                                

                                                                                   
              

                                                                               





                                                                                                                                                    
                                  












                                                                                                                         
                                                                                  































                                                      
                                                                                                                          






                                                                             

                                                                              



                                                                     
                                  






                                                
                                                                         
















                                               
                                                                                                                                                                                                  










                                                                        

                                                                                                                                                             
              
                                                                                                                                                        



                                            
                                                                                                   










                                                                                                                                
                                          













                                                                            
                                                                                                     










                                                                                                                                 
                                          



































                                                                              
                                                                                                                                               






                                                                                    

                                                                                            



                                                                            
                                  






                                                              
                                                                         
















                                               
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  


































                                                                               

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
              

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 










                                                                                                                         
                                   









                                                        
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    





                                                
                                                                                                                                                
                      

                                                                                                                                                
                      

                                                















                                                                                                                          
                                                                                                 




                                                                                                                               

                                                                                        
                      

                                                                                    





                                                                                                                                                 
                                           












                                                                                                                     
                                                                                        








                                                             

                                                















                                                                                                                                 

                                                                            
                      

                                                                        





                                                                                                                                     
                                           












                                                                                                                     
                                                                                  















                                                             
                                                                                                                 
                      

                                                                                                                 
                      

                                                















                                                                                                                          
                                                                                                 




                                                                                                                               

                                                                                        
                      

                                                                                    





                                                                                                                                                 
                                           












                                                                                                                     
                                                                                        








                                                             

                                                






















                                                                                                                                        
                                                                                                                                                                                                                                                                                                                                                                                                                                   
                      

                                                                                                                                                                                                                                                                                                                                                                                                                                   
                      

                                                















                                                                                                                                   
                                                                                                   




                                                                                                                                                  
                                                                                                                                                                                                                                                                                                                                                                                                           





                                                   
                                                                                          

                                      


                                                                                              




























                                                                                           
                                                                                                                                        
                              

                                                                                                                                        
                              

                                                        















                                                                                                                                              

                                                                                                 
                              

                                                                                             





                                                                                                                                                             
                                                   












                                                                                                                             
                                                                                                  








                                                                     

                                                                                     
                              

                                                                                 





                                                                                                                                                 
                                                   












                                                                                                                             
                                                                                          















                                                                     
                                                                                                                                                                     
                              

                                                                                                                                                                     
                              

                                                        















                                                                                                                                              
                                                                                                           




                                                                                                                                          
                                                                                          







                                                       
                                                                                             
                                      

                                                                                             
                                      
                                                                                                                         





















                                                                                                                                                                   

                                                                                                    
                              

                                                                                                





                                                                                                                                                                
                                                   












                                                                                                                             
                                                                                                  















                                                                     
                                                                                                                                                                                                        
                              

                                                                                                                                                                                                        
                              

                                                        















                                                                                                                                              

                                                                                       
                              

                                                                                   
                              
                                                                                                                      













                                                                                                                                                                          
                                                                                       







                                     

                                                                                       
                              

                                                                                   





                                                                                                                                                   
                                                   












                                                                                                                             
                                                                                         








                                                                     
                                                                                                           




                                                                                                                                                   

                                                                                             
                              

                                                                                         





                                                                                                                                                         
                                                  












                                                                                                                             
                                                                                               








                                                                     
                                                                                                           




















                                                                                                                                                    
                                                                                    
                      

                                                                                    
                      

                                                















                                                                                                                               

                                                                             
                      

                                                                         





                                                                                                                                     
                                           












                                                                                                                     
                                                                                  











































                                                             
                                                                                                                                      






                                                                                 

                                                                                      



                                                                         
                                  






                                                        
                                                                         
















                                               
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             




























                                                                                 

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               



                                            
                                                                                             










                                                                                                                                 
                                          













                                                                      
                                                                                       










                                                                                                                              
                                          













                                                                
                                                                                                             










                                                                                                                                         
                                          













                                                                                      
                                                                                                                                                           










                                                                                                                                                                
                                          













                                                                                                                                    
                                                                                                     










                                                                                                                                     
                                          













                                                                              
                                                                                                         










                                                                                                                                       
                                          













                                                                                  
                                                                                                                       










                                                                                                                                              
                                          













                                                                                                
                                                                                                                                                             










                                                                                                                                                                 
                                          













                                                                                                                                      
                                                                                                                   










                                                                                                                                            
                                          













                                                                                            
                                                                                       










                                                                                                                              
                                          













                                                                
                                                                                                          










                                                                                                                                        
                                          



































                                                                                   
                                                                                                                                               






                                                                                    

                                                                                            



                                                                            
                                  






                                                              
                                                                         
















                                               
                                                                                                                                                                                                                                                                                                                                                         














                                                                               

                                                                                                                                                                                                                                                                                                             
              
                                                                                                                                                                                                                                                                                                        































                                                                               
                                                                                                           










                                                                                                                                           
                                          













                                                                                    
                                                                                                           










                                                                                                                                           
                                          













                                                                                    
                                                                                                               










                                                                                                                                             
                                          













                                                                                        
                                                                                                         










                                                                                                                                          
                                          



































                                                                                  
                                                                                                                                                                    






                                                                                           

                                                                                                          



                                                                                   
                                  






                                                                            
                                                                         
















                                                      
                                                                                                                                     







                                                                                      

                                                                                  
              

                                                                             
              

                                                                         
              
                                                                                                            













                                                                                                                                                         
                                                                                  



























                                                        
                                                                                                                                                                    






                                                                                           

                                                                                                          



                                                                                   
                                  






                                                                            
                                                                         
















                                                      
                                                                                                                                     







                                                                                      

                                                                                  
              

                                                                             
              

                                                                         
              
                                                                                                            













                                                                                                                                                         
                                                                                  



























                                                          
                                                                                                                                                                          






                                                                                             

                                                                                                              



                                                                                     
                                  






                                                                                
                                                                         
















                                                        
                                                                                                                     







                                                                                        

                                                                
              

                                                           
              

                                        















                                                                                                                       
                                                                                         



























                                                                                                                            
                                                                                                                                                                 






                                                                                          

                                                                                                        



                                                                                  
                                  






                                                                          
                                                                         
















                                                     
                                                                                                                             







                                                                                     

                                                                           
              

                                                                      
              

                                                                  
              
                                                                                                     













                                                                                                                                                 
                                                                           



























                                                
                                                                                                                                      






                                                                                 

                                                                                      



                                                                         
                                  






                                                        
                                                                         
















                                               
                                                                                                                                             








                                                                            

                                                                                                    
              

                                                                                               
              

                                                                                           





                                                                                                                                               
                                  












                                                                                                          
                                                                                                      




























                                                     
                                                                                                                                      






                                                                                 

                                                                                      



                                                                         
                                  






                                                        
                                                                         
















                                               
                                                                                                                                                                          










                                                                            

                                                                                                                                 
              
                                                                                                                            





                                           
                                       

                              


                                                                                                                                                                                                                                                                                                                                                             
















                                                                                   
                                                                                                     
                      

                                                                                                     
                      

                                                















                                                                                                                      
                                                                                                  




                                                                                                                      

                                                                            
                      

                                                                        





                                                                                                                                
                                          












                                                                                                                  
                                                                                  















                                                             
                                                                      
                      

                                                                      
                      

                                                















                                                                                                         
                                                                                                 

































                                                                                                                      
                                                                                                                                                                 






                                                                                          

                                                                                                        



                                                                                  
                                  






                                                                          
                                                                         
















                                                     
                                                                                                                                                               










                                                                                     

                                                                                                             
              

                                                                                                        
              
                                                                                          














                                                                                                                                
                                  









                                                    
                                                                                         



























                                                                                                                                 
                                                                                                                                                                                






                                                                                               

                                                                                                                  



                                                                                       
                                  






                                                                                    
                                                                         
















                                                          
                                                                                                                                                                                                










                                                                                          

                                                                                                                                         
              

                                                                                                                                    
              

                                                                                                 
              

                                                                                             





                                                                                                                                                                 
                                   












                                                                                                                        
                                                                                                      








                                                     

                                                                    
              

                                                                





                                                                                                                                    
                                  












                                                                                                                        
                                                                          































                                                     
                                                                                                           






                                                                        

                                                                    



                                                                
                                  






                                              
                                                                         
















                                               
                                                                                                                                                                                                                                                      












                                                                   

                                                                                                                                                                                                                      
              

                                                                                                                                                                                                                 
              
                                                                                          




                                                                                                              
                                                                                                                                                                                
























                                                                                                                                                                                                                                                                                
                                       

                              


                                                                                                                                                                                                                                                                                     








































                                                                                   
                                                                                                           










                                                                                                                                 
                                          













                                                                                    
                                                                                                                     










                                                                                                                                      
                                          















                                                                                              
                                                                                         



























                                                                                                               
                                                                                                                                                                                   






                                                                                                

                                                                                                                    



                                                                                        
                                  






                                                                                      
                                                                         
















                                                           
                                                                                                                                                                                                                   











                                                                                           

                                                                                                                                                           
              

                                                                                                                                                      
              

                                        















                                                                                                               
                                                                                                                                               







                                                                                                                                                                                           
                                                                                                                                                  
                      

                                                                                      
                      

                                                                                  





                                                                                                                                                         
                                          












                                                                                                                                 
                                                                                       








                                                             
                                                                                                         











                                                   
                                                                                                             
                              
                                                                                                          




                                                                                                                                                

                                                                                              
                              

                                                                                          





                                                                                                                                                                   
                                                  












                                                                                                                                         
                                                                                               














































                                                                     
                                                                                                                                                                    






                                                                                           

                                                                                                          



                                                                                   
                                  






                                                                            
                                                                         
















                                                      
                                                                                                                                                                                                                          











                                                                                      

                                                                                                                                                                       
              

                                                                                                                                                                  
              

                                                                                        
              

                                                                                    





                                                                                                                                                    
                                  












                                                                                                                    
                                                                                    








                                                     
                                                                                                           











                                           
                                                                                                               
                      
                                                                                                 




                                                                                                                                 

                                                                                                
                      

                                                                                            





                                                                                                                                                              
                                          












                                                                                                                            
                                                                                            








































                                                             
                                                                                                                                         






                                                                                  

                                                                                        



                                                                          
                                  






                                                          
                                                                         
















                                               
                                                                                                                                                                              











                                                                             

                                                                                                                                    
              

                                                                                                                               
              

                                                                  
              

                                                              





                                                                                                                     
                                  












                                                                                                           
                                                                         








                                                     
                                                                                          




                                                                                                                                  

                                                                              
              

                                                                          





                                                                                                                                 
                                  












                                                                                                           
                                                                               































                                                         
                                                                                                                                                                       






                                                                                            

                                                                                                            



                                                                                    
                                  






                                                                              
                                                                         
















                                                       
                                                                                                                                                                                                              












                                                                                       

                                                                                                                                                          
              

                                                                                                                                                     
              
                                                                                          




                                                                                                                        
                                                                                                







                                       
                                                                                                    
                      
                                                                                                 




                                                                                                                                     

                                                                                     
                      

                                                                                 





                                                                                                                                                    
                                           












                                                                                                                             
                                                                                          














                                                             

                                                                    
              

                                                                





                                                                                                                                 
                                  












                                                                                                                     
                                                                          































                                                                                
                                                                                                                                                                                                                                            






                                                                                                                   

                                                                                                                                                          



                                                                                                           
                                  






                                                                                                                            
                                                                         
















                                                                              
                                                                                                                                                                                                                                                                                                                                                                                                                         



















                                                                                                              

                                                                                                                                                                                                                                                                                                                                              
              

                                                                                                                                                                                                                                                                                                                                         
              
                                                                                         




                                                                                                                                             
                                                                                                                                                                                                                                                                                                                     













































                                                                                   
                                                                                                                                                                                                                                    
                      

                                                                                                                                                                                                                                    
                      

                                                















                                                                                                                                                             

                                                                                       
                      

                                                                                   





                                                                                                                                                                               
                                           












                                                                                                                                                    
                                                                                          








                                                             
                                                                                                       







                                               
                                                                                                          
                              

                                                                                                          





                                                                                                                                                                                                      
                                                   












                                                                                                                                                            
                                                                                                          











                                                                     
                                                                                                  




                                                                                                                                                                      
                                                                                           







                                                                                                                                                                                                                
                                                                                              
                              

                                                                                              





                                                                                                                                                                                          
                                                   












                                                                                                                                                            
                                                                                                     











                                                                     
                                                                                                 











                                                                                                                                                                       
                                                                                                                                
                      

                                                                                                                                
                      

                                                















                                                                                                                                                         

                                                                                          
                      

                                                                                      





                                                                                                                                                                                  
                                           












                                                                                                                                                    
                                                                                          








                                                             

                                                                            
                      

                                                                        





                                                                                                                                                                    
                                          












                                                                                                                                                    
                                                                                  








































                                                                         
                                                                                                                                                                 






                                                                                          

                                                                                                        



                                                                                  
                                  






                                                                          
                                                                         
















                                                     
                                                                                                                                                                                                                                                                           













                                                                                     

                                                                                                                                                                                                                         
              

                                                                                                                                                                                                                    
              

                                                                                                          
              

                                                                                                      





                                                                                                                                                                     
                                   












                                                                                                                   
                                                                                                      








                                                     
                                                                                          




                                                                                                                         

                                                                                
              

                                                                            





                                                                                                                                           
                                   












                                                                                                                   
                                                                                  








                                                     

                                                                                 
              

                                                                             





                                                                                                                                            
                                  












                                                                                                                   
                                                                                       































                                                     
                                                                                                                                  






                                                                               

                                                                                    



                                                                        
                                  






                                                         
                                                                         
















                                               
                                                                                                                                                                                    







                                                                                          

                                                                                                     
              
                                                                                                


























                                                                               
                                                              
                      
                                                                                          









                                                                                                                 
                                                               
                      
                                                                                          









                                                                                                                  
                                                              
                      
                                                                                          































                                                                                                                 
                                                                                                                                                  






                                                                                     

                                                                                              



                                                                             
                                  






                                                                
                                                                         
















                                                
                                                                                                                                                                                                                                                                                 












                                                                                

                                                                                                                                                                                                                                    
              

                                                                                                                                                                                                                               
              
                                                                                          




                                                                                                                           
                                                                                                                                                                                              



                                            
                                                                                                                         










                                                                                                                                                     
                                          













                                                                                                  
                                                                                                                     










                                                                                                                                                   
                                          















                                                                                              
                                                                                         



























                                                                                                                            
                                                                                                                                                                                         






                                                                                                  

                                                                                                                        



                                                                                          
                                  






                                                                                          
                                                                         
















                                                             
                                                                                                                                                                                                                                               











                                                                                             

                                                                                                                                                                                     
              

                                                                                                                                                                                
              

                                                                                               
              

                                                                                           





                                                                                                                                                                  
                                  












                                                                                                                           
                                                                                           








                                                     
                                                                                                                  











                                           
                                                                                                                      
                      
                                                                                                 




                                                                                                                                        

                                                                                                       
                      

                                                                                                   





                                                                                                                                                                            
                                          












                                                                                                                                   
                                                                                                   








































                                                             
                                                                                                                                                              






                                                                                         

                                                                                                      



                                                                                 
                                  






                                                                        
                                                                         
















                                                    
                                                                                                                                                                                                                     













                                                                                    

                                                                                                                                                                    
              

                                                                                                                                                               
              

                                                                  
              

                                                              





                                                                                                                            
                                   












                                                                                                                  
                                                                         








                                                     
                                                                     







                                       
                                                                        
                      

                                                                        





                                                                                                                                      
                                          












                                                                                                                          
                                                                                  











                                                             
                                                                                          




                                                                                                                                         

                                                                              
              

                                                                          





                                                                                                                                        
                                  












                                                                                                                  
                                                                               































                                                     
                                                                                                                                                           






                                                                                        

                                                                                                    



                                                                                
                                  






                                                                      
                                                                         
















                                                   
                                                                                                                                                                                                                                    












                                                                                   

                                                                                                                                                                                    
              

                                                                                                                                                                               
              

                                                                                                    
              

                                                                                                





                                                                                                                                                             
                                   












                                                                                                                 
                                                                                                      








                                                     
                                                                                          




                                                                                                                       
                                                                                          




                                                                                                                           
                                                                                         




                                                                                                                              
                                                                                         



























                                                                                                                               
                                                                                                                                                                                      






                                                                                                 

                                                                                                                      



                                                                                         
                                  






                                                                                        
                                                                         
















                                                            
                                                                                                                                                                                                                                                                                                                                                                    
















                                                                                            

                                                                                                                                                                                                                                                                                                           
              
                                                                                                                                                                                                                                                                                                      

















                                                                                          
                                                                                                                                                                                                                                                                  
                      

                                                                                                                                                                                                                                                                  
                      
                                                                                                                        

















                                                                                          
                                                                                
                              

                                                                                
                              

                                                                            
                              
                                                                                                             






















                                                                                                                                                       
                                                                                               
                              

                                                                                               
                              

                                                                                           





                                                                                                                                                                     
                                                   












                                                                                                                                          
                                                                                                  














                                                                     
                                                                                                       







                                               
                                                                                                          
                              

                                                                                                          





                                                                                                                                                                                  
                                                   












                                                                                                                                          
                                                                                                          











                                                                     
                                                                                                  




                                                                                                                                                  
                                                                                           







                                                                                                                                                                                                                
                                                                                              
                              

                                                                                              





                                                                                                                                                                      
                                                   












                                                                                                                                          
                                                                                                     











                                                                     
                                                                                                 











                                                                                                                                                   
                                                                                   
                      

                                                                                   
                      

                                                                               
                      
                                                                                                              












































                                                                                                                                                                
                                                                                                                                                          






                                                                                       

                                                                                                    



                                                                                
                                  






                                                                      
                                                                         
















                                                   
                                                                                                                                                    







                                                                                                  

                                                             
              

                                                        
              
                                                                                   





                                                                                                                        
                                                                                  




























                                                                                                                         
                                                                                                                                            






                                                                                   

                                                                                          



                                                                           
                                  






                                                            
                                                                         
















                                               
                                                                                                                                                                                            










                                                                              

                                                                                                                                                 
              
                                                                                                                                            



                                            
                                                                                     










                                                                                                                               
                                          













                                                               
                                                                                                       










                                                                                                                                        
                                          



































                                                                                
                                                                                                                                   






                                                                                

                                                                                    



                                                                        
                                  






                                                      
                                                                         
















                                               
                                                                                                                                                                                        











                                                                           

                                                                                                                                                
              

                                                                                                                                           
              

                                                                              
              

                                                                          





                                                                                                                               
                                   












                                                                                                         
                                                                               








                                                     
                                                                                          




                                                                                                                       

                                                                              
              

                                                                          





                                                                                                                               
                                  












                                                                                                         
                                                                               































                                                      
                                                                                                                                                              






                                                                                         

                                                                                                      



                                                                                 
                                  






                                                                        
                                                                         
















                                                    
                                                                                                                                                                                                                           












                                                                                    

                                                                                                                                                                          
              

                                                                                                                                                                     
              

                                                                                
              

                                                                            





                                                                                                                                          
                                  












                                                                                                                  
                                                                                    








                                                     
                                                                                                   

















                                                                                                                                                                                                                
                                                                                                       
                      
                                                                                                  




                                                                                                                               

                                                                                        
                      

                                                                                    





                                                                                                                                                    
                                          












                                                                                                                          
                                                                                            

















                                                             
                                                        







                                       
                                                            
                      
                                                                                                 

































                                                                                                                             
                                                                                                                                         






                                                                                  

                                                                                        



                                                                          
                                  






                                                          
                                                                         
















                                               
                                                                                                                                                                                                         










                                                                             

                                                                                                                                                               
              
                                                                                                                                                          

























































                                                                                   
                                                                               










                                                                                                                           
                                          













                                                            
                                                                                                                           










                                                                                                                                                 
                                          



































                                                                                                    
                                                                                                                                                                                            






                                                                                                   

                                                                                                                          



                                                                                           
                                  






                                                                                            
                                                                         
















                                                              
                                                                                                                                                                                                         











                                                                                              

                                                                                                                                              
              

                                                                                                                                         
              
                                                          







                                       
                                                              
                      
                                                                                                  










                                                                                                                                     
                                                                                          




                                                                                                                                          

                                                                                  
              

                                                                              





                                                                                                                                                      
                                   












                                                                                                                            
                                                                                     








                                                     
                                                                                         



























                                                                                                                                           
                                                                                                           






                                                                        

                                                                    



                                                                
                                  






                                              
                                                                         
















                                               
                                                                                                                                             










                                                                   

                                                                                                             
              

                                                                                                        
              
                                                                                          














                                                                                                                
                                   









                                                    
                                                                                         



























                                                                                                                 
                                                                                                                                                                                                                                               






                                                                                                                    

                                                                                                                                                            



                                                                                                            
                                  






                                                                                                                              
                                                                         
















                                                                               
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
























                                                                                                               

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
              

                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
              

                                        















                                                                                                                                      

                                                                                               
              

                                                                                           





                                                                                                                                                                                    
                                   












                                                                                                                                             
                                                                                                      








                                                     
                                                                                          




                                                                                                                                                                     
                                                                                                                                                                                                                                                                                                                                                                                              








































                                                                                      
                                                                                                                              
                      

                                                                                                                              
                      

                                                















                                                                                                                                                                  

                                                                                        
                      

                                                                                    





                                                                                                                                                                                 
                                           












                                                                                                                                                     
                                                                                          








                                                             

                                                                            
                      

                                                                        





                                                                                                                                                                     
                                          












                                                                                                                                                     
                                                                                  















                                                             
                                                                                                                                                          
                      

                                                                                                                                                          
                      

                                                















                                                                                                                                                                  
                                                                                                  




                                                                                                                                                             
                                                                                 







                                               
                                                                                    
                              

                                                                                    
                              
                                                                                                                





















                                                                                                                                                                                      

                                                                                           
                      

                                                                                       





                                                                                                                                                                                    
                                          












                                                                                                                                                     
                                                                                          















                                                             
                                                                                                                                                                                                
                      

                                                                                                                                                                                                
                      

                                                















                                                                                                                                                                  

                                                                               
                      

                                                                           
                      
                                                                                                              













                                                                                                                                                                                              
                                                                               







                             

                                                                               
                      

                                                                           





                                                                                                                                                                       
                                           












                                                                                                                                                     
                                                                                 








                                                             
                                                                                                   




                                                                                                                                                                       

                                                                                     
                      

                                                                                 





                                                                                                                                                                             
                                          












                                                                                                                                                     
                                                                                       








                                                             
                                                                                                  




































                                                                                                                                                                        
                                                                                                                                            






                                                                                   

                                                                                          



                                                                           
                                  






                                                            
                                                                         
















                                               
                                                                                                                                                                           










                                                                              

                                                                                                                                
              

                                                                                                                           
              

                                                                               
              

                                                                           





                                                                                                                                   
                                   












                                                                                                            
                                                                                  








                                                     

                                                                             
              

                                                                         





                                                                                                                                 
                                  












                                                                                                            
                                                                                 































                                                     
                                                                                                                                  






                                                                               

                                                                                    



                                                                        
                                  






                                                         
                                                                         
















                                               
                                                                                                                                                







                                                                                          

                                                                 
              
                                                            

















                                                                               
                                                      
                      
                                                                                          









                                                                                                                       
                                                      
                      
                                                                                          































                                                                                                                             
                                                                                                                                         






                                                                                  

                                                                                        



                                                                          
                                  






                                                          
                                                                         
















                                               
                                                                                                                                                                                                                                   










                                                                             

                                                                                                                                                                                         
              
                                                                                                                                                                                    

















                                                                                                                                                                          
                                                                                                         










                                                                                                                                        
                                          













                                                                                  
                                                                                                                           










                                                                                                                                                 
                                          



































                                                                                                    
                                                                                                                                                                 






                                                                                          

                                                                                                        



                                                                                  
                                  






                                                                          
                                                                         
















                                                     
                                                                                                                                                                                                                                             












                                                                                     

                                                                                                                                                                                           
              
                                                                                                                                                                                      



                                            
                                                                                             










                                                                                                                                          
                                          













                                                                      
                                                                                       










                                                                                                                                       
                                          













                                                                
                                                                                             










                                                                                                                                          
                                          



































                                                                      
                                                                                                                                               






                                                                                    

                                                                                            



                                                                            
                                  






                                                              
                                                                         
















                                               
                                                                                                                                                                            










                                                                               

                                                                                                                                
              

                                                                                                                           
              

                                                                             
              

                                                                         





                                                                                                                                  
                                   












                                                                                                             
                                                                                 








                                                     

                                                                               
              

                                                                           





                                                                                                                                    
                                  












                                                                                                             
                                                                                  































                                                                
                                                                                                                                                                                            






                                                                                                   

                                                                                                                          



                                                                                           
                                  






                                                                                            
                                                                         
















                                                              
                                                                                                                                                                                                                                                                                                                                                                                                    
















                                                                                              

                                                                                                                                                                                                                                                                                                                                         
              
                                                                                                                                                                                                                                                                                                                                    






































                                                                               
                                                                                           










                                                                                                                                                  
                                          













                                                                    
                                                                                                       










                                                                                                                                                        
                                          













                                                                                
                                                                                                       










                                                                                                                                                        
                                          













                                                                                
                                                                                                           










                                                                                                                                                          
                                          













                                                                                    
                                                                                                 










                                                                                                                                                     
                                          



































                                                                          
                                                                                                                                                              






                                                                                         

                                                                                                      



                                                                                 
                                  






                                                                        
                                                                         
















                                                    
                                                                                                                                                                      









                                                                                    

                                                                                                                     
              

                                                                                                                
              

                                                                 
              

                                                             
              
                                                                                                


















                                                                                                                                             

                                                                                
              

                                                                            





                                                                                                                                          
                                  












                                                                                                                  
                                                                                    































                                                        
                                                                                                                                                                    






                                                                                           

                                                                                                          



                                                                                   
                                  






                                                                            
                                                                         
















                                                      
                                                                                                                                                                        









                                                                                      

                                                                                                                     
              

                                                                                                                
              

                                                                 
              

                                                             
              
                                                                                                


















                                                                                                                                     

                                                                                
              

                                                                            





                                                                                                                                            
                                  












                                                                                                                    
                                                                                    































                                                      
                                                                                                                                                              






                                                                                         

                                                                                                      



                                                                                 
                                  






                                                                        
                                                                         
















                                                    
                                                                                                                                                                                           










                                                                                    

                                                                                                                                          
              

                                                                                                                                     
              

                                                                                      
              

                                                                                  





                                                                                                                                                
                                   












                                                                                                                  
                                                                                         








                                                     

                                                                                
              

                                                                            





                                                                                                                                          
                                  












                                                                                                                  
                                                                                    































                                                     
                                                                                                                                                       






                                                                                      

                                                                                                  



                                                                               
                                  






                                                                    
                                                                         
















                                                  
                                                                                                                                                     







                                                                                                 

                                                               
              
                                                          

















                                                                               
                                                     
                      
                                                                                          









                                                                                                                      
                                                     
                      
                                                                                          































                                                                                                                         
                                                                                                                                                     






                                                                                      

                                                                                                



                                                                              
                                  






                                                                  
                                                                         
















                                                 
                                                                                                                                                                   









                                                                                 

                                                                                                                     
              

                                                                                                                
              

                                                                 
              

                                                             
              
                                                                                                


















                                                                                                                                     

                                                                                
              

                                                                            





                                                                                                                                       
                                  












                                                                                                               
                                                                                    































                                                     
                                                                                                                                      






                                                                                 

                                                                                      



                                                                         
                                  






                                                        
                                                                         
















                                               
                                                                                                                                                                                                                                         













                                                                            

                                                                                                                                                                                                
              

                                                                                                                                                                                           
              
                                                                                          




                                                                                                                       
                                                                                                                

















                                                                                  
                                                                        
                      

                                                                        
                      

                                                                    
                      
                                                                                                    






















                                                                                                                             
                                                                                       
                      

                                                                                       
                      

                                                                                   





                                                                                                                                           
                                          












                                                                                                                  
                                                                                          














                                                             
                                                                                          




                                                                                                                        

                                                                               
              

                                                                           





                                                                                                                                 
                                  












                                                                                                          
                                                                                   































                                                     
                                                                                                                                      






                                                                                 

                                                                                      



                                                                         
                                  






                                                        
                                                                         
















                                               
                                                                                                                                                                                                                                                                                                                                    














                                                                            

                                                                                                                                                                                                                                                                                           
              
                                                                                                                                                                                                                                                                                      










































                                                                               
                                                                                                         










                                                                                                                                       
                                          













                                                                                  
                                                                                                       










                                                                                                                                      
                                          













                                                                                
                                                                                                           










                                                                                                                                        
                                          













                                                                                    
                                                                                                 










                                                                                                                                   
                                          



































                                                                          
                                                                                                                                                                    






                                                                                           

                                                                                                          



                                                                                   
                                  






                                                                            
                                                                         
















                                                      
                                                                                                                                                                                                                                                   












                                                                                      

                                                                                                                                                                                                
              

                                                                                                                                                                                           










                                                                                                                                 
                                   









                                                          
                                                                                                                                            











                                                                     
                                                                                                                                               
                      

                                                















                                                                                                                                 

                                                                                                
                      

                                                                                            





                                                                                                                                                              
                                           












                                                                                                                            
                                                                                                   








                                                             

                                                                                         
                      

                                                                                     





                                                                                                                                                       
                                           












                                                                                                                            
                                                                                            








































                                                             
                                                                                                                                                             






                                                                                        

                                                                                                      



                                                                                 
                                  






                                                                        
                                                                         
















                                                    
                                                                                                                                                                 







                                                                                                   

                                                                         
              
                                                                    


























                                                                               
                                                     
                      
                                                                                          









                                                                                                                        
                                                     
                      
                                                                                          









                                                                                                                       
                                                     
                      
                                                                                          































                                                                                                                           
                                                                                                                                                  






                                                                                     

                                                                                              



                                                                             
                                  






                                                                
                                                                         
















                                                
                                                                                                                                                                                                                                                                  












                                                                                

                                                                                                                                                                                                                     
              

                                                                                                                                                                                                                










                                                                                                                                    
                                   









                                                                            
                                                                                                                                               











                                                        
                                                                                                                                                  
                      

                                                















                                                                                                                           

                                                                                          
                      

                                                                                      





                                                                                                                                                  
                                           












                                                                                                                      
                                                                                             








                                                             

                                                                                                  
                      

                                                                                              





                                                                                                                                                          
                                           












                                                                                                                      
                                                                                                     








































                                                             
                                                                                                                                           






                                                                                  

                                                                                          



                                                                           
                                  






                                                            
                                                                         
















                                               
                                                                                                                                                 







                                                                                             

                                                               
              
                                                          

















                                                                               
                                                     
                      
                                                                                          









                                                                                                                  
                                                     
                      
                                                                                          































                                                                                                                     
                                                                                                                                         






                                                                                  

                                                                                        



                                                                          
                                  






                                                          
                                                                         
















                                               
                                                                                                                                                                                                                                          












                                                                             

                                                                                                                                                                                                
              

                                                                                                                                                                                           










                                                                                                                           
                                   









                                                                
                                                                                                                                      











                                                        
                                                                                                                                         
                      

                                                















                                                                                                                   

                                                                                       
                      

                                                                                   





                                                                                                                                            
                                           












                                                                                                                   
                                                                                          








                                                             

                                                                                            
                      

                                                                                        





                                                                                                                                                 
                                           












                                                                                                                   
                                                                                               








































                                                             
                                                                                                                                  






                                                                               

                                                                                    



                                                                        
                                  






                                                         
                                                                         
















                                               
                                                                                                                                                            







                                                                                          

                                                                             
              
                                                                        


























                                                                               
                                                      
                      
                                                                                          









                                                                                                                               
                                                      
                      
                                                                                          









                                                                                                                                     
                                                       
                      
                                                                                          































                                                                                                                                                    
                                                                                                                                                        






                                                                                       

                                                                                                  



                                                                               
                                  






                                                                    
                                                                         
















                                                  
                                                                                                                                                                                                                                           












                                                                                  

                                                                                                                                                                                            
              

                                                                                                                                                                                       










                                                                                                                             
                                   









                                                          
                                                                                                                                        







                                                                                  
                                                                                                                                           
                      

                                                















                                                                                                                             

                                                                                            
                      

                                                                                        





                                                                                                                                                      
                                           












                                                                                                                        
                                                                                               








                                                             

                                                                                         
                      

                                                                                     





                                                                                                                                                   
                                          












                                                                                                                        
                                                                                            





































                                                             
                                                                                                                                                 






                                                                                    

                                                                                              



                                                                             
                                  






                                                                
                                                                         
















                                                
                                                                                                                                                                         







                                                                                               

                                                                                     
              
                                                                                































                                                                               
                                                     
                      
                                                                                          









                                                                                                                        
                                                     
                      
                                                                                          









                                                                                                                           
                                                      
                      
                                                                                          









                                                                                                                                  
                                                      
                      
                                                                                          































                                                                                                                                     
                                                                                                                                                                    






                                                                                           

                                                                                                          



                                                                                   
                                  






                                                                            
                                                                         
















                                                      
                                                                                                                                                                                                                                                           












                                                                                      

                                                                                                                                                                                                        
              

                                                                                                                                                                                                   










                                                                                                                                      
                                   









                                                                    
                                                                                                                                          







                                                    
                                                                                                                                             
                      

                                                















                                                                                                                                    

                                                                                                
                      

                                                                                            





                                                                                                                                                              
                                          












                                                                                                                            
                                                                                                   








                                                             

                                                                                       
                      

                                                                                   





                                                                                                                                                     
                                          












                                                                                                                            
                                                                                          





































                                                             
                                                                                                                                                             






                                                                                        

                                                                                                      



                                                                                 
                                  






                                                                        
                                                                         
















                                                    
                                                                                                                                                                      







                                                                                                   

                                                                              
              
                                                                         

















                                                                               
                                                              
                      
                                                                                          









                                                                                                                          
                                                           
                      
                                                                                          































                                                                                                                       
                                                                                                                                                  






                                                                                     

                                                                                              



                                                                             
                                  






                                                                
                                                                         
















                                                
                                                                                                                                                                                                                                                                  












                                                                                

                                                                                                                                                                                                                     
              

                                                                                                                                                                                                                










                                                                                                                                    
                                   









                                                                            
                                                                                                                                               











                                                        
                                                                                                                                                  
                      

                                                















                                                                                                                         

                                                                                          
                      

                                                                                      





                                                                                                                                                  
                                           












                                                                                                                      
                                                                                             








                                                             

                                                                                                  
                      

                                                                                              





                                                                                                                                                          
                                           












                                                                                                                      
                                                                                                     








































                                                             
                                                                                                                                           






                                                                                  

                                                                                          



                                                                           
                                  






                                                            
                                                                         
















                                               
                                                                                                                                                   







                                                                                             

                                                                 
              
                                                            

















                                                                               
                                                      
                      
                                                                                          









                                                                                                                              
                                                      
                      
                                                                                          































                                                                                                                                   
                                                                                                                                   






                                                                                

                                                                                    



                                                                        
                                  






                                                      
                                                                         
















                                               
                                                                                                                                                                                                                          











                                                                           

                                                                                                                                                                                  
              

                                                                                                                                                                             










                                                                                                                         
                                   









                                                                
                                                                                                                        











                                           
                                                                                                                           
                      

                                                















                                                                                                                   

                                                                         
                      

                                                                     
                      
                                                                                                        


















                                                                                                                                        

                                                                                            
                      

                                                                                        





                                                                                                                                               
                                           












                                                                                                                 
                                                                                               








































                                                             
                                                                                                                                                           






                                                                                        

                                                                                                    



                                                                                
                                  






                                                                      
                                                                         
















                                                   
                                                                                                                                                                                                                   











                                                                                   

                                                                                                                                                                   
              

                                                                                                                                                              










                                                                                                                            
                                   









                                                       
                                                                                                                   











                                           
                                                                                                                      
                      

                                                















                                                                                                                           

                                                                         
                      

                                                                     
                      
                                                                                                        


















                                                                                                                                                       

                                                                                       
                      

                                                                                   





                                                                                                                                                  
                                           












                                                                                                                         
                                                                                          








































                                                             
                                                                                                                                                           






                                                                                        

                                                                                                    



                                                                                
                                  






                                                                      
                                                                         
















                                                   
                                                                                                                                                                                                                                           











                                                                                   

                                                                                                                                                                                           
              

                                                                                                                                                                                      










                                                                                                                                    
                                   









                                                                      
                                                                                                                           











                                           
                                                                                                                              
                      

                                                















                                                                                                                           

                                                                         
                      

                                                                     
                      
                                                                                                        


















                                                                                                                                                   

                                                                                               
                      

                                                                                           





                                                                                                                                                          
                                           












                                                                                                                         
                                                                                                  








































                                                             
                                                                                                                                                                    






                                                                                           

                                                                                                          



                                                                                   
                                  






                                                                            
                                                                         
















                                                      
                                                                                                                                                                                                                                               











                                                                                      

                                                                                                                                                                                            
              

                                                                                                                                                                                       










                                                                                                                                       
                                   









                                                                      
                                                                                                                            











                                           
                                                                                                                               
                      

                                                















                                                                                                                                         

                                                                          
                      

                                                                      
                      
                                                                                                        


















                                                                                                                                                            

                                                                                               
                      

                                                                                           





                                                                                                                                                             
                                           












                                                                                                                            
                                                                                                  








































                                                             
                                                                                                                                                                  






                                                                                          

                                                                                                         



                                                                                  
                                  






                                                                          
                                                                         
















                                                     
                                                                                                                                                                                                                                                        











                                                                                     

                                                                                                                                                                                                      
              

                                                                                                                                                                                                 










                                                                                                                                         
                                   









                                                                            
                                                                                                                                











                                           
                                                                                                                                   
                      

                                                 















                                                                                                                                        

                                                                           
                      

                                                                       
                      
                                                                                                        


















                                                                                                                                                                 

                                                                                                   
                      

                                                                                               





                                                                                                                                                               
                                           












                                                                                                                           
                                                                                                     








































                                                             
                                                                                                                                                            






                                                                                        

                                                                                                     



                                                                                
                                  






                                                                      
                                                                         
















                                                   
                                                                                                                                                                                                                                                                                         














                                                                                   

                                                                                                                                                                                                                                         
              

                                                                                                                                                                                                                                    










                                                                                                                                      
                                   









                                                                          
                                                                                                                                                                     







                                       
                                                                                                                                                                        
                      

                                                 















                                                                                                                                   
                                                                                                  




                                                                                                                                     

                                                                                     
                      

                                                                                 





                                                                                                                                               
                                           












                                                                                                                         
                                                                                       








                                                             
                                                                                                  




                                                                                                                              

                                                                                                
                      

                                                                                            





                                                                                                                                                          
                                          












                                                                                                                         
                                                                                                  





































                                                             
                                                                                                                                                         






                                                                                       

                                                                                                   



                                                                               
                                  






                                                                    
                                                                         
















                                                  
                                                                                                                                                                                                                                      












                                                                                  

                                                                                                                                                                                       
              

                                                                                                                                                                                  
              

                                                                                   
              

                                                                               





                                                                                                                                          
                                   












                                                                                                                
                                                                                 








                                                     

                                                                                     
              

                                                                                 





                                                                                                                                            
                                   












                                                                                                                
                                                                                       








                                                     

                                                                                  
              

                                                                              





                                                                                                                                         
                                  












                                                                                                                
                                                                               































                                                     
                                                                                                                                 






                                                                               

                                                                                   



                                                                       
                                  






                                                    
                                                                         
















                                               
                                                                                                                                                                                         










                                                                          

                                                                                                                                                  
              
                                                                                                                                             































































                                                                                   
                                                                                            










                                                                                                                              
                                          













                                                                    
                                                                                                  










                                                                                                                                 
                                          



































                                                                          
                                                                                                                                             






                                                                                   

                                                                                           



                                                                           
                                  






                                                            
                                                                         
















                                               
                                                                                                                                                                                      










                                                                              

                                                                                                                                           
              

                                                                                                                                      
              

                                                                                                  
              

                                                                                              





                                                                                                                                                     
                                   












                                                                                                            
                                                                                                      








                                                     
                                                                      







                                       
                                                                         
                      

                                                                         





                                                                                                                                
                                          












                                                                                                                    
                                                                                  


































                                                             
                                                                                                                                                      






                                                                                      

                                                                                                 



                                                                              
                                  






                                                                  
                                                                         
















                                                 
                                                                                                                                         








                                                                                 

                                                                                           
              

                                                                                      
              

                                                                                  





                                                                                                                                          
                                  












                                                                                                               
                                                                                      




























                                                     
                                                                                                                                                  






                                                                                    

                                                                                               



                                                                             
                                  






                                                                
                                                                         
















                                                
                                                                                                                                                                                                                                                                       







                                                                                               

                                                                                                                                                                                   
              
                                                                                                                                                                              







































































                                                                               
                                                      
                      
                                                                                          









                                                                                                                      
                                                       
                      
                                                                                          









                                                                                                                              
                                                       
                      
                                                                                          









                                                                                                                                 
                                                       
                      
                                                                                          









                                                                                                                              
                                                       
                      
                                                                                          









                                                                                                                             
                                                       
                      
                                                                                          









                                                                                                                                 
                                                       
                      
                                                                                          









                                                                                                                               
                                                       
                      
                                                                                           









                                                                                                                                  
                                                       
                      
                                                                                           









                                                                                                                                      
                                                        
                      
                                                                                           









                                                                                                                                              
                                                        
                      
                                                                                           









                                                                                                                                                     
                                                         
                      
                                                                                           































                                                                                                                                                                    
                                                                                                                                                      






                                                                                      

                                                                                                 



                                                                              
                                  






                                                                  
                                                                         
















                                                 
                                                                                                                                           








                                                                                 

                                                                                            










                                                                                                                             
                                  





























                                                                
                                                                                                                        






                                                                            

                                                                             



                                                                    
                                  






                                              
                                                                         
















                                               
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  


































                                                                       

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         



                                            
                                                                                          










                                                                                                                          
                                          













                                                                  
                                                                                        










                                                                                                                         
                                          













                                                                
                                                                                        










                                                                                                                         
                                          













                                                                
                                                                                                                      










                                                                                                                                        
                                          













                                                                                              
                                                                                                  










                                                                                                                              
                                          













                                                                          
                                                                                  










                                                                                                                      
                                          













                                                             
                                                                                          










                                                                                                                          
                                          













                                                                  
                                                                                        










                                                                                                                         
                                          













                                                                
                                                                                    










                                                                                                                       
                                          













                                                              
                                                                                  










                                                                                                                      
                                          













                                                             
                                                                                         










                                                                                                                          
                                          













                                                                 
                                                                                           










                                                                                                                           
                                          













                                                                   
                                                                                           










                                                                                                                           
                                          













                                                                   
                                                                                               










                                                                                                                             
                                          



































                                                                       
                                                                                                            






                                                                        

                                                                     



                                                                
                                  






                                              
                                                                         
















                                               
                                                                                                                                                                  










                                                                   

                                                                                                                                  
              

                                                                                                                             
              

                                         















                                                                             
                                                                                          




                                                                                                               
                                                                                        











                                                                                                                                                                                                                                                                                                                           
                                                                                           
                      

                                                                                           





                                                                                                                                       
                                           












                                                                                                         
                                                                                                














                                                             
                                                                                         



























                                                                                                                
                                                                                                                                                   






                                                                                     

                                                                                               



                                                                             
                                  






                                                                
                                                                         
















                                                
                                                                                                                                                                                                                                                 










                                                                                

                                                                                                                                                                                                    
              

                                                                                                                                                                                               
              
                                                                                               







                                                           
                                                                                                  
                      

                                                                                                  
                      
                                                                                                                                     













                                                                                                                                                                                     
                                                                                                  










                             
                                                                                           











                                                              
                                                                                              
                      

                                                                                              
                      
                                                                                                                                 













                                                                                                                                                                              
                                                                                                 













                                   

                                                                             
              

                                                                         





                                                                                                                                  
                                  












                                                                                                              
                                                                              































                                                     
                                                                                                                                          






                                                                                  

                                                                                         



                                                                          
                                  






                                                          
                                                                         
















                                               
                                                                                                                               







                                                                             

                                                                                     
              

                                                                                
              

                                                                            
              
                                                                                                              













                                                                                                                                                 
                                                                                     



























                                               
                                                                                                                                       






                                                                                 

                                                                                       



                                                                         
                                  






                                                        
                                                                         
















                                               
                                                                                                                   








                                                                            

                                                                          
              

                                                                     
              

                                                                 





                                                                                                                    
                                  












                                                                                                          
                                                                          




























                                                     
                                                                                                                                       






                                                                                 

                                                                                       



                                                                         
                                  






                                                        
                                                                         
















                                               
                                                                                                          







                                                                            

                                                                 
              

                                                            
              

                                         















                                                                                               
                                                                                         



























                                                                                                                 
                                                                                                                                                                                    






                                                                                                

                                                                                                                     



                                                                                        
                                  






                                                                                      
                                                                         
















                                                           
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                


























                                                                                           

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
              

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
              
                                                                                                                                                                                                                                                                                                                                                                                                                       

















                                                                                               
                                                                                                                                                                                                                                                   
                      

                                                                                                                                                                                                                                                   
                      
                                                                                                  




                                                                                                                                      

                                                                           
                      

                                                                       





                                                                                                                                               
                                           












                                                                                                                                 
                                                                                 








                                                             
                                                                                                  




                                                                                                                                        
                                                                                                                         

















                                                                                          
                                                                                 
                              

                                                                                 
                              

                                                                             
                              
                                                                                                             






















                                                                                                                                                        
                                                                                                
                              

                                                                                                
                              

                                                                                            





                                                                                                                                                                      
                                                   












                                                                                                                                         
                                                                                                  














                                                                     
                                                                                                        







                                               
                                                                                                           
                              

                                                                                                           





                                                                                                                                                                                   
                                                   












                                                                                                                                         
                                                                                                          


















                                                                     
                                                                                                                                                                                                                    
                      

                                                                                                                                                                                                                    
                      
                                                                                                                         

















                                                                                          
                                                                                 
                              

                                                                                 
                              

                                                                             
                              
                                                                                                             






















                                                                                                                                                        
                                                                                                
                              

                                                                                                
                              

                                                                                            





                                                                                                                                                                      
                                                   












                                                                                                                                         
                                                                                                  














                                                                     
                                                                                                        







                                               
                                                                                                           
                              

                                                                                                           





                                                                                                                                                                                   
                                                  












                                                                                                                                         
                                                                                                          











                                                                     

                                                                           
                      

                                                                       





                                                                                                                                               
                                           












                                                                                                                                 
                                                                                 

















                                                             
                                                                                           




                                                                                                                                  

                                                                                              
              

                                                                                          





                                                                                                                                                             
                                   












                                                                                                                         
                                                                                             








                                                     
                                                                                          



























                                                                                                                                 
                                                                                                                                                                     






                                                                                           

                                                                                                           



                                                                                   
                                  






                                                                            
                                                                         
















                                                      
                                                                                                                                                                                                                                                                                                   












                                                                                      

                                                                                                                                                                                                                                                
              
                                                                                                                                                                                                                                           
































                                             
                         
                      
                              

                           
                         
                      
                              


























                                                                                   
                                                                                










                                                                                                                                    
                                          













                                                            
                                                                                                                            










                                                                                                                                                          
                                          













                                                                                                    
                                                                                                                            










                                                                                                                                                          
                                          



































                                                                                                    
                                                                                                                                                                                             






                                                                                                   

                                                                                                                           



                                                                                           
                                  






                                                                                            
                                                                         
















                                                              
                                                                                                                                                         









                                                                                              

                                                                                              
              

                                                                                         
              
                                                                                          




                                                                                                                             

                                                                     
              

                                                                 





                                                                                                                                        
                                  












                                                                                                                            
                                                                          































                                                         
                                                                                                                                                      






                                                                                      

                                                                                                 



                                                                              
                                  






                                                                  
                                                                         
















                                                 
                                                                                                                                                     









                                                                                 

                                                                                                       
              

                                                                                                  
              

                                                                               
              

                                                                           





                                                                                                                                     
                                   












                                                                                                               
                                                                               








                                                     
                                                                                         



























                                                                                                                      
                                                                                                                              






                                                                              

                                                                                 



                                                                      
                                  






                                                  
                                                                         
















                                               
                                                                                                                                                                                                                                                                                                               
















                                                                         

                                                                                                                                                                                                                                                                         
              

                                                                                                                                                                                                                                                                    
              
                                                                                           




                                                                                                       

                                                                                           
              

                                                                                       





                                                                                                                                         
                                   












                                                                                                       
                                                                                      








                                                     
                                                                                                                                 

















                                               
                                                                                                                                     
                      
                                                                                                    




                                                                                                                   
                                                                                                   




                                                                                                                 

                                                                                                   
                      

                                                                                               





                                                                                                                                                   
                                           












                                                                                                               
                                                                                              

















                                                             
                                                                                                 







                                       
                                                                                                     
                      
                                                                                                   




                                                                                                                   

                                                                                   
                      

                                                                               





                                                                                                                                   
                                          












                                                                                                               
                                                                                  





































                                                             
                                                                                                                                                






                                                                                    

                                                                                             



                                                                            
                                  






                                                              
                                                                         
















                                               
                                                                                                                                                                                                                 












                                                                               

                                                                                                                                                                     
              

                                                                                                                                                                
              

                                                                               
              

                                                                           





                                                                                                                                   
                                    












                                                                                                             
                                                                                   








                                                     
                                                                                                                   











                                           
                                                                                                                       
                      
                                                                                                    




                                                                                                                       
                                                                                                   




                                                                                                                       

                                                                                       
                      

                                                                                   





                                                                                                                                             
                                            












                                                                                                                     
                                                                                           








































                                                             
                                                                                                                                       






                                                                                 

                                                                                       



                                                                         
                                  






                                                        
                                                                         
















                                               
                                                                                                                                                                                           












                                                                            

                                                                                                                                                  
              

                                                                                                                                             
              
                                                                                          




                                                                                                                       

                                                                              
              

                                                                          





                                                                                                                               
                                  












                                                                                                          
                                                                               








                                                     
                                                                                          




                                                                                                                        

                                                                    
              

                                                                





                                                                                                                     
                                  












                                                                                                          
                                                                          































                                                     
                                                                                                                                          






                                                                                  

                                                                                         



                                                                          
                                  






                                                          
                                                                         
















                                               
                                                                                                                                                                                                                                                                                                                         

















                                                                             

                                                                                                                                                                                                                                                                               
              

                                                                                                                                                                                                                                                                          
              
                                                                                           




                                                                                                               
                                                                                          




                                                                                                                        

                                                                               
              

                                                                           





                                                                                                                                 
                                  












                                                                                                           
                                                                               








                                                     
                                                                                          




                                                                                                                         
                                                                                           




                                                                                                                         
                                                                                        











                                           
                                                                                           
                      

                                                                                           





                                                                                                                                                 
                                            












                                                                                                                   
                                                                                         














                                                             
                                                                                            







                                       
                                                                                               
                      

                                                                                               





                                                                                                                                                     
                                           












                                                                                                                   
                                                                                                











                                                             
                                                                                         



























                                                                                                                          
                                                                                                                                 






                                                                               

                                                                                   



                                                                       
                                  






                                                    
                                                                         
















                                               
                                                                                                                                                                                                                












                                                                          

                                                                                                                                                                         
              

                                                                                                                                                                    
              

                                                                         
              

                                                                     





                                                                                                                        
                                    












                                                                                                        
                                                                               








                                                     
                                                                          











                                           
                                                                             
                      

                                                                             





                                                                                                                                
                                            












                                                                                                                
                                                                                       














                                                             

                                                                                         
              

                                                                                     





                                                                                                                                        
                                  












                                                                                                        
                                                                                              































                                                     
                                                                                                                           






                                                                             

                                                                               



                                                                     
                                  






                                                
                                                                         
















                                               
                                                                                                                                                      










                                                                        

                                                                                                                 
              

                                                                                                            
              
                                                                                           














                                                                                                              
                                   









                                                    
                                                                                         



























                                                                                                         
                                                                                                                                                      






                                                                                      

                                                                                                 



                                                                              
                                  






                                                                  
                                                                         
















                                                 
                                                                                                                                                                                                










                                                                                 

                                                                                                                                                  
              

                                                                                                                                             
              
                                                                                           




                                                                                                                    
                                                                                           














                                                                                                                                      
                                  
































                                                                              
                                                                                                                                                                        






                                                                                            

                                                                                                             



                                                                                    
                                  






                                                                              
                                                                         
















                                                       
                                                                                                                                                 








                                                                                       

                                                                                             
              
                                                                                        












                                                                                                                                                                                                                                                                                                                           
                                                                                           
                      

                                                                                           





                                                                                                                                                         
                                            












                                                                                                                             
                                                                                                







































                                                                                   
                                                                                                                                       






                                                                                 

                                                                                       



                                                                         
                                  






                                                        
                                                                         
















                                               
                                                                                                                                                                                                              













                                                                            

                                                                                                                                                                     
              

                                                                                                                                                                
              
                                                                                           




                                                                                                             
                                                                                          




                                                                                                                       

                                                                              
              

                                                                          





                                                                                                                               
                                  












                                                                                                          
                                                                               








                                                     
                                                                                          




                                                                                                                        

                                                                    
              

                                                                





                                                                                                                     
                                  












                                                                                                          
                                                                          































                                                     
                                                                                                                              






                                                                              

                                                                                 



                                                                      
                                  






                                                  
                                                                         
















                                               
                                                                                                                                                                                                                                          















                                                                         

                                                                                                                                                                                                    
              

                                                                                                                                                                                               
              
                                                                                          




                                                                                                       

                                                                    
              

                                                                





                                                                                                                  
                                    












                                                                                                       
                                                                          








                                                     
                                                                                           




                                                                                                          
                                                                                          




                                                                                                                    

                                                                              
              

                                                                          





                                                                                                                            
                                  












                                                                                                       
                                                                               








                                                     
                                                                                          




                                                                                                                     
                                                                                         



























                                                                                                              
                                                                                                                                 






                                                                               

                                                                                   



                                                                       
                                  






                                                    
                                                                         
















                                               
                                                                                                                                                                                                                                                                                                               
















                                                                          

                                                                                                                                                                                                                                                                        
              

                                                                                                                                                                                                                                                                   
              
                                                                                           




                                                                                                         
                                                                                          




                                                                                                                     

                                                                                                   
              

                                                                                               





                                                                                                                                                  
                                   












                                                                                                        
                                                                                           








                                                     
                                                                                                                      











                                           
                                                                                                                          
                      
                                                                                                  




                                                                                                                     

                                                                                                           
                      

                                                                                                       





                                                                                                                                                            
                                           












                                                                                                                
                                                                                                   

















                                                             
                                                                                          




                                                                                                                      

                                                                    
              

                                                                





                                                                                                                   
                                  












                                                                                                        
                                                                          































                                                      
                                                                                                                                                               






                                                                                         

                                                                                                       



                                                                                 
                                  






                                                                        
                                                                         
















                                                    
                                                                                                                                                                                                                                                                                                                                                                                                                                                           






















                                                                                    

                                                                                                                                                                                                                                                                                                                                                                                                          
              
                                                                                                                                                                                                                                                                                                                                                                                                     





                                           
                                                                                                                            

                              


                                            












                                                                                   
                                       

                              


                                                                                                                                 























                                                                                   
                                                                                                                                                                                                                              
                      

                                                                                                                                                                                                                              
                      

                                                                               
                      

                                                                           





                                                                                                                                          
                                            












                                                                                                                          
                                                                                 








                                                             

                                                                                 
                      

                                                                             
                      
                                                                                                              


















                                                                                                                                                      

                                                                                        
                      

                                                                                    





                                                                                                                                                   
                                            












                                                                                                                          
                                                                                       








                                                             
                                                                                                            







                                               
                                                                                                                
                              
                                                                                                          




                                                                                                                                                    

                                                                                                
                              

                                                                                            





                                                                                                                                                             
                                                  












                                                                                                                                  
                                                                                               





















                                                                     
                                                                                                                                                                                                                       
                      

                                                                                                                                                                                                                       
                      
                                                                                                                         

















                                                                                          
                                                                                 
                              

                                                                                 
                              

                                                                             
                              
                                                                                                            






















                                                                                                                                               
                                                                                                
                              

                                                                                                
                              

                                                                                            





                                                                                                                                                             
                                                  












                                                                                                                                  
                                                                                                  














                                                                     

                                                                               
                      

                                                                           





                                                                                                                                          
                                           












                                                                                                                          
                                                                                 








                                                             
                                                                                                  




                                                                                                                               

                                                                                        
                      

                                                                                    





                                                                                                                                                   
                                          












                                                                                                                          
                                                                                       





































                                                             
                                                                                                                                       






                                                                                 

                                                                                       



                                                                         
                                  






                                                        
                                                                         
















                                               
                                                                                                                             








                                                                            

                                                                                    
              

                                                                               
              

                                         















                                                                                               
                                                                                           




                                                                                                             
                                                                                         



























                                                                                                                 
                                                                                                                                          






                                                                                  

                                                                                         



                                                                          
                                  






                                                          
                                                                         
















                                               
                                                                                                                                                                         










                                                                             

                                                                                                                               
              

                                                                                                                          
              

                                         















                                                                                                 
                                                                                            




                                                                                                               
                                                                                







                                                                                                                                                                                           
                                                                                   
                      

                                                                                   





                                                                                                                                         
                                           












                                                                                                                   
                                                                                       











                                                             
                                                                                         



























                                                                                                                  
                                                                                                                                          






                                                                                  

                                                                                         



                                                                          
                                  






                                                          
                                                                         
















                                               
                                                                                                                                                                                                                                                                        














                                                                             

                                                                                                                                                                                                                              
              
                                                                                                                                                                                                                         




























                                                                                   
                                                                                                             
                      

                                                                                                             
                      

                                                                                          
                      

                                                                                      





                                                                                                                                              
                                           












                                                                                                                   
                                                                                         








                                                             
                                                                                                 











                                                                                                                            
                                                                                                                                                            
                      

                                                                                                                                                            
                      

                                                                                         
                      

                                                                                     





                                                                                                                                             
                                            












                                                                                                                   
                                                                                        








                                                             
                                                                                                             











                                                   
                                                                                                                 
                              
                                                                                                            




                                                                                                                               

                                                                                                 
                              

                                                                                             





                                                                                                                                                       
                                                    












                                                                                                                           
                                                                                                














































                                                                     
                                                                                                                              






                                                                              

                                                                                 



                                                                      
                                  






                                                  
                                                                         
















                                               
                                                                                                                                                         










                                                                         

                                                                                                                   
              

                                                                                                              










                                                                                                                 
                                   









                                                      

                                                                     
              

                                                                 





                                                                                                                   
                                  












                                                                                                       
                                                                          































                                                     
                                                                                                                                 






                                                                               

                                                                                   



                                                                       
                                  






                                                    
                                                                         
















                                               
                                                                                                                                                                                                                                         














                                                                          

                                                                                                                                                                                                  
              

                                                                                                                                                                                             
              
                                                                                           




                                                                                                            
                                                                                         




                                                                                                                     
                                                                                       


















                                                            
                                                                                          
                      

                                                                           
                      

                                                                       





                                                                                                                            
                                           












                                                                                                                
                                                                                 








                                                             
                                                                                                 










                                                                                                                     

                                                                                       
              

                                                                                   





                                                                                                                                      
                                  












                                                                                                        
                                                                                      








                                                     
                                                                                         



























                                                                                                                      
                                                                                                                                                






                                                                                    

                                                                                             



                                                                            
                                  






                                                              
                                                                         
















                                               
                                                                                                                                                                                                                                                                                                                                                                                                      


















                                                                               

                                                                                                                                                                                                                                                                                                                                                          
              

                                                                                                                                                                                                                                                                                                                                                     
              
                                                                                           




                                                                                                                   

                                                                               
              

                                                                           





                                                                                                                                   
                                    












                                                                                                             
                                                                               








                                                     
                                                                                                                                                                                                                                                                    





                                           
                                                                                 

                              


                                            



















                                                                                   
                                                                                                                                                         
                      

                                                                                                                                                         
                      

                                                                                                   
                      

                                                                                               





                                                                                                                                                           
                                            












                                                                                                                     
                                                                                                     








                                                             
                                                                                                







                                               
                                                                                                   
                              

                                                                                                   





                                                                                                                                                               
                                                   












                                                                                                                             
                                                                                                           


















                                                                     
                                                                                                                                                           
                      

                                                                                                                                                           
                      
                                                                                                      







                                               
                                                                                                         
                              

                                                                                                         





                                                                                                                                                                     
                                                    












                                                                                                                             
                                                                                                        











                                                                     

                                                                                               
                      

                                                                                           





                                                                                                                                                       
                                           












                                                                                                                     
                                                                                                   

















                                                             
                                                                                         



























                                                                                                                    
                                                                                                                                                                     






                                                                                           

                                                                                                           



                                                                                   
                                  






                                                                            
                                                                         
















                                                      
                                                                                                                                                                   









                                                                                      

                                                                                                                
              

                                                                                                           
              
                                                                                          














                                                                                                                                   
                                  
































                                                              
                                                                                                                                                               






                                                                                         

                                                                                                       



                                                                                 
                                  






                                                                        
                                                                         
















                                                    
                                                                                                                                                               









                                                                                    

                                                                                                              
              

                                                                                                         
              
                                                                                          














                                                                                                                                 
                                  
































                                                              
                                                                                                                                                     






                                                                                     

                                                                                                 



                                                                              
                                  






                                                                  
                                                                         
















                                                 
                                                                                                                                                      







                                                                                                

                                                                 
              

                                                            
              
                                                                                    





                                                                                                         
                                                                                  




























                                                                                                             
                                                                                                                                                






                                                                                    

                                                                                             



                                                                            
                                  






                                                              
                                                                         
















                                               
                                                                                                                                                                                          











                                                                               

                                                                                                                                              
              

                                                                                                                                         
              

                                                                            
              

                                                                        





                                                                                                                                
                                  












                                                                                                             
                                                                                  








                                                     
                                                                                               











                                           
                                                                                                   
                      
                                                                                                 




                                                                                                                          

                                                                                    
                      

                                                                                





                                                                                                                                          
                                          












                                                                                                                     
                                                                                          











































                                                                                        

                                                                                             





                                       
                              























                                                                                         

                                                                                                                                                                                                                                                                                                                                                                                                                                                          
          
                                                                                                                                                                                                                                       







                                   
                                                                                                                                                                                                                                           
                  

                                                                                                                                                                                                                            

















                                                                            
                                                                                   
                          

                                                                                   
                          

                                                                               
                          
                                                                                                           









                               
                                                                                                                                                                                            
                          

                                                                                                                                                                                            
                          
                                                                                                                   











                                                               
                                                                                                                      
                                  

                                                                                                      
                                  

                                                                                                  
                                  
                                                                                                                               





                                  
                                                                                                       





                                       

                                                                                                       
                          

                                                                                                   





                                                                                                                                                               
                                               









                                                                         
                                                                                               














                               
                                                                                                                                                                                                                                                




















                                 
                                                                                                                        
                  

                                                                                                                        
                  

                                                                            
                  

                                                                        
                  
                                                                                              





                  
                                                                                 







                                           
                                                                                    
                          

                                                                                    
                          
                                                                                                       















                               
                                                                                                                          
                  

                                                                                                                          
                  

                                                                                 
                  

                                                                             
                  
                                                                                                 





                  
                                                                              







                                           
                                                                                 
                          

                                                                                 
                          
                                                                                                      















                               
                                                                               
                  

                                                                               
                  

                                                                           
                  
                                                                                               






















                                                                                         

                                                                                              
          


                                                                              
          

                                                                        





                                                                                                                                     
                              




















                                                                                         

                                                                                                   
          
                                                                                               












                                       
                                                                                                       
                      


                                                                                          
                      

                                                                                    





                                                                                                                                             
                                           


































                                                                                         

                                                                                              
          


                                                                              
          

                                                                        





                                                                                                                                                           
                              























                                                                                         

                                                                                                                                                                                 
          

                                                                                                                                                                             
          

                                                                
          

                                                            
          
                                                                                       





          

                                                                            
          

                                                                        





                                                                                                                                                         
                               









                                              
                                                                                               











                                       
                                                                                                       
                      


                                                                                          
                      

                                                                                    





                                                                                                                                                                   
                                           































                                                                                         

                                                                            
          

                                                                        





                                                                                                                               
                              
















                                                                                         

                                                                                          





                                       
                              
















                                                                                         

                                                                                                                                        
          

                                                                                                                                    
          

                                    








                                       


                                                                              
          

                                                                        





                                                                                                                                         
                               









                                              

                                    








                                       

                                                                
          

                                                            





                                                                                                                             
                              























                                                                                         

                                                                                                         
          

                                                                                                     
          

                                    








                                       


                                                                              
          

                                                                        





                                                                                                                                         
                              









                                              

                                    





















                                                                                         

                                                                                            





                                       
                              













                                                                                         

                                                                                                





                                       
                              













                                                                                         

                                                                                                              





                                       
                              













                                                                                         

                                                                                                                                                    





                                       
                              













                                                                                                                          

                                                                                                          





                                       
                              













                                                                                         

                                                                              





                                       
                              



















                                                                                         

                                                                                                                                                                                                                            
          

                                                                                                                                                                                                                        
          

                                    








                                       

                                                                           
          

                                                                       





                                                                                                                                                                       
                               









                                             
                                                                                           







                                   
                                                                                              
                  

                                                                                              





                                                                                                                                                                                              
                                       












                                                                    

                                                                               







                                                                                                                                                                                                    
                                                                                  
                  

                                                                                  





                                                                                                                                                                                  
                                       












                                                        
                                                                              












                                                                                         

                                                                                                                





                                       
                              













                                                                                         

                                                                            





                                       
                              













                                                                                         

                                                                                    





                                       
                              













                                                                                         

                                                                              





                                       
                              













                                                                                         

                                                                                   





                                       
                              













                                                                                         

                                                                                                             





                                       
                              













                                                                                         

                                                                                         





                                       
                              














                                                                                         

                                                                                                     
          

                                                                                                 
          

                                                                              
          

                                                                          





                                                                                                                                      
                               









                                               
                                                                              









                                         
                                                    


                                  
                                                                            








                                                   
                                                    


                                  
                                                                            








                                                   
                                                    


                                  
                                                                            








                                                   
                                                    


                                  
                                                                            








                                                   
                                                    


                                  
                                                                            








                                                   
                                                    


                                  
                                                                            








                                                   
                                                    


                                  
                                                                            








                                                   
                                                    


                                  
                                                                            








                                                   
                                                    


                                  
                                                                            








                                                   
                                                    


                                  
                                                                            








                                                   
                                                    


                                  
                                                                            








                                                   
                                                    


                                  
                                                                            






















                                                                            
                                                    


                                  
                                                                            








                                                   
                                                    


                                  
                                                                            








                                                   
                                                    


                                  
                                                                            








                                                   
                                                    


                                  
                                                                            








                                                   
                                                    


                                  
                                                                            








                                                   
                                                    


                                  
                                                                            








                                                   
                                                    


                                  
                                                                            








                                                   
                                                    


                                  
                                                                            








                                                   
                                                    


                                  
                                                                            








                                                   
                                                   


                                  
                                                                           








                                                   
                                                    


                                  
                                                                            








                                                   
                                                    


                                  
                                                                            



















                                                   







                                                                                           










                        






                                                                                





                                                   






                                     








                                                                                                                                                                                                                                                                                                                                                                                                                                                        
                                                   

                          
                                                        






                                                                   
                                                

















                                                                   
                                                   

                          
                                                        






                                                                   
                                                


                                              
                                                   

                          
                                                        






                                                                   
                                                


                                              
                                                   

                          
                                                        






                                                                   
                                                


                                              
                                                   

                          
                                                        






                                                                   
                                                


                                              
                                                   

                          
                                                        






                                                                   
                                                









                                                                            







                                                                                                                                                                      














































































                        






                                                                                  





                                                   






                                      






























                                                                                                 






                                                                                                                    





















                        





                                                                                  





                                                   






                                      



































































































































































































                                                                                                                                                 







                                                                                                                                                                                          




















































                        






                                                                                  





                                                   






                                      






























                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             






                                                                                                                      


















                        





                                                                                  





                                                   






                                      





























































                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        






                                                                                           






















                        





                                                                                  





                                                   






                                      













































                                                                                                                                                                                       





                                                                                                                                                                





















                        




                                                                                  





                                                   






                                      












































































































































































































































































































                                                                                                                                     






                                                                                                               
















                        





                                                                                  





                                                   






                                      





































































































































































































                                                                                                                                                                               






                                                                                                                                                                                                                       

































                        





                                                                                  





                                                   






                                      






























































                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  














































































































                                                                                                             
 
 
package org.eclipse.papyrus.uml.alf.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import org.eclipse.papyrus.uml.alf.services.AlfGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
@SuppressWarnings("all")
public class InternalAlfParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_DOCUMENTATION_COMMENT", "RULE_BOOLEAN_VALUE", "RULE_NATURAL_VALUE", "RULE_STRING", "RULE_ID", "RULE_UNRESTRICTED_NAME", "RULE_STATEMENT_ANNOTATION", "RULE_INLINE_STATEMENT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "'@'", "'('", "')'", "','", "'=>'", "'*'", "'namespace'", "';'", "'import'", "'as'", "'::'", "'.'", "'public'", "'private'", "'protected'", "'package'", "'{'", "'}'", "'specializes'", "'abstract'", "'class'", "'<'", "'>'", "'active'", "'do'", "'datatype'", "'assoc'", "'enum'", "'signal'", "'activity'", "':'", "'in'", "'out'", "'inout'", "'='", "'compose'", "'any'", "'['", "']'", "'..'", "'ordered'", "'nonunique'", "'sequence'", "'redefines'", "'receive'", "'->'", "'reduce'", "'this'", "'super'", "'new'", "'createLink'", "'destroyLink'", "'clearAssoc'", "'allInstances'", "'null'", "'++'", "'--'", "'!'", "'~'", "'+'", "'-'", "'$'", "'/'", "'%'", "'<<'", "'>>'", "'>>>'", "'<='", "'>='", "'instanceof'", "'hastype'", "'=='", "'!='", "'&'", "'^'", "'|'", "'&&'", "'||'", "'?'", "'+='", "'-='", "'*='", "'/='", "'%='", "'&='", "'|='", "'^='", "'<<='", "'>>='", "'>>>='", "'let'", "'if'", "'else'", "'or'", "'switch'", "'case'", "'default'", "'while'", "'for'", "'break'", "'return'", "'accept'", "'classify'", "'from'", "'to'"
    };
    public static final int T__50=50;
    public static final int T__59=59;
    public static final int T__55=55;
    public static final int T__56=56;
    public static final int T__57=57;
    public static final int T__58=58;
    public static final int T__51=51;
    public static final int T__52=52;
    public static final int T__53=53;
    public static final int T__54=54;
    public static final int T__60=60;
    public static final int T__61=61;
    public static final int RULE_ID=8;
    public static final int RULE_NATURAL_VALUE=6;
    public static final int RULE_INLINE_STATEMENT=11;
    public static final int T__66=66;
    public static final int RULE_ML_COMMENT=12;
    public static final int T__67=67;
    public static final int T__68=68;
    public static final int T__69=69;
    public static final int T__62=62;
    public static final int T__63=63;
    public static final int T__64=64;
    public static final int T__65=65;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int T__33=33;
    public static final int T__34=34;
    public static final int T__35=35;
    public static final int T__36=36;
    public static final int T__30=30;
    public static final int T__31=31;
    public static final int T__32=32;
    public static final int RULE_UNRESTRICTED_NAME=9;
    public static final int T__48=48;
    public static final int T__49=49;
    public static final int T__44=44;
    public static final int T__45=45;
    public static final int T__46=46;
    public static final int T__47=47;
    public static final int T__40=40;
    public static final int T__41=41;
    public static final int T__42=42;
    public static final int T__43=43;
    public static final int T__91=91;
    public static final int T__100=100;
    public static final int T__92=92;
    public static final int T__93=93;
    public static final int T__102=102;
    public static final int T__94=94;
    public static final int T__101=101;
    public static final int T__90=90;
    public static final int T__19=19;
    public static final int RULE_STATEMENT_ANNOTATION=10;
    public static final int T__15=15;
    public static final int T__16=16;
    public static final int T__17=17;
    public static final int T__18=18;
    public static final int T__99=99;
    public static final int T__95=95;
    public static final int T__96=96;
    public static final int T__97=97;
    public static final int RULE_DOCUMENTATION_COMMENT=4;
    public static final int T__98=98;
    public static final int T__26=26;
    public static final int T__27=27;
    public static final int T__28=28;
    public static final int T__29=29;
    public static final int T__22=22;
    public static final int T__23=23;
    public static final int T__24=24;
    public static final int T__25=25;
    public static final int T__20=20;
    public static final int T__21=21;
    public static final int T__70=70;
    public static final int RULE_BOOLEAN_VALUE=5;
    public static final int T__71=71;
    public static final int T__72=72;
    public static final int RULE_STRING=7;
    public static final int RULE_SL_COMMENT=13;
    public static final int T__77=77;
    public static final int T__119=119;
    public static final int T__78=78;
    public static final int T__118=118;
    public static final int T__79=79;
    public static final int T__73=73;
    public static final int T__115=115;
    public static final int EOF=-1;
    public static final int T__74=74;
    public static final int T__114=114;
    public static final int T__75=75;
    public static final int T__117=117;
    public static final int T__76=76;
    public static final int T__116=116;
    public static final int T__80=80;
    public static final int T__111=111;
    public static final int T__81=81;
    public static final int T__110=110;
    public static final int T__82=82;
    public static final int T__113=113;
    public static final int T__83=83;
    public static final int T__112=112;
    public static final int RULE_WS=14;
    public static final int T__88=88;
    public static final int T__108=108;
    public static final int T__89=89;
    public static final int T__107=107;
    public static final int T__109=109;
    public static final int T__84=84;
    public static final int T__104=104;
    public static final int T__85=85;
    public static final int T__103=103;
    public static final int T__86=86;
    public static final int T__106=106;
    public static final int T__87=87;
    public static final int T__105=105;

    // delegates
    // delegators


        public InternalAlfParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalAlfParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalAlfParser.tokenNames; }
    public String getGrammarFileName() { return "InternalAlf.g"; }



    /*
      This grammar contains a lot of empty actions to work around a bug in ANTLR.
      Otherwise the ANTLR tool will create synpreds that cannot be compiled in some rare cases.
    */
     
     	private AlfGrammarAccess grammarAccess;
     	
        public InternalAlfParser(TokenStream input, AlfGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "UnitDefinition";	
       	}
       	
       	@Override
       	protected AlfGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleUnitDefinition"
    // InternalAlf.g:73:1: entryRuleUnitDefinition returns [EObject current=null] : iv_ruleUnitDefinition= ruleUnitDefinition EOF ;
    public final EObject entryRuleUnitDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleUnitDefinition = null;


        try {
            // InternalAlf.g:74:2: (iv_ruleUnitDefinition= ruleUnitDefinition EOF )
            // InternalAlf.g:75:2: iv_ruleUnitDefinition= ruleUnitDefinition EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getUnitDefinitionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleUnitDefinition=ruleUnitDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleUnitDefinition; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleUnitDefinition"


    // $ANTLR start "ruleUnitDefinition"
    // InternalAlf.g:82:1: ruleUnitDefinition returns [EObject current=null] : ( ( (lv_namespaceName_0_0= ruleNamespaceDeclaration ) )? ( (lv_import_1_0= ruleImportDeclaration ) )* ( (lv_documentation_2_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_3_0= ruleStereotypeAnnotation ) )* ( (lv_definition_4_0= ruleNamespaceDefinition ) ) ) ;
    public final EObject ruleUnitDefinition() throws RecognitionException {
        EObject current = null;

        Token lv_documentation_2_0=null;
        EObject lv_namespaceName_0_0 = null;

        EObject lv_import_1_0 = null;

        EObject lv_annotation_3_0 = null;

        EObject lv_definition_4_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:85:28: ( ( ( (lv_namespaceName_0_0= ruleNamespaceDeclaration ) )? ( (lv_import_1_0= ruleImportDeclaration ) )* ( (lv_documentation_2_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_3_0= ruleStereotypeAnnotation ) )* ( (lv_definition_4_0= ruleNamespaceDefinition ) ) ) )
            // InternalAlf.g:86:1: ( ( (lv_namespaceName_0_0= ruleNamespaceDeclaration ) )? ( (lv_import_1_0= ruleImportDeclaration ) )* ( (lv_documentation_2_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_3_0= ruleStereotypeAnnotation ) )* ( (lv_definition_4_0= ruleNamespaceDefinition ) ) )
            {
            // InternalAlf.g:86:1: ( ( (lv_namespaceName_0_0= ruleNamespaceDeclaration ) )? ( (lv_import_1_0= ruleImportDeclaration ) )* ( (lv_documentation_2_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_3_0= ruleStereotypeAnnotation ) )* ( (lv_definition_4_0= ruleNamespaceDefinition ) ) )
            // InternalAlf.g:86:2: ( (lv_namespaceName_0_0= ruleNamespaceDeclaration ) )? ( (lv_import_1_0= ruleImportDeclaration ) )* ( (lv_documentation_2_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_3_0= ruleStereotypeAnnotation ) )* ( (lv_definition_4_0= ruleNamespaceDefinition ) )
            {
            // InternalAlf.g:86:2: ( (lv_namespaceName_0_0= ruleNamespaceDeclaration ) )?
            int alt1=2;
            int LA1_0 = input.LA(1);

            if ( (LA1_0==21) ) {
                alt1=1;
            }
            switch (alt1) {
                case 1 :
                    // InternalAlf.g:87:1: (lv_namespaceName_0_0= ruleNamespaceDeclaration )
                    {
                    // InternalAlf.g:87:1: (lv_namespaceName_0_0= ruleNamespaceDeclaration )
                    // InternalAlf.g:88:3: lv_namespaceName_0_0= ruleNamespaceDeclaration
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getUnitDefinitionAccess().getNamespaceNameNamespaceDeclarationParserRuleCall_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_3);
                    lv_namespaceName_0_0=ruleNamespaceDeclaration();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getUnitDefinitionRule());
                      	        }
                             		set(
                             			current, 
                             			"namespaceName",
                              		lv_namespaceName_0_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.NamespaceDeclaration");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            // InternalAlf.g:104:3: ( (lv_import_1_0= ruleImportDeclaration ) )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( ((LA2_0>=27 && LA2_0<=28)) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // InternalAlf.g:105:1: (lv_import_1_0= ruleImportDeclaration )
            	    {
            	    // InternalAlf.g:105:1: (lv_import_1_0= ruleImportDeclaration )
            	    // InternalAlf.g:106:3: lv_import_1_0= ruleImportDeclaration
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getUnitDefinitionAccess().getImportImportDeclarationParserRuleCall_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_3);
            	    lv_import_1_0=ruleImportDeclaration();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getUnitDefinitionRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"import",
            	              		lv_import_1_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.ImportDeclaration");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);

            // InternalAlf.g:122:3: ( (lv_documentation_2_0= RULE_DOCUMENTATION_COMMENT ) )?
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0==RULE_DOCUMENTATION_COMMENT) ) {
                alt3=1;
            }
            switch (alt3) {
                case 1 :
                    // InternalAlf.g:123:1: (lv_documentation_2_0= RULE_DOCUMENTATION_COMMENT )
                    {
                    // InternalAlf.g:123:1: (lv_documentation_2_0= RULE_DOCUMENTATION_COMMENT )
                    // InternalAlf.g:124:3: lv_documentation_2_0= RULE_DOCUMENTATION_COMMENT
                    {
                    lv_documentation_2_0=(Token)match(input,RULE_DOCUMENTATION_COMMENT,FOLLOW_3); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_documentation_2_0, grammarAccess.getUnitDefinitionAccess().getDocumentationDOCUMENTATION_COMMENTTerminalRuleCall_2_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getUnitDefinitionRule());
                      	        }
                             		addWithLastConsumed(
                             			current, 
                             			"documentation",
                              		lv_documentation_2_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.DOCUMENTATION_COMMENT");
                      	    
                    }

                    }


                    }
                    break;

            }

            // InternalAlf.g:140:3: ( (lv_annotation_3_0= ruleStereotypeAnnotation ) )*
            loop4:
            do {
                int alt4=2;
                int LA4_0 = input.LA(1);

                if ( (LA4_0==15) ) {
                    alt4=1;
                }


                switch (alt4) {
            	case 1 :
            	    // InternalAlf.g:141:1: (lv_annotation_3_0= ruleStereotypeAnnotation )
            	    {
            	    // InternalAlf.g:141:1: (lv_annotation_3_0= ruleStereotypeAnnotation )
            	    // InternalAlf.g:142:3: lv_annotation_3_0= ruleStereotypeAnnotation
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getUnitDefinitionAccess().getAnnotationStereotypeAnnotationParserRuleCall_3_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_3);
            	    lv_annotation_3_0=ruleStereotypeAnnotation();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getUnitDefinitionRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"annotation",
            	              		lv_annotation_3_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.StereotypeAnnotation");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop4;
                }
            } while (true);

            // InternalAlf.g:158:3: ( (lv_definition_4_0= ruleNamespaceDefinition ) )
            // InternalAlf.g:159:1: (lv_definition_4_0= ruleNamespaceDefinition )
            {
            // InternalAlf.g:159:1: (lv_definition_4_0= ruleNamespaceDefinition )
            // InternalAlf.g:160:3: lv_definition_4_0= ruleNamespaceDefinition
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getUnitDefinitionAccess().getDefinitionNamespaceDefinitionParserRuleCall_4_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_definition_4_0=ruleNamespaceDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getUnitDefinitionRule());
              	        }
                     		set(
                     			current, 
                     			"definition",
                      		lv_definition_4_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.NamespaceDefinition");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleUnitDefinition"


    // $ANTLR start "entryRuleStereotypeAnnotation"
    // InternalAlf.g:184:1: entryRuleStereotypeAnnotation returns [EObject current=null] : iv_ruleStereotypeAnnotation= ruleStereotypeAnnotation EOF ;
    public final EObject entryRuleStereotypeAnnotation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStereotypeAnnotation = null;


        try {
            // InternalAlf.g:185:2: (iv_ruleStereotypeAnnotation= ruleStereotypeAnnotation EOF )
            // InternalAlf.g:186:2: iv_ruleStereotypeAnnotation= ruleStereotypeAnnotation EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getStereotypeAnnotationRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleStereotypeAnnotation=ruleStereotypeAnnotation();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleStereotypeAnnotation; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStereotypeAnnotation"


    // $ANTLR start "ruleStereotypeAnnotation"
    // InternalAlf.g:193:1: ruleStereotypeAnnotation returns [EObject current=null] : (otherlv_0= '@' ( (lv_stereotypeName_1_0= ruleQualifiedName ) ) (otherlv_2= '(' ( ( (lv_names_3_0= ruleQualifiedNameList ) ) | ( (lv_taggedValues_4_0= ruleTaggedValueList ) ) ) otherlv_5= ')' )? ) ;
    public final EObject ruleStereotypeAnnotation() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_5=null;
        EObject lv_stereotypeName_1_0 = null;

        EObject lv_names_3_0 = null;

        EObject lv_taggedValues_4_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:196:28: ( (otherlv_0= '@' ( (lv_stereotypeName_1_0= ruleQualifiedName ) ) (otherlv_2= '(' ( ( (lv_names_3_0= ruleQualifiedNameList ) ) | ( (lv_taggedValues_4_0= ruleTaggedValueList ) ) ) otherlv_5= ')' )? ) )
            // InternalAlf.g:197:1: (otherlv_0= '@' ( (lv_stereotypeName_1_0= ruleQualifiedName ) ) (otherlv_2= '(' ( ( (lv_names_3_0= ruleQualifiedNameList ) ) | ( (lv_taggedValues_4_0= ruleTaggedValueList ) ) ) otherlv_5= ')' )? )
            {
            // InternalAlf.g:197:1: (otherlv_0= '@' ( (lv_stereotypeName_1_0= ruleQualifiedName ) ) (otherlv_2= '(' ( ( (lv_names_3_0= ruleQualifiedNameList ) ) | ( (lv_taggedValues_4_0= ruleTaggedValueList ) ) ) otherlv_5= ')' )? )
            // InternalAlf.g:197:3: otherlv_0= '@' ( (lv_stereotypeName_1_0= ruleQualifiedName ) ) (otherlv_2= '(' ( ( (lv_names_3_0= ruleQualifiedNameList ) ) | ( (lv_taggedValues_4_0= ruleTaggedValueList ) ) ) otherlv_5= ')' )?
            {
            otherlv_0=(Token)match(input,15,FOLLOW_4); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getStereotypeAnnotationAccess().getCommercialAtKeyword_0());
                  
            }
            // InternalAlf.g:201:1: ( (lv_stereotypeName_1_0= ruleQualifiedName ) )
            // InternalAlf.g:202:1: (lv_stereotypeName_1_0= ruleQualifiedName )
            {
            // InternalAlf.g:202:1: (lv_stereotypeName_1_0= ruleQualifiedName )
            // InternalAlf.g:203:3: lv_stereotypeName_1_0= ruleQualifiedName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getStereotypeAnnotationAccess().getStereotypeNameQualifiedNameParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_5);
            lv_stereotypeName_1_0=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getStereotypeAnnotationRule());
              	        }
                     		set(
                     			current, 
                     			"stereotypeName",
                      		lv_stereotypeName_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.QualifiedName");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:219:2: (otherlv_2= '(' ( ( (lv_names_3_0= ruleQualifiedNameList ) ) | ( (lv_taggedValues_4_0= ruleTaggedValueList ) ) ) otherlv_5= ')' )?
            int alt6=2;
            int LA6_0 = input.LA(1);

            if ( (LA6_0==16) ) {
                alt6=1;
            }
            switch (alt6) {
                case 1 :
                    // InternalAlf.g:219:4: otherlv_2= '(' ( ( (lv_names_3_0= ruleQualifiedNameList ) ) | ( (lv_taggedValues_4_0= ruleTaggedValueList ) ) ) otherlv_5= ')'
                    {
                    otherlv_2=(Token)match(input,16,FOLLOW_4); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getStereotypeAnnotationAccess().getLeftParenthesisKeyword_2_0());
                          
                    }
                    // InternalAlf.g:223:1: ( ( (lv_names_3_0= ruleQualifiedNameList ) ) | ( (lv_taggedValues_4_0= ruleTaggedValueList ) ) )
                    int alt5=2;
                    int LA5_0 = input.LA(1);

                    if ( (LA5_0==RULE_ID) ) {
                        int LA5_1 = input.LA(2);

                        if ( ((LA5_1>=17 && LA5_1<=18)||(LA5_1>=25 && LA5_1<=26)||LA5_1==36) ) {
                            alt5=1;
                        }
                        else if ( (LA5_1==19) ) {
                            alt5=2;
                        }
                        else {
                            if (state.backtracking>0) {state.failed=true; return current;}
                            NoViableAltException nvae =
                                new NoViableAltException("", 5, 1, input);

                            throw nvae;
                        }
                    }
                    else if ( (LA5_0==RULE_UNRESTRICTED_NAME) ) {
                        int LA5_2 = input.LA(2);

                        if ( (LA5_2==19) ) {
                            alt5=2;
                        }
                        else if ( ((LA5_2>=17 && LA5_2<=18)||(LA5_2>=25 && LA5_2<=26)||LA5_2==36) ) {
                            alt5=1;
                        }
                        else {
                            if (state.backtracking>0) {state.failed=true; return current;}
                            NoViableAltException nvae =
                                new NoViableAltException("", 5, 2, input);

                            throw nvae;
                        }
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 5, 0, input);

                        throw nvae;
                    }
                    switch (alt5) {
                        case 1 :
                            // InternalAlf.g:223:2: ( (lv_names_3_0= ruleQualifiedNameList ) )
                            {
                            // InternalAlf.g:223:2: ( (lv_names_3_0= ruleQualifiedNameList ) )
                            // InternalAlf.g:224:1: (lv_names_3_0= ruleQualifiedNameList )
                            {
                            // InternalAlf.g:224:1: (lv_names_3_0= ruleQualifiedNameList )
                            // InternalAlf.g:225:3: lv_names_3_0= ruleQualifiedNameList
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getStereotypeAnnotationAccess().getNamesQualifiedNameListParserRuleCall_2_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_6);
                            lv_names_3_0=ruleQualifiedNameList();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getStereotypeAnnotationRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"names",
                                      		lv_names_3_0, 
                                      		"org.eclipse.papyrus.uml.alf.Alf.QualifiedNameList");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }
                            break;
                        case 2 :
                            // InternalAlf.g:242:6: ( (lv_taggedValues_4_0= ruleTaggedValueList ) )
                            {
                            // InternalAlf.g:242:6: ( (lv_taggedValues_4_0= ruleTaggedValueList ) )
                            // InternalAlf.g:243:1: (lv_taggedValues_4_0= ruleTaggedValueList )
                            {
                            // InternalAlf.g:243:1: (lv_taggedValues_4_0= ruleTaggedValueList )
                            // InternalAlf.g:244:3: lv_taggedValues_4_0= ruleTaggedValueList
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getStereotypeAnnotationAccess().getTaggedValuesTaggedValueListParserRuleCall_2_1_1_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_6);
                            lv_taggedValues_4_0=ruleTaggedValueList();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getStereotypeAnnotationRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"taggedValues",
                                      		lv_taggedValues_4_0, 
                                      		"org.eclipse.papyrus.uml.alf.Alf.TaggedValueList");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }
                            break;

                    }

                    otherlv_5=(Token)match(input,17,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getStereotypeAnnotationAccess().getRightParenthesisKeyword_2_2());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStereotypeAnnotation"


    // $ANTLR start "entryRuleTaggedValueList"
    // InternalAlf.g:272:1: entryRuleTaggedValueList returns [EObject current=null] : iv_ruleTaggedValueList= ruleTaggedValueList EOF ;
    public final EObject entryRuleTaggedValueList() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTaggedValueList = null;


        try {
            // InternalAlf.g:273:2: (iv_ruleTaggedValueList= ruleTaggedValueList EOF )
            // InternalAlf.g:274:2: iv_ruleTaggedValueList= ruleTaggedValueList EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTaggedValueListRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleTaggedValueList=ruleTaggedValueList();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTaggedValueList; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTaggedValueList"


    // $ANTLR start "ruleTaggedValueList"
    // InternalAlf.g:281:1: ruleTaggedValueList returns [EObject current=null] : ( ( (lv_taggedValue_0_0= ruleTaggedValue ) ) (otherlv_1= ',' ( (lv_taggedValue_2_0= ruleTaggedValue ) ) )* ) ;
    public final EObject ruleTaggedValueList() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_taggedValue_0_0 = null;

        EObject lv_taggedValue_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:284:28: ( ( ( (lv_taggedValue_0_0= ruleTaggedValue ) ) (otherlv_1= ',' ( (lv_taggedValue_2_0= ruleTaggedValue ) ) )* ) )
            // InternalAlf.g:285:1: ( ( (lv_taggedValue_0_0= ruleTaggedValue ) ) (otherlv_1= ',' ( (lv_taggedValue_2_0= ruleTaggedValue ) ) )* )
            {
            // InternalAlf.g:285:1: ( ( (lv_taggedValue_0_0= ruleTaggedValue ) ) (otherlv_1= ',' ( (lv_taggedValue_2_0= ruleTaggedValue ) ) )* )
            // InternalAlf.g:285:2: ( (lv_taggedValue_0_0= ruleTaggedValue ) ) (otherlv_1= ',' ( (lv_taggedValue_2_0= ruleTaggedValue ) ) )*
            {
            // InternalAlf.g:285:2: ( (lv_taggedValue_0_0= ruleTaggedValue ) )
            // InternalAlf.g:286:1: (lv_taggedValue_0_0= ruleTaggedValue )
            {
            // InternalAlf.g:286:1: (lv_taggedValue_0_0= ruleTaggedValue )
            // InternalAlf.g:287:3: lv_taggedValue_0_0= ruleTaggedValue
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getTaggedValueListAccess().getTaggedValueTaggedValueParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_7);
            lv_taggedValue_0_0=ruleTaggedValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getTaggedValueListRule());
              	        }
                     		add(
                     			current, 
                     			"taggedValue",
                      		lv_taggedValue_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.TaggedValue");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:303:2: (otherlv_1= ',' ( (lv_taggedValue_2_0= ruleTaggedValue ) ) )*
            loop7:
            do {
                int alt7=2;
                int LA7_0 = input.LA(1);

                if ( (LA7_0==18) ) {
                    alt7=1;
                }


                switch (alt7) {
            	case 1 :
            	    // InternalAlf.g:303:4: otherlv_1= ',' ( (lv_taggedValue_2_0= ruleTaggedValue ) )
            	    {
            	    otherlv_1=(Token)match(input,18,FOLLOW_4); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_1, grammarAccess.getTaggedValueListAccess().getCommaKeyword_1_0());
            	          
            	    }
            	    // InternalAlf.g:307:1: ( (lv_taggedValue_2_0= ruleTaggedValue ) )
            	    // InternalAlf.g:308:1: (lv_taggedValue_2_0= ruleTaggedValue )
            	    {
            	    // InternalAlf.g:308:1: (lv_taggedValue_2_0= ruleTaggedValue )
            	    // InternalAlf.g:309:3: lv_taggedValue_2_0= ruleTaggedValue
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getTaggedValueListAccess().getTaggedValueTaggedValueParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_7);
            	    lv_taggedValue_2_0=ruleTaggedValue();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getTaggedValueListRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"taggedValue",
            	              		lv_taggedValue_2_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.TaggedValue");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop7;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTaggedValueList"


    // $ANTLR start "entryRuleTaggedValue"
    // InternalAlf.g:333:1: entryRuleTaggedValue returns [EObject current=null] : iv_ruleTaggedValue= ruleTaggedValue EOF ;
    public final EObject entryRuleTaggedValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTaggedValue = null;


        try {
            // InternalAlf.g:334:2: (iv_ruleTaggedValue= ruleTaggedValue EOF )
            // InternalAlf.g:335:2: iv_ruleTaggedValue= ruleTaggedValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTaggedValueRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleTaggedValue=ruleTaggedValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTaggedValue; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTaggedValue"


    // $ANTLR start "ruleTaggedValue"
    // InternalAlf.g:342:1: ruleTaggedValue returns [EObject current=null] : ( ( (lv_name_0_0= ruleName ) ) otherlv_1= '=>' ( ( (lv_value_2_0= RULE_BOOLEAN_VALUE ) ) | ( ( (lv_operator_3_0= ruleNumericUnaryOperator ) )? ( (lv_value_4_0= RULE_NATURAL_VALUE ) ) ) | ( (lv_value_5_0= '*' ) ) | ( (lv_value_6_0= RULE_STRING ) ) ) ) ;
    public final EObject ruleTaggedValue() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token lv_value_2_0=null;
        Token lv_value_4_0=null;
        Token lv_value_5_0=null;
        Token lv_value_6_0=null;
        AntlrDatatypeRuleToken lv_name_0_0 = null;

        AntlrDatatypeRuleToken lv_operator_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:345:28: ( ( ( (lv_name_0_0= ruleName ) ) otherlv_1= '=>' ( ( (lv_value_2_0= RULE_BOOLEAN_VALUE ) ) | ( ( (lv_operator_3_0= ruleNumericUnaryOperator ) )? ( (lv_value_4_0= RULE_NATURAL_VALUE ) ) ) | ( (lv_value_5_0= '*' ) ) | ( (lv_value_6_0= RULE_STRING ) ) ) ) )
            // InternalAlf.g:346:1: ( ( (lv_name_0_0= ruleName ) ) otherlv_1= '=>' ( ( (lv_value_2_0= RULE_BOOLEAN_VALUE ) ) | ( ( (lv_operator_3_0= ruleNumericUnaryOperator ) )? ( (lv_value_4_0= RULE_NATURAL_VALUE ) ) ) | ( (lv_value_5_0= '*' ) ) | ( (lv_value_6_0= RULE_STRING ) ) ) )
            {
            // InternalAlf.g:346:1: ( ( (lv_name_0_0= ruleName ) ) otherlv_1= '=>' ( ( (lv_value_2_0= RULE_BOOLEAN_VALUE ) ) | ( ( (lv_operator_3_0= ruleNumericUnaryOperator ) )? ( (lv_value_4_0= RULE_NATURAL_VALUE ) ) ) | ( (lv_value_5_0= '*' ) ) | ( (lv_value_6_0= RULE_STRING ) ) ) )
            // InternalAlf.g:346:2: ( (lv_name_0_0= ruleName ) ) otherlv_1= '=>' ( ( (lv_value_2_0= RULE_BOOLEAN_VALUE ) ) | ( ( (lv_operator_3_0= ruleNumericUnaryOperator ) )? ( (lv_value_4_0= RULE_NATURAL_VALUE ) ) ) | ( (lv_value_5_0= '*' ) ) | ( (lv_value_6_0= RULE_STRING ) ) )
            {
            // InternalAlf.g:346:2: ( (lv_name_0_0= ruleName ) )
            // InternalAlf.g:347:1: (lv_name_0_0= ruleName )
            {
            // InternalAlf.g:347:1: (lv_name_0_0= ruleName )
            // InternalAlf.g:348:3: lv_name_0_0= ruleName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getTaggedValueAccess().getNameNameParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_8);
            lv_name_0_0=ruleName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getTaggedValueRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Name");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,19,FOLLOW_9); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getTaggedValueAccess().getEqualsSignGreaterThanSignKeyword_1());
                  
            }
            // InternalAlf.g:368:1: ( ( (lv_value_2_0= RULE_BOOLEAN_VALUE ) ) | ( ( (lv_operator_3_0= ruleNumericUnaryOperator ) )? ( (lv_value_4_0= RULE_NATURAL_VALUE ) ) ) | ( (lv_value_5_0= '*' ) ) | ( (lv_value_6_0= RULE_STRING ) ) )
            int alt9=4;
            switch ( input.LA(1) ) {
            case RULE_BOOLEAN_VALUE:
                {
                alt9=1;
                }
                break;
            case RULE_NATURAL_VALUE:
            case 74:
            case 75:
                {
                alt9=2;
                }
                break;
            case 20:
                {
                alt9=3;
                }
                break;
            case RULE_STRING:
                {
                alt9=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 9, 0, input);

                throw nvae;
            }

            switch (alt9) {
                case 1 :
                    // InternalAlf.g:368:2: ( (lv_value_2_0= RULE_BOOLEAN_VALUE ) )
                    {
                    // InternalAlf.g:368:2: ( (lv_value_2_0= RULE_BOOLEAN_VALUE ) )
                    // InternalAlf.g:369:1: (lv_value_2_0= RULE_BOOLEAN_VALUE )
                    {
                    // InternalAlf.g:369:1: (lv_value_2_0= RULE_BOOLEAN_VALUE )
                    // InternalAlf.g:370:3: lv_value_2_0= RULE_BOOLEAN_VALUE
                    {
                    lv_value_2_0=(Token)match(input,RULE_BOOLEAN_VALUE,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_value_2_0, grammarAccess.getTaggedValueAccess().getValueBOOLEAN_VALUETerminalRuleCall_2_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getTaggedValueRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"value",
                              		lv_value_2_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.BOOLEAN_VALUE");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalAlf.g:387:6: ( ( (lv_operator_3_0= ruleNumericUnaryOperator ) )? ( (lv_value_4_0= RULE_NATURAL_VALUE ) ) )
                    {
                    // InternalAlf.g:387:6: ( ( (lv_operator_3_0= ruleNumericUnaryOperator ) )? ( (lv_value_4_0= RULE_NATURAL_VALUE ) ) )
                    // InternalAlf.g:387:7: ( (lv_operator_3_0= ruleNumericUnaryOperator ) )? ( (lv_value_4_0= RULE_NATURAL_VALUE ) )
                    {
                    // InternalAlf.g:387:7: ( (lv_operator_3_0= ruleNumericUnaryOperator ) )?
                    int alt8=2;
                    int LA8_0 = input.LA(1);

                    if ( ((LA8_0>=74 && LA8_0<=75)) ) {
                        alt8=1;
                    }
                    switch (alt8) {
                        case 1 :
                            // InternalAlf.g:388:1: (lv_operator_3_0= ruleNumericUnaryOperator )
                            {
                            // InternalAlf.g:388:1: (lv_operator_3_0= ruleNumericUnaryOperator )
                            // InternalAlf.g:389:3: lv_operator_3_0= ruleNumericUnaryOperator
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getTaggedValueAccess().getOperatorNumericUnaryOperatorParserRuleCall_2_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_10);
                            lv_operator_3_0=ruleNumericUnaryOperator();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getTaggedValueRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"operator",
                                      		lv_operator_3_0, 
                                      		"org.eclipse.papyrus.uml.alf.Alf.NumericUnaryOperator");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }
                            break;

                    }

                    // InternalAlf.g:405:3: ( (lv_value_4_0= RULE_NATURAL_VALUE ) )
                    // InternalAlf.g:406:1: (lv_value_4_0= RULE_NATURAL_VALUE )
                    {
                    // InternalAlf.g:406:1: (lv_value_4_0= RULE_NATURAL_VALUE )
                    // InternalAlf.g:407:3: lv_value_4_0= RULE_NATURAL_VALUE
                    {
                    lv_value_4_0=(Token)match(input,RULE_NATURAL_VALUE,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_value_4_0, grammarAccess.getTaggedValueAccess().getValueNATURAL_VALUETerminalRuleCall_2_1_1_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getTaggedValueRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"value",
                              		lv_value_4_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.NATURAL_VALUE");
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 3 :
                    // InternalAlf.g:424:6: ( (lv_value_5_0= '*' ) )
                    {
                    // InternalAlf.g:424:6: ( (lv_value_5_0= '*' ) )
                    // InternalAlf.g:425:1: (lv_value_5_0= '*' )
                    {
                    // InternalAlf.g:425:1: (lv_value_5_0= '*' )
                    // InternalAlf.g:426:3: lv_value_5_0= '*'
                    {
                    lv_value_5_0=(Token)match(input,20,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_value_5_0, grammarAccess.getTaggedValueAccess().getValueAsteriskKeyword_2_2_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getTaggedValueRule());
                      	        }
                             		setWithLastConsumed(current, "value", lv_value_5_0, "*");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 4 :
                    // InternalAlf.g:440:6: ( (lv_value_6_0= RULE_STRING ) )
                    {
                    // InternalAlf.g:440:6: ( (lv_value_6_0= RULE_STRING ) )
                    // InternalAlf.g:441:1: (lv_value_6_0= RULE_STRING )
                    {
                    // InternalAlf.g:441:1: (lv_value_6_0= RULE_STRING )
                    // InternalAlf.g:442:3: lv_value_6_0= RULE_STRING
                    {
                    lv_value_6_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_value_6_0, grammarAccess.getTaggedValueAccess().getValueSTRINGTerminalRuleCall_2_3_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getTaggedValueRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"value",
                              		lv_value_6_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.STRING");
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTaggedValue"


    // $ANTLR start "entryRuleNamespaceDeclaration"
    // InternalAlf.g:466:1: entryRuleNamespaceDeclaration returns [EObject current=null] : iv_ruleNamespaceDeclaration= ruleNamespaceDeclaration EOF ;
    public final EObject entryRuleNamespaceDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNamespaceDeclaration = null;


        try {
            // InternalAlf.g:467:2: (iv_ruleNamespaceDeclaration= ruleNamespaceDeclaration EOF )
            // InternalAlf.g:468:2: iv_ruleNamespaceDeclaration= ruleNamespaceDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNamespaceDeclarationRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleNamespaceDeclaration=ruleNamespaceDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNamespaceDeclaration; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNamespaceDeclaration"


    // $ANTLR start "ruleNamespaceDeclaration"
    // InternalAlf.g:475:1: ruleNamespaceDeclaration returns [EObject current=null] : (otherlv_0= 'namespace' this_QualifiedName_1= ruleQualifiedName otherlv_2= ';' ) ;
    public final EObject ruleNamespaceDeclaration() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject this_QualifiedName_1 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:478:28: ( (otherlv_0= 'namespace' this_QualifiedName_1= ruleQualifiedName otherlv_2= ';' ) )
            // InternalAlf.g:479:1: (otherlv_0= 'namespace' this_QualifiedName_1= ruleQualifiedName otherlv_2= ';' )
            {
            // InternalAlf.g:479:1: (otherlv_0= 'namespace' this_QualifiedName_1= ruleQualifiedName otherlv_2= ';' )
            // InternalAlf.g:479:3: otherlv_0= 'namespace' this_QualifiedName_1= ruleQualifiedName otherlv_2= ';'
            {
            otherlv_0=(Token)match(input,21,FOLLOW_4); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getNamespaceDeclarationAccess().getNamespaceKeyword_0());
                  
            }
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getNamespaceDeclarationAccess().getQualifiedNameParserRuleCall_1()); 
                  
            }
            pushFollow(FOLLOW_11);
            this_QualifiedName_1=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_QualifiedName_1; 
                      afterParserOrEnumRuleCall();
                  
            }
            otherlv_2=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getNamespaceDeclarationAccess().getSemicolonKeyword_2());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNamespaceDeclaration"


    // $ANTLR start "entryRuleImportDeclaration"
    // InternalAlf.g:507:1: entryRuleImportDeclaration returns [EObject current=null] : iv_ruleImportDeclaration= ruleImportDeclaration EOF ;
    public final EObject entryRuleImportDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleImportDeclaration = null;


        try {
            // InternalAlf.g:508:2: (iv_ruleImportDeclaration= ruleImportDeclaration EOF )
            // InternalAlf.g:509:2: iv_ruleImportDeclaration= ruleImportDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getImportDeclarationRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleImportDeclaration=ruleImportDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleImportDeclaration; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleImportDeclaration"


    // $ANTLR start "ruleImportDeclaration"
    // InternalAlf.g:516:1: ruleImportDeclaration returns [EObject current=null] : ( (this_PackageImportReference_0= rulePackageImportReference | this_ElementImportReference_1= ruleElementImportReference ) otherlv_2= ';' ) ;
    public final EObject ruleImportDeclaration() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject this_PackageImportReference_0 = null;

        EObject this_ElementImportReference_1 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:519:28: ( ( (this_PackageImportReference_0= rulePackageImportReference | this_ElementImportReference_1= ruleElementImportReference ) otherlv_2= ';' ) )
            // InternalAlf.g:520:1: ( (this_PackageImportReference_0= rulePackageImportReference | this_ElementImportReference_1= ruleElementImportReference ) otherlv_2= ';' )
            {
            // InternalAlf.g:520:1: ( (this_PackageImportReference_0= rulePackageImportReference | this_ElementImportReference_1= ruleElementImportReference ) otherlv_2= ';' )
            // InternalAlf.g:520:2: (this_PackageImportReference_0= rulePackageImportReference | this_ElementImportReference_1= ruleElementImportReference ) otherlv_2= ';'
            {
            // InternalAlf.g:520:2: (this_PackageImportReference_0= rulePackageImportReference | this_ElementImportReference_1= ruleElementImportReference )
            int alt10=2;
            int LA10_0 = input.LA(1);

            if ( (LA10_0==27) ) {
                int LA10_1 = input.LA(2);

                if ( (synpred12_InternalAlf()) ) {
                    alt10=1;
                }
                else if ( (true) ) {
                    alt10=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 10, 1, input);

                    throw nvae;
                }
            }
            else if ( (LA10_0==28) ) {
                int LA10_2 = input.LA(2);

                if ( (synpred12_InternalAlf()) ) {
                    alt10=1;
                }
                else if ( (true) ) {
                    alt10=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 10, 2, input);

                    throw nvae;
                }
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 10, 0, input);

                throw nvae;
            }
            switch (alt10) {
                case 1 :
                    // InternalAlf.g:521:2: this_PackageImportReference_0= rulePackageImportReference
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getImportDeclarationAccess().getPackageImportReferenceParserRuleCall_0_0()); 
                          
                    }
                    pushFollow(FOLLOW_11);
                    this_PackageImportReference_0=rulePackageImportReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_PackageImportReference_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:534:2: this_ElementImportReference_1= ruleElementImportReference
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getImportDeclarationAccess().getElementImportReferenceParserRuleCall_0_1()); 
                          
                    }
                    pushFollow(FOLLOW_11);
                    this_ElementImportReference_1=ruleElementImportReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ElementImportReference_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }

            otherlv_2=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getImportDeclarationAccess().getSemicolonKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleImportDeclaration"


    // $ANTLR start "entryRuleElementImportReference"
    // InternalAlf.g:557:1: entryRuleElementImportReference returns [EObject current=null] : iv_ruleElementImportReference= ruleElementImportReference EOF ;
    public final EObject entryRuleElementImportReference() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleElementImportReference = null;


        try {
            // InternalAlf.g:558:2: (iv_ruleElementImportReference= ruleElementImportReference EOF )
            // InternalAlf.g:559:2: iv_ruleElementImportReference= ruleElementImportReference EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getElementImportReferenceRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleElementImportReference=ruleElementImportReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleElementImportReference; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleElementImportReference"


    // $ANTLR start "ruleElementImportReference"
    // InternalAlf.g:566:1: ruleElementImportReference returns [EObject current=null] : ( ( (lv_visibility_0_0= ruleImportVisibilityIndicator ) ) otherlv_1= 'import' ( (lv_referentName_2_0= ruleQualifiedName ) ) (otherlv_3= 'as' ( (lv_alias_4_0= ruleName ) ) )? ) ;
    public final EObject ruleElementImportReference() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        AntlrDatatypeRuleToken lv_visibility_0_0 = null;

        EObject lv_referentName_2_0 = null;

        AntlrDatatypeRuleToken lv_alias_4_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:569:28: ( ( ( (lv_visibility_0_0= ruleImportVisibilityIndicator ) ) otherlv_1= 'import' ( (lv_referentName_2_0= ruleQualifiedName ) ) (otherlv_3= 'as' ( (lv_alias_4_0= ruleName ) ) )? ) )
            // InternalAlf.g:570:1: ( ( (lv_visibility_0_0= ruleImportVisibilityIndicator ) ) otherlv_1= 'import' ( (lv_referentName_2_0= ruleQualifiedName ) ) (otherlv_3= 'as' ( (lv_alias_4_0= ruleName ) ) )? )
            {
            // InternalAlf.g:570:1: ( ( (lv_visibility_0_0= ruleImportVisibilityIndicator ) ) otherlv_1= 'import' ( (lv_referentName_2_0= ruleQualifiedName ) ) (otherlv_3= 'as' ( (lv_alias_4_0= ruleName ) ) )? )
            // InternalAlf.g:570:2: ( (lv_visibility_0_0= ruleImportVisibilityIndicator ) ) otherlv_1= 'import' ( (lv_referentName_2_0= ruleQualifiedName ) ) (otherlv_3= 'as' ( (lv_alias_4_0= ruleName ) ) )?
            {
            // InternalAlf.g:570:2: ( (lv_visibility_0_0= ruleImportVisibilityIndicator ) )
            // InternalAlf.g:571:1: (lv_visibility_0_0= ruleImportVisibilityIndicator )
            {
            // InternalAlf.g:571:1: (lv_visibility_0_0= ruleImportVisibilityIndicator )
            // InternalAlf.g:572:3: lv_visibility_0_0= ruleImportVisibilityIndicator
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getElementImportReferenceAccess().getVisibilityImportVisibilityIndicatorParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_12);
            lv_visibility_0_0=ruleImportVisibilityIndicator();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getElementImportReferenceRule());
              	        }
                     		set(
                     			current, 
                     			"visibility",
                      		lv_visibility_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.ImportVisibilityIndicator");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,23,FOLLOW_4); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getElementImportReferenceAccess().getImportKeyword_1());
                  
            }
            // InternalAlf.g:592:1: ( (lv_referentName_2_0= ruleQualifiedName ) )
            // InternalAlf.g:593:1: (lv_referentName_2_0= ruleQualifiedName )
            {
            // InternalAlf.g:593:1: (lv_referentName_2_0= ruleQualifiedName )
            // InternalAlf.g:594:3: lv_referentName_2_0= ruleQualifiedName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getElementImportReferenceAccess().getReferentNameQualifiedNameParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_13);
            lv_referentName_2_0=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getElementImportReferenceRule());
              	        }
                     		set(
                     			current, 
                     			"referentName",
                      		lv_referentName_2_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.QualifiedName");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:610:2: (otherlv_3= 'as' ( (lv_alias_4_0= ruleName ) ) )?
            int alt11=2;
            int LA11_0 = input.LA(1);

            if ( (LA11_0==24) ) {
                alt11=1;
            }
            switch (alt11) {
                case 1 :
                    // InternalAlf.g:610:4: otherlv_3= 'as' ( (lv_alias_4_0= ruleName ) )
                    {
                    otherlv_3=(Token)match(input,24,FOLLOW_4); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getElementImportReferenceAccess().getAsKeyword_3_0());
                          
                    }
                    // InternalAlf.g:614:1: ( (lv_alias_4_0= ruleName ) )
                    // InternalAlf.g:615:1: (lv_alias_4_0= ruleName )
                    {
                    // InternalAlf.g:615:1: (lv_alias_4_0= ruleName )
                    // InternalAlf.g:616:3: lv_alias_4_0= ruleName
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getElementImportReferenceAccess().getAliasNameParserRuleCall_3_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_alias_4_0=ruleName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getElementImportReferenceRule());
                      	        }
                             		set(
                             			current, 
                             			"alias",
                              		lv_alias_4_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.Name");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleElementImportReference"


    // $ANTLR start "entryRulePackageImportReference"
    // InternalAlf.g:640:1: entryRulePackageImportReference returns [EObject current=null] : iv_rulePackageImportReference= rulePackageImportReference EOF ;
    public final EObject entryRulePackageImportReference() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePackageImportReference = null;


        try {
            // InternalAlf.g:641:2: (iv_rulePackageImportReference= rulePackageImportReference EOF )
            // InternalAlf.g:642:2: iv_rulePackageImportReference= rulePackageImportReference EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPackageImportReferenceRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_rulePackageImportReference=rulePackageImportReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePackageImportReference; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePackageImportReference"


    // $ANTLR start "rulePackageImportReference"
    // InternalAlf.g:649:1: rulePackageImportReference returns [EObject current=null] : ( ( (lv_visibility_0_0= ruleImportVisibilityIndicator ) ) otherlv_1= 'import' ( (lv_referentName_2_0= rulePackageImportQualifiedName ) ) ) ;
    public final EObject rulePackageImportReference() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        AntlrDatatypeRuleToken lv_visibility_0_0 = null;

        EObject lv_referentName_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:652:28: ( ( ( (lv_visibility_0_0= ruleImportVisibilityIndicator ) ) otherlv_1= 'import' ( (lv_referentName_2_0= rulePackageImportQualifiedName ) ) ) )
            // InternalAlf.g:653:1: ( ( (lv_visibility_0_0= ruleImportVisibilityIndicator ) ) otherlv_1= 'import' ( (lv_referentName_2_0= rulePackageImportQualifiedName ) ) )
            {
            // InternalAlf.g:653:1: ( ( (lv_visibility_0_0= ruleImportVisibilityIndicator ) ) otherlv_1= 'import' ( (lv_referentName_2_0= rulePackageImportQualifiedName ) ) )
            // InternalAlf.g:653:2: ( (lv_visibility_0_0= ruleImportVisibilityIndicator ) ) otherlv_1= 'import' ( (lv_referentName_2_0= rulePackageImportQualifiedName ) )
            {
            // InternalAlf.g:653:2: ( (lv_visibility_0_0= ruleImportVisibilityIndicator ) )
            // InternalAlf.g:654:1: (lv_visibility_0_0= ruleImportVisibilityIndicator )
            {
            // InternalAlf.g:654:1: (lv_visibility_0_0= ruleImportVisibilityIndicator )
            // InternalAlf.g:655:3: lv_visibility_0_0= ruleImportVisibilityIndicator
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getPackageImportReferenceAccess().getVisibilityImportVisibilityIndicatorParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_12);
            lv_visibility_0_0=ruleImportVisibilityIndicator();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getPackageImportReferenceRule());
              	        }
                     		set(
                     			current, 
                     			"visibility",
                      		lv_visibility_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.ImportVisibilityIndicator");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,23,FOLLOW_4); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getPackageImportReferenceAccess().getImportKeyword_1());
                  
            }
            // InternalAlf.g:675:1: ( (lv_referentName_2_0= rulePackageImportQualifiedName ) )
            // InternalAlf.g:676:1: (lv_referentName_2_0= rulePackageImportQualifiedName )
            {
            // InternalAlf.g:676:1: (lv_referentName_2_0= rulePackageImportQualifiedName )
            // InternalAlf.g:677:3: lv_referentName_2_0= rulePackageImportQualifiedName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getPackageImportReferenceAccess().getReferentNamePackageImportQualifiedNameParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_referentName_2_0=rulePackageImportQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getPackageImportReferenceRule());
              	        }
                     		set(
                     			current, 
                     			"referentName",
                      		lv_referentName_2_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.PackageImportQualifiedName");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePackageImportReference"


    // $ANTLR start "entryRulePackageImportQualifiedName"
    // InternalAlf.g:701:1: entryRulePackageImportQualifiedName returns [EObject current=null] : iv_rulePackageImportQualifiedName= rulePackageImportQualifiedName EOF ;
    public final EObject entryRulePackageImportQualifiedName() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePackageImportQualifiedName = null;


        try {
            // InternalAlf.g:702:2: (iv_rulePackageImportQualifiedName= rulePackageImportQualifiedName EOF )
            // InternalAlf.g:703:2: iv_rulePackageImportQualifiedName= rulePackageImportQualifiedName EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPackageImportQualifiedNameRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_rulePackageImportQualifiedName=rulePackageImportQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePackageImportQualifiedName; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePackageImportQualifiedName"


    // $ANTLR start "rulePackageImportQualifiedName"
    // InternalAlf.g:710:1: rulePackageImportQualifiedName returns [EObject current=null] : ( ( (lv_nameBinding_0_0= ruleNameBinding ) ) ( ( (otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) ) )* otherlv_3= '::' otherlv_4= '*' ) | ( (otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) ) )* otherlv_7= '.' otherlv_8= '*' ) ) ) ;
    public final EObject rulePackageImportQualifiedName() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        EObject lv_nameBinding_0_0 = null;

        EObject lv_nameBinding_2_0 = null;

        EObject lv_nameBinding_6_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:713:28: ( ( ( (lv_nameBinding_0_0= ruleNameBinding ) ) ( ( (otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) ) )* otherlv_3= '::' otherlv_4= '*' ) | ( (otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) ) )* otherlv_7= '.' otherlv_8= '*' ) ) ) )
            // InternalAlf.g:714:1: ( ( (lv_nameBinding_0_0= ruleNameBinding ) ) ( ( (otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) ) )* otherlv_3= '::' otherlv_4= '*' ) | ( (otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) ) )* otherlv_7= '.' otherlv_8= '*' ) ) )
            {
            // InternalAlf.g:714:1: ( ( (lv_nameBinding_0_0= ruleNameBinding ) ) ( ( (otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) ) )* otherlv_3= '::' otherlv_4= '*' ) | ( (otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) ) )* otherlv_7= '.' otherlv_8= '*' ) ) )
            // InternalAlf.g:714:2: ( (lv_nameBinding_0_0= ruleNameBinding ) ) ( ( (otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) ) )* otherlv_3= '::' otherlv_4= '*' ) | ( (otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) ) )* otherlv_7= '.' otherlv_8= '*' ) )
            {
            // InternalAlf.g:714:2: ( (lv_nameBinding_0_0= ruleNameBinding ) )
            // InternalAlf.g:715:1: (lv_nameBinding_0_0= ruleNameBinding )
            {
            // InternalAlf.g:715:1: (lv_nameBinding_0_0= ruleNameBinding )
            // InternalAlf.g:716:3: lv_nameBinding_0_0= ruleNameBinding
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getPackageImportQualifiedNameAccess().getNameBindingNameBindingParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_14);
            lv_nameBinding_0_0=ruleNameBinding();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getPackageImportQualifiedNameRule());
              	        }
                     		add(
                     			current, 
                     			"nameBinding",
                      		lv_nameBinding_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.NameBinding");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:732:2: ( ( (otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) ) )* otherlv_3= '::' otherlv_4= '*' ) | ( (otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) ) )* otherlv_7= '.' otherlv_8= '*' ) )
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( (LA14_0==25) ) {
                alt14=1;
            }
            else if ( (LA14_0==26) ) {
                alt14=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 14, 0, input);

                throw nvae;
            }
            switch (alt14) {
                case 1 :
                    // InternalAlf.g:732:3: ( (otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) ) )* otherlv_3= '::' otherlv_4= '*' )
                    {
                    // InternalAlf.g:732:3: ( (otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) ) )* otherlv_3= '::' otherlv_4= '*' )
                    // InternalAlf.g:732:4: (otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) ) )* otherlv_3= '::' otherlv_4= '*'
                    {
                    // InternalAlf.g:732:4: (otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) ) )*
                    loop12:
                    do {
                        int alt12=2;
                        int LA12_0 = input.LA(1);

                        if ( (LA12_0==25) ) {
                            int LA12_1 = input.LA(2);

                            if ( ((LA12_1>=RULE_ID && LA12_1<=RULE_UNRESTRICTED_NAME)) ) {
                                alt12=1;
                            }


                        }


                        switch (alt12) {
                    	case 1 :
                    	    // InternalAlf.g:732:6: otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) )
                    	    {
                    	    otherlv_1=(Token)match(input,25,FOLLOW_4); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_1, grammarAccess.getPackageImportQualifiedNameAccess().getColonColonKeyword_1_0_0_0());
                    	          
                    	    }
                    	    // InternalAlf.g:736:1: ( (lv_nameBinding_2_0= ruleNameBinding ) )
                    	    // InternalAlf.g:737:1: (lv_nameBinding_2_0= ruleNameBinding )
                    	    {
                    	    // InternalAlf.g:737:1: (lv_nameBinding_2_0= ruleNameBinding )
                    	    // InternalAlf.g:738:3: lv_nameBinding_2_0= ruleNameBinding
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getPackageImportQualifiedNameAccess().getNameBindingNameBindingParserRuleCall_1_0_0_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_15);
                    	    lv_nameBinding_2_0=ruleNameBinding();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getPackageImportQualifiedNameRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"nameBinding",
                    	              		lv_nameBinding_2_0, 
                    	              		"org.eclipse.papyrus.uml.alf.Alf.NameBinding");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop12;
                        }
                    } while (true);

                    otherlv_3=(Token)match(input,25,FOLLOW_16); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getPackageImportQualifiedNameAccess().getColonColonKeyword_1_0_1());
                          
                    }
                    otherlv_4=(Token)match(input,20,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getPackageImportQualifiedNameAccess().getAsteriskKeyword_1_0_2());
                          
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalAlf.g:763:6: ( (otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) ) )* otherlv_7= '.' otherlv_8= '*' )
                    {
                    // InternalAlf.g:763:6: ( (otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) ) )* otherlv_7= '.' otherlv_8= '*' )
                    // InternalAlf.g:763:7: (otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) ) )* otherlv_7= '.' otherlv_8= '*'
                    {
                    // InternalAlf.g:763:7: (otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) ) )*
                    loop13:
                    do {
                        int alt13=2;
                        int LA13_0 = input.LA(1);

                        if ( (LA13_0==26) ) {
                            int LA13_1 = input.LA(2);

                            if ( ((LA13_1>=RULE_ID && LA13_1<=RULE_UNRESTRICTED_NAME)) ) {
                                alt13=1;
                            }


                        }


                        switch (alt13) {
                    	case 1 :
                    	    // InternalAlf.g:763:9: otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) )
                    	    {
                    	    otherlv_5=(Token)match(input,26,FOLLOW_4); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_5, grammarAccess.getPackageImportQualifiedNameAccess().getFullStopKeyword_1_1_0_0());
                    	          
                    	    }
                    	    // InternalAlf.g:767:1: ( (lv_nameBinding_6_0= ruleNameBinding ) )
                    	    // InternalAlf.g:768:1: (lv_nameBinding_6_0= ruleNameBinding )
                    	    {
                    	    // InternalAlf.g:768:1: (lv_nameBinding_6_0= ruleNameBinding )
                    	    // InternalAlf.g:769:3: lv_nameBinding_6_0= ruleNameBinding
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getPackageImportQualifiedNameAccess().getNameBindingNameBindingParserRuleCall_1_1_0_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_17);
                    	    lv_nameBinding_6_0=ruleNameBinding();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getPackageImportQualifiedNameRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"nameBinding",
                    	              		lv_nameBinding_6_0, 
                    	              		"org.eclipse.papyrus.uml.alf.Alf.NameBinding");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop13;
                        }
                    } while (true);

                    otherlv_7=(Token)match(input,26,FOLLOW_16); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_7, grammarAccess.getPackageImportQualifiedNameAccess().getFullStopKeyword_1_1_1());
                          
                    }
                    otherlv_8=(Token)match(input,20,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_8, grammarAccess.getPackageImportQualifiedNameAccess().getAsteriskKeyword_1_1_2());
                          
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePackageImportQualifiedName"


    // $ANTLR start "entryRuleImportVisibilityIndicator"
    // InternalAlf.g:801:1: entryRuleImportVisibilityIndicator returns [String current=null] : iv_ruleImportVisibilityIndicator= ruleImportVisibilityIndicator EOF ;
    public final String entryRuleImportVisibilityIndicator() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleImportVisibilityIndicator = null;


        try {
            // InternalAlf.g:802:2: (iv_ruleImportVisibilityIndicator= ruleImportVisibilityIndicator EOF )
            // InternalAlf.g:803:2: iv_ruleImportVisibilityIndicator= ruleImportVisibilityIndicator EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getImportVisibilityIndicatorRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleImportVisibilityIndicator=ruleImportVisibilityIndicator();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleImportVisibilityIndicator.getText(); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleImportVisibilityIndicator"


    // $ANTLR start "ruleImportVisibilityIndicator"
    // InternalAlf.g:810:1: ruleImportVisibilityIndicator returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'public' | kw= 'private' ) ;
    public final AntlrDatatypeRuleToken ruleImportVisibilityIndicator() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // InternalAlf.g:813:28: ( (kw= 'public' | kw= 'private' ) )
            // InternalAlf.g:814:1: (kw= 'public' | kw= 'private' )
            {
            // InternalAlf.g:814:1: (kw= 'public' | kw= 'private' )
            int alt15=2;
            int LA15_0 = input.LA(1);

            if ( (LA15_0==27) ) {
                alt15=1;
            }
            else if ( (LA15_0==28) ) {
                alt15=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 15, 0, input);

                throw nvae;
            }
            switch (alt15) {
                case 1 :
                    // InternalAlf.g:815:2: kw= 'public'
                    {
                    kw=(Token)match(input,27,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getImportVisibilityIndicatorAccess().getPublicKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:822:2: kw= 'private'
                    {
                    kw=(Token)match(input,28,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getImportVisibilityIndicatorAccess().getPrivateKeyword_1()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleImportVisibilityIndicator"


    // $ANTLR start "entryRuleNamespaceDefinition"
    // InternalAlf.g:835:1: entryRuleNamespaceDefinition returns [EObject current=null] : iv_ruleNamespaceDefinition= ruleNamespaceDefinition EOF ;
    public final EObject entryRuleNamespaceDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNamespaceDefinition = null;


        try {
            // InternalAlf.g:836:2: (iv_ruleNamespaceDefinition= ruleNamespaceDefinition EOF )
            // InternalAlf.g:837:2: iv_ruleNamespaceDefinition= ruleNamespaceDefinition EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNamespaceDefinitionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleNamespaceDefinition=ruleNamespaceDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNamespaceDefinition; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNamespaceDefinition"


    // $ANTLR start "ruleNamespaceDefinition"
    // InternalAlf.g:844:1: ruleNamespaceDefinition returns [EObject current=null] : (this_PackageDefinition_0= rulePackageDefinition | this_ClassifierDefinition_1= ruleClassifierDefinition ) ;
    public final EObject ruleNamespaceDefinition() throws RecognitionException {
        EObject current = null;

        EObject this_PackageDefinition_0 = null;

        EObject this_ClassifierDefinition_1 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:847:28: ( (this_PackageDefinition_0= rulePackageDefinition | this_ClassifierDefinition_1= ruleClassifierDefinition ) )
            // InternalAlf.g:848:1: (this_PackageDefinition_0= rulePackageDefinition | this_ClassifierDefinition_1= ruleClassifierDefinition )
            {
            // InternalAlf.g:848:1: (this_PackageDefinition_0= rulePackageDefinition | this_ClassifierDefinition_1= ruleClassifierDefinition )
            int alt16=2;
            int LA16_0 = input.LA(1);

            if ( (LA16_0==30) ) {
                alt16=1;
            }
            else if ( ((LA16_0>=34 && LA16_0<=35)||LA16_0==38||(LA16_0>=40 && LA16_0<=44)) ) {
                alt16=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 16, 0, input);

                throw nvae;
            }
            switch (alt16) {
                case 1 :
                    // InternalAlf.g:849:2: this_PackageDefinition_0= rulePackageDefinition
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getNamespaceDefinitionAccess().getPackageDefinitionParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_PackageDefinition_0=rulePackageDefinition();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_PackageDefinition_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:862:2: this_ClassifierDefinition_1= ruleClassifierDefinition
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getNamespaceDefinitionAccess().getClassifierDefinitionParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_ClassifierDefinition_1=ruleClassifierDefinition();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ClassifierDefinition_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNamespaceDefinition"


    // $ANTLR start "entryRuleVisibilityIndicator"
    // InternalAlf.g:881:1: entryRuleVisibilityIndicator returns [String current=null] : iv_ruleVisibilityIndicator= ruleVisibilityIndicator EOF ;
    public final String entryRuleVisibilityIndicator() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleVisibilityIndicator = null;


        try {
            // InternalAlf.g:882:2: (iv_ruleVisibilityIndicator= ruleVisibilityIndicator EOF )
            // InternalAlf.g:883:2: iv_ruleVisibilityIndicator= ruleVisibilityIndicator EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getVisibilityIndicatorRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleVisibilityIndicator=ruleVisibilityIndicator();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleVisibilityIndicator.getText(); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleVisibilityIndicator"


    // $ANTLR start "ruleVisibilityIndicator"
    // InternalAlf.g:890:1: ruleVisibilityIndicator returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ImportVisibilityIndicator_0= ruleImportVisibilityIndicator | kw= 'protected' ) ;
    public final AntlrDatatypeRuleToken ruleVisibilityIndicator() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_ImportVisibilityIndicator_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:893:28: ( (this_ImportVisibilityIndicator_0= ruleImportVisibilityIndicator | kw= 'protected' ) )
            // InternalAlf.g:894:1: (this_ImportVisibilityIndicator_0= ruleImportVisibilityIndicator | kw= 'protected' )
            {
            // InternalAlf.g:894:1: (this_ImportVisibilityIndicator_0= ruleImportVisibilityIndicator | kw= 'protected' )
            int alt17=2;
            int LA17_0 = input.LA(1);

            if ( ((LA17_0>=27 && LA17_0<=28)) ) {
                alt17=1;
            }
            else if ( (LA17_0==29) ) {
                alt17=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 17, 0, input);

                throw nvae;
            }
            switch (alt17) {
                case 1 :
                    // InternalAlf.g:895:5: this_ImportVisibilityIndicator_0= ruleImportVisibilityIndicator
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getVisibilityIndicatorAccess().getImportVisibilityIndicatorParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_ImportVisibilityIndicator_0=ruleImportVisibilityIndicator();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      		current.merge(this_ImportVisibilityIndicator_0);
                          
                    }
                    if ( state.backtracking==0 ) {
                       
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:907:2: kw= 'protected'
                    {
                    kw=(Token)match(input,29,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getVisibilityIndicatorAccess().getProtectedKeyword_1()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleVisibilityIndicator"


    // $ANTLR start "entryRulePackageDefinition"
    // InternalAlf.g:920:1: entryRulePackageDefinition returns [EObject current=null] : iv_rulePackageDefinition= rulePackageDefinition EOF ;
    public final EObject entryRulePackageDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePackageDefinition = null;


        try {
            // InternalAlf.g:921:2: (iv_rulePackageDefinition= rulePackageDefinition EOF )
            // InternalAlf.g:922:2: iv_rulePackageDefinition= rulePackageDefinition EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPackageDefinitionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_rulePackageDefinition=rulePackageDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePackageDefinition; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePackageDefinition"


    // $ANTLR start "rulePackageDefinition"
    // InternalAlf.g:929:1: rulePackageDefinition returns [EObject current=null] : (otherlv_0= 'package' ( (lv_name_1_0= ruleName ) ) otherlv_2= '{' ( (lv_ownedMember_3_0= rulePackagedElement ) )* otherlv_4= '}' ) ;
    public final EObject rulePackageDefinition() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_ownedMember_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:932:28: ( (otherlv_0= 'package' ( (lv_name_1_0= ruleName ) ) otherlv_2= '{' ( (lv_ownedMember_3_0= rulePackagedElement ) )* otherlv_4= '}' ) )
            // InternalAlf.g:933:1: (otherlv_0= 'package' ( (lv_name_1_0= ruleName ) ) otherlv_2= '{' ( (lv_ownedMember_3_0= rulePackagedElement ) )* otherlv_4= '}' )
            {
            // InternalAlf.g:933:1: (otherlv_0= 'package' ( (lv_name_1_0= ruleName ) ) otherlv_2= '{' ( (lv_ownedMember_3_0= rulePackagedElement ) )* otherlv_4= '}' )
            // InternalAlf.g:933:3: otherlv_0= 'package' ( (lv_name_1_0= ruleName ) ) otherlv_2= '{' ( (lv_ownedMember_3_0= rulePackagedElement ) )* otherlv_4= '}'
            {
            otherlv_0=(Token)match(input,30,FOLLOW_4); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getPackageDefinitionAccess().getPackageKeyword_0());
                  
            }
            // InternalAlf.g:937:1: ( (lv_name_1_0= ruleName ) )
            // InternalAlf.g:938:1: (lv_name_1_0= ruleName )
            {
            // InternalAlf.g:938:1: (lv_name_1_0= ruleName )
            // InternalAlf.g:939:3: lv_name_1_0= ruleName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getPackageDefinitionAccess().getNameNameParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_18);
            lv_name_1_0=ruleName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getPackageDefinitionRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Name");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,31,FOLLOW_19); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getPackageDefinitionAccess().getLeftCurlyBracketKeyword_2());
                  
            }
            // InternalAlf.g:959:1: ( (lv_ownedMember_3_0= rulePackagedElement ) )*
            loop18:
            do {
                int alt18=2;
                int LA18_0 = input.LA(1);

                if ( (LA18_0==RULE_DOCUMENTATION_COMMENT||LA18_0==15||(LA18_0>=27 && LA18_0<=28)) ) {
                    alt18=1;
                }


                switch (alt18) {
            	case 1 :
            	    // InternalAlf.g:960:1: (lv_ownedMember_3_0= rulePackagedElement )
            	    {
            	    // InternalAlf.g:960:1: (lv_ownedMember_3_0= rulePackagedElement )
            	    // InternalAlf.g:961:3: lv_ownedMember_3_0= rulePackagedElement
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getPackageDefinitionAccess().getOwnedMemberPackagedElementParserRuleCall_3_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_19);
            	    lv_ownedMember_3_0=rulePackagedElement();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getPackageDefinitionRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"ownedMember",
            	              		lv_ownedMember_3_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.PackagedElement");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop18;
                }
            } while (true);

            otherlv_4=(Token)match(input,32,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getPackageDefinitionAccess().getRightCurlyBracketKeyword_4());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePackageDefinition"


    // $ANTLR start "entryRulePackageDefinitionOrStub"
    // InternalAlf.g:989:1: entryRulePackageDefinitionOrStub returns [EObject current=null] : iv_rulePackageDefinitionOrStub= rulePackageDefinitionOrStub EOF ;
    public final EObject entryRulePackageDefinitionOrStub() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePackageDefinitionOrStub = null;


        try {
            // InternalAlf.g:990:2: (iv_rulePackageDefinitionOrStub= rulePackageDefinitionOrStub EOF )
            // InternalAlf.g:991:2: iv_rulePackageDefinitionOrStub= rulePackageDefinitionOrStub EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPackageDefinitionOrStubRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_rulePackageDefinitionOrStub=rulePackageDefinitionOrStub();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePackageDefinitionOrStub; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePackageDefinitionOrStub"


    // $ANTLR start "rulePackageDefinitionOrStub"
    // InternalAlf.g:998:1: rulePackageDefinitionOrStub returns [EObject current=null] : (otherlv_0= 'package' ( (lv_name_1_0= ruleName ) ) ( ( (lv_isStub_2_0= ';' ) ) | (otherlv_3= '{' ( (lv_ownedMember_4_0= rulePackagedElement ) )* otherlv_5= '}' ) ) ) ;
    public final EObject rulePackageDefinitionOrStub() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_isStub_2_0=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_ownedMember_4_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:1001:28: ( (otherlv_0= 'package' ( (lv_name_1_0= ruleName ) ) ( ( (lv_isStub_2_0= ';' ) ) | (otherlv_3= '{' ( (lv_ownedMember_4_0= rulePackagedElement ) )* otherlv_5= '}' ) ) ) )
            // InternalAlf.g:1002:1: (otherlv_0= 'package' ( (lv_name_1_0= ruleName ) ) ( ( (lv_isStub_2_0= ';' ) ) | (otherlv_3= '{' ( (lv_ownedMember_4_0= rulePackagedElement ) )* otherlv_5= '}' ) ) )
            {
            // InternalAlf.g:1002:1: (otherlv_0= 'package' ( (lv_name_1_0= ruleName ) ) ( ( (lv_isStub_2_0= ';' ) ) | (otherlv_3= '{' ( (lv_ownedMember_4_0= rulePackagedElement ) )* otherlv_5= '}' ) ) )
            // InternalAlf.g:1002:3: otherlv_0= 'package' ( (lv_name_1_0= ruleName ) ) ( ( (lv_isStub_2_0= ';' ) ) | (otherlv_3= '{' ( (lv_ownedMember_4_0= rulePackagedElement ) )* otherlv_5= '}' ) )
            {
            otherlv_0=(Token)match(input,30,FOLLOW_4); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getPackageDefinitionOrStubAccess().getPackageKeyword_0());
                  
            }
            // InternalAlf.g:1006:1: ( (lv_name_1_0= ruleName ) )
            // InternalAlf.g:1007:1: (lv_name_1_0= ruleName )
            {
            // InternalAlf.g:1007:1: (lv_name_1_0= ruleName )
            // InternalAlf.g:1008:3: lv_name_1_0= ruleName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getPackageDefinitionOrStubAccess().getNameNameParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_20);
            lv_name_1_0=ruleName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getPackageDefinitionOrStubRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Name");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:1024:2: ( ( (lv_isStub_2_0= ';' ) ) | (otherlv_3= '{' ( (lv_ownedMember_4_0= rulePackagedElement ) )* otherlv_5= '}' ) )
            int alt20=2;
            int LA20_0 = input.LA(1);

            if ( (LA20_0==22) ) {
                alt20=1;
            }
            else if ( (LA20_0==31) ) {
                alt20=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 20, 0, input);

                throw nvae;
            }
            switch (alt20) {
                case 1 :
                    // InternalAlf.g:1024:3: ( (lv_isStub_2_0= ';' ) )
                    {
                    // InternalAlf.g:1024:3: ( (lv_isStub_2_0= ';' ) )
                    // InternalAlf.g:1025:1: (lv_isStub_2_0= ';' )
                    {
                    // InternalAlf.g:1025:1: (lv_isStub_2_0= ';' )
                    // InternalAlf.g:1026:3: lv_isStub_2_0= ';'
                    {
                    lv_isStub_2_0=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_isStub_2_0, grammarAccess.getPackageDefinitionOrStubAccess().getIsStubSemicolonKeyword_2_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getPackageDefinitionOrStubRule());
                      	        }
                             		setWithLastConsumed(current, "isStub", true, ";");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalAlf.g:1040:6: (otherlv_3= '{' ( (lv_ownedMember_4_0= rulePackagedElement ) )* otherlv_5= '}' )
                    {
                    // InternalAlf.g:1040:6: (otherlv_3= '{' ( (lv_ownedMember_4_0= rulePackagedElement ) )* otherlv_5= '}' )
                    // InternalAlf.g:1040:8: otherlv_3= '{' ( (lv_ownedMember_4_0= rulePackagedElement ) )* otherlv_5= '}'
                    {
                    otherlv_3=(Token)match(input,31,FOLLOW_19); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getPackageDefinitionOrStubAccess().getLeftCurlyBracketKeyword_2_1_0());
                          
                    }
                    // InternalAlf.g:1044:1: ( (lv_ownedMember_4_0= rulePackagedElement ) )*
                    loop19:
                    do {
                        int alt19=2;
                        int LA19_0 = input.LA(1);

                        if ( (LA19_0==RULE_DOCUMENTATION_COMMENT||LA19_0==15||(LA19_0>=27 && LA19_0<=28)) ) {
                            alt19=1;
                        }


                        switch (alt19) {
                    	case 1 :
                    	    // InternalAlf.g:1045:1: (lv_ownedMember_4_0= rulePackagedElement )
                    	    {
                    	    // InternalAlf.g:1045:1: (lv_ownedMember_4_0= rulePackagedElement )
                    	    // InternalAlf.g:1046:3: lv_ownedMember_4_0= rulePackagedElement
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getPackageDefinitionOrStubAccess().getOwnedMemberPackagedElementParserRuleCall_2_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_19);
                    	    lv_ownedMember_4_0=rulePackagedElement();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getPackageDefinitionOrStubRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"ownedMember",
                    	              		lv_ownedMember_4_0, 
                    	              		"org.eclipse.papyrus.uml.alf.Alf.PackagedElement");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop19;
                        }
                    } while (true);

                    otherlv_5=(Token)match(input,32,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getPackageDefinitionOrStubAccess().getRightCurlyBracketKeyword_2_1_2());
                          
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePackageDefinitionOrStub"


    // $ANTLR start "entryRulePackagedElement"
    // InternalAlf.g:1074:1: entryRulePackagedElement returns [EObject current=null] : iv_rulePackagedElement= rulePackagedElement EOF ;
    public final EObject entryRulePackagedElement() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePackagedElement = null;


        try {
            // InternalAlf.g:1075:2: (iv_rulePackagedElement= rulePackagedElement EOF )
            // InternalAlf.g:1076:2: iv_rulePackagedElement= rulePackagedElement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPackagedElementRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_rulePackagedElement=rulePackagedElement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePackagedElement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePackagedElement"


    // $ANTLR start "rulePackagedElement"
    // InternalAlf.g:1083:1: rulePackagedElement returns [EObject current=null] : ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )* ( (lv_visibility_2_0= ruleImportVisibilityIndicator ) ) ( (lv_definition_3_0= rulePackagedElementDefinition ) ) ) ;
    public final EObject rulePackagedElement() throws RecognitionException {
        EObject current = null;

        Token lv_documentation_0_0=null;
        EObject lv_annotation_1_0 = null;

        AntlrDatatypeRuleToken lv_visibility_2_0 = null;

        EObject lv_definition_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:1086:28: ( ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )* ( (lv_visibility_2_0= ruleImportVisibilityIndicator ) ) ( (lv_definition_3_0= rulePackagedElementDefinition ) ) ) )
            // InternalAlf.g:1087:1: ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )* ( (lv_visibility_2_0= ruleImportVisibilityIndicator ) ) ( (lv_definition_3_0= rulePackagedElementDefinition ) ) )
            {
            // InternalAlf.g:1087:1: ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )* ( (lv_visibility_2_0= ruleImportVisibilityIndicator ) ) ( (lv_definition_3_0= rulePackagedElementDefinition ) ) )
            // InternalAlf.g:1087:2: ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )* ( (lv_visibility_2_0= ruleImportVisibilityIndicator ) ) ( (lv_definition_3_0= rulePackagedElementDefinition ) )
            {
            // InternalAlf.g:1087:2: ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )?
            int alt21=2;
            int LA21_0 = input.LA(1);

            if ( (LA21_0==RULE_DOCUMENTATION_COMMENT) ) {
                alt21=1;
            }
            switch (alt21) {
                case 1 :
                    // InternalAlf.g:1088:1: (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT )
                    {
                    // InternalAlf.g:1088:1: (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT )
                    // InternalAlf.g:1089:3: lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT
                    {
                    lv_documentation_0_0=(Token)match(input,RULE_DOCUMENTATION_COMMENT,FOLLOW_21); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_documentation_0_0, grammarAccess.getPackagedElementAccess().getDocumentationDOCUMENTATION_COMMENTTerminalRuleCall_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getPackagedElementRule());
                      	        }
                             		addWithLastConsumed(
                             			current, 
                             			"documentation",
                              		lv_documentation_0_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.DOCUMENTATION_COMMENT");
                      	    
                    }

                    }


                    }
                    break;

            }

            // InternalAlf.g:1105:3: ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )*
            loop22:
            do {
                int alt22=2;
                int LA22_0 = input.LA(1);

                if ( (LA22_0==15) ) {
                    alt22=1;
                }


                switch (alt22) {
            	case 1 :
            	    // InternalAlf.g:1106:1: (lv_annotation_1_0= ruleStereotypeAnnotation )
            	    {
            	    // InternalAlf.g:1106:1: (lv_annotation_1_0= ruleStereotypeAnnotation )
            	    // InternalAlf.g:1107:3: lv_annotation_1_0= ruleStereotypeAnnotation
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getPackagedElementAccess().getAnnotationStereotypeAnnotationParserRuleCall_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_21);
            	    lv_annotation_1_0=ruleStereotypeAnnotation();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getPackagedElementRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"annotation",
            	              		lv_annotation_1_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.StereotypeAnnotation");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop22;
                }
            } while (true);

            // InternalAlf.g:1123:3: ( (lv_visibility_2_0= ruleImportVisibilityIndicator ) )
            // InternalAlf.g:1124:1: (lv_visibility_2_0= ruleImportVisibilityIndicator )
            {
            // InternalAlf.g:1124:1: (lv_visibility_2_0= ruleImportVisibilityIndicator )
            // InternalAlf.g:1125:3: lv_visibility_2_0= ruleImportVisibilityIndicator
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getPackagedElementAccess().getVisibilityImportVisibilityIndicatorParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_3);
            lv_visibility_2_0=ruleImportVisibilityIndicator();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getPackagedElementRule());
              	        }
                     		set(
                     			current, 
                     			"visibility",
                      		lv_visibility_2_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.ImportVisibilityIndicator");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:1141:2: ( (lv_definition_3_0= rulePackagedElementDefinition ) )
            // InternalAlf.g:1142:1: (lv_definition_3_0= rulePackagedElementDefinition )
            {
            // InternalAlf.g:1142:1: (lv_definition_3_0= rulePackagedElementDefinition )
            // InternalAlf.g:1143:3: lv_definition_3_0= rulePackagedElementDefinition
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getPackagedElementAccess().getDefinitionPackagedElementDefinitionParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_definition_3_0=rulePackagedElementDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getPackagedElementRule());
              	        }
                     		set(
                     			current, 
                     			"definition",
                      		lv_definition_3_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.PackagedElementDefinition");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePackagedElement"


    // $ANTLR start "entryRulePackagedElementDefinition"
    // InternalAlf.g:1167:1: entryRulePackagedElementDefinition returns [EObject current=null] : iv_rulePackagedElementDefinition= rulePackagedElementDefinition EOF ;
    public final EObject entryRulePackagedElementDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePackagedElementDefinition = null;


        try {
            // InternalAlf.g:1168:2: (iv_rulePackagedElementDefinition= rulePackagedElementDefinition EOF )
            // InternalAlf.g:1169:2: iv_rulePackagedElementDefinition= rulePackagedElementDefinition EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPackagedElementDefinitionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_rulePackagedElementDefinition=rulePackagedElementDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePackagedElementDefinition; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePackagedElementDefinition"


    // $ANTLR start "rulePackagedElementDefinition"
    // InternalAlf.g:1176:1: rulePackagedElementDefinition returns [EObject current=null] : (this_PackageDefinitionOrStub_0= rulePackageDefinitionOrStub | this_ClassifierDefinitionOrStub_1= ruleClassifierDefinitionOrStub ) ;
    public final EObject rulePackagedElementDefinition() throws RecognitionException {
        EObject current = null;

        EObject this_PackageDefinitionOrStub_0 = null;

        EObject this_ClassifierDefinitionOrStub_1 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:1179:28: ( (this_PackageDefinitionOrStub_0= rulePackageDefinitionOrStub | this_ClassifierDefinitionOrStub_1= ruleClassifierDefinitionOrStub ) )
            // InternalAlf.g:1180:1: (this_PackageDefinitionOrStub_0= rulePackageDefinitionOrStub | this_ClassifierDefinitionOrStub_1= ruleClassifierDefinitionOrStub )
            {
            // InternalAlf.g:1180:1: (this_PackageDefinitionOrStub_0= rulePackageDefinitionOrStub | this_ClassifierDefinitionOrStub_1= ruleClassifierDefinitionOrStub )
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( (LA23_0==30) ) {
                alt23=1;
            }
            else if ( ((LA23_0>=34 && LA23_0<=35)||LA23_0==38||(LA23_0>=40 && LA23_0<=44)) ) {
                alt23=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 23, 0, input);

                throw nvae;
            }
            switch (alt23) {
                case 1 :
                    // InternalAlf.g:1181:2: this_PackageDefinitionOrStub_0= rulePackageDefinitionOrStub
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getPackagedElementDefinitionAccess().getPackageDefinitionOrStubParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_PackageDefinitionOrStub_0=rulePackageDefinitionOrStub();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_PackageDefinitionOrStub_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:1194:2: this_ClassifierDefinitionOrStub_1= ruleClassifierDefinitionOrStub
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getPackagedElementDefinitionAccess().getClassifierDefinitionOrStubParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_ClassifierDefinitionOrStub_1=ruleClassifierDefinitionOrStub();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ClassifierDefinitionOrStub_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePackagedElementDefinition"


    // $ANTLR start "entryRuleClassifierDefinition"
    // InternalAlf.g:1213:1: entryRuleClassifierDefinition returns [EObject current=null] : iv_ruleClassifierDefinition= ruleClassifierDefinition EOF ;
    public final EObject entryRuleClassifierDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleClassifierDefinition = null;


        try {
            // InternalAlf.g:1214:2: (iv_ruleClassifierDefinition= ruleClassifierDefinition EOF )
            // InternalAlf.g:1215:2: iv_ruleClassifierDefinition= ruleClassifierDefinition EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getClassifierDefinitionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleClassifierDefinition=ruleClassifierDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleClassifierDefinition; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleClassifierDefinition"


    // $ANTLR start "ruleClassifierDefinition"
    // InternalAlf.g:1222:1: ruleClassifierDefinition returns [EObject current=null] : (this_ClassDefinition_0= ruleClassDefinition | this_ActiveClassDefinition_1= ruleActiveClassDefinition | this_DataTypeDefinition_2= ruleDataTypeDefinition | this_EnumerationDefinition_3= ruleEnumerationDefinition | this_AssociationDefinition_4= ruleAssociationDefinition | this_SignalDefinition_5= ruleSignalDefinition | this_ActivityDefinition_6= ruleActivityDefinition ) ;
    public final EObject ruleClassifierDefinition() throws RecognitionException {
        EObject current = null;

        EObject this_ClassDefinition_0 = null;

        EObject this_ActiveClassDefinition_1 = null;

        EObject this_DataTypeDefinition_2 = null;

        EObject this_EnumerationDefinition_3 = null;

        EObject this_AssociationDefinition_4 = null;

        EObject this_SignalDefinition_5 = null;

        EObject this_ActivityDefinition_6 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:1225:28: ( (this_ClassDefinition_0= ruleClassDefinition | this_ActiveClassDefinition_1= ruleActiveClassDefinition | this_DataTypeDefinition_2= ruleDataTypeDefinition | this_EnumerationDefinition_3= ruleEnumerationDefinition | this_AssociationDefinition_4= ruleAssociationDefinition | this_SignalDefinition_5= ruleSignalDefinition | this_ActivityDefinition_6= ruleActivityDefinition ) )
            // InternalAlf.g:1226:1: (this_ClassDefinition_0= ruleClassDefinition | this_ActiveClassDefinition_1= ruleActiveClassDefinition | this_DataTypeDefinition_2= ruleDataTypeDefinition | this_EnumerationDefinition_3= ruleEnumerationDefinition | this_AssociationDefinition_4= ruleAssociationDefinition | this_SignalDefinition_5= ruleSignalDefinition | this_ActivityDefinition_6= ruleActivityDefinition )
            {
            // InternalAlf.g:1226:1: (this_ClassDefinition_0= ruleClassDefinition | this_ActiveClassDefinition_1= ruleActiveClassDefinition | this_DataTypeDefinition_2= ruleDataTypeDefinition | this_EnumerationDefinition_3= ruleEnumerationDefinition | this_AssociationDefinition_4= ruleAssociationDefinition | this_SignalDefinition_5= ruleSignalDefinition | this_ActivityDefinition_6= ruleActivityDefinition )
            int alt24=7;
            switch ( input.LA(1) ) {
            case 34:
                {
                switch ( input.LA(2) ) {
                case 35:
                    {
                    alt24=1;
                    }
                    break;
                case 41:
                    {
                    alt24=5;
                    }
                    break;
                case 38:
                    {
                    alt24=2;
                    }
                    break;
                case 43:
                    {
                    alt24=6;
                    }
                    break;
                case 40:
                    {
                    alt24=3;
                    }
                    break;
                default:
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 24, 1, input);

                    throw nvae;
                }

                }
                break;
            case 35:
                {
                alt24=1;
                }
                break;
            case 38:
                {
                alt24=2;
                }
                break;
            case 40:
                {
                alt24=3;
                }
                break;
            case 42:
                {
                alt24=4;
                }
                break;
            case 41:
                {
                alt24=5;
                }
                break;
            case 43:
                {
                alt24=6;
                }
                break;
            case 44:
                {
                alt24=7;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 24, 0, input);

                throw nvae;
            }

            switch (alt24) {
                case 1 :
                    // InternalAlf.g:1227:2: this_ClassDefinition_0= ruleClassDefinition
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getClassifierDefinitionAccess().getClassDefinitionParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_ClassDefinition_0=ruleClassDefinition();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ClassDefinition_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:1240:2: this_ActiveClassDefinition_1= ruleActiveClassDefinition
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getClassifierDefinitionAccess().getActiveClassDefinitionParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_ActiveClassDefinition_1=ruleActiveClassDefinition();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ActiveClassDefinition_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // InternalAlf.g:1253:2: this_DataTypeDefinition_2= ruleDataTypeDefinition
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getClassifierDefinitionAccess().getDataTypeDefinitionParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_DataTypeDefinition_2=ruleDataTypeDefinition();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_DataTypeDefinition_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // InternalAlf.g:1266:2: this_EnumerationDefinition_3= ruleEnumerationDefinition
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getClassifierDefinitionAccess().getEnumerationDefinitionParserRuleCall_3()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_EnumerationDefinition_3=ruleEnumerationDefinition();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_EnumerationDefinition_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 5 :
                    // InternalAlf.g:1279:2: this_AssociationDefinition_4= ruleAssociationDefinition
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getClassifierDefinitionAccess().getAssociationDefinitionParserRuleCall_4()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_AssociationDefinition_4=ruleAssociationDefinition();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_AssociationDefinition_4; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 6 :
                    // InternalAlf.g:1292:2: this_SignalDefinition_5= ruleSignalDefinition
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getClassifierDefinitionAccess().getSignalDefinitionParserRuleCall_5()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_SignalDefinition_5=ruleSignalDefinition();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_SignalDefinition_5; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 7 :
                    // InternalAlf.g:1305:2: this_ActivityDefinition_6= ruleActivityDefinition
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getClassifierDefinitionAccess().getActivityDefinitionParserRuleCall_6()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_ActivityDefinition_6=ruleActivityDefinition();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ActivityDefinition_6; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleClassifierDefinition"


    // $ANTLR start "entryRuleClassifierDefinitionOrStub"
    // InternalAlf.g:1324:1: entryRuleClassifierDefinitionOrStub returns [EObject current=null] : iv_ruleClassifierDefinitionOrStub= ruleClassifierDefinitionOrStub EOF ;
    public final EObject entryRuleClassifierDefinitionOrStub() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleClassifierDefinitionOrStub = null;


        try {
            // InternalAlf.g:1325:2: (iv_ruleClassifierDefinitionOrStub= ruleClassifierDefinitionOrStub EOF )
            // InternalAlf.g:1326:2: iv_ruleClassifierDefinitionOrStub= ruleClassifierDefinitionOrStub EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getClassifierDefinitionOrStubRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleClassifierDefinitionOrStub=ruleClassifierDefinitionOrStub();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleClassifierDefinitionOrStub; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleClassifierDefinitionOrStub"


    // $ANTLR start "ruleClassifierDefinitionOrStub"
    // InternalAlf.g:1333:1: ruleClassifierDefinitionOrStub returns [EObject current=null] : (this_ClassDefinitionOrStub_0= ruleClassDefinitionOrStub | this_ActiveClassDefinitionOrStub_1= ruleActiveClassDefinitionOrStub | this_DataTypeDefinitionOrStub_2= ruleDataTypeDefinitionOrStub | this_EnumerationDefinitionOrStub_3= ruleEnumerationDefinitionOrStub | this_AssociationDefinitionOrStub_4= ruleAssociationDefinitionOrStub | this_SignalDefinitionOrStub_5= ruleSignalDefinitionOrStub | this_ActivityDefinitionOrStub_6= ruleActivityDefinitionOrStub ) ;
    public final EObject ruleClassifierDefinitionOrStub() throws RecognitionException {
        EObject current = null;

        EObject this_ClassDefinitionOrStub_0 = null;

        EObject this_ActiveClassDefinitionOrStub_1 = null;

        EObject this_DataTypeDefinitionOrStub_2 = null;

        EObject this_EnumerationDefinitionOrStub_3 = null;

        EObject this_AssociationDefinitionOrStub_4 = null;

        EObject this_SignalDefinitionOrStub_5 = null;

        EObject this_ActivityDefinitionOrStub_6 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:1336:28: ( (this_ClassDefinitionOrStub_0= ruleClassDefinitionOrStub | this_ActiveClassDefinitionOrStub_1= ruleActiveClassDefinitionOrStub | this_DataTypeDefinitionOrStub_2= ruleDataTypeDefinitionOrStub | this_EnumerationDefinitionOrStub_3= ruleEnumerationDefinitionOrStub | this_AssociationDefinitionOrStub_4= ruleAssociationDefinitionOrStub | this_SignalDefinitionOrStub_5= ruleSignalDefinitionOrStub | this_ActivityDefinitionOrStub_6= ruleActivityDefinitionOrStub ) )
            // InternalAlf.g:1337:1: (this_ClassDefinitionOrStub_0= ruleClassDefinitionOrStub | this_ActiveClassDefinitionOrStub_1= ruleActiveClassDefinitionOrStub | this_DataTypeDefinitionOrStub_2= ruleDataTypeDefinitionOrStub | this_EnumerationDefinitionOrStub_3= ruleEnumerationDefinitionOrStub | this_AssociationDefinitionOrStub_4= ruleAssociationDefinitionOrStub | this_SignalDefinitionOrStub_5= ruleSignalDefinitionOrStub | this_ActivityDefinitionOrStub_6= ruleActivityDefinitionOrStub )
            {
            // InternalAlf.g:1337:1: (this_ClassDefinitionOrStub_0= ruleClassDefinitionOrStub | this_ActiveClassDefinitionOrStub_1= ruleActiveClassDefinitionOrStub | this_DataTypeDefinitionOrStub_2= ruleDataTypeDefinitionOrStub | this_EnumerationDefinitionOrStub_3= ruleEnumerationDefinitionOrStub | this_AssociationDefinitionOrStub_4= ruleAssociationDefinitionOrStub | this_SignalDefinitionOrStub_5= ruleSignalDefinitionOrStub | this_ActivityDefinitionOrStub_6= ruleActivityDefinitionOrStub )
            int alt25=7;
            switch ( input.LA(1) ) {
            case 34:
                {
                switch ( input.LA(2) ) {
                case 35:
                    {
                    alt25=1;
                    }
                    break;
                case 41:
                    {
                    alt25=5;
                    }
                    break;
                case 38:
                    {
                    alt25=2;
                    }
                    break;
                case 40:
                    {
                    alt25=3;
                    }
                    break;
                case 43:
                    {
                    alt25=6;
                    }
                    break;
                default:
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 25, 1, input);

                    throw nvae;
                }

                }
                break;
            case 35:
                {
                alt25=1;
                }
                break;
            case 38:
                {
                alt25=2;
                }
                break;
            case 40:
                {
                alt25=3;
                }
                break;
            case 42:
                {
                alt25=4;
                }
                break;
            case 41:
                {
                alt25=5;
                }
                break;
            case 43:
                {
                alt25=6;
                }
                break;
            case 44:
                {
                alt25=7;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 25, 0, input);

                throw nvae;
            }

            switch (alt25) {
                case 1 :
                    // InternalAlf.g:1338:2: this_ClassDefinitionOrStub_0= ruleClassDefinitionOrStub
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getClassifierDefinitionOrStubAccess().getClassDefinitionOrStubParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_ClassDefinitionOrStub_0=ruleClassDefinitionOrStub();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ClassDefinitionOrStub_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:1351:2: this_ActiveClassDefinitionOrStub_1= ruleActiveClassDefinitionOrStub
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getClassifierDefinitionOrStubAccess().getActiveClassDefinitionOrStubParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_ActiveClassDefinitionOrStub_1=ruleActiveClassDefinitionOrStub();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ActiveClassDefinitionOrStub_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // InternalAlf.g:1364:2: this_DataTypeDefinitionOrStub_2= ruleDataTypeDefinitionOrStub
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getClassifierDefinitionOrStubAccess().getDataTypeDefinitionOrStubParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_DataTypeDefinitionOrStub_2=ruleDataTypeDefinitionOrStub();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_DataTypeDefinitionOrStub_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // InternalAlf.g:1377:2: this_EnumerationDefinitionOrStub_3= ruleEnumerationDefinitionOrStub
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getClassifierDefinitionOrStubAccess().getEnumerationDefinitionOrStubParserRuleCall_3()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_EnumerationDefinitionOrStub_3=ruleEnumerationDefinitionOrStub();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_EnumerationDefinitionOrStub_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 5 :
                    // InternalAlf.g:1390:2: this_AssociationDefinitionOrStub_4= ruleAssociationDefinitionOrStub
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getClassifierDefinitionOrStubAccess().getAssociationDefinitionOrStubParserRuleCall_4()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_AssociationDefinitionOrStub_4=ruleAssociationDefinitionOrStub();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_AssociationDefinitionOrStub_4; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 6 :
                    // InternalAlf.g:1403:2: this_SignalDefinitionOrStub_5= ruleSignalDefinitionOrStub
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getClassifierDefinitionOrStubAccess().getSignalDefinitionOrStubParserRuleCall_5()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_SignalDefinitionOrStub_5=ruleSignalDefinitionOrStub();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_SignalDefinitionOrStub_5; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 7 :
                    // InternalAlf.g:1416:2: this_ActivityDefinitionOrStub_6= ruleActivityDefinitionOrStub
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getClassifierDefinitionOrStubAccess().getActivityDefinitionOrStubParserRuleCall_6()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_ActivityDefinitionOrStub_6=ruleActivityDefinitionOrStub();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ActivityDefinitionOrStub_6; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleClassifierDefinitionOrStub"


    // $ANTLR start "entryRuleClassifierTemplateParameter"
    // InternalAlf.g:1437:1: entryRuleClassifierTemplateParameter returns [EObject current=null] : iv_ruleClassifierTemplateParameter= ruleClassifierTemplateParameter EOF ;
    public final EObject entryRuleClassifierTemplateParameter() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleClassifierTemplateParameter = null;


        try {
            // InternalAlf.g:1438:2: (iv_ruleClassifierTemplateParameter= ruleClassifierTemplateParameter EOF )
            // InternalAlf.g:1439:2: iv_ruleClassifierTemplateParameter= ruleClassifierTemplateParameter EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getClassifierTemplateParameterRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleClassifierTemplateParameter=ruleClassifierTemplateParameter();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleClassifierTemplateParameter; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleClassifierTemplateParameter"


    // $ANTLR start "ruleClassifierTemplateParameter"
    // InternalAlf.g:1446:1: ruleClassifierTemplateParameter returns [EObject current=null] : ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_definition_1_0= ruleClassifierTemplateParameterDefinition ) ) ) ;
    public final EObject ruleClassifierTemplateParameter() throws RecognitionException {
        EObject current = null;

        Token lv_documentation_0_0=null;
        EObject lv_definition_1_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:1449:28: ( ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_definition_1_0= ruleClassifierTemplateParameterDefinition ) ) ) )
            // InternalAlf.g:1450:1: ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_definition_1_0= ruleClassifierTemplateParameterDefinition ) ) )
            {
            // InternalAlf.g:1450:1: ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_definition_1_0= ruleClassifierTemplateParameterDefinition ) ) )
            // InternalAlf.g:1450:2: ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_definition_1_0= ruleClassifierTemplateParameterDefinition ) )
            {
            // InternalAlf.g:1450:2: ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )?
            int alt26=2;
            int LA26_0 = input.LA(1);

            if ( (LA26_0==RULE_DOCUMENTATION_COMMENT) ) {
                alt26=1;
            }
            switch (alt26) {
                case 1 :
                    // InternalAlf.g:1451:1: (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT )
                    {
                    // InternalAlf.g:1451:1: (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT )
                    // InternalAlf.g:1452:3: lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT
                    {
                    lv_documentation_0_0=(Token)match(input,RULE_DOCUMENTATION_COMMENT,FOLLOW_4); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_documentation_0_0, grammarAccess.getClassifierTemplateParameterAccess().getDocumentationDOCUMENTATION_COMMENTTerminalRuleCall_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getClassifierTemplateParameterRule());
                      	        }
                             		addWithLastConsumed(
                             			current, 
                             			"documentation",
                              		lv_documentation_0_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.DOCUMENTATION_COMMENT");
                      	    
                    }

                    }


                    }
                    break;

            }

            // InternalAlf.g:1468:3: ( (lv_definition_1_0= ruleClassifierTemplateParameterDefinition ) )
            // InternalAlf.g:1469:1: (lv_definition_1_0= ruleClassifierTemplateParameterDefinition )
            {
            // InternalAlf.g:1469:1: (lv_definition_1_0= ruleClassifierTemplateParameterDefinition )
            // InternalAlf.g:1470:3: lv_definition_1_0= ruleClassifierTemplateParameterDefinition
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getClassifierTemplateParameterAccess().getDefinitionClassifierTemplateParameterDefinitionParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_definition_1_0=ruleClassifierTemplateParameterDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getClassifierTemplateParameterRule());
              	        }
                     		set(
                     			current, 
                     			"definition",
                      		lv_definition_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.ClassifierTemplateParameterDefinition");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleClassifierTemplateParameter"


    // $ANTLR start "entryRuleClassifierTemplateParameterDefinition"
    // InternalAlf.g:1494:1: entryRuleClassifierTemplateParameterDefinition returns [EObject current=null] : iv_ruleClassifierTemplateParameterDefinition= ruleClassifierTemplateParameterDefinition EOF ;
    public final EObject entryRuleClassifierTemplateParameterDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleClassifierTemplateParameterDefinition = null;


        try {
            // InternalAlf.g:1495:2: (iv_ruleClassifierTemplateParameterDefinition= ruleClassifierTemplateParameterDefinition EOF )
            // InternalAlf.g:1496:2: iv_ruleClassifierTemplateParameterDefinition= ruleClassifierTemplateParameterDefinition EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getClassifierTemplateParameterDefinitionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleClassifierTemplateParameterDefinition=ruleClassifierTemplateParameterDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleClassifierTemplateParameterDefinition; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleClassifierTemplateParameterDefinition"


    // $ANTLR start "ruleClassifierTemplateParameterDefinition"
    // InternalAlf.g:1503:1: ruleClassifierTemplateParameterDefinition returns [EObject current=null] : ( ( (lv_name_0_0= ruleName ) ) (otherlv_1= 'specializes' ( (lv_specialization_2_0= ruleTemplateParameterConstraint ) ) )? ) ;
    public final EObject ruleClassifierTemplateParameterDefinition() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        AntlrDatatypeRuleToken lv_name_0_0 = null;

        EObject lv_specialization_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:1506:28: ( ( ( (lv_name_0_0= ruleName ) ) (otherlv_1= 'specializes' ( (lv_specialization_2_0= ruleTemplateParameterConstraint ) ) )? ) )
            // InternalAlf.g:1507:1: ( ( (lv_name_0_0= ruleName ) ) (otherlv_1= 'specializes' ( (lv_specialization_2_0= ruleTemplateParameterConstraint ) ) )? )
            {
            // InternalAlf.g:1507:1: ( ( (lv_name_0_0= ruleName ) ) (otherlv_1= 'specializes' ( (lv_specialization_2_0= ruleTemplateParameterConstraint ) ) )? )
            // InternalAlf.g:1507:2: ( (lv_name_0_0= ruleName ) ) (otherlv_1= 'specializes' ( (lv_specialization_2_0= ruleTemplateParameterConstraint ) ) )?
            {
            // InternalAlf.g:1507:2: ( (lv_name_0_0= ruleName ) )
            // InternalAlf.g:1508:1: (lv_name_0_0= ruleName )
            {
            // InternalAlf.g:1508:1: (lv_name_0_0= ruleName )
            // InternalAlf.g:1509:3: lv_name_0_0= ruleName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getClassifierTemplateParameterDefinitionAccess().getNameNameParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_22);
            lv_name_0_0=ruleName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getClassifierTemplateParameterDefinitionRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Name");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:1525:2: (otherlv_1= 'specializes' ( (lv_specialization_2_0= ruleTemplateParameterConstraint ) ) )?
            int alt27=2;
            int LA27_0 = input.LA(1);

            if ( (LA27_0==33) ) {
                alt27=1;
            }
            switch (alt27) {
                case 1 :
                    // InternalAlf.g:1525:4: otherlv_1= 'specializes' ( (lv_specialization_2_0= ruleTemplateParameterConstraint ) )
                    {
                    otherlv_1=(Token)match(input,33,FOLLOW_4); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getClassifierTemplateParameterDefinitionAccess().getSpecializesKeyword_1_0());
                          
                    }
                    // InternalAlf.g:1529:1: ( (lv_specialization_2_0= ruleTemplateParameterConstraint ) )
                    // InternalAlf.g:1530:1: (lv_specialization_2_0= ruleTemplateParameterConstraint )
                    {
                    // InternalAlf.g:1530:1: (lv_specialization_2_0= ruleTemplateParameterConstraint )
                    // InternalAlf.g:1531:3: lv_specialization_2_0= ruleTemplateParameterConstraint
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getClassifierTemplateParameterDefinitionAccess().getSpecializationTemplateParameterConstraintParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_specialization_2_0=ruleTemplateParameterConstraint();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getClassifierTemplateParameterDefinitionRule());
                      	        }
                             		set(
                             			current, 
                             			"specialization",
                              		lv_specialization_2_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.TemplateParameterConstraint");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleClassifierTemplateParameterDefinition"


    // $ANTLR start "entryRuleTemplateParameterConstraint"
    // InternalAlf.g:1555:1: entryRuleTemplateParameterConstraint returns [EObject current=null] : iv_ruleTemplateParameterConstraint= ruleTemplateParameterConstraint EOF ;
    public final EObject entryRuleTemplateParameterConstraint() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTemplateParameterConstraint = null;


        try {
            // InternalAlf.g:1556:2: (iv_ruleTemplateParameterConstraint= ruleTemplateParameterConstraint EOF )
            // InternalAlf.g:1557:2: iv_ruleTemplateParameterConstraint= ruleTemplateParameterConstraint EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTemplateParameterConstraintRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleTemplateParameterConstraint=ruleTemplateParameterConstraint();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTemplateParameterConstraint; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTemplateParameterConstraint"


    // $ANTLR start "ruleTemplateParameterConstraint"
    // InternalAlf.g:1564:1: ruleTemplateParameterConstraint returns [EObject current=null] : ( (lv_name_0_0= ruleQualifiedName ) ) ;
    public final EObject ruleTemplateParameterConstraint() throws RecognitionException {
        EObject current = null;

        EObject lv_name_0_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:1567:28: ( ( (lv_name_0_0= ruleQualifiedName ) ) )
            // InternalAlf.g:1568:1: ( (lv_name_0_0= ruleQualifiedName ) )
            {
            // InternalAlf.g:1568:1: ( (lv_name_0_0= ruleQualifiedName ) )
            // InternalAlf.g:1569:1: (lv_name_0_0= ruleQualifiedName )
            {
            // InternalAlf.g:1569:1: (lv_name_0_0= ruleQualifiedName )
            // InternalAlf.g:1570:3: lv_name_0_0= ruleQualifiedName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getTemplateParameterConstraintAccess().getNameQualifiedNameParserRuleCall_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_name_0_0=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getTemplateParameterConstraintRule());
              	        }
                     		add(
                     			current, 
                     			"name",
                      		lv_name_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.QualifiedName");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTemplateParameterConstraint"


    // $ANTLR start "entryRuleSpecializationClause"
    // InternalAlf.g:1594:1: entryRuleSpecializationClause returns [EObject current=null] : iv_ruleSpecializationClause= ruleSpecializationClause EOF ;
    public final EObject entryRuleSpecializationClause() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSpecializationClause = null;


        try {
            // InternalAlf.g:1595:2: (iv_ruleSpecializationClause= ruleSpecializationClause EOF )
            // InternalAlf.g:1596:2: iv_ruleSpecializationClause= ruleSpecializationClause EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSpecializationClauseRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSpecializationClause=ruleSpecializationClause();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSpecializationClause; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSpecializationClause"


    // $ANTLR start "ruleSpecializationClause"
    // InternalAlf.g:1603:1: ruleSpecializationClause returns [EObject current=null] : (otherlv_0= 'specializes' this_QualifiedNameList_1= ruleQualifiedNameList ) ;
    public final EObject ruleSpecializationClause() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject this_QualifiedNameList_1 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:1606:28: ( (otherlv_0= 'specializes' this_QualifiedNameList_1= ruleQualifiedNameList ) )
            // InternalAlf.g:1607:1: (otherlv_0= 'specializes' this_QualifiedNameList_1= ruleQualifiedNameList )
            {
            // InternalAlf.g:1607:1: (otherlv_0= 'specializes' this_QualifiedNameList_1= ruleQualifiedNameList )
            // InternalAlf.g:1607:3: otherlv_0= 'specializes' this_QualifiedNameList_1= ruleQualifiedNameList
            {
            otherlv_0=(Token)match(input,33,FOLLOW_4); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getSpecializationClauseAccess().getSpecializesKeyword_0());
                  
            }
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getSpecializationClauseAccess().getQualifiedNameListParserRuleCall_1()); 
                  
            }
            pushFollow(FOLLOW_2);
            this_QualifiedNameList_1=ruleQualifiedNameList();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_QualifiedNameList_1; 
                      afterParserOrEnumRuleCall();
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSpecializationClause"


    // $ANTLR start "entryRuleClassDeclaration"
    // InternalAlf.g:1631:1: entryRuleClassDeclaration returns [EObject current=null] : iv_ruleClassDeclaration= ruleClassDeclaration EOF ;
    public final EObject entryRuleClassDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleClassDeclaration = null;


        try {
            // InternalAlf.g:1632:2: (iv_ruleClassDeclaration= ruleClassDeclaration EOF )
            // InternalAlf.g:1633:2: iv_ruleClassDeclaration= ruleClassDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getClassDeclarationRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleClassDeclaration=ruleClassDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleClassDeclaration; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleClassDeclaration"


    // $ANTLR start "ruleClassDeclaration"
    // InternalAlf.g:1640:1: ruleClassDeclaration returns [EObject current=null] : ( ( (lv_isAbstract_0_0= 'abstract' ) )? otherlv_1= 'class' ( (lv_name_2_0= ruleName ) ) (otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>' )? ( (lv_specialization_8_0= ruleSpecializationClause ) )? ) ;
    public final EObject ruleClassDeclaration() throws RecognitionException {
        EObject current = null;

        Token lv_isAbstract_0_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        AntlrDatatypeRuleToken lv_name_2_0 = null;

        EObject lv_ownedMember_4_0 = null;

        EObject lv_ownedMember_6_0 = null;

        EObject lv_specialization_8_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:1643:28: ( ( ( (lv_isAbstract_0_0= 'abstract' ) )? otherlv_1= 'class' ( (lv_name_2_0= ruleName ) ) (otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>' )? ( (lv_specialization_8_0= ruleSpecializationClause ) )? ) )
            // InternalAlf.g:1644:1: ( ( (lv_isAbstract_0_0= 'abstract' ) )? otherlv_1= 'class' ( (lv_name_2_0= ruleName ) ) (otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>' )? ( (lv_specialization_8_0= ruleSpecializationClause ) )? )
            {
            // InternalAlf.g:1644:1: ( ( (lv_isAbstract_0_0= 'abstract' ) )? otherlv_1= 'class' ( (lv_name_2_0= ruleName ) ) (otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>' )? ( (lv_specialization_8_0= ruleSpecializationClause ) )? )
            // InternalAlf.g:1644:2: ( (lv_isAbstract_0_0= 'abstract' ) )? otherlv_1= 'class' ( (lv_name_2_0= ruleName ) ) (otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>' )? ( (lv_specialization_8_0= ruleSpecializationClause ) )?
            {
            // InternalAlf.g:1644:2: ( (lv_isAbstract_0_0= 'abstract' ) )?
            int alt28=2;
            int LA28_0 = input.LA(1);

            if ( (LA28_0==34) ) {
                alt28=1;
            }
            switch (alt28) {
                case 1 :
                    // InternalAlf.g:1645:1: (lv_isAbstract_0_0= 'abstract' )
                    {
                    // InternalAlf.g:1645:1: (lv_isAbstract_0_0= 'abstract' )
                    // InternalAlf.g:1646:3: lv_isAbstract_0_0= 'abstract'
                    {
                    lv_isAbstract_0_0=(Token)match(input,34,FOLLOW_23); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_isAbstract_0_0, grammarAccess.getClassDeclarationAccess().getIsAbstractAbstractKeyword_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getClassDeclarationRule());
                      	        }
                             		setWithLastConsumed(current, "isAbstract", true, "abstract");
                      	    
                    }

                    }


                    }
                    break;

            }

            otherlv_1=(Token)match(input,35,FOLLOW_4); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getClassDeclarationAccess().getClassKeyword_1());
                  
            }
            // InternalAlf.g:1663:1: ( (lv_name_2_0= ruleName ) )
            // InternalAlf.g:1664:1: (lv_name_2_0= ruleName )
            {
            // InternalAlf.g:1664:1: (lv_name_2_0= ruleName )
            // InternalAlf.g:1665:3: lv_name_2_0= ruleName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getClassDeclarationAccess().getNameNameParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_24);
            lv_name_2_0=ruleName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getClassDeclarationRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_2_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Name");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:1681:2: (otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>' )?
            int alt30=2;
            int LA30_0 = input.LA(1);

            if ( (LA30_0==36) ) {
                alt30=1;
            }
            switch (alt30) {
                case 1 :
                    // InternalAlf.g:1681:4: otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>'
                    {
                    otherlv_3=(Token)match(input,36,FOLLOW_25); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getClassDeclarationAccess().getLessThanSignKeyword_3_0());
                          
                    }
                    // InternalAlf.g:1685:1: ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) )
                    // InternalAlf.g:1686:1: (lv_ownedMember_4_0= ruleClassifierTemplateParameter )
                    {
                    // InternalAlf.g:1686:1: (lv_ownedMember_4_0= ruleClassifierTemplateParameter )
                    // InternalAlf.g:1687:3: lv_ownedMember_4_0= ruleClassifierTemplateParameter
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getClassDeclarationAccess().getOwnedMemberClassifierTemplateParameterParserRuleCall_3_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_26);
                    lv_ownedMember_4_0=ruleClassifierTemplateParameter();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getClassDeclarationRule());
                      	        }
                             		add(
                             			current, 
                             			"ownedMember",
                              		lv_ownedMember_4_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.ClassifierTemplateParameter");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // InternalAlf.g:1703:2: (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )*
                    loop29:
                    do {
                        int alt29=2;
                        int LA29_0 = input.LA(1);

                        if ( (LA29_0==18) ) {
                            alt29=1;
                        }


                        switch (alt29) {
                    	case 1 :
                    	    // InternalAlf.g:1703:4: otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) )
                    	    {
                    	    otherlv_5=(Token)match(input,18,FOLLOW_25); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_5, grammarAccess.getClassDeclarationAccess().getCommaKeyword_3_2_0());
                    	          
                    	    }
                    	    // InternalAlf.g:1707:1: ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) )
                    	    // InternalAlf.g:1708:1: (lv_ownedMember_6_0= ruleClassifierTemplateParameter )
                    	    {
                    	    // InternalAlf.g:1708:1: (lv_ownedMember_6_0= ruleClassifierTemplateParameter )
                    	    // InternalAlf.g:1709:3: lv_ownedMember_6_0= ruleClassifierTemplateParameter
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getClassDeclarationAccess().getOwnedMemberClassifierTemplateParameterParserRuleCall_3_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_26);
                    	    lv_ownedMember_6_0=ruleClassifierTemplateParameter();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getClassDeclarationRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"ownedMember",
                    	              		lv_ownedMember_6_0, 
                    	              		"org.eclipse.papyrus.uml.alf.Alf.ClassifierTemplateParameter");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop29;
                        }
                    } while (true);

                    otherlv_7=(Token)match(input,37,FOLLOW_22); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_7, grammarAccess.getClassDeclarationAccess().getGreaterThanSignKeyword_3_3());
                          
                    }

                    }
                    break;

            }

            // InternalAlf.g:1729:3: ( (lv_specialization_8_0= ruleSpecializationClause ) )?
            int alt31=2;
            int LA31_0 = input.LA(1);

            if ( (LA31_0==33) ) {
                alt31=1;
            }
            switch (alt31) {
                case 1 :
                    // InternalAlf.g:1730:1: (lv_specialization_8_0= ruleSpecializationClause )
                    {
                    // InternalAlf.g:1730:1: (lv_specialization_8_0= ruleSpecializationClause )
                    // InternalAlf.g:1731:3: lv_specialization_8_0= ruleSpecializationClause
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getClassDeclarationAccess().getSpecializationSpecializationClauseParserRuleCall_4_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_specialization_8_0=ruleSpecializationClause();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getClassDeclarationRule());
                      	        }
                             		set(
                             			current, 
                             			"specialization",
                              		lv_specialization_8_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.SpecializationClause");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleClassDeclaration"


    // $ANTLR start "entryRuleClassDefinition"
    // InternalAlf.g:1755:1: entryRuleClassDefinition returns [EObject current=null] : iv_ruleClassDefinition= ruleClassDefinition EOF ;
    public final EObject entryRuleClassDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleClassDefinition = null;


        try {
            // InternalAlf.g:1756:2: (iv_ruleClassDefinition= ruleClassDefinition EOF )
            // InternalAlf.g:1757:2: iv_ruleClassDefinition= ruleClassDefinition EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getClassDefinitionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleClassDefinition=ruleClassDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleClassDefinition; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleClassDefinition"


    // $ANTLR start "ruleClassDefinition"
    // InternalAlf.g:1764:1: ruleClassDefinition returns [EObject current=null] : (this_ClassDeclaration_0= ruleClassDeclaration otherlv_1= '{' ( (lv_ownedMember_2_0= ruleClassMember ) )* otherlv_3= '}' ) ;
    public final EObject ruleClassDefinition() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject this_ClassDeclaration_0 = null;

        EObject lv_ownedMember_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:1767:28: ( (this_ClassDeclaration_0= ruleClassDeclaration otherlv_1= '{' ( (lv_ownedMember_2_0= ruleClassMember ) )* otherlv_3= '}' ) )
            // InternalAlf.g:1768:1: (this_ClassDeclaration_0= ruleClassDeclaration otherlv_1= '{' ( (lv_ownedMember_2_0= ruleClassMember ) )* otherlv_3= '}' )
            {
            // InternalAlf.g:1768:1: (this_ClassDeclaration_0= ruleClassDeclaration otherlv_1= '{' ( (lv_ownedMember_2_0= ruleClassMember ) )* otherlv_3= '}' )
            // InternalAlf.g:1769:2: this_ClassDeclaration_0= ruleClassDeclaration otherlv_1= '{' ( (lv_ownedMember_2_0= ruleClassMember ) )* otherlv_3= '}'
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getClassDefinitionAccess().getClassDeclarationParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_18);
            this_ClassDeclaration_0=ruleClassDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_ClassDeclaration_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            otherlv_1=(Token)match(input,31,FOLLOW_27); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getClassDefinitionAccess().getLeftCurlyBracketKeyword_1());
                  
            }
            // InternalAlf.g:1784:1: ( (lv_ownedMember_2_0= ruleClassMember ) )*
            loop32:
            do {
                int alt32=2;
                int LA32_0 = input.LA(1);

                if ( (LA32_0==RULE_DOCUMENTATION_COMMENT||(LA32_0>=RULE_ID && LA32_0<=RULE_UNRESTRICTED_NAME)||LA32_0==15||(LA32_0>=27 && LA32_0<=29)||(LA32_0>=34 && LA32_0<=35)||LA32_0==38||(LA32_0>=40 && LA32_0<=44)) ) {
                    alt32=1;
                }


                switch (alt32) {
            	case 1 :
            	    // InternalAlf.g:1785:1: (lv_ownedMember_2_0= ruleClassMember )
            	    {
            	    // InternalAlf.g:1785:1: (lv_ownedMember_2_0= ruleClassMember )
            	    // InternalAlf.g:1786:3: lv_ownedMember_2_0= ruleClassMember
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getClassDefinitionAccess().getOwnedMemberClassMemberParserRuleCall_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_27);
            	    lv_ownedMember_2_0=ruleClassMember();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getClassDefinitionRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"ownedMember",
            	              		lv_ownedMember_2_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.ClassMember");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop32;
                }
            } while (true);

            otherlv_3=(Token)match(input,32,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getClassDefinitionAccess().getRightCurlyBracketKeyword_3());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleClassDefinition"


    // $ANTLR start "entryRuleClassDefinitionOrStub"
    // InternalAlf.g:1814:1: entryRuleClassDefinitionOrStub returns [EObject current=null] : iv_ruleClassDefinitionOrStub= ruleClassDefinitionOrStub EOF ;
    public final EObject entryRuleClassDefinitionOrStub() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleClassDefinitionOrStub = null;


        try {
            // InternalAlf.g:1815:2: (iv_ruleClassDefinitionOrStub= ruleClassDefinitionOrStub EOF )
            // InternalAlf.g:1816:2: iv_ruleClassDefinitionOrStub= ruleClassDefinitionOrStub EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getClassDefinitionOrStubRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleClassDefinitionOrStub=ruleClassDefinitionOrStub();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleClassDefinitionOrStub; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleClassDefinitionOrStub"


    // $ANTLR start "ruleClassDefinitionOrStub"
    // InternalAlf.g:1823:1: ruleClassDefinitionOrStub returns [EObject current=null] : (this_ClassDeclaration_0= ruleClassDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleClassMember ) )* otherlv_4= '}' ) ) ) ;
    public final EObject ruleClassDefinitionOrStub() throws RecognitionException {
        EObject current = null;

        Token lv_isStub_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject this_ClassDeclaration_0 = null;

        EObject lv_ownedMember_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:1826:28: ( (this_ClassDeclaration_0= ruleClassDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleClassMember ) )* otherlv_4= '}' ) ) ) )
            // InternalAlf.g:1827:1: (this_ClassDeclaration_0= ruleClassDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleClassMember ) )* otherlv_4= '}' ) ) )
            {
            // InternalAlf.g:1827:1: (this_ClassDeclaration_0= ruleClassDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleClassMember ) )* otherlv_4= '}' ) ) )
            // InternalAlf.g:1828:2: this_ClassDeclaration_0= ruleClassDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleClassMember ) )* otherlv_4= '}' ) )
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getClassDefinitionOrStubAccess().getClassDeclarationParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_20);
            this_ClassDeclaration_0=ruleClassDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_ClassDeclaration_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:1839:1: ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleClassMember ) )* otherlv_4= '}' ) )
            int alt34=2;
            int LA34_0 = input.LA(1);

            if ( (LA34_0==22) ) {
                alt34=1;
            }
            else if ( (LA34_0==31) ) {
                alt34=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 34, 0, input);

                throw nvae;
            }
            switch (alt34) {
                case 1 :
                    // InternalAlf.g:1839:2: ( (lv_isStub_1_0= ';' ) )
                    {
                    // InternalAlf.g:1839:2: ( (lv_isStub_1_0= ';' ) )
                    // InternalAlf.g:1840:1: (lv_isStub_1_0= ';' )
                    {
                    // InternalAlf.g:1840:1: (lv_isStub_1_0= ';' )
                    // InternalAlf.g:1841:3: lv_isStub_1_0= ';'
                    {
                    lv_isStub_1_0=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_isStub_1_0, grammarAccess.getClassDefinitionOrStubAccess().getIsStubSemicolonKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getClassDefinitionOrStubRule());
                      	        }
                             		setWithLastConsumed(current, "isStub", true, ";");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalAlf.g:1855:6: (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleClassMember ) )* otherlv_4= '}' )
                    {
                    // InternalAlf.g:1855:6: (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleClassMember ) )* otherlv_4= '}' )
                    // InternalAlf.g:1855:8: otherlv_2= '{' ( (lv_ownedMember_3_0= ruleClassMember ) )* otherlv_4= '}'
                    {
                    otherlv_2=(Token)match(input,31,FOLLOW_27); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getClassDefinitionOrStubAccess().getLeftCurlyBracketKeyword_1_1_0());
                          
                    }
                    // InternalAlf.g:1859:1: ( (lv_ownedMember_3_0= ruleClassMember ) )*
                    loop33:
                    do {
                        int alt33=2;
                        int LA33_0 = input.LA(1);

                        if ( (LA33_0==RULE_DOCUMENTATION_COMMENT||(LA33_0>=RULE_ID && LA33_0<=RULE_UNRESTRICTED_NAME)||LA33_0==15||(LA33_0>=27 && LA33_0<=29)||(LA33_0>=34 && LA33_0<=35)||LA33_0==38||(LA33_0>=40 && LA33_0<=44)) ) {
                            alt33=1;
                        }


                        switch (alt33) {
                    	case 1 :
                    	    // InternalAlf.g:1860:1: (lv_ownedMember_3_0= ruleClassMember )
                    	    {
                    	    // InternalAlf.g:1860:1: (lv_ownedMember_3_0= ruleClassMember )
                    	    // InternalAlf.g:1861:3: lv_ownedMember_3_0= ruleClassMember
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getClassDefinitionOrStubAccess().getOwnedMemberClassMemberParserRuleCall_1_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_27);
                    	    lv_ownedMember_3_0=ruleClassMember();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getClassDefinitionOrStubRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"ownedMember",
                    	              		lv_ownedMember_3_0, 
                    	              		"org.eclipse.papyrus.uml.alf.Alf.ClassMember");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop33;
                        }
                    } while (true);

                    otherlv_4=(Token)match(input,32,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getClassDefinitionOrStubAccess().getRightCurlyBracketKeyword_1_1_2());
                          
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleClassDefinitionOrStub"


    // $ANTLR start "entryRuleClassMember"
    // InternalAlf.g:1889:1: entryRuleClassMember returns [EObject current=null] : iv_ruleClassMember= ruleClassMember EOF ;
    public final EObject entryRuleClassMember() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleClassMember = null;


        try {
            // InternalAlf.g:1890:2: (iv_ruleClassMember= ruleClassMember EOF )
            // InternalAlf.g:1891:2: iv_ruleClassMember= ruleClassMember EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getClassMemberRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleClassMember=ruleClassMember();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleClassMember; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleClassMember"


    // $ANTLR start "ruleClassMember"
    // InternalAlf.g:1898:1: ruleClassMember returns [EObject current=null] : ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )* ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )* ( (lv_visibility_2_0= ruleVisibilityIndicator ) )? ( (lv_definition_3_0= ruleClassMemberDefinition ) ) ) ;
    public final EObject ruleClassMember() throws RecognitionException {
        EObject current = null;

        Token lv_documentation_0_0=null;
        EObject lv_annotation_1_0 = null;

        AntlrDatatypeRuleToken lv_visibility_2_0 = null;

        EObject lv_definition_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:1901:28: ( ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )* ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )* ( (lv_visibility_2_0= ruleVisibilityIndicator ) )? ( (lv_definition_3_0= ruleClassMemberDefinition ) ) ) )
            // InternalAlf.g:1902:1: ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )* ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )* ( (lv_visibility_2_0= ruleVisibilityIndicator ) )? ( (lv_definition_3_0= ruleClassMemberDefinition ) ) )
            {
            // InternalAlf.g:1902:1: ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )* ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )* ( (lv_visibility_2_0= ruleVisibilityIndicator ) )? ( (lv_definition_3_0= ruleClassMemberDefinition ) ) )
            // InternalAlf.g:1902:2: ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )* ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )* ( (lv_visibility_2_0= ruleVisibilityIndicator ) )? ( (lv_definition_3_0= ruleClassMemberDefinition ) )
            {
            // InternalAlf.g:1902:2: ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )*
            loop35:
            do {
                int alt35=2;
                int LA35_0 = input.LA(1);

                if ( (LA35_0==RULE_DOCUMENTATION_COMMENT) ) {
                    alt35=1;
                }


                switch (alt35) {
            	case 1 :
            	    // InternalAlf.g:1903:1: (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT )
            	    {
            	    // InternalAlf.g:1903:1: (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT )
            	    // InternalAlf.g:1904:3: lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT
            	    {
            	    lv_documentation_0_0=(Token)match(input,RULE_DOCUMENTATION_COMMENT,FOLLOW_28); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      			newLeafNode(lv_documentation_0_0, grammarAccess.getClassMemberAccess().getDocumentationDOCUMENTATION_COMMENTTerminalRuleCall_0_0()); 
            	      		
            	    }
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElement(grammarAccess.getClassMemberRule());
            	      	        }
            	             		addWithLastConsumed(
            	             			current, 
            	             			"documentation",
            	              		lv_documentation_0_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.DOCUMENTATION_COMMENT");
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop35;
                }
            } while (true);

            // InternalAlf.g:1920:3: ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )*
            loop36:
            do {
                int alt36=2;
                int LA36_0 = input.LA(1);

                if ( (LA36_0==15) ) {
                    alt36=1;
                }


                switch (alt36) {
            	case 1 :
            	    // InternalAlf.g:1921:1: (lv_annotation_1_0= ruleStereotypeAnnotation )
            	    {
            	    // InternalAlf.g:1921:1: (lv_annotation_1_0= ruleStereotypeAnnotation )
            	    // InternalAlf.g:1922:3: lv_annotation_1_0= ruleStereotypeAnnotation
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getClassMemberAccess().getAnnotationStereotypeAnnotationParserRuleCall_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_28);
            	    lv_annotation_1_0=ruleStereotypeAnnotation();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getClassMemberRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"annotation",
            	              		lv_annotation_1_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.StereotypeAnnotation");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop36;
                }
            } while (true);

            // InternalAlf.g:1938:3: ( (lv_visibility_2_0= ruleVisibilityIndicator ) )?
            int alt37=2;
            int LA37_0 = input.LA(1);

            if ( ((LA37_0>=27 && LA37_0<=29)) ) {
                alt37=1;
            }
            switch (alt37) {
                case 1 :
                    // InternalAlf.g:1939:1: (lv_visibility_2_0= ruleVisibilityIndicator )
                    {
                    // InternalAlf.g:1939:1: (lv_visibility_2_0= ruleVisibilityIndicator )
                    // InternalAlf.g:1940:3: lv_visibility_2_0= ruleVisibilityIndicator
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getClassMemberAccess().getVisibilityVisibilityIndicatorParserRuleCall_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_28);
                    lv_visibility_2_0=ruleVisibilityIndicator();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getClassMemberRule());
                      	        }
                             		set(
                             			current, 
                             			"visibility",
                              		lv_visibility_2_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.VisibilityIndicator");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            // InternalAlf.g:1956:3: ( (lv_definition_3_0= ruleClassMemberDefinition ) )
            // InternalAlf.g:1957:1: (lv_definition_3_0= ruleClassMemberDefinition )
            {
            // InternalAlf.g:1957:1: (lv_definition_3_0= ruleClassMemberDefinition )
            // InternalAlf.g:1958:3: lv_definition_3_0= ruleClassMemberDefinition
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getClassMemberAccess().getDefinitionClassMemberDefinitionParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_definition_3_0=ruleClassMemberDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getClassMemberRule());
              	        }
                     		set(
                     			current, 
                     			"definition",
                      		lv_definition_3_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.ClassMemberDefinition");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleClassMember"


    // $ANTLR start "entryRuleClassMemberDefinition"
    // InternalAlf.g:1982:1: entryRuleClassMemberDefinition returns [EObject current=null] : iv_ruleClassMemberDefinition= ruleClassMemberDefinition EOF ;
    public final EObject entryRuleClassMemberDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleClassMemberDefinition = null;


        try {
            // InternalAlf.g:1983:2: (iv_ruleClassMemberDefinition= ruleClassMemberDefinition EOF )
            // InternalAlf.g:1984:2: iv_ruleClassMemberDefinition= ruleClassMemberDefinition EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getClassMemberDefinitionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleClassMemberDefinition=ruleClassMemberDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleClassMemberDefinition; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleClassMemberDefinition"


    // $ANTLR start "ruleClassMemberDefinition"
    // InternalAlf.g:1991:1: ruleClassMemberDefinition returns [EObject current=null] : (this_ClassifierDefinitionOrStub_0= ruleClassifierDefinitionOrStub | this_FeatureDefinitionOrStub_1= ruleFeatureDefinitionOrStub ) ;
    public final EObject ruleClassMemberDefinition() throws RecognitionException {
        EObject current = null;

        EObject this_ClassifierDefinitionOrStub_0 = null;

        EObject this_FeatureDefinitionOrStub_1 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:1994:28: ( (this_ClassifierDefinitionOrStub_0= ruleClassifierDefinitionOrStub | this_FeatureDefinitionOrStub_1= ruleFeatureDefinitionOrStub ) )
            // InternalAlf.g:1995:1: (this_ClassifierDefinitionOrStub_0= ruleClassifierDefinitionOrStub | this_FeatureDefinitionOrStub_1= ruleFeatureDefinitionOrStub )
            {
            // InternalAlf.g:1995:1: (this_ClassifierDefinitionOrStub_0= ruleClassifierDefinitionOrStub | this_FeatureDefinitionOrStub_1= ruleFeatureDefinitionOrStub )
            int alt38=2;
            switch ( input.LA(1) ) {
            case 34:
                {
                int LA38_1 = input.LA(2);

                if ( (LA38_1==35||LA38_1==38||(LA38_1>=40 && LA38_1<=41)||LA38_1==43) ) {
                    alt38=1;
                }
                else if ( ((LA38_1>=RULE_ID && LA38_1<=RULE_UNRESTRICTED_NAME)) ) {
                    alt38=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 38, 1, input);

                    throw nvae;
                }
                }
                break;
            case 35:
            case 38:
            case 40:
            case 41:
            case 42:
            case 43:
            case 44:
                {
                alt38=1;
                }
                break;
            case RULE_ID:
            case RULE_UNRESTRICTED_NAME:
                {
                alt38=2;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 38, 0, input);

                throw nvae;
            }

            switch (alt38) {
                case 1 :
                    // InternalAlf.g:1996:2: this_ClassifierDefinitionOrStub_0= ruleClassifierDefinitionOrStub
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getClassMemberDefinitionAccess().getClassifierDefinitionOrStubParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_ClassifierDefinitionOrStub_0=ruleClassifierDefinitionOrStub();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ClassifierDefinitionOrStub_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:2009:2: this_FeatureDefinitionOrStub_1= ruleFeatureDefinitionOrStub
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getClassMemberDefinitionAccess().getFeatureDefinitionOrStubParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_FeatureDefinitionOrStub_1=ruleFeatureDefinitionOrStub();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_FeatureDefinitionOrStub_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleClassMemberDefinition"


    // $ANTLR start "entryRuleActiveClassDeclaration"
    // InternalAlf.g:2028:1: entryRuleActiveClassDeclaration returns [EObject current=null] : iv_ruleActiveClassDeclaration= ruleActiveClassDeclaration EOF ;
    public final EObject entryRuleActiveClassDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleActiveClassDeclaration = null;


        try {
            // InternalAlf.g:2029:2: (iv_ruleActiveClassDeclaration= ruleActiveClassDeclaration EOF )
            // InternalAlf.g:2030:2: iv_ruleActiveClassDeclaration= ruleActiveClassDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getActiveClassDeclarationRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleActiveClassDeclaration=ruleActiveClassDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleActiveClassDeclaration; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleActiveClassDeclaration"


    // $ANTLR start "ruleActiveClassDeclaration"
    // InternalAlf.g:2037:1: ruleActiveClassDeclaration returns [EObject current=null] : ( ( (lv_isAbstract_0_0= 'abstract' ) )? otherlv_1= 'active' otherlv_2= 'class' ( (lv_name_3_0= ruleName ) ) (otherlv_4= '<' ( (lv_ownedMember_5_0= ruleClassifierTemplateParameter ) ) (otherlv_6= ',' ( (lv_ownedMember_7_0= ruleClassifierTemplateParameter ) ) )* otherlv_8= '>' )? ( (lv_specialization_9_0= ruleSpecializationClause ) )? ) ;
    public final EObject ruleActiveClassDeclaration() throws RecognitionException {
        EObject current = null;

        Token lv_isAbstract_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        AntlrDatatypeRuleToken lv_name_3_0 = null;

        EObject lv_ownedMember_5_0 = null;

        EObject lv_ownedMember_7_0 = null;

        EObject lv_specialization_9_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:2040:28: ( ( ( (lv_isAbstract_0_0= 'abstract' ) )? otherlv_1= 'active' otherlv_2= 'class' ( (lv_name_3_0= ruleName ) ) (otherlv_4= '<' ( (lv_ownedMember_5_0= ruleClassifierTemplateParameter ) ) (otherlv_6= ',' ( (lv_ownedMember_7_0= ruleClassifierTemplateParameter ) ) )* otherlv_8= '>' )? ( (lv_specialization_9_0= ruleSpecializationClause ) )? ) )
            // InternalAlf.g:2041:1: ( ( (lv_isAbstract_0_0= 'abstract' ) )? otherlv_1= 'active' otherlv_2= 'class' ( (lv_name_3_0= ruleName ) ) (otherlv_4= '<' ( (lv_ownedMember_5_0= ruleClassifierTemplateParameter ) ) (otherlv_6= ',' ( (lv_ownedMember_7_0= ruleClassifierTemplateParameter ) ) )* otherlv_8= '>' )? ( (lv_specialization_9_0= ruleSpecializationClause ) )? )
            {
            // InternalAlf.g:2041:1: ( ( (lv_isAbstract_0_0= 'abstract' ) )? otherlv_1= 'active' otherlv_2= 'class' ( (lv_name_3_0= ruleName ) ) (otherlv_4= '<' ( (lv_ownedMember_5_0= ruleClassifierTemplateParameter ) ) (otherlv_6= ',' ( (lv_ownedMember_7_0= ruleClassifierTemplateParameter ) ) )* otherlv_8= '>' )? ( (lv_specialization_9_0= ruleSpecializationClause ) )? )
            // InternalAlf.g:2041:2: ( (lv_isAbstract_0_0= 'abstract' ) )? otherlv_1= 'active' otherlv_2= 'class' ( (lv_name_3_0= ruleName ) ) (otherlv_4= '<' ( (lv_ownedMember_5_0= ruleClassifierTemplateParameter ) ) (otherlv_6= ',' ( (lv_ownedMember_7_0= ruleClassifierTemplateParameter ) ) )* otherlv_8= '>' )? ( (lv_specialization_9_0= ruleSpecializationClause ) )?
            {
            // InternalAlf.g:2041:2: ( (lv_isAbstract_0_0= 'abstract' ) )?
            int alt39=2;
            int LA39_0 = input.LA(1);

            if ( (LA39_0==34) ) {
                alt39=1;
            }
            switch (alt39) {
                case 1 :
                    // InternalAlf.g:2042:1: (lv_isAbstract_0_0= 'abstract' )
                    {
                    // InternalAlf.g:2042:1: (lv_isAbstract_0_0= 'abstract' )
                    // InternalAlf.g:2043:3: lv_isAbstract_0_0= 'abstract'
                    {
                    lv_isAbstract_0_0=(Token)match(input,34,FOLLOW_29); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_isAbstract_0_0, grammarAccess.getActiveClassDeclarationAccess().getIsAbstractAbstractKeyword_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getActiveClassDeclarationRule());
                      	        }
                             		setWithLastConsumed(current, "isAbstract", true, "abstract");
                      	    
                    }

                    }


                    }
                    break;

            }

            otherlv_1=(Token)match(input,38,FOLLOW_23); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getActiveClassDeclarationAccess().getActiveKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,35,FOLLOW_4); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getActiveClassDeclarationAccess().getClassKeyword_2());
                  
            }
            // InternalAlf.g:2064:1: ( (lv_name_3_0= ruleName ) )
            // InternalAlf.g:2065:1: (lv_name_3_0= ruleName )
            {
            // InternalAlf.g:2065:1: (lv_name_3_0= ruleName )
            // InternalAlf.g:2066:3: lv_name_3_0= ruleName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getActiveClassDeclarationAccess().getNameNameParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_24);
            lv_name_3_0=ruleName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getActiveClassDeclarationRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_3_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Name");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:2082:2: (otherlv_4= '<' ( (lv_ownedMember_5_0= ruleClassifierTemplateParameter ) ) (otherlv_6= ',' ( (lv_ownedMember_7_0= ruleClassifierTemplateParameter ) ) )* otherlv_8= '>' )?
            int alt41=2;
            int LA41_0 = input.LA(1);

            if ( (LA41_0==36) ) {
                alt41=1;
            }
            switch (alt41) {
                case 1 :
                    // InternalAlf.g:2082:4: otherlv_4= '<' ( (lv_ownedMember_5_0= ruleClassifierTemplateParameter ) ) (otherlv_6= ',' ( (lv_ownedMember_7_0= ruleClassifierTemplateParameter ) ) )* otherlv_8= '>'
                    {
                    otherlv_4=(Token)match(input,36,FOLLOW_25); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getActiveClassDeclarationAccess().getLessThanSignKeyword_4_0());
                          
                    }
                    // InternalAlf.g:2086:1: ( (lv_ownedMember_5_0= ruleClassifierTemplateParameter ) )
                    // InternalAlf.g:2087:1: (lv_ownedMember_5_0= ruleClassifierTemplateParameter )
                    {
                    // InternalAlf.g:2087:1: (lv_ownedMember_5_0= ruleClassifierTemplateParameter )
                    // InternalAlf.g:2088:3: lv_ownedMember_5_0= ruleClassifierTemplateParameter
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getActiveClassDeclarationAccess().getOwnedMemberClassifierTemplateParameterParserRuleCall_4_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_26);
                    lv_ownedMember_5_0=ruleClassifierTemplateParameter();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getActiveClassDeclarationRule());
                      	        }
                             		add(
                             			current, 
                             			"ownedMember",
                              		lv_ownedMember_5_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.ClassifierTemplateParameter");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // InternalAlf.g:2104:2: (otherlv_6= ',' ( (lv_ownedMember_7_0= ruleClassifierTemplateParameter ) ) )*
                    loop40:
                    do {
                        int alt40=2;
                        int LA40_0 = input.LA(1);

                        if ( (LA40_0==18) ) {
                            alt40=1;
                        }


                        switch (alt40) {
                    	case 1 :
                    	    // InternalAlf.g:2104:4: otherlv_6= ',' ( (lv_ownedMember_7_0= ruleClassifierTemplateParameter ) )
                    	    {
                    	    otherlv_6=(Token)match(input,18,FOLLOW_25); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_6, grammarAccess.getActiveClassDeclarationAccess().getCommaKeyword_4_2_0());
                    	          
                    	    }
                    	    // InternalAlf.g:2108:1: ( (lv_ownedMember_7_0= ruleClassifierTemplateParameter ) )
                    	    // InternalAlf.g:2109:1: (lv_ownedMember_7_0= ruleClassifierTemplateParameter )
                    	    {
                    	    // InternalAlf.g:2109:1: (lv_ownedMember_7_0= ruleClassifierTemplateParameter )
                    	    // InternalAlf.g:2110:3: lv_ownedMember_7_0= ruleClassifierTemplateParameter
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getActiveClassDeclarationAccess().getOwnedMemberClassifierTemplateParameterParserRuleCall_4_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_26);
                    	    lv_ownedMember_7_0=ruleClassifierTemplateParameter();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getActiveClassDeclarationRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"ownedMember",
                    	              		lv_ownedMember_7_0, 
                    	              		"org.eclipse.papyrus.uml.alf.Alf.ClassifierTemplateParameter");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop40;
                        }
                    } while (true);

                    otherlv_8=(Token)match(input,37,FOLLOW_22); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_8, grammarAccess.getActiveClassDeclarationAccess().getGreaterThanSignKeyword_4_3());
                          
                    }

                    }
                    break;

            }

            // InternalAlf.g:2130:3: ( (lv_specialization_9_0= ruleSpecializationClause ) )?
            int alt42=2;
            int LA42_0 = input.LA(1);

            if ( (LA42_0==33) ) {
                alt42=1;
            }
            switch (alt42) {
                case 1 :
                    // InternalAlf.g:2131:1: (lv_specialization_9_0= ruleSpecializationClause )
                    {
                    // InternalAlf.g:2131:1: (lv_specialization_9_0= ruleSpecializationClause )
                    // InternalAlf.g:2132:3: lv_specialization_9_0= ruleSpecializationClause
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getActiveClassDeclarationAccess().getSpecializationSpecializationClauseParserRuleCall_5_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_specialization_9_0=ruleSpecializationClause();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getActiveClassDeclarationRule());
                      	        }
                             		set(
                             			current, 
                             			"specialization",
                              		lv_specialization_9_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.SpecializationClause");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleActiveClassDeclaration"


    // $ANTLR start "entryRuleActiveClassDefinition"
    // InternalAlf.g:2156:1: entryRuleActiveClassDefinition returns [EObject current=null] : iv_ruleActiveClassDefinition= ruleActiveClassDefinition EOF ;
    public final EObject entryRuleActiveClassDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleActiveClassDefinition = null;


        try {
            // InternalAlf.g:2157:2: (iv_ruleActiveClassDefinition= ruleActiveClassDefinition EOF )
            // InternalAlf.g:2158:2: iv_ruleActiveClassDefinition= ruleActiveClassDefinition EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getActiveClassDefinitionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleActiveClassDefinition=ruleActiveClassDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleActiveClassDefinition; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleActiveClassDefinition"


    // $ANTLR start "ruleActiveClassDefinition"
    // InternalAlf.g:2165:1: ruleActiveClassDefinition returns [EObject current=null] : (this_ActiveClassDeclaration_0= ruleActiveClassDeclaration otherlv_1= '{' ( (lv_ownedMember_2_0= ruleActiveClassMember ) )* otherlv_3= '}' (otherlv_4= 'do' ( (lv_classifierBehavior_5_0= ruleBehaviorClause ) ) )? ) ;
    public final EObject ruleActiveClassDefinition() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        EObject this_ActiveClassDeclaration_0 = null;

        EObject lv_ownedMember_2_0 = null;

        EObject lv_classifierBehavior_5_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:2168:28: ( (this_ActiveClassDeclaration_0= ruleActiveClassDeclaration otherlv_1= '{' ( (lv_ownedMember_2_0= ruleActiveClassMember ) )* otherlv_3= '}' (otherlv_4= 'do' ( (lv_classifierBehavior_5_0= ruleBehaviorClause ) ) )? ) )
            // InternalAlf.g:2169:1: (this_ActiveClassDeclaration_0= ruleActiveClassDeclaration otherlv_1= '{' ( (lv_ownedMember_2_0= ruleActiveClassMember ) )* otherlv_3= '}' (otherlv_4= 'do' ( (lv_classifierBehavior_5_0= ruleBehaviorClause ) ) )? )
            {
            // InternalAlf.g:2169:1: (this_ActiveClassDeclaration_0= ruleActiveClassDeclaration otherlv_1= '{' ( (lv_ownedMember_2_0= ruleActiveClassMember ) )* otherlv_3= '}' (otherlv_4= 'do' ( (lv_classifierBehavior_5_0= ruleBehaviorClause ) ) )? )
            // InternalAlf.g:2170:2: this_ActiveClassDeclaration_0= ruleActiveClassDeclaration otherlv_1= '{' ( (lv_ownedMember_2_0= ruleActiveClassMember ) )* otherlv_3= '}' (otherlv_4= 'do' ( (lv_classifierBehavior_5_0= ruleBehaviorClause ) ) )?
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getActiveClassDefinitionAccess().getActiveClassDeclarationParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_18);
            this_ActiveClassDeclaration_0=ruleActiveClassDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_ActiveClassDeclaration_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            otherlv_1=(Token)match(input,31,FOLLOW_30); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getActiveClassDefinitionAccess().getLeftCurlyBracketKeyword_1());
                  
            }
            // InternalAlf.g:2185:1: ( (lv_ownedMember_2_0= ruleActiveClassMember ) )*
            loop43:
            do {
                int alt43=2;
                int LA43_0 = input.LA(1);

                if ( (LA43_0==RULE_DOCUMENTATION_COMMENT||(LA43_0>=RULE_ID && LA43_0<=RULE_UNRESTRICTED_NAME)||LA43_0==15||(LA43_0>=27 && LA43_0<=29)||(LA43_0>=34 && LA43_0<=35)||LA43_0==38||(LA43_0>=40 && LA43_0<=44)||LA43_0==59) ) {
                    alt43=1;
                }


                switch (alt43) {
            	case 1 :
            	    // InternalAlf.g:2186:1: (lv_ownedMember_2_0= ruleActiveClassMember )
            	    {
            	    // InternalAlf.g:2186:1: (lv_ownedMember_2_0= ruleActiveClassMember )
            	    // InternalAlf.g:2187:3: lv_ownedMember_2_0= ruleActiveClassMember
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getActiveClassDefinitionAccess().getOwnedMemberActiveClassMemberParserRuleCall_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_30);
            	    lv_ownedMember_2_0=ruleActiveClassMember();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getActiveClassDefinitionRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"ownedMember",
            	              		lv_ownedMember_2_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.ActiveClassMember");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop43;
                }
            } while (true);

            otherlv_3=(Token)match(input,32,FOLLOW_31); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getActiveClassDefinitionAccess().getRightCurlyBracketKeyword_3());
                  
            }
            // InternalAlf.g:2207:1: (otherlv_4= 'do' ( (lv_classifierBehavior_5_0= ruleBehaviorClause ) ) )?
            int alt44=2;
            int LA44_0 = input.LA(1);

            if ( (LA44_0==39) ) {
                alt44=1;
            }
            switch (alt44) {
                case 1 :
                    // InternalAlf.g:2207:3: otherlv_4= 'do' ( (lv_classifierBehavior_5_0= ruleBehaviorClause ) )
                    {
                    otherlv_4=(Token)match(input,39,FOLLOW_32); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getActiveClassDefinitionAccess().getDoKeyword_4_0());
                          
                    }
                    // InternalAlf.g:2211:1: ( (lv_classifierBehavior_5_0= ruleBehaviorClause ) )
                    // InternalAlf.g:2212:1: (lv_classifierBehavior_5_0= ruleBehaviorClause )
                    {
                    // InternalAlf.g:2212:1: (lv_classifierBehavior_5_0= ruleBehaviorClause )
                    // InternalAlf.g:2213:3: lv_classifierBehavior_5_0= ruleBehaviorClause
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getActiveClassDefinitionAccess().getClassifierBehaviorBehaviorClauseParserRuleCall_4_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_classifierBehavior_5_0=ruleBehaviorClause();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getActiveClassDefinitionRule());
                      	        }
                             		set(
                             			current, 
                             			"classifierBehavior",
                              		lv_classifierBehavior_5_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.BehaviorClause");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleActiveClassDefinition"


    // $ANTLR start "entryRuleActiveClassDefinitionOrStub"
    // InternalAlf.g:2237:1: entryRuleActiveClassDefinitionOrStub returns [EObject current=null] : iv_ruleActiveClassDefinitionOrStub= ruleActiveClassDefinitionOrStub EOF ;
    public final EObject entryRuleActiveClassDefinitionOrStub() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleActiveClassDefinitionOrStub = null;


        try {
            // InternalAlf.g:2238:2: (iv_ruleActiveClassDefinitionOrStub= ruleActiveClassDefinitionOrStub EOF )
            // InternalAlf.g:2239:2: iv_ruleActiveClassDefinitionOrStub= ruleActiveClassDefinitionOrStub EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getActiveClassDefinitionOrStubRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleActiveClassDefinitionOrStub=ruleActiveClassDefinitionOrStub();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleActiveClassDefinitionOrStub; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleActiveClassDefinitionOrStub"


    // $ANTLR start "ruleActiveClassDefinitionOrStub"
    // InternalAlf.g:2246:1: ruleActiveClassDefinitionOrStub returns [EObject current=null] : (this_ActiveClassDeclaration_0= ruleActiveClassDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleActiveClassMember ) )* otherlv_4= '}' (otherlv_5= 'do' ( (lv_classifierBehavior_6_0= ruleBehaviorClause ) ) )? ) ) ) ;
    public final EObject ruleActiveClassDefinitionOrStub() throws RecognitionException {
        EObject current = null;

        Token lv_isStub_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        EObject this_ActiveClassDeclaration_0 = null;

        EObject lv_ownedMember_3_0 = null;

        EObject lv_classifierBehavior_6_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:2249:28: ( (this_ActiveClassDeclaration_0= ruleActiveClassDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleActiveClassMember ) )* otherlv_4= '}' (otherlv_5= 'do' ( (lv_classifierBehavior_6_0= ruleBehaviorClause ) ) )? ) ) ) )
            // InternalAlf.g:2250:1: (this_ActiveClassDeclaration_0= ruleActiveClassDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleActiveClassMember ) )* otherlv_4= '}' (otherlv_5= 'do' ( (lv_classifierBehavior_6_0= ruleBehaviorClause ) ) )? ) ) )
            {
            // InternalAlf.g:2250:1: (this_ActiveClassDeclaration_0= ruleActiveClassDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleActiveClassMember ) )* otherlv_4= '}' (otherlv_5= 'do' ( (lv_classifierBehavior_6_0= ruleBehaviorClause ) ) )? ) ) )
            // InternalAlf.g:2251:2: this_ActiveClassDeclaration_0= ruleActiveClassDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleActiveClassMember ) )* otherlv_4= '}' (otherlv_5= 'do' ( (lv_classifierBehavior_6_0= ruleBehaviorClause ) ) )? ) )
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getActiveClassDefinitionOrStubAccess().getActiveClassDeclarationParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_20);
            this_ActiveClassDeclaration_0=ruleActiveClassDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_ActiveClassDeclaration_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:2262:1: ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleActiveClassMember ) )* otherlv_4= '}' (otherlv_5= 'do' ( (lv_classifierBehavior_6_0= ruleBehaviorClause ) ) )? ) )
            int alt47=2;
            int LA47_0 = input.LA(1);

            if ( (LA47_0==22) ) {
                alt47=1;
            }
            else if ( (LA47_0==31) ) {
                alt47=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 47, 0, input);

                throw nvae;
            }
            switch (alt47) {
                case 1 :
                    // InternalAlf.g:2262:2: ( (lv_isStub_1_0= ';' ) )
                    {
                    // InternalAlf.g:2262:2: ( (lv_isStub_1_0= ';' ) )
                    // InternalAlf.g:2263:1: (lv_isStub_1_0= ';' )
                    {
                    // InternalAlf.g:2263:1: (lv_isStub_1_0= ';' )
                    // InternalAlf.g:2264:3: lv_isStub_1_0= ';'
                    {
                    lv_isStub_1_0=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_isStub_1_0, grammarAccess.getActiveClassDefinitionOrStubAccess().getIsStubSemicolonKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getActiveClassDefinitionOrStubRule());
                      	        }
                             		setWithLastConsumed(current, "isStub", true, ";");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalAlf.g:2278:6: (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleActiveClassMember ) )* otherlv_4= '}' (otherlv_5= 'do' ( (lv_classifierBehavior_6_0= ruleBehaviorClause ) ) )? )
                    {
                    // InternalAlf.g:2278:6: (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleActiveClassMember ) )* otherlv_4= '}' (otherlv_5= 'do' ( (lv_classifierBehavior_6_0= ruleBehaviorClause ) ) )? )
                    // InternalAlf.g:2278:8: otherlv_2= '{' ( (lv_ownedMember_3_0= ruleActiveClassMember ) )* otherlv_4= '}' (otherlv_5= 'do' ( (lv_classifierBehavior_6_0= ruleBehaviorClause ) ) )?
                    {
                    otherlv_2=(Token)match(input,31,FOLLOW_30); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getActiveClassDefinitionOrStubAccess().getLeftCurlyBracketKeyword_1_1_0());
                          
                    }
                    // InternalAlf.g:2282:1: ( (lv_ownedMember_3_0= ruleActiveClassMember ) )*
                    loop45:
                    do {
                        int alt45=2;
                        int LA45_0 = input.LA(1);

                        if ( (LA45_0==RULE_DOCUMENTATION_COMMENT||(LA45_0>=RULE_ID && LA45_0<=RULE_UNRESTRICTED_NAME)||LA45_0==15||(LA45_0>=27 && LA45_0<=29)||(LA45_0>=34 && LA45_0<=35)||LA45_0==38||(LA45_0>=40 && LA45_0<=44)||LA45_0==59) ) {
                            alt45=1;
                        }


                        switch (alt45) {
                    	case 1 :
                    	    // InternalAlf.g:2283:1: (lv_ownedMember_3_0= ruleActiveClassMember )
                    	    {
                    	    // InternalAlf.g:2283:1: (lv_ownedMember_3_0= ruleActiveClassMember )
                    	    // InternalAlf.g:2284:3: lv_ownedMember_3_0= ruleActiveClassMember
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getActiveClassDefinitionOrStubAccess().getOwnedMemberActiveClassMemberParserRuleCall_1_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_30);
                    	    lv_ownedMember_3_0=ruleActiveClassMember();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getActiveClassDefinitionOrStubRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"ownedMember",
                    	              		lv_ownedMember_3_0, 
                    	              		"org.eclipse.papyrus.uml.alf.Alf.ActiveClassMember");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop45;
                        }
                    } while (true);

                    otherlv_4=(Token)match(input,32,FOLLOW_31); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getActiveClassDefinitionOrStubAccess().getRightCurlyBracketKeyword_1_1_2());
                          
                    }
                    // InternalAlf.g:2304:1: (otherlv_5= 'do' ( (lv_classifierBehavior_6_0= ruleBehaviorClause ) ) )?
                    int alt46=2;
                    int LA46_0 = input.LA(1);

                    if ( (LA46_0==39) ) {
                        alt46=1;
                    }
                    switch (alt46) {
                        case 1 :
                            // InternalAlf.g:2304:3: otherlv_5= 'do' ( (lv_classifierBehavior_6_0= ruleBehaviorClause ) )
                            {
                            otherlv_5=(Token)match(input,39,FOLLOW_32); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_5, grammarAccess.getActiveClassDefinitionOrStubAccess().getDoKeyword_1_1_3_0());
                                  
                            }
                            // InternalAlf.g:2308:1: ( (lv_classifierBehavior_6_0= ruleBehaviorClause ) )
                            // InternalAlf.g:2309:1: (lv_classifierBehavior_6_0= ruleBehaviorClause )
                            {
                            // InternalAlf.g:2309:1: (lv_classifierBehavior_6_0= ruleBehaviorClause )
                            // InternalAlf.g:2310:3: lv_classifierBehavior_6_0= ruleBehaviorClause
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getActiveClassDefinitionOrStubAccess().getClassifierBehaviorBehaviorClauseParserRuleCall_1_1_3_1_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_2);
                            lv_classifierBehavior_6_0=ruleBehaviorClause();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getActiveClassDefinitionOrStubRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"classifierBehavior",
                                      		lv_classifierBehavior_6_0, 
                                      		"org.eclipse.papyrus.uml.alf.Alf.BehaviorClause");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleActiveClassDefinitionOrStub"


    // $ANTLR start "entryRuleBehaviorClause"
    // InternalAlf.g:2334:1: entryRuleBehaviorClause returns [EObject current=null] : iv_ruleBehaviorClause= ruleBehaviorClause EOF ;
    public final EObject entryRuleBehaviorClause() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBehaviorClause = null;


        try {
            // InternalAlf.g:2335:2: (iv_ruleBehaviorClause= ruleBehaviorClause EOF )
            // InternalAlf.g:2336:2: iv_ruleBehaviorClause= ruleBehaviorClause EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getBehaviorClauseRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleBehaviorClause=ruleBehaviorClause();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleBehaviorClause; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBehaviorClause"


    // $ANTLR start "ruleBehaviorClause"
    // InternalAlf.g:2343:1: ruleBehaviorClause returns [EObject current=null] : ( ( (lv_body_0_0= ruleBlock ) ) | ( (lv_name_1_0= ruleName ) ) ) ;
    public final EObject ruleBehaviorClause() throws RecognitionException {
        EObject current = null;

        EObject lv_body_0_0 = null;

        AntlrDatatypeRuleToken lv_name_1_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:2346:28: ( ( ( (lv_body_0_0= ruleBlock ) ) | ( (lv_name_1_0= ruleName ) ) ) )
            // InternalAlf.g:2347:1: ( ( (lv_body_0_0= ruleBlock ) ) | ( (lv_name_1_0= ruleName ) ) )
            {
            // InternalAlf.g:2347:1: ( ( (lv_body_0_0= ruleBlock ) ) | ( (lv_name_1_0= ruleName ) ) )
            int alt48=2;
            int LA48_0 = input.LA(1);

            if ( (LA48_0==31) ) {
                alt48=1;
            }
            else if ( ((LA48_0>=RULE_ID && LA48_0<=RULE_UNRESTRICTED_NAME)) ) {
                alt48=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 48, 0, input);

                throw nvae;
            }
            switch (alt48) {
                case 1 :
                    // InternalAlf.g:2347:2: ( (lv_body_0_0= ruleBlock ) )
                    {
                    // InternalAlf.g:2347:2: ( (lv_body_0_0= ruleBlock ) )
                    // InternalAlf.g:2348:1: (lv_body_0_0= ruleBlock )
                    {
                    // InternalAlf.g:2348:1: (lv_body_0_0= ruleBlock )
                    // InternalAlf.g:2349:3: lv_body_0_0= ruleBlock
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getBehaviorClauseAccess().getBodyBlockParserRuleCall_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_body_0_0=ruleBlock();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getBehaviorClauseRule());
                      	        }
                             		set(
                             			current, 
                             			"body",
                              		lv_body_0_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.Block");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalAlf.g:2366:6: ( (lv_name_1_0= ruleName ) )
                    {
                    // InternalAlf.g:2366:6: ( (lv_name_1_0= ruleName ) )
                    // InternalAlf.g:2367:1: (lv_name_1_0= ruleName )
                    {
                    // InternalAlf.g:2367:1: (lv_name_1_0= ruleName )
                    // InternalAlf.g:2368:3: lv_name_1_0= ruleName
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getBehaviorClauseAccess().getNameNameParserRuleCall_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_name_1_0=ruleName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getBehaviorClauseRule());
                      	        }
                             		set(
                             			current, 
                             			"name",
                              		lv_name_1_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.Name");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBehaviorClause"


    // $ANTLR start "entryRuleActiveClassMember"
    // InternalAlf.g:2392:1: entryRuleActiveClassMember returns [EObject current=null] : iv_ruleActiveClassMember= ruleActiveClassMember EOF ;
    public final EObject entryRuleActiveClassMember() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleActiveClassMember = null;


        try {
            // InternalAlf.g:2393:2: (iv_ruleActiveClassMember= ruleActiveClassMember EOF )
            // InternalAlf.g:2394:2: iv_ruleActiveClassMember= ruleActiveClassMember EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getActiveClassMemberRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleActiveClassMember=ruleActiveClassMember();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleActiveClassMember; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleActiveClassMember"


    // $ANTLR start "ruleActiveClassMember"
    // InternalAlf.g:2401:1: ruleActiveClassMember returns [EObject current=null] : ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )* ( (lv_visibility_2_0= ruleVisibilityIndicator ) )? ( (lv_definition_3_0= ruleActiveClassMemberDefinition ) ) ) ;
    public final EObject ruleActiveClassMember() throws RecognitionException {
        EObject current = null;

        Token lv_documentation_0_0=null;
        EObject lv_annotation_1_0 = null;

        AntlrDatatypeRuleToken lv_visibility_2_0 = null;

        EObject lv_definition_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:2404:28: ( ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )* ( (lv_visibility_2_0= ruleVisibilityIndicator ) )? ( (lv_definition_3_0= ruleActiveClassMemberDefinition ) ) ) )
            // InternalAlf.g:2405:1: ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )* ( (lv_visibility_2_0= ruleVisibilityIndicator ) )? ( (lv_definition_3_0= ruleActiveClassMemberDefinition ) ) )
            {
            // InternalAlf.g:2405:1: ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )* ( (lv_visibility_2_0= ruleVisibilityIndicator ) )? ( (lv_definition_3_0= ruleActiveClassMemberDefinition ) ) )
            // InternalAlf.g:2405:2: ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )* ( (lv_visibility_2_0= ruleVisibilityIndicator ) )? ( (lv_definition_3_0= ruleActiveClassMemberDefinition ) )
            {
            // InternalAlf.g:2405:2: ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )?
            int alt49=2;
            int LA49_0 = input.LA(1);

            if ( (LA49_0==RULE_DOCUMENTATION_COMMENT) ) {
                alt49=1;
            }
            switch (alt49) {
                case 1 :
                    // InternalAlf.g:2406:1: (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT )
                    {
                    // InternalAlf.g:2406:1: (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT )
                    // InternalAlf.g:2407:3: lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT
                    {
                    lv_documentation_0_0=(Token)match(input,RULE_DOCUMENTATION_COMMENT,FOLLOW_33); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_documentation_0_0, grammarAccess.getActiveClassMemberAccess().getDocumentationDOCUMENTATION_COMMENTTerminalRuleCall_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getActiveClassMemberRule());
                      	        }
                             		addWithLastConsumed(
                             			current, 
                             			"documentation",
                              		lv_documentation_0_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.DOCUMENTATION_COMMENT");
                      	    
                    }

                    }


                    }
                    break;

            }

            // InternalAlf.g:2423:3: ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )*
            loop50:
            do {
                int alt50=2;
                int LA50_0 = input.LA(1);

                if ( (LA50_0==15) ) {
                    alt50=1;
                }


                switch (alt50) {
            	case 1 :
            	    // InternalAlf.g:2424:1: (lv_annotation_1_0= ruleStereotypeAnnotation )
            	    {
            	    // InternalAlf.g:2424:1: (lv_annotation_1_0= ruleStereotypeAnnotation )
            	    // InternalAlf.g:2425:3: lv_annotation_1_0= ruleStereotypeAnnotation
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getActiveClassMemberAccess().getAnnotationStereotypeAnnotationParserRuleCall_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_33);
            	    lv_annotation_1_0=ruleStereotypeAnnotation();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getActiveClassMemberRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"annotation",
            	              		lv_annotation_1_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.StereotypeAnnotation");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop50;
                }
            } while (true);

            // InternalAlf.g:2441:3: ( (lv_visibility_2_0= ruleVisibilityIndicator ) )?
            int alt51=2;
            int LA51_0 = input.LA(1);

            if ( ((LA51_0>=27 && LA51_0<=29)) ) {
                alt51=1;
            }
            switch (alt51) {
                case 1 :
                    // InternalAlf.g:2442:1: (lv_visibility_2_0= ruleVisibilityIndicator )
                    {
                    // InternalAlf.g:2442:1: (lv_visibility_2_0= ruleVisibilityIndicator )
                    // InternalAlf.g:2443:3: lv_visibility_2_0= ruleVisibilityIndicator
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getActiveClassMemberAccess().getVisibilityVisibilityIndicatorParserRuleCall_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_33);
                    lv_visibility_2_0=ruleVisibilityIndicator();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getActiveClassMemberRule());
                      	        }
                             		set(
                             			current, 
                             			"visibility",
                              		lv_visibility_2_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.VisibilityIndicator");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            // InternalAlf.g:2459:3: ( (lv_definition_3_0= ruleActiveClassMemberDefinition ) )
            // InternalAlf.g:2460:1: (lv_definition_3_0= ruleActiveClassMemberDefinition )
            {
            // InternalAlf.g:2460:1: (lv_definition_3_0= ruleActiveClassMemberDefinition )
            // InternalAlf.g:2461:3: lv_definition_3_0= ruleActiveClassMemberDefinition
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getActiveClassMemberAccess().getDefinitionActiveClassMemberDefinitionParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_definition_3_0=ruleActiveClassMemberDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getActiveClassMemberRule());
              	        }
                     		set(
                     			current, 
                     			"definition",
                      		lv_definition_3_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.ActiveClassMemberDefinition");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleActiveClassMember"


    // $ANTLR start "entryRuleActiveClassMemberDefinition"
    // InternalAlf.g:2485:1: entryRuleActiveClassMemberDefinition returns [EObject current=null] : iv_ruleActiveClassMemberDefinition= ruleActiveClassMemberDefinition EOF ;
    public final EObject entryRuleActiveClassMemberDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleActiveClassMemberDefinition = null;


        try {
            // InternalAlf.g:2486:2: (iv_ruleActiveClassMemberDefinition= ruleActiveClassMemberDefinition EOF )
            // InternalAlf.g:2487:2: iv_ruleActiveClassMemberDefinition= ruleActiveClassMemberDefinition EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getActiveClassMemberDefinitionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleActiveClassMemberDefinition=ruleActiveClassMemberDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleActiveClassMemberDefinition; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleActiveClassMemberDefinition"


    // $ANTLR start "ruleActiveClassMemberDefinition"
    // InternalAlf.g:2494:1: ruleActiveClassMemberDefinition returns [EObject current=null] : (this_ClassMemberDefinition_0= ruleClassMemberDefinition | this_ActiveFeatureDefinitionOrStub_1= ruleActiveFeatureDefinitionOrStub ) ;
    public final EObject ruleActiveClassMemberDefinition() throws RecognitionException {
        EObject current = null;

        EObject this_ClassMemberDefinition_0 = null;

        EObject this_ActiveFeatureDefinitionOrStub_1 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:2497:28: ( (this_ClassMemberDefinition_0= ruleClassMemberDefinition | this_ActiveFeatureDefinitionOrStub_1= ruleActiveFeatureDefinitionOrStub ) )
            // InternalAlf.g:2498:1: (this_ClassMemberDefinition_0= ruleClassMemberDefinition | this_ActiveFeatureDefinitionOrStub_1= ruleActiveFeatureDefinitionOrStub )
            {
            // InternalAlf.g:2498:1: (this_ClassMemberDefinition_0= ruleClassMemberDefinition | this_ActiveFeatureDefinitionOrStub_1= ruleActiveFeatureDefinitionOrStub )
            int alt52=2;
            int LA52_0 = input.LA(1);

            if ( ((LA52_0>=RULE_ID && LA52_0<=RULE_UNRESTRICTED_NAME)||(LA52_0>=34 && LA52_0<=35)||LA52_0==38||(LA52_0>=40 && LA52_0<=44)) ) {
                alt52=1;
            }
            else if ( (LA52_0==59) ) {
                alt52=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 52, 0, input);

                throw nvae;
            }
            switch (alt52) {
                case 1 :
                    // InternalAlf.g:2499:2: this_ClassMemberDefinition_0= ruleClassMemberDefinition
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getActiveClassMemberDefinitionAccess().getClassMemberDefinitionParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_ClassMemberDefinition_0=ruleClassMemberDefinition();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ClassMemberDefinition_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:2512:2: this_ActiveFeatureDefinitionOrStub_1= ruleActiveFeatureDefinitionOrStub
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getActiveClassMemberDefinitionAccess().getActiveFeatureDefinitionOrStubParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_ActiveFeatureDefinitionOrStub_1=ruleActiveFeatureDefinitionOrStub();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ActiveFeatureDefinitionOrStub_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleActiveClassMemberDefinition"


    // $ANTLR start "entryRuleDataTypeDeclaration"
    // InternalAlf.g:2531:1: entryRuleDataTypeDeclaration returns [EObject current=null] : iv_ruleDataTypeDeclaration= ruleDataTypeDeclaration EOF ;
    public final EObject entryRuleDataTypeDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDataTypeDeclaration = null;


        try {
            // InternalAlf.g:2532:2: (iv_ruleDataTypeDeclaration= ruleDataTypeDeclaration EOF )
            // InternalAlf.g:2533:2: iv_ruleDataTypeDeclaration= ruleDataTypeDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getDataTypeDeclarationRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleDataTypeDeclaration=ruleDataTypeDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDataTypeDeclaration; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDataTypeDeclaration"


    // $ANTLR start "ruleDataTypeDeclaration"
    // InternalAlf.g:2540:1: ruleDataTypeDeclaration returns [EObject current=null] : ( ( (lv_isAbstract_0_0= 'abstract' ) )? otherlv_1= 'datatype' ( (lv_name_2_0= ruleName ) ) (otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>' )? ( (lv_specialization_8_0= ruleSpecializationClause ) )? ) ;
    public final EObject ruleDataTypeDeclaration() throws RecognitionException {
        EObject current = null;

        Token lv_isAbstract_0_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        AntlrDatatypeRuleToken lv_name_2_0 = null;

        EObject lv_ownedMember_4_0 = null;

        EObject lv_ownedMember_6_0 = null;

        EObject lv_specialization_8_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:2543:28: ( ( ( (lv_isAbstract_0_0= 'abstract' ) )? otherlv_1= 'datatype' ( (lv_name_2_0= ruleName ) ) (otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>' )? ( (lv_specialization_8_0= ruleSpecializationClause ) )? ) )
            // InternalAlf.g:2544:1: ( ( (lv_isAbstract_0_0= 'abstract' ) )? otherlv_1= 'datatype' ( (lv_name_2_0= ruleName ) ) (otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>' )? ( (lv_specialization_8_0= ruleSpecializationClause ) )? )
            {
            // InternalAlf.g:2544:1: ( ( (lv_isAbstract_0_0= 'abstract' ) )? otherlv_1= 'datatype' ( (lv_name_2_0= ruleName ) ) (otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>' )? ( (lv_specialization_8_0= ruleSpecializationClause ) )? )
            // InternalAlf.g:2544:2: ( (lv_isAbstract_0_0= 'abstract' ) )? otherlv_1= 'datatype' ( (lv_name_2_0= ruleName ) ) (otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>' )? ( (lv_specialization_8_0= ruleSpecializationClause ) )?
            {
            // InternalAlf.g:2544:2: ( (lv_isAbstract_0_0= 'abstract' ) )?
            int alt53=2;
            int LA53_0 = input.LA(1);

            if ( (LA53_0==34) ) {
                alt53=1;
            }
            switch (alt53) {
                case 1 :
                    // InternalAlf.g:2545:1: (lv_isAbstract_0_0= 'abstract' )
                    {
                    // InternalAlf.g:2545:1: (lv_isAbstract_0_0= 'abstract' )
                    // InternalAlf.g:2546:3: lv_isAbstract_0_0= 'abstract'
                    {
                    lv_isAbstract_0_0=(Token)match(input,34,FOLLOW_34); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_isAbstract_0_0, grammarAccess.getDataTypeDeclarationAccess().getIsAbstractAbstractKeyword_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getDataTypeDeclarationRule());
                      	        }
                             		setWithLastConsumed(current, "isAbstract", true, "abstract");
                      	    
                    }

                    }


                    }
                    break;

            }

            otherlv_1=(Token)match(input,40,FOLLOW_4); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getDataTypeDeclarationAccess().getDatatypeKeyword_1());
                  
            }
            // InternalAlf.g:2563:1: ( (lv_name_2_0= ruleName ) )
            // InternalAlf.g:2564:1: (lv_name_2_0= ruleName )
            {
            // InternalAlf.g:2564:1: (lv_name_2_0= ruleName )
            // InternalAlf.g:2565:3: lv_name_2_0= ruleName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getDataTypeDeclarationAccess().getNameNameParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_24);
            lv_name_2_0=ruleName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getDataTypeDeclarationRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_2_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Name");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:2581:2: (otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>' )?
            int alt55=2;
            int LA55_0 = input.LA(1);

            if ( (LA55_0==36) ) {
                alt55=1;
            }
            switch (alt55) {
                case 1 :
                    // InternalAlf.g:2581:4: otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>'
                    {
                    otherlv_3=(Token)match(input,36,FOLLOW_25); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getDataTypeDeclarationAccess().getLessThanSignKeyword_3_0());
                          
                    }
                    // InternalAlf.g:2585:1: ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) )
                    // InternalAlf.g:2586:1: (lv_ownedMember_4_0= ruleClassifierTemplateParameter )
                    {
                    // InternalAlf.g:2586:1: (lv_ownedMember_4_0= ruleClassifierTemplateParameter )
                    // InternalAlf.g:2587:3: lv_ownedMember_4_0= ruleClassifierTemplateParameter
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getDataTypeDeclarationAccess().getOwnedMemberClassifierTemplateParameterParserRuleCall_3_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_26);
                    lv_ownedMember_4_0=ruleClassifierTemplateParameter();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getDataTypeDeclarationRule());
                      	        }
                             		add(
                             			current, 
                             			"ownedMember",
                              		lv_ownedMember_4_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.ClassifierTemplateParameter");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // InternalAlf.g:2603:2: (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )*
                    loop54:
                    do {
                        int alt54=2;
                        int LA54_0 = input.LA(1);

                        if ( (LA54_0==18) ) {
                            alt54=1;
                        }


                        switch (alt54) {
                    	case 1 :
                    	    // InternalAlf.g:2603:4: otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) )
                    	    {
                    	    otherlv_5=(Token)match(input,18,FOLLOW_25); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_5, grammarAccess.getDataTypeDeclarationAccess().getCommaKeyword_3_2_0());
                    	          
                    	    }
                    	    // InternalAlf.g:2607:1: ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) )
                    	    // InternalAlf.g:2608:1: (lv_ownedMember_6_0= ruleClassifierTemplateParameter )
                    	    {
                    	    // InternalAlf.g:2608:1: (lv_ownedMember_6_0= ruleClassifierTemplateParameter )
                    	    // InternalAlf.g:2609:3: lv_ownedMember_6_0= ruleClassifierTemplateParameter
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getDataTypeDeclarationAccess().getOwnedMemberClassifierTemplateParameterParserRuleCall_3_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_26);
                    	    lv_ownedMember_6_0=ruleClassifierTemplateParameter();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getDataTypeDeclarationRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"ownedMember",
                    	              		lv_ownedMember_6_0, 
                    	              		"org.eclipse.papyrus.uml.alf.Alf.ClassifierTemplateParameter");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop54;
                        }
                    } while (true);

                    otherlv_7=(Token)match(input,37,FOLLOW_22); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_7, grammarAccess.getDataTypeDeclarationAccess().getGreaterThanSignKeyword_3_3());
                          
                    }

                    }
                    break;

            }

            // InternalAlf.g:2629:3: ( (lv_specialization_8_0= ruleSpecializationClause ) )?
            int alt56=2;
            int LA56_0 = input.LA(1);

            if ( (LA56_0==33) ) {
                alt56=1;
            }
            switch (alt56) {
                case 1 :
                    // InternalAlf.g:2630:1: (lv_specialization_8_0= ruleSpecializationClause )
                    {
                    // InternalAlf.g:2630:1: (lv_specialization_8_0= ruleSpecializationClause )
                    // InternalAlf.g:2631:3: lv_specialization_8_0= ruleSpecializationClause
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getDataTypeDeclarationAccess().getSpecializationSpecializationClauseParserRuleCall_4_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_specialization_8_0=ruleSpecializationClause();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getDataTypeDeclarationRule());
                      	        }
                             		set(
                             			current, 
                             			"specialization",
                              		lv_specialization_8_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.SpecializationClause");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDataTypeDeclaration"


    // $ANTLR start "entryRuleDataTypeDefinition"
    // InternalAlf.g:2655:1: entryRuleDataTypeDefinition returns [EObject current=null] : iv_ruleDataTypeDefinition= ruleDataTypeDefinition EOF ;
    public final EObject entryRuleDataTypeDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDataTypeDefinition = null;


        try {
            // InternalAlf.g:2656:2: (iv_ruleDataTypeDefinition= ruleDataTypeDefinition EOF )
            // InternalAlf.g:2657:2: iv_ruleDataTypeDefinition= ruleDataTypeDefinition EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getDataTypeDefinitionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleDataTypeDefinition=ruleDataTypeDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDataTypeDefinition; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDataTypeDefinition"


    // $ANTLR start "ruleDataTypeDefinition"
    // InternalAlf.g:2664:1: ruleDataTypeDefinition returns [EObject current=null] : (this_DataTypeDeclaration_0= ruleDataTypeDeclaration otherlv_1= '{' ( (lv_ownedMember_2_0= ruleStructuredMember ) )* otherlv_3= '}' ) ;
    public final EObject ruleDataTypeDefinition() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject this_DataTypeDeclaration_0 = null;

        EObject lv_ownedMember_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:2667:28: ( (this_DataTypeDeclaration_0= ruleDataTypeDeclaration otherlv_1= '{' ( (lv_ownedMember_2_0= ruleStructuredMember ) )* otherlv_3= '}' ) )
            // InternalAlf.g:2668:1: (this_DataTypeDeclaration_0= ruleDataTypeDeclaration otherlv_1= '{' ( (lv_ownedMember_2_0= ruleStructuredMember ) )* otherlv_3= '}' )
            {
            // InternalAlf.g:2668:1: (this_DataTypeDeclaration_0= ruleDataTypeDeclaration otherlv_1= '{' ( (lv_ownedMember_2_0= ruleStructuredMember ) )* otherlv_3= '}' )
            // InternalAlf.g:2669:2: this_DataTypeDeclaration_0= ruleDataTypeDeclaration otherlv_1= '{' ( (lv_ownedMember_2_0= ruleStructuredMember ) )* otherlv_3= '}'
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getDataTypeDefinitionAccess().getDataTypeDeclarationParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_18);
            this_DataTypeDeclaration_0=ruleDataTypeDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_DataTypeDeclaration_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            otherlv_1=(Token)match(input,31,FOLLOW_35); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getDataTypeDefinitionAccess().getLeftCurlyBracketKeyword_1());
                  
            }
            // InternalAlf.g:2684:1: ( (lv_ownedMember_2_0= ruleStructuredMember ) )*
            loop57:
            do {
                int alt57=2;
                int LA57_0 = input.LA(1);

                if ( (LA57_0==RULE_DOCUMENTATION_COMMENT||(LA57_0>=RULE_ID && LA57_0<=RULE_UNRESTRICTED_NAME)||LA57_0==15||LA57_0==27) ) {
                    alt57=1;
                }


                switch (alt57) {
            	case 1 :
            	    // InternalAlf.g:2685:1: (lv_ownedMember_2_0= ruleStructuredMember )
            	    {
            	    // InternalAlf.g:2685:1: (lv_ownedMember_2_0= ruleStructuredMember )
            	    // InternalAlf.g:2686:3: lv_ownedMember_2_0= ruleStructuredMember
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getDataTypeDefinitionAccess().getOwnedMemberStructuredMemberParserRuleCall_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_35);
            	    lv_ownedMember_2_0=ruleStructuredMember();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getDataTypeDefinitionRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"ownedMember",
            	              		lv_ownedMember_2_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.StructuredMember");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop57;
                }
            } while (true);

            otherlv_3=(Token)match(input,32,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getDataTypeDefinitionAccess().getRightCurlyBracketKeyword_3());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDataTypeDefinition"


    // $ANTLR start "entryRuleDataTypeDefinitionOrStub"
    // InternalAlf.g:2714:1: entryRuleDataTypeDefinitionOrStub returns [EObject current=null] : iv_ruleDataTypeDefinitionOrStub= ruleDataTypeDefinitionOrStub EOF ;
    public final EObject entryRuleDataTypeDefinitionOrStub() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDataTypeDefinitionOrStub = null;


        try {
            // InternalAlf.g:2715:2: (iv_ruleDataTypeDefinitionOrStub= ruleDataTypeDefinitionOrStub EOF )
            // InternalAlf.g:2716:2: iv_ruleDataTypeDefinitionOrStub= ruleDataTypeDefinitionOrStub EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getDataTypeDefinitionOrStubRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleDataTypeDefinitionOrStub=ruleDataTypeDefinitionOrStub();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDataTypeDefinitionOrStub; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDataTypeDefinitionOrStub"


    // $ANTLR start "ruleDataTypeDefinitionOrStub"
    // InternalAlf.g:2723:1: ruleDataTypeDefinitionOrStub returns [EObject current=null] : (this_DataTypeDeclaration_0= ruleDataTypeDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' ) ) ) ;
    public final EObject ruleDataTypeDefinitionOrStub() throws RecognitionException {
        EObject current = null;

        Token lv_isStub_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject this_DataTypeDeclaration_0 = null;

        EObject lv_ownedMember_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:2726:28: ( (this_DataTypeDeclaration_0= ruleDataTypeDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' ) ) ) )
            // InternalAlf.g:2727:1: (this_DataTypeDeclaration_0= ruleDataTypeDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' ) ) )
            {
            // InternalAlf.g:2727:1: (this_DataTypeDeclaration_0= ruleDataTypeDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' ) ) )
            // InternalAlf.g:2728:2: this_DataTypeDeclaration_0= ruleDataTypeDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' ) )
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getDataTypeDefinitionOrStubAccess().getDataTypeDeclarationParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_20);
            this_DataTypeDeclaration_0=ruleDataTypeDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_DataTypeDeclaration_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:2739:1: ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' ) )
            int alt59=2;
            int LA59_0 = input.LA(1);

            if ( (LA59_0==22) ) {
                alt59=1;
            }
            else if ( (LA59_0==31) ) {
                alt59=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 59, 0, input);

                throw nvae;
            }
            switch (alt59) {
                case 1 :
                    // InternalAlf.g:2739:2: ( (lv_isStub_1_0= ';' ) )
                    {
                    // InternalAlf.g:2739:2: ( (lv_isStub_1_0= ';' ) )
                    // InternalAlf.g:2740:1: (lv_isStub_1_0= ';' )
                    {
                    // InternalAlf.g:2740:1: (lv_isStub_1_0= ';' )
                    // InternalAlf.g:2741:3: lv_isStub_1_0= ';'
                    {
                    lv_isStub_1_0=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_isStub_1_0, grammarAccess.getDataTypeDefinitionOrStubAccess().getIsStubSemicolonKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getDataTypeDefinitionOrStubRule());
                      	        }
                             		setWithLastConsumed(current, "isStub", true, ";");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalAlf.g:2755:6: (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' )
                    {
                    // InternalAlf.g:2755:6: (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' )
                    // InternalAlf.g:2755:8: otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}'
                    {
                    otherlv_2=(Token)match(input,31,FOLLOW_35); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getDataTypeDefinitionOrStubAccess().getLeftCurlyBracketKeyword_1_1_0());
                          
                    }
                    // InternalAlf.g:2759:1: ( (lv_ownedMember_3_0= ruleStructuredMember ) )*
                    loop58:
                    do {
                        int alt58=2;
                        int LA58_0 = input.LA(1);

                        if ( (LA58_0==RULE_DOCUMENTATION_COMMENT||(LA58_0>=RULE_ID && LA58_0<=RULE_UNRESTRICTED_NAME)||LA58_0==15||LA58_0==27) ) {
                            alt58=1;
                        }


                        switch (alt58) {
                    	case 1 :
                    	    // InternalAlf.g:2760:1: (lv_ownedMember_3_0= ruleStructuredMember )
                    	    {
                    	    // InternalAlf.g:2760:1: (lv_ownedMember_3_0= ruleStructuredMember )
                    	    // InternalAlf.g:2761:3: lv_ownedMember_3_0= ruleStructuredMember
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getDataTypeDefinitionOrStubAccess().getOwnedMemberStructuredMemberParserRuleCall_1_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_35);
                    	    lv_ownedMember_3_0=ruleStructuredMember();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getDataTypeDefinitionOrStubRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"ownedMember",
                    	              		lv_ownedMember_3_0, 
                    	              		"org.eclipse.papyrus.uml.alf.Alf.StructuredMember");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop58;
                        }
                    } while (true);

                    otherlv_4=(Token)match(input,32,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getDataTypeDefinitionOrStubAccess().getRightCurlyBracketKeyword_1_1_2());
                          
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDataTypeDefinitionOrStub"


    // $ANTLR start "entryRuleStructuredMember"
    // InternalAlf.g:2789:1: entryRuleStructuredMember returns [EObject current=null] : iv_ruleStructuredMember= ruleStructuredMember EOF ;
    public final EObject entryRuleStructuredMember() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStructuredMember = null;


        try {
            // InternalAlf.g:2790:2: (iv_ruleStructuredMember= ruleStructuredMember EOF )
            // InternalAlf.g:2791:2: iv_ruleStructuredMember= ruleStructuredMember EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getStructuredMemberRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleStructuredMember=ruleStructuredMember();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleStructuredMember; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStructuredMember"


    // $ANTLR start "ruleStructuredMember"
    // InternalAlf.g:2798:1: ruleStructuredMember returns [EObject current=null] : ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )* ( (lv_visibility_2_0= 'public' ) )? ( (lv_definition_3_0= rulePropertyDefinition ) ) ) ;
    public final EObject ruleStructuredMember() throws RecognitionException {
        EObject current = null;

        Token lv_documentation_0_0=null;
        Token lv_visibility_2_0=null;
        EObject lv_annotation_1_0 = null;

        EObject lv_definition_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:2801:28: ( ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )* ( (lv_visibility_2_0= 'public' ) )? ( (lv_definition_3_0= rulePropertyDefinition ) ) ) )
            // InternalAlf.g:2802:1: ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )* ( (lv_visibility_2_0= 'public' ) )? ( (lv_definition_3_0= rulePropertyDefinition ) ) )
            {
            // InternalAlf.g:2802:1: ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )* ( (lv_visibility_2_0= 'public' ) )? ( (lv_definition_3_0= rulePropertyDefinition ) ) )
            // InternalAlf.g:2802:2: ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )* ( (lv_visibility_2_0= 'public' ) )? ( (lv_definition_3_0= rulePropertyDefinition ) )
            {
            // InternalAlf.g:2802:2: ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )?
            int alt60=2;
            int LA60_0 = input.LA(1);

            if ( (LA60_0==RULE_DOCUMENTATION_COMMENT) ) {
                alt60=1;
            }
            switch (alt60) {
                case 1 :
                    // InternalAlf.g:2803:1: (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT )
                    {
                    // InternalAlf.g:2803:1: (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT )
                    // InternalAlf.g:2804:3: lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT
                    {
                    lv_documentation_0_0=(Token)match(input,RULE_DOCUMENTATION_COMMENT,FOLLOW_36); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_documentation_0_0, grammarAccess.getStructuredMemberAccess().getDocumentationDOCUMENTATION_COMMENTTerminalRuleCall_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getStructuredMemberRule());
                      	        }
                             		addWithLastConsumed(
                             			current, 
                             			"documentation",
                              		lv_documentation_0_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.DOCUMENTATION_COMMENT");
                      	    
                    }

                    }


                    }
                    break;

            }

            // InternalAlf.g:2820:3: ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )*
            loop61:
            do {
                int alt61=2;
                int LA61_0 = input.LA(1);

                if ( (LA61_0==15) ) {
                    alt61=1;
                }


                switch (alt61) {
            	case 1 :
            	    // InternalAlf.g:2821:1: (lv_annotation_1_0= ruleStereotypeAnnotation )
            	    {
            	    // InternalAlf.g:2821:1: (lv_annotation_1_0= ruleStereotypeAnnotation )
            	    // InternalAlf.g:2822:3: lv_annotation_1_0= ruleStereotypeAnnotation
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getStructuredMemberAccess().getAnnotationStereotypeAnnotationParserRuleCall_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_36);
            	    lv_annotation_1_0=ruleStereotypeAnnotation();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getStructuredMemberRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"annotation",
            	              		lv_annotation_1_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.StereotypeAnnotation");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop61;
                }
            } while (true);

            // InternalAlf.g:2838:3: ( (lv_visibility_2_0= 'public' ) )?
            int alt62=2;
            int LA62_0 = input.LA(1);

            if ( (LA62_0==27) ) {
                alt62=1;
            }
            switch (alt62) {
                case 1 :
                    // InternalAlf.g:2839:1: (lv_visibility_2_0= 'public' )
                    {
                    // InternalAlf.g:2839:1: (lv_visibility_2_0= 'public' )
                    // InternalAlf.g:2840:3: lv_visibility_2_0= 'public'
                    {
                    lv_visibility_2_0=(Token)match(input,27,FOLLOW_36); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_visibility_2_0, grammarAccess.getStructuredMemberAccess().getVisibilityPublicKeyword_2_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getStructuredMemberRule());
                      	        }
                             		setWithLastConsumed(current, "visibility", lv_visibility_2_0, "public");
                      	    
                    }

                    }


                    }
                    break;

            }

            // InternalAlf.g:2853:3: ( (lv_definition_3_0= rulePropertyDefinition ) )
            // InternalAlf.g:2854:1: (lv_definition_3_0= rulePropertyDefinition )
            {
            // InternalAlf.g:2854:1: (lv_definition_3_0= rulePropertyDefinition )
            // InternalAlf.g:2855:3: lv_definition_3_0= rulePropertyDefinition
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getStructuredMemberAccess().getDefinitionPropertyDefinitionParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_definition_3_0=rulePropertyDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getStructuredMemberRule());
              	        }
                     		set(
                     			current, 
                     			"definition",
                      		lv_definition_3_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.PropertyDefinition");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStructuredMember"


    // $ANTLR start "entryRuleAssociationDeclaration"
    // InternalAlf.g:2879:1: entryRuleAssociationDeclaration returns [EObject current=null] : iv_ruleAssociationDeclaration= ruleAssociationDeclaration EOF ;
    public final EObject entryRuleAssociationDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAssociationDeclaration = null;


        try {
            // InternalAlf.g:2880:2: (iv_ruleAssociationDeclaration= ruleAssociationDeclaration EOF )
            // InternalAlf.g:2881:2: iv_ruleAssociationDeclaration= ruleAssociationDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAssociationDeclarationRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleAssociationDeclaration=ruleAssociationDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAssociationDeclaration; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAssociationDeclaration"


    // $ANTLR start "ruleAssociationDeclaration"
    // InternalAlf.g:2888:1: ruleAssociationDeclaration returns [EObject current=null] : ( ( (lv_isAbstract_0_0= 'abstract' ) )? otherlv_1= 'assoc' ( (lv_name_2_0= ruleName ) ) (otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>' )? ( (lv_specialization_8_0= ruleSpecializationClause ) )? ) ;
    public final EObject ruleAssociationDeclaration() throws RecognitionException {
        EObject current = null;

        Token lv_isAbstract_0_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        AntlrDatatypeRuleToken lv_name_2_0 = null;

        EObject lv_ownedMember_4_0 = null;

        EObject lv_ownedMember_6_0 = null;

        EObject lv_specialization_8_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:2891:28: ( ( ( (lv_isAbstract_0_0= 'abstract' ) )? otherlv_1= 'assoc' ( (lv_name_2_0= ruleName ) ) (otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>' )? ( (lv_specialization_8_0= ruleSpecializationClause ) )? ) )
            // InternalAlf.g:2892:1: ( ( (lv_isAbstract_0_0= 'abstract' ) )? otherlv_1= 'assoc' ( (lv_name_2_0= ruleName ) ) (otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>' )? ( (lv_specialization_8_0= ruleSpecializationClause ) )? )
            {
            // InternalAlf.g:2892:1: ( ( (lv_isAbstract_0_0= 'abstract' ) )? otherlv_1= 'assoc' ( (lv_name_2_0= ruleName ) ) (otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>' )? ( (lv_specialization_8_0= ruleSpecializationClause ) )? )
            // InternalAlf.g:2892:2: ( (lv_isAbstract_0_0= 'abstract' ) )? otherlv_1= 'assoc' ( (lv_name_2_0= ruleName ) ) (otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>' )? ( (lv_specialization_8_0= ruleSpecializationClause ) )?
            {
            // InternalAlf.g:2892:2: ( (lv_isAbstract_0_0= 'abstract' ) )?
            int alt63=2;
            int LA63_0 = input.LA(1);

            if ( (LA63_0==34) ) {
                alt63=1;
            }
            switch (alt63) {
                case 1 :
                    // InternalAlf.g:2893:1: (lv_isAbstract_0_0= 'abstract' )
                    {
                    // InternalAlf.g:2893:1: (lv_isAbstract_0_0= 'abstract' )
                    // InternalAlf.g:2894:3: lv_isAbstract_0_0= 'abstract'
                    {
                    lv_isAbstract_0_0=(Token)match(input,34,FOLLOW_37); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_isAbstract_0_0, grammarAccess.getAssociationDeclarationAccess().getIsAbstractAbstractKeyword_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getAssociationDeclarationRule());
                      	        }
                             		setWithLastConsumed(current, "isAbstract", true, "abstract");
                      	    
                    }

                    }


                    }
                    break;

            }

            otherlv_1=(Token)match(input,41,FOLLOW_4); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getAssociationDeclarationAccess().getAssocKeyword_1());
                  
            }
            // InternalAlf.g:2911:1: ( (lv_name_2_0= ruleName ) )
            // InternalAlf.g:2912:1: (lv_name_2_0= ruleName )
            {
            // InternalAlf.g:2912:1: (lv_name_2_0= ruleName )
            // InternalAlf.g:2913:3: lv_name_2_0= ruleName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getAssociationDeclarationAccess().getNameNameParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_24);
            lv_name_2_0=ruleName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getAssociationDeclarationRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_2_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Name");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:2929:2: (otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>' )?
            int alt65=2;
            int LA65_0 = input.LA(1);

            if ( (LA65_0==36) ) {
                alt65=1;
            }
            switch (alt65) {
                case 1 :
                    // InternalAlf.g:2929:4: otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>'
                    {
                    otherlv_3=(Token)match(input,36,FOLLOW_25); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getAssociationDeclarationAccess().getLessThanSignKeyword_3_0());
                          
                    }
                    // InternalAlf.g:2933:1: ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) )
                    // InternalAlf.g:2934:1: (lv_ownedMember_4_0= ruleClassifierTemplateParameter )
                    {
                    // InternalAlf.g:2934:1: (lv_ownedMember_4_0= ruleClassifierTemplateParameter )
                    // InternalAlf.g:2935:3: lv_ownedMember_4_0= ruleClassifierTemplateParameter
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getAssociationDeclarationAccess().getOwnedMemberClassifierTemplateParameterParserRuleCall_3_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_26);
                    lv_ownedMember_4_0=ruleClassifierTemplateParameter();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getAssociationDeclarationRule());
                      	        }
                             		add(
                             			current, 
                             			"ownedMember",
                              		lv_ownedMember_4_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.ClassifierTemplateParameter");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // InternalAlf.g:2951:2: (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )*
                    loop64:
                    do {
                        int alt64=2;
                        int LA64_0 = input.LA(1);

                        if ( (LA64_0==18) ) {
                            alt64=1;
                        }


                        switch (alt64) {
                    	case 1 :
                    	    // InternalAlf.g:2951:4: otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) )
                    	    {
                    	    otherlv_5=(Token)match(input,18,FOLLOW_25); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_5, grammarAccess.getAssociationDeclarationAccess().getCommaKeyword_3_2_0());
                    	          
                    	    }
                    	    // InternalAlf.g:2955:1: ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) )
                    	    // InternalAlf.g:2956:1: (lv_ownedMember_6_0= ruleClassifierTemplateParameter )
                    	    {
                    	    // InternalAlf.g:2956:1: (lv_ownedMember_6_0= ruleClassifierTemplateParameter )
                    	    // InternalAlf.g:2957:3: lv_ownedMember_6_0= ruleClassifierTemplateParameter
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getAssociationDeclarationAccess().getOwnedMemberClassifierTemplateParameterParserRuleCall_3_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_26);
                    	    lv_ownedMember_6_0=ruleClassifierTemplateParameter();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getAssociationDeclarationRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"ownedMember",
                    	              		lv_ownedMember_6_0, 
                    	              		"org.eclipse.papyrus.uml.alf.Alf.ClassifierTemplateParameter");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop64;
                        }
                    } while (true);

                    otherlv_7=(Token)match(input,37,FOLLOW_22); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_7, grammarAccess.getAssociationDeclarationAccess().getGreaterThanSignKeyword_3_3());
                          
                    }

                    }
                    break;

            }

            // InternalAlf.g:2977:3: ( (lv_specialization_8_0= ruleSpecializationClause ) )?
            int alt66=2;
            int LA66_0 = input.LA(1);

            if ( (LA66_0==33) ) {
                alt66=1;
            }
            switch (alt66) {
                case 1 :
                    // InternalAlf.g:2978:1: (lv_specialization_8_0= ruleSpecializationClause )
                    {
                    // InternalAlf.g:2978:1: (lv_specialization_8_0= ruleSpecializationClause )
                    // InternalAlf.g:2979:3: lv_specialization_8_0= ruleSpecializationClause
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getAssociationDeclarationAccess().getSpecializationSpecializationClauseParserRuleCall_4_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_specialization_8_0=ruleSpecializationClause();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getAssociationDeclarationRule());
                      	        }
                             		set(
                             			current, 
                             			"specialization",
                              		lv_specialization_8_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.SpecializationClause");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAssociationDeclaration"


    // $ANTLR start "entryRuleAssociationDefinition"
    // InternalAlf.g:3003:1: entryRuleAssociationDefinition returns [EObject current=null] : iv_ruleAssociationDefinition= ruleAssociationDefinition EOF ;
    public final EObject entryRuleAssociationDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAssociationDefinition = null;


        try {
            // InternalAlf.g:3004:2: (iv_ruleAssociationDefinition= ruleAssociationDefinition EOF )
            // InternalAlf.g:3005:2: iv_ruleAssociationDefinition= ruleAssociationDefinition EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAssociationDefinitionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleAssociationDefinition=ruleAssociationDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAssociationDefinition; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAssociationDefinition"


    // $ANTLR start "ruleAssociationDefinition"
    // InternalAlf.g:3012:1: ruleAssociationDefinition returns [EObject current=null] : (this_AssociationDeclaration_0= ruleAssociationDeclaration otherlv_1= '{' ( (lv_ownedMember_2_0= ruleStructuredMember ) )* otherlv_3= '}' ) ;
    public final EObject ruleAssociationDefinition() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject this_AssociationDeclaration_0 = null;

        EObject lv_ownedMember_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:3015:28: ( (this_AssociationDeclaration_0= ruleAssociationDeclaration otherlv_1= '{' ( (lv_ownedMember_2_0= ruleStructuredMember ) )* otherlv_3= '}' ) )
            // InternalAlf.g:3016:1: (this_AssociationDeclaration_0= ruleAssociationDeclaration otherlv_1= '{' ( (lv_ownedMember_2_0= ruleStructuredMember ) )* otherlv_3= '}' )
            {
            // InternalAlf.g:3016:1: (this_AssociationDeclaration_0= ruleAssociationDeclaration otherlv_1= '{' ( (lv_ownedMember_2_0= ruleStructuredMember ) )* otherlv_3= '}' )
            // InternalAlf.g:3017:2: this_AssociationDeclaration_0= ruleAssociationDeclaration otherlv_1= '{' ( (lv_ownedMember_2_0= ruleStructuredMember ) )* otherlv_3= '}'
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getAssociationDefinitionAccess().getAssociationDeclarationParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_18);
            this_AssociationDeclaration_0=ruleAssociationDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_AssociationDeclaration_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            otherlv_1=(Token)match(input,31,FOLLOW_35); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getAssociationDefinitionAccess().getLeftCurlyBracketKeyword_1());
                  
            }
            // InternalAlf.g:3032:1: ( (lv_ownedMember_2_0= ruleStructuredMember ) )*
            loop67:
            do {
                int alt67=2;
                int LA67_0 = input.LA(1);

                if ( (LA67_0==RULE_DOCUMENTATION_COMMENT||(LA67_0>=RULE_ID && LA67_0<=RULE_UNRESTRICTED_NAME)||LA67_0==15||LA67_0==27) ) {
                    alt67=1;
                }


                switch (alt67) {
            	case 1 :
            	    // InternalAlf.g:3033:1: (lv_ownedMember_2_0= ruleStructuredMember )
            	    {
            	    // InternalAlf.g:3033:1: (lv_ownedMember_2_0= ruleStructuredMember )
            	    // InternalAlf.g:3034:3: lv_ownedMember_2_0= ruleStructuredMember
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getAssociationDefinitionAccess().getOwnedMemberStructuredMemberParserRuleCall_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_35);
            	    lv_ownedMember_2_0=ruleStructuredMember();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getAssociationDefinitionRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"ownedMember",
            	              		lv_ownedMember_2_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.StructuredMember");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop67;
                }
            } while (true);

            otherlv_3=(Token)match(input,32,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getAssociationDefinitionAccess().getRightCurlyBracketKeyword_3());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAssociationDefinition"


    // $ANTLR start "entryRuleAssociationDefinitionOrStub"
    // InternalAlf.g:3062:1: entryRuleAssociationDefinitionOrStub returns [EObject current=null] : iv_ruleAssociationDefinitionOrStub= ruleAssociationDefinitionOrStub EOF ;
    public final EObject entryRuleAssociationDefinitionOrStub() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAssociationDefinitionOrStub = null;


        try {
            // InternalAlf.g:3063:2: (iv_ruleAssociationDefinitionOrStub= ruleAssociationDefinitionOrStub EOF )
            // InternalAlf.g:3064:2: iv_ruleAssociationDefinitionOrStub= ruleAssociationDefinitionOrStub EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAssociationDefinitionOrStubRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleAssociationDefinitionOrStub=ruleAssociationDefinitionOrStub();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAssociationDefinitionOrStub; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAssociationDefinitionOrStub"


    // $ANTLR start "ruleAssociationDefinitionOrStub"
    // InternalAlf.g:3071:1: ruleAssociationDefinitionOrStub returns [EObject current=null] : (this_AssociationDeclaration_0= ruleAssociationDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' ) ) ) ;
    public final EObject ruleAssociationDefinitionOrStub() throws RecognitionException {
        EObject current = null;

        Token lv_isStub_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject this_AssociationDeclaration_0 = null;

        EObject lv_ownedMember_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:3074:28: ( (this_AssociationDeclaration_0= ruleAssociationDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' ) ) ) )
            // InternalAlf.g:3075:1: (this_AssociationDeclaration_0= ruleAssociationDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' ) ) )
            {
            // InternalAlf.g:3075:1: (this_AssociationDeclaration_0= ruleAssociationDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' ) ) )
            // InternalAlf.g:3076:2: this_AssociationDeclaration_0= ruleAssociationDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' ) )
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getAssociationDefinitionOrStubAccess().getAssociationDeclarationParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_20);
            this_AssociationDeclaration_0=ruleAssociationDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_AssociationDeclaration_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:3087:1: ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' ) )
            int alt69=2;
            int LA69_0 = input.LA(1);

            if ( (LA69_0==22) ) {
                alt69=1;
            }
            else if ( (LA69_0==31) ) {
                alt69=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 69, 0, input);

                throw nvae;
            }
            switch (alt69) {
                case 1 :
                    // InternalAlf.g:3087:2: ( (lv_isStub_1_0= ';' ) )
                    {
                    // InternalAlf.g:3087:2: ( (lv_isStub_1_0= ';' ) )
                    // InternalAlf.g:3088:1: (lv_isStub_1_0= ';' )
                    {
                    // InternalAlf.g:3088:1: (lv_isStub_1_0= ';' )
                    // InternalAlf.g:3089:3: lv_isStub_1_0= ';'
                    {
                    lv_isStub_1_0=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_isStub_1_0, grammarAccess.getAssociationDefinitionOrStubAccess().getIsStubSemicolonKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getAssociationDefinitionOrStubRule());
                      	        }
                             		setWithLastConsumed(current, "isStub", true, ";");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalAlf.g:3103:6: (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' )
                    {
                    // InternalAlf.g:3103:6: (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' )
                    // InternalAlf.g:3103:8: otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}'
                    {
                    otherlv_2=(Token)match(input,31,FOLLOW_35); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getAssociationDefinitionOrStubAccess().getLeftCurlyBracketKeyword_1_1_0());
                          
                    }
                    // InternalAlf.g:3107:1: ( (lv_ownedMember_3_0= ruleStructuredMember ) )*
                    loop68:
                    do {
                        int alt68=2;
                        int LA68_0 = input.LA(1);

                        if ( (LA68_0==RULE_DOCUMENTATION_COMMENT||(LA68_0>=RULE_ID && LA68_0<=RULE_UNRESTRICTED_NAME)||LA68_0==15||LA68_0==27) ) {
                            alt68=1;
                        }


                        switch (alt68) {
                    	case 1 :
                    	    // InternalAlf.g:3108:1: (lv_ownedMember_3_0= ruleStructuredMember )
                    	    {
                    	    // InternalAlf.g:3108:1: (lv_ownedMember_3_0= ruleStructuredMember )
                    	    // InternalAlf.g:3109:3: lv_ownedMember_3_0= ruleStructuredMember
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getAssociationDefinitionOrStubAccess().getOwnedMemberStructuredMemberParserRuleCall_1_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_35);
                    	    lv_ownedMember_3_0=ruleStructuredMember();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getAssociationDefinitionOrStubRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"ownedMember",
                    	              		lv_ownedMember_3_0, 
                    	              		"org.eclipse.papyrus.uml.alf.Alf.StructuredMember");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop68;
                        }
                    } while (true);

                    otherlv_4=(Token)match(input,32,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getAssociationDefinitionOrStubAccess().getRightCurlyBracketKeyword_1_1_2());
                          
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAssociationDefinitionOrStub"


    // $ANTLR start "entryRuleEnumerationDeclaration"
    // InternalAlf.g:3137:1: entryRuleEnumerationDeclaration returns [EObject current=null] : iv_ruleEnumerationDeclaration= ruleEnumerationDeclaration EOF ;
    public final EObject entryRuleEnumerationDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEnumerationDeclaration = null;


        try {
            // InternalAlf.g:3138:2: (iv_ruleEnumerationDeclaration= ruleEnumerationDeclaration EOF )
            // InternalAlf.g:3139:2: iv_ruleEnumerationDeclaration= ruleEnumerationDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getEnumerationDeclarationRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleEnumerationDeclaration=ruleEnumerationDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleEnumerationDeclaration; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEnumerationDeclaration"


    // $ANTLR start "ruleEnumerationDeclaration"
    // InternalAlf.g:3146:1: ruleEnumerationDeclaration returns [EObject current=null] : (otherlv_0= 'enum' ( (lv_name_1_0= ruleName ) ) ( (lv_specialization_2_0= ruleSpecializationClause ) )? ) ;
    public final EObject ruleEnumerationDeclaration() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_specialization_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:3149:28: ( (otherlv_0= 'enum' ( (lv_name_1_0= ruleName ) ) ( (lv_specialization_2_0= ruleSpecializationClause ) )? ) )
            // InternalAlf.g:3150:1: (otherlv_0= 'enum' ( (lv_name_1_0= ruleName ) ) ( (lv_specialization_2_0= ruleSpecializationClause ) )? )
            {
            // InternalAlf.g:3150:1: (otherlv_0= 'enum' ( (lv_name_1_0= ruleName ) ) ( (lv_specialization_2_0= ruleSpecializationClause ) )? )
            // InternalAlf.g:3150:3: otherlv_0= 'enum' ( (lv_name_1_0= ruleName ) ) ( (lv_specialization_2_0= ruleSpecializationClause ) )?
            {
            otherlv_0=(Token)match(input,42,FOLLOW_4); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getEnumerationDeclarationAccess().getEnumKeyword_0());
                  
            }
            // InternalAlf.g:3154:1: ( (lv_name_1_0= ruleName ) )
            // InternalAlf.g:3155:1: (lv_name_1_0= ruleName )
            {
            // InternalAlf.g:3155:1: (lv_name_1_0= ruleName )
            // InternalAlf.g:3156:3: lv_name_1_0= ruleName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getEnumerationDeclarationAccess().getNameNameParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_22);
            lv_name_1_0=ruleName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getEnumerationDeclarationRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Name");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:3172:2: ( (lv_specialization_2_0= ruleSpecializationClause ) )?
            int alt70=2;
            int LA70_0 = input.LA(1);

            if ( (LA70_0==33) ) {
                alt70=1;
            }
            switch (alt70) {
                case 1 :
                    // InternalAlf.g:3173:1: (lv_specialization_2_0= ruleSpecializationClause )
                    {
                    // InternalAlf.g:3173:1: (lv_specialization_2_0= ruleSpecializationClause )
                    // InternalAlf.g:3174:3: lv_specialization_2_0= ruleSpecializationClause
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getEnumerationDeclarationAccess().getSpecializationSpecializationClauseParserRuleCall_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_specialization_2_0=ruleSpecializationClause();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getEnumerationDeclarationRule());
                      	        }
                             		set(
                             			current, 
                             			"specialization",
                              		lv_specialization_2_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.SpecializationClause");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEnumerationDeclaration"


    // $ANTLR start "entryRuleEnumerationDefinition"
    // InternalAlf.g:3198:1: entryRuleEnumerationDefinition returns [EObject current=null] : iv_ruleEnumerationDefinition= ruleEnumerationDefinition EOF ;
    public final EObject entryRuleEnumerationDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEnumerationDefinition = null;


        try {
            // InternalAlf.g:3199:2: (iv_ruleEnumerationDefinition= ruleEnumerationDefinition EOF )
            // InternalAlf.g:3200:2: iv_ruleEnumerationDefinition= ruleEnumerationDefinition EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getEnumerationDefinitionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleEnumerationDefinition=ruleEnumerationDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleEnumerationDefinition; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEnumerationDefinition"


    // $ANTLR start "ruleEnumerationDefinition"
    // InternalAlf.g:3207:1: ruleEnumerationDefinition returns [EObject current=null] : (this_EnumerationDeclaration_0= ruleEnumerationDeclaration otherlv_1= '{' ( ( (lv_ownedMember_2_0= ruleEnumerationLiteralName ) ) (otherlv_3= ',' ( (lv_ownedMember_4_0= ruleEnumerationLiteralName ) ) )* )? otherlv_5= '}' ) ;
    public final EObject ruleEnumerationDefinition() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject this_EnumerationDeclaration_0 = null;

        EObject lv_ownedMember_2_0 = null;

        EObject lv_ownedMember_4_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:3210:28: ( (this_EnumerationDeclaration_0= ruleEnumerationDeclaration otherlv_1= '{' ( ( (lv_ownedMember_2_0= ruleEnumerationLiteralName ) ) (otherlv_3= ',' ( (lv_ownedMember_4_0= ruleEnumerationLiteralName ) ) )* )? otherlv_5= '}' ) )
            // InternalAlf.g:3211:1: (this_EnumerationDeclaration_0= ruleEnumerationDeclaration otherlv_1= '{' ( ( (lv_ownedMember_2_0= ruleEnumerationLiteralName ) ) (otherlv_3= ',' ( (lv_ownedMember_4_0= ruleEnumerationLiteralName ) ) )* )? otherlv_5= '}' )
            {
            // InternalAlf.g:3211:1: (this_EnumerationDeclaration_0= ruleEnumerationDeclaration otherlv_1= '{' ( ( (lv_ownedMember_2_0= ruleEnumerationLiteralName ) ) (otherlv_3= ',' ( (lv_ownedMember_4_0= ruleEnumerationLiteralName ) ) )* )? otherlv_5= '}' )
            // InternalAlf.g:3212:2: this_EnumerationDeclaration_0= ruleEnumerationDeclaration otherlv_1= '{' ( ( (lv_ownedMember_2_0= ruleEnumerationLiteralName ) ) (otherlv_3= ',' ( (lv_ownedMember_4_0= ruleEnumerationLiteralName ) ) )* )? otherlv_5= '}'
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getEnumerationDefinitionAccess().getEnumerationDeclarationParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_18);
            this_EnumerationDeclaration_0=ruleEnumerationDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_EnumerationDeclaration_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            otherlv_1=(Token)match(input,31,FOLLOW_38); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getEnumerationDefinitionAccess().getLeftCurlyBracketKeyword_1());
                  
            }
            // InternalAlf.g:3227:1: ( ( (lv_ownedMember_2_0= ruleEnumerationLiteralName ) ) (otherlv_3= ',' ( (lv_ownedMember_4_0= ruleEnumerationLiteralName ) ) )* )?
            int alt72=2;
            int LA72_0 = input.LA(1);

            if ( (LA72_0==RULE_DOCUMENTATION_COMMENT||(LA72_0>=RULE_ID && LA72_0<=RULE_UNRESTRICTED_NAME)) ) {
                alt72=1;
            }
            switch (alt72) {
                case 1 :
                    // InternalAlf.g:3227:2: ( (lv_ownedMember_2_0= ruleEnumerationLiteralName ) ) (otherlv_3= ',' ( (lv_ownedMember_4_0= ruleEnumerationLiteralName ) ) )*
                    {
                    // InternalAlf.g:3227:2: ( (lv_ownedMember_2_0= ruleEnumerationLiteralName ) )
                    // InternalAlf.g:3228:1: (lv_ownedMember_2_0= ruleEnumerationLiteralName )
                    {
                    // InternalAlf.g:3228:1: (lv_ownedMember_2_0= ruleEnumerationLiteralName )
                    // InternalAlf.g:3229:3: lv_ownedMember_2_0= ruleEnumerationLiteralName
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getEnumerationDefinitionAccess().getOwnedMemberEnumerationLiteralNameParserRuleCall_2_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_39);
                    lv_ownedMember_2_0=ruleEnumerationLiteralName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getEnumerationDefinitionRule());
                      	        }
                             		add(
                             			current, 
                             			"ownedMember",
                              		lv_ownedMember_2_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.EnumerationLiteralName");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // InternalAlf.g:3245:2: (otherlv_3= ',' ( (lv_ownedMember_4_0= ruleEnumerationLiteralName ) ) )*
                    loop71:
                    do {
                        int alt71=2;
                        int LA71_0 = input.LA(1);

                        if ( (LA71_0==18) ) {
                            alt71=1;
                        }


                        switch (alt71) {
                    	case 1 :
                    	    // InternalAlf.g:3245:4: otherlv_3= ',' ( (lv_ownedMember_4_0= ruleEnumerationLiteralName ) )
                    	    {
                    	    otherlv_3=(Token)match(input,18,FOLLOW_25); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_3, grammarAccess.getEnumerationDefinitionAccess().getCommaKeyword_2_1_0());
                    	          
                    	    }
                    	    // InternalAlf.g:3249:1: ( (lv_ownedMember_4_0= ruleEnumerationLiteralName ) )
                    	    // InternalAlf.g:3250:1: (lv_ownedMember_4_0= ruleEnumerationLiteralName )
                    	    {
                    	    // InternalAlf.g:3250:1: (lv_ownedMember_4_0= ruleEnumerationLiteralName )
                    	    // InternalAlf.g:3251:3: lv_ownedMember_4_0= ruleEnumerationLiteralName
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getEnumerationDefinitionAccess().getOwnedMemberEnumerationLiteralNameParserRuleCall_2_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_39);
                    	    lv_ownedMember_4_0=ruleEnumerationLiteralName();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getEnumerationDefinitionRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"ownedMember",
                    	              		lv_ownedMember_4_0, 
                    	              		"org.eclipse.papyrus.uml.alf.Alf.EnumerationLiteralName");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop71;
                        }
                    } while (true);


                    }
                    break;

            }

            otherlv_5=(Token)match(input,32,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_5, grammarAccess.getEnumerationDefinitionAccess().getRightCurlyBracketKeyword_3());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEnumerationDefinition"


    // $ANTLR start "entryRuleEnumerationDefinitionOrStub"
    // InternalAlf.g:3279:1: entryRuleEnumerationDefinitionOrStub returns [EObject current=null] : iv_ruleEnumerationDefinitionOrStub= ruleEnumerationDefinitionOrStub EOF ;
    public final EObject entryRuleEnumerationDefinitionOrStub() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEnumerationDefinitionOrStub = null;


        try {
            // InternalAlf.g:3280:2: (iv_ruleEnumerationDefinitionOrStub= ruleEnumerationDefinitionOrStub EOF )
            // InternalAlf.g:3281:2: iv_ruleEnumerationDefinitionOrStub= ruleEnumerationDefinitionOrStub EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getEnumerationDefinitionOrStubRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleEnumerationDefinitionOrStub=ruleEnumerationDefinitionOrStub();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleEnumerationDefinitionOrStub; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEnumerationDefinitionOrStub"


    // $ANTLR start "ruleEnumerationDefinitionOrStub"
    // InternalAlf.g:3288:1: ruleEnumerationDefinitionOrStub returns [EObject current=null] : (this_EnumerationDeclaration_0= ruleEnumerationDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( ( (lv_ownedMember_3_0= ruleEnumerationLiteralName ) ) (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleEnumerationLiteralName ) ) )* )? otherlv_6= '}' ) ) ) ;
    public final EObject ruleEnumerationDefinitionOrStub() throws RecognitionException {
        EObject current = null;

        Token lv_isStub_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject this_EnumerationDeclaration_0 = null;

        EObject lv_ownedMember_3_0 = null;

        EObject lv_ownedMember_5_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:3291:28: ( (this_EnumerationDeclaration_0= ruleEnumerationDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( ( (lv_ownedMember_3_0= ruleEnumerationLiteralName ) ) (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleEnumerationLiteralName ) ) )* )? otherlv_6= '}' ) ) ) )
            // InternalAlf.g:3292:1: (this_EnumerationDeclaration_0= ruleEnumerationDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( ( (lv_ownedMember_3_0= ruleEnumerationLiteralName ) ) (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleEnumerationLiteralName ) ) )* )? otherlv_6= '}' ) ) )
            {
            // InternalAlf.g:3292:1: (this_EnumerationDeclaration_0= ruleEnumerationDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( ( (lv_ownedMember_3_0= ruleEnumerationLiteralName ) ) (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleEnumerationLiteralName ) ) )* )? otherlv_6= '}' ) ) )
            // InternalAlf.g:3293:2: this_EnumerationDeclaration_0= ruleEnumerationDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( ( (lv_ownedMember_3_0= ruleEnumerationLiteralName ) ) (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleEnumerationLiteralName ) ) )* )? otherlv_6= '}' ) )
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getEnumerationDefinitionOrStubAccess().getEnumerationDeclarationParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_20);
            this_EnumerationDeclaration_0=ruleEnumerationDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_EnumerationDeclaration_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:3304:1: ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( ( (lv_ownedMember_3_0= ruleEnumerationLiteralName ) ) (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleEnumerationLiteralName ) ) )* )? otherlv_6= '}' ) )
            int alt75=2;
            int LA75_0 = input.LA(1);

            if ( (LA75_0==22) ) {
                alt75=1;
            }
            else if ( (LA75_0==31) ) {
                alt75=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 75, 0, input);

                throw nvae;
            }
            switch (alt75) {
                case 1 :
                    // InternalAlf.g:3304:2: ( (lv_isStub_1_0= ';' ) )
                    {
                    // InternalAlf.g:3304:2: ( (lv_isStub_1_0= ';' ) )
                    // InternalAlf.g:3305:1: (lv_isStub_1_0= ';' )
                    {
                    // InternalAlf.g:3305:1: (lv_isStub_1_0= ';' )
                    // InternalAlf.g:3306:3: lv_isStub_1_0= ';'
                    {
                    lv_isStub_1_0=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_isStub_1_0, grammarAccess.getEnumerationDefinitionOrStubAccess().getIsStubSemicolonKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getEnumerationDefinitionOrStubRule());
                      	        }
                             		setWithLastConsumed(current, "isStub", true, ";");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalAlf.g:3320:6: (otherlv_2= '{' ( ( (lv_ownedMember_3_0= ruleEnumerationLiteralName ) ) (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleEnumerationLiteralName ) ) )* )? otherlv_6= '}' )
                    {
                    // InternalAlf.g:3320:6: (otherlv_2= '{' ( ( (lv_ownedMember_3_0= ruleEnumerationLiteralName ) ) (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleEnumerationLiteralName ) ) )* )? otherlv_6= '}' )
                    // InternalAlf.g:3320:8: otherlv_2= '{' ( ( (lv_ownedMember_3_0= ruleEnumerationLiteralName ) ) (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleEnumerationLiteralName ) ) )* )? otherlv_6= '}'
                    {
                    otherlv_2=(Token)match(input,31,FOLLOW_38); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getEnumerationDefinitionOrStubAccess().getLeftCurlyBracketKeyword_1_1_0());
                          
                    }
                    // InternalAlf.g:3324:1: ( ( (lv_ownedMember_3_0= ruleEnumerationLiteralName ) ) (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleEnumerationLiteralName ) ) )* )?
                    int alt74=2;
                    int LA74_0 = input.LA(1);

                    if ( (LA74_0==RULE_DOCUMENTATION_COMMENT||(LA74_0>=RULE_ID && LA74_0<=RULE_UNRESTRICTED_NAME)) ) {
                        alt74=1;
                    }
                    switch (alt74) {
                        case 1 :
                            // InternalAlf.g:3324:2: ( (lv_ownedMember_3_0= ruleEnumerationLiteralName ) ) (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleEnumerationLiteralName ) ) )*
                            {
                            // InternalAlf.g:3324:2: ( (lv_ownedMember_3_0= ruleEnumerationLiteralName ) )
                            // InternalAlf.g:3325:1: (lv_ownedMember_3_0= ruleEnumerationLiteralName )
                            {
                            // InternalAlf.g:3325:1: (lv_ownedMember_3_0= ruleEnumerationLiteralName )
                            // InternalAlf.g:3326:3: lv_ownedMember_3_0= ruleEnumerationLiteralName
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getEnumerationDefinitionOrStubAccess().getOwnedMemberEnumerationLiteralNameParserRuleCall_1_1_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_39);
                            lv_ownedMember_3_0=ruleEnumerationLiteralName();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getEnumerationDefinitionOrStubRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"ownedMember",
                                      		lv_ownedMember_3_0, 
                                      		"org.eclipse.papyrus.uml.alf.Alf.EnumerationLiteralName");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // InternalAlf.g:3342:2: (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleEnumerationLiteralName ) ) )*
                            loop73:
                            do {
                                int alt73=2;
                                int LA73_0 = input.LA(1);

                                if ( (LA73_0==18) ) {
                                    alt73=1;
                                }


                                switch (alt73) {
                            	case 1 :
                            	    // InternalAlf.g:3342:4: otherlv_4= ',' ( (lv_ownedMember_5_0= ruleEnumerationLiteralName ) )
                            	    {
                            	    otherlv_4=(Token)match(input,18,FOLLOW_25); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_4, grammarAccess.getEnumerationDefinitionOrStubAccess().getCommaKeyword_1_1_1_1_0());
                            	          
                            	    }
                            	    // InternalAlf.g:3346:1: ( (lv_ownedMember_5_0= ruleEnumerationLiteralName ) )
                            	    // InternalAlf.g:3347:1: (lv_ownedMember_5_0= ruleEnumerationLiteralName )
                            	    {
                            	    // InternalAlf.g:3347:1: (lv_ownedMember_5_0= ruleEnumerationLiteralName )
                            	    // InternalAlf.g:3348:3: lv_ownedMember_5_0= ruleEnumerationLiteralName
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getEnumerationDefinitionOrStubAccess().getOwnedMemberEnumerationLiteralNameParserRuleCall_1_1_1_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_39);
                            	    lv_ownedMember_5_0=ruleEnumerationLiteralName();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getEnumerationDefinitionOrStubRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"ownedMember",
                            	              		lv_ownedMember_5_0, 
                            	              		"org.eclipse.papyrus.uml.alf.Alf.EnumerationLiteralName");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop73;
                                }
                            } while (true);


                            }
                            break;

                    }

                    otherlv_6=(Token)match(input,32,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getEnumerationDefinitionOrStubAccess().getRightCurlyBracketKeyword_1_1_2());
                          
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEnumerationDefinitionOrStub"


    // $ANTLR start "entryRuleEnumerationLiteralName"
    // InternalAlf.g:3376:1: entryRuleEnumerationLiteralName returns [EObject current=null] : iv_ruleEnumerationLiteralName= ruleEnumerationLiteralName EOF ;
    public final EObject entryRuleEnumerationLiteralName() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEnumerationLiteralName = null;


        try {
            // InternalAlf.g:3377:2: (iv_ruleEnumerationLiteralName= ruleEnumerationLiteralName EOF )
            // InternalAlf.g:3378:2: iv_ruleEnumerationLiteralName= ruleEnumerationLiteralName EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getEnumerationLiteralNameRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleEnumerationLiteralName=ruleEnumerationLiteralName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleEnumerationLiteralName; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEnumerationLiteralName"


    // $ANTLR start "ruleEnumerationLiteralName"
    // InternalAlf.g:3385:1: ruleEnumerationLiteralName returns [EObject current=null] : ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_definition_1_0= ruleEnumerationLiteralNameDefinition ) ) ) ;
    public final EObject ruleEnumerationLiteralName() throws RecognitionException {
        EObject current = null;

        Token lv_documentation_0_0=null;
        EObject lv_definition_1_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:3388:28: ( ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_definition_1_0= ruleEnumerationLiteralNameDefinition ) ) ) )
            // InternalAlf.g:3389:1: ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_definition_1_0= ruleEnumerationLiteralNameDefinition ) ) )
            {
            // InternalAlf.g:3389:1: ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_definition_1_0= ruleEnumerationLiteralNameDefinition ) ) )
            // InternalAlf.g:3389:2: ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_definition_1_0= ruleEnumerationLiteralNameDefinition ) )
            {
            // InternalAlf.g:3389:2: ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )?
            int alt76=2;
            int LA76_0 = input.LA(1);

            if ( (LA76_0==RULE_DOCUMENTATION_COMMENT) ) {
                alt76=1;
            }
            switch (alt76) {
                case 1 :
                    // InternalAlf.g:3390:1: (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT )
                    {
                    // InternalAlf.g:3390:1: (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT )
                    // InternalAlf.g:3391:3: lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT
                    {
                    lv_documentation_0_0=(Token)match(input,RULE_DOCUMENTATION_COMMENT,FOLLOW_25); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_documentation_0_0, grammarAccess.getEnumerationLiteralNameAccess().getDocumentationDOCUMENTATION_COMMENTTerminalRuleCall_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getEnumerationLiteralNameRule());
                      	        }
                             		addWithLastConsumed(
                             			current, 
                             			"documentation",
                              		lv_documentation_0_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.DOCUMENTATION_COMMENT");
                      	    
                    }

                    }


                    }
                    break;

            }

            // InternalAlf.g:3407:3: ( (lv_definition_1_0= ruleEnumerationLiteralNameDefinition ) )
            // InternalAlf.g:3408:1: (lv_definition_1_0= ruleEnumerationLiteralNameDefinition )
            {
            // InternalAlf.g:3408:1: (lv_definition_1_0= ruleEnumerationLiteralNameDefinition )
            // InternalAlf.g:3409:3: lv_definition_1_0= ruleEnumerationLiteralNameDefinition
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getEnumerationLiteralNameAccess().getDefinitionEnumerationLiteralNameDefinitionParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_definition_1_0=ruleEnumerationLiteralNameDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getEnumerationLiteralNameRule());
              	        }
                     		set(
                     			current, 
                     			"definition",
                      		lv_definition_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.EnumerationLiteralNameDefinition");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEnumerationLiteralName"


    // $ANTLR start "entryRuleEnumerationLiteralNameDefinition"
    // InternalAlf.g:3433:1: entryRuleEnumerationLiteralNameDefinition returns [EObject current=null] : iv_ruleEnumerationLiteralNameDefinition= ruleEnumerationLiteralNameDefinition EOF ;
    public final EObject entryRuleEnumerationLiteralNameDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEnumerationLiteralNameDefinition = null;


        try {
            // InternalAlf.g:3434:2: (iv_ruleEnumerationLiteralNameDefinition= ruleEnumerationLiteralNameDefinition EOF )
            // InternalAlf.g:3435:2: iv_ruleEnumerationLiteralNameDefinition= ruleEnumerationLiteralNameDefinition EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getEnumerationLiteralNameDefinitionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleEnumerationLiteralNameDefinition=ruleEnumerationLiteralNameDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleEnumerationLiteralNameDefinition; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEnumerationLiteralNameDefinition"


    // $ANTLR start "ruleEnumerationLiteralNameDefinition"
    // InternalAlf.g:3442:1: ruleEnumerationLiteralNameDefinition returns [EObject current=null] : ( (lv_name_0_0= ruleName ) ) ;
    public final EObject ruleEnumerationLiteralNameDefinition() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_name_0_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:3445:28: ( ( (lv_name_0_0= ruleName ) ) )
            // InternalAlf.g:3446:1: ( (lv_name_0_0= ruleName ) )
            {
            // InternalAlf.g:3446:1: ( (lv_name_0_0= ruleName ) )
            // InternalAlf.g:3447:1: (lv_name_0_0= ruleName )
            {
            // InternalAlf.g:3447:1: (lv_name_0_0= ruleName )
            // InternalAlf.g:3448:3: lv_name_0_0= ruleName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getEnumerationLiteralNameDefinitionAccess().getNameNameParserRuleCall_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_name_0_0=ruleName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getEnumerationLiteralNameDefinitionRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Name");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEnumerationLiteralNameDefinition"


    // $ANTLR start "entryRuleSignalDeclaration"
    // InternalAlf.g:3472:1: entryRuleSignalDeclaration returns [EObject current=null] : iv_ruleSignalDeclaration= ruleSignalDeclaration EOF ;
    public final EObject entryRuleSignalDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSignalDeclaration = null;


        try {
            // InternalAlf.g:3473:2: (iv_ruleSignalDeclaration= ruleSignalDeclaration EOF )
            // InternalAlf.g:3474:2: iv_ruleSignalDeclaration= ruleSignalDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSignalDeclarationRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSignalDeclaration=ruleSignalDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSignalDeclaration; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSignalDeclaration"


    // $ANTLR start "ruleSignalDeclaration"
    // InternalAlf.g:3481:1: ruleSignalDeclaration returns [EObject current=null] : ( ( (lv_isAbstract_0_0= 'abstract' ) )? otherlv_1= 'signal' ( (lv_name_2_0= ruleName ) ) (otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>' )? ( (lv_specialization_8_0= ruleSpecializationClause ) )? ) ;
    public final EObject ruleSignalDeclaration() throws RecognitionException {
        EObject current = null;

        Token lv_isAbstract_0_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        AntlrDatatypeRuleToken lv_name_2_0 = null;

        EObject lv_ownedMember_4_0 = null;

        EObject lv_ownedMember_6_0 = null;

        EObject lv_specialization_8_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:3484:28: ( ( ( (lv_isAbstract_0_0= 'abstract' ) )? otherlv_1= 'signal' ( (lv_name_2_0= ruleName ) ) (otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>' )? ( (lv_specialization_8_0= ruleSpecializationClause ) )? ) )
            // InternalAlf.g:3485:1: ( ( (lv_isAbstract_0_0= 'abstract' ) )? otherlv_1= 'signal' ( (lv_name_2_0= ruleName ) ) (otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>' )? ( (lv_specialization_8_0= ruleSpecializationClause ) )? )
            {
            // InternalAlf.g:3485:1: ( ( (lv_isAbstract_0_0= 'abstract' ) )? otherlv_1= 'signal' ( (lv_name_2_0= ruleName ) ) (otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>' )? ( (lv_specialization_8_0= ruleSpecializationClause ) )? )
            // InternalAlf.g:3485:2: ( (lv_isAbstract_0_0= 'abstract' ) )? otherlv_1= 'signal' ( (lv_name_2_0= ruleName ) ) (otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>' )? ( (lv_specialization_8_0= ruleSpecializationClause ) )?
            {
            // InternalAlf.g:3485:2: ( (lv_isAbstract_0_0= 'abstract' ) )?
            int alt77=2;
            int LA77_0 = input.LA(1);

            if ( (LA77_0==34) ) {
                alt77=1;
            }
            switch (alt77) {
                case 1 :
                    // InternalAlf.g:3486:1: (lv_isAbstract_0_0= 'abstract' )
                    {
                    // InternalAlf.g:3486:1: (lv_isAbstract_0_0= 'abstract' )
                    // InternalAlf.g:3487:3: lv_isAbstract_0_0= 'abstract'
                    {
                    lv_isAbstract_0_0=(Token)match(input,34,FOLLOW_40); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_isAbstract_0_0, grammarAccess.getSignalDeclarationAccess().getIsAbstractAbstractKeyword_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getSignalDeclarationRule());
                      	        }
                             		setWithLastConsumed(current, "isAbstract", true, "abstract");
                      	    
                    }

                    }


                    }
                    break;

            }

            otherlv_1=(Token)match(input,43,FOLLOW_4); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getSignalDeclarationAccess().getSignalKeyword_1());
                  
            }
            // InternalAlf.g:3504:1: ( (lv_name_2_0= ruleName ) )
            // InternalAlf.g:3505:1: (lv_name_2_0= ruleName )
            {
            // InternalAlf.g:3505:1: (lv_name_2_0= ruleName )
            // InternalAlf.g:3506:3: lv_name_2_0= ruleName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getSignalDeclarationAccess().getNameNameParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_24);
            lv_name_2_0=ruleName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getSignalDeclarationRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_2_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Name");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:3522:2: (otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>' )?
            int alt79=2;
            int LA79_0 = input.LA(1);

            if ( (LA79_0==36) ) {
                alt79=1;
            }
            switch (alt79) {
                case 1 :
                    // InternalAlf.g:3522:4: otherlv_3= '<' ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) ) (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )* otherlv_7= '>'
                    {
                    otherlv_3=(Token)match(input,36,FOLLOW_25); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getSignalDeclarationAccess().getLessThanSignKeyword_3_0());
                          
                    }
                    // InternalAlf.g:3526:1: ( (lv_ownedMember_4_0= ruleClassifierTemplateParameter ) )
                    // InternalAlf.g:3527:1: (lv_ownedMember_4_0= ruleClassifierTemplateParameter )
                    {
                    // InternalAlf.g:3527:1: (lv_ownedMember_4_0= ruleClassifierTemplateParameter )
                    // InternalAlf.g:3528:3: lv_ownedMember_4_0= ruleClassifierTemplateParameter
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSignalDeclarationAccess().getOwnedMemberClassifierTemplateParameterParserRuleCall_3_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_26);
                    lv_ownedMember_4_0=ruleClassifierTemplateParameter();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSignalDeclarationRule());
                      	        }
                             		add(
                             			current, 
                             			"ownedMember",
                              		lv_ownedMember_4_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.ClassifierTemplateParameter");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // InternalAlf.g:3544:2: (otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) ) )*
                    loop78:
                    do {
                        int alt78=2;
                        int LA78_0 = input.LA(1);

                        if ( (LA78_0==18) ) {
                            alt78=1;
                        }


                        switch (alt78) {
                    	case 1 :
                    	    // InternalAlf.g:3544:4: otherlv_5= ',' ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) )
                    	    {
                    	    otherlv_5=(Token)match(input,18,FOLLOW_25); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_5, grammarAccess.getSignalDeclarationAccess().getCommaKeyword_3_2_0());
                    	          
                    	    }
                    	    // InternalAlf.g:3548:1: ( (lv_ownedMember_6_0= ruleClassifierTemplateParameter ) )
                    	    // InternalAlf.g:3549:1: (lv_ownedMember_6_0= ruleClassifierTemplateParameter )
                    	    {
                    	    // InternalAlf.g:3549:1: (lv_ownedMember_6_0= ruleClassifierTemplateParameter )
                    	    // InternalAlf.g:3550:3: lv_ownedMember_6_0= ruleClassifierTemplateParameter
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getSignalDeclarationAccess().getOwnedMemberClassifierTemplateParameterParserRuleCall_3_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_26);
                    	    lv_ownedMember_6_0=ruleClassifierTemplateParameter();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getSignalDeclarationRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"ownedMember",
                    	              		lv_ownedMember_6_0, 
                    	              		"org.eclipse.papyrus.uml.alf.Alf.ClassifierTemplateParameter");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop78;
                        }
                    } while (true);

                    otherlv_7=(Token)match(input,37,FOLLOW_22); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_7, grammarAccess.getSignalDeclarationAccess().getGreaterThanSignKeyword_3_3());
                          
                    }

                    }
                    break;

            }

            // InternalAlf.g:3570:3: ( (lv_specialization_8_0= ruleSpecializationClause ) )?
            int alt80=2;
            int LA80_0 = input.LA(1);

            if ( (LA80_0==33) ) {
                alt80=1;
            }
            switch (alt80) {
                case 1 :
                    // InternalAlf.g:3571:1: (lv_specialization_8_0= ruleSpecializationClause )
                    {
                    // InternalAlf.g:3571:1: (lv_specialization_8_0= ruleSpecializationClause )
                    // InternalAlf.g:3572:3: lv_specialization_8_0= ruleSpecializationClause
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSignalDeclarationAccess().getSpecializationSpecializationClauseParserRuleCall_4_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_specialization_8_0=ruleSpecializationClause();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSignalDeclarationRule());
                      	        }
                             		set(
                             			current, 
                             			"specialization",
                              		lv_specialization_8_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.SpecializationClause");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSignalDeclaration"


    // $ANTLR start "entryRuleSignalDefinition"
    // InternalAlf.g:3596:1: entryRuleSignalDefinition returns [EObject current=null] : iv_ruleSignalDefinition= ruleSignalDefinition EOF ;
    public final EObject entryRuleSignalDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSignalDefinition = null;


        try {
            // InternalAlf.g:3597:2: (iv_ruleSignalDefinition= ruleSignalDefinition EOF )
            // InternalAlf.g:3598:2: iv_ruleSignalDefinition= ruleSignalDefinition EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSignalDefinitionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSignalDefinition=ruleSignalDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSignalDefinition; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSignalDefinition"


    // $ANTLR start "ruleSignalDefinition"
    // InternalAlf.g:3605:1: ruleSignalDefinition returns [EObject current=null] : (this_SignalDeclaration_0= ruleSignalDeclaration otherlv_1= '{' ( (lv_ownedMember_2_0= ruleStructuredMember ) )* otherlv_3= '}' ) ;
    public final EObject ruleSignalDefinition() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject this_SignalDeclaration_0 = null;

        EObject lv_ownedMember_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:3608:28: ( (this_SignalDeclaration_0= ruleSignalDeclaration otherlv_1= '{' ( (lv_ownedMember_2_0= ruleStructuredMember ) )* otherlv_3= '}' ) )
            // InternalAlf.g:3609:1: (this_SignalDeclaration_0= ruleSignalDeclaration otherlv_1= '{' ( (lv_ownedMember_2_0= ruleStructuredMember ) )* otherlv_3= '}' )
            {
            // InternalAlf.g:3609:1: (this_SignalDeclaration_0= ruleSignalDeclaration otherlv_1= '{' ( (lv_ownedMember_2_0= ruleStructuredMember ) )* otherlv_3= '}' )
            // InternalAlf.g:3610:2: this_SignalDeclaration_0= ruleSignalDeclaration otherlv_1= '{' ( (lv_ownedMember_2_0= ruleStructuredMember ) )* otherlv_3= '}'
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getSignalDefinitionAccess().getSignalDeclarationParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_18);
            this_SignalDeclaration_0=ruleSignalDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_SignalDeclaration_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            otherlv_1=(Token)match(input,31,FOLLOW_35); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getSignalDefinitionAccess().getLeftCurlyBracketKeyword_1());
                  
            }
            // InternalAlf.g:3625:1: ( (lv_ownedMember_2_0= ruleStructuredMember ) )*
            loop81:
            do {
                int alt81=2;
                int LA81_0 = input.LA(1);

                if ( (LA81_0==RULE_DOCUMENTATION_COMMENT||(LA81_0>=RULE_ID && LA81_0<=RULE_UNRESTRICTED_NAME)||LA81_0==15||LA81_0==27) ) {
                    alt81=1;
                }


                switch (alt81) {
            	case 1 :
            	    // InternalAlf.g:3626:1: (lv_ownedMember_2_0= ruleStructuredMember )
            	    {
            	    // InternalAlf.g:3626:1: (lv_ownedMember_2_0= ruleStructuredMember )
            	    // InternalAlf.g:3627:3: lv_ownedMember_2_0= ruleStructuredMember
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getSignalDefinitionAccess().getOwnedMemberStructuredMemberParserRuleCall_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_35);
            	    lv_ownedMember_2_0=ruleStructuredMember();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getSignalDefinitionRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"ownedMember",
            	              		lv_ownedMember_2_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.StructuredMember");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop81;
                }
            } while (true);

            otherlv_3=(Token)match(input,32,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getSignalDefinitionAccess().getRightCurlyBracketKeyword_3());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSignalDefinition"


    // $ANTLR start "entryRuleSignalDefinitionOrStub"
    // InternalAlf.g:3655:1: entryRuleSignalDefinitionOrStub returns [EObject current=null] : iv_ruleSignalDefinitionOrStub= ruleSignalDefinitionOrStub EOF ;
    public final EObject entryRuleSignalDefinitionOrStub() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSignalDefinitionOrStub = null;


        try {
            // InternalAlf.g:3656:2: (iv_ruleSignalDefinitionOrStub= ruleSignalDefinitionOrStub EOF )
            // InternalAlf.g:3657:2: iv_ruleSignalDefinitionOrStub= ruleSignalDefinitionOrStub EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSignalDefinitionOrStubRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSignalDefinitionOrStub=ruleSignalDefinitionOrStub();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSignalDefinitionOrStub; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSignalDefinitionOrStub"


    // $ANTLR start "ruleSignalDefinitionOrStub"
    // InternalAlf.g:3664:1: ruleSignalDefinitionOrStub returns [EObject current=null] : (this_SignalDeclaration_0= ruleSignalDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' ) ) ) ;
    public final EObject ruleSignalDefinitionOrStub() throws RecognitionException {
        EObject current = null;

        Token lv_isStub_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject this_SignalDeclaration_0 = null;

        EObject lv_ownedMember_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:3667:28: ( (this_SignalDeclaration_0= ruleSignalDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' ) ) ) )
            // InternalAlf.g:3668:1: (this_SignalDeclaration_0= ruleSignalDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' ) ) )
            {
            // InternalAlf.g:3668:1: (this_SignalDeclaration_0= ruleSignalDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' ) ) )
            // InternalAlf.g:3669:2: this_SignalDeclaration_0= ruleSignalDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' ) )
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getSignalDefinitionOrStubAccess().getSignalDeclarationParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_20);
            this_SignalDeclaration_0=ruleSignalDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_SignalDeclaration_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:3680:1: ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' ) )
            int alt83=2;
            int LA83_0 = input.LA(1);

            if ( (LA83_0==22) ) {
                alt83=1;
            }
            else if ( (LA83_0==31) ) {
                alt83=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 83, 0, input);

                throw nvae;
            }
            switch (alt83) {
                case 1 :
                    // InternalAlf.g:3680:2: ( (lv_isStub_1_0= ';' ) )
                    {
                    // InternalAlf.g:3680:2: ( (lv_isStub_1_0= ';' ) )
                    // InternalAlf.g:3681:1: (lv_isStub_1_0= ';' )
                    {
                    // InternalAlf.g:3681:1: (lv_isStub_1_0= ';' )
                    // InternalAlf.g:3682:3: lv_isStub_1_0= ';'
                    {
                    lv_isStub_1_0=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_isStub_1_0, grammarAccess.getSignalDefinitionOrStubAccess().getIsStubSemicolonKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getSignalDefinitionOrStubRule());
                      	        }
                             		setWithLastConsumed(current, "isStub", true, ";");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalAlf.g:3696:6: (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' )
                    {
                    // InternalAlf.g:3696:6: (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' )
                    // InternalAlf.g:3696:8: otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}'
                    {
                    otherlv_2=(Token)match(input,31,FOLLOW_35); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getSignalDefinitionOrStubAccess().getLeftCurlyBracketKeyword_1_1_0());
                          
                    }
                    // InternalAlf.g:3700:1: ( (lv_ownedMember_3_0= ruleStructuredMember ) )*
                    loop82:
                    do {
                        int alt82=2;
                        int LA82_0 = input.LA(1);

                        if ( (LA82_0==RULE_DOCUMENTATION_COMMENT||(LA82_0>=RULE_ID && LA82_0<=RULE_UNRESTRICTED_NAME)||LA82_0==15||LA82_0==27) ) {
                            alt82=1;
                        }


                        switch (alt82) {
                    	case 1 :
                    	    // InternalAlf.g:3701:1: (lv_ownedMember_3_0= ruleStructuredMember )
                    	    {
                    	    // InternalAlf.g:3701:1: (lv_ownedMember_3_0= ruleStructuredMember )
                    	    // InternalAlf.g:3702:3: lv_ownedMember_3_0= ruleStructuredMember
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getSignalDefinitionOrStubAccess().getOwnedMemberStructuredMemberParserRuleCall_1_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_35);
                    	    lv_ownedMember_3_0=ruleStructuredMember();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getSignalDefinitionOrStubRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"ownedMember",
                    	              		lv_ownedMember_3_0, 
                    	              		"org.eclipse.papyrus.uml.alf.Alf.StructuredMember");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop82;
                        }
                    } while (true);

                    otherlv_4=(Token)match(input,32,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getSignalDefinitionOrStubAccess().getRightCurlyBracketKeyword_1_1_2());
                          
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSignalDefinitionOrStub"


    // $ANTLR start "entryRuleActivityDeclaration"
    // InternalAlf.g:3730:1: entryRuleActivityDeclaration returns [EObject current=null] : iv_ruleActivityDeclaration= ruleActivityDeclaration EOF ;
    public final EObject entryRuleActivityDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleActivityDeclaration = null;


        try {
            // InternalAlf.g:3731:2: (iv_ruleActivityDeclaration= ruleActivityDeclaration EOF )
            // InternalAlf.g:3732:2: iv_ruleActivityDeclaration= ruleActivityDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getActivityDeclarationRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleActivityDeclaration=ruleActivityDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleActivityDeclaration; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleActivityDeclaration"


    // $ANTLR start "ruleActivityDeclaration"
    // InternalAlf.g:3739:1: ruleActivityDeclaration returns [EObject current=null] : (otherlv_0= 'activity' ( (lv_name_1_0= ruleName ) ) (otherlv_2= '<' ( (lv_ownedMember_3_0= ruleClassifierTemplateParameter ) ) (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleClassifierTemplateParameter ) ) )* otherlv_6= '>' )? otherlv_7= '(' ( ( (lv_ownedMember_8_0= ruleFormalParameter ) ) (otherlv_9= ',' ( (lv_ownedMember_10_0= ruleFormalParameter ) ) )* )? otherlv_11= ')' ( (lv_ownedMember_12_0= ruleReturnParameter ) )? ) ;
    public final EObject ruleActivityDeclaration() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_11=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_ownedMember_3_0 = null;

        EObject lv_ownedMember_5_0 = null;

        EObject lv_ownedMember_8_0 = null;

        EObject lv_ownedMember_10_0 = null;

        EObject lv_ownedMember_12_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:3742:28: ( (otherlv_0= 'activity' ( (lv_name_1_0= ruleName ) ) (otherlv_2= '<' ( (lv_ownedMember_3_0= ruleClassifierTemplateParameter ) ) (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleClassifierTemplateParameter ) ) )* otherlv_6= '>' )? otherlv_7= '(' ( ( (lv_ownedMember_8_0= ruleFormalParameter ) ) (otherlv_9= ',' ( (lv_ownedMember_10_0= ruleFormalParameter ) ) )* )? otherlv_11= ')' ( (lv_ownedMember_12_0= ruleReturnParameter ) )? ) )
            // InternalAlf.g:3743:1: (otherlv_0= 'activity' ( (lv_name_1_0= ruleName ) ) (otherlv_2= '<' ( (lv_ownedMember_3_0= ruleClassifierTemplateParameter ) ) (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleClassifierTemplateParameter ) ) )* otherlv_6= '>' )? otherlv_7= '(' ( ( (lv_ownedMember_8_0= ruleFormalParameter ) ) (otherlv_9= ',' ( (lv_ownedMember_10_0= ruleFormalParameter ) ) )* )? otherlv_11= ')' ( (lv_ownedMember_12_0= ruleReturnParameter ) )? )
            {
            // InternalAlf.g:3743:1: (otherlv_0= 'activity' ( (lv_name_1_0= ruleName ) ) (otherlv_2= '<' ( (lv_ownedMember_3_0= ruleClassifierTemplateParameter ) ) (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleClassifierTemplateParameter ) ) )* otherlv_6= '>' )? otherlv_7= '(' ( ( (lv_ownedMember_8_0= ruleFormalParameter ) ) (otherlv_9= ',' ( (lv_ownedMember_10_0= ruleFormalParameter ) ) )* )? otherlv_11= ')' ( (lv_ownedMember_12_0= ruleReturnParameter ) )? )
            // InternalAlf.g:3743:3: otherlv_0= 'activity' ( (lv_name_1_0= ruleName ) ) (otherlv_2= '<' ( (lv_ownedMember_3_0= ruleClassifierTemplateParameter ) ) (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleClassifierTemplateParameter ) ) )* otherlv_6= '>' )? otherlv_7= '(' ( ( (lv_ownedMember_8_0= ruleFormalParameter ) ) (otherlv_9= ',' ( (lv_ownedMember_10_0= ruleFormalParameter ) ) )* )? otherlv_11= ')' ( (lv_ownedMember_12_0= ruleReturnParameter ) )?
            {
            otherlv_0=(Token)match(input,44,FOLLOW_4); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getActivityDeclarationAccess().getActivityKeyword_0());
                  
            }
            // InternalAlf.g:3747:1: ( (lv_name_1_0= ruleName ) )
            // InternalAlf.g:3748:1: (lv_name_1_0= ruleName )
            {
            // InternalAlf.g:3748:1: (lv_name_1_0= ruleName )
            // InternalAlf.g:3749:3: lv_name_1_0= ruleName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getActivityDeclarationAccess().getNameNameParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_41);
            lv_name_1_0=ruleName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getActivityDeclarationRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Name");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:3765:2: (otherlv_2= '<' ( (lv_ownedMember_3_0= ruleClassifierTemplateParameter ) ) (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleClassifierTemplateParameter ) ) )* otherlv_6= '>' )?
            int alt85=2;
            int LA85_0 = input.LA(1);

            if ( (LA85_0==36) ) {
                alt85=1;
            }
            switch (alt85) {
                case 1 :
                    // InternalAlf.g:3765:4: otherlv_2= '<' ( (lv_ownedMember_3_0= ruleClassifierTemplateParameter ) ) (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleClassifierTemplateParameter ) ) )* otherlv_6= '>'
                    {
                    otherlv_2=(Token)match(input,36,FOLLOW_25); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getActivityDeclarationAccess().getLessThanSignKeyword_2_0());
                          
                    }
                    // InternalAlf.g:3769:1: ( (lv_ownedMember_3_0= ruleClassifierTemplateParameter ) )
                    // InternalAlf.g:3770:1: (lv_ownedMember_3_0= ruleClassifierTemplateParameter )
                    {
                    // InternalAlf.g:3770:1: (lv_ownedMember_3_0= ruleClassifierTemplateParameter )
                    // InternalAlf.g:3771:3: lv_ownedMember_3_0= ruleClassifierTemplateParameter
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getActivityDeclarationAccess().getOwnedMemberClassifierTemplateParameterParserRuleCall_2_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_26);
                    lv_ownedMember_3_0=ruleClassifierTemplateParameter();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getActivityDeclarationRule());
                      	        }
                             		add(
                             			current, 
                             			"ownedMember",
                              		lv_ownedMember_3_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.ClassifierTemplateParameter");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // InternalAlf.g:3787:2: (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleClassifierTemplateParameter ) ) )*
                    loop84:
                    do {
                        int alt84=2;
                        int LA84_0 = input.LA(1);

                        if ( (LA84_0==18) ) {
                            alt84=1;
                        }


                        switch (alt84) {
                    	case 1 :
                    	    // InternalAlf.g:3787:4: otherlv_4= ',' ( (lv_ownedMember_5_0= ruleClassifierTemplateParameter ) )
                    	    {
                    	    otherlv_4=(Token)match(input,18,FOLLOW_25); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_4, grammarAccess.getActivityDeclarationAccess().getCommaKeyword_2_2_0());
                    	          
                    	    }
                    	    // InternalAlf.g:3791:1: ( (lv_ownedMember_5_0= ruleClassifierTemplateParameter ) )
                    	    // InternalAlf.g:3792:1: (lv_ownedMember_5_0= ruleClassifierTemplateParameter )
                    	    {
                    	    // InternalAlf.g:3792:1: (lv_ownedMember_5_0= ruleClassifierTemplateParameter )
                    	    // InternalAlf.g:3793:3: lv_ownedMember_5_0= ruleClassifierTemplateParameter
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getActivityDeclarationAccess().getOwnedMemberClassifierTemplateParameterParserRuleCall_2_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_26);
                    	    lv_ownedMember_5_0=ruleClassifierTemplateParameter();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getActivityDeclarationRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"ownedMember",
                    	              		lv_ownedMember_5_0, 
                    	              		"org.eclipse.papyrus.uml.alf.Alf.ClassifierTemplateParameter");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop84;
                        }
                    } while (true);

                    otherlv_6=(Token)match(input,37,FOLLOW_42); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getActivityDeclarationAccess().getGreaterThanSignKeyword_2_3());
                          
                    }

                    }
                    break;

            }

            otherlv_7=(Token)match(input,16,FOLLOW_43); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_7, grammarAccess.getActivityDeclarationAccess().getLeftParenthesisKeyword_3());
                  
            }
            // InternalAlf.g:3817:1: ( ( (lv_ownedMember_8_0= ruleFormalParameter ) ) (otherlv_9= ',' ( (lv_ownedMember_10_0= ruleFormalParameter ) ) )* )?
            int alt87=2;
            int LA87_0 = input.LA(1);

            if ( (LA87_0==RULE_DOCUMENTATION_COMMENT||LA87_0==15||(LA87_0>=46 && LA87_0<=48)) ) {
                alt87=1;
            }
            switch (alt87) {
                case 1 :
                    // InternalAlf.g:3817:2: ( (lv_ownedMember_8_0= ruleFormalParameter ) ) (otherlv_9= ',' ( (lv_ownedMember_10_0= ruleFormalParameter ) ) )*
                    {
                    // InternalAlf.g:3817:2: ( (lv_ownedMember_8_0= ruleFormalParameter ) )
                    // InternalAlf.g:3818:1: (lv_ownedMember_8_0= ruleFormalParameter )
                    {
                    // InternalAlf.g:3818:1: (lv_ownedMember_8_0= ruleFormalParameter )
                    // InternalAlf.g:3819:3: lv_ownedMember_8_0= ruleFormalParameter
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getActivityDeclarationAccess().getOwnedMemberFormalParameterParserRuleCall_4_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_44);
                    lv_ownedMember_8_0=ruleFormalParameter();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getActivityDeclarationRule());
                      	        }
                             		add(
                             			current, 
                             			"ownedMember",
                              		lv_ownedMember_8_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.FormalParameter");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // InternalAlf.g:3835:2: (otherlv_9= ',' ( (lv_ownedMember_10_0= ruleFormalParameter ) ) )*
                    loop86:
                    do {
                        int alt86=2;
                        int LA86_0 = input.LA(1);

                        if ( (LA86_0==18) ) {
                            alt86=1;
                        }


                        switch (alt86) {
                    	case 1 :
                    	    // InternalAlf.g:3835:4: otherlv_9= ',' ( (lv_ownedMember_10_0= ruleFormalParameter ) )
                    	    {
                    	    otherlv_9=(Token)match(input,18,FOLLOW_45); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_9, grammarAccess.getActivityDeclarationAccess().getCommaKeyword_4_1_0());
                    	          
                    	    }
                    	    // InternalAlf.g:3839:1: ( (lv_ownedMember_10_0= ruleFormalParameter ) )
                    	    // InternalAlf.g:3840:1: (lv_ownedMember_10_0= ruleFormalParameter )
                    	    {
                    	    // InternalAlf.g:3840:1: (lv_ownedMember_10_0= ruleFormalParameter )
                    	    // InternalAlf.g:3841:3: lv_ownedMember_10_0= ruleFormalParameter
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getActivityDeclarationAccess().getOwnedMemberFormalParameterParserRuleCall_4_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_44);
                    	    lv_ownedMember_10_0=ruleFormalParameter();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getActivityDeclarationRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"ownedMember",
                    	              		lv_ownedMember_10_0, 
                    	              		"org.eclipse.papyrus.uml.alf.Alf.FormalParameter");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop86;
                        }
                    } while (true);


                    }
                    break;

            }

            otherlv_11=(Token)match(input,17,FOLLOW_46); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_11, grammarAccess.getActivityDeclarationAccess().getRightParenthesisKeyword_5());
                  
            }
            // InternalAlf.g:3861:1: ( (lv_ownedMember_12_0= ruleReturnParameter ) )?
            int alt88=2;
            int LA88_0 = input.LA(1);

            if ( (LA88_0==45) ) {
                alt88=1;
            }
            switch (alt88) {
                case 1 :
                    // InternalAlf.g:3862:1: (lv_ownedMember_12_0= ruleReturnParameter )
                    {
                    // InternalAlf.g:3862:1: (lv_ownedMember_12_0= ruleReturnParameter )
                    // InternalAlf.g:3863:3: lv_ownedMember_12_0= ruleReturnParameter
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getActivityDeclarationAccess().getOwnedMemberReturnParameterParserRuleCall_6_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_ownedMember_12_0=ruleReturnParameter();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getActivityDeclarationRule());
                      	        }
                             		add(
                             			current, 
                             			"ownedMember",
                              		lv_ownedMember_12_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.ReturnParameter");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleActivityDeclaration"


    // $ANTLR start "entryRuleActivityDefinition"
    // InternalAlf.g:3887:1: entryRuleActivityDefinition returns [EObject current=null] : iv_ruleActivityDefinition= ruleActivityDefinition EOF ;
    public final EObject entryRuleActivityDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleActivityDefinition = null;


        try {
            // InternalAlf.g:3888:2: (iv_ruleActivityDefinition= ruleActivityDefinition EOF )
            // InternalAlf.g:3889:2: iv_ruleActivityDefinition= ruleActivityDefinition EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getActivityDefinitionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleActivityDefinition=ruleActivityDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleActivityDefinition; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleActivityDefinition"


    // $ANTLR start "ruleActivityDefinition"
    // InternalAlf.g:3896:1: ruleActivityDefinition returns [EObject current=null] : (this_ActivityDeclaration_0= ruleActivityDeclaration ( (lv_body_1_0= ruleBlock ) ) ) ;
    public final EObject ruleActivityDefinition() throws RecognitionException {
        EObject current = null;

        EObject this_ActivityDeclaration_0 = null;

        EObject lv_body_1_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:3899:28: ( (this_ActivityDeclaration_0= ruleActivityDeclaration ( (lv_body_1_0= ruleBlock ) ) ) )
            // InternalAlf.g:3900:1: (this_ActivityDeclaration_0= ruleActivityDeclaration ( (lv_body_1_0= ruleBlock ) ) )
            {
            // InternalAlf.g:3900:1: (this_ActivityDeclaration_0= ruleActivityDeclaration ( (lv_body_1_0= ruleBlock ) ) )
            // InternalAlf.g:3901:2: this_ActivityDeclaration_0= ruleActivityDeclaration ( (lv_body_1_0= ruleBlock ) )
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getActivityDefinitionAccess().getActivityDeclarationParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_18);
            this_ActivityDeclaration_0=ruleActivityDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_ActivityDeclaration_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:3912:1: ( (lv_body_1_0= ruleBlock ) )
            // InternalAlf.g:3913:1: (lv_body_1_0= ruleBlock )
            {
            // InternalAlf.g:3913:1: (lv_body_1_0= ruleBlock )
            // InternalAlf.g:3914:3: lv_body_1_0= ruleBlock
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getActivityDefinitionAccess().getBodyBlockParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_body_1_0=ruleBlock();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getActivityDefinitionRule());
              	        }
                     		set(
                     			current, 
                     			"body",
                      		lv_body_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Block");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleActivityDefinition"


    // $ANTLR start "entryRuleActivityDefinitionOrStub"
    // InternalAlf.g:3938:1: entryRuleActivityDefinitionOrStub returns [EObject current=null] : iv_ruleActivityDefinitionOrStub= ruleActivityDefinitionOrStub EOF ;
    public final EObject entryRuleActivityDefinitionOrStub() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleActivityDefinitionOrStub = null;


        try {
            // InternalAlf.g:3939:2: (iv_ruleActivityDefinitionOrStub= ruleActivityDefinitionOrStub EOF )
            // InternalAlf.g:3940:2: iv_ruleActivityDefinitionOrStub= ruleActivityDefinitionOrStub EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getActivityDefinitionOrStubRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleActivityDefinitionOrStub=ruleActivityDefinitionOrStub();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleActivityDefinitionOrStub; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleActivityDefinitionOrStub"


    // $ANTLR start "ruleActivityDefinitionOrStub"
    // InternalAlf.g:3947:1: ruleActivityDefinitionOrStub returns [EObject current=null] : (this_ActivityDeclaration_0= ruleActivityDeclaration ( ( (lv_isStub_1_0= ';' ) ) | ( (lv_body_2_0= ruleBlock ) ) ) ) ;
    public final EObject ruleActivityDefinitionOrStub() throws RecognitionException {
        EObject current = null;

        Token lv_isStub_1_0=null;
        EObject this_ActivityDeclaration_0 = null;

        EObject lv_body_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:3950:28: ( (this_ActivityDeclaration_0= ruleActivityDeclaration ( ( (lv_isStub_1_0= ';' ) ) | ( (lv_body_2_0= ruleBlock ) ) ) ) )
            // InternalAlf.g:3951:1: (this_ActivityDeclaration_0= ruleActivityDeclaration ( ( (lv_isStub_1_0= ';' ) ) | ( (lv_body_2_0= ruleBlock ) ) ) )
            {
            // InternalAlf.g:3951:1: (this_ActivityDeclaration_0= ruleActivityDeclaration ( ( (lv_isStub_1_0= ';' ) ) | ( (lv_body_2_0= ruleBlock ) ) ) )
            // InternalAlf.g:3952:2: this_ActivityDeclaration_0= ruleActivityDeclaration ( ( (lv_isStub_1_0= ';' ) ) | ( (lv_body_2_0= ruleBlock ) ) )
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getActivityDefinitionOrStubAccess().getActivityDeclarationParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_20);
            this_ActivityDeclaration_0=ruleActivityDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_ActivityDeclaration_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:3963:1: ( ( (lv_isStub_1_0= ';' ) ) | ( (lv_body_2_0= ruleBlock ) ) )
            int alt89=2;
            int LA89_0 = input.LA(1);

            if ( (LA89_0==22) ) {
                alt89=1;
            }
            else if ( (LA89_0==31) ) {
                alt89=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 89, 0, input);

                throw nvae;
            }
            switch (alt89) {
                case 1 :
                    // InternalAlf.g:3963:2: ( (lv_isStub_1_0= ';' ) )
                    {
                    // InternalAlf.g:3963:2: ( (lv_isStub_1_0= ';' ) )
                    // InternalAlf.g:3964:1: (lv_isStub_1_0= ';' )
                    {
                    // InternalAlf.g:3964:1: (lv_isStub_1_0= ';' )
                    // InternalAlf.g:3965:3: lv_isStub_1_0= ';'
                    {
                    lv_isStub_1_0=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_isStub_1_0, grammarAccess.getActivityDefinitionOrStubAccess().getIsStubSemicolonKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getActivityDefinitionOrStubRule());
                      	        }
                             		setWithLastConsumed(current, "isStub", true, ";");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalAlf.g:3979:6: ( (lv_body_2_0= ruleBlock ) )
                    {
                    // InternalAlf.g:3979:6: ( (lv_body_2_0= ruleBlock ) )
                    // InternalAlf.g:3980:1: (lv_body_2_0= ruleBlock )
                    {
                    // InternalAlf.g:3980:1: (lv_body_2_0= ruleBlock )
                    // InternalAlf.g:3981:3: lv_body_2_0= ruleBlock
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getActivityDefinitionOrStubAccess().getBodyBlockParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_body_2_0=ruleBlock();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getActivityDefinitionOrStubRule());
                      	        }
                             		set(
                             			current, 
                             			"body",
                              		lv_body_2_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.Block");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleActivityDefinitionOrStub"


    // $ANTLR start "entryRuleFormalParameter"
    // InternalAlf.g:4005:1: entryRuleFormalParameter returns [EObject current=null] : iv_ruleFormalParameter= ruleFormalParameter EOF ;
    public final EObject entryRuleFormalParameter() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFormalParameter = null;


        try {
            // InternalAlf.g:4006:2: (iv_ruleFormalParameter= ruleFormalParameter EOF )
            // InternalAlf.g:4007:2: iv_ruleFormalParameter= ruleFormalParameter EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getFormalParameterRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleFormalParameter=ruleFormalParameter();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleFormalParameter; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFormalParameter"


    // $ANTLR start "ruleFormalParameter"
    // InternalAlf.g:4014:1: ruleFormalParameter returns [EObject current=null] : ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )* ( (lv_definition_2_0= ruleFormalParameterDefinition ) ) ) ;
    public final EObject ruleFormalParameter() throws RecognitionException {
        EObject current = null;

        Token lv_documentation_0_0=null;
        EObject lv_annotation_1_0 = null;

        EObject lv_definition_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:4017:28: ( ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )* ( (lv_definition_2_0= ruleFormalParameterDefinition ) ) ) )
            // InternalAlf.g:4018:1: ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )* ( (lv_definition_2_0= ruleFormalParameterDefinition ) ) )
            {
            // InternalAlf.g:4018:1: ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )* ( (lv_definition_2_0= ruleFormalParameterDefinition ) ) )
            // InternalAlf.g:4018:2: ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )* ( (lv_definition_2_0= ruleFormalParameterDefinition ) )
            {
            // InternalAlf.g:4018:2: ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )?
            int alt90=2;
            int LA90_0 = input.LA(1);

            if ( (LA90_0==RULE_DOCUMENTATION_COMMENT) ) {
                alt90=1;
            }
            switch (alt90) {
                case 1 :
                    // InternalAlf.g:4019:1: (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT )
                    {
                    // InternalAlf.g:4019:1: (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT )
                    // InternalAlf.g:4020:3: lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT
                    {
                    lv_documentation_0_0=(Token)match(input,RULE_DOCUMENTATION_COMMENT,FOLLOW_45); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_documentation_0_0, grammarAccess.getFormalParameterAccess().getDocumentationDOCUMENTATION_COMMENTTerminalRuleCall_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getFormalParameterRule());
                      	        }
                             		addWithLastConsumed(
                             			current, 
                             			"documentation",
                              		lv_documentation_0_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.DOCUMENTATION_COMMENT");
                      	    
                    }

                    }


                    }
                    break;

            }

            // InternalAlf.g:4036:3: ( (lv_annotation_1_0= ruleStereotypeAnnotation ) )*
            loop91:
            do {
                int alt91=2;
                int LA91_0 = input.LA(1);

                if ( (LA91_0==15) ) {
                    alt91=1;
                }


                switch (alt91) {
            	case 1 :
            	    // InternalAlf.g:4037:1: (lv_annotation_1_0= ruleStereotypeAnnotation )
            	    {
            	    // InternalAlf.g:4037:1: (lv_annotation_1_0= ruleStereotypeAnnotation )
            	    // InternalAlf.g:4038:3: lv_annotation_1_0= ruleStereotypeAnnotation
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getFormalParameterAccess().getAnnotationStereotypeAnnotationParserRuleCall_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_45);
            	    lv_annotation_1_0=ruleStereotypeAnnotation();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getFormalParameterRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"annotation",
            	              		lv_annotation_1_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.StereotypeAnnotation");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop91;
                }
            } while (true);

            // InternalAlf.g:4054:3: ( (lv_definition_2_0= ruleFormalParameterDefinition ) )
            // InternalAlf.g:4055:1: (lv_definition_2_0= ruleFormalParameterDefinition )
            {
            // InternalAlf.g:4055:1: (lv_definition_2_0= ruleFormalParameterDefinition )
            // InternalAlf.g:4056:3: lv_definition_2_0= ruleFormalParameterDefinition
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getFormalParameterAccess().getDefinitionFormalParameterDefinitionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_definition_2_0=ruleFormalParameterDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getFormalParameterRule());
              	        }
                     		set(
                     			current, 
                     			"definition",
                      		lv_definition_2_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.FormalParameterDefinition");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFormalParameter"


    // $ANTLR start "entryRuleFormalParameterDefinition"
    // InternalAlf.g:4080:1: entryRuleFormalParameterDefinition returns [EObject current=null] : iv_ruleFormalParameterDefinition= ruleFormalParameterDefinition EOF ;
    public final EObject entryRuleFormalParameterDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFormalParameterDefinition = null;


        try {
            // InternalAlf.g:4081:2: (iv_ruleFormalParameterDefinition= ruleFormalParameterDefinition EOF )
            // InternalAlf.g:4082:2: iv_ruleFormalParameterDefinition= ruleFormalParameterDefinition EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getFormalParameterDefinitionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleFormalParameterDefinition=ruleFormalParameterDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleFormalParameterDefinition; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFormalParameterDefinition"


    // $ANTLR start "ruleFormalParameterDefinition"
    // InternalAlf.g:4089:1: ruleFormalParameterDefinition returns [EObject current=null] : ( ( (lv_direction_0_0= ruleParameterDirection ) ) ( (lv_name_1_0= ruleName ) ) otherlv_2= ':' ( (lv_typePart_3_0= ruleTypePart ) ) ) ;
    public final EObject ruleFormalParameterDefinition() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        AntlrDatatypeRuleToken lv_direction_0_0 = null;

        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_typePart_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:4092:28: ( ( ( (lv_direction_0_0= ruleParameterDirection ) ) ( (lv_name_1_0= ruleName ) ) otherlv_2= ':' ( (lv_typePart_3_0= ruleTypePart ) ) ) )
            // InternalAlf.g:4093:1: ( ( (lv_direction_0_0= ruleParameterDirection ) ) ( (lv_name_1_0= ruleName ) ) otherlv_2= ':' ( (lv_typePart_3_0= ruleTypePart ) ) )
            {
            // InternalAlf.g:4093:1: ( ( (lv_direction_0_0= ruleParameterDirection ) ) ( (lv_name_1_0= ruleName ) ) otherlv_2= ':' ( (lv_typePart_3_0= ruleTypePart ) ) )
            // InternalAlf.g:4093:2: ( (lv_direction_0_0= ruleParameterDirection ) ) ( (lv_name_1_0= ruleName ) ) otherlv_2= ':' ( (lv_typePart_3_0= ruleTypePart ) )
            {
            // InternalAlf.g:4093:2: ( (lv_direction_0_0= ruleParameterDirection ) )
            // InternalAlf.g:4094:1: (lv_direction_0_0= ruleParameterDirection )
            {
            // InternalAlf.g:4094:1: (lv_direction_0_0= ruleParameterDirection )
            // InternalAlf.g:4095:3: lv_direction_0_0= ruleParameterDirection
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getFormalParameterDefinitionAccess().getDirectionParameterDirectionParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_4);
            lv_direction_0_0=ruleParameterDirection();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getFormalParameterDefinitionRule());
              	        }
                     		set(
                     			current, 
                     			"direction",
                      		lv_direction_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.ParameterDirection");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:4111:2: ( (lv_name_1_0= ruleName ) )
            // InternalAlf.g:4112:1: (lv_name_1_0= ruleName )
            {
            // InternalAlf.g:4112:1: (lv_name_1_0= ruleName )
            // InternalAlf.g:4113:3: lv_name_1_0= ruleName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getFormalParameterDefinitionAccess().getNameNameParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_47);
            lv_name_1_0=ruleName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getFormalParameterDefinitionRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Name");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,45,FOLLOW_48); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getFormalParameterDefinitionAccess().getColonKeyword_2());
                  
            }
            // InternalAlf.g:4133:1: ( (lv_typePart_3_0= ruleTypePart ) )
            // InternalAlf.g:4134:1: (lv_typePart_3_0= ruleTypePart )
            {
            // InternalAlf.g:4134:1: (lv_typePart_3_0= ruleTypePart )
            // InternalAlf.g:4135:3: lv_typePart_3_0= ruleTypePart
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getFormalParameterDefinitionAccess().getTypePartTypePartParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_typePart_3_0=ruleTypePart();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getFormalParameterDefinitionRule());
              	        }
                     		set(
                     			current, 
                     			"typePart",
                      		lv_typePart_3_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.TypePart");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFormalParameterDefinition"


    // $ANTLR start "entryRuleReturnParameter"
    // InternalAlf.g:4159:1: entryRuleReturnParameter returns [EObject current=null] : iv_ruleReturnParameter= ruleReturnParameter EOF ;
    public final EObject entryRuleReturnParameter() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleReturnParameter = null;


        try {
            // InternalAlf.g:4160:2: (iv_ruleReturnParameter= ruleReturnParameter EOF )
            // InternalAlf.g:4161:2: iv_ruleReturnParameter= ruleReturnParameter EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getReturnParameterRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleReturnParameter=ruleReturnParameter();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleReturnParameter; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleReturnParameter"


    // $ANTLR start "ruleReturnParameter"
    // InternalAlf.g:4168:1: ruleReturnParameter returns [EObject current=null] : ( (lv_definition_0_0= ruleReturnParameterDefinition ) ) ;
    public final EObject ruleReturnParameter() throws RecognitionException {
        EObject current = null;

        EObject lv_definition_0_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:4171:28: ( ( (lv_definition_0_0= ruleReturnParameterDefinition ) ) )
            // InternalAlf.g:4172:1: ( (lv_definition_0_0= ruleReturnParameterDefinition ) )
            {
            // InternalAlf.g:4172:1: ( (lv_definition_0_0= ruleReturnParameterDefinition ) )
            // InternalAlf.g:4173:1: (lv_definition_0_0= ruleReturnParameterDefinition )
            {
            // InternalAlf.g:4173:1: (lv_definition_0_0= ruleReturnParameterDefinition )
            // InternalAlf.g:4174:3: lv_definition_0_0= ruleReturnParameterDefinition
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getReturnParameterAccess().getDefinitionReturnParameterDefinitionParserRuleCall_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_definition_0_0=ruleReturnParameterDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getReturnParameterRule());
              	        }
                     		set(
                     			current, 
                     			"definition",
                      		lv_definition_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.ReturnParameterDefinition");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleReturnParameter"


    // $ANTLR start "entryRuleReturnParameterDefinition"
    // InternalAlf.g:4198:1: entryRuleReturnParameterDefinition returns [EObject current=null] : iv_ruleReturnParameterDefinition= ruleReturnParameterDefinition EOF ;
    public final EObject entryRuleReturnParameterDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleReturnParameterDefinition = null;


        try {
            // InternalAlf.g:4199:2: (iv_ruleReturnParameterDefinition= ruleReturnParameterDefinition EOF )
            // InternalAlf.g:4200:2: iv_ruleReturnParameterDefinition= ruleReturnParameterDefinition EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getReturnParameterDefinitionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleReturnParameterDefinition=ruleReturnParameterDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleReturnParameterDefinition; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleReturnParameterDefinition"


    // $ANTLR start "ruleReturnParameterDefinition"
    // InternalAlf.g:4207:1: ruleReturnParameterDefinition returns [EObject current=null] : (otherlv_0= ':' ( (lv_typePart_1_0= ruleTypePart ) ) ) ;
    public final EObject ruleReturnParameterDefinition() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_typePart_1_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:4210:28: ( (otherlv_0= ':' ( (lv_typePart_1_0= ruleTypePart ) ) ) )
            // InternalAlf.g:4211:1: (otherlv_0= ':' ( (lv_typePart_1_0= ruleTypePart ) ) )
            {
            // InternalAlf.g:4211:1: (otherlv_0= ':' ( (lv_typePart_1_0= ruleTypePart ) ) )
            // InternalAlf.g:4211:3: otherlv_0= ':' ( (lv_typePart_1_0= ruleTypePart ) )
            {
            otherlv_0=(Token)match(input,45,FOLLOW_48); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getReturnParameterDefinitionAccess().getColonKeyword_0());
                  
            }
            // InternalAlf.g:4215:1: ( (lv_typePart_1_0= ruleTypePart ) )
            // InternalAlf.g:4216:1: (lv_typePart_1_0= ruleTypePart )
            {
            // InternalAlf.g:4216:1: (lv_typePart_1_0= ruleTypePart )
            // InternalAlf.g:4217:3: lv_typePart_1_0= ruleTypePart
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getReturnParameterDefinitionAccess().getTypePartTypePartParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_typePart_1_0=ruleTypePart();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getReturnParameterDefinitionRule());
              	        }
                     		set(
                     			current, 
                     			"typePart",
                      		lv_typePart_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.TypePart");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleReturnParameterDefinition"


    // $ANTLR start "entryRuleParameterDirection"
    // InternalAlf.g:4241:1: entryRuleParameterDirection returns [String current=null] : iv_ruleParameterDirection= ruleParameterDirection EOF ;
    public final String entryRuleParameterDirection() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleParameterDirection = null;


        try {
            // InternalAlf.g:4242:2: (iv_ruleParameterDirection= ruleParameterDirection EOF )
            // InternalAlf.g:4243:2: iv_ruleParameterDirection= ruleParameterDirection EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getParameterDirectionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleParameterDirection=ruleParameterDirection();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleParameterDirection.getText(); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleParameterDirection"


    // $ANTLR start "ruleParameterDirection"
    // InternalAlf.g:4250:1: ruleParameterDirection returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'in' | kw= 'out' | kw= 'inout' ) ;
    public final AntlrDatatypeRuleToken ruleParameterDirection() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // InternalAlf.g:4253:28: ( (kw= 'in' | kw= 'out' | kw= 'inout' ) )
            // InternalAlf.g:4254:1: (kw= 'in' | kw= 'out' | kw= 'inout' )
            {
            // InternalAlf.g:4254:1: (kw= 'in' | kw= 'out' | kw= 'inout' )
            int alt92=3;
            switch ( input.LA(1) ) {
            case 46:
                {
                alt92=1;
                }
                break;
            case 47:
                {
                alt92=2;
                }
                break;
            case 48:
                {
                alt92=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 92, 0, input);

                throw nvae;
            }

            switch (alt92) {
                case 1 :
                    // InternalAlf.g:4255:2: kw= 'in'
                    {
                    kw=(Token)match(input,46,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getParameterDirectionAccess().getInKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:4262:2: kw= 'out'
                    {
                    kw=(Token)match(input,47,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getParameterDirectionAccess().getOutKeyword_1()); 
                          
                    }

                    }
                    break;
                case 3 :
                    // InternalAlf.g:4269:2: kw= 'inout'
                    {
                    kw=(Token)match(input,48,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getParameterDirectionAccess().getInoutKeyword_2()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleParameterDirection"


    // $ANTLR start "entryRuleFeatureDefinitionOrStub"
    // InternalAlf.g:4282:1: entryRuleFeatureDefinitionOrStub returns [EObject current=null] : iv_ruleFeatureDefinitionOrStub= ruleFeatureDefinitionOrStub EOF ;
    public final EObject entryRuleFeatureDefinitionOrStub() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFeatureDefinitionOrStub = null;


        try {
            // InternalAlf.g:4283:2: (iv_ruleFeatureDefinitionOrStub= ruleFeatureDefinitionOrStub EOF )
            // InternalAlf.g:4284:2: iv_ruleFeatureDefinitionOrStub= ruleFeatureDefinitionOrStub EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getFeatureDefinitionOrStubRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleFeatureDefinitionOrStub=ruleFeatureDefinitionOrStub();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleFeatureDefinitionOrStub; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFeatureDefinitionOrStub"


    // $ANTLR start "ruleFeatureDefinitionOrStub"
    // InternalAlf.g:4291:1: ruleFeatureDefinitionOrStub returns [EObject current=null] : (this_AttributeDefinition_0= ruleAttributeDefinition | this_OperationDefinitionOrStub_1= ruleOperationDefinitionOrStub ) ;
    public final EObject ruleFeatureDefinitionOrStub() throws RecognitionException {
        EObject current = null;

        EObject this_AttributeDefinition_0 = null;

        EObject this_OperationDefinitionOrStub_1 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:4294:28: ( (this_AttributeDefinition_0= ruleAttributeDefinition | this_OperationDefinitionOrStub_1= ruleOperationDefinitionOrStub ) )
            // InternalAlf.g:4295:1: (this_AttributeDefinition_0= ruleAttributeDefinition | this_OperationDefinitionOrStub_1= ruleOperationDefinitionOrStub )
            {
            // InternalAlf.g:4295:1: (this_AttributeDefinition_0= ruleAttributeDefinition | this_OperationDefinitionOrStub_1= ruleOperationDefinitionOrStub )
            int alt93=2;
            switch ( input.LA(1) ) {
            case RULE_ID:
                {
                int LA93_1 = input.LA(2);

                if ( (LA93_1==45) ) {
                    alt93=1;
                }
                else if ( (LA93_1==16) ) {
                    alt93=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 93, 1, input);

                    throw nvae;
                }
                }
                break;
            case RULE_UNRESTRICTED_NAME:
                {
                int LA93_2 = input.LA(2);

                if ( (LA93_2==45) ) {
                    alt93=1;
                }
                else if ( (LA93_2==16) ) {
                    alt93=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 93, 2, input);

                    throw nvae;
                }
                }
                break;
            case 34:
                {
                alt93=2;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 93, 0, input);

                throw nvae;
            }

            switch (alt93) {
                case 1 :
                    // InternalAlf.g:4296:2: this_AttributeDefinition_0= ruleAttributeDefinition
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getFeatureDefinitionOrStubAccess().getAttributeDefinitionParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_AttributeDefinition_0=ruleAttributeDefinition();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_AttributeDefinition_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:4309:2: this_OperationDefinitionOrStub_1= ruleOperationDefinitionOrStub
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getFeatureDefinitionOrStubAccess().getOperationDefinitionOrStubParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_OperationDefinitionOrStub_1=ruleOperationDefinitionOrStub();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_OperationDefinitionOrStub_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFeatureDefinitionOrStub"


    // $ANTLR start "entryRuleActiveFeatureDefinitionOrStub"
    // InternalAlf.g:4328:1: entryRuleActiveFeatureDefinitionOrStub returns [EObject current=null] : iv_ruleActiveFeatureDefinitionOrStub= ruleActiveFeatureDefinitionOrStub EOF ;
    public final EObject entryRuleActiveFeatureDefinitionOrStub() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleActiveFeatureDefinitionOrStub = null;


        try {
            // InternalAlf.g:4329:2: (iv_ruleActiveFeatureDefinitionOrStub= ruleActiveFeatureDefinitionOrStub EOF )
            // InternalAlf.g:4330:2: iv_ruleActiveFeatureDefinitionOrStub= ruleActiveFeatureDefinitionOrStub EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getActiveFeatureDefinitionOrStubRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleActiveFeatureDefinitionOrStub=ruleActiveFeatureDefinitionOrStub();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleActiveFeatureDefinitionOrStub; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleActiveFeatureDefinitionOrStub"


    // $ANTLR start "ruleActiveFeatureDefinitionOrStub"
    // InternalAlf.g:4337:1: ruleActiveFeatureDefinitionOrStub returns [EObject current=null] : (this_ReceptionDefinition_0= ruleReceptionDefinition | this_SignalReceptionDefinitionOrStub_1= ruleSignalReceptionDefinitionOrStub ) ;
    public final EObject ruleActiveFeatureDefinitionOrStub() throws RecognitionException {
        EObject current = null;

        EObject this_ReceptionDefinition_0 = null;

        EObject this_SignalReceptionDefinitionOrStub_1 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:4340:28: ( (this_ReceptionDefinition_0= ruleReceptionDefinition | this_SignalReceptionDefinitionOrStub_1= ruleSignalReceptionDefinitionOrStub ) )
            // InternalAlf.g:4341:1: (this_ReceptionDefinition_0= ruleReceptionDefinition | this_SignalReceptionDefinitionOrStub_1= ruleSignalReceptionDefinitionOrStub )
            {
            // InternalAlf.g:4341:1: (this_ReceptionDefinition_0= ruleReceptionDefinition | this_SignalReceptionDefinitionOrStub_1= ruleSignalReceptionDefinitionOrStub )
            int alt94=2;
            int LA94_0 = input.LA(1);

            if ( (LA94_0==59) ) {
                int LA94_1 = input.LA(2);

                if ( (LA94_1==43) ) {
                    alt94=2;
                }
                else if ( ((LA94_1>=RULE_ID && LA94_1<=RULE_UNRESTRICTED_NAME)) ) {
                    alt94=1;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 94, 1, input);

                    throw nvae;
                }
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 94, 0, input);

                throw nvae;
            }
            switch (alt94) {
                case 1 :
                    // InternalAlf.g:4342:2: this_ReceptionDefinition_0= ruleReceptionDefinition
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getActiveFeatureDefinitionOrStubAccess().getReceptionDefinitionParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_ReceptionDefinition_0=ruleReceptionDefinition();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ReceptionDefinition_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:4355:2: this_SignalReceptionDefinitionOrStub_1= ruleSignalReceptionDefinitionOrStub
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getActiveFeatureDefinitionOrStubAccess().getSignalReceptionDefinitionOrStubParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_SignalReceptionDefinitionOrStub_1=ruleSignalReceptionDefinitionOrStub();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_SignalReceptionDefinitionOrStub_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleActiveFeatureDefinitionOrStub"


    // $ANTLR start "entryRulePropertyDefinition"
    // InternalAlf.g:4374:1: entryRulePropertyDefinition returns [EObject current=null] : iv_rulePropertyDefinition= rulePropertyDefinition EOF ;
    public final EObject entryRulePropertyDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePropertyDefinition = null;


        try {
            // InternalAlf.g:4375:2: (iv_rulePropertyDefinition= rulePropertyDefinition EOF )
            // InternalAlf.g:4376:2: iv_rulePropertyDefinition= rulePropertyDefinition EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPropertyDefinitionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_rulePropertyDefinition=rulePropertyDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePropertyDefinition; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePropertyDefinition"


    // $ANTLR start "rulePropertyDefinition"
    // InternalAlf.g:4383:1: rulePropertyDefinition returns [EObject current=null] : (this_PropertyDeclaration_0= rulePropertyDeclaration otherlv_1= ';' ) ;
    public final EObject rulePropertyDefinition() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject this_PropertyDeclaration_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:4386:28: ( (this_PropertyDeclaration_0= rulePropertyDeclaration otherlv_1= ';' ) )
            // InternalAlf.g:4387:1: (this_PropertyDeclaration_0= rulePropertyDeclaration otherlv_1= ';' )
            {
            // InternalAlf.g:4387:1: (this_PropertyDeclaration_0= rulePropertyDeclaration otherlv_1= ';' )
            // InternalAlf.g:4388:2: this_PropertyDeclaration_0= rulePropertyDeclaration otherlv_1= ';'
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getPropertyDefinitionAccess().getPropertyDeclarationParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_11);
            this_PropertyDeclaration_0=rulePropertyDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_PropertyDeclaration_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            otherlv_1=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getPropertyDefinitionAccess().getSemicolonKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePropertyDefinition"


    // $ANTLR start "entryRuleAttributeDefinition"
    // InternalAlf.g:4411:1: entryRuleAttributeDefinition returns [EObject current=null] : iv_ruleAttributeDefinition= ruleAttributeDefinition EOF ;
    public final EObject entryRuleAttributeDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAttributeDefinition = null;


        try {
            // InternalAlf.g:4412:2: (iv_ruleAttributeDefinition= ruleAttributeDefinition EOF )
            // InternalAlf.g:4413:2: iv_ruleAttributeDefinition= ruleAttributeDefinition EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAttributeDefinitionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleAttributeDefinition=ruleAttributeDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAttributeDefinition; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAttributeDefinition"


    // $ANTLR start "ruleAttributeDefinition"
    // InternalAlf.g:4420:1: ruleAttributeDefinition returns [EObject current=null] : (this_PropertyDeclaration_0= rulePropertyDeclaration ( (lv_initializer_1_0= ruleAttributeInitializer ) )? otherlv_2= ';' ) ;
    public final EObject ruleAttributeDefinition() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject this_PropertyDeclaration_0 = null;

        EObject lv_initializer_1_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:4423:28: ( (this_PropertyDeclaration_0= rulePropertyDeclaration ( (lv_initializer_1_0= ruleAttributeInitializer ) )? otherlv_2= ';' ) )
            // InternalAlf.g:4424:1: (this_PropertyDeclaration_0= rulePropertyDeclaration ( (lv_initializer_1_0= ruleAttributeInitializer ) )? otherlv_2= ';' )
            {
            // InternalAlf.g:4424:1: (this_PropertyDeclaration_0= rulePropertyDeclaration ( (lv_initializer_1_0= ruleAttributeInitializer ) )? otherlv_2= ';' )
            // InternalAlf.g:4425:2: this_PropertyDeclaration_0= rulePropertyDeclaration ( (lv_initializer_1_0= ruleAttributeInitializer ) )? otherlv_2= ';'
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getAttributeDefinitionAccess().getPropertyDeclarationParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_49);
            this_PropertyDeclaration_0=rulePropertyDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_PropertyDeclaration_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:4436:1: ( (lv_initializer_1_0= ruleAttributeInitializer ) )?
            int alt95=2;
            int LA95_0 = input.LA(1);

            if ( (LA95_0==49) ) {
                alt95=1;
            }
            switch (alt95) {
                case 1 :
                    // InternalAlf.g:4437:1: (lv_initializer_1_0= ruleAttributeInitializer )
                    {
                    // InternalAlf.g:4437:1: (lv_initializer_1_0= ruleAttributeInitializer )
                    // InternalAlf.g:4438:3: lv_initializer_1_0= ruleAttributeInitializer
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getAttributeDefinitionAccess().getInitializerAttributeInitializerParserRuleCall_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_11);
                    lv_initializer_1_0=ruleAttributeInitializer();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getAttributeDefinitionRule());
                      	        }
                             		set(
                             			current, 
                             			"initializer",
                              		lv_initializer_1_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.AttributeInitializer");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            otherlv_2=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getAttributeDefinitionAccess().getSemicolonKeyword_2());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAttributeDefinition"


    // $ANTLR start "entryRuleAttributeInitializer"
    // InternalAlf.g:4466:1: entryRuleAttributeInitializer returns [EObject current=null] : iv_ruleAttributeInitializer= ruleAttributeInitializer EOF ;
    public final EObject entryRuleAttributeInitializer() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAttributeInitializer = null;


        try {
            // InternalAlf.g:4467:2: (iv_ruleAttributeInitializer= ruleAttributeInitializer EOF )
            // InternalAlf.g:4468:2: iv_ruleAttributeInitializer= ruleAttributeInitializer EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAttributeInitializerRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleAttributeInitializer=ruleAttributeInitializer();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAttributeInitializer; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAttributeInitializer"


    // $ANTLR start "ruleAttributeInitializer"
    // InternalAlf.g:4475:1: ruleAttributeInitializer returns [EObject current=null] : (otherlv_0= '=' this_InitializationExpression_1= ruleInitializationExpression ) ;
    public final EObject ruleAttributeInitializer() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject this_InitializationExpression_1 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:4478:28: ( (otherlv_0= '=' this_InitializationExpression_1= ruleInitializationExpression ) )
            // InternalAlf.g:4479:1: (otherlv_0= '=' this_InitializationExpression_1= ruleInitializationExpression )
            {
            // InternalAlf.g:4479:1: (otherlv_0= '=' this_InitializationExpression_1= ruleInitializationExpression )
            // InternalAlf.g:4479:3: otherlv_0= '=' this_InitializationExpression_1= ruleInitializationExpression
            {
            otherlv_0=(Token)match(input,49,FOLLOW_50); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getAttributeInitializerAccess().getEqualsSignKeyword_0());
                  
            }
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getAttributeInitializerAccess().getInitializationExpressionParserRuleCall_1()); 
                  
            }
            pushFollow(FOLLOW_2);
            this_InitializationExpression_1=ruleInitializationExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_InitializationExpression_1; 
                      afterParserOrEnumRuleCall();
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAttributeInitializer"


    // $ANTLR start "entryRulePropertyDeclaration"
    // InternalAlf.g:4503:1: entryRulePropertyDeclaration returns [EObject current=null] : iv_rulePropertyDeclaration= rulePropertyDeclaration EOF ;
    public final EObject entryRulePropertyDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePropertyDeclaration = null;


        try {
            // InternalAlf.g:4504:2: (iv_rulePropertyDeclaration= rulePropertyDeclaration EOF )
            // InternalAlf.g:4505:2: iv_rulePropertyDeclaration= rulePropertyDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPropertyDeclarationRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_rulePropertyDeclaration=rulePropertyDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePropertyDeclaration; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePropertyDeclaration"


    // $ANTLR start "rulePropertyDeclaration"
    // InternalAlf.g:4512:1: rulePropertyDeclaration returns [EObject current=null] : ( ( (lv_name_0_0= ruleName ) ) otherlv_1= ':' ( (lv_isComposite_2_0= 'compose' ) )? ( (lv_typePart_3_0= ruleTypePart ) ) ) ;
    public final EObject rulePropertyDeclaration() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token lv_isComposite_2_0=null;
        AntlrDatatypeRuleToken lv_name_0_0 = null;

        EObject lv_typePart_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:4515:28: ( ( ( (lv_name_0_0= ruleName ) ) otherlv_1= ':' ( (lv_isComposite_2_0= 'compose' ) )? ( (lv_typePart_3_0= ruleTypePart ) ) ) )
            // InternalAlf.g:4516:1: ( ( (lv_name_0_0= ruleName ) ) otherlv_1= ':' ( (lv_isComposite_2_0= 'compose' ) )? ( (lv_typePart_3_0= ruleTypePart ) ) )
            {
            // InternalAlf.g:4516:1: ( ( (lv_name_0_0= ruleName ) ) otherlv_1= ':' ( (lv_isComposite_2_0= 'compose' ) )? ( (lv_typePart_3_0= ruleTypePart ) ) )
            // InternalAlf.g:4516:2: ( (lv_name_0_0= ruleName ) ) otherlv_1= ':' ( (lv_isComposite_2_0= 'compose' ) )? ( (lv_typePart_3_0= ruleTypePart ) )
            {
            // InternalAlf.g:4516:2: ( (lv_name_0_0= ruleName ) )
            // InternalAlf.g:4517:1: (lv_name_0_0= ruleName )
            {
            // InternalAlf.g:4517:1: (lv_name_0_0= ruleName )
            // InternalAlf.g:4518:3: lv_name_0_0= ruleName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getPropertyDeclarationAccess().getNameNameParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_47);
            lv_name_0_0=ruleName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getPropertyDeclarationRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Name");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,45,FOLLOW_51); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getPropertyDeclarationAccess().getColonKeyword_1());
                  
            }
            // InternalAlf.g:4538:1: ( (lv_isComposite_2_0= 'compose' ) )?
            int alt96=2;
            int LA96_0 = input.LA(1);

            if ( (LA96_0==50) ) {
                alt96=1;
            }
            switch (alt96) {
                case 1 :
                    // InternalAlf.g:4539:1: (lv_isComposite_2_0= 'compose' )
                    {
                    // InternalAlf.g:4539:1: (lv_isComposite_2_0= 'compose' )
                    // InternalAlf.g:4540:3: lv_isComposite_2_0= 'compose'
                    {
                    lv_isComposite_2_0=(Token)match(input,50,FOLLOW_48); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_isComposite_2_0, grammarAccess.getPropertyDeclarationAccess().getIsCompositeComposeKeyword_2_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getPropertyDeclarationRule());
                      	        }
                             		setWithLastConsumed(current, "isComposite", true, "compose");
                      	    
                    }

                    }


                    }
                    break;

            }

            // InternalAlf.g:4553:3: ( (lv_typePart_3_0= ruleTypePart ) )
            // InternalAlf.g:4554:1: (lv_typePart_3_0= ruleTypePart )
            {
            // InternalAlf.g:4554:1: (lv_typePart_3_0= ruleTypePart )
            // InternalAlf.g:4555:3: lv_typePart_3_0= ruleTypePart
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getPropertyDeclarationAccess().getTypePartTypePartParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_typePart_3_0=ruleTypePart();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getPropertyDeclarationRule());
              	        }
                     		set(
                     			current, 
                     			"typePart",
                      		lv_typePart_3_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.TypePart");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePropertyDeclaration"


    // $ANTLR start "entryRuleTypePart"
    // InternalAlf.g:4579:1: entryRuleTypePart returns [EObject current=null] : iv_ruleTypePart= ruleTypePart EOF ;
    public final EObject entryRuleTypePart() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTypePart = null;


        try {
            // InternalAlf.g:4580:2: (iv_ruleTypePart= ruleTypePart EOF )
            // InternalAlf.g:4581:2: iv_ruleTypePart= ruleTypePart EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTypePartRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleTypePart=ruleTypePart();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTypePart; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTypePart"


    // $ANTLR start "ruleTypePart"
    // InternalAlf.g:4588:1: ruleTypePart returns [EObject current=null] : ( ( ( (lv_isAny_0_0= 'any' ) ) | ( (lv_typeName_1_0= ruleQualifiedName ) ) ) ( (otherlv_2= '[' ( ( (lv_isMultiplicity_3_0= ']' ) ) | ( ( ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) ) otherlv_5= '..' )? ( (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral ) ) otherlv_7= ']' ) ) )? ( ( ( (lv_isOrdered_8_0= 'ordered' ) ) ( (lv_isNonunique_9_0= 'nonunique' ) )? ) | ( ( (lv_isNonunique_10_0= 'nonunique' ) ) ( (lv_isOrdered_11_0= 'ordered' ) )? ) | ( (lv_isSequence_12_0= 'sequence' ) ) )? )? ) ;
    public final EObject ruleTypePart() throws RecognitionException {
        EObject current = null;

        Token lv_isAny_0_0=null;
        Token otherlv_2=null;
        Token lv_isMultiplicity_3_0=null;
        Token lv_lowerBound_4_0=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token lv_isOrdered_8_0=null;
        Token lv_isNonunique_9_0=null;
        Token lv_isNonunique_10_0=null;
        Token lv_isOrdered_11_0=null;
        Token lv_isSequence_12_0=null;
        EObject lv_typeName_1_0 = null;

        AntlrDatatypeRuleToken lv_upperBound_6_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:4591:28: ( ( ( ( (lv_isAny_0_0= 'any' ) ) | ( (lv_typeName_1_0= ruleQualifiedName ) ) ) ( (otherlv_2= '[' ( ( (lv_isMultiplicity_3_0= ']' ) ) | ( ( ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) ) otherlv_5= '..' )? ( (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral ) ) otherlv_7= ']' ) ) )? ( ( ( (lv_isOrdered_8_0= 'ordered' ) ) ( (lv_isNonunique_9_0= 'nonunique' ) )? ) | ( ( (lv_isNonunique_10_0= 'nonunique' ) ) ( (lv_isOrdered_11_0= 'ordered' ) )? ) | ( (lv_isSequence_12_0= 'sequence' ) ) )? )? ) )
            // InternalAlf.g:4592:1: ( ( ( (lv_isAny_0_0= 'any' ) ) | ( (lv_typeName_1_0= ruleQualifiedName ) ) ) ( (otherlv_2= '[' ( ( (lv_isMultiplicity_3_0= ']' ) ) | ( ( ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) ) otherlv_5= '..' )? ( (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral ) ) otherlv_7= ']' ) ) )? ( ( ( (lv_isOrdered_8_0= 'ordered' ) ) ( (lv_isNonunique_9_0= 'nonunique' ) )? ) | ( ( (lv_isNonunique_10_0= 'nonunique' ) ) ( (lv_isOrdered_11_0= 'ordered' ) )? ) | ( (lv_isSequence_12_0= 'sequence' ) ) )? )? )
            {
            // InternalAlf.g:4592:1: ( ( ( (lv_isAny_0_0= 'any' ) ) | ( (lv_typeName_1_0= ruleQualifiedName ) ) ) ( (otherlv_2= '[' ( ( (lv_isMultiplicity_3_0= ']' ) ) | ( ( ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) ) otherlv_5= '..' )? ( (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral ) ) otherlv_7= ']' ) ) )? ( ( ( (lv_isOrdered_8_0= 'ordered' ) ) ( (lv_isNonunique_9_0= 'nonunique' ) )? ) | ( ( (lv_isNonunique_10_0= 'nonunique' ) ) ( (lv_isOrdered_11_0= 'ordered' ) )? ) | ( (lv_isSequence_12_0= 'sequence' ) ) )? )? )
            // InternalAlf.g:4592:2: ( ( (lv_isAny_0_0= 'any' ) ) | ( (lv_typeName_1_0= ruleQualifiedName ) ) ) ( (otherlv_2= '[' ( ( (lv_isMultiplicity_3_0= ']' ) ) | ( ( ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) ) otherlv_5= '..' )? ( (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral ) ) otherlv_7= ']' ) ) )? ( ( ( (lv_isOrdered_8_0= 'ordered' ) ) ( (lv_isNonunique_9_0= 'nonunique' ) )? ) | ( ( (lv_isNonunique_10_0= 'nonunique' ) ) ( (lv_isOrdered_11_0= 'ordered' ) )? ) | ( (lv_isSequence_12_0= 'sequence' ) ) )? )?
            {
            // InternalAlf.g:4592:2: ( ( (lv_isAny_0_0= 'any' ) ) | ( (lv_typeName_1_0= ruleQualifiedName ) ) )
            int alt97=2;
            int LA97_0 = input.LA(1);

            if ( (LA97_0==51) ) {
                alt97=1;
            }
            else if ( ((LA97_0>=RULE_ID && LA97_0<=RULE_UNRESTRICTED_NAME)) ) {
                alt97=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 97, 0, input);

                throw nvae;
            }
            switch (alt97) {
                case 1 :
                    // InternalAlf.g:4592:3: ( (lv_isAny_0_0= 'any' ) )
                    {
                    // InternalAlf.g:4592:3: ( (lv_isAny_0_0= 'any' ) )
                    // InternalAlf.g:4593:1: (lv_isAny_0_0= 'any' )
                    {
                    // InternalAlf.g:4593:1: (lv_isAny_0_0= 'any' )
                    // InternalAlf.g:4594:3: lv_isAny_0_0= 'any'
                    {
                    lv_isAny_0_0=(Token)match(input,51,FOLLOW_52); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_isAny_0_0, grammarAccess.getTypePartAccess().getIsAnyAnyKeyword_0_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getTypePartRule());
                      	        }
                             		setWithLastConsumed(current, "isAny", true, "any");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalAlf.g:4608:6: ( (lv_typeName_1_0= ruleQualifiedName ) )
                    {
                    // InternalAlf.g:4608:6: ( (lv_typeName_1_0= ruleQualifiedName ) )
                    // InternalAlf.g:4609:1: (lv_typeName_1_0= ruleQualifiedName )
                    {
                    // InternalAlf.g:4609:1: (lv_typeName_1_0= ruleQualifiedName )
                    // InternalAlf.g:4610:3: lv_typeName_1_0= ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getTypePartAccess().getTypeNameQualifiedNameParserRuleCall_0_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_52);
                    lv_typeName_1_0=ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getTypePartRule());
                      	        }
                             		set(
                             			current, 
                             			"typeName",
                              		lv_typeName_1_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.QualifiedName");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // InternalAlf.g:4626:3: ( (otherlv_2= '[' ( ( (lv_isMultiplicity_3_0= ']' ) ) | ( ( ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) ) otherlv_5= '..' )? ( (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral ) ) otherlv_7= ']' ) ) )? ( ( ( (lv_isOrdered_8_0= 'ordered' ) ) ( (lv_isNonunique_9_0= 'nonunique' ) )? ) | ( ( (lv_isNonunique_10_0= 'nonunique' ) ) ( (lv_isOrdered_11_0= 'ordered' ) )? ) | ( (lv_isSequence_12_0= 'sequence' ) ) )? )?
            int alt104=2;
            alt104 = dfa104.predict(input);
            switch (alt104) {
                case 1 :
                    // InternalAlf.g:4626:4: (otherlv_2= '[' ( ( (lv_isMultiplicity_3_0= ']' ) ) | ( ( ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) ) otherlv_5= '..' )? ( (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral ) ) otherlv_7= ']' ) ) )? ( ( ( (lv_isOrdered_8_0= 'ordered' ) ) ( (lv_isNonunique_9_0= 'nonunique' ) )? ) | ( ( (lv_isNonunique_10_0= 'nonunique' ) ) ( (lv_isOrdered_11_0= 'ordered' ) )? ) | ( (lv_isSequence_12_0= 'sequence' ) ) )?
                    {
                    // InternalAlf.g:4626:4: (otherlv_2= '[' ( ( (lv_isMultiplicity_3_0= ']' ) ) | ( ( ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) ) otherlv_5= '..' )? ( (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral ) ) otherlv_7= ']' ) ) )?
                    int alt100=2;
                    int LA100_0 = input.LA(1);

                    if ( (LA100_0==52) ) {
                        alt100=1;
                    }
                    switch (alt100) {
                        case 1 :
                            // InternalAlf.g:4626:6: otherlv_2= '[' ( ( (lv_isMultiplicity_3_0= ']' ) ) | ( ( ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) ) otherlv_5= '..' )? ( (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral ) ) otherlv_7= ']' ) )
                            {
                            otherlv_2=(Token)match(input,52,FOLLOW_53); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_2, grammarAccess.getTypePartAccess().getLeftSquareBracketKeyword_1_0_0());
                                  
                            }
                            // InternalAlf.g:4630:1: ( ( (lv_isMultiplicity_3_0= ']' ) ) | ( ( ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) ) otherlv_5= '..' )? ( (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral ) ) otherlv_7= ']' ) )
                            int alt99=2;
                            int LA99_0 = input.LA(1);

                            if ( (LA99_0==53) ) {
                                alt99=1;
                            }
                            else if ( (LA99_0==RULE_NATURAL_VALUE||LA99_0==20) ) {
                                alt99=2;
                            }
                            else {
                                if (state.backtracking>0) {state.failed=true; return current;}
                                NoViableAltException nvae =
                                    new NoViableAltException("", 99, 0, input);

                                throw nvae;
                            }
                            switch (alt99) {
                                case 1 :
                                    // InternalAlf.g:4630:2: ( (lv_isMultiplicity_3_0= ']' ) )
                                    {
                                    // InternalAlf.g:4630:2: ( (lv_isMultiplicity_3_0= ']' ) )
                                    // InternalAlf.g:4631:1: (lv_isMultiplicity_3_0= ']' )
                                    {
                                    // InternalAlf.g:4631:1: (lv_isMultiplicity_3_0= ']' )
                                    // InternalAlf.g:4632:3: lv_isMultiplicity_3_0= ']'
                                    {
                                    lv_isMultiplicity_3_0=(Token)match(input,53,FOLLOW_54); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                              newLeafNode(lv_isMultiplicity_3_0, grammarAccess.getTypePartAccess().getIsMultiplicityRightSquareBracketKeyword_1_0_1_0_0());
                                          
                                    }
                                    if ( state.backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = createModelElement(grammarAccess.getTypePartRule());
                                      	        }
                                             		setWithLastConsumed(current, "isMultiplicity", true, "]");
                                      	    
                                    }

                                    }


                                    }


                                    }
                                    break;
                                case 2 :
                                    // InternalAlf.g:4646:6: ( ( ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) ) otherlv_5= '..' )? ( (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral ) ) otherlv_7= ']' )
                                    {
                                    // InternalAlf.g:4646:6: ( ( ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) ) otherlv_5= '..' )? ( (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral ) ) otherlv_7= ']' )
                                    // InternalAlf.g:4646:7: ( ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) ) otherlv_5= '..' )? ( (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral ) ) otherlv_7= ']'
                                    {
                                    // InternalAlf.g:4646:7: ( ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) ) otherlv_5= '..' )?
                                    int alt98=2;
                                    int LA98_0 = input.LA(1);

                                    if ( (LA98_0==RULE_NATURAL_VALUE) ) {
                                        int LA98_1 = input.LA(2);

                                        if ( (LA98_1==54) ) {
                                            alt98=1;
                                        }
                                    }
                                    switch (alt98) {
                                        case 1 :
                                            // InternalAlf.g:4646:8: ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) ) otherlv_5= '..'
                                            {
                                            // InternalAlf.g:4646:8: ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) )
                                            // InternalAlf.g:4647:1: (lv_lowerBound_4_0= RULE_NATURAL_VALUE )
                                            {
                                            // InternalAlf.g:4647:1: (lv_lowerBound_4_0= RULE_NATURAL_VALUE )
                                            // InternalAlf.g:4648:3: lv_lowerBound_4_0= RULE_NATURAL_VALUE
                                            {
                                            lv_lowerBound_4_0=(Token)match(input,RULE_NATURAL_VALUE,FOLLOW_55); if (state.failed) return current;
                                            if ( state.backtracking==0 ) {

                                              			newLeafNode(lv_lowerBound_4_0, grammarAccess.getTypePartAccess().getLowerBoundNATURAL_VALUETerminalRuleCall_1_0_1_1_0_0_0()); 
                                              		
                                            }
                                            if ( state.backtracking==0 ) {

                                              	        if (current==null) {
                                              	            current = createModelElement(grammarAccess.getTypePartRule());
                                              	        }
                                                     		setWithLastConsumed(
                                                     			current, 
                                                     			"lowerBound",
                                                      		lv_lowerBound_4_0, 
                                                      		"org.eclipse.papyrus.uml.alf.Alf.NATURAL_VALUE");
                                              	    
                                            }

                                            }


                                            }

                                            otherlv_5=(Token)match(input,54,FOLLOW_53); if (state.failed) return current;
                                            if ( state.backtracking==0 ) {

                                                  	newLeafNode(otherlv_5, grammarAccess.getTypePartAccess().getFullStopFullStopKeyword_1_0_1_1_0_1());
                                                  
                                            }

                                            }
                                            break;

                                    }

                                    // InternalAlf.g:4668:3: ( (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral ) )
                                    // InternalAlf.g:4669:1: (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral )
                                    {
                                    // InternalAlf.g:4669:1: (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral )
                                    // InternalAlf.g:4670:3: lv_upperBound_6_0= ruleUnlimitedNaturalLiteral
                                    {
                                    if ( state.backtracking==0 ) {
                                       
                                      	        newCompositeNode(grammarAccess.getTypePartAccess().getUpperBoundUnlimitedNaturalLiteralParserRuleCall_1_0_1_1_1_0()); 
                                      	    
                                    }
                                    pushFollow(FOLLOW_56);
                                    lv_upperBound_6_0=ruleUnlimitedNaturalLiteral();

                                    state._fsp--;
                                    if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = createModelElementForParent(grammarAccess.getTypePartRule());
                                      	        }
                                             		set(
                                             			current, 
                                             			"upperBound",
                                              		lv_upperBound_6_0, 
                                              		"org.eclipse.papyrus.uml.alf.Alf.UnlimitedNaturalLiteral");
                                      	        afterParserOrEnumRuleCall();
                                      	    
                                    }

                                    }


                                    }

                                    otherlv_7=(Token)match(input,53,FOLLOW_54); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                          	newLeafNode(otherlv_7, grammarAccess.getTypePartAccess().getRightSquareBracketKeyword_1_0_1_1_2());
                                          
                                    }

                                    }


                                    }
                                    break;

                            }


                            }
                            break;

                    }

                    // InternalAlf.g:4690:5: ( ( ( (lv_isOrdered_8_0= 'ordered' ) ) ( (lv_isNonunique_9_0= 'nonunique' ) )? ) | ( ( (lv_isNonunique_10_0= 'nonunique' ) ) ( (lv_isOrdered_11_0= 'ordered' ) )? ) | ( (lv_isSequence_12_0= 'sequence' ) ) )?
                    int alt103=4;
                    switch ( input.LA(1) ) {
                        case 55:
                            {
                            alt103=1;
                            }
                            break;
                        case 56:
                            {
                            alt103=2;
                            }
                            break;
                        case 57:
                            {
                            alt103=3;
                            }
                            break;
                    }

                    switch (alt103) {
                        case 1 :
                            // InternalAlf.g:4690:6: ( ( (lv_isOrdered_8_0= 'ordered' ) ) ( (lv_isNonunique_9_0= 'nonunique' ) )? )
                            {
                            // InternalAlf.g:4690:6: ( ( (lv_isOrdered_8_0= 'ordered' ) ) ( (lv_isNonunique_9_0= 'nonunique' ) )? )
                            // InternalAlf.g:4690:7: ( (lv_isOrdered_8_0= 'ordered' ) ) ( (lv_isNonunique_9_0= 'nonunique' ) )?
                            {
                            // InternalAlf.g:4690:7: ( (lv_isOrdered_8_0= 'ordered' ) )
                            // InternalAlf.g:4691:1: (lv_isOrdered_8_0= 'ordered' )
                            {
                            // InternalAlf.g:4691:1: (lv_isOrdered_8_0= 'ordered' )
                            // InternalAlf.g:4692:3: lv_isOrdered_8_0= 'ordered'
                            {
                            lv_isOrdered_8_0=(Token)match(input,55,FOLLOW_57); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_isOrdered_8_0, grammarAccess.getTypePartAccess().getIsOrderedOrderedKeyword_1_1_0_0_0());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getTypePartRule());
                              	        }
                                     		setWithLastConsumed(current, "isOrdered", true, "ordered");
                              	    
                            }

                            }


                            }

                            // InternalAlf.g:4705:2: ( (lv_isNonunique_9_0= 'nonunique' ) )?
                            int alt101=2;
                            int LA101_0 = input.LA(1);

                            if ( (LA101_0==56) ) {
                                alt101=1;
                            }
                            switch (alt101) {
                                case 1 :
                                    // InternalAlf.g:4706:1: (lv_isNonunique_9_0= 'nonunique' )
                                    {
                                    // InternalAlf.g:4706:1: (lv_isNonunique_9_0= 'nonunique' )
                                    // InternalAlf.g:4707:3: lv_isNonunique_9_0= 'nonunique'
                                    {
                                    lv_isNonunique_9_0=(Token)match(input,56,FOLLOW_2); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                              newLeafNode(lv_isNonunique_9_0, grammarAccess.getTypePartAccess().getIsNonuniqueNonuniqueKeyword_1_1_0_1_0());
                                          
                                    }
                                    if ( state.backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = createModelElement(grammarAccess.getTypePartRule());
                                      	        }
                                             		setWithLastConsumed(current, "isNonunique", true, "nonunique");
                                      	    
                                    }

                                    }


                                    }
                                    break;

                            }


                            }


                            }
                            break;
                        case 2 :
                            // InternalAlf.g:4721:6: ( ( (lv_isNonunique_10_0= 'nonunique' ) ) ( (lv_isOrdered_11_0= 'ordered' ) )? )
                            {
                            // InternalAlf.g:4721:6: ( ( (lv_isNonunique_10_0= 'nonunique' ) ) ( (lv_isOrdered_11_0= 'ordered' ) )? )
                            // InternalAlf.g:4721:7: ( (lv_isNonunique_10_0= 'nonunique' ) ) ( (lv_isOrdered_11_0= 'ordered' ) )?
                            {
                            // InternalAlf.g:4721:7: ( (lv_isNonunique_10_0= 'nonunique' ) )
                            // InternalAlf.g:4722:1: (lv_isNonunique_10_0= 'nonunique' )
                            {
                            // InternalAlf.g:4722:1: (lv_isNonunique_10_0= 'nonunique' )
                            // InternalAlf.g:4723:3: lv_isNonunique_10_0= 'nonunique'
                            {
                            lv_isNonunique_10_0=(Token)match(input,56,FOLLOW_58); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_isNonunique_10_0, grammarAccess.getTypePartAccess().getIsNonuniqueNonuniqueKeyword_1_1_1_0_0());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getTypePartRule());
                              	        }
                                     		setWithLastConsumed(current, "isNonunique", true, "nonunique");
                              	    
                            }

                            }


                            }

                            // InternalAlf.g:4736:2: ( (lv_isOrdered_11_0= 'ordered' ) )?
                            int alt102=2;
                            int LA102_0 = input.LA(1);

                            if ( (LA102_0==55) ) {
                                alt102=1;
                            }
                            switch (alt102) {
                                case 1 :
                                    // InternalAlf.g:4737:1: (lv_isOrdered_11_0= 'ordered' )
                                    {
                                    // InternalAlf.g:4737:1: (lv_isOrdered_11_0= 'ordered' )
                                    // InternalAlf.g:4738:3: lv_isOrdered_11_0= 'ordered'
                                    {
                                    lv_isOrdered_11_0=(Token)match(input,55,FOLLOW_2); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                              newLeafNode(lv_isOrdered_11_0, grammarAccess.getTypePartAccess().getIsOrderedOrderedKeyword_1_1_1_1_0());
                                          
                                    }
                                    if ( state.backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = createModelElement(grammarAccess.getTypePartRule());
                                      	        }
                                             		setWithLastConsumed(current, "isOrdered", true, "ordered");
                                      	    
                                    }

                                    }


                                    }
                                    break;

                            }


                            }


                            }
                            break;
                        case 3 :
                            // InternalAlf.g:4752:6: ( (lv_isSequence_12_0= 'sequence' ) )
                            {
                            // InternalAlf.g:4752:6: ( (lv_isSequence_12_0= 'sequence' ) )
                            // InternalAlf.g:4753:1: (lv_isSequence_12_0= 'sequence' )
                            {
                            // InternalAlf.g:4753:1: (lv_isSequence_12_0= 'sequence' )
                            // InternalAlf.g:4754:3: lv_isSequence_12_0= 'sequence'
                            {
                            lv_isSequence_12_0=(Token)match(input,57,FOLLOW_2); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_isSequence_12_0, grammarAccess.getTypePartAccess().getIsSequenceSequenceKeyword_1_1_2_0());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getTypePartRule());
                              	        }
                                     		setWithLastConsumed(current, "isSequence", true, "sequence");
                              	    
                            }

                            }


                            }


                            }
                            break;

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTypePart"


    // $ANTLR start "entryRuleUnlimitedNaturalLiteral"
    // InternalAlf.g:4775:1: entryRuleUnlimitedNaturalLiteral returns [String current=null] : iv_ruleUnlimitedNaturalLiteral= ruleUnlimitedNaturalLiteral EOF ;
    public final String entryRuleUnlimitedNaturalLiteral() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleUnlimitedNaturalLiteral = null;


        try {
            // InternalAlf.g:4776:2: (iv_ruleUnlimitedNaturalLiteral= ruleUnlimitedNaturalLiteral EOF )
            // InternalAlf.g:4777:2: iv_ruleUnlimitedNaturalLiteral= ruleUnlimitedNaturalLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getUnlimitedNaturalLiteralRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleUnlimitedNaturalLiteral=ruleUnlimitedNaturalLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleUnlimitedNaturalLiteral.getText(); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleUnlimitedNaturalLiteral"


    // $ANTLR start "ruleUnlimitedNaturalLiteral"
    // InternalAlf.g:4784:1: ruleUnlimitedNaturalLiteral returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_NATURAL_VALUE_0= RULE_NATURAL_VALUE | kw= '*' ) ;
    public final AntlrDatatypeRuleToken ruleUnlimitedNaturalLiteral() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_NATURAL_VALUE_0=null;
        Token kw=null;

         enterRule(); 
            
        try {
            // InternalAlf.g:4787:28: ( (this_NATURAL_VALUE_0= RULE_NATURAL_VALUE | kw= '*' ) )
            // InternalAlf.g:4788:1: (this_NATURAL_VALUE_0= RULE_NATURAL_VALUE | kw= '*' )
            {
            // InternalAlf.g:4788:1: (this_NATURAL_VALUE_0= RULE_NATURAL_VALUE | kw= '*' )
            int alt105=2;
            int LA105_0 = input.LA(1);

            if ( (LA105_0==RULE_NATURAL_VALUE) ) {
                alt105=1;
            }
            else if ( (LA105_0==20) ) {
                alt105=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 105, 0, input);

                throw nvae;
            }
            switch (alt105) {
                case 1 :
                    // InternalAlf.g:4788:6: this_NATURAL_VALUE_0= RULE_NATURAL_VALUE
                    {
                    this_NATURAL_VALUE_0=(Token)match(input,RULE_NATURAL_VALUE,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      		current.merge(this_NATURAL_VALUE_0);
                          
                    }
                    if ( state.backtracking==0 ) {
                       
                          newLeafNode(this_NATURAL_VALUE_0, grammarAccess.getUnlimitedNaturalLiteralAccess().getNATURAL_VALUETerminalRuleCall_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:4797:2: kw= '*'
                    {
                    kw=(Token)match(input,20,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getUnlimitedNaturalLiteralAccess().getAsteriskKeyword_1()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleUnlimitedNaturalLiteral"


    // $ANTLR start "entryRuleOperationDeclaration"
    // InternalAlf.g:4810:1: entryRuleOperationDeclaration returns [EObject current=null] : iv_ruleOperationDeclaration= ruleOperationDeclaration EOF ;
    public final EObject entryRuleOperationDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleOperationDeclaration = null;


        try {
            // InternalAlf.g:4811:2: (iv_ruleOperationDeclaration= ruleOperationDeclaration EOF )
            // InternalAlf.g:4812:2: iv_ruleOperationDeclaration= ruleOperationDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOperationDeclarationRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleOperationDeclaration=ruleOperationDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOperationDeclaration; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOperationDeclaration"


    // $ANTLR start "ruleOperationDeclaration"
    // InternalAlf.g:4819:1: ruleOperationDeclaration returns [EObject current=null] : ( ( (lv_isAbstract_0_0= 'abstract' ) )? ( (lv_name_1_0= ruleName ) ) otherlv_2= '(' ( ( (lv_ownedMember_3_0= ruleFormalParameter ) ) (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleFormalParameter ) ) )* )? otherlv_6= ')' ( (lv_ownedMember_7_0= ruleReturnParameter ) )? ( (lv_redefinition_8_0= ruleRedefinitionClause ) )? ) ;
    public final EObject ruleOperationDeclaration() throws RecognitionException {
        EObject current = null;

        Token lv_isAbstract_0_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_ownedMember_3_0 = null;

        EObject lv_ownedMember_5_0 = null;

        EObject lv_ownedMember_7_0 = null;

        EObject lv_redefinition_8_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:4822:28: ( ( ( (lv_isAbstract_0_0= 'abstract' ) )? ( (lv_name_1_0= ruleName ) ) otherlv_2= '(' ( ( (lv_ownedMember_3_0= ruleFormalParameter ) ) (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleFormalParameter ) ) )* )? otherlv_6= ')' ( (lv_ownedMember_7_0= ruleReturnParameter ) )? ( (lv_redefinition_8_0= ruleRedefinitionClause ) )? ) )
            // InternalAlf.g:4823:1: ( ( (lv_isAbstract_0_0= 'abstract' ) )? ( (lv_name_1_0= ruleName ) ) otherlv_2= '(' ( ( (lv_ownedMember_3_0= ruleFormalParameter ) ) (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleFormalParameter ) ) )* )? otherlv_6= ')' ( (lv_ownedMember_7_0= ruleReturnParameter ) )? ( (lv_redefinition_8_0= ruleRedefinitionClause ) )? )
            {
            // InternalAlf.g:4823:1: ( ( (lv_isAbstract_0_0= 'abstract' ) )? ( (lv_name_1_0= ruleName ) ) otherlv_2= '(' ( ( (lv_ownedMember_3_0= ruleFormalParameter ) ) (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleFormalParameter ) ) )* )? otherlv_6= ')' ( (lv_ownedMember_7_0= ruleReturnParameter ) )? ( (lv_redefinition_8_0= ruleRedefinitionClause ) )? )
            // InternalAlf.g:4823:2: ( (lv_isAbstract_0_0= 'abstract' ) )? ( (lv_name_1_0= ruleName ) ) otherlv_2= '(' ( ( (lv_ownedMember_3_0= ruleFormalParameter ) ) (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleFormalParameter ) ) )* )? otherlv_6= ')' ( (lv_ownedMember_7_0= ruleReturnParameter ) )? ( (lv_redefinition_8_0= ruleRedefinitionClause ) )?
            {
            // InternalAlf.g:4823:2: ( (lv_isAbstract_0_0= 'abstract' ) )?
            int alt106=2;
            int LA106_0 = input.LA(1);

            if ( (LA106_0==34) ) {
                alt106=1;
            }
            switch (alt106) {
                case 1 :
                    // InternalAlf.g:4824:1: (lv_isAbstract_0_0= 'abstract' )
                    {
                    // InternalAlf.g:4824:1: (lv_isAbstract_0_0= 'abstract' )
                    // InternalAlf.g:4825:3: lv_isAbstract_0_0= 'abstract'
                    {
                    lv_isAbstract_0_0=(Token)match(input,34,FOLLOW_4); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_isAbstract_0_0, grammarAccess.getOperationDeclarationAccess().getIsAbstractAbstractKeyword_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getOperationDeclarationRule());
                      	        }
                             		setWithLastConsumed(current, "isAbstract", true, "abstract");
                      	    
                    }

                    }


                    }
                    break;

            }

            // InternalAlf.g:4838:3: ( (lv_name_1_0= ruleName ) )
            // InternalAlf.g:4839:1: (lv_name_1_0= ruleName )
            {
            // InternalAlf.g:4839:1: (lv_name_1_0= ruleName )
            // InternalAlf.g:4840:3: lv_name_1_0= ruleName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getOperationDeclarationAccess().getNameNameParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_42);
            lv_name_1_0=ruleName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getOperationDeclarationRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Name");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,16,FOLLOW_43); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getOperationDeclarationAccess().getLeftParenthesisKeyword_2());
                  
            }
            // InternalAlf.g:4860:1: ( ( (lv_ownedMember_3_0= ruleFormalParameter ) ) (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleFormalParameter ) ) )* )?
            int alt108=2;
            int LA108_0 = input.LA(1);

            if ( (LA108_0==RULE_DOCUMENTATION_COMMENT||LA108_0==15||(LA108_0>=46 && LA108_0<=48)) ) {
                alt108=1;
            }
            switch (alt108) {
                case 1 :
                    // InternalAlf.g:4860:2: ( (lv_ownedMember_3_0= ruleFormalParameter ) ) (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleFormalParameter ) ) )*
                    {
                    // InternalAlf.g:4860:2: ( (lv_ownedMember_3_0= ruleFormalParameter ) )
                    // InternalAlf.g:4861:1: (lv_ownedMember_3_0= ruleFormalParameter )
                    {
                    // InternalAlf.g:4861:1: (lv_ownedMember_3_0= ruleFormalParameter )
                    // InternalAlf.g:4862:3: lv_ownedMember_3_0= ruleFormalParameter
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getOperationDeclarationAccess().getOwnedMemberFormalParameterParserRuleCall_3_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_44);
                    lv_ownedMember_3_0=ruleFormalParameter();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getOperationDeclarationRule());
                      	        }
                             		add(
                             			current, 
                             			"ownedMember",
                              		lv_ownedMember_3_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.FormalParameter");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // InternalAlf.g:4878:2: (otherlv_4= ',' ( (lv_ownedMember_5_0= ruleFormalParameter ) ) )*
                    loop107:
                    do {
                        int alt107=2;
                        int LA107_0 = input.LA(1);

                        if ( (LA107_0==18) ) {
                            alt107=1;
                        }


                        switch (alt107) {
                    	case 1 :
                    	    // InternalAlf.g:4878:4: otherlv_4= ',' ( (lv_ownedMember_5_0= ruleFormalParameter ) )
                    	    {
                    	    otherlv_4=(Token)match(input,18,FOLLOW_45); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_4, grammarAccess.getOperationDeclarationAccess().getCommaKeyword_3_1_0());
                    	          
                    	    }
                    	    // InternalAlf.g:4882:1: ( (lv_ownedMember_5_0= ruleFormalParameter ) )
                    	    // InternalAlf.g:4883:1: (lv_ownedMember_5_0= ruleFormalParameter )
                    	    {
                    	    // InternalAlf.g:4883:1: (lv_ownedMember_5_0= ruleFormalParameter )
                    	    // InternalAlf.g:4884:3: lv_ownedMember_5_0= ruleFormalParameter
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getOperationDeclarationAccess().getOwnedMemberFormalParameterParserRuleCall_3_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_44);
                    	    lv_ownedMember_5_0=ruleFormalParameter();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getOperationDeclarationRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"ownedMember",
                    	              		lv_ownedMember_5_0, 
                    	              		"org.eclipse.papyrus.uml.alf.Alf.FormalParameter");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop107;
                        }
                    } while (true);


                    }
                    break;

            }

            otherlv_6=(Token)match(input,17,FOLLOW_59); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getOperationDeclarationAccess().getRightParenthesisKeyword_4());
                  
            }
            // InternalAlf.g:4904:1: ( (lv_ownedMember_7_0= ruleReturnParameter ) )?
            int alt109=2;
            int LA109_0 = input.LA(1);

            if ( (LA109_0==45) ) {
                alt109=1;
            }
            switch (alt109) {
                case 1 :
                    // InternalAlf.g:4905:1: (lv_ownedMember_7_0= ruleReturnParameter )
                    {
                    // InternalAlf.g:4905:1: (lv_ownedMember_7_0= ruleReturnParameter )
                    // InternalAlf.g:4906:3: lv_ownedMember_7_0= ruleReturnParameter
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getOperationDeclarationAccess().getOwnedMemberReturnParameterParserRuleCall_5_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_60);
                    lv_ownedMember_7_0=ruleReturnParameter();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getOperationDeclarationRule());
                      	        }
                             		add(
                             			current, 
                             			"ownedMember",
                              		lv_ownedMember_7_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.ReturnParameter");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            // InternalAlf.g:4922:3: ( (lv_redefinition_8_0= ruleRedefinitionClause ) )?
            int alt110=2;
            int LA110_0 = input.LA(1);

            if ( (LA110_0==58) ) {
                alt110=1;
            }
            switch (alt110) {
                case 1 :
                    // InternalAlf.g:4923:1: (lv_redefinition_8_0= ruleRedefinitionClause )
                    {
                    // InternalAlf.g:4923:1: (lv_redefinition_8_0= ruleRedefinitionClause )
                    // InternalAlf.g:4924:3: lv_redefinition_8_0= ruleRedefinitionClause
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getOperationDeclarationAccess().getRedefinitionRedefinitionClauseParserRuleCall_6_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_redefinition_8_0=ruleRedefinitionClause();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getOperationDeclarationRule());
                      	        }
                             		set(
                             			current, 
                             			"redefinition",
                              		lv_redefinition_8_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.RedefinitionClause");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOperationDeclaration"


    // $ANTLR start "entryRuleOperationDefinitionOrStub"
    // InternalAlf.g:4948:1: entryRuleOperationDefinitionOrStub returns [EObject current=null] : iv_ruleOperationDefinitionOrStub= ruleOperationDefinitionOrStub EOF ;
    public final EObject entryRuleOperationDefinitionOrStub() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleOperationDefinitionOrStub = null;


        try {
            // InternalAlf.g:4949:2: (iv_ruleOperationDefinitionOrStub= ruleOperationDefinitionOrStub EOF )
            // InternalAlf.g:4950:2: iv_ruleOperationDefinitionOrStub= ruleOperationDefinitionOrStub EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOperationDefinitionOrStubRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleOperationDefinitionOrStub=ruleOperationDefinitionOrStub();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOperationDefinitionOrStub; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOperationDefinitionOrStub"


    // $ANTLR start "ruleOperationDefinitionOrStub"
    // InternalAlf.g:4957:1: ruleOperationDefinitionOrStub returns [EObject current=null] : (this_OperationDeclaration_0= ruleOperationDeclaration ( ( (lv_isStub_1_0= ';' ) ) | ( (lv_body_2_0= ruleBlock ) ) ) ) ;
    public final EObject ruleOperationDefinitionOrStub() throws RecognitionException {
        EObject current = null;

        Token lv_isStub_1_0=null;
        EObject this_OperationDeclaration_0 = null;

        EObject lv_body_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:4960:28: ( (this_OperationDeclaration_0= ruleOperationDeclaration ( ( (lv_isStub_1_0= ';' ) ) | ( (lv_body_2_0= ruleBlock ) ) ) ) )
            // InternalAlf.g:4961:1: (this_OperationDeclaration_0= ruleOperationDeclaration ( ( (lv_isStub_1_0= ';' ) ) | ( (lv_body_2_0= ruleBlock ) ) ) )
            {
            // InternalAlf.g:4961:1: (this_OperationDeclaration_0= ruleOperationDeclaration ( ( (lv_isStub_1_0= ';' ) ) | ( (lv_body_2_0= ruleBlock ) ) ) )
            // InternalAlf.g:4962:2: this_OperationDeclaration_0= ruleOperationDeclaration ( ( (lv_isStub_1_0= ';' ) ) | ( (lv_body_2_0= ruleBlock ) ) )
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getOperationDefinitionOrStubAccess().getOperationDeclarationParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_20);
            this_OperationDeclaration_0=ruleOperationDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_OperationDeclaration_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:4973:1: ( ( (lv_isStub_1_0= ';' ) ) | ( (lv_body_2_0= ruleBlock ) ) )
            int alt111=2;
            int LA111_0 = input.LA(1);

            if ( (LA111_0==22) ) {
                alt111=1;
            }
            else if ( (LA111_0==31) ) {
                alt111=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 111, 0, input);

                throw nvae;
            }
            switch (alt111) {
                case 1 :
                    // InternalAlf.g:4973:2: ( (lv_isStub_1_0= ';' ) )
                    {
                    // InternalAlf.g:4973:2: ( (lv_isStub_1_0= ';' ) )
                    // InternalAlf.g:4974:1: (lv_isStub_1_0= ';' )
                    {
                    // InternalAlf.g:4974:1: (lv_isStub_1_0= ';' )
                    // InternalAlf.g:4975:3: lv_isStub_1_0= ';'
                    {
                    lv_isStub_1_0=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_isStub_1_0, grammarAccess.getOperationDefinitionOrStubAccess().getIsStubSemicolonKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getOperationDefinitionOrStubRule());
                      	        }
                             		setWithLastConsumed(current, "isStub", true, ";");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalAlf.g:4989:6: ( (lv_body_2_0= ruleBlock ) )
                    {
                    // InternalAlf.g:4989:6: ( (lv_body_2_0= ruleBlock ) )
                    // InternalAlf.g:4990:1: (lv_body_2_0= ruleBlock )
                    {
                    // InternalAlf.g:4990:1: (lv_body_2_0= ruleBlock )
                    // InternalAlf.g:4991:3: lv_body_2_0= ruleBlock
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getOperationDefinitionOrStubAccess().getBodyBlockParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_body_2_0=ruleBlock();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getOperationDefinitionOrStubRule());
                      	        }
                             		set(
                             			current, 
                             			"body",
                              		lv_body_2_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.Block");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOperationDefinitionOrStub"


    // $ANTLR start "entryRuleRedefinitionClause"
    // InternalAlf.g:5015:1: entryRuleRedefinitionClause returns [EObject current=null] : iv_ruleRedefinitionClause= ruleRedefinitionClause EOF ;
    public final EObject entryRuleRedefinitionClause() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRedefinitionClause = null;


        try {
            // InternalAlf.g:5016:2: (iv_ruleRedefinitionClause= ruleRedefinitionClause EOF )
            // InternalAlf.g:5017:2: iv_ruleRedefinitionClause= ruleRedefinitionClause EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getRedefinitionClauseRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleRedefinitionClause=ruleRedefinitionClause();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleRedefinitionClause; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRedefinitionClause"


    // $ANTLR start "ruleRedefinitionClause"
    // InternalAlf.g:5024:1: ruleRedefinitionClause returns [EObject current=null] : (otherlv_0= 'redefines' this_QualifiedNameList_1= ruleQualifiedNameList ) ;
    public final EObject ruleRedefinitionClause() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject this_QualifiedNameList_1 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:5027:28: ( (otherlv_0= 'redefines' this_QualifiedNameList_1= ruleQualifiedNameList ) )
            // InternalAlf.g:5028:1: (otherlv_0= 'redefines' this_QualifiedNameList_1= ruleQualifiedNameList )
            {
            // InternalAlf.g:5028:1: (otherlv_0= 'redefines' this_QualifiedNameList_1= ruleQualifiedNameList )
            // InternalAlf.g:5028:3: otherlv_0= 'redefines' this_QualifiedNameList_1= ruleQualifiedNameList
            {
            otherlv_0=(Token)match(input,58,FOLLOW_4); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getRedefinitionClauseAccess().getRedefinesKeyword_0());
                  
            }
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getRedefinitionClauseAccess().getQualifiedNameListParserRuleCall_1()); 
                  
            }
            pushFollow(FOLLOW_2);
            this_QualifiedNameList_1=ruleQualifiedNameList();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_QualifiedNameList_1; 
                      afterParserOrEnumRuleCall();
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRedefinitionClause"


    // $ANTLR start "entryRuleReceptionDefinition"
    // InternalAlf.g:5052:1: entryRuleReceptionDefinition returns [EObject current=null] : iv_ruleReceptionDefinition= ruleReceptionDefinition EOF ;
    public final EObject entryRuleReceptionDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleReceptionDefinition = null;


        try {
            // InternalAlf.g:5053:2: (iv_ruleReceptionDefinition= ruleReceptionDefinition EOF )
            // InternalAlf.g:5054:2: iv_ruleReceptionDefinition= ruleReceptionDefinition EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getReceptionDefinitionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleReceptionDefinition=ruleReceptionDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleReceptionDefinition; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleReceptionDefinition"


    // $ANTLR start "ruleReceptionDefinition"
    // InternalAlf.g:5061:1: ruleReceptionDefinition returns [EObject current=null] : (otherlv_0= 'receive' ( (lv_signalName_1_0= ruleQualifiedName ) ) otherlv_2= ';' ) ;
    public final EObject ruleReceptionDefinition() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject lv_signalName_1_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:5064:28: ( (otherlv_0= 'receive' ( (lv_signalName_1_0= ruleQualifiedName ) ) otherlv_2= ';' ) )
            // InternalAlf.g:5065:1: (otherlv_0= 'receive' ( (lv_signalName_1_0= ruleQualifiedName ) ) otherlv_2= ';' )
            {
            // InternalAlf.g:5065:1: (otherlv_0= 'receive' ( (lv_signalName_1_0= ruleQualifiedName ) ) otherlv_2= ';' )
            // InternalAlf.g:5065:3: otherlv_0= 'receive' ( (lv_signalName_1_0= ruleQualifiedName ) ) otherlv_2= ';'
            {
            otherlv_0=(Token)match(input,59,FOLLOW_4); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getReceptionDefinitionAccess().getReceiveKeyword_0());
                  
            }
            // InternalAlf.g:5069:1: ( (lv_signalName_1_0= ruleQualifiedName ) )
            // InternalAlf.g:5070:1: (lv_signalName_1_0= ruleQualifiedName )
            {
            // InternalAlf.g:5070:1: (lv_signalName_1_0= ruleQualifiedName )
            // InternalAlf.g:5071:3: lv_signalName_1_0= ruleQualifiedName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getReceptionDefinitionAccess().getSignalNameQualifiedNameParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_11);
            lv_signalName_1_0=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getReceptionDefinitionRule());
              	        }
                     		set(
                     			current, 
                     			"signalName",
                      		lv_signalName_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.QualifiedName");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getReceptionDefinitionAccess().getSemicolonKeyword_2());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleReceptionDefinition"


    // $ANTLR start "entryRuleSignalReceptionDeclaration"
    // InternalAlf.g:5099:1: entryRuleSignalReceptionDeclaration returns [EObject current=null] : iv_ruleSignalReceptionDeclaration= ruleSignalReceptionDeclaration EOF ;
    public final EObject entryRuleSignalReceptionDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSignalReceptionDeclaration = null;


        try {
            // InternalAlf.g:5100:2: (iv_ruleSignalReceptionDeclaration= ruleSignalReceptionDeclaration EOF )
            // InternalAlf.g:5101:2: iv_ruleSignalReceptionDeclaration= ruleSignalReceptionDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSignalReceptionDeclarationRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSignalReceptionDeclaration=ruleSignalReceptionDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSignalReceptionDeclaration; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSignalReceptionDeclaration"


    // $ANTLR start "ruleSignalReceptionDeclaration"
    // InternalAlf.g:5108:1: ruleSignalReceptionDeclaration returns [EObject current=null] : (otherlv_0= 'receive' otherlv_1= 'signal' ( (lv_name_2_0= ruleName ) ) ( (lv_specialization_3_0= ruleSpecializationClause ) )? ) ;
    public final EObject ruleSignalReceptionDeclaration() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        AntlrDatatypeRuleToken lv_name_2_0 = null;

        EObject lv_specialization_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:5111:28: ( (otherlv_0= 'receive' otherlv_1= 'signal' ( (lv_name_2_0= ruleName ) ) ( (lv_specialization_3_0= ruleSpecializationClause ) )? ) )
            // InternalAlf.g:5112:1: (otherlv_0= 'receive' otherlv_1= 'signal' ( (lv_name_2_0= ruleName ) ) ( (lv_specialization_3_0= ruleSpecializationClause ) )? )
            {
            // InternalAlf.g:5112:1: (otherlv_0= 'receive' otherlv_1= 'signal' ( (lv_name_2_0= ruleName ) ) ( (lv_specialization_3_0= ruleSpecializationClause ) )? )
            // InternalAlf.g:5112:3: otherlv_0= 'receive' otherlv_1= 'signal' ( (lv_name_2_0= ruleName ) ) ( (lv_specialization_3_0= ruleSpecializationClause ) )?
            {
            otherlv_0=(Token)match(input,59,FOLLOW_40); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getSignalReceptionDeclarationAccess().getReceiveKeyword_0());
                  
            }
            otherlv_1=(Token)match(input,43,FOLLOW_4); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getSignalReceptionDeclarationAccess().getSignalKeyword_1());
                  
            }
            // InternalAlf.g:5120:1: ( (lv_name_2_0= ruleName ) )
            // InternalAlf.g:5121:1: (lv_name_2_0= ruleName )
            {
            // InternalAlf.g:5121:1: (lv_name_2_0= ruleName )
            // InternalAlf.g:5122:3: lv_name_2_0= ruleName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getSignalReceptionDeclarationAccess().getNameNameParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_22);
            lv_name_2_0=ruleName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getSignalReceptionDeclarationRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_2_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Name");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:5138:2: ( (lv_specialization_3_0= ruleSpecializationClause ) )?
            int alt112=2;
            int LA112_0 = input.LA(1);

            if ( (LA112_0==33) ) {
                alt112=1;
            }
            switch (alt112) {
                case 1 :
                    // InternalAlf.g:5139:1: (lv_specialization_3_0= ruleSpecializationClause )
                    {
                    // InternalAlf.g:5139:1: (lv_specialization_3_0= ruleSpecializationClause )
                    // InternalAlf.g:5140:3: lv_specialization_3_0= ruleSpecializationClause
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSignalReceptionDeclarationAccess().getSpecializationSpecializationClauseParserRuleCall_3_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_specialization_3_0=ruleSpecializationClause();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSignalReceptionDeclarationRule());
                      	        }
                             		set(
                             			current, 
                             			"specialization",
                              		lv_specialization_3_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.SpecializationClause");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSignalReceptionDeclaration"


    // $ANTLR start "entryRuleSignalReceptionDefinitionOrStub"
    // InternalAlf.g:5164:1: entryRuleSignalReceptionDefinitionOrStub returns [EObject current=null] : iv_ruleSignalReceptionDefinitionOrStub= ruleSignalReceptionDefinitionOrStub EOF ;
    public final EObject entryRuleSignalReceptionDefinitionOrStub() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSignalReceptionDefinitionOrStub = null;


        try {
            // InternalAlf.g:5165:2: (iv_ruleSignalReceptionDefinitionOrStub= ruleSignalReceptionDefinitionOrStub EOF )
            // InternalAlf.g:5166:2: iv_ruleSignalReceptionDefinitionOrStub= ruleSignalReceptionDefinitionOrStub EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSignalReceptionDefinitionOrStubRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSignalReceptionDefinitionOrStub=ruleSignalReceptionDefinitionOrStub();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSignalReceptionDefinitionOrStub; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSignalReceptionDefinitionOrStub"


    // $ANTLR start "ruleSignalReceptionDefinitionOrStub"
    // InternalAlf.g:5173:1: ruleSignalReceptionDefinitionOrStub returns [EObject current=null] : (this_SignalReceptionDeclaration_0= ruleSignalReceptionDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' ) ) ) ;
    public final EObject ruleSignalReceptionDefinitionOrStub() throws RecognitionException {
        EObject current = null;

        Token lv_isStub_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject this_SignalReceptionDeclaration_0 = null;

        EObject lv_ownedMember_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:5176:28: ( (this_SignalReceptionDeclaration_0= ruleSignalReceptionDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' ) ) ) )
            // InternalAlf.g:5177:1: (this_SignalReceptionDeclaration_0= ruleSignalReceptionDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' ) ) )
            {
            // InternalAlf.g:5177:1: (this_SignalReceptionDeclaration_0= ruleSignalReceptionDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' ) ) )
            // InternalAlf.g:5178:2: this_SignalReceptionDeclaration_0= ruleSignalReceptionDeclaration ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' ) )
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getSignalReceptionDefinitionOrStubAccess().getSignalReceptionDeclarationParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_20);
            this_SignalReceptionDeclaration_0=ruleSignalReceptionDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_SignalReceptionDeclaration_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:5189:1: ( ( (lv_isStub_1_0= ';' ) ) | (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' ) )
            int alt114=2;
            int LA114_0 = input.LA(1);

            if ( (LA114_0==22) ) {
                alt114=1;
            }
            else if ( (LA114_0==31) ) {
                alt114=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 114, 0, input);

                throw nvae;
            }
            switch (alt114) {
                case 1 :
                    // InternalAlf.g:5189:2: ( (lv_isStub_1_0= ';' ) )
                    {
                    // InternalAlf.g:5189:2: ( (lv_isStub_1_0= ';' ) )
                    // InternalAlf.g:5190:1: (lv_isStub_1_0= ';' )
                    {
                    // InternalAlf.g:5190:1: (lv_isStub_1_0= ';' )
                    // InternalAlf.g:5191:3: lv_isStub_1_0= ';'
                    {
                    lv_isStub_1_0=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_isStub_1_0, grammarAccess.getSignalReceptionDefinitionOrStubAccess().getIsStubSemicolonKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getSignalReceptionDefinitionOrStubRule());
                      	        }
                             		setWithLastConsumed(current, "isStub", true, ";");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalAlf.g:5205:6: (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' )
                    {
                    // InternalAlf.g:5205:6: (otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}' )
                    // InternalAlf.g:5205:8: otherlv_2= '{' ( (lv_ownedMember_3_0= ruleStructuredMember ) )* otherlv_4= '}'
                    {
                    otherlv_2=(Token)match(input,31,FOLLOW_35); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getSignalReceptionDefinitionOrStubAccess().getLeftCurlyBracketKeyword_1_1_0());
                          
                    }
                    // InternalAlf.g:5209:1: ( (lv_ownedMember_3_0= ruleStructuredMember ) )*
                    loop113:
                    do {
                        int alt113=2;
                        int LA113_0 = input.LA(1);

                        if ( (LA113_0==RULE_DOCUMENTATION_COMMENT||(LA113_0>=RULE_ID && LA113_0<=RULE_UNRESTRICTED_NAME)||LA113_0==15||LA113_0==27) ) {
                            alt113=1;
                        }


                        switch (alt113) {
                    	case 1 :
                    	    // InternalAlf.g:5210:1: (lv_ownedMember_3_0= ruleStructuredMember )
                    	    {
                    	    // InternalAlf.g:5210:1: (lv_ownedMember_3_0= ruleStructuredMember )
                    	    // InternalAlf.g:5211:3: lv_ownedMember_3_0= ruleStructuredMember
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getSignalReceptionDefinitionOrStubAccess().getOwnedMemberStructuredMemberParserRuleCall_1_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_35);
                    	    lv_ownedMember_3_0=ruleStructuredMember();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getSignalReceptionDefinitionOrStubRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"ownedMember",
                    	              		lv_ownedMember_3_0, 
                    	              		"org.eclipse.papyrus.uml.alf.Alf.StructuredMember");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop113;
                        }
                    } while (true);

                    otherlv_4=(Token)match(input,32,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getSignalReceptionDefinitionOrStubAccess().getRightCurlyBracketKeyword_1_1_2());
                          
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSignalReceptionDefinitionOrStub"


    // $ANTLR start "entryRuleName"
    // InternalAlf.g:5239:1: entryRuleName returns [String current=null] : iv_ruleName= ruleName EOF ;
    public final String entryRuleName() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleName = null;


        try {
            // InternalAlf.g:5240:2: (iv_ruleName= ruleName EOF )
            // InternalAlf.g:5241:2: iv_ruleName= ruleName EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNameRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleName=ruleName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleName.getText(); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleName"


    // $ANTLR start "ruleName"
    // InternalAlf.g:5248:1: ruleName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID | this_UNRESTRICTED_NAME_1= RULE_UNRESTRICTED_NAME ) ;
    public final AntlrDatatypeRuleToken ruleName() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token this_UNRESTRICTED_NAME_1=null;

         enterRule(); 
            
        try {
            // InternalAlf.g:5251:28: ( (this_ID_0= RULE_ID | this_UNRESTRICTED_NAME_1= RULE_UNRESTRICTED_NAME ) )
            // InternalAlf.g:5252:1: (this_ID_0= RULE_ID | this_UNRESTRICTED_NAME_1= RULE_UNRESTRICTED_NAME )
            {
            // InternalAlf.g:5252:1: (this_ID_0= RULE_ID | this_UNRESTRICTED_NAME_1= RULE_UNRESTRICTED_NAME )
            int alt115=2;
            int LA115_0 = input.LA(1);

            if ( (LA115_0==RULE_ID) ) {
                alt115=1;
            }
            else if ( (LA115_0==RULE_UNRESTRICTED_NAME) ) {
                alt115=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 115, 0, input);

                throw nvae;
            }
            switch (alt115) {
                case 1 :
                    // InternalAlf.g:5252:6: this_ID_0= RULE_ID
                    {
                    this_ID_0=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      		current.merge(this_ID_0);
                          
                    }
                    if ( state.backtracking==0 ) {
                       
                          newLeafNode(this_ID_0, grammarAccess.getNameAccess().getIDTerminalRuleCall_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:5260:10: this_UNRESTRICTED_NAME_1= RULE_UNRESTRICTED_NAME
                    {
                    this_UNRESTRICTED_NAME_1=(Token)match(input,RULE_UNRESTRICTED_NAME,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      		current.merge(this_UNRESTRICTED_NAME_1);
                          
                    }
                    if ( state.backtracking==0 ) {
                       
                          newLeafNode(this_UNRESTRICTED_NAME_1, grammarAccess.getNameAccess().getUNRESTRICTED_NAMETerminalRuleCall_1()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleName"


    // $ANTLR start "entryRuleQualifiedName"
    // InternalAlf.g:5275:1: entryRuleQualifiedName returns [EObject current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
    public final EObject entryRuleQualifiedName() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleQualifiedName = null;


        try {
            // InternalAlf.g:5276:2: (iv_ruleQualifiedName= ruleQualifiedName EOF )
            // InternalAlf.g:5277:2: iv_ruleQualifiedName= ruleQualifiedName EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getQualifiedNameRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleQualifiedName=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleQualifiedName; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQualifiedName"


    // $ANTLR start "ruleQualifiedName"
    // InternalAlf.g:5284:1: ruleQualifiedName returns [EObject current=null] : (this_UnqualifiedName_0= ruleUnqualifiedName ( (otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) ) )+ | (otherlv_3= '.' ( (lv_nameBinding_4_0= ruleNameBinding ) ) )+ )? ) ;
    public final EObject ruleQualifiedName() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject this_UnqualifiedName_0 = null;

        EObject lv_nameBinding_2_0 = null;

        EObject lv_nameBinding_4_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:5287:28: ( (this_UnqualifiedName_0= ruleUnqualifiedName ( (otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) ) )+ | (otherlv_3= '.' ( (lv_nameBinding_4_0= ruleNameBinding ) ) )+ )? ) )
            // InternalAlf.g:5288:1: (this_UnqualifiedName_0= ruleUnqualifiedName ( (otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) ) )+ | (otherlv_3= '.' ( (lv_nameBinding_4_0= ruleNameBinding ) ) )+ )? )
            {
            // InternalAlf.g:5288:1: (this_UnqualifiedName_0= ruleUnqualifiedName ( (otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) ) )+ | (otherlv_3= '.' ( (lv_nameBinding_4_0= ruleNameBinding ) ) )+ )? )
            // InternalAlf.g:5289:2: this_UnqualifiedName_0= ruleUnqualifiedName ( (otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) ) )+ | (otherlv_3= '.' ( (lv_nameBinding_4_0= ruleNameBinding ) ) )+ )?
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getQualifiedNameAccess().getUnqualifiedNameParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_61);
            this_UnqualifiedName_0=ruleUnqualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_UnqualifiedName_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:5300:1: ( (otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) ) )+ | (otherlv_3= '.' ( (lv_nameBinding_4_0= ruleNameBinding ) ) )+ )?
            int alt118=3;
            int LA118_0 = input.LA(1);

            if ( (LA118_0==25) ) {
                alt118=1;
            }
            else if ( (LA118_0==26) ) {
                int LA118_2 = input.LA(2);

                if ( (LA118_2==RULE_ID) ) {
                    int LA118_4 = input.LA(3);

                    if ( (synpred134_InternalAlf()) ) {
                        alt118=2;
                    }
                }
                else if ( (LA118_2==RULE_UNRESTRICTED_NAME) ) {
                    int LA118_5 = input.LA(3);

                    if ( (synpred134_InternalAlf()) ) {
                        alt118=2;
                    }
                }
            }
            switch (alt118) {
                case 1 :
                    // InternalAlf.g:5300:2: (otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) ) )+
                    {
                    // InternalAlf.g:5300:2: (otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) ) )+
                    int cnt116=0;
                    loop116:
                    do {
                        int alt116=2;
                        int LA116_0 = input.LA(1);

                        if ( (LA116_0==25) ) {
                            alt116=1;
                        }


                        switch (alt116) {
                    	case 1 :
                    	    // InternalAlf.g:5300:4: otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) )
                    	    {
                    	    otherlv_1=(Token)match(input,25,FOLLOW_4); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_1, grammarAccess.getQualifiedNameAccess().getColonColonKeyword_1_0_0());
                    	          
                    	    }
                    	    // InternalAlf.g:5304:1: ( (lv_nameBinding_2_0= ruleNameBinding ) )
                    	    // InternalAlf.g:5305:1: (lv_nameBinding_2_0= ruleNameBinding )
                    	    {
                    	    // InternalAlf.g:5305:1: (lv_nameBinding_2_0= ruleNameBinding )
                    	    // InternalAlf.g:5306:3: lv_nameBinding_2_0= ruleNameBinding
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getQualifiedNameAccess().getNameBindingNameBindingParserRuleCall_1_0_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_62);
                    	    lv_nameBinding_2_0=ruleNameBinding();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getQualifiedNameRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"nameBinding",
                    	              		lv_nameBinding_2_0, 
                    	              		"org.eclipse.papyrus.uml.alf.Alf.NameBinding");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt116 >= 1 ) break loop116;
                    	    if (state.backtracking>0) {state.failed=true; return current;}
                                EarlyExitException eee =
                                    new EarlyExitException(116, input);
                                throw eee;
                        }
                        cnt116++;
                    } while (true);


                    }
                    break;
                case 2 :
                    // InternalAlf.g:5323:6: (otherlv_3= '.' ( (lv_nameBinding_4_0= ruleNameBinding ) ) )+
                    {
                    // InternalAlf.g:5323:6: (otherlv_3= '.' ( (lv_nameBinding_4_0= ruleNameBinding ) ) )+
                    int cnt117=0;
                    loop117:
                    do {
                        int alt117=2;
                        int LA117_0 = input.LA(1);

                        if ( (LA117_0==26) ) {
                            int LA117_2 = input.LA(2);

                            if ( (LA117_2==RULE_ID) ) {
                                int LA117_3 = input.LA(3);

                                if ( (synpred133_InternalAlf()) ) {
                                    alt117=1;
                                }


                            }
                            else if ( (LA117_2==RULE_UNRESTRICTED_NAME) ) {
                                int LA117_4 = input.LA(3);

                                if ( (synpred133_InternalAlf()) ) {
                                    alt117=1;
                                }


                            }


                        }


                        switch (alt117) {
                    	case 1 :
                    	    // InternalAlf.g:5323:8: otherlv_3= '.' ( (lv_nameBinding_4_0= ruleNameBinding ) )
                    	    {
                    	    otherlv_3=(Token)match(input,26,FOLLOW_4); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_3, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_1_0());
                    	          
                    	    }
                    	    // InternalAlf.g:5327:1: ( (lv_nameBinding_4_0= ruleNameBinding ) )
                    	    // InternalAlf.g:5328:1: (lv_nameBinding_4_0= ruleNameBinding )
                    	    {
                    	    // InternalAlf.g:5328:1: (lv_nameBinding_4_0= ruleNameBinding )
                    	    // InternalAlf.g:5329:3: lv_nameBinding_4_0= ruleNameBinding
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getQualifiedNameAccess().getNameBindingNameBindingParserRuleCall_1_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_63);
                    	    lv_nameBinding_4_0=ruleNameBinding();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getQualifiedNameRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"nameBinding",
                    	              		lv_nameBinding_4_0, 
                    	              		"org.eclipse.papyrus.uml.alf.Alf.NameBinding");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt117 >= 1 ) break loop117;
                    	    if (state.backtracking>0) {state.failed=true; return current;}
                                EarlyExitException eee =
                                    new EarlyExitException(117, input);
                                throw eee;
                        }
                        cnt117++;
                    } while (true);


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQualifiedName"


    // $ANTLR start "entryRulePotentiallyAmbiguousQualifiedName"
    // InternalAlf.g:5353:1: entryRulePotentiallyAmbiguousQualifiedName returns [EObject current=null] : iv_rulePotentiallyAmbiguousQualifiedName= rulePotentiallyAmbiguousQualifiedName EOF ;
    public final EObject entryRulePotentiallyAmbiguousQualifiedName() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePotentiallyAmbiguousQualifiedName = null;


        try {
            // InternalAlf.g:5354:2: (iv_rulePotentiallyAmbiguousQualifiedName= rulePotentiallyAmbiguousQualifiedName EOF )
            // InternalAlf.g:5355:2: iv_rulePotentiallyAmbiguousQualifiedName= rulePotentiallyAmbiguousQualifiedName EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPotentiallyAmbiguousQualifiedNameRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_rulePotentiallyAmbiguousQualifiedName=rulePotentiallyAmbiguousQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePotentiallyAmbiguousQualifiedName; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePotentiallyAmbiguousQualifiedName"


    // $ANTLR start "rulePotentiallyAmbiguousQualifiedName"
    // InternalAlf.g:5362:1: rulePotentiallyAmbiguousQualifiedName returns [EObject current=null] : (this_UnqualifiedName_0= ruleUnqualifiedName ( (otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) ) )+ | ( ( (lv_isAmbiguous_3_0= '.' ) ) ( (lv_nameBinding_4_0= ruleNameBinding ) ) (otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) ) )* ) )? ) ;
    public final EObject rulePotentiallyAmbiguousQualifiedName() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token lv_isAmbiguous_3_0=null;
        Token otherlv_5=null;
        EObject this_UnqualifiedName_0 = null;

        EObject lv_nameBinding_2_0 = null;

        EObject lv_nameBinding_4_0 = null;

        EObject lv_nameBinding_6_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:5365:28: ( (this_UnqualifiedName_0= ruleUnqualifiedName ( (otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) ) )+ | ( ( (lv_isAmbiguous_3_0= '.' ) ) ( (lv_nameBinding_4_0= ruleNameBinding ) ) (otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) ) )* ) )? ) )
            // InternalAlf.g:5366:1: (this_UnqualifiedName_0= ruleUnqualifiedName ( (otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) ) )+ | ( ( (lv_isAmbiguous_3_0= '.' ) ) ( (lv_nameBinding_4_0= ruleNameBinding ) ) (otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) ) )* ) )? )
            {
            // InternalAlf.g:5366:1: (this_UnqualifiedName_0= ruleUnqualifiedName ( (otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) ) )+ | ( ( (lv_isAmbiguous_3_0= '.' ) ) ( (lv_nameBinding_4_0= ruleNameBinding ) ) (otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) ) )* ) )? )
            // InternalAlf.g:5367:2: this_UnqualifiedName_0= ruleUnqualifiedName ( (otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) ) )+ | ( ( (lv_isAmbiguous_3_0= '.' ) ) ( (lv_nameBinding_4_0= ruleNameBinding ) ) (otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) ) )* ) )?
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getPotentiallyAmbiguousQualifiedNameAccess().getUnqualifiedNameParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_61);
            this_UnqualifiedName_0=ruleUnqualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_UnqualifiedName_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:5378:1: ( (otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) ) )+ | ( ( (lv_isAmbiguous_3_0= '.' ) ) ( (lv_nameBinding_4_0= ruleNameBinding ) ) (otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) ) )* ) )?
            int alt121=3;
            int LA121_0 = input.LA(1);

            if ( (LA121_0==25) ) {
                alt121=1;
            }
            else if ( (LA121_0==26) ) {
                int LA121_2 = input.LA(2);

                if ( (LA121_2==RULE_ID) ) {
                    int LA121_4 = input.LA(3);

                    if ( (synpred138_InternalAlf()) ) {
                        alt121=2;
                    }
                }
                else if ( (LA121_2==RULE_UNRESTRICTED_NAME) ) {
                    int LA121_5 = input.LA(3);

                    if ( (synpred138_InternalAlf()) ) {
                        alt121=2;
                    }
                }
            }
            switch (alt121) {
                case 1 :
                    // InternalAlf.g:5378:2: (otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) ) )+
                    {
                    // InternalAlf.g:5378:2: (otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) ) )+
                    int cnt119=0;
                    loop119:
                    do {
                        int alt119=2;
                        int LA119_0 = input.LA(1);

                        if ( (LA119_0==25) ) {
                            alt119=1;
                        }


                        switch (alt119) {
                    	case 1 :
                    	    // InternalAlf.g:5378:4: otherlv_1= '::' ( (lv_nameBinding_2_0= ruleNameBinding ) )
                    	    {
                    	    otherlv_1=(Token)match(input,25,FOLLOW_4); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_1, grammarAccess.getPotentiallyAmbiguousQualifiedNameAccess().getColonColonKeyword_1_0_0());
                    	          
                    	    }
                    	    // InternalAlf.g:5382:1: ( (lv_nameBinding_2_0= ruleNameBinding ) )
                    	    // InternalAlf.g:5383:1: (lv_nameBinding_2_0= ruleNameBinding )
                    	    {
                    	    // InternalAlf.g:5383:1: (lv_nameBinding_2_0= ruleNameBinding )
                    	    // InternalAlf.g:5384:3: lv_nameBinding_2_0= ruleNameBinding
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getPotentiallyAmbiguousQualifiedNameAccess().getNameBindingNameBindingParserRuleCall_1_0_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_62);
                    	    lv_nameBinding_2_0=ruleNameBinding();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getPotentiallyAmbiguousQualifiedNameRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"nameBinding",
                    	              		lv_nameBinding_2_0, 
                    	              		"org.eclipse.papyrus.uml.alf.Alf.NameBinding");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt119 >= 1 ) break loop119;
                    	    if (state.backtracking>0) {state.failed=true; return current;}
                                EarlyExitException eee =
                                    new EarlyExitException(119, input);
                                throw eee;
                        }
                        cnt119++;
                    } while (true);


                    }
                    break;
                case 2 :
                    // InternalAlf.g:5401:6: ( ( (lv_isAmbiguous_3_0= '.' ) ) ( (lv_nameBinding_4_0= ruleNameBinding ) ) (otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) ) )* )
                    {
                    // InternalAlf.g:5401:6: ( ( (lv_isAmbiguous_3_0= '.' ) ) ( (lv_nameBinding_4_0= ruleNameBinding ) ) (otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) ) )* )
                    // InternalAlf.g:5401:7: ( (lv_isAmbiguous_3_0= '.' ) ) ( (lv_nameBinding_4_0= ruleNameBinding ) ) (otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) ) )*
                    {
                    // InternalAlf.g:5401:7: ( (lv_isAmbiguous_3_0= '.' ) )
                    // InternalAlf.g:5402:1: (lv_isAmbiguous_3_0= '.' )
                    {
                    // InternalAlf.g:5402:1: (lv_isAmbiguous_3_0= '.' )
                    // InternalAlf.g:5403:3: lv_isAmbiguous_3_0= '.'
                    {
                    lv_isAmbiguous_3_0=(Token)match(input,26,FOLLOW_4); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_isAmbiguous_3_0, grammarAccess.getPotentiallyAmbiguousQualifiedNameAccess().getIsAmbiguousFullStopKeyword_1_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getPotentiallyAmbiguousQualifiedNameRule());
                      	        }
                             		setWithLastConsumed(current, "isAmbiguous", true, ".");
                      	    
                    }

                    }


                    }

                    // InternalAlf.g:5416:2: ( (lv_nameBinding_4_0= ruleNameBinding ) )
                    // InternalAlf.g:5417:1: (lv_nameBinding_4_0= ruleNameBinding )
                    {
                    // InternalAlf.g:5417:1: (lv_nameBinding_4_0= ruleNameBinding )
                    // InternalAlf.g:5418:3: lv_nameBinding_4_0= ruleNameBinding
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getPotentiallyAmbiguousQualifiedNameAccess().getNameBindingNameBindingParserRuleCall_1_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_63);
                    lv_nameBinding_4_0=ruleNameBinding();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getPotentiallyAmbiguousQualifiedNameRule());
                      	        }
                             		add(
                             			current, 
                             			"nameBinding",
                              		lv_nameBinding_4_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.NameBinding");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // InternalAlf.g:5434:2: (otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) ) )*
                    loop120:
                    do {
                        int alt120=2;
                        int LA120_0 = input.LA(1);

                        if ( (LA120_0==26) ) {
                            int LA120_2 = input.LA(2);

                            if ( (LA120_2==RULE_ID) ) {
                                int LA120_3 = input.LA(3);

                                if ( (synpred137_InternalAlf()) ) {
                                    alt120=1;
                                }


                            }
                            else if ( (LA120_2==RULE_UNRESTRICTED_NAME) ) {
                                int LA120_4 = input.LA(3);

                                if ( (synpred137_InternalAlf()) ) {
                                    alt120=1;
                                }


                            }


                        }


                        switch (alt120) {
                    	case 1 :
                    	    // InternalAlf.g:5434:4: otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) )
                    	    {
                    	    otherlv_5=(Token)match(input,26,FOLLOW_4); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_5, grammarAccess.getPotentiallyAmbiguousQualifiedNameAccess().getFullStopKeyword_1_1_2_0());
                    	          
                    	    }
                    	    // InternalAlf.g:5438:1: ( (lv_nameBinding_6_0= ruleNameBinding ) )
                    	    // InternalAlf.g:5439:1: (lv_nameBinding_6_0= ruleNameBinding )
                    	    {
                    	    // InternalAlf.g:5439:1: (lv_nameBinding_6_0= ruleNameBinding )
                    	    // InternalAlf.g:5440:3: lv_nameBinding_6_0= ruleNameBinding
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getPotentiallyAmbiguousQualifiedNameAccess().getNameBindingNameBindingParserRuleCall_1_1_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_63);
                    	    lv_nameBinding_6_0=ruleNameBinding();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getPotentiallyAmbiguousQualifiedNameRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"nameBinding",
                    	              		lv_nameBinding_6_0, 
                    	              		"org.eclipse.papyrus.uml.alf.Alf.NameBinding");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop120;
                        }
                    } while (true);


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePotentiallyAmbiguousQualifiedName"


    // $ANTLR start "entryRuleUnqualifiedName"
    // InternalAlf.g:5468:1: entryRuleUnqualifiedName returns [EObject current=null] : iv_ruleUnqualifiedName= ruleUnqualifiedName EOF ;
    public final EObject entryRuleUnqualifiedName() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleUnqualifiedName = null;


        try {
            // InternalAlf.g:5469:2: (iv_ruleUnqualifiedName= ruleUnqualifiedName EOF )
            // InternalAlf.g:5470:2: iv_ruleUnqualifiedName= ruleUnqualifiedName EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getUnqualifiedNameRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleUnqualifiedName=ruleUnqualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleUnqualifiedName; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleUnqualifiedName"


    // $ANTLR start "ruleUnqualifiedName"
    // InternalAlf.g:5477:1: ruleUnqualifiedName returns [EObject current=null] : ( (lv_nameBinding_0_0= ruleNameBinding ) ) ;
    public final EObject ruleUnqualifiedName() throws RecognitionException {
        EObject current = null;

        EObject lv_nameBinding_0_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:5480:28: ( ( (lv_nameBinding_0_0= ruleNameBinding ) ) )
            // InternalAlf.g:5481:1: ( (lv_nameBinding_0_0= ruleNameBinding ) )
            {
            // InternalAlf.g:5481:1: ( (lv_nameBinding_0_0= ruleNameBinding ) )
            // InternalAlf.g:5482:1: (lv_nameBinding_0_0= ruleNameBinding )
            {
            // InternalAlf.g:5482:1: (lv_nameBinding_0_0= ruleNameBinding )
            // InternalAlf.g:5483:3: lv_nameBinding_0_0= ruleNameBinding
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getUnqualifiedNameAccess().getNameBindingNameBindingParserRuleCall_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_nameBinding_0_0=ruleNameBinding();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getUnqualifiedNameRule());
              	        }
                     		add(
                     			current, 
                     			"nameBinding",
                      		lv_nameBinding_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.NameBinding");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleUnqualifiedName"


    // $ANTLR start "entryRuleNameBinding"
    // InternalAlf.g:5507:1: entryRuleNameBinding returns [EObject current=null] : iv_ruleNameBinding= ruleNameBinding EOF ;
    public final EObject entryRuleNameBinding() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNameBinding = null;


        try {
            // InternalAlf.g:5508:2: (iv_ruleNameBinding= ruleNameBinding EOF )
            // InternalAlf.g:5509:2: iv_ruleNameBinding= ruleNameBinding EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNameBindingRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleNameBinding=ruleNameBinding();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNameBinding; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNameBinding"


    // $ANTLR start "ruleNameBinding"
    // InternalAlf.g:5516:1: ruleNameBinding returns [EObject current=null] : ( ( (lv_name_0_0= ruleName ) ) ( (lv_binding_1_0= ruleTemplateBinding ) )? ) ;
    public final EObject ruleNameBinding() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_name_0_0 = null;

        EObject lv_binding_1_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:5519:28: ( ( ( (lv_name_0_0= ruleName ) ) ( (lv_binding_1_0= ruleTemplateBinding ) )? ) )
            // InternalAlf.g:5520:1: ( ( (lv_name_0_0= ruleName ) ) ( (lv_binding_1_0= ruleTemplateBinding ) )? )
            {
            // InternalAlf.g:5520:1: ( ( (lv_name_0_0= ruleName ) ) ( (lv_binding_1_0= ruleTemplateBinding ) )? )
            // InternalAlf.g:5520:2: ( (lv_name_0_0= ruleName ) ) ( (lv_binding_1_0= ruleTemplateBinding ) )?
            {
            // InternalAlf.g:5520:2: ( (lv_name_0_0= ruleName ) )
            // InternalAlf.g:5521:1: (lv_name_0_0= ruleName )
            {
            // InternalAlf.g:5521:1: (lv_name_0_0= ruleName )
            // InternalAlf.g:5522:3: lv_name_0_0= ruleName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getNameBindingAccess().getNameNameParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_64);
            lv_name_0_0=ruleName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getNameBindingRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Name");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:5538:2: ( (lv_binding_1_0= ruleTemplateBinding ) )?
            int alt122=2;
            alt122 = dfa122.predict(input);
            switch (alt122) {
                case 1 :
                    // InternalAlf.g:5539:1: (lv_binding_1_0= ruleTemplateBinding )
                    {
                    // InternalAlf.g:5539:1: (lv_binding_1_0= ruleTemplateBinding )
                    // InternalAlf.g:5540:3: lv_binding_1_0= ruleTemplateBinding
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getNameBindingAccess().getBindingTemplateBindingParserRuleCall_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_binding_1_0=ruleTemplateBinding();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getNameBindingRule());
                      	        }
                             		set(
                             			current, 
                             			"binding",
                              		lv_binding_1_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.TemplateBinding");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNameBinding"


    // $ANTLR start "entryRuleTemplateBinding"
    // InternalAlf.g:5564:1: entryRuleTemplateBinding returns [EObject current=null] : iv_ruleTemplateBinding= ruleTemplateBinding EOF ;
    public final EObject entryRuleTemplateBinding() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTemplateBinding = null;


        try {
            // InternalAlf.g:5565:2: (iv_ruleTemplateBinding= ruleTemplateBinding EOF )
            // InternalAlf.g:5566:2: iv_ruleTemplateBinding= ruleTemplateBinding EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTemplateBindingRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleTemplateBinding=ruleTemplateBinding();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTemplateBinding; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTemplateBinding"


    // $ANTLR start "ruleTemplateBinding"
    // InternalAlf.g:5573:1: ruleTemplateBinding returns [EObject current=null] : (otherlv_0= '<' (this_NamedTemplateBinding_1= ruleNamedTemplateBinding | this_PositionalTemplateBinding_2= rulePositionalTemplateBinding ) otherlv_3= '>' ) ;
    public final EObject ruleTemplateBinding() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_3=null;
        EObject this_NamedTemplateBinding_1 = null;

        EObject this_PositionalTemplateBinding_2 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:5576:28: ( (otherlv_0= '<' (this_NamedTemplateBinding_1= ruleNamedTemplateBinding | this_PositionalTemplateBinding_2= rulePositionalTemplateBinding ) otherlv_3= '>' ) )
            // InternalAlf.g:5577:1: (otherlv_0= '<' (this_NamedTemplateBinding_1= ruleNamedTemplateBinding | this_PositionalTemplateBinding_2= rulePositionalTemplateBinding ) otherlv_3= '>' )
            {
            // InternalAlf.g:5577:1: (otherlv_0= '<' (this_NamedTemplateBinding_1= ruleNamedTemplateBinding | this_PositionalTemplateBinding_2= rulePositionalTemplateBinding ) otherlv_3= '>' )
            // InternalAlf.g:5577:3: otherlv_0= '<' (this_NamedTemplateBinding_1= ruleNamedTemplateBinding | this_PositionalTemplateBinding_2= rulePositionalTemplateBinding ) otherlv_3= '>'
            {
            otherlv_0=(Token)match(input,36,FOLLOW_4); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getTemplateBindingAccess().getLessThanSignKeyword_0());
                  
            }
            // InternalAlf.g:5581:1: (this_NamedTemplateBinding_1= ruleNamedTemplateBinding | this_PositionalTemplateBinding_2= rulePositionalTemplateBinding )
            int alt123=2;
            int LA123_0 = input.LA(1);

            if ( (LA123_0==RULE_ID) ) {
                int LA123_1 = input.LA(2);

                if ( (LA123_1==19) ) {
                    alt123=1;
                }
                else if ( (LA123_1==18||(LA123_1>=25 && LA123_1<=26)||(LA123_1>=36 && LA123_1<=37)) ) {
                    alt123=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 123, 1, input);

                    throw nvae;
                }
            }
            else if ( (LA123_0==RULE_UNRESTRICTED_NAME) ) {
                int LA123_2 = input.LA(2);

                if ( (LA123_2==18||(LA123_2>=25 && LA123_2<=26)||(LA123_2>=36 && LA123_2<=37)) ) {
                    alt123=2;
                }
                else if ( (LA123_2==19) ) {
                    alt123=1;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 123, 2, input);

                    throw nvae;
                }
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 123, 0, input);

                throw nvae;
            }
            switch (alt123) {
                case 1 :
                    // InternalAlf.g:5582:2: this_NamedTemplateBinding_1= ruleNamedTemplateBinding
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getTemplateBindingAccess().getNamedTemplateBindingParserRuleCall_1_0()); 
                          
                    }
                    pushFollow(FOLLOW_65);
                    this_NamedTemplateBinding_1=ruleNamedTemplateBinding();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_NamedTemplateBinding_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:5595:2: this_PositionalTemplateBinding_2= rulePositionalTemplateBinding
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getTemplateBindingAccess().getPositionalTemplateBindingParserRuleCall_1_1()); 
                          
                    }
                    pushFollow(FOLLOW_65);
                    this_PositionalTemplateBinding_2=rulePositionalTemplateBinding();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_PositionalTemplateBinding_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }

            otherlv_3=(Token)match(input,37,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getTemplateBindingAccess().getGreaterThanSignKeyword_2());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTemplateBinding"


    // $ANTLR start "entryRulePositionalTemplateBinding"
    // InternalAlf.g:5618:1: entryRulePositionalTemplateBinding returns [EObject current=null] : iv_rulePositionalTemplateBinding= rulePositionalTemplateBinding EOF ;
    public final EObject entryRulePositionalTemplateBinding() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePositionalTemplateBinding = null;


        try {
            // InternalAlf.g:5619:2: (iv_rulePositionalTemplateBinding= rulePositionalTemplateBinding EOF )
            // InternalAlf.g:5620:2: iv_rulePositionalTemplateBinding= rulePositionalTemplateBinding EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPositionalTemplateBindingRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_rulePositionalTemplateBinding=rulePositionalTemplateBinding();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePositionalTemplateBinding; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePositionalTemplateBinding"


    // $ANTLR start "rulePositionalTemplateBinding"
    // InternalAlf.g:5627:1: rulePositionalTemplateBinding returns [EObject current=null] : ( ( (lv_argumentName_0_0= ruleQualifiedName ) ) (otherlv_1= ',' ( (lv_argumentName_2_0= ruleQualifiedName ) ) )* ) ;
    public final EObject rulePositionalTemplateBinding() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_argumentName_0_0 = null;

        EObject lv_argumentName_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:5630:28: ( ( ( (lv_argumentName_0_0= ruleQualifiedName ) ) (otherlv_1= ',' ( (lv_argumentName_2_0= ruleQualifiedName ) ) )* ) )
            // InternalAlf.g:5631:1: ( ( (lv_argumentName_0_0= ruleQualifiedName ) ) (otherlv_1= ',' ( (lv_argumentName_2_0= ruleQualifiedName ) ) )* )
            {
            // InternalAlf.g:5631:1: ( ( (lv_argumentName_0_0= ruleQualifiedName ) ) (otherlv_1= ',' ( (lv_argumentName_2_0= ruleQualifiedName ) ) )* )
            // InternalAlf.g:5631:2: ( (lv_argumentName_0_0= ruleQualifiedName ) ) (otherlv_1= ',' ( (lv_argumentName_2_0= ruleQualifiedName ) ) )*
            {
            // InternalAlf.g:5631:2: ( (lv_argumentName_0_0= ruleQualifiedName ) )
            // InternalAlf.g:5632:1: (lv_argumentName_0_0= ruleQualifiedName )
            {
            // InternalAlf.g:5632:1: (lv_argumentName_0_0= ruleQualifiedName )
            // InternalAlf.g:5633:3: lv_argumentName_0_0= ruleQualifiedName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getPositionalTemplateBindingAccess().getArgumentNameQualifiedNameParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_7);
            lv_argumentName_0_0=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getPositionalTemplateBindingRule());
              	        }
                     		add(
                     			current, 
                     			"argumentName",
                      		lv_argumentName_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.QualifiedName");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:5649:2: (otherlv_1= ',' ( (lv_argumentName_2_0= ruleQualifiedName ) ) )*
            loop124:
            do {
                int alt124=2;
                int LA124_0 = input.LA(1);

                if ( (LA124_0==18) ) {
                    alt124=1;
                }


                switch (alt124) {
            	case 1 :
            	    // InternalAlf.g:5649:4: otherlv_1= ',' ( (lv_argumentName_2_0= ruleQualifiedName ) )
            	    {
            	    otherlv_1=(Token)match(input,18,FOLLOW_4); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_1, grammarAccess.getPositionalTemplateBindingAccess().getCommaKeyword_1_0());
            	          
            	    }
            	    // InternalAlf.g:5653:1: ( (lv_argumentName_2_0= ruleQualifiedName ) )
            	    // InternalAlf.g:5654:1: (lv_argumentName_2_0= ruleQualifiedName )
            	    {
            	    // InternalAlf.g:5654:1: (lv_argumentName_2_0= ruleQualifiedName )
            	    // InternalAlf.g:5655:3: lv_argumentName_2_0= ruleQualifiedName
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getPositionalTemplateBindingAccess().getArgumentNameQualifiedNameParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_7);
            	    lv_argumentName_2_0=ruleQualifiedName();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getPositionalTemplateBindingRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"argumentName",
            	              		lv_argumentName_2_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.QualifiedName");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop124;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePositionalTemplateBinding"


    // $ANTLR start "entryRuleNamedTemplateBinding"
    // InternalAlf.g:5679:1: entryRuleNamedTemplateBinding returns [EObject current=null] : iv_ruleNamedTemplateBinding= ruleNamedTemplateBinding EOF ;
    public final EObject entryRuleNamedTemplateBinding() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNamedTemplateBinding = null;


        try {
            // InternalAlf.g:5680:2: (iv_ruleNamedTemplateBinding= ruleNamedTemplateBinding EOF )
            // InternalAlf.g:5681:2: iv_ruleNamedTemplateBinding= ruleNamedTemplateBinding EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNamedTemplateBindingRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleNamedTemplateBinding=ruleNamedTemplateBinding();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNamedTemplateBinding; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNamedTemplateBinding"


    // $ANTLR start "ruleNamedTemplateBinding"
    // InternalAlf.g:5688:1: ruleNamedTemplateBinding returns [EObject current=null] : ( ( (lv_substitution_0_0= ruleTemplateParameterSubstitution ) ) (otherlv_1= ',' ( (lv_substitution_2_0= ruleTemplateParameterSubstitution ) ) )* ) ;
    public final EObject ruleNamedTemplateBinding() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_substitution_0_0 = null;

        EObject lv_substitution_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:5691:28: ( ( ( (lv_substitution_0_0= ruleTemplateParameterSubstitution ) ) (otherlv_1= ',' ( (lv_substitution_2_0= ruleTemplateParameterSubstitution ) ) )* ) )
            // InternalAlf.g:5692:1: ( ( (lv_substitution_0_0= ruleTemplateParameterSubstitution ) ) (otherlv_1= ',' ( (lv_substitution_2_0= ruleTemplateParameterSubstitution ) ) )* )
            {
            // InternalAlf.g:5692:1: ( ( (lv_substitution_0_0= ruleTemplateParameterSubstitution ) ) (otherlv_1= ',' ( (lv_substitution_2_0= ruleTemplateParameterSubstitution ) ) )* )
            // InternalAlf.g:5692:2: ( (lv_substitution_0_0= ruleTemplateParameterSubstitution ) ) (otherlv_1= ',' ( (lv_substitution_2_0= ruleTemplateParameterSubstitution ) ) )*
            {
            // InternalAlf.g:5692:2: ( (lv_substitution_0_0= ruleTemplateParameterSubstitution ) )
            // InternalAlf.g:5693:1: (lv_substitution_0_0= ruleTemplateParameterSubstitution )
            {
            // InternalAlf.g:5693:1: (lv_substitution_0_0= ruleTemplateParameterSubstitution )
            // InternalAlf.g:5694:3: lv_substitution_0_0= ruleTemplateParameterSubstitution
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getNamedTemplateBindingAccess().getSubstitutionTemplateParameterSubstitutionParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_7);
            lv_substitution_0_0=ruleTemplateParameterSubstitution();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getNamedTemplateBindingRule());
              	        }
                     		add(
                     			current, 
                     			"substitution",
                      		lv_substitution_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.TemplateParameterSubstitution");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:5710:2: (otherlv_1= ',' ( (lv_substitution_2_0= ruleTemplateParameterSubstitution ) ) )*
            loop125:
            do {
                int alt125=2;
                int LA125_0 = input.LA(1);

                if ( (LA125_0==18) ) {
                    alt125=1;
                }


                switch (alt125) {
            	case 1 :
            	    // InternalAlf.g:5710:4: otherlv_1= ',' ( (lv_substitution_2_0= ruleTemplateParameterSubstitution ) )
            	    {
            	    otherlv_1=(Token)match(input,18,FOLLOW_4); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_1, grammarAccess.getNamedTemplateBindingAccess().getCommaKeyword_1_0());
            	          
            	    }
            	    // InternalAlf.g:5714:1: ( (lv_substitution_2_0= ruleTemplateParameterSubstitution ) )
            	    // InternalAlf.g:5715:1: (lv_substitution_2_0= ruleTemplateParameterSubstitution )
            	    {
            	    // InternalAlf.g:5715:1: (lv_substitution_2_0= ruleTemplateParameterSubstitution )
            	    // InternalAlf.g:5716:3: lv_substitution_2_0= ruleTemplateParameterSubstitution
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getNamedTemplateBindingAccess().getSubstitutionTemplateParameterSubstitutionParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_7);
            	    lv_substitution_2_0=ruleTemplateParameterSubstitution();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getNamedTemplateBindingRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"substitution",
            	              		lv_substitution_2_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.TemplateParameterSubstitution");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop125;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNamedTemplateBinding"


    // $ANTLR start "entryRuleTemplateParameterSubstitution"
    // InternalAlf.g:5740:1: entryRuleTemplateParameterSubstitution returns [EObject current=null] : iv_ruleTemplateParameterSubstitution= ruleTemplateParameterSubstitution EOF ;
    public final EObject entryRuleTemplateParameterSubstitution() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTemplateParameterSubstitution = null;


        try {
            // InternalAlf.g:5741:2: (iv_ruleTemplateParameterSubstitution= ruleTemplateParameterSubstitution EOF )
            // InternalAlf.g:5742:2: iv_ruleTemplateParameterSubstitution= ruleTemplateParameterSubstitution EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTemplateParameterSubstitutionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleTemplateParameterSubstitution=ruleTemplateParameterSubstitution();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTemplateParameterSubstitution; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTemplateParameterSubstitution"


    // $ANTLR start "ruleTemplateParameterSubstitution"
    // InternalAlf.g:5749:1: ruleTemplateParameterSubstitution returns [EObject current=null] : ( ( (lv_parameterName_0_0= ruleName ) ) otherlv_1= '=>' ( (lv_argumentName_2_0= ruleQualifiedName ) ) ) ;
    public final EObject ruleTemplateParameterSubstitution() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        AntlrDatatypeRuleToken lv_parameterName_0_0 = null;

        EObject lv_argumentName_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:5752:28: ( ( ( (lv_parameterName_0_0= ruleName ) ) otherlv_1= '=>' ( (lv_argumentName_2_0= ruleQualifiedName ) ) ) )
            // InternalAlf.g:5753:1: ( ( (lv_parameterName_0_0= ruleName ) ) otherlv_1= '=>' ( (lv_argumentName_2_0= ruleQualifiedName ) ) )
            {
            // InternalAlf.g:5753:1: ( ( (lv_parameterName_0_0= ruleName ) ) otherlv_1= '=>' ( (lv_argumentName_2_0= ruleQualifiedName ) ) )
            // InternalAlf.g:5753:2: ( (lv_parameterName_0_0= ruleName ) ) otherlv_1= '=>' ( (lv_argumentName_2_0= ruleQualifiedName ) )
            {
            // InternalAlf.g:5753:2: ( (lv_parameterName_0_0= ruleName ) )
            // InternalAlf.g:5754:1: (lv_parameterName_0_0= ruleName )
            {
            // InternalAlf.g:5754:1: (lv_parameterName_0_0= ruleName )
            // InternalAlf.g:5755:3: lv_parameterName_0_0= ruleName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getTemplateParameterSubstitutionAccess().getParameterNameNameParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_8);
            lv_parameterName_0_0=ruleName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getTemplateParameterSubstitutionRule());
              	        }
                     		set(
                     			current, 
                     			"parameterName",
                      		lv_parameterName_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Name");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,19,FOLLOW_4); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getTemplateParameterSubstitutionAccess().getEqualsSignGreaterThanSignKeyword_1());
                  
            }
            // InternalAlf.g:5775:1: ( (lv_argumentName_2_0= ruleQualifiedName ) )
            // InternalAlf.g:5776:1: (lv_argumentName_2_0= ruleQualifiedName )
            {
            // InternalAlf.g:5776:1: (lv_argumentName_2_0= ruleQualifiedName )
            // InternalAlf.g:5777:3: lv_argumentName_2_0= ruleQualifiedName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getTemplateParameterSubstitutionAccess().getArgumentNameQualifiedNameParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_argumentName_2_0=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getTemplateParameterSubstitutionRule());
              	        }
                     		set(
                     			current, 
                     			"argumentName",
                      		lv_argumentName_2_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.QualifiedName");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTemplateParameterSubstitution"


    // $ANTLR start "entryRuleExpression"
    // InternalAlf.g:5801:1: entryRuleExpression returns [EObject current=null] : iv_ruleExpression= ruleExpression EOF ;
    public final EObject entryRuleExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExpression = null;


        try {
            // InternalAlf.g:5802:2: (iv_ruleExpression= ruleExpression EOF )
            // InternalAlf.g:5803:2: iv_ruleExpression= ruleExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleExpression=ruleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExpression"


    // $ANTLR start "ruleExpression"
    // InternalAlf.g:5810:1: ruleExpression returns [EObject current=null] : (this_AssignmentExpression_0= ruleAssignmentExpression | this_ConditionalExpression_1= ruleConditionalExpression ) ;
    public final EObject ruleExpression() throws RecognitionException {
        EObject current = null;

        EObject this_AssignmentExpression_0 = null;

        EObject this_ConditionalExpression_1 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:5813:28: ( (this_AssignmentExpression_0= ruleAssignmentExpression | this_ConditionalExpression_1= ruleConditionalExpression ) )
            // InternalAlf.g:5814:1: (this_AssignmentExpression_0= ruleAssignmentExpression | this_ConditionalExpression_1= ruleConditionalExpression )
            {
            // InternalAlf.g:5814:1: (this_AssignmentExpression_0= ruleAssignmentExpression | this_ConditionalExpression_1= ruleConditionalExpression )
            int alt126=2;
            alt126 = dfa126.predict(input);
            switch (alt126) {
                case 1 :
                    // InternalAlf.g:5815:2: this_AssignmentExpression_0= ruleAssignmentExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getExpressionAccess().getAssignmentExpressionParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_AssignmentExpression_0=ruleAssignmentExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_AssignmentExpression_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:5828:2: this_ConditionalExpression_1= ruleConditionalExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getExpressionAccess().getConditionalExpressionParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_ConditionalExpression_1=ruleConditionalExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ConditionalExpression_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExpression"


    // $ANTLR start "entryRulePrimaryExpression"
    // InternalAlf.g:5847:1: entryRulePrimaryExpression returns [EObject current=null] : iv_rulePrimaryExpression= rulePrimaryExpression EOF ;
    public final EObject entryRulePrimaryExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePrimaryExpression = null;


        try {
            // InternalAlf.g:5848:2: (iv_rulePrimaryExpression= rulePrimaryExpression EOF )
            // InternalAlf.g:5849:2: iv_rulePrimaryExpression= rulePrimaryExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPrimaryExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_rulePrimaryExpression=rulePrimaryExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePrimaryExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePrimaryExpression"


    // $ANTLR start "rulePrimaryExpression"
    // InternalAlf.g:5856:1: rulePrimaryExpression returns [EObject current=null] : (this_BaseExpression_0= ruleBaseExpression ( ( () otherlv_2= '.' ( (lv_nameBinding_3_0= ruleNameBinding ) ) () ( (lv_tuple_5_0= ruleTuple ) ) ) | ( () otherlv_7= '.' ( (lv_nameBinding_8_0= ruleNameBinding ) ) () ) | ( () otherlv_11= '->' ( ( () ( (lv_operation_13_0= ruleQualifiedName ) ) ( (lv_tuple_14_0= ruleTuple ) ) ) | ( () otherlv_16= 'reduce' ( (lv_isOrdered_17_0= 'ordered' ) )? ( (lv_behaviorName_18_0= ruleQualifiedName ) ) ) | ( () ( (lv_operation_20_0= RULE_ID ) ) ( (lv_variable_21_0= ruleName ) ) otherlv_22= '(' ( (lv_argument_23_0= ruleExpression ) ) otherlv_24= ')' ) ) ) | ( () ( (lv_index_26_0= ruleIndex ) ) ) )* ) ;
    public final EObject rulePrimaryExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        Token otherlv_7=null;
        Token otherlv_11=null;
        Token otherlv_16=null;
        Token lv_isOrdered_17_0=null;
        Token lv_operation_20_0=null;
        Token otherlv_22=null;
        Token otherlv_24=null;
        EObject this_BaseExpression_0 = null;

        EObject lv_nameBinding_3_0 = null;

        EObject lv_tuple_5_0 = null;

        EObject lv_nameBinding_8_0 = null;

        EObject lv_operation_13_0 = null;

        EObject lv_tuple_14_0 = null;

        EObject lv_behaviorName_18_0 = null;

        AntlrDatatypeRuleToken lv_variable_21_0 = null;

        EObject lv_argument_23_0 = null;

        EObject lv_index_26_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:5859:28: ( (this_BaseExpression_0= ruleBaseExpression ( ( () otherlv_2= '.' ( (lv_nameBinding_3_0= ruleNameBinding ) ) () ( (lv_tuple_5_0= ruleTuple ) ) ) | ( () otherlv_7= '.' ( (lv_nameBinding_8_0= ruleNameBinding ) ) () ) | ( () otherlv_11= '->' ( ( () ( (lv_operation_13_0= ruleQualifiedName ) ) ( (lv_tuple_14_0= ruleTuple ) ) ) | ( () otherlv_16= 'reduce' ( (lv_isOrdered_17_0= 'ordered' ) )? ( (lv_behaviorName_18_0= ruleQualifiedName ) ) ) | ( () ( (lv_operation_20_0= RULE_ID ) ) ( (lv_variable_21_0= ruleName ) ) otherlv_22= '(' ( (lv_argument_23_0= ruleExpression ) ) otherlv_24= ')' ) ) ) | ( () ( (lv_index_26_0= ruleIndex ) ) ) )* ) )
            // InternalAlf.g:5860:1: (this_BaseExpression_0= ruleBaseExpression ( ( () otherlv_2= '.' ( (lv_nameBinding_3_0= ruleNameBinding ) ) () ( (lv_tuple_5_0= ruleTuple ) ) ) | ( () otherlv_7= '.' ( (lv_nameBinding_8_0= ruleNameBinding ) ) () ) | ( () otherlv_11= '->' ( ( () ( (lv_operation_13_0= ruleQualifiedName ) ) ( (lv_tuple_14_0= ruleTuple ) ) ) | ( () otherlv_16= 'reduce' ( (lv_isOrdered_17_0= 'ordered' ) )? ( (lv_behaviorName_18_0= ruleQualifiedName ) ) ) | ( () ( (lv_operation_20_0= RULE_ID ) ) ( (lv_variable_21_0= ruleName ) ) otherlv_22= '(' ( (lv_argument_23_0= ruleExpression ) ) otherlv_24= ')' ) ) ) | ( () ( (lv_index_26_0= ruleIndex ) ) ) )* )
            {
            // InternalAlf.g:5860:1: (this_BaseExpression_0= ruleBaseExpression ( ( () otherlv_2= '.' ( (lv_nameBinding_3_0= ruleNameBinding ) ) () ( (lv_tuple_5_0= ruleTuple ) ) ) | ( () otherlv_7= '.' ( (lv_nameBinding_8_0= ruleNameBinding ) ) () ) | ( () otherlv_11= '->' ( ( () ( (lv_operation_13_0= ruleQualifiedName ) ) ( (lv_tuple_14_0= ruleTuple ) ) ) | ( () otherlv_16= 'reduce' ( (lv_isOrdered_17_0= 'ordered' ) )? ( (lv_behaviorName_18_0= ruleQualifiedName ) ) ) | ( () ( (lv_operation_20_0= RULE_ID ) ) ( (lv_variable_21_0= ruleName ) ) otherlv_22= '(' ( (lv_argument_23_0= ruleExpression ) ) otherlv_24= ')' ) ) ) | ( () ( (lv_index_26_0= ruleIndex ) ) ) )* )
            // InternalAlf.g:5861:2: this_BaseExpression_0= ruleBaseExpression ( ( () otherlv_2= '.' ( (lv_nameBinding_3_0= ruleNameBinding ) ) () ( (lv_tuple_5_0= ruleTuple ) ) ) | ( () otherlv_7= '.' ( (lv_nameBinding_8_0= ruleNameBinding ) ) () ) | ( () otherlv_11= '->' ( ( () ( (lv_operation_13_0= ruleQualifiedName ) ) ( (lv_tuple_14_0= ruleTuple ) ) ) | ( () otherlv_16= 'reduce' ( (lv_isOrdered_17_0= 'ordered' ) )? ( (lv_behaviorName_18_0= ruleQualifiedName ) ) ) | ( () ( (lv_operation_20_0= RULE_ID ) ) ( (lv_variable_21_0= ruleName ) ) otherlv_22= '(' ( (lv_argument_23_0= ruleExpression ) ) otherlv_24= ')' ) ) ) | ( () ( (lv_index_26_0= ruleIndex ) ) ) )*
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getBaseExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_66);
            this_BaseExpression_0=ruleBaseExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_BaseExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:5872:1: ( ( () otherlv_2= '.' ( (lv_nameBinding_3_0= ruleNameBinding ) ) () ( (lv_tuple_5_0= ruleTuple ) ) ) | ( () otherlv_7= '.' ( (lv_nameBinding_8_0= ruleNameBinding ) ) () ) | ( () otherlv_11= '->' ( ( () ( (lv_operation_13_0= ruleQualifiedName ) ) ( (lv_tuple_14_0= ruleTuple ) ) ) | ( () otherlv_16= 'reduce' ( (lv_isOrdered_17_0= 'ordered' ) )? ( (lv_behaviorName_18_0= ruleQualifiedName ) ) ) | ( () ( (lv_operation_20_0= RULE_ID ) ) ( (lv_variable_21_0= ruleName ) ) otherlv_22= '(' ( (lv_argument_23_0= ruleExpression ) ) otherlv_24= ')' ) ) ) | ( () ( (lv_index_26_0= ruleIndex ) ) ) )*
            loop129:
            do {
                int alt129=5;
                alt129 = dfa129.predict(input);
                switch (alt129) {
            	case 1 :
            	    // InternalAlf.g:5872:2: ( () otherlv_2= '.' ( (lv_nameBinding_3_0= ruleNameBinding ) ) () ( (lv_tuple_5_0= ruleTuple ) ) )
            	    {
            	    // InternalAlf.g:5872:2: ( () otherlv_2= '.' ( (lv_nameBinding_3_0= ruleNameBinding ) ) () ( (lv_tuple_5_0= ruleTuple ) ) )
            	    // InternalAlf.g:5872:3: () otherlv_2= '.' ( (lv_nameBinding_3_0= ruleNameBinding ) ) () ( (lv_tuple_5_0= ruleTuple ) )
            	    {
            	    // InternalAlf.g:5872:3: ()
            	    // InternalAlf.g:5873:2: 
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	  /* */ 
            	      	
            	    }
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getPrimaryExpressionAccess().getFeatureReferenceExpressionAction_1_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    otherlv_2=(Token)match(input,26,FOLLOW_4); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_2, grammarAccess.getPrimaryExpressionAccess().getFullStopKeyword_1_0_1());
            	          
            	    }
            	    // InternalAlf.g:5885:1: ( (lv_nameBinding_3_0= ruleNameBinding ) )
            	    // InternalAlf.g:5886:1: (lv_nameBinding_3_0= ruleNameBinding )
            	    {
            	    // InternalAlf.g:5886:1: (lv_nameBinding_3_0= ruleNameBinding )
            	    // InternalAlf.g:5887:3: lv_nameBinding_3_0= ruleNameBinding
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getNameBindingNameBindingParserRuleCall_1_0_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_42);
            	    lv_nameBinding_3_0=ruleNameBinding();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getPrimaryExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"nameBinding",
            	              		lv_nameBinding_3_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.NameBinding");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }

            	    // InternalAlf.g:5903:2: ()
            	    // InternalAlf.g:5904:2: 
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	  /* */ 
            	      	
            	    }
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getPrimaryExpressionAccess().getFeatureInvocationExpressionTargetAction_1_0_3(),
            	                  current);
            	          
            	    }

            	    }

            	    // InternalAlf.g:5912:2: ( (lv_tuple_5_0= ruleTuple ) )
            	    // InternalAlf.g:5913:1: (lv_tuple_5_0= ruleTuple )
            	    {
            	    // InternalAlf.g:5913:1: (lv_tuple_5_0= ruleTuple )
            	    // InternalAlf.g:5914:3: lv_tuple_5_0= ruleTuple
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getTupleTupleParserRuleCall_1_0_4_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_66);
            	    lv_tuple_5_0=ruleTuple();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getPrimaryExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"tuple",
            	              		lv_tuple_5_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.Tuple");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // InternalAlf.g:5931:6: ( () otherlv_7= '.' ( (lv_nameBinding_8_0= ruleNameBinding ) ) () )
            	    {
            	    // InternalAlf.g:5931:6: ( () otherlv_7= '.' ( (lv_nameBinding_8_0= ruleNameBinding ) ) () )
            	    // InternalAlf.g:5931:7: () otherlv_7= '.' ( (lv_nameBinding_8_0= ruleNameBinding ) ) ()
            	    {
            	    // InternalAlf.g:5931:7: ()
            	    // InternalAlf.g:5932:2: 
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	  /* */ 
            	      	
            	    }
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getPrimaryExpressionAccess().getFeatureReferenceExpressionAction_1_1_0(),
            	                  current);
            	          
            	    }

            	    }

            	    otherlv_7=(Token)match(input,26,FOLLOW_4); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_7, grammarAccess.getPrimaryExpressionAccess().getFullStopKeyword_1_1_1());
            	          
            	    }
            	    // InternalAlf.g:5944:1: ( (lv_nameBinding_8_0= ruleNameBinding ) )
            	    // InternalAlf.g:5945:1: (lv_nameBinding_8_0= ruleNameBinding )
            	    {
            	    // InternalAlf.g:5945:1: (lv_nameBinding_8_0= ruleNameBinding )
            	    // InternalAlf.g:5946:3: lv_nameBinding_8_0= ruleNameBinding
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getNameBindingNameBindingParserRuleCall_1_1_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_66);
            	    lv_nameBinding_8_0=ruleNameBinding();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getPrimaryExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"nameBinding",
            	              		lv_nameBinding_8_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.NameBinding");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }

            	    // InternalAlf.g:5962:2: ()
            	    // InternalAlf.g:5963:2: 
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	  /* */ 
            	      	
            	    }
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getPrimaryExpressionAccess().getPropertyAccessExpressionFeatureReferenceAction_1_1_3(),
            	                  current);
            	          
            	    }

            	    }


            	    }


            	    }
            	    break;
            	case 3 :
            	    // InternalAlf.g:5972:6: ( () otherlv_11= '->' ( ( () ( (lv_operation_13_0= ruleQualifiedName ) ) ( (lv_tuple_14_0= ruleTuple ) ) ) | ( () otherlv_16= 'reduce' ( (lv_isOrdered_17_0= 'ordered' ) )? ( (lv_behaviorName_18_0= ruleQualifiedName ) ) ) | ( () ( (lv_operation_20_0= RULE_ID ) ) ( (lv_variable_21_0= ruleName ) ) otherlv_22= '(' ( (lv_argument_23_0= ruleExpression ) ) otherlv_24= ')' ) ) )
            	    {
            	    // InternalAlf.g:5972:6: ( () otherlv_11= '->' ( ( () ( (lv_operation_13_0= ruleQualifiedName ) ) ( (lv_tuple_14_0= ruleTuple ) ) ) | ( () otherlv_16= 'reduce' ( (lv_isOrdered_17_0= 'ordered' ) )? ( (lv_behaviorName_18_0= ruleQualifiedName ) ) ) | ( () ( (lv_operation_20_0= RULE_ID ) ) ( (lv_variable_21_0= ruleName ) ) otherlv_22= '(' ( (lv_argument_23_0= ruleExpression ) ) otherlv_24= ')' ) ) )
            	    // InternalAlf.g:5972:7: () otherlv_11= '->' ( ( () ( (lv_operation_13_0= ruleQualifiedName ) ) ( (lv_tuple_14_0= ruleTuple ) ) ) | ( () otherlv_16= 'reduce' ( (lv_isOrdered_17_0= 'ordered' ) )? ( (lv_behaviorName_18_0= ruleQualifiedName ) ) ) | ( () ( (lv_operation_20_0= RULE_ID ) ) ( (lv_variable_21_0= ruleName ) ) otherlv_22= '(' ( (lv_argument_23_0= ruleExpression ) ) otherlv_24= ')' ) )
            	    {
            	    // InternalAlf.g:5972:7: ()
            	    // InternalAlf.g:5973:2: 
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	  /* */ 
            	      	
            	    }
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getPrimaryExpressionAccess().getExtentOrExpressionNonNameExpressionAction_1_2_0(),
            	                  current);
            	          
            	    }

            	    }

            	    otherlv_11=(Token)match(input,60,FOLLOW_67); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_11, grammarAccess.getPrimaryExpressionAccess().getHyphenMinusGreaterThanSignKeyword_1_2_1());
            	          
            	    }
            	    // InternalAlf.g:5985:1: ( ( () ( (lv_operation_13_0= ruleQualifiedName ) ) ( (lv_tuple_14_0= ruleTuple ) ) ) | ( () otherlv_16= 'reduce' ( (lv_isOrdered_17_0= 'ordered' ) )? ( (lv_behaviorName_18_0= ruleQualifiedName ) ) ) | ( () ( (lv_operation_20_0= RULE_ID ) ) ( (lv_variable_21_0= ruleName ) ) otherlv_22= '(' ( (lv_argument_23_0= ruleExpression ) ) otherlv_24= ')' ) )
            	    int alt128=3;
            	    switch ( input.LA(1) ) {
            	    case RULE_ID:
            	        {
            	        int LA128_1 = input.LA(2);

            	        if ( (LA128_1==16||(LA128_1>=25 && LA128_1<=26)||LA128_1==36) ) {
            	            alt128=1;
            	        }
            	        else if ( ((LA128_1>=RULE_ID && LA128_1<=RULE_UNRESTRICTED_NAME)) ) {
            	            alt128=3;
            	        }
            	        else {
            	            if (state.backtracking>0) {state.failed=true; return current;}
            	            NoViableAltException nvae =
            	                new NoViableAltException("", 128, 1, input);

            	            throw nvae;
            	        }
            	        }
            	        break;
            	    case RULE_UNRESTRICTED_NAME:
            	        {
            	        alt128=1;
            	        }
            	        break;
            	    case 61:
            	        {
            	        alt128=2;
            	        }
            	        break;
            	    default:
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 128, 0, input);

            	        throw nvae;
            	    }

            	    switch (alt128) {
            	        case 1 :
            	            // InternalAlf.g:5985:2: ( () ( (lv_operation_13_0= ruleQualifiedName ) ) ( (lv_tuple_14_0= ruleTuple ) ) )
            	            {
            	            // InternalAlf.g:5985:2: ( () ( (lv_operation_13_0= ruleQualifiedName ) ) ( (lv_tuple_14_0= ruleTuple ) ) )
            	            // InternalAlf.g:5985:3: () ( (lv_operation_13_0= ruleQualifiedName ) ) ( (lv_tuple_14_0= ruleTuple ) )
            	            {
            	            // InternalAlf.g:5985:3: ()
            	            // InternalAlf.g:5986:2: 
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	  /* */ 
            	              	
            	            }
            	            if ( state.backtracking==0 ) {

            	                      current = forceCreateModelElementAndSet(
            	                          grammarAccess.getPrimaryExpressionAccess().getSequenceOperationExpressionPrimaryAction_1_2_2_0_0(),
            	                          current);
            	                  
            	            }

            	            }

            	            // InternalAlf.g:5994:2: ( (lv_operation_13_0= ruleQualifiedName ) )
            	            // InternalAlf.g:5995:1: (lv_operation_13_0= ruleQualifiedName )
            	            {
            	            // InternalAlf.g:5995:1: (lv_operation_13_0= ruleQualifiedName )
            	            // InternalAlf.g:5996:3: lv_operation_13_0= ruleQualifiedName
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getOperationQualifiedNameParserRuleCall_1_2_2_0_1_0()); 
            	              	    
            	            }
            	            pushFollow(FOLLOW_42);
            	            lv_operation_13_0=ruleQualifiedName();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getPrimaryExpressionRule());
            	              	        }
            	                     		set(
            	                     			current, 
            	                     			"operation",
            	                      		lv_operation_13_0, 
            	                      		"org.eclipse.papyrus.uml.alf.Alf.QualifiedName");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }


            	            }

            	            // InternalAlf.g:6012:2: ( (lv_tuple_14_0= ruleTuple ) )
            	            // InternalAlf.g:6013:1: (lv_tuple_14_0= ruleTuple )
            	            {
            	            // InternalAlf.g:6013:1: (lv_tuple_14_0= ruleTuple )
            	            // InternalAlf.g:6014:3: lv_tuple_14_0= ruleTuple
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getTupleTupleParserRuleCall_1_2_2_0_2_0()); 
            	              	    
            	            }
            	            pushFollow(FOLLOW_66);
            	            lv_tuple_14_0=ruleTuple();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getPrimaryExpressionRule());
            	              	        }
            	                     		set(
            	                     			current, 
            	                     			"tuple",
            	                      		lv_tuple_14_0, 
            	                      		"org.eclipse.papyrus.uml.alf.Alf.Tuple");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }


            	            }


            	            }


            	            }
            	            break;
            	        case 2 :
            	            // InternalAlf.g:6031:6: ( () otherlv_16= 'reduce' ( (lv_isOrdered_17_0= 'ordered' ) )? ( (lv_behaviorName_18_0= ruleQualifiedName ) ) )
            	            {
            	            // InternalAlf.g:6031:6: ( () otherlv_16= 'reduce' ( (lv_isOrdered_17_0= 'ordered' ) )? ( (lv_behaviorName_18_0= ruleQualifiedName ) ) )
            	            // InternalAlf.g:6031:7: () otherlv_16= 'reduce' ( (lv_isOrdered_17_0= 'ordered' ) )? ( (lv_behaviorName_18_0= ruleQualifiedName ) )
            	            {
            	            // InternalAlf.g:6031:7: ()
            	            // InternalAlf.g:6032:2: 
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	  /* */ 
            	              	
            	            }
            	            if ( state.backtracking==0 ) {

            	                      current = forceCreateModelElementAndSet(
            	                          grammarAccess.getPrimaryExpressionAccess().getSequenceReductionExpressionPrimaryAction_1_2_2_1_0(),
            	                          current);
            	                  
            	            }

            	            }

            	            otherlv_16=(Token)match(input,61,FOLLOW_68); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_16, grammarAccess.getPrimaryExpressionAccess().getReduceKeyword_1_2_2_1_1());
            	                  
            	            }
            	            // InternalAlf.g:6044:1: ( (lv_isOrdered_17_0= 'ordered' ) )?
            	            int alt127=2;
            	            int LA127_0 = input.LA(1);

            	            if ( (LA127_0==55) ) {
            	                alt127=1;
            	            }
            	            switch (alt127) {
            	                case 1 :
            	                    // InternalAlf.g:6045:1: (lv_isOrdered_17_0= 'ordered' )
            	                    {
            	                    // InternalAlf.g:6045:1: (lv_isOrdered_17_0= 'ordered' )
            	                    // InternalAlf.g:6046:3: lv_isOrdered_17_0= 'ordered'
            	                    {
            	                    lv_isOrdered_17_0=(Token)match(input,55,FOLLOW_4); if (state.failed) return current;
            	                    if ( state.backtracking==0 ) {

            	                              newLeafNode(lv_isOrdered_17_0, grammarAccess.getPrimaryExpressionAccess().getIsOrderedOrderedKeyword_1_2_2_1_2_0());
            	                          
            	                    }
            	                    if ( state.backtracking==0 ) {

            	                      	        if (current==null) {
            	                      	            current = createModelElement(grammarAccess.getPrimaryExpressionRule());
            	                      	        }
            	                             		setWithLastConsumed(current, "isOrdered", true, "ordered");
            	                      	    
            	                    }

            	                    }


            	                    }
            	                    break;

            	            }

            	            // InternalAlf.g:6059:3: ( (lv_behaviorName_18_0= ruleQualifiedName ) )
            	            // InternalAlf.g:6060:1: (lv_behaviorName_18_0= ruleQualifiedName )
            	            {
            	            // InternalAlf.g:6060:1: (lv_behaviorName_18_0= ruleQualifiedName )
            	            // InternalAlf.g:6061:3: lv_behaviorName_18_0= ruleQualifiedName
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getBehaviorNameQualifiedNameParserRuleCall_1_2_2_1_3_0()); 
            	              	    
            	            }
            	            pushFollow(FOLLOW_66);
            	            lv_behaviorName_18_0=ruleQualifiedName();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getPrimaryExpressionRule());
            	              	        }
            	                     		set(
            	                     			current, 
            	                     			"behaviorName",
            	                      		lv_behaviorName_18_0, 
            	                      		"org.eclipse.papyrus.uml.alf.Alf.QualifiedName");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }


            	            }


            	            }


            	            }
            	            break;
            	        case 3 :
            	            // InternalAlf.g:6078:6: ( () ( (lv_operation_20_0= RULE_ID ) ) ( (lv_variable_21_0= ruleName ) ) otherlv_22= '(' ( (lv_argument_23_0= ruleExpression ) ) otherlv_24= ')' )
            	            {
            	            // InternalAlf.g:6078:6: ( () ( (lv_operation_20_0= RULE_ID ) ) ( (lv_variable_21_0= ruleName ) ) otherlv_22= '(' ( (lv_argument_23_0= ruleExpression ) ) otherlv_24= ')' )
            	            // InternalAlf.g:6078:7: () ( (lv_operation_20_0= RULE_ID ) ) ( (lv_variable_21_0= ruleName ) ) otherlv_22= '(' ( (lv_argument_23_0= ruleExpression ) ) otherlv_24= ')'
            	            {
            	            // InternalAlf.g:6078:7: ()
            	            // InternalAlf.g:6079:2: 
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	  /* */ 
            	              	
            	            }
            	            if ( state.backtracking==0 ) {

            	                      current = forceCreateModelElementAndSet(
            	                          grammarAccess.getPrimaryExpressionAccess().getSequenceExpansionExpressionPrimaryAction_1_2_2_2_0(),
            	                          current);
            	                  
            	            }

            	            }

            	            // InternalAlf.g:6087:2: ( (lv_operation_20_0= RULE_ID ) )
            	            // InternalAlf.g:6088:1: (lv_operation_20_0= RULE_ID )
            	            {
            	            // InternalAlf.g:6088:1: (lv_operation_20_0= RULE_ID )
            	            // InternalAlf.g:6089:3: lv_operation_20_0= RULE_ID
            	            {
            	            lv_operation_20_0=(Token)match(input,RULE_ID,FOLLOW_4); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              			newLeafNode(lv_operation_20_0, grammarAccess.getPrimaryExpressionAccess().getOperationIDTerminalRuleCall_1_2_2_2_1_0()); 
            	              		
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getPrimaryExpressionRule());
            	              	        }
            	                     		setWithLastConsumed(
            	                     			current, 
            	                     			"operation",
            	                      		lv_operation_20_0, 
            	                      		"org.eclipse.papyrus.uml.alf.Alf.ID");
            	              	    
            	            }

            	            }


            	            }

            	            // InternalAlf.g:6105:2: ( (lv_variable_21_0= ruleName ) )
            	            // InternalAlf.g:6106:1: (lv_variable_21_0= ruleName )
            	            {
            	            // InternalAlf.g:6106:1: (lv_variable_21_0= ruleName )
            	            // InternalAlf.g:6107:3: lv_variable_21_0= ruleName
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getVariableNameParserRuleCall_1_2_2_2_2_0()); 
            	              	    
            	            }
            	            pushFollow(FOLLOW_42);
            	            lv_variable_21_0=ruleName();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getPrimaryExpressionRule());
            	              	        }
            	                     		set(
            	                     			current, 
            	                     			"variable",
            	                      		lv_variable_21_0, 
            	                      		"org.eclipse.papyrus.uml.alf.Alf.Name");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }


            	            }

            	            otherlv_22=(Token)match(input,16,FOLLOW_69); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_22, grammarAccess.getPrimaryExpressionAccess().getLeftParenthesisKeyword_1_2_2_2_3());
            	                  
            	            }
            	            // InternalAlf.g:6127:1: ( (lv_argument_23_0= ruleExpression ) )
            	            // InternalAlf.g:6128:1: (lv_argument_23_0= ruleExpression )
            	            {
            	            // InternalAlf.g:6128:1: (lv_argument_23_0= ruleExpression )
            	            // InternalAlf.g:6129:3: lv_argument_23_0= ruleExpression
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getArgumentExpressionParserRuleCall_1_2_2_2_4_0()); 
            	              	    
            	            }
            	            pushFollow(FOLLOW_6);
            	            lv_argument_23_0=ruleExpression();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getPrimaryExpressionRule());
            	              	        }
            	                     		set(
            	                     			current, 
            	                     			"argument",
            	                      		lv_argument_23_0, 
            	                      		"org.eclipse.papyrus.uml.alf.Alf.Expression");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }


            	            }

            	            otherlv_24=(Token)match(input,17,FOLLOW_66); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_24, grammarAccess.getPrimaryExpressionAccess().getRightParenthesisKeyword_1_2_2_2_5());
            	                  
            	            }

            	            }


            	            }
            	            break;

            	    }


            	    }


            	    }
            	    break;
            	case 4 :
            	    // InternalAlf.g:6150:6: ( () ( (lv_index_26_0= ruleIndex ) ) )
            	    {
            	    // InternalAlf.g:6150:6: ( () ( (lv_index_26_0= ruleIndex ) ) )
            	    // InternalAlf.g:6150:7: () ( (lv_index_26_0= ruleIndex ) )
            	    {
            	    // InternalAlf.g:6150:7: ()
            	    // InternalAlf.g:6151:2: 
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	  /* */ 
            	      	
            	    }
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getPrimaryExpressionAccess().getSequenceAccessExpressionPrimaryAction_1_3_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // InternalAlf.g:6159:2: ( (lv_index_26_0= ruleIndex ) )
            	    // InternalAlf.g:6160:1: (lv_index_26_0= ruleIndex )
            	    {
            	    // InternalAlf.g:6160:1: (lv_index_26_0= ruleIndex )
            	    // InternalAlf.g:6161:3: lv_index_26_0= ruleIndex
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getIndexIndexParserRuleCall_1_3_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_66);
            	    lv_index_26_0=ruleIndex();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getPrimaryExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"index",
            	              		lv_index_26_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.Index");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop129;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePrimaryExpression"


    // $ANTLR start "entryRuleBaseExpression"
    // InternalAlf.g:6185:1: entryRuleBaseExpression returns [EObject current=null] : iv_ruleBaseExpression= ruleBaseExpression EOF ;
    public final EObject entryRuleBaseExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBaseExpression = null;


        try {
            // InternalAlf.g:6186:2: (iv_ruleBaseExpression= ruleBaseExpression EOF )
            // InternalAlf.g:6187:2: iv_ruleBaseExpression= ruleBaseExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getBaseExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleBaseExpression=ruleBaseExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleBaseExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBaseExpression"


    // $ANTLR start "ruleBaseExpression"
    // InternalAlf.g:6194:1: ruleBaseExpression returns [EObject current=null] : (this_LiteralExpression_0= ruleLiteralExpression | this_ThisExpression_1= ruleThisExpression | this_SuperInvocationExpression_2= ruleSuperInvocationExpression | this_InstanceCreationOrSequenceConstructionExpression_3= ruleInstanceCreationOrSequenceConstructionExpression | this_ClassExtentExpression_4= ruleClassExtentExpression | this_LinkOperationExpression_5= ruleLinkOperationExpression | this_SequenceConstructionExpression_6= ruleSequenceConstructionExpression | this_SequenceOperationOrReductionOrExpansionExpression_7= ruleSequenceOperationOrReductionOrExpansionExpression | this_BehaviorInvocationExpression_8= ruleBehaviorInvocationExpression | this_NameExpression_9= ruleNameExpression | this_ParenthesizedExpression_10= ruleParenthesizedExpression ) ;
    public final EObject ruleBaseExpression() throws RecognitionException {
        EObject current = null;

        EObject this_LiteralExpression_0 = null;

        EObject this_ThisExpression_1 = null;

        EObject this_SuperInvocationExpression_2 = null;

        EObject this_InstanceCreationOrSequenceConstructionExpression_3 = null;

        EObject this_ClassExtentExpression_4 = null;

        EObject this_LinkOperationExpression_5 = null;

        EObject this_SequenceConstructionExpression_6 = null;

        EObject this_SequenceOperationOrReductionOrExpansionExpression_7 = null;

        EObject this_BehaviorInvocationExpression_8 = null;

        EObject this_NameExpression_9 = null;

        EObject this_ParenthesizedExpression_10 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:6197:28: ( (this_LiteralExpression_0= ruleLiteralExpression | this_ThisExpression_1= ruleThisExpression | this_SuperInvocationExpression_2= ruleSuperInvocationExpression | this_InstanceCreationOrSequenceConstructionExpression_3= ruleInstanceCreationOrSequenceConstructionExpression | this_ClassExtentExpression_4= ruleClassExtentExpression | this_LinkOperationExpression_5= ruleLinkOperationExpression | this_SequenceConstructionExpression_6= ruleSequenceConstructionExpression | this_SequenceOperationOrReductionOrExpansionExpression_7= ruleSequenceOperationOrReductionOrExpansionExpression | this_BehaviorInvocationExpression_8= ruleBehaviorInvocationExpression | this_NameExpression_9= ruleNameExpression | this_ParenthesizedExpression_10= ruleParenthesizedExpression ) )
            // InternalAlf.g:6198:1: (this_LiteralExpression_0= ruleLiteralExpression | this_ThisExpression_1= ruleThisExpression | this_SuperInvocationExpression_2= ruleSuperInvocationExpression | this_InstanceCreationOrSequenceConstructionExpression_3= ruleInstanceCreationOrSequenceConstructionExpression | this_ClassExtentExpression_4= ruleClassExtentExpression | this_LinkOperationExpression_5= ruleLinkOperationExpression | this_SequenceConstructionExpression_6= ruleSequenceConstructionExpression | this_SequenceOperationOrReductionOrExpansionExpression_7= ruleSequenceOperationOrReductionOrExpansionExpression | this_BehaviorInvocationExpression_8= ruleBehaviorInvocationExpression | this_NameExpression_9= ruleNameExpression | this_ParenthesizedExpression_10= ruleParenthesizedExpression )
            {
            // InternalAlf.g:6198:1: (this_LiteralExpression_0= ruleLiteralExpression | this_ThisExpression_1= ruleThisExpression | this_SuperInvocationExpression_2= ruleSuperInvocationExpression | this_InstanceCreationOrSequenceConstructionExpression_3= ruleInstanceCreationOrSequenceConstructionExpression | this_ClassExtentExpression_4= ruleClassExtentExpression | this_LinkOperationExpression_5= ruleLinkOperationExpression | this_SequenceConstructionExpression_6= ruleSequenceConstructionExpression | this_SequenceOperationOrReductionOrExpansionExpression_7= ruleSequenceOperationOrReductionOrExpansionExpression | this_BehaviorInvocationExpression_8= ruleBehaviorInvocationExpression | this_NameExpression_9= ruleNameExpression | this_ParenthesizedExpression_10= ruleParenthesizedExpression )
            int alt130=11;
            alt130 = dfa130.predict(input);
            switch (alt130) {
                case 1 :
                    // InternalAlf.g:6199:2: this_LiteralExpression_0= ruleLiteralExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getBaseExpressionAccess().getLiteralExpressionParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_LiteralExpression_0=ruleLiteralExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_LiteralExpression_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:6212:2: this_ThisExpression_1= ruleThisExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getBaseExpressionAccess().getThisExpressionParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_ThisExpression_1=ruleThisExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ThisExpression_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // InternalAlf.g:6225:2: this_SuperInvocationExpression_2= ruleSuperInvocationExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getBaseExpressionAccess().getSuperInvocationExpressionParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_SuperInvocationExpression_2=ruleSuperInvocationExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_SuperInvocationExpression_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // InternalAlf.g:6238:2: this_InstanceCreationOrSequenceConstructionExpression_3= ruleInstanceCreationOrSequenceConstructionExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getBaseExpressionAccess().getInstanceCreationOrSequenceConstructionExpressionParserRuleCall_3()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_InstanceCreationOrSequenceConstructionExpression_3=ruleInstanceCreationOrSequenceConstructionExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_InstanceCreationOrSequenceConstructionExpression_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 5 :
                    // InternalAlf.g:6251:2: this_ClassExtentExpression_4= ruleClassExtentExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getBaseExpressionAccess().getClassExtentExpressionParserRuleCall_4()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_ClassExtentExpression_4=ruleClassExtentExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ClassExtentExpression_4; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 6 :
                    // InternalAlf.g:6264:2: this_LinkOperationExpression_5= ruleLinkOperationExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getBaseExpressionAccess().getLinkOperationExpressionParserRuleCall_5()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_LinkOperationExpression_5=ruleLinkOperationExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_LinkOperationExpression_5; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 7 :
                    // InternalAlf.g:6277:2: this_SequenceConstructionExpression_6= ruleSequenceConstructionExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getBaseExpressionAccess().getSequenceConstructionExpressionParserRuleCall_6()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_SequenceConstructionExpression_6=ruleSequenceConstructionExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_SequenceConstructionExpression_6; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 8 :
                    // InternalAlf.g:6290:2: this_SequenceOperationOrReductionOrExpansionExpression_7= ruleSequenceOperationOrReductionOrExpansionExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getBaseExpressionAccess().getSequenceOperationOrReductionOrExpansionExpressionParserRuleCall_7()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_SequenceOperationOrReductionOrExpansionExpression_7=ruleSequenceOperationOrReductionOrExpansionExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_SequenceOperationOrReductionOrExpansionExpression_7; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 9 :
                    // InternalAlf.g:6303:2: this_BehaviorInvocationExpression_8= ruleBehaviorInvocationExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getBaseExpressionAccess().getBehaviorInvocationExpressionParserRuleCall_8()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_BehaviorInvocationExpression_8=ruleBehaviorInvocationExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_BehaviorInvocationExpression_8; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 10 :
                    // InternalAlf.g:6316:2: this_NameExpression_9= ruleNameExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getBaseExpressionAccess().getNameExpressionParserRuleCall_9()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_NameExpression_9=ruleNameExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_NameExpression_9; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 11 :
                    // InternalAlf.g:6329:2: this_ParenthesizedExpression_10= ruleParenthesizedExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getBaseExpressionAccess().getParenthesizedExpressionParserRuleCall_10()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_ParenthesizedExpression_10=ruleParenthesizedExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ParenthesizedExpression_10; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBaseExpression"


    // $ANTLR start "entryRuleLiteralExpression"
    // InternalAlf.g:6348:1: entryRuleLiteralExpression returns [EObject current=null] : iv_ruleLiteralExpression= ruleLiteralExpression EOF ;
    public final EObject entryRuleLiteralExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLiteralExpression = null;


        try {
            // InternalAlf.g:6349:2: (iv_ruleLiteralExpression= ruleLiteralExpression EOF )
            // InternalAlf.g:6350:2: iv_ruleLiteralExpression= ruleLiteralExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getLiteralExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleLiteralExpression=ruleLiteralExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleLiteralExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLiteralExpression"


    // $ANTLR start "ruleLiteralExpression"
    // InternalAlf.g:6357:1: ruleLiteralExpression returns [EObject current=null] : (this_BooleanLiteralExpression_0= ruleBooleanLiteralExpression | this_NaturalLiteralExpression_1= ruleNaturalLiteralExpression | this_UnboundedLiteralExpression_2= ruleUnboundedLiteralExpression | this_StringLiteralExpression_3= ruleStringLiteralExpression ) ;
    public final EObject ruleLiteralExpression() throws RecognitionException {
        EObject current = null;

        EObject this_BooleanLiteralExpression_0 = null;

        EObject this_NaturalLiteralExpression_1 = null;

        EObject this_UnboundedLiteralExpression_2 = null;

        EObject this_StringLiteralExpression_3 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:6360:28: ( (this_BooleanLiteralExpression_0= ruleBooleanLiteralExpression | this_NaturalLiteralExpression_1= ruleNaturalLiteralExpression | this_UnboundedLiteralExpression_2= ruleUnboundedLiteralExpression | this_StringLiteralExpression_3= ruleStringLiteralExpression ) )
            // InternalAlf.g:6361:1: (this_BooleanLiteralExpression_0= ruleBooleanLiteralExpression | this_NaturalLiteralExpression_1= ruleNaturalLiteralExpression | this_UnboundedLiteralExpression_2= ruleUnboundedLiteralExpression | this_StringLiteralExpression_3= ruleStringLiteralExpression )
            {
            // InternalAlf.g:6361:1: (this_BooleanLiteralExpression_0= ruleBooleanLiteralExpression | this_NaturalLiteralExpression_1= ruleNaturalLiteralExpression | this_UnboundedLiteralExpression_2= ruleUnboundedLiteralExpression | this_StringLiteralExpression_3= ruleStringLiteralExpression )
            int alt131=4;
            switch ( input.LA(1) ) {
            case RULE_BOOLEAN_VALUE:
                {
                alt131=1;
                }
                break;
            case RULE_NATURAL_VALUE:
                {
                alt131=2;
                }
                break;
            case 20:
                {
                alt131=3;
                }
                break;
            case RULE_STRING:
                {
                alt131=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 131, 0, input);

                throw nvae;
            }

            switch (alt131) {
                case 1 :
                    // InternalAlf.g:6362:2: this_BooleanLiteralExpression_0= ruleBooleanLiteralExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getLiteralExpressionAccess().getBooleanLiteralExpressionParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_BooleanLiteralExpression_0=ruleBooleanLiteralExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_BooleanLiteralExpression_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:6375:2: this_NaturalLiteralExpression_1= ruleNaturalLiteralExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getLiteralExpressionAccess().getNaturalLiteralExpressionParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_NaturalLiteralExpression_1=ruleNaturalLiteralExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_NaturalLiteralExpression_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // InternalAlf.g:6388:2: this_UnboundedLiteralExpression_2= ruleUnboundedLiteralExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getLiteralExpressionAccess().getUnboundedLiteralExpressionParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_UnboundedLiteralExpression_2=ruleUnboundedLiteralExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_UnboundedLiteralExpression_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // InternalAlf.g:6401:2: this_StringLiteralExpression_3= ruleStringLiteralExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getLiteralExpressionAccess().getStringLiteralExpressionParserRuleCall_3()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_StringLiteralExpression_3=ruleStringLiteralExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_StringLiteralExpression_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLiteralExpression"


    // $ANTLR start "entryRuleBooleanLiteralExpression"
    // InternalAlf.g:6420:1: entryRuleBooleanLiteralExpression returns [EObject current=null] : iv_ruleBooleanLiteralExpression= ruleBooleanLiteralExpression EOF ;
    public final EObject entryRuleBooleanLiteralExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBooleanLiteralExpression = null;


        try {
            // InternalAlf.g:6421:2: (iv_ruleBooleanLiteralExpression= ruleBooleanLiteralExpression EOF )
            // InternalAlf.g:6422:2: iv_ruleBooleanLiteralExpression= ruleBooleanLiteralExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getBooleanLiteralExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleBooleanLiteralExpression=ruleBooleanLiteralExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleBooleanLiteralExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBooleanLiteralExpression"


    // $ANTLR start "ruleBooleanLiteralExpression"
    // InternalAlf.g:6429:1: ruleBooleanLiteralExpression returns [EObject current=null] : ( (lv_image_0_0= RULE_BOOLEAN_VALUE ) ) ;
    public final EObject ruleBooleanLiteralExpression() throws RecognitionException {
        EObject current = null;

        Token lv_image_0_0=null;

         enterRule(); 
            
        try {
            // InternalAlf.g:6432:28: ( ( (lv_image_0_0= RULE_BOOLEAN_VALUE ) ) )
            // InternalAlf.g:6433:1: ( (lv_image_0_0= RULE_BOOLEAN_VALUE ) )
            {
            // InternalAlf.g:6433:1: ( (lv_image_0_0= RULE_BOOLEAN_VALUE ) )
            // InternalAlf.g:6434:1: (lv_image_0_0= RULE_BOOLEAN_VALUE )
            {
            // InternalAlf.g:6434:1: (lv_image_0_0= RULE_BOOLEAN_VALUE )
            // InternalAlf.g:6435:3: lv_image_0_0= RULE_BOOLEAN_VALUE
            {
            lv_image_0_0=(Token)match(input,RULE_BOOLEAN_VALUE,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_image_0_0, grammarAccess.getBooleanLiteralExpressionAccess().getImageBOOLEAN_VALUETerminalRuleCall_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getBooleanLiteralExpressionRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"image",
                      		lv_image_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.BOOLEAN_VALUE");
              	    
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBooleanLiteralExpression"


    // $ANTLR start "entryRuleNaturalLiteralExpression"
    // InternalAlf.g:6459:1: entryRuleNaturalLiteralExpression returns [EObject current=null] : iv_ruleNaturalLiteralExpression= ruleNaturalLiteralExpression EOF ;
    public final EObject entryRuleNaturalLiteralExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNaturalLiteralExpression = null;


        try {
            // InternalAlf.g:6460:2: (iv_ruleNaturalLiteralExpression= ruleNaturalLiteralExpression EOF )
            // InternalAlf.g:6461:2: iv_ruleNaturalLiteralExpression= ruleNaturalLiteralExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNaturalLiteralExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleNaturalLiteralExpression=ruleNaturalLiteralExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNaturalLiteralExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNaturalLiteralExpression"


    // $ANTLR start "ruleNaturalLiteralExpression"
    // InternalAlf.g:6468:1: ruleNaturalLiteralExpression returns [EObject current=null] : ( (lv_image_0_0= RULE_NATURAL_VALUE ) ) ;
    public final EObject ruleNaturalLiteralExpression() throws RecognitionException {
        EObject current = null;

        Token lv_image_0_0=null;

         enterRule(); 
            
        try {
            // InternalAlf.g:6471:28: ( ( (lv_image_0_0= RULE_NATURAL_VALUE ) ) )
            // InternalAlf.g:6472:1: ( (lv_image_0_0= RULE_NATURAL_VALUE ) )
            {
            // InternalAlf.g:6472:1: ( (lv_image_0_0= RULE_NATURAL_VALUE ) )
            // InternalAlf.g:6473:1: (lv_image_0_0= RULE_NATURAL_VALUE )
            {
            // InternalAlf.g:6473:1: (lv_image_0_0= RULE_NATURAL_VALUE )
            // InternalAlf.g:6474:3: lv_image_0_0= RULE_NATURAL_VALUE
            {
            lv_image_0_0=(Token)match(input,RULE_NATURAL_VALUE,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_image_0_0, grammarAccess.getNaturalLiteralExpressionAccess().getImageNATURAL_VALUETerminalRuleCall_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getNaturalLiteralExpressionRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"image",
                      		lv_image_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.NATURAL_VALUE");
              	    
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNaturalLiteralExpression"


    // $ANTLR start "entryRuleUnboundedLiteralExpression"
    // InternalAlf.g:6498:1: entryRuleUnboundedLiteralExpression returns [EObject current=null] : iv_ruleUnboundedLiteralExpression= ruleUnboundedLiteralExpression EOF ;
    public final EObject entryRuleUnboundedLiteralExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleUnboundedLiteralExpression = null;


        try {
            // InternalAlf.g:6499:2: (iv_ruleUnboundedLiteralExpression= ruleUnboundedLiteralExpression EOF )
            // InternalAlf.g:6500:2: iv_ruleUnboundedLiteralExpression= ruleUnboundedLiteralExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getUnboundedLiteralExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleUnboundedLiteralExpression=ruleUnboundedLiteralExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleUnboundedLiteralExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleUnboundedLiteralExpression"


    // $ANTLR start "ruleUnboundedLiteralExpression"
    // InternalAlf.g:6507:1: ruleUnboundedLiteralExpression returns [EObject current=null] : ( () otherlv_1= '*' ) ;
    public final EObject ruleUnboundedLiteralExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // InternalAlf.g:6510:28: ( ( () otherlv_1= '*' ) )
            // InternalAlf.g:6511:1: ( () otherlv_1= '*' )
            {
            // InternalAlf.g:6511:1: ( () otherlv_1= '*' )
            // InternalAlf.g:6511:2: () otherlv_1= '*'
            {
            // InternalAlf.g:6511:2: ()
            // InternalAlf.g:6512:2: 
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getUnboundedLiteralExpressionAccess().getUnboundedLiteralExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,20,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getUnboundedLiteralExpressionAccess().getAsteriskKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleUnboundedLiteralExpression"


    // $ANTLR start "entryRuleStringLiteralExpression"
    // InternalAlf.g:6532:1: entryRuleStringLiteralExpression returns [EObject current=null] : iv_ruleStringLiteralExpression= ruleStringLiteralExpression EOF ;
    public final EObject entryRuleStringLiteralExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStringLiteralExpression = null;


        try {
            // InternalAlf.g:6533:2: (iv_ruleStringLiteralExpression= ruleStringLiteralExpression EOF )
            // InternalAlf.g:6534:2: iv_ruleStringLiteralExpression= ruleStringLiteralExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getStringLiteralExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleStringLiteralExpression=ruleStringLiteralExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleStringLiteralExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStringLiteralExpression"


    // $ANTLR start "ruleStringLiteralExpression"
    // InternalAlf.g:6541:1: ruleStringLiteralExpression returns [EObject current=null] : ( (lv_image_0_0= RULE_STRING ) ) ;
    public final EObject ruleStringLiteralExpression() throws RecognitionException {
        EObject current = null;

        Token lv_image_0_0=null;

         enterRule(); 
            
        try {
            // InternalAlf.g:6544:28: ( ( (lv_image_0_0= RULE_STRING ) ) )
            // InternalAlf.g:6545:1: ( (lv_image_0_0= RULE_STRING ) )
            {
            // InternalAlf.g:6545:1: ( (lv_image_0_0= RULE_STRING ) )
            // InternalAlf.g:6546:1: (lv_image_0_0= RULE_STRING )
            {
            // InternalAlf.g:6546:1: (lv_image_0_0= RULE_STRING )
            // InternalAlf.g:6547:3: lv_image_0_0= RULE_STRING
            {
            lv_image_0_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_image_0_0, grammarAccess.getStringLiteralExpressionAccess().getImageSTRINGTerminalRuleCall_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getStringLiteralExpressionRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"image",
                      		lv_image_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.STRING");
              	    
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStringLiteralExpression"


    // $ANTLR start "entryRuleNameExpression"
    // InternalAlf.g:6571:1: entryRuleNameExpression returns [EObject current=null] : iv_ruleNameExpression= ruleNameExpression EOF ;
    public final EObject entryRuleNameExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNameExpression = null;


        try {
            // InternalAlf.g:6572:2: (iv_ruleNameExpression= ruleNameExpression EOF )
            // InternalAlf.g:6573:2: iv_ruleNameExpression= ruleNameExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNameExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleNameExpression=ruleNameExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNameExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNameExpression"


    // $ANTLR start "ruleNameExpression"
    // InternalAlf.g:6580:1: ruleNameExpression returns [EObject current=null] : ( (lv_name_0_0= rulePotentiallyAmbiguousQualifiedName ) ) ;
    public final EObject ruleNameExpression() throws RecognitionException {
        EObject current = null;

        EObject lv_name_0_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:6583:28: ( ( (lv_name_0_0= rulePotentiallyAmbiguousQualifiedName ) ) )
            // InternalAlf.g:6584:1: ( (lv_name_0_0= rulePotentiallyAmbiguousQualifiedName ) )
            {
            // InternalAlf.g:6584:1: ( (lv_name_0_0= rulePotentiallyAmbiguousQualifiedName ) )
            // InternalAlf.g:6585:1: (lv_name_0_0= rulePotentiallyAmbiguousQualifiedName )
            {
            // InternalAlf.g:6585:1: (lv_name_0_0= rulePotentiallyAmbiguousQualifiedName )
            // InternalAlf.g:6586:3: lv_name_0_0= rulePotentiallyAmbiguousQualifiedName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getNameExpressionAccess().getNamePotentiallyAmbiguousQualifiedNameParserRuleCall_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_name_0_0=rulePotentiallyAmbiguousQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getNameExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.PotentiallyAmbiguousQualifiedName");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNameExpression"


    // $ANTLR start "entryRuleThisExpression"
    // InternalAlf.g:6610:1: entryRuleThisExpression returns [EObject current=null] : iv_ruleThisExpression= ruleThisExpression EOF ;
    public final EObject entryRuleThisExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleThisExpression = null;


        try {
            // InternalAlf.g:6611:2: (iv_ruleThisExpression= ruleThisExpression EOF )
            // InternalAlf.g:6612:2: iv_ruleThisExpression= ruleThisExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getThisExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleThisExpression=ruleThisExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleThisExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleThisExpression"


    // $ANTLR start "ruleThisExpression"
    // InternalAlf.g:6619:1: ruleThisExpression returns [EObject current=null] : ( ( () otherlv_1= 'this' ( (lv_tuple_2_0= ruleTuple ) ) ) | ( () otherlv_4= 'this' ) ) ;
    public final EObject ruleThisExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_4=null;
        EObject lv_tuple_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:6622:28: ( ( ( () otherlv_1= 'this' ( (lv_tuple_2_0= ruleTuple ) ) ) | ( () otherlv_4= 'this' ) ) )
            // InternalAlf.g:6623:1: ( ( () otherlv_1= 'this' ( (lv_tuple_2_0= ruleTuple ) ) ) | ( () otherlv_4= 'this' ) )
            {
            // InternalAlf.g:6623:1: ( ( () otherlv_1= 'this' ( (lv_tuple_2_0= ruleTuple ) ) ) | ( () otherlv_4= 'this' ) )
            int alt132=2;
            int LA132_0 = input.LA(1);

            if ( (LA132_0==62) ) {
                int LA132_1 = input.LA(2);

                if ( (LA132_1==16) ) {
                    alt132=1;
                }
                else if ( (LA132_1==EOF||(LA132_1>=17 && LA132_1<=18)||LA132_1==20||LA132_1==22||LA132_1==26||LA132_1==32||(LA132_1>=36 && LA132_1<=37)||LA132_1==45||LA132_1==49||(LA132_1>=52 && LA132_1<=54)||LA132_1==60||(LA132_1>=70 && LA132_1<=71)||(LA132_1>=74 && LA132_1<=75)||(LA132_1>=77 && LA132_1<=104)||(LA132_1>=118 && LA132_1<=119)) ) {
                    alt132=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 132, 1, input);

                    throw nvae;
                }
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 132, 0, input);

                throw nvae;
            }
            switch (alt132) {
                case 1 :
                    // InternalAlf.g:6623:2: ( () otherlv_1= 'this' ( (lv_tuple_2_0= ruleTuple ) ) )
                    {
                    // InternalAlf.g:6623:2: ( () otherlv_1= 'this' ( (lv_tuple_2_0= ruleTuple ) ) )
                    // InternalAlf.g:6623:3: () otherlv_1= 'this' ( (lv_tuple_2_0= ruleTuple ) )
                    {
                    // InternalAlf.g:6623:3: ()
                    // InternalAlf.g:6624:2: 
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElement(
                                  grammarAccess.getThisExpressionAccess().getFeatureInvocationExpressionAction_0_0(),
                                  current);
                          
                    }

                    }

                    otherlv_1=(Token)match(input,62,FOLLOW_42); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getThisExpressionAccess().getThisKeyword_0_1());
                          
                    }
                    // InternalAlf.g:6636:1: ( (lv_tuple_2_0= ruleTuple ) )
                    // InternalAlf.g:6637:1: (lv_tuple_2_0= ruleTuple )
                    {
                    // InternalAlf.g:6637:1: (lv_tuple_2_0= ruleTuple )
                    // InternalAlf.g:6638:3: lv_tuple_2_0= ruleTuple
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getThisExpressionAccess().getTupleTupleParserRuleCall_0_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_tuple_2_0=ruleTuple();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getThisExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"tuple",
                              		lv_tuple_2_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.Tuple");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalAlf.g:6655:6: ( () otherlv_4= 'this' )
                    {
                    // InternalAlf.g:6655:6: ( () otherlv_4= 'this' )
                    // InternalAlf.g:6655:7: () otherlv_4= 'this'
                    {
                    // InternalAlf.g:6655:7: ()
                    // InternalAlf.g:6656:2: 
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElement(
                                  grammarAccess.getThisExpressionAccess().getThisExpressionAction_1_0(),
                                  current);
                          
                    }

                    }

                    otherlv_4=(Token)match(input,62,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getThisExpressionAccess().getThisKeyword_1_1());
                          
                    }

                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleThisExpression"


    // $ANTLR start "entryRuleParenthesizedExpression"
    // InternalAlf.g:6676:1: entryRuleParenthesizedExpression returns [EObject current=null] : iv_ruleParenthesizedExpression= ruleParenthesizedExpression EOF ;
    public final EObject entryRuleParenthesizedExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleParenthesizedExpression = null;


        try {
            // InternalAlf.g:6677:2: (iv_ruleParenthesizedExpression= ruleParenthesizedExpression EOF )
            // InternalAlf.g:6678:2: iv_ruleParenthesizedExpression= ruleParenthesizedExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getParenthesizedExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleParenthesizedExpression=ruleParenthesizedExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleParenthesizedExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleParenthesizedExpression"


    // $ANTLR start "ruleParenthesizedExpression"
    // InternalAlf.g:6685:1: ruleParenthesizedExpression returns [EObject current=null] : (otherlv_0= '(' this_Expression_1= ruleExpression otherlv_2= ')' ) ;
    public final EObject ruleParenthesizedExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject this_Expression_1 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:6688:28: ( (otherlv_0= '(' this_Expression_1= ruleExpression otherlv_2= ')' ) )
            // InternalAlf.g:6689:1: (otherlv_0= '(' this_Expression_1= ruleExpression otherlv_2= ')' )
            {
            // InternalAlf.g:6689:1: (otherlv_0= '(' this_Expression_1= ruleExpression otherlv_2= ')' )
            // InternalAlf.g:6689:3: otherlv_0= '(' this_Expression_1= ruleExpression otherlv_2= ')'
            {
            otherlv_0=(Token)match(input,16,FOLLOW_69); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
                  
            }
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getParenthesizedExpressionAccess().getExpressionParserRuleCall_1()); 
                  
            }
            pushFollow(FOLLOW_6);
            this_Expression_1=ruleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_Expression_1; 
                      afterParserOrEnumRuleCall();
                  
            }
            otherlv_2=(Token)match(input,17,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getParenthesizedExpressionAccess().getRightParenthesisKeyword_2());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleParenthesizedExpression"


    // $ANTLR start "entryRuleBehaviorInvocationExpression"
    // InternalAlf.g:6717:1: entryRuleBehaviorInvocationExpression returns [EObject current=null] : iv_ruleBehaviorInvocationExpression= ruleBehaviorInvocationExpression EOF ;
    public final EObject entryRuleBehaviorInvocationExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBehaviorInvocationExpression = null;


        try {
            // InternalAlf.g:6718:2: (iv_ruleBehaviorInvocationExpression= ruleBehaviorInvocationExpression EOF )
            // InternalAlf.g:6719:2: iv_ruleBehaviorInvocationExpression= ruleBehaviorInvocationExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getBehaviorInvocationExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleBehaviorInvocationExpression=ruleBehaviorInvocationExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleBehaviorInvocationExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBehaviorInvocationExpression"


    // $ANTLR start "ruleBehaviorInvocationExpression"
    // InternalAlf.g:6726:1: ruleBehaviorInvocationExpression returns [EObject current=null] : ( ( (lv_target_0_0= rulePotentiallyAmbiguousQualifiedName ) ) ( (lv_tuple_1_0= ruleTuple ) ) ) ;
    public final EObject ruleBehaviorInvocationExpression() throws RecognitionException {
        EObject current = null;

        EObject lv_target_0_0 = null;

        EObject lv_tuple_1_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:6729:28: ( ( ( (lv_target_0_0= rulePotentiallyAmbiguousQualifiedName ) ) ( (lv_tuple_1_0= ruleTuple ) ) ) )
            // InternalAlf.g:6730:1: ( ( (lv_target_0_0= rulePotentiallyAmbiguousQualifiedName ) ) ( (lv_tuple_1_0= ruleTuple ) ) )
            {
            // InternalAlf.g:6730:1: ( ( (lv_target_0_0= rulePotentiallyAmbiguousQualifiedName ) ) ( (lv_tuple_1_0= ruleTuple ) ) )
            // InternalAlf.g:6730:2: ( (lv_target_0_0= rulePotentiallyAmbiguousQualifiedName ) ) ( (lv_tuple_1_0= ruleTuple ) )
            {
            // InternalAlf.g:6730:2: ( (lv_target_0_0= rulePotentiallyAmbiguousQualifiedName ) )
            // InternalAlf.g:6731:1: (lv_target_0_0= rulePotentiallyAmbiguousQualifiedName )
            {
            // InternalAlf.g:6731:1: (lv_target_0_0= rulePotentiallyAmbiguousQualifiedName )
            // InternalAlf.g:6732:3: lv_target_0_0= rulePotentiallyAmbiguousQualifiedName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getBehaviorInvocationExpressionAccess().getTargetPotentiallyAmbiguousQualifiedNameParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_42);
            lv_target_0_0=rulePotentiallyAmbiguousQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getBehaviorInvocationExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"target",
                      		lv_target_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.PotentiallyAmbiguousQualifiedName");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:6748:2: ( (lv_tuple_1_0= ruleTuple ) )
            // InternalAlf.g:6749:1: (lv_tuple_1_0= ruleTuple )
            {
            // InternalAlf.g:6749:1: (lv_tuple_1_0= ruleTuple )
            // InternalAlf.g:6750:3: lv_tuple_1_0= ruleTuple
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getBehaviorInvocationExpressionAccess().getTupleTupleParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_tuple_1_0=ruleTuple();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getBehaviorInvocationExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"tuple",
                      		lv_tuple_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Tuple");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBehaviorInvocationExpression"


    // $ANTLR start "entryRuleTuple"
    // InternalAlf.g:6774:1: entryRuleTuple returns [EObject current=null] : iv_ruleTuple= ruleTuple EOF ;
    public final EObject entryRuleTuple() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTuple = null;


        try {
            // InternalAlf.g:6775:2: (iv_ruleTuple= ruleTuple EOF )
            // InternalAlf.g:6776:2: iv_ruleTuple= ruleTuple EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTupleRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleTuple=ruleTuple();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTuple; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTuple"


    // $ANTLR start "ruleTuple"
    // InternalAlf.g:6783:1: ruleTuple returns [EObject current=null] : (otherlv_0= '(' (this_NamedTupleExpressionList_1= ruleNamedTupleExpressionList | this_PositionalTupleExpressionList_2= rulePositionalTupleExpressionList ) otherlv_3= ')' ) ;
    public final EObject ruleTuple() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_3=null;
        EObject this_NamedTupleExpressionList_1 = null;

        EObject this_PositionalTupleExpressionList_2 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:6786:28: ( (otherlv_0= '(' (this_NamedTupleExpressionList_1= ruleNamedTupleExpressionList | this_PositionalTupleExpressionList_2= rulePositionalTupleExpressionList ) otherlv_3= ')' ) )
            // InternalAlf.g:6787:1: (otherlv_0= '(' (this_NamedTupleExpressionList_1= ruleNamedTupleExpressionList | this_PositionalTupleExpressionList_2= rulePositionalTupleExpressionList ) otherlv_3= ')' )
            {
            // InternalAlf.g:6787:1: (otherlv_0= '(' (this_NamedTupleExpressionList_1= ruleNamedTupleExpressionList | this_PositionalTupleExpressionList_2= rulePositionalTupleExpressionList ) otherlv_3= ')' )
            // InternalAlf.g:6787:3: otherlv_0= '(' (this_NamedTupleExpressionList_1= ruleNamedTupleExpressionList | this_PositionalTupleExpressionList_2= rulePositionalTupleExpressionList ) otherlv_3= ')'
            {
            otherlv_0=(Token)match(input,16,FOLLOW_70); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getTupleAccess().getLeftParenthesisKeyword_0());
                  
            }
            // InternalAlf.g:6791:1: (this_NamedTupleExpressionList_1= ruleNamedTupleExpressionList | this_PositionalTupleExpressionList_2= rulePositionalTupleExpressionList )
            int alt133=2;
            switch ( input.LA(1) ) {
            case RULE_ID:
                {
                int LA133_1 = input.LA(2);

                if ( ((LA133_1>=16 && LA133_1<=18)||LA133_1==20||(LA133_1>=25 && LA133_1<=26)||LA133_1==31||(LA133_1>=36 && LA133_1<=37)||LA133_1==49||LA133_1==52||LA133_1==60||(LA133_1>=70 && LA133_1<=71)||(LA133_1>=74 && LA133_1<=75)||(LA133_1>=77 && LA133_1<=104)) ) {
                    alt133=2;
                }
                else if ( (LA133_1==19) ) {
                    alt133=1;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 133, 1, input);

                    throw nvae;
                }
                }
                break;
            case RULE_UNRESTRICTED_NAME:
                {
                int LA133_2 = input.LA(2);

                if ( (LA133_2==19) ) {
                    alt133=1;
                }
                else if ( ((LA133_2>=16 && LA133_2<=18)||LA133_2==20||(LA133_2>=25 && LA133_2<=26)||LA133_2==31||(LA133_2>=36 && LA133_2<=37)||LA133_2==49||LA133_2==52||LA133_2==60||(LA133_2>=70 && LA133_2<=71)||(LA133_2>=74 && LA133_2<=75)||(LA133_2>=77 && LA133_2<=104)) ) {
                    alt133=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 133, 2, input);

                    throw nvae;
                }
                }
                break;
            case RULE_BOOLEAN_VALUE:
            case RULE_NATURAL_VALUE:
            case RULE_STRING:
            case 16:
            case 17:
            case 20:
            case 51:
            case 62:
            case 63:
            case 64:
            case 69:
            case 70:
            case 71:
            case 72:
            case 73:
            case 74:
            case 75:
            case 76:
                {
                alt133=2;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 133, 0, input);

                throw nvae;
            }

            switch (alt133) {
                case 1 :
                    // InternalAlf.g:6792:2: this_NamedTupleExpressionList_1= ruleNamedTupleExpressionList
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getTupleAccess().getNamedTupleExpressionListParserRuleCall_1_0()); 
                          
                    }
                    pushFollow(FOLLOW_6);
                    this_NamedTupleExpressionList_1=ruleNamedTupleExpressionList();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_NamedTupleExpressionList_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:6805:2: this_PositionalTupleExpressionList_2= rulePositionalTupleExpressionList
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getTupleAccess().getPositionalTupleExpressionListParserRuleCall_1_1()); 
                          
                    }
                    pushFollow(FOLLOW_6);
                    this_PositionalTupleExpressionList_2=rulePositionalTupleExpressionList();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_PositionalTupleExpressionList_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }

            otherlv_3=(Token)match(input,17,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getTupleAccess().getRightParenthesisKeyword_2());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTuple"


    // $ANTLR start "entryRulePositionalTupleExpressionList"
    // InternalAlf.g:6828:1: entryRulePositionalTupleExpressionList returns [EObject current=null] : iv_rulePositionalTupleExpressionList= rulePositionalTupleExpressionList EOF ;
    public final EObject entryRulePositionalTupleExpressionList() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePositionalTupleExpressionList = null;


        try {
            // InternalAlf.g:6829:2: (iv_rulePositionalTupleExpressionList= rulePositionalTupleExpressionList EOF )
            // InternalAlf.g:6830:2: iv_rulePositionalTupleExpressionList= rulePositionalTupleExpressionList EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPositionalTupleExpressionListRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_rulePositionalTupleExpressionList=rulePositionalTupleExpressionList();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePositionalTupleExpressionList; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePositionalTupleExpressionList"


    // $ANTLR start "rulePositionalTupleExpressionList"
    // InternalAlf.g:6837:1: rulePositionalTupleExpressionList returns [EObject current=null] : ( () ( ( (lv_expression_1_0= ruleExpression ) ) (otherlv_2= ',' ( (lv_expression_3_0= ruleExpression ) ) )* )? ) ;
    public final EObject rulePositionalTupleExpressionList() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject lv_expression_1_0 = null;

        EObject lv_expression_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:6840:28: ( ( () ( ( (lv_expression_1_0= ruleExpression ) ) (otherlv_2= ',' ( (lv_expression_3_0= ruleExpression ) ) )* )? ) )
            // InternalAlf.g:6841:1: ( () ( ( (lv_expression_1_0= ruleExpression ) ) (otherlv_2= ',' ( (lv_expression_3_0= ruleExpression ) ) )* )? )
            {
            // InternalAlf.g:6841:1: ( () ( ( (lv_expression_1_0= ruleExpression ) ) (otherlv_2= ',' ( (lv_expression_3_0= ruleExpression ) ) )* )? )
            // InternalAlf.g:6841:2: () ( ( (lv_expression_1_0= ruleExpression ) ) (otherlv_2= ',' ( (lv_expression_3_0= ruleExpression ) ) )* )?
            {
            // InternalAlf.g:6841:2: ()
            // InternalAlf.g:6842:2: 
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getPositionalTupleExpressionListAccess().getPositionalTupleAction_0(),
                          current);
                  
            }

            }

            // InternalAlf.g:6850:2: ( ( (lv_expression_1_0= ruleExpression ) ) (otherlv_2= ',' ( (lv_expression_3_0= ruleExpression ) ) )* )?
            int alt135=2;
            int LA135_0 = input.LA(1);

            if ( ((LA135_0>=RULE_BOOLEAN_VALUE && LA135_0<=RULE_UNRESTRICTED_NAME)||LA135_0==16||LA135_0==20||LA135_0==51||(LA135_0>=62 && LA135_0<=64)||(LA135_0>=69 && LA135_0<=76)) ) {
                alt135=1;
            }
            switch (alt135) {
                case 1 :
                    // InternalAlf.g:6850:3: ( (lv_expression_1_0= ruleExpression ) ) (otherlv_2= ',' ( (lv_expression_3_0= ruleExpression ) ) )*
                    {
                    // InternalAlf.g:6850:3: ( (lv_expression_1_0= ruleExpression ) )
                    // InternalAlf.g:6851:1: (lv_expression_1_0= ruleExpression )
                    {
                    // InternalAlf.g:6851:1: (lv_expression_1_0= ruleExpression )
                    // InternalAlf.g:6852:3: lv_expression_1_0= ruleExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getPositionalTupleExpressionListAccess().getExpressionExpressionParserRuleCall_1_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_7);
                    lv_expression_1_0=ruleExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getPositionalTupleExpressionListRule());
                      	        }
                             		add(
                             			current, 
                             			"expression",
                              		lv_expression_1_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.Expression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // InternalAlf.g:6868:2: (otherlv_2= ',' ( (lv_expression_3_0= ruleExpression ) ) )*
                    loop134:
                    do {
                        int alt134=2;
                        int LA134_0 = input.LA(1);

                        if ( (LA134_0==18) ) {
                            alt134=1;
                        }


                        switch (alt134) {
                    	case 1 :
                    	    // InternalAlf.g:6868:4: otherlv_2= ',' ( (lv_expression_3_0= ruleExpression ) )
                    	    {
                    	    otherlv_2=(Token)match(input,18,FOLLOW_69); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_2, grammarAccess.getPositionalTupleExpressionListAccess().getCommaKeyword_1_1_0());
                    	          
                    	    }
                    	    // InternalAlf.g:6872:1: ( (lv_expression_3_0= ruleExpression ) )
                    	    // InternalAlf.g:6873:1: (lv_expression_3_0= ruleExpression )
                    	    {
                    	    // InternalAlf.g:6873:1: (lv_expression_3_0= ruleExpression )
                    	    // InternalAlf.g:6874:3: lv_expression_3_0= ruleExpression
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getPositionalTupleExpressionListAccess().getExpressionExpressionParserRuleCall_1_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_7);
                    	    lv_expression_3_0=ruleExpression();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getPositionalTupleExpressionListRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"expression",
                    	              		lv_expression_3_0, 
                    	              		"org.eclipse.papyrus.uml.alf.Alf.Expression");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop134;
                        }
                    } while (true);


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePositionalTupleExpressionList"


    // $ANTLR start "entryRuleNamedTupleExpressionList"
    // InternalAlf.g:6898:1: entryRuleNamedTupleExpressionList returns [EObject current=null] : iv_ruleNamedTupleExpressionList= ruleNamedTupleExpressionList EOF ;
    public final EObject entryRuleNamedTupleExpressionList() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNamedTupleExpressionList = null;


        try {
            // InternalAlf.g:6899:2: (iv_ruleNamedTupleExpressionList= ruleNamedTupleExpressionList EOF )
            // InternalAlf.g:6900:2: iv_ruleNamedTupleExpressionList= ruleNamedTupleExpressionList EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNamedTupleExpressionListRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleNamedTupleExpressionList=ruleNamedTupleExpressionList();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNamedTupleExpressionList; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNamedTupleExpressionList"


    // $ANTLR start "ruleNamedTupleExpressionList"
    // InternalAlf.g:6907:1: ruleNamedTupleExpressionList returns [EObject current=null] : ( ( (lv_namedExpression_0_0= ruleNamedExpression ) ) (otherlv_1= ',' ( (lv_namedExpression_2_0= ruleNamedExpression ) ) )* ) ;
    public final EObject ruleNamedTupleExpressionList() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_namedExpression_0_0 = null;

        EObject lv_namedExpression_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:6910:28: ( ( ( (lv_namedExpression_0_0= ruleNamedExpression ) ) (otherlv_1= ',' ( (lv_namedExpression_2_0= ruleNamedExpression ) ) )* ) )
            // InternalAlf.g:6911:1: ( ( (lv_namedExpression_0_0= ruleNamedExpression ) ) (otherlv_1= ',' ( (lv_namedExpression_2_0= ruleNamedExpression ) ) )* )
            {
            // InternalAlf.g:6911:1: ( ( (lv_namedExpression_0_0= ruleNamedExpression ) ) (otherlv_1= ',' ( (lv_namedExpression_2_0= ruleNamedExpression ) ) )* )
            // InternalAlf.g:6911:2: ( (lv_namedExpression_0_0= ruleNamedExpression ) ) (otherlv_1= ',' ( (lv_namedExpression_2_0= ruleNamedExpression ) ) )*
            {
            // InternalAlf.g:6911:2: ( (lv_namedExpression_0_0= ruleNamedExpression ) )
            // InternalAlf.g:6912:1: (lv_namedExpression_0_0= ruleNamedExpression )
            {
            // InternalAlf.g:6912:1: (lv_namedExpression_0_0= ruleNamedExpression )
            // InternalAlf.g:6913:3: lv_namedExpression_0_0= ruleNamedExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getNamedTupleExpressionListAccess().getNamedExpressionNamedExpressionParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_7);
            lv_namedExpression_0_0=ruleNamedExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getNamedTupleExpressionListRule());
              	        }
                     		add(
                     			current, 
                     			"namedExpression",
                      		lv_namedExpression_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.NamedExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:6929:2: (otherlv_1= ',' ( (lv_namedExpression_2_0= ruleNamedExpression ) ) )*
            loop136:
            do {
                int alt136=2;
                int LA136_0 = input.LA(1);

                if ( (LA136_0==18) ) {
                    alt136=1;
                }


                switch (alt136) {
            	case 1 :
            	    // InternalAlf.g:6929:4: otherlv_1= ',' ( (lv_namedExpression_2_0= ruleNamedExpression ) )
            	    {
            	    otherlv_1=(Token)match(input,18,FOLLOW_4); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_1, grammarAccess.getNamedTupleExpressionListAccess().getCommaKeyword_1_0());
            	          
            	    }
            	    // InternalAlf.g:6933:1: ( (lv_namedExpression_2_0= ruleNamedExpression ) )
            	    // InternalAlf.g:6934:1: (lv_namedExpression_2_0= ruleNamedExpression )
            	    {
            	    // InternalAlf.g:6934:1: (lv_namedExpression_2_0= ruleNamedExpression )
            	    // InternalAlf.g:6935:3: lv_namedExpression_2_0= ruleNamedExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getNamedTupleExpressionListAccess().getNamedExpressionNamedExpressionParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_7);
            	    lv_namedExpression_2_0=ruleNamedExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getNamedTupleExpressionListRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"namedExpression",
            	              		lv_namedExpression_2_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.NamedExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop136;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNamedTupleExpressionList"


    // $ANTLR start "entryRuleNamedExpression"
    // InternalAlf.g:6959:1: entryRuleNamedExpression returns [EObject current=null] : iv_ruleNamedExpression= ruleNamedExpression EOF ;
    public final EObject entryRuleNamedExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNamedExpression = null;


        try {
            // InternalAlf.g:6960:2: (iv_ruleNamedExpression= ruleNamedExpression EOF )
            // InternalAlf.g:6961:2: iv_ruleNamedExpression= ruleNamedExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNamedExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleNamedExpression=ruleNamedExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNamedExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNamedExpression"


    // $ANTLR start "ruleNamedExpression"
    // InternalAlf.g:6968:1: ruleNamedExpression returns [EObject current=null] : ( ( (lv_name_0_0= ruleName ) ) otherlv_1= '=>' ( (lv_expression_2_0= ruleExpression ) ) ) ;
    public final EObject ruleNamedExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        AntlrDatatypeRuleToken lv_name_0_0 = null;

        EObject lv_expression_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:6971:28: ( ( ( (lv_name_0_0= ruleName ) ) otherlv_1= '=>' ( (lv_expression_2_0= ruleExpression ) ) ) )
            // InternalAlf.g:6972:1: ( ( (lv_name_0_0= ruleName ) ) otherlv_1= '=>' ( (lv_expression_2_0= ruleExpression ) ) )
            {
            // InternalAlf.g:6972:1: ( ( (lv_name_0_0= ruleName ) ) otherlv_1= '=>' ( (lv_expression_2_0= ruleExpression ) ) )
            // InternalAlf.g:6972:2: ( (lv_name_0_0= ruleName ) ) otherlv_1= '=>' ( (lv_expression_2_0= ruleExpression ) )
            {
            // InternalAlf.g:6972:2: ( (lv_name_0_0= ruleName ) )
            // InternalAlf.g:6973:1: (lv_name_0_0= ruleName )
            {
            // InternalAlf.g:6973:1: (lv_name_0_0= ruleName )
            // InternalAlf.g:6974:3: lv_name_0_0= ruleName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getNamedExpressionAccess().getNameNameParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_8);
            lv_name_0_0=ruleName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getNamedExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Name");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,19,FOLLOW_69); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getNamedExpressionAccess().getEqualsSignGreaterThanSignKeyword_1());
                  
            }
            // InternalAlf.g:6994:1: ( (lv_expression_2_0= ruleExpression ) )
            // InternalAlf.g:6995:1: (lv_expression_2_0= ruleExpression )
            {
            // InternalAlf.g:6995:1: (lv_expression_2_0= ruleExpression )
            // InternalAlf.g:6996:3: lv_expression_2_0= ruleExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getNamedExpressionAccess().getExpressionExpressionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_expression_2_0=ruleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getNamedExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"expression",
                      		lv_expression_2_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Expression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNamedExpression"


    // $ANTLR start "entryRuleSuperInvocationExpression"
    // InternalAlf.g:7020:1: entryRuleSuperInvocationExpression returns [EObject current=null] : iv_ruleSuperInvocationExpression= ruleSuperInvocationExpression EOF ;
    public final EObject entryRuleSuperInvocationExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSuperInvocationExpression = null;


        try {
            // InternalAlf.g:7021:2: (iv_ruleSuperInvocationExpression= ruleSuperInvocationExpression EOF )
            // InternalAlf.g:7022:2: iv_ruleSuperInvocationExpression= ruleSuperInvocationExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSuperInvocationExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSuperInvocationExpression=ruleSuperInvocationExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSuperInvocationExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSuperInvocationExpression"


    // $ANTLR start "ruleSuperInvocationExpression"
    // InternalAlf.g:7029:1: ruleSuperInvocationExpression returns [EObject current=null] : (otherlv_0= 'super' (otherlv_1= '.' ( (lv_target_2_0= ruleQualifiedName ) ) )? ( (lv_tuple_3_0= ruleTuple ) ) ) ;
    public final EObject ruleSuperInvocationExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        EObject lv_target_2_0 = null;

        EObject lv_tuple_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:7032:28: ( (otherlv_0= 'super' (otherlv_1= '.' ( (lv_target_2_0= ruleQualifiedName ) ) )? ( (lv_tuple_3_0= ruleTuple ) ) ) )
            // InternalAlf.g:7033:1: (otherlv_0= 'super' (otherlv_1= '.' ( (lv_target_2_0= ruleQualifiedName ) ) )? ( (lv_tuple_3_0= ruleTuple ) ) )
            {
            // InternalAlf.g:7033:1: (otherlv_0= 'super' (otherlv_1= '.' ( (lv_target_2_0= ruleQualifiedName ) ) )? ( (lv_tuple_3_0= ruleTuple ) ) )
            // InternalAlf.g:7033:3: otherlv_0= 'super' (otherlv_1= '.' ( (lv_target_2_0= ruleQualifiedName ) ) )? ( (lv_tuple_3_0= ruleTuple ) )
            {
            otherlv_0=(Token)match(input,63,FOLLOW_71); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getSuperInvocationExpressionAccess().getSuperKeyword_0());
                  
            }
            // InternalAlf.g:7037:1: (otherlv_1= '.' ( (lv_target_2_0= ruleQualifiedName ) ) )?
            int alt137=2;
            int LA137_0 = input.LA(1);

            if ( (LA137_0==26) ) {
                alt137=1;
            }
            switch (alt137) {
                case 1 :
                    // InternalAlf.g:7037:3: otherlv_1= '.' ( (lv_target_2_0= ruleQualifiedName ) )
                    {
                    otherlv_1=(Token)match(input,26,FOLLOW_4); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getSuperInvocationExpressionAccess().getFullStopKeyword_1_0());
                          
                    }
                    // InternalAlf.g:7041:1: ( (lv_target_2_0= ruleQualifiedName ) )
                    // InternalAlf.g:7042:1: (lv_target_2_0= ruleQualifiedName )
                    {
                    // InternalAlf.g:7042:1: (lv_target_2_0= ruleQualifiedName )
                    // InternalAlf.g:7043:3: lv_target_2_0= ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSuperInvocationExpressionAccess().getTargetQualifiedNameParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_42);
                    lv_target_2_0=ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSuperInvocationExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"target",
                              		lv_target_2_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.QualifiedName");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // InternalAlf.g:7059:4: ( (lv_tuple_3_0= ruleTuple ) )
            // InternalAlf.g:7060:1: (lv_tuple_3_0= ruleTuple )
            {
            // InternalAlf.g:7060:1: (lv_tuple_3_0= ruleTuple )
            // InternalAlf.g:7061:3: lv_tuple_3_0= ruleTuple
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getSuperInvocationExpressionAccess().getTupleTupleParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_tuple_3_0=ruleTuple();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getSuperInvocationExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"tuple",
                      		lv_tuple_3_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Tuple");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSuperInvocationExpression"


    // $ANTLR start "entryRuleInstanceCreationOrSequenceConstructionExpression"
    // InternalAlf.g:7085:1: entryRuleInstanceCreationOrSequenceConstructionExpression returns [EObject current=null] : iv_ruleInstanceCreationOrSequenceConstructionExpression= ruleInstanceCreationOrSequenceConstructionExpression EOF ;
    public final EObject entryRuleInstanceCreationOrSequenceConstructionExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleInstanceCreationOrSequenceConstructionExpression = null;


        try {
            // InternalAlf.g:7086:2: (iv_ruleInstanceCreationOrSequenceConstructionExpression= ruleInstanceCreationOrSequenceConstructionExpression EOF )
            // InternalAlf.g:7087:2: iv_ruleInstanceCreationOrSequenceConstructionExpression= ruleInstanceCreationOrSequenceConstructionExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getInstanceCreationOrSequenceConstructionExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleInstanceCreationOrSequenceConstructionExpression=ruleInstanceCreationOrSequenceConstructionExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleInstanceCreationOrSequenceConstructionExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleInstanceCreationOrSequenceConstructionExpression"


    // $ANTLR start "ruleInstanceCreationOrSequenceConstructionExpression"
    // InternalAlf.g:7094:1: ruleInstanceCreationOrSequenceConstructionExpression returns [EObject current=null] : (otherlv_0= 'new' ( ( () ( (lv_typeName_2_0= ruleQualifiedName ) ) ( (lv_hasMultiplicity_3_0= ruleMultiplicityIndicator ) )? otherlv_4= '{' ( (lv_elements_5_0= ruleSequenceElements ) )? otherlv_6= '}' ) | ( () ( (lv_constructor_8_0= ruleQualifiedName ) ) ( (lv_tuple_9_0= ruleTuple ) ) ) ) ) ;
    public final EObject ruleInstanceCreationOrSequenceConstructionExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_typeName_2_0 = null;

        AntlrDatatypeRuleToken lv_hasMultiplicity_3_0 = null;

        EObject lv_elements_5_0 = null;

        EObject lv_constructor_8_0 = null;

        EObject lv_tuple_9_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:7097:28: ( (otherlv_0= 'new' ( ( () ( (lv_typeName_2_0= ruleQualifiedName ) ) ( (lv_hasMultiplicity_3_0= ruleMultiplicityIndicator ) )? otherlv_4= '{' ( (lv_elements_5_0= ruleSequenceElements ) )? otherlv_6= '}' ) | ( () ( (lv_constructor_8_0= ruleQualifiedName ) ) ( (lv_tuple_9_0= ruleTuple ) ) ) ) ) )
            // InternalAlf.g:7098:1: (otherlv_0= 'new' ( ( () ( (lv_typeName_2_0= ruleQualifiedName ) ) ( (lv_hasMultiplicity_3_0= ruleMultiplicityIndicator ) )? otherlv_4= '{' ( (lv_elements_5_0= ruleSequenceElements ) )? otherlv_6= '}' ) | ( () ( (lv_constructor_8_0= ruleQualifiedName ) ) ( (lv_tuple_9_0= ruleTuple ) ) ) ) )
            {
            // InternalAlf.g:7098:1: (otherlv_0= 'new' ( ( () ( (lv_typeName_2_0= ruleQualifiedName ) ) ( (lv_hasMultiplicity_3_0= ruleMultiplicityIndicator ) )? otherlv_4= '{' ( (lv_elements_5_0= ruleSequenceElements ) )? otherlv_6= '}' ) | ( () ( (lv_constructor_8_0= ruleQualifiedName ) ) ( (lv_tuple_9_0= ruleTuple ) ) ) ) )
            // InternalAlf.g:7098:3: otherlv_0= 'new' ( ( () ( (lv_typeName_2_0= ruleQualifiedName ) ) ( (lv_hasMultiplicity_3_0= ruleMultiplicityIndicator ) )? otherlv_4= '{' ( (lv_elements_5_0= ruleSequenceElements ) )? otherlv_6= '}' ) | ( () ( (lv_constructor_8_0= ruleQualifiedName ) ) ( (lv_tuple_9_0= ruleTuple ) ) ) )
            {
            otherlv_0=(Token)match(input,64,FOLLOW_4); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getInstanceCreationOrSequenceConstructionExpressionAccess().getNewKeyword_0());
                  
            }
            // InternalAlf.g:7102:1: ( ( () ( (lv_typeName_2_0= ruleQualifiedName ) ) ( (lv_hasMultiplicity_3_0= ruleMultiplicityIndicator ) )? otherlv_4= '{' ( (lv_elements_5_0= ruleSequenceElements ) )? otherlv_6= '}' ) | ( () ( (lv_constructor_8_0= ruleQualifiedName ) ) ( (lv_tuple_9_0= ruleTuple ) ) ) )
            int alt140=2;
            int LA140_0 = input.LA(1);

            if ( (LA140_0==RULE_ID) ) {
                int LA140_1 = input.LA(2);

                if ( (synpred172_InternalAlf()) ) {
                    alt140=1;
                }
                else if ( (true) ) {
                    alt140=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 140, 1, input);

                    throw nvae;
                }
            }
            else if ( (LA140_0==RULE_UNRESTRICTED_NAME) ) {
                int LA140_2 = input.LA(2);

                if ( (synpred172_InternalAlf()) ) {
                    alt140=1;
                }
                else if ( (true) ) {
                    alt140=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 140, 2, input);

                    throw nvae;
                }
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 140, 0, input);

                throw nvae;
            }
            switch (alt140) {
                case 1 :
                    // InternalAlf.g:7102:2: ( () ( (lv_typeName_2_0= ruleQualifiedName ) ) ( (lv_hasMultiplicity_3_0= ruleMultiplicityIndicator ) )? otherlv_4= '{' ( (lv_elements_5_0= ruleSequenceElements ) )? otherlv_6= '}' )
                    {
                    // InternalAlf.g:7102:2: ( () ( (lv_typeName_2_0= ruleQualifiedName ) ) ( (lv_hasMultiplicity_3_0= ruleMultiplicityIndicator ) )? otherlv_4= '{' ( (lv_elements_5_0= ruleSequenceElements ) )? otherlv_6= '}' )
                    // InternalAlf.g:7102:3: () ( (lv_typeName_2_0= ruleQualifiedName ) ) ( (lv_hasMultiplicity_3_0= ruleMultiplicityIndicator ) )? otherlv_4= '{' ( (lv_elements_5_0= ruleSequenceElements ) )? otherlv_6= '}'
                    {
                    // InternalAlf.g:7102:3: ()
                    // InternalAlf.g:7103:2: 
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElement(
                                  grammarAccess.getInstanceCreationOrSequenceConstructionExpressionAccess().getSequenceConstructionExpressionAction_1_0_0(),
                                  current);
                          
                    }

                    }

                    // InternalAlf.g:7111:2: ( (lv_typeName_2_0= ruleQualifiedName ) )
                    // InternalAlf.g:7112:1: (lv_typeName_2_0= ruleQualifiedName )
                    {
                    // InternalAlf.g:7112:1: (lv_typeName_2_0= ruleQualifiedName )
                    // InternalAlf.g:7113:3: lv_typeName_2_0= ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getInstanceCreationOrSequenceConstructionExpressionAccess().getTypeNameQualifiedNameParserRuleCall_1_0_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_72);
                    lv_typeName_2_0=ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getInstanceCreationOrSequenceConstructionExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"typeName",
                              		lv_typeName_2_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.QualifiedName");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // InternalAlf.g:7129:2: ( (lv_hasMultiplicity_3_0= ruleMultiplicityIndicator ) )?
                    int alt138=2;
                    int LA138_0 = input.LA(1);

                    if ( (LA138_0==52) ) {
                        alt138=1;
                    }
                    switch (alt138) {
                        case 1 :
                            // InternalAlf.g:7130:1: (lv_hasMultiplicity_3_0= ruleMultiplicityIndicator )
                            {
                            // InternalAlf.g:7130:1: (lv_hasMultiplicity_3_0= ruleMultiplicityIndicator )
                            // InternalAlf.g:7131:3: lv_hasMultiplicity_3_0= ruleMultiplicityIndicator
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getInstanceCreationOrSequenceConstructionExpressionAccess().getHasMultiplicityMultiplicityIndicatorParserRuleCall_1_0_2_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_18);
                            lv_hasMultiplicity_3_0=ruleMultiplicityIndicator();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getInstanceCreationOrSequenceConstructionExpressionRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"hasMultiplicity",
                                      		true, 
                                      		"org.eclipse.papyrus.uml.alf.Alf.MultiplicityIndicator");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }
                            break;

                    }

                    otherlv_4=(Token)match(input,31,FOLLOW_73); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getInstanceCreationOrSequenceConstructionExpressionAccess().getLeftCurlyBracketKeyword_1_0_3());
                          
                    }
                    // InternalAlf.g:7151:1: ( (lv_elements_5_0= ruleSequenceElements ) )?
                    int alt139=2;
                    int LA139_0 = input.LA(1);

                    if ( ((LA139_0>=RULE_BOOLEAN_VALUE && LA139_0<=RULE_UNRESTRICTED_NAME)||LA139_0==16||LA139_0==20||LA139_0==31||LA139_0==51||(LA139_0>=62 && LA139_0<=64)||(LA139_0>=69 && LA139_0<=76)) ) {
                        alt139=1;
                    }
                    switch (alt139) {
                        case 1 :
                            // InternalAlf.g:7152:1: (lv_elements_5_0= ruleSequenceElements )
                            {
                            // InternalAlf.g:7152:1: (lv_elements_5_0= ruleSequenceElements )
                            // InternalAlf.g:7153:3: lv_elements_5_0= ruleSequenceElements
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getInstanceCreationOrSequenceConstructionExpressionAccess().getElementsSequenceElementsParserRuleCall_1_0_4_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_74);
                            lv_elements_5_0=ruleSequenceElements();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getInstanceCreationOrSequenceConstructionExpressionRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"elements",
                                      		lv_elements_5_0, 
                                      		"org.eclipse.papyrus.uml.alf.Alf.SequenceElements");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }
                            break;

                    }

                    otherlv_6=(Token)match(input,32,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getInstanceCreationOrSequenceConstructionExpressionAccess().getRightCurlyBracketKeyword_1_0_5());
                          
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalAlf.g:7174:6: ( () ( (lv_constructor_8_0= ruleQualifiedName ) ) ( (lv_tuple_9_0= ruleTuple ) ) )
                    {
                    // InternalAlf.g:7174:6: ( () ( (lv_constructor_8_0= ruleQualifiedName ) ) ( (lv_tuple_9_0= ruleTuple ) ) )
                    // InternalAlf.g:7174:7: () ( (lv_constructor_8_0= ruleQualifiedName ) ) ( (lv_tuple_9_0= ruleTuple ) )
                    {
                    // InternalAlf.g:7174:7: ()
                    // InternalAlf.g:7175:2: 
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElement(
                                  grammarAccess.getInstanceCreationOrSequenceConstructionExpressionAccess().getInstanceCreationExpressionAction_1_1_0(),
                                  current);
                          
                    }

                    }

                    // InternalAlf.g:7183:2: ( (lv_constructor_8_0= ruleQualifiedName ) )
                    // InternalAlf.g:7184:1: (lv_constructor_8_0= ruleQualifiedName )
                    {
                    // InternalAlf.g:7184:1: (lv_constructor_8_0= ruleQualifiedName )
                    // InternalAlf.g:7185:3: lv_constructor_8_0= ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getInstanceCreationOrSequenceConstructionExpressionAccess().getConstructorQualifiedNameParserRuleCall_1_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_42);
                    lv_constructor_8_0=ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getInstanceCreationOrSequenceConstructionExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"constructor",
                              		lv_constructor_8_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.QualifiedName");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // InternalAlf.g:7201:2: ( (lv_tuple_9_0= ruleTuple ) )
                    // InternalAlf.g:7202:1: (lv_tuple_9_0= ruleTuple )
                    {
                    // InternalAlf.g:7202:1: (lv_tuple_9_0= ruleTuple )
                    // InternalAlf.g:7203:3: lv_tuple_9_0= ruleTuple
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getInstanceCreationOrSequenceConstructionExpressionAccess().getTupleTupleParserRuleCall_1_1_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_tuple_9_0=ruleTuple();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getInstanceCreationOrSequenceConstructionExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"tuple",
                              		lv_tuple_9_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.Tuple");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleInstanceCreationOrSequenceConstructionExpression"


    // $ANTLR start "entryRuleLinkOperationExpression"
    // InternalAlf.g:7227:1: entryRuleLinkOperationExpression returns [EObject current=null] : iv_ruleLinkOperationExpression= ruleLinkOperationExpression EOF ;
    public final EObject entryRuleLinkOperationExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLinkOperationExpression = null;


        try {
            // InternalAlf.g:7228:2: (iv_ruleLinkOperationExpression= ruleLinkOperationExpression EOF )
            // InternalAlf.g:7229:2: iv_ruleLinkOperationExpression= ruleLinkOperationExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getLinkOperationExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleLinkOperationExpression=ruleLinkOperationExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleLinkOperationExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLinkOperationExpression"


    // $ANTLR start "ruleLinkOperationExpression"
    // InternalAlf.g:7236:1: ruleLinkOperationExpression returns [EObject current=null] : ( ( (lv_associationName_0_0= rulePotentiallyAmbiguousQualifiedName ) ) otherlv_1= '.' ( (lv_operation_2_0= ruleLinkOperation ) ) ( (lv_tuple_3_0= ruleLinkOperationTuple ) ) ) ;
    public final EObject ruleLinkOperationExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_associationName_0_0 = null;

        AntlrDatatypeRuleToken lv_operation_2_0 = null;

        EObject lv_tuple_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:7239:28: ( ( ( (lv_associationName_0_0= rulePotentiallyAmbiguousQualifiedName ) ) otherlv_1= '.' ( (lv_operation_2_0= ruleLinkOperation ) ) ( (lv_tuple_3_0= ruleLinkOperationTuple ) ) ) )
            // InternalAlf.g:7240:1: ( ( (lv_associationName_0_0= rulePotentiallyAmbiguousQualifiedName ) ) otherlv_1= '.' ( (lv_operation_2_0= ruleLinkOperation ) ) ( (lv_tuple_3_0= ruleLinkOperationTuple ) ) )
            {
            // InternalAlf.g:7240:1: ( ( (lv_associationName_0_0= rulePotentiallyAmbiguousQualifiedName ) ) otherlv_1= '.' ( (lv_operation_2_0= ruleLinkOperation ) ) ( (lv_tuple_3_0= ruleLinkOperationTuple ) ) )
            // InternalAlf.g:7240:2: ( (lv_associationName_0_0= rulePotentiallyAmbiguousQualifiedName ) ) otherlv_1= '.' ( (lv_operation_2_0= ruleLinkOperation ) ) ( (lv_tuple_3_0= ruleLinkOperationTuple ) )
            {
            // InternalAlf.g:7240:2: ( (lv_associationName_0_0= rulePotentiallyAmbiguousQualifiedName ) )
            // InternalAlf.g:7241:1: (lv_associationName_0_0= rulePotentiallyAmbiguousQualifiedName )
            {
            // InternalAlf.g:7241:1: (lv_associationName_0_0= rulePotentiallyAmbiguousQualifiedName )
            // InternalAlf.g:7242:3: lv_associationName_0_0= rulePotentiallyAmbiguousQualifiedName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getLinkOperationExpressionAccess().getAssociationNamePotentiallyAmbiguousQualifiedNameParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_17);
            lv_associationName_0_0=rulePotentiallyAmbiguousQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getLinkOperationExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"associationName",
                      		lv_associationName_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.PotentiallyAmbiguousQualifiedName");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,26,FOLLOW_75); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getLinkOperationExpressionAccess().getFullStopKeyword_1());
                  
            }
            // InternalAlf.g:7262:1: ( (lv_operation_2_0= ruleLinkOperation ) )
            // InternalAlf.g:7263:1: (lv_operation_2_0= ruleLinkOperation )
            {
            // InternalAlf.g:7263:1: (lv_operation_2_0= ruleLinkOperation )
            // InternalAlf.g:7264:3: lv_operation_2_0= ruleLinkOperation
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getLinkOperationExpressionAccess().getOperationLinkOperationParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_42);
            lv_operation_2_0=ruleLinkOperation();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getLinkOperationExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"operation",
                      		lv_operation_2_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.LinkOperation");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:7280:2: ( (lv_tuple_3_0= ruleLinkOperationTuple ) )
            // InternalAlf.g:7281:1: (lv_tuple_3_0= ruleLinkOperationTuple )
            {
            // InternalAlf.g:7281:1: (lv_tuple_3_0= ruleLinkOperationTuple )
            // InternalAlf.g:7282:3: lv_tuple_3_0= ruleLinkOperationTuple
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getLinkOperationExpressionAccess().getTupleLinkOperationTupleParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_tuple_3_0=ruleLinkOperationTuple();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getLinkOperationExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"tuple",
                      		lv_tuple_3_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.LinkOperationTuple");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLinkOperationExpression"


    // $ANTLR start "entryRuleLinkOperation"
    // InternalAlf.g:7306:1: entryRuleLinkOperation returns [String current=null] : iv_ruleLinkOperation= ruleLinkOperation EOF ;
    public final String entryRuleLinkOperation() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleLinkOperation = null;


        try {
            // InternalAlf.g:7307:2: (iv_ruleLinkOperation= ruleLinkOperation EOF )
            // InternalAlf.g:7308:2: iv_ruleLinkOperation= ruleLinkOperation EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getLinkOperationRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleLinkOperation=ruleLinkOperation();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleLinkOperation.getText(); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLinkOperation"


    // $ANTLR start "ruleLinkOperation"
    // InternalAlf.g:7315:1: ruleLinkOperation returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'createLink' | kw= 'destroyLink' | kw= 'clearAssoc' ) ;
    public final AntlrDatatypeRuleToken ruleLinkOperation() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // InternalAlf.g:7318:28: ( (kw= 'createLink' | kw= 'destroyLink' | kw= 'clearAssoc' ) )
            // InternalAlf.g:7319:1: (kw= 'createLink' | kw= 'destroyLink' | kw= 'clearAssoc' )
            {
            // InternalAlf.g:7319:1: (kw= 'createLink' | kw= 'destroyLink' | kw= 'clearAssoc' )
            int alt141=3;
            switch ( input.LA(1) ) {
            case 65:
                {
                alt141=1;
                }
                break;
            case 66:
                {
                alt141=2;
                }
                break;
            case 67:
                {
                alt141=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 141, 0, input);

                throw nvae;
            }

            switch (alt141) {
                case 1 :
                    // InternalAlf.g:7320:2: kw= 'createLink'
                    {
                    kw=(Token)match(input,65,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getLinkOperationAccess().getCreateLinkKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:7327:2: kw= 'destroyLink'
                    {
                    kw=(Token)match(input,66,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getLinkOperationAccess().getDestroyLinkKeyword_1()); 
                          
                    }

                    }
                    break;
                case 3 :
                    // InternalAlf.g:7334:2: kw= 'clearAssoc'
                    {
                    kw=(Token)match(input,67,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getLinkOperationAccess().getClearAssocKeyword_2()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLinkOperation"


    // $ANTLR start "entryRuleLinkOperationTuple"
    // InternalAlf.g:7347:1: entryRuleLinkOperationTuple returns [EObject current=null] : iv_ruleLinkOperationTuple= ruleLinkOperationTuple EOF ;
    public final EObject entryRuleLinkOperationTuple() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLinkOperationTuple = null;


        try {
            // InternalAlf.g:7348:2: (iv_ruleLinkOperationTuple= ruleLinkOperationTuple EOF )
            // InternalAlf.g:7349:2: iv_ruleLinkOperationTuple= ruleLinkOperationTuple EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getLinkOperationTupleRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleLinkOperationTuple=ruleLinkOperationTuple();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleLinkOperationTuple; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLinkOperationTuple"


    // $ANTLR start "ruleLinkOperationTuple"
    // InternalAlf.g:7356:1: ruleLinkOperationTuple returns [EObject current=null] : (otherlv_0= '(' (this_IndexedNamedTupleExpressionList_1= ruleIndexedNamedTupleExpressionList | this_PositionalTupleExpressionList_2= rulePositionalTupleExpressionList ) otherlv_3= ')' ) ;
    public final EObject ruleLinkOperationTuple() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_3=null;
        EObject this_IndexedNamedTupleExpressionList_1 = null;

        EObject this_PositionalTupleExpressionList_2 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:7359:28: ( (otherlv_0= '(' (this_IndexedNamedTupleExpressionList_1= ruleIndexedNamedTupleExpressionList | this_PositionalTupleExpressionList_2= rulePositionalTupleExpressionList ) otherlv_3= ')' ) )
            // InternalAlf.g:7360:1: (otherlv_0= '(' (this_IndexedNamedTupleExpressionList_1= ruleIndexedNamedTupleExpressionList | this_PositionalTupleExpressionList_2= rulePositionalTupleExpressionList ) otherlv_3= ')' )
            {
            // InternalAlf.g:7360:1: (otherlv_0= '(' (this_IndexedNamedTupleExpressionList_1= ruleIndexedNamedTupleExpressionList | this_PositionalTupleExpressionList_2= rulePositionalTupleExpressionList ) otherlv_3= ')' )
            // InternalAlf.g:7360:3: otherlv_0= '(' (this_IndexedNamedTupleExpressionList_1= ruleIndexedNamedTupleExpressionList | this_PositionalTupleExpressionList_2= rulePositionalTupleExpressionList ) otherlv_3= ')'
            {
            otherlv_0=(Token)match(input,16,FOLLOW_70); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getLinkOperationTupleAccess().getLeftParenthesisKeyword_0());
                  
            }
            // InternalAlf.g:7364:1: (this_IndexedNamedTupleExpressionList_1= ruleIndexedNamedTupleExpressionList | this_PositionalTupleExpressionList_2= rulePositionalTupleExpressionList )
            int alt142=2;
            alt142 = dfa142.predict(input);
            switch (alt142) {
                case 1 :
                    // InternalAlf.g:7365:2: this_IndexedNamedTupleExpressionList_1= ruleIndexedNamedTupleExpressionList
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getLinkOperationTupleAccess().getIndexedNamedTupleExpressionListParserRuleCall_1_0()); 
                          
                    }
                    pushFollow(FOLLOW_6);
                    this_IndexedNamedTupleExpressionList_1=ruleIndexedNamedTupleExpressionList();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_IndexedNamedTupleExpressionList_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:7378:2: this_PositionalTupleExpressionList_2= rulePositionalTupleExpressionList
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getLinkOperationTupleAccess().getPositionalTupleExpressionListParserRuleCall_1_1()); 
                          
                    }
                    pushFollow(FOLLOW_6);
                    this_PositionalTupleExpressionList_2=rulePositionalTupleExpressionList();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_PositionalTupleExpressionList_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }

            otherlv_3=(Token)match(input,17,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getLinkOperationTupleAccess().getRightParenthesisKeyword_2());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLinkOperationTuple"


    // $ANTLR start "entryRuleIndexedNamedTupleExpressionList"
    // InternalAlf.g:7401:1: entryRuleIndexedNamedTupleExpressionList returns [EObject current=null] : iv_ruleIndexedNamedTupleExpressionList= ruleIndexedNamedTupleExpressionList EOF ;
    public final EObject entryRuleIndexedNamedTupleExpressionList() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIndexedNamedTupleExpressionList = null;


        try {
            // InternalAlf.g:7402:2: (iv_ruleIndexedNamedTupleExpressionList= ruleIndexedNamedTupleExpressionList EOF )
            // InternalAlf.g:7403:2: iv_ruleIndexedNamedTupleExpressionList= ruleIndexedNamedTupleExpressionList EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getIndexedNamedTupleExpressionListRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleIndexedNamedTupleExpressionList=ruleIndexedNamedTupleExpressionList();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleIndexedNamedTupleExpressionList; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIndexedNamedTupleExpressionList"


    // $ANTLR start "ruleIndexedNamedTupleExpressionList"
    // InternalAlf.g:7410:1: ruleIndexedNamedTupleExpressionList returns [EObject current=null] : ( ( (lv_namedExpression_0_0= ruleIndexedNamedExpression ) ) (otherlv_1= ',' ( (lv_namedExpression_2_0= ruleIndexedNamedExpression ) ) )* ) ;
    public final EObject ruleIndexedNamedTupleExpressionList() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_namedExpression_0_0 = null;

        EObject lv_namedExpression_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:7413:28: ( ( ( (lv_namedExpression_0_0= ruleIndexedNamedExpression ) ) (otherlv_1= ',' ( (lv_namedExpression_2_0= ruleIndexedNamedExpression ) ) )* ) )
            // InternalAlf.g:7414:1: ( ( (lv_namedExpression_0_0= ruleIndexedNamedExpression ) ) (otherlv_1= ',' ( (lv_namedExpression_2_0= ruleIndexedNamedExpression ) ) )* )
            {
            // InternalAlf.g:7414:1: ( ( (lv_namedExpression_0_0= ruleIndexedNamedExpression ) ) (otherlv_1= ',' ( (lv_namedExpression_2_0= ruleIndexedNamedExpression ) ) )* )
            // InternalAlf.g:7414:2: ( (lv_namedExpression_0_0= ruleIndexedNamedExpression ) ) (otherlv_1= ',' ( (lv_namedExpression_2_0= ruleIndexedNamedExpression ) ) )*
            {
            // InternalAlf.g:7414:2: ( (lv_namedExpression_0_0= ruleIndexedNamedExpression ) )
            // InternalAlf.g:7415:1: (lv_namedExpression_0_0= ruleIndexedNamedExpression )
            {
            // InternalAlf.g:7415:1: (lv_namedExpression_0_0= ruleIndexedNamedExpression )
            // InternalAlf.g:7416:3: lv_namedExpression_0_0= ruleIndexedNamedExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getIndexedNamedTupleExpressionListAccess().getNamedExpressionIndexedNamedExpressionParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_7);
            lv_namedExpression_0_0=ruleIndexedNamedExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getIndexedNamedTupleExpressionListRule());
              	        }
                     		add(
                     			current, 
                     			"namedExpression",
                      		lv_namedExpression_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.IndexedNamedExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:7432:2: (otherlv_1= ',' ( (lv_namedExpression_2_0= ruleIndexedNamedExpression ) ) )*
            loop143:
            do {
                int alt143=2;
                int LA143_0 = input.LA(1);

                if ( (LA143_0==18) ) {
                    alt143=1;
                }


                switch (alt143) {
            	case 1 :
            	    // InternalAlf.g:7432:4: otherlv_1= ',' ( (lv_namedExpression_2_0= ruleIndexedNamedExpression ) )
            	    {
            	    otherlv_1=(Token)match(input,18,FOLLOW_4); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_1, grammarAccess.getIndexedNamedTupleExpressionListAccess().getCommaKeyword_1_0());
            	          
            	    }
            	    // InternalAlf.g:7436:1: ( (lv_namedExpression_2_0= ruleIndexedNamedExpression ) )
            	    // InternalAlf.g:7437:1: (lv_namedExpression_2_0= ruleIndexedNamedExpression )
            	    {
            	    // InternalAlf.g:7437:1: (lv_namedExpression_2_0= ruleIndexedNamedExpression )
            	    // InternalAlf.g:7438:3: lv_namedExpression_2_0= ruleIndexedNamedExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getIndexedNamedTupleExpressionListAccess().getNamedExpressionIndexedNamedExpressionParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_7);
            	    lv_namedExpression_2_0=ruleIndexedNamedExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getIndexedNamedTupleExpressionListRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"namedExpression",
            	              		lv_namedExpression_2_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.IndexedNamedExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop143;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIndexedNamedTupleExpressionList"


    // $ANTLR start "entryRuleIndexedNamedExpression"
    // InternalAlf.g:7462:1: entryRuleIndexedNamedExpression returns [EObject current=null] : iv_ruleIndexedNamedExpression= ruleIndexedNamedExpression EOF ;
    public final EObject entryRuleIndexedNamedExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIndexedNamedExpression = null;


        try {
            // InternalAlf.g:7463:2: (iv_ruleIndexedNamedExpression= ruleIndexedNamedExpression EOF )
            // InternalAlf.g:7464:2: iv_ruleIndexedNamedExpression= ruleIndexedNamedExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getIndexedNamedExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleIndexedNamedExpression=ruleIndexedNamedExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleIndexedNamedExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIndexedNamedExpression"


    // $ANTLR start "ruleIndexedNamedExpression"
    // InternalAlf.g:7471:1: ruleIndexedNamedExpression returns [EObject current=null] : ( ( (lv_name_0_0= ruleName ) ) ( (lv_index_1_0= ruleIndex ) )? otherlv_2= '=>' ( (lv_expression_3_0= ruleExpression ) ) ) ;
    public final EObject ruleIndexedNamedExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        AntlrDatatypeRuleToken lv_name_0_0 = null;

        EObject lv_index_1_0 = null;

        EObject lv_expression_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:7474:28: ( ( ( (lv_name_0_0= ruleName ) ) ( (lv_index_1_0= ruleIndex ) )? otherlv_2= '=>' ( (lv_expression_3_0= ruleExpression ) ) ) )
            // InternalAlf.g:7475:1: ( ( (lv_name_0_0= ruleName ) ) ( (lv_index_1_0= ruleIndex ) )? otherlv_2= '=>' ( (lv_expression_3_0= ruleExpression ) ) )
            {
            // InternalAlf.g:7475:1: ( ( (lv_name_0_0= ruleName ) ) ( (lv_index_1_0= ruleIndex ) )? otherlv_2= '=>' ( (lv_expression_3_0= ruleExpression ) ) )
            // InternalAlf.g:7475:2: ( (lv_name_0_0= ruleName ) ) ( (lv_index_1_0= ruleIndex ) )? otherlv_2= '=>' ( (lv_expression_3_0= ruleExpression ) )
            {
            // InternalAlf.g:7475:2: ( (lv_name_0_0= ruleName ) )
            // InternalAlf.g:7476:1: (lv_name_0_0= ruleName )
            {
            // InternalAlf.g:7476:1: (lv_name_0_0= ruleName )
            // InternalAlf.g:7477:3: lv_name_0_0= ruleName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getIndexedNamedExpressionAccess().getNameNameParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_76);
            lv_name_0_0=ruleName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getIndexedNamedExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Name");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:7493:2: ( (lv_index_1_0= ruleIndex ) )?
            int alt144=2;
            int LA144_0 = input.LA(1);

            if ( (LA144_0==52) ) {
                alt144=1;
            }
            switch (alt144) {
                case 1 :
                    // InternalAlf.g:7494:1: (lv_index_1_0= ruleIndex )
                    {
                    // InternalAlf.g:7494:1: (lv_index_1_0= ruleIndex )
                    // InternalAlf.g:7495:3: lv_index_1_0= ruleIndex
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getIndexedNamedExpressionAccess().getIndexIndexParserRuleCall_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_8);
                    lv_index_1_0=ruleIndex();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getIndexedNamedExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"index",
                              		lv_index_1_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.Index");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            otherlv_2=(Token)match(input,19,FOLLOW_69); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getIndexedNamedExpressionAccess().getEqualsSignGreaterThanSignKeyword_2());
                  
            }
            // InternalAlf.g:7515:1: ( (lv_expression_3_0= ruleExpression ) )
            // InternalAlf.g:7516:1: (lv_expression_3_0= ruleExpression )
            {
            // InternalAlf.g:7516:1: (lv_expression_3_0= ruleExpression )
            // InternalAlf.g:7517:3: lv_expression_3_0= ruleExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getIndexedNamedExpressionAccess().getExpressionExpressionParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_expression_3_0=ruleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getIndexedNamedExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"expression",
                      		lv_expression_3_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Expression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIndexedNamedExpression"


    // $ANTLR start "entryRuleClassExtentExpression"
    // InternalAlf.g:7541:1: entryRuleClassExtentExpression returns [EObject current=null] : iv_ruleClassExtentExpression= ruleClassExtentExpression EOF ;
    public final EObject entryRuleClassExtentExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleClassExtentExpression = null;


        try {
            // InternalAlf.g:7542:2: (iv_ruleClassExtentExpression= ruleClassExtentExpression EOF )
            // InternalAlf.g:7543:2: iv_ruleClassExtentExpression= ruleClassExtentExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getClassExtentExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleClassExtentExpression=ruleClassExtentExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleClassExtentExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleClassExtentExpression"


    // $ANTLR start "ruleClassExtentExpression"
    // InternalAlf.g:7550:1: ruleClassExtentExpression returns [EObject current=null] : ( ( (lv_className_0_0= rulePotentiallyAmbiguousQualifiedName ) ) otherlv_1= '.' otherlv_2= 'allInstances' otherlv_3= '(' otherlv_4= ')' ) ;
    public final EObject ruleClassExtentExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        EObject lv_className_0_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:7553:28: ( ( ( (lv_className_0_0= rulePotentiallyAmbiguousQualifiedName ) ) otherlv_1= '.' otherlv_2= 'allInstances' otherlv_3= '(' otherlv_4= ')' ) )
            // InternalAlf.g:7554:1: ( ( (lv_className_0_0= rulePotentiallyAmbiguousQualifiedName ) ) otherlv_1= '.' otherlv_2= 'allInstances' otherlv_3= '(' otherlv_4= ')' )
            {
            // InternalAlf.g:7554:1: ( ( (lv_className_0_0= rulePotentiallyAmbiguousQualifiedName ) ) otherlv_1= '.' otherlv_2= 'allInstances' otherlv_3= '(' otherlv_4= ')' )
            // InternalAlf.g:7554:2: ( (lv_className_0_0= rulePotentiallyAmbiguousQualifiedName ) ) otherlv_1= '.' otherlv_2= 'allInstances' otherlv_3= '(' otherlv_4= ')'
            {
            // InternalAlf.g:7554:2: ( (lv_className_0_0= rulePotentiallyAmbiguousQualifiedName ) )
            // InternalAlf.g:7555:1: (lv_className_0_0= rulePotentiallyAmbiguousQualifiedName )
            {
            // InternalAlf.g:7555:1: (lv_className_0_0= rulePotentiallyAmbiguousQualifiedName )
            // InternalAlf.g:7556:3: lv_className_0_0= rulePotentiallyAmbiguousQualifiedName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getClassExtentExpressionAccess().getClassNamePotentiallyAmbiguousQualifiedNameParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_17);
            lv_className_0_0=rulePotentiallyAmbiguousQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getClassExtentExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"className",
                      		lv_className_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.PotentiallyAmbiguousQualifiedName");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,26,FOLLOW_77); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getClassExtentExpressionAccess().getFullStopKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,68,FOLLOW_42); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getClassExtentExpressionAccess().getAllInstancesKeyword_2());
                  
            }
            otherlv_3=(Token)match(input,16,FOLLOW_6); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getClassExtentExpressionAccess().getLeftParenthesisKeyword_3());
                  
            }
            otherlv_4=(Token)match(input,17,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getClassExtentExpressionAccess().getRightParenthesisKeyword_4());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleClassExtentExpression"


    // $ANTLR start "entryRuleSequenceConstructionExpression"
    // InternalAlf.g:7596:1: entryRuleSequenceConstructionExpression returns [EObject current=null] : iv_ruleSequenceConstructionExpression= ruleSequenceConstructionExpression EOF ;
    public final EObject entryRuleSequenceConstructionExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSequenceConstructionExpression = null;


        try {
            // InternalAlf.g:7597:2: (iv_ruleSequenceConstructionExpression= ruleSequenceConstructionExpression EOF )
            // InternalAlf.g:7598:2: iv_ruleSequenceConstructionExpression= ruleSequenceConstructionExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSequenceConstructionExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSequenceConstructionExpression=ruleSequenceConstructionExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSequenceConstructionExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSequenceConstructionExpression"


    // $ANTLR start "ruleSequenceConstructionExpression"
    // InternalAlf.g:7605:1: ruleSequenceConstructionExpression returns [EObject current=null] : ( ( ( ( (lv_isAny_0_0= 'any' ) ) | ( (lv_typeName_1_0= ruleQualifiedName ) ) ) ( (lv_hasMultiplicity_2_0= ruleMultiplicityIndicator ) )? otherlv_3= '{' ( (lv_elements_4_0= ruleSequenceElements ) )? otherlv_5= '}' ) | ( (lv_hasMultiplicity_6_0= 'null' ) ) ) ;
    public final EObject ruleSequenceConstructionExpression() throws RecognitionException {
        EObject current = null;

        Token lv_isAny_0_0=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token lv_hasMultiplicity_6_0=null;
        EObject lv_typeName_1_0 = null;

        AntlrDatatypeRuleToken lv_hasMultiplicity_2_0 = null;

        EObject lv_elements_4_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:7608:28: ( ( ( ( ( (lv_isAny_0_0= 'any' ) ) | ( (lv_typeName_1_0= ruleQualifiedName ) ) ) ( (lv_hasMultiplicity_2_0= ruleMultiplicityIndicator ) )? otherlv_3= '{' ( (lv_elements_4_0= ruleSequenceElements ) )? otherlv_5= '}' ) | ( (lv_hasMultiplicity_6_0= 'null' ) ) ) )
            // InternalAlf.g:7609:1: ( ( ( ( (lv_isAny_0_0= 'any' ) ) | ( (lv_typeName_1_0= ruleQualifiedName ) ) ) ( (lv_hasMultiplicity_2_0= ruleMultiplicityIndicator ) )? otherlv_3= '{' ( (lv_elements_4_0= ruleSequenceElements ) )? otherlv_5= '}' ) | ( (lv_hasMultiplicity_6_0= 'null' ) ) )
            {
            // InternalAlf.g:7609:1: ( ( ( ( (lv_isAny_0_0= 'any' ) ) | ( (lv_typeName_1_0= ruleQualifiedName ) ) ) ( (lv_hasMultiplicity_2_0= ruleMultiplicityIndicator ) )? otherlv_3= '{' ( (lv_elements_4_0= ruleSequenceElements ) )? otherlv_5= '}' ) | ( (lv_hasMultiplicity_6_0= 'null' ) ) )
            int alt148=2;
            int LA148_0 = input.LA(1);

            if ( ((LA148_0>=RULE_ID && LA148_0<=RULE_UNRESTRICTED_NAME)||LA148_0==51) ) {
                alt148=1;
            }
            else if ( (LA148_0==69) ) {
                alt148=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 148, 0, input);

                throw nvae;
            }
            switch (alt148) {
                case 1 :
                    // InternalAlf.g:7609:2: ( ( ( (lv_isAny_0_0= 'any' ) ) | ( (lv_typeName_1_0= ruleQualifiedName ) ) ) ( (lv_hasMultiplicity_2_0= ruleMultiplicityIndicator ) )? otherlv_3= '{' ( (lv_elements_4_0= ruleSequenceElements ) )? otherlv_5= '}' )
                    {
                    // InternalAlf.g:7609:2: ( ( ( (lv_isAny_0_0= 'any' ) ) | ( (lv_typeName_1_0= ruleQualifiedName ) ) ) ( (lv_hasMultiplicity_2_0= ruleMultiplicityIndicator ) )? otherlv_3= '{' ( (lv_elements_4_0= ruleSequenceElements ) )? otherlv_5= '}' )
                    // InternalAlf.g:7609:3: ( ( (lv_isAny_0_0= 'any' ) ) | ( (lv_typeName_1_0= ruleQualifiedName ) ) ) ( (lv_hasMultiplicity_2_0= ruleMultiplicityIndicator ) )? otherlv_3= '{' ( (lv_elements_4_0= ruleSequenceElements ) )? otherlv_5= '}'
                    {
                    // InternalAlf.g:7609:3: ( ( (lv_isAny_0_0= 'any' ) ) | ( (lv_typeName_1_0= ruleQualifiedName ) ) )
                    int alt145=2;
                    int LA145_0 = input.LA(1);

                    if ( (LA145_0==51) ) {
                        alt145=1;
                    }
                    else if ( ((LA145_0>=RULE_ID && LA145_0<=RULE_UNRESTRICTED_NAME)) ) {
                        alt145=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 145, 0, input);

                        throw nvae;
                    }
                    switch (alt145) {
                        case 1 :
                            // InternalAlf.g:7609:4: ( (lv_isAny_0_0= 'any' ) )
                            {
                            // InternalAlf.g:7609:4: ( (lv_isAny_0_0= 'any' ) )
                            // InternalAlf.g:7610:1: (lv_isAny_0_0= 'any' )
                            {
                            // InternalAlf.g:7610:1: (lv_isAny_0_0= 'any' )
                            // InternalAlf.g:7611:3: lv_isAny_0_0= 'any'
                            {
                            lv_isAny_0_0=(Token)match(input,51,FOLLOW_72); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_isAny_0_0, grammarAccess.getSequenceConstructionExpressionAccess().getIsAnyAnyKeyword_0_0_0_0());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getSequenceConstructionExpressionRule());
                              	        }
                                     		setWithLastConsumed(current, "isAny", true, "any");
                              	    
                            }

                            }


                            }


                            }
                            break;
                        case 2 :
                            // InternalAlf.g:7625:6: ( (lv_typeName_1_0= ruleQualifiedName ) )
                            {
                            // InternalAlf.g:7625:6: ( (lv_typeName_1_0= ruleQualifiedName ) )
                            // InternalAlf.g:7626:1: (lv_typeName_1_0= ruleQualifiedName )
                            {
                            // InternalAlf.g:7626:1: (lv_typeName_1_0= ruleQualifiedName )
                            // InternalAlf.g:7627:3: lv_typeName_1_0= ruleQualifiedName
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getSequenceConstructionExpressionAccess().getTypeNameQualifiedNameParserRuleCall_0_0_1_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_72);
                            lv_typeName_1_0=ruleQualifiedName();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getSequenceConstructionExpressionRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"typeName",
                                      		lv_typeName_1_0, 
                                      		"org.eclipse.papyrus.uml.alf.Alf.QualifiedName");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }
                            break;

                    }

                    // InternalAlf.g:7643:3: ( (lv_hasMultiplicity_2_0= ruleMultiplicityIndicator ) )?
                    int alt146=2;
                    int LA146_0 = input.LA(1);

                    if ( (LA146_0==52) ) {
                        alt146=1;
                    }
                    switch (alt146) {
                        case 1 :
                            // InternalAlf.g:7644:1: (lv_hasMultiplicity_2_0= ruleMultiplicityIndicator )
                            {
                            // InternalAlf.g:7644:1: (lv_hasMultiplicity_2_0= ruleMultiplicityIndicator )
                            // InternalAlf.g:7645:3: lv_hasMultiplicity_2_0= ruleMultiplicityIndicator
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getSequenceConstructionExpressionAccess().getHasMultiplicityMultiplicityIndicatorParserRuleCall_0_1_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_18);
                            lv_hasMultiplicity_2_0=ruleMultiplicityIndicator();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getSequenceConstructionExpressionRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"hasMultiplicity",
                                      		true, 
                                      		"org.eclipse.papyrus.uml.alf.Alf.MultiplicityIndicator");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }
                            break;

                    }

                    otherlv_3=(Token)match(input,31,FOLLOW_73); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getSequenceConstructionExpressionAccess().getLeftCurlyBracketKeyword_0_2());
                          
                    }
                    // InternalAlf.g:7665:1: ( (lv_elements_4_0= ruleSequenceElements ) )?
                    int alt147=2;
                    int LA147_0 = input.LA(1);

                    if ( ((LA147_0>=RULE_BOOLEAN_VALUE && LA147_0<=RULE_UNRESTRICTED_NAME)||LA147_0==16||LA147_0==20||LA147_0==31||LA147_0==51||(LA147_0>=62 && LA147_0<=64)||(LA147_0>=69 && LA147_0<=76)) ) {
                        alt147=1;
                    }
                    switch (alt147) {
                        case 1 :
                            // InternalAlf.g:7666:1: (lv_elements_4_0= ruleSequenceElements )
                            {
                            // InternalAlf.g:7666:1: (lv_elements_4_0= ruleSequenceElements )
                            // InternalAlf.g:7667:3: lv_elements_4_0= ruleSequenceElements
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getSequenceConstructionExpressionAccess().getElementsSequenceElementsParserRuleCall_0_3_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_74);
                            lv_elements_4_0=ruleSequenceElements();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getSequenceConstructionExpressionRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"elements",
                                      		lv_elements_4_0, 
                                      		"org.eclipse.papyrus.uml.alf.Alf.SequenceElements");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }
                            break;

                    }

                    otherlv_5=(Token)match(input,32,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getSequenceConstructionExpressionAccess().getRightCurlyBracketKeyword_0_4());
                          
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalAlf.g:7688:6: ( (lv_hasMultiplicity_6_0= 'null' ) )
                    {
                    // InternalAlf.g:7688:6: ( (lv_hasMultiplicity_6_0= 'null' ) )
                    // InternalAlf.g:7689:1: (lv_hasMultiplicity_6_0= 'null' )
                    {
                    // InternalAlf.g:7689:1: (lv_hasMultiplicity_6_0= 'null' )
                    // InternalAlf.g:7690:3: lv_hasMultiplicity_6_0= 'null'
                    {
                    lv_hasMultiplicity_6_0=(Token)match(input,69,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_hasMultiplicity_6_0, grammarAccess.getSequenceConstructionExpressionAccess().getHasMultiplicityNullKeyword_1_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getSequenceConstructionExpressionRule());
                      	        }
                             		setWithLastConsumed(current, "hasMultiplicity", true, "null");
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSequenceConstructionExpression"


    // $ANTLR start "entryRuleMultiplicityIndicator"
    // InternalAlf.g:7711:1: entryRuleMultiplicityIndicator returns [String current=null] : iv_ruleMultiplicityIndicator= ruleMultiplicityIndicator EOF ;
    public final String entryRuleMultiplicityIndicator() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleMultiplicityIndicator = null;


        try {
            // InternalAlf.g:7712:2: (iv_ruleMultiplicityIndicator= ruleMultiplicityIndicator EOF )
            // InternalAlf.g:7713:2: iv_ruleMultiplicityIndicator= ruleMultiplicityIndicator EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getMultiplicityIndicatorRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleMultiplicityIndicator=ruleMultiplicityIndicator();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleMultiplicityIndicator.getText(); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleMultiplicityIndicator"


    // $ANTLR start "ruleMultiplicityIndicator"
    // InternalAlf.g:7720:1: ruleMultiplicityIndicator returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '[' kw= ']' ) ;
    public final AntlrDatatypeRuleToken ruleMultiplicityIndicator() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // InternalAlf.g:7723:28: ( (kw= '[' kw= ']' ) )
            // InternalAlf.g:7724:1: (kw= '[' kw= ']' )
            {
            // InternalAlf.g:7724:1: (kw= '[' kw= ']' )
            // InternalAlf.g:7725:2: kw= '[' kw= ']'
            {
            kw=(Token)match(input,52,FOLLOW_56); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getMultiplicityIndicatorAccess().getLeftSquareBracketKeyword_0()); 
                  
            }
            kw=(Token)match(input,53,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getMultiplicityIndicatorAccess().getRightSquareBracketKeyword_1()); 
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleMultiplicityIndicator"


    // $ANTLR start "entryRuleSequenceElements"
    // InternalAlf.g:7744:1: entryRuleSequenceElements returns [EObject current=null] : iv_ruleSequenceElements= ruleSequenceElements EOF ;
    public final EObject entryRuleSequenceElements() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSequenceElements = null;


        try {
            // InternalAlf.g:7745:2: (iv_ruleSequenceElements= ruleSequenceElements EOF )
            // InternalAlf.g:7746:2: iv_ruleSequenceElements= ruleSequenceElements EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSequenceElementsRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSequenceElements=ruleSequenceElements();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSequenceElements; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSequenceElements"


    // $ANTLR start "ruleSequenceElements"
    // InternalAlf.g:7753:1: ruleSequenceElements returns [EObject current=null] : (this_SequenceRange_0= ruleSequenceRange | this_SequenceExpressionList_1= ruleSequenceExpressionList ) ;
    public final EObject ruleSequenceElements() throws RecognitionException {
        EObject current = null;

        EObject this_SequenceRange_0 = null;

        EObject this_SequenceExpressionList_1 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:7756:28: ( (this_SequenceRange_0= ruleSequenceRange | this_SequenceExpressionList_1= ruleSequenceExpressionList ) )
            // InternalAlf.g:7757:1: (this_SequenceRange_0= ruleSequenceRange | this_SequenceExpressionList_1= ruleSequenceExpressionList )
            {
            // InternalAlf.g:7757:1: (this_SequenceRange_0= ruleSequenceRange | this_SequenceExpressionList_1= ruleSequenceExpressionList )
            int alt149=2;
            alt149 = dfa149.predict(input);
            switch (alt149) {
                case 1 :
                    // InternalAlf.g:7758:2: this_SequenceRange_0= ruleSequenceRange
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSequenceElementsAccess().getSequenceRangeParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_SequenceRange_0=ruleSequenceRange();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_SequenceRange_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:7771:2: this_SequenceExpressionList_1= ruleSequenceExpressionList
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSequenceElementsAccess().getSequenceExpressionListParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_SequenceExpressionList_1=ruleSequenceExpressionList();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_SequenceExpressionList_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSequenceElements"


    // $ANTLR start "entryRuleSequenceRange"
    // InternalAlf.g:7790:1: entryRuleSequenceRange returns [EObject current=null] : iv_ruleSequenceRange= ruleSequenceRange EOF ;
    public final EObject entryRuleSequenceRange() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSequenceRange = null;


        try {
            // InternalAlf.g:7791:2: (iv_ruleSequenceRange= ruleSequenceRange EOF )
            // InternalAlf.g:7792:2: iv_ruleSequenceRange= ruleSequenceRange EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSequenceRangeRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSequenceRange=ruleSequenceRange();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSequenceRange; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSequenceRange"


    // $ANTLR start "ruleSequenceRange"
    // InternalAlf.g:7799:1: ruleSequenceRange returns [EObject current=null] : ( ( (lv_rangeLower_0_0= ruleExpression ) ) otherlv_1= '..' ( (lv_rangeUpper_2_0= ruleExpression ) ) ) ;
    public final EObject ruleSequenceRange() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_rangeLower_0_0 = null;

        EObject lv_rangeUpper_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:7802:28: ( ( ( (lv_rangeLower_0_0= ruleExpression ) ) otherlv_1= '..' ( (lv_rangeUpper_2_0= ruleExpression ) ) ) )
            // InternalAlf.g:7803:1: ( ( (lv_rangeLower_0_0= ruleExpression ) ) otherlv_1= '..' ( (lv_rangeUpper_2_0= ruleExpression ) ) )
            {
            // InternalAlf.g:7803:1: ( ( (lv_rangeLower_0_0= ruleExpression ) ) otherlv_1= '..' ( (lv_rangeUpper_2_0= ruleExpression ) ) )
            // InternalAlf.g:7803:2: ( (lv_rangeLower_0_0= ruleExpression ) ) otherlv_1= '..' ( (lv_rangeUpper_2_0= ruleExpression ) )
            {
            // InternalAlf.g:7803:2: ( (lv_rangeLower_0_0= ruleExpression ) )
            // InternalAlf.g:7804:1: (lv_rangeLower_0_0= ruleExpression )
            {
            // InternalAlf.g:7804:1: (lv_rangeLower_0_0= ruleExpression )
            // InternalAlf.g:7805:3: lv_rangeLower_0_0= ruleExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getSequenceRangeAccess().getRangeLowerExpressionParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_55);
            lv_rangeLower_0_0=ruleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getSequenceRangeRule());
              	        }
                     		set(
                     			current, 
                     			"rangeLower",
                      		lv_rangeLower_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Expression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,54,FOLLOW_69); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getSequenceRangeAccess().getFullStopFullStopKeyword_1());
                  
            }
            // InternalAlf.g:7825:1: ( (lv_rangeUpper_2_0= ruleExpression ) )
            // InternalAlf.g:7826:1: (lv_rangeUpper_2_0= ruleExpression )
            {
            // InternalAlf.g:7826:1: (lv_rangeUpper_2_0= ruleExpression )
            // InternalAlf.g:7827:3: lv_rangeUpper_2_0= ruleExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getSequenceRangeAccess().getRangeUpperExpressionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_rangeUpper_2_0=ruleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getSequenceRangeRule());
              	        }
                     		set(
                     			current, 
                     			"rangeUpper",
                      		lv_rangeUpper_2_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Expression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSequenceRange"


    // $ANTLR start "entryRuleSequenceExpressionList"
    // InternalAlf.g:7851:1: entryRuleSequenceExpressionList returns [EObject current=null] : iv_ruleSequenceExpressionList= ruleSequenceExpressionList EOF ;
    public final EObject entryRuleSequenceExpressionList() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSequenceExpressionList = null;


        try {
            // InternalAlf.g:7852:2: (iv_ruleSequenceExpressionList= ruleSequenceExpressionList EOF )
            // InternalAlf.g:7853:2: iv_ruleSequenceExpressionList= ruleSequenceExpressionList EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSequenceExpressionListRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSequenceExpressionList=ruleSequenceExpressionList();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSequenceExpressionList; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSequenceExpressionList"


    // $ANTLR start "ruleSequenceExpressionList"
    // InternalAlf.g:7860:1: ruleSequenceExpressionList returns [EObject current=null] : ( ( (lv_element_0_0= ruleSequenceElement ) ) (otherlv_1= ',' ( (lv_element_2_0= ruleSequenceElement ) ) )* (otherlv_3= ',' )? ) ;
    public final EObject ruleSequenceExpressionList() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_element_0_0 = null;

        EObject lv_element_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:7863:28: ( ( ( (lv_element_0_0= ruleSequenceElement ) ) (otherlv_1= ',' ( (lv_element_2_0= ruleSequenceElement ) ) )* (otherlv_3= ',' )? ) )
            // InternalAlf.g:7864:1: ( ( (lv_element_0_0= ruleSequenceElement ) ) (otherlv_1= ',' ( (lv_element_2_0= ruleSequenceElement ) ) )* (otherlv_3= ',' )? )
            {
            // InternalAlf.g:7864:1: ( ( (lv_element_0_0= ruleSequenceElement ) ) (otherlv_1= ',' ( (lv_element_2_0= ruleSequenceElement ) ) )* (otherlv_3= ',' )? )
            // InternalAlf.g:7864:2: ( (lv_element_0_0= ruleSequenceElement ) ) (otherlv_1= ',' ( (lv_element_2_0= ruleSequenceElement ) ) )* (otherlv_3= ',' )?
            {
            // InternalAlf.g:7864:2: ( (lv_element_0_0= ruleSequenceElement ) )
            // InternalAlf.g:7865:1: (lv_element_0_0= ruleSequenceElement )
            {
            // InternalAlf.g:7865:1: (lv_element_0_0= ruleSequenceElement )
            // InternalAlf.g:7866:3: lv_element_0_0= ruleSequenceElement
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getSequenceExpressionListAccess().getElementSequenceElementParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_7);
            lv_element_0_0=ruleSequenceElement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getSequenceExpressionListRule());
              	        }
                     		add(
                     			current, 
                     			"element",
                      		lv_element_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.SequenceElement");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:7882:2: (otherlv_1= ',' ( (lv_element_2_0= ruleSequenceElement ) ) )*
            loop150:
            do {
                int alt150=2;
                int LA150_0 = input.LA(1);

                if ( (LA150_0==18) ) {
                    int LA150_1 = input.LA(2);

                    if ( ((LA150_1>=RULE_BOOLEAN_VALUE && LA150_1<=RULE_UNRESTRICTED_NAME)||LA150_1==16||LA150_1==20||LA150_1==31||LA150_1==51||(LA150_1>=62 && LA150_1<=64)||(LA150_1>=69 && LA150_1<=76)) ) {
                        alt150=1;
                    }


                }


                switch (alt150) {
            	case 1 :
            	    // InternalAlf.g:7882:4: otherlv_1= ',' ( (lv_element_2_0= ruleSequenceElement ) )
            	    {
            	    otherlv_1=(Token)match(input,18,FOLLOW_50); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_1, grammarAccess.getSequenceExpressionListAccess().getCommaKeyword_1_0());
            	          
            	    }
            	    // InternalAlf.g:7886:1: ( (lv_element_2_0= ruleSequenceElement ) )
            	    // InternalAlf.g:7887:1: (lv_element_2_0= ruleSequenceElement )
            	    {
            	    // InternalAlf.g:7887:1: (lv_element_2_0= ruleSequenceElement )
            	    // InternalAlf.g:7888:3: lv_element_2_0= ruleSequenceElement
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getSequenceExpressionListAccess().getElementSequenceElementParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_7);
            	    lv_element_2_0=ruleSequenceElement();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getSequenceExpressionListRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"element",
            	              		lv_element_2_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.SequenceElement");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop150;
                }
            } while (true);

            // InternalAlf.g:7904:4: (otherlv_3= ',' )?
            int alt151=2;
            int LA151_0 = input.LA(1);

            if ( (LA151_0==18) ) {
                alt151=1;
            }
            switch (alt151) {
                case 1 :
                    // InternalAlf.g:7904:6: otherlv_3= ','
                    {
                    otherlv_3=(Token)match(input,18,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getSequenceExpressionListAccess().getCommaKeyword_2());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSequenceExpressionList"


    // $ANTLR start "entryRuleSequenceElement"
    // InternalAlf.g:7916:1: entryRuleSequenceElement returns [EObject current=null] : iv_ruleSequenceElement= ruleSequenceElement EOF ;
    public final EObject entryRuleSequenceElement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSequenceElement = null;


        try {
            // InternalAlf.g:7917:2: (iv_ruleSequenceElement= ruleSequenceElement EOF )
            // InternalAlf.g:7918:2: iv_ruleSequenceElement= ruleSequenceElement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSequenceElementRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSequenceElement=ruleSequenceElement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSequenceElement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSequenceElement"


    // $ANTLR start "ruleSequenceElement"
    // InternalAlf.g:7925:1: ruleSequenceElement returns [EObject current=null] : (this_Expression_0= ruleExpression | this_SequenceInitializationExpression_1= ruleSequenceInitializationExpression ) ;
    public final EObject ruleSequenceElement() throws RecognitionException {
        EObject current = null;

        EObject this_Expression_0 = null;

        EObject this_SequenceInitializationExpression_1 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:7928:28: ( (this_Expression_0= ruleExpression | this_SequenceInitializationExpression_1= ruleSequenceInitializationExpression ) )
            // InternalAlf.g:7929:1: (this_Expression_0= ruleExpression | this_SequenceInitializationExpression_1= ruleSequenceInitializationExpression )
            {
            // InternalAlf.g:7929:1: (this_Expression_0= ruleExpression | this_SequenceInitializationExpression_1= ruleSequenceInitializationExpression )
            int alt152=2;
            switch ( input.LA(1) ) {
            case RULE_BOOLEAN_VALUE:
            case RULE_NATURAL_VALUE:
            case RULE_STRING:
            case RULE_ID:
            case RULE_UNRESTRICTED_NAME:
            case 16:
            case 20:
            case 51:
            case 62:
            case 63:
            case 69:
            case 70:
            case 71:
            case 72:
            case 73:
            case 74:
            case 75:
            case 76:
                {
                alt152=1;
                }
                break;
            case 64:
                {
                int LA152_2 = input.LA(2);

                if ( ((LA152_2>=RULE_ID && LA152_2<=RULE_UNRESTRICTED_NAME)) ) {
                    alt152=1;
                }
                else if ( (LA152_2==31) ) {
                    alt152=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 152, 2, input);

                    throw nvae;
                }
                }
                break;
            case 31:
                {
                alt152=2;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 152, 0, input);

                throw nvae;
            }

            switch (alt152) {
                case 1 :
                    // InternalAlf.g:7930:2: this_Expression_0= ruleExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSequenceElementAccess().getExpressionParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_Expression_0=ruleExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_Expression_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:7943:2: this_SequenceInitializationExpression_1= ruleSequenceInitializationExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSequenceElementAccess().getSequenceInitializationExpressionParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_SequenceInitializationExpression_1=ruleSequenceInitializationExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_SequenceInitializationExpression_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSequenceElement"


    // $ANTLR start "entryRuleSequenceInitializationExpression"
    // InternalAlf.g:7962:1: entryRuleSequenceInitializationExpression returns [EObject current=null] : iv_ruleSequenceInitializationExpression= ruleSequenceInitializationExpression EOF ;
    public final EObject entryRuleSequenceInitializationExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSequenceInitializationExpression = null;


        try {
            // InternalAlf.g:7963:2: (iv_ruleSequenceInitializationExpression= ruleSequenceInitializationExpression EOF )
            // InternalAlf.g:7964:2: iv_ruleSequenceInitializationExpression= ruleSequenceInitializationExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSequenceInitializationExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSequenceInitializationExpression=ruleSequenceInitializationExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSequenceInitializationExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSequenceInitializationExpression"


    // $ANTLR start "ruleSequenceInitializationExpression"
    // InternalAlf.g:7971:1: ruleSequenceInitializationExpression returns [EObject current=null] : ( (otherlv_0= 'new' )? otherlv_1= '{' ( (lv_elements_2_0= ruleSequenceElements ) ) otherlv_3= '}' ) ;
    public final EObject ruleSequenceInitializationExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_elements_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:7974:28: ( ( (otherlv_0= 'new' )? otherlv_1= '{' ( (lv_elements_2_0= ruleSequenceElements ) ) otherlv_3= '}' ) )
            // InternalAlf.g:7975:1: ( (otherlv_0= 'new' )? otherlv_1= '{' ( (lv_elements_2_0= ruleSequenceElements ) ) otherlv_3= '}' )
            {
            // InternalAlf.g:7975:1: ( (otherlv_0= 'new' )? otherlv_1= '{' ( (lv_elements_2_0= ruleSequenceElements ) ) otherlv_3= '}' )
            // InternalAlf.g:7975:2: (otherlv_0= 'new' )? otherlv_1= '{' ( (lv_elements_2_0= ruleSequenceElements ) ) otherlv_3= '}'
            {
            // InternalAlf.g:7975:2: (otherlv_0= 'new' )?
            int alt153=2;
            int LA153_0 = input.LA(1);

            if ( (LA153_0==64) ) {
                alt153=1;
            }
            switch (alt153) {
                case 1 :
                    // InternalAlf.g:7975:4: otherlv_0= 'new'
                    {
                    otherlv_0=(Token)match(input,64,FOLLOW_18); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_0, grammarAccess.getSequenceInitializationExpressionAccess().getNewKeyword_0());
                          
                    }

                    }
                    break;

            }

            otherlv_1=(Token)match(input,31,FOLLOW_50); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getSequenceInitializationExpressionAccess().getLeftCurlyBracketKeyword_1());
                  
            }
            // InternalAlf.g:7983:1: ( (lv_elements_2_0= ruleSequenceElements ) )
            // InternalAlf.g:7984:1: (lv_elements_2_0= ruleSequenceElements )
            {
            // InternalAlf.g:7984:1: (lv_elements_2_0= ruleSequenceElements )
            // InternalAlf.g:7985:3: lv_elements_2_0= ruleSequenceElements
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getSequenceInitializationExpressionAccess().getElementsSequenceElementsParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_74);
            lv_elements_2_0=ruleSequenceElements();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getSequenceInitializationExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"elements",
                      		lv_elements_2_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.SequenceElements");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_3=(Token)match(input,32,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getSequenceInitializationExpressionAccess().getRightCurlyBracketKeyword_3());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSequenceInitializationExpression"


    // $ANTLR start "entryRuleIndex"
    // InternalAlf.g:8013:1: entryRuleIndex returns [EObject current=null] : iv_ruleIndex= ruleIndex EOF ;
    public final EObject entryRuleIndex() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIndex = null;


        try {
            // InternalAlf.g:8014:2: (iv_ruleIndex= ruleIndex EOF )
            // InternalAlf.g:8015:2: iv_ruleIndex= ruleIndex EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getIndexRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleIndex=ruleIndex();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleIndex; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIndex"


    // $ANTLR start "ruleIndex"
    // InternalAlf.g:8022:1: ruleIndex returns [EObject current=null] : (otherlv_0= '[' this_Expression_1= ruleExpression otherlv_2= ']' ) ;
    public final EObject ruleIndex() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject this_Expression_1 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:8025:28: ( (otherlv_0= '[' this_Expression_1= ruleExpression otherlv_2= ']' ) )
            // InternalAlf.g:8026:1: (otherlv_0= '[' this_Expression_1= ruleExpression otherlv_2= ']' )
            {
            // InternalAlf.g:8026:1: (otherlv_0= '[' this_Expression_1= ruleExpression otherlv_2= ']' )
            // InternalAlf.g:8026:3: otherlv_0= '[' this_Expression_1= ruleExpression otherlv_2= ']'
            {
            otherlv_0=(Token)match(input,52,FOLLOW_69); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getIndexAccess().getLeftSquareBracketKeyword_0());
                  
            }
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getIndexAccess().getExpressionParserRuleCall_1()); 
                  
            }
            pushFollow(FOLLOW_56);
            this_Expression_1=ruleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_Expression_1; 
                      afterParserOrEnumRuleCall();
                  
            }
            otherlv_2=(Token)match(input,53,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getIndexAccess().getRightSquareBracketKeyword_2());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIndex"


    // $ANTLR start "entryRuleSequenceOperationOrReductionOrExpansionExpression"
    // InternalAlf.g:8054:1: entryRuleSequenceOperationOrReductionOrExpansionExpression returns [EObject current=null] : iv_ruleSequenceOperationOrReductionOrExpansionExpression= ruleSequenceOperationOrReductionOrExpansionExpression EOF ;
    public final EObject entryRuleSequenceOperationOrReductionOrExpansionExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSequenceOperationOrReductionOrExpansionExpression = null;


        try {
            // InternalAlf.g:8055:2: (iv_ruleSequenceOperationOrReductionOrExpansionExpression= ruleSequenceOperationOrReductionOrExpansionExpression EOF )
            // InternalAlf.g:8056:2: iv_ruleSequenceOperationOrReductionOrExpansionExpression= ruleSequenceOperationOrReductionOrExpansionExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSequenceOperationOrReductionOrExpansionExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSequenceOperationOrReductionOrExpansionExpression=ruleSequenceOperationOrReductionOrExpansionExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSequenceOperationOrReductionOrExpansionExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSequenceOperationOrReductionOrExpansionExpression"


    // $ANTLR start "ruleSequenceOperationOrReductionOrExpansionExpression"
    // InternalAlf.g:8063:1: ruleSequenceOperationOrReductionOrExpansionExpression returns [EObject current=null] : ( () ( (lv_name_1_0= rulePotentiallyAmbiguousQualifiedName ) ) otherlv_2= '->' ( ( () ( (lv_operation_4_0= ruleQualifiedName ) ) ( (lv_tuple_5_0= ruleTuple ) ) ) | ( () otherlv_7= 'reduce' ( (lv_isOrdered_8_0= 'ordered' ) )? ( (lv_behaviorName_9_0= ruleQualifiedName ) ) ) | ( () ( (lv_operation_11_0= RULE_ID ) ) ( (lv_variable_12_0= ruleName ) ) otherlv_13= '(' ( (lv_argument_14_0= ruleExpression ) ) otherlv_15= ')' ) ) ) ;
    public final EObject ruleSequenceOperationOrReductionOrExpansionExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        Token otherlv_7=null;
        Token lv_isOrdered_8_0=null;
        Token lv_operation_11_0=null;
        Token otherlv_13=null;
        Token otherlv_15=null;
        EObject lv_name_1_0 = null;

        EObject lv_operation_4_0 = null;

        EObject lv_tuple_5_0 = null;

        EObject lv_behaviorName_9_0 = null;

        AntlrDatatypeRuleToken lv_variable_12_0 = null;

        EObject lv_argument_14_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:8066:28: ( ( () ( (lv_name_1_0= rulePotentiallyAmbiguousQualifiedName ) ) otherlv_2= '->' ( ( () ( (lv_operation_4_0= ruleQualifiedName ) ) ( (lv_tuple_5_0= ruleTuple ) ) ) | ( () otherlv_7= 'reduce' ( (lv_isOrdered_8_0= 'ordered' ) )? ( (lv_behaviorName_9_0= ruleQualifiedName ) ) ) | ( () ( (lv_operation_11_0= RULE_ID ) ) ( (lv_variable_12_0= ruleName ) ) otherlv_13= '(' ( (lv_argument_14_0= ruleExpression ) ) otherlv_15= ')' ) ) ) )
            // InternalAlf.g:8067:1: ( () ( (lv_name_1_0= rulePotentiallyAmbiguousQualifiedName ) ) otherlv_2= '->' ( ( () ( (lv_operation_4_0= ruleQualifiedName ) ) ( (lv_tuple_5_0= ruleTuple ) ) ) | ( () otherlv_7= 'reduce' ( (lv_isOrdered_8_0= 'ordered' ) )? ( (lv_behaviorName_9_0= ruleQualifiedName ) ) ) | ( () ( (lv_operation_11_0= RULE_ID ) ) ( (lv_variable_12_0= ruleName ) ) otherlv_13= '(' ( (lv_argument_14_0= ruleExpression ) ) otherlv_15= ')' ) ) )
            {
            // InternalAlf.g:8067:1: ( () ( (lv_name_1_0= rulePotentiallyAmbiguousQualifiedName ) ) otherlv_2= '->' ( ( () ( (lv_operation_4_0= ruleQualifiedName ) ) ( (lv_tuple_5_0= ruleTuple ) ) ) | ( () otherlv_7= 'reduce' ( (lv_isOrdered_8_0= 'ordered' ) )? ( (lv_behaviorName_9_0= ruleQualifiedName ) ) ) | ( () ( (lv_operation_11_0= RULE_ID ) ) ( (lv_variable_12_0= ruleName ) ) otherlv_13= '(' ( (lv_argument_14_0= ruleExpression ) ) otherlv_15= ')' ) ) )
            // InternalAlf.g:8067:2: () ( (lv_name_1_0= rulePotentiallyAmbiguousQualifiedName ) ) otherlv_2= '->' ( ( () ( (lv_operation_4_0= ruleQualifiedName ) ) ( (lv_tuple_5_0= ruleTuple ) ) ) | ( () otherlv_7= 'reduce' ( (lv_isOrdered_8_0= 'ordered' ) )? ( (lv_behaviorName_9_0= ruleQualifiedName ) ) ) | ( () ( (lv_operation_11_0= RULE_ID ) ) ( (lv_variable_12_0= ruleName ) ) otherlv_13= '(' ( (lv_argument_14_0= ruleExpression ) ) otherlv_15= ')' ) )
            {
            // InternalAlf.g:8067:2: ()
            // InternalAlf.g:8068:2: 
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getSequenceOperationOrReductionOrExpansionExpressionAccess().getExtentOrExpressionAction_0(),
                          current);
                  
            }

            }

            // InternalAlf.g:8076:2: ( (lv_name_1_0= rulePotentiallyAmbiguousQualifiedName ) )
            // InternalAlf.g:8077:1: (lv_name_1_0= rulePotentiallyAmbiguousQualifiedName )
            {
            // InternalAlf.g:8077:1: (lv_name_1_0= rulePotentiallyAmbiguousQualifiedName )
            // InternalAlf.g:8078:3: lv_name_1_0= rulePotentiallyAmbiguousQualifiedName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getSequenceOperationOrReductionOrExpansionExpressionAccess().getNamePotentiallyAmbiguousQualifiedNameParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_78);
            lv_name_1_0=rulePotentiallyAmbiguousQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getSequenceOperationOrReductionOrExpansionExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.PotentiallyAmbiguousQualifiedName");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,60,FOLLOW_67); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getSequenceOperationOrReductionOrExpansionExpressionAccess().getHyphenMinusGreaterThanSignKeyword_2());
                  
            }
            // InternalAlf.g:8098:1: ( ( () ( (lv_operation_4_0= ruleQualifiedName ) ) ( (lv_tuple_5_0= ruleTuple ) ) ) | ( () otherlv_7= 'reduce' ( (lv_isOrdered_8_0= 'ordered' ) )? ( (lv_behaviorName_9_0= ruleQualifiedName ) ) ) | ( () ( (lv_operation_11_0= RULE_ID ) ) ( (lv_variable_12_0= ruleName ) ) otherlv_13= '(' ( (lv_argument_14_0= ruleExpression ) ) otherlv_15= ')' ) )
            int alt155=3;
            switch ( input.LA(1) ) {
            case RULE_ID:
                {
                int LA155_1 = input.LA(2);

                if ( (LA155_1==16||(LA155_1>=25 && LA155_1<=26)||LA155_1==36) ) {
                    alt155=1;
                }
                else if ( ((LA155_1>=RULE_ID && LA155_1<=RULE_UNRESTRICTED_NAME)) ) {
                    alt155=3;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 155, 1, input);

                    throw nvae;
                }
                }
                break;
            case RULE_UNRESTRICTED_NAME:
                {
                alt155=1;
                }
                break;
            case 61:
                {
                alt155=2;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 155, 0, input);

                throw nvae;
            }

            switch (alt155) {
                case 1 :
                    // InternalAlf.g:8098:2: ( () ( (lv_operation_4_0= ruleQualifiedName ) ) ( (lv_tuple_5_0= ruleTuple ) ) )
                    {
                    // InternalAlf.g:8098:2: ( () ( (lv_operation_4_0= ruleQualifiedName ) ) ( (lv_tuple_5_0= ruleTuple ) ) )
                    // InternalAlf.g:8098:3: () ( (lv_operation_4_0= ruleQualifiedName ) ) ( (lv_tuple_5_0= ruleTuple ) )
                    {
                    // InternalAlf.g:8098:3: ()
                    // InternalAlf.g:8099:2: 
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElementAndSet(
                                  grammarAccess.getSequenceOperationOrReductionOrExpansionExpressionAccess().getSequenceOperationExpressionPrimaryAction_3_0_0(),
                                  current);
                          
                    }

                    }

                    // InternalAlf.g:8107:2: ( (lv_operation_4_0= ruleQualifiedName ) )
                    // InternalAlf.g:8108:1: (lv_operation_4_0= ruleQualifiedName )
                    {
                    // InternalAlf.g:8108:1: (lv_operation_4_0= ruleQualifiedName )
                    // InternalAlf.g:8109:3: lv_operation_4_0= ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSequenceOperationOrReductionOrExpansionExpressionAccess().getOperationQualifiedNameParserRuleCall_3_0_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_42);
                    lv_operation_4_0=ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSequenceOperationOrReductionOrExpansionExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"operation",
                              		lv_operation_4_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.QualifiedName");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // InternalAlf.g:8125:2: ( (lv_tuple_5_0= ruleTuple ) )
                    // InternalAlf.g:8126:1: (lv_tuple_5_0= ruleTuple )
                    {
                    // InternalAlf.g:8126:1: (lv_tuple_5_0= ruleTuple )
                    // InternalAlf.g:8127:3: lv_tuple_5_0= ruleTuple
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSequenceOperationOrReductionOrExpansionExpressionAccess().getTupleTupleParserRuleCall_3_0_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_tuple_5_0=ruleTuple();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSequenceOperationOrReductionOrExpansionExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"tuple",
                              		lv_tuple_5_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.Tuple");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalAlf.g:8144:6: ( () otherlv_7= 'reduce' ( (lv_isOrdered_8_0= 'ordered' ) )? ( (lv_behaviorName_9_0= ruleQualifiedName ) ) )
                    {
                    // InternalAlf.g:8144:6: ( () otherlv_7= 'reduce' ( (lv_isOrdered_8_0= 'ordered' ) )? ( (lv_behaviorName_9_0= ruleQualifiedName ) ) )
                    // InternalAlf.g:8144:7: () otherlv_7= 'reduce' ( (lv_isOrdered_8_0= 'ordered' ) )? ( (lv_behaviorName_9_0= ruleQualifiedName ) )
                    {
                    // InternalAlf.g:8144:7: ()
                    // InternalAlf.g:8145:2: 
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElementAndSet(
                                  grammarAccess.getSequenceOperationOrReductionOrExpansionExpressionAccess().getSequenceReductionExpressionPrimaryAction_3_1_0(),
                                  current);
                          
                    }

                    }

                    otherlv_7=(Token)match(input,61,FOLLOW_68); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_7, grammarAccess.getSequenceOperationOrReductionOrExpansionExpressionAccess().getReduceKeyword_3_1_1());
                          
                    }
                    // InternalAlf.g:8157:1: ( (lv_isOrdered_8_0= 'ordered' ) )?
                    int alt154=2;
                    int LA154_0 = input.LA(1);

                    if ( (LA154_0==55) ) {
                        alt154=1;
                    }
                    switch (alt154) {
                        case 1 :
                            // InternalAlf.g:8158:1: (lv_isOrdered_8_0= 'ordered' )
                            {
                            // InternalAlf.g:8158:1: (lv_isOrdered_8_0= 'ordered' )
                            // InternalAlf.g:8159:3: lv_isOrdered_8_0= 'ordered'
                            {
                            lv_isOrdered_8_0=(Token)match(input,55,FOLLOW_4); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_isOrdered_8_0, grammarAccess.getSequenceOperationOrReductionOrExpansionExpressionAccess().getIsOrderedOrderedKeyword_3_1_2_0());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getSequenceOperationOrReductionOrExpansionExpressionRule());
                              	        }
                                     		setWithLastConsumed(current, "isOrdered", true, "ordered");
                              	    
                            }

                            }


                            }
                            break;

                    }

                    // InternalAlf.g:8172:3: ( (lv_behaviorName_9_0= ruleQualifiedName ) )
                    // InternalAlf.g:8173:1: (lv_behaviorName_9_0= ruleQualifiedName )
                    {
                    // InternalAlf.g:8173:1: (lv_behaviorName_9_0= ruleQualifiedName )
                    // InternalAlf.g:8174:3: lv_behaviorName_9_0= ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSequenceOperationOrReductionOrExpansionExpressionAccess().getBehaviorNameQualifiedNameParserRuleCall_3_1_3_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_behaviorName_9_0=ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSequenceOperationOrReductionOrExpansionExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"behaviorName",
                              		lv_behaviorName_9_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.QualifiedName");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 3 :
                    // InternalAlf.g:8191:6: ( () ( (lv_operation_11_0= RULE_ID ) ) ( (lv_variable_12_0= ruleName ) ) otherlv_13= '(' ( (lv_argument_14_0= ruleExpression ) ) otherlv_15= ')' )
                    {
                    // InternalAlf.g:8191:6: ( () ( (lv_operation_11_0= RULE_ID ) ) ( (lv_variable_12_0= ruleName ) ) otherlv_13= '(' ( (lv_argument_14_0= ruleExpression ) ) otherlv_15= ')' )
                    // InternalAlf.g:8191:7: () ( (lv_operation_11_0= RULE_ID ) ) ( (lv_variable_12_0= ruleName ) ) otherlv_13= '(' ( (lv_argument_14_0= ruleExpression ) ) otherlv_15= ')'
                    {
                    // InternalAlf.g:8191:7: ()
                    // InternalAlf.g:8192:2: 
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElementAndSet(
                                  grammarAccess.getSequenceOperationOrReductionOrExpansionExpressionAccess().getSequenceExpansionExpressionPrimaryAction_3_2_0(),
                                  current);
                          
                    }

                    }

                    // InternalAlf.g:8200:2: ( (lv_operation_11_0= RULE_ID ) )
                    // InternalAlf.g:8201:1: (lv_operation_11_0= RULE_ID )
                    {
                    // InternalAlf.g:8201:1: (lv_operation_11_0= RULE_ID )
                    // InternalAlf.g:8202:3: lv_operation_11_0= RULE_ID
                    {
                    lv_operation_11_0=(Token)match(input,RULE_ID,FOLLOW_4); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_operation_11_0, grammarAccess.getSequenceOperationOrReductionOrExpansionExpressionAccess().getOperationIDTerminalRuleCall_3_2_1_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getSequenceOperationOrReductionOrExpansionExpressionRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"operation",
                              		lv_operation_11_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.ID");
                      	    
                    }

                    }


                    }

                    // InternalAlf.g:8218:2: ( (lv_variable_12_0= ruleName ) )
                    // InternalAlf.g:8219:1: (lv_variable_12_0= ruleName )
                    {
                    // InternalAlf.g:8219:1: (lv_variable_12_0= ruleName )
                    // InternalAlf.g:8220:3: lv_variable_12_0= ruleName
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSequenceOperationOrReductionOrExpansionExpressionAccess().getVariableNameParserRuleCall_3_2_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_42);
                    lv_variable_12_0=ruleName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSequenceOperationOrReductionOrExpansionExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"variable",
                              		lv_variable_12_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.Name");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_13=(Token)match(input,16,FOLLOW_69); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_13, grammarAccess.getSequenceOperationOrReductionOrExpansionExpressionAccess().getLeftParenthesisKeyword_3_2_3());
                          
                    }
                    // InternalAlf.g:8240:1: ( (lv_argument_14_0= ruleExpression ) )
                    // InternalAlf.g:8241:1: (lv_argument_14_0= ruleExpression )
                    {
                    // InternalAlf.g:8241:1: (lv_argument_14_0= ruleExpression )
                    // InternalAlf.g:8242:3: lv_argument_14_0= ruleExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSequenceOperationOrReductionOrExpansionExpressionAccess().getArgumentExpressionParserRuleCall_3_2_4_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_6);
                    lv_argument_14_0=ruleExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSequenceOperationOrReductionOrExpansionExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"argument",
                              		lv_argument_14_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.Expression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_15=(Token)match(input,17,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_15, grammarAccess.getSequenceOperationOrReductionOrExpansionExpressionAccess().getRightParenthesisKeyword_3_2_5());
                          
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSequenceOperationOrReductionOrExpansionExpression"


    // $ANTLR start "entryRulePrefixExpression"
    // InternalAlf.g:8270:1: entryRulePrefixExpression returns [EObject current=null] : iv_rulePrefixExpression= rulePrefixExpression EOF ;
    public final EObject entryRulePrefixExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePrefixExpression = null;


        try {
            // InternalAlf.g:8271:2: (iv_rulePrefixExpression= rulePrefixExpression EOF )
            // InternalAlf.g:8272:2: iv_rulePrefixExpression= rulePrefixExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPrefixExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_rulePrefixExpression=rulePrefixExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePrefixExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePrefixExpression"


    // $ANTLR start "rulePrefixExpression"
    // InternalAlf.g:8279:1: rulePrefixExpression returns [EObject current=null] : ( ( (lv_operator_0_0= ruleAffixOperator ) ) ( (lv_operand_1_0= ruleLeftHandSide ) ) ) ;
    public final EObject rulePrefixExpression() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_operator_0_0 = null;

        EObject lv_operand_1_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:8282:28: ( ( ( (lv_operator_0_0= ruleAffixOperator ) ) ( (lv_operand_1_0= ruleLeftHandSide ) ) ) )
            // InternalAlf.g:8283:1: ( ( (lv_operator_0_0= ruleAffixOperator ) ) ( (lv_operand_1_0= ruleLeftHandSide ) ) )
            {
            // InternalAlf.g:8283:1: ( ( (lv_operator_0_0= ruleAffixOperator ) ) ( (lv_operand_1_0= ruleLeftHandSide ) ) )
            // InternalAlf.g:8283:2: ( (lv_operator_0_0= ruleAffixOperator ) ) ( (lv_operand_1_0= ruleLeftHandSide ) )
            {
            // InternalAlf.g:8283:2: ( (lv_operator_0_0= ruleAffixOperator ) )
            // InternalAlf.g:8284:1: (lv_operator_0_0= ruleAffixOperator )
            {
            // InternalAlf.g:8284:1: (lv_operator_0_0= ruleAffixOperator )
            // InternalAlf.g:8285:3: lv_operator_0_0= ruleAffixOperator
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getPrefixExpressionAccess().getOperatorAffixOperatorParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_79);
            lv_operator_0_0=ruleAffixOperator();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getPrefixExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"operator",
                      		lv_operator_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.AffixOperator");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:8301:2: ( (lv_operand_1_0= ruleLeftHandSide ) )
            // InternalAlf.g:8302:1: (lv_operand_1_0= ruleLeftHandSide )
            {
            // InternalAlf.g:8302:1: (lv_operand_1_0= ruleLeftHandSide )
            // InternalAlf.g:8303:3: lv_operand_1_0= ruleLeftHandSide
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getPrefixExpressionAccess().getOperandLeftHandSideParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_operand_1_0=ruleLeftHandSide();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getPrefixExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"operand",
                      		lv_operand_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.LeftHandSide");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePrefixExpression"


    // $ANTLR start "entryRuleAffixOperator"
    // InternalAlf.g:8327:1: entryRuleAffixOperator returns [String current=null] : iv_ruleAffixOperator= ruleAffixOperator EOF ;
    public final String entryRuleAffixOperator() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleAffixOperator = null;


        try {
            // InternalAlf.g:8328:2: (iv_ruleAffixOperator= ruleAffixOperator EOF )
            // InternalAlf.g:8329:2: iv_ruleAffixOperator= ruleAffixOperator EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAffixOperatorRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleAffixOperator=ruleAffixOperator();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAffixOperator.getText(); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAffixOperator"


    // $ANTLR start "ruleAffixOperator"
    // InternalAlf.g:8336:1: ruleAffixOperator returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '++' | kw= '--' ) ;
    public final AntlrDatatypeRuleToken ruleAffixOperator() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // InternalAlf.g:8339:28: ( (kw= '++' | kw= '--' ) )
            // InternalAlf.g:8340:1: (kw= '++' | kw= '--' )
            {
            // InternalAlf.g:8340:1: (kw= '++' | kw= '--' )
            int alt156=2;
            int LA156_0 = input.LA(1);

            if ( (LA156_0==70) ) {
                alt156=1;
            }
            else if ( (LA156_0==71) ) {
                alt156=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 156, 0, input);

                throw nvae;
            }
            switch (alt156) {
                case 1 :
                    // InternalAlf.g:8341:2: kw= '++'
                    {
                    kw=(Token)match(input,70,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getAffixOperatorAccess().getPlusSignPlusSignKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:8348:2: kw= '--'
                    {
                    kw=(Token)match(input,71,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getAffixOperatorAccess().getHyphenMinusHyphenMinusKeyword_1()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAffixOperator"


    // $ANTLR start "entryRuleUnaryExpression"
    // InternalAlf.g:8361:1: entryRuleUnaryExpression returns [EObject current=null] : iv_ruleUnaryExpression= ruleUnaryExpression EOF ;
    public final EObject entryRuleUnaryExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleUnaryExpression = null;


        try {
            // InternalAlf.g:8362:2: (iv_ruleUnaryExpression= ruleUnaryExpression EOF )
            // InternalAlf.g:8363:2: iv_ruleUnaryExpression= ruleUnaryExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getUnaryExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleUnaryExpression=ruleUnaryExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleUnaryExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleUnaryExpression"


    // $ANTLR start "ruleUnaryExpression"
    // InternalAlf.g:8370:1: ruleUnaryExpression returns [EObject current=null] : (this_PostfixOrCastExpression_0= rulePostfixOrCastExpression | this_NonPostfixNonCastUnaryExpression_1= ruleNonPostfixNonCastUnaryExpression ) ;
    public final EObject ruleUnaryExpression() throws RecognitionException {
        EObject current = null;

        EObject this_PostfixOrCastExpression_0 = null;

        EObject this_NonPostfixNonCastUnaryExpression_1 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:8373:28: ( (this_PostfixOrCastExpression_0= rulePostfixOrCastExpression | this_NonPostfixNonCastUnaryExpression_1= ruleNonPostfixNonCastUnaryExpression ) )
            // InternalAlf.g:8374:1: (this_PostfixOrCastExpression_0= rulePostfixOrCastExpression | this_NonPostfixNonCastUnaryExpression_1= ruleNonPostfixNonCastUnaryExpression )
            {
            // InternalAlf.g:8374:1: (this_PostfixOrCastExpression_0= rulePostfixOrCastExpression | this_NonPostfixNonCastUnaryExpression_1= ruleNonPostfixNonCastUnaryExpression )
            int alt157=2;
            int LA157_0 = input.LA(1);

            if ( ((LA157_0>=RULE_BOOLEAN_VALUE && LA157_0<=RULE_UNRESTRICTED_NAME)||LA157_0==16||LA157_0==20||LA157_0==51||(LA157_0>=62 && LA157_0<=64)||LA157_0==69) ) {
                alt157=1;
            }
            else if ( ((LA157_0>=70 && LA157_0<=76)) ) {
                alt157=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 157, 0, input);

                throw nvae;
            }
            switch (alt157) {
                case 1 :
                    // InternalAlf.g:8375:2: this_PostfixOrCastExpression_0= rulePostfixOrCastExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getUnaryExpressionAccess().getPostfixOrCastExpressionParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_PostfixOrCastExpression_0=rulePostfixOrCastExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_PostfixOrCastExpression_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:8388:2: this_NonPostfixNonCastUnaryExpression_1= ruleNonPostfixNonCastUnaryExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getUnaryExpressionAccess().getNonPostfixNonCastUnaryExpressionParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_NonPostfixNonCastUnaryExpression_1=ruleNonPostfixNonCastUnaryExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_NonPostfixNonCastUnaryExpression_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleUnaryExpression"


    // $ANTLR start "entryRulePostfixOrCastExpression"
    // InternalAlf.g:8407:1: entryRulePostfixOrCastExpression returns [EObject current=null] : iv_rulePostfixOrCastExpression= rulePostfixOrCastExpression EOF ;
    public final EObject entryRulePostfixOrCastExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePostfixOrCastExpression = null;


        try {
            // InternalAlf.g:8408:2: (iv_rulePostfixOrCastExpression= rulePostfixOrCastExpression EOF )
            // InternalAlf.g:8409:2: iv_rulePostfixOrCastExpression= rulePostfixOrCastExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPostfixOrCastExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_rulePostfixOrCastExpression=rulePostfixOrCastExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePostfixOrCastExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePostfixOrCastExpression"


    // $ANTLR start "rulePostfixOrCastExpression"
    // InternalAlf.g:8416:1: rulePostfixOrCastExpression returns [EObject current=null] : (this_PostfixExpression_0= rulePostfixExpression | this_CastExpression_1= ruleCastExpression | this_PrimaryExpression_2= rulePrimaryExpression ) ;
    public final EObject rulePostfixOrCastExpression() throws RecognitionException {
        EObject current = null;

        EObject this_PostfixExpression_0 = null;

        EObject this_CastExpression_1 = null;

        EObject this_PrimaryExpression_2 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:8419:28: ( (this_PostfixExpression_0= rulePostfixExpression | this_CastExpression_1= ruleCastExpression | this_PrimaryExpression_2= rulePrimaryExpression ) )
            // InternalAlf.g:8420:1: (this_PostfixExpression_0= rulePostfixExpression | this_CastExpression_1= ruleCastExpression | this_PrimaryExpression_2= rulePrimaryExpression )
            {
            // InternalAlf.g:8420:1: (this_PostfixExpression_0= rulePostfixExpression | this_CastExpression_1= ruleCastExpression | this_PrimaryExpression_2= rulePrimaryExpression )
            int alt158=3;
            alt158 = dfa158.predict(input);
            switch (alt158) {
                case 1 :
                    // InternalAlf.g:8421:2: this_PostfixExpression_0= rulePostfixExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getPostfixOrCastExpressionAccess().getPostfixExpressionParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_PostfixExpression_0=rulePostfixExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_PostfixExpression_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:8434:2: this_CastExpression_1= ruleCastExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getPostfixOrCastExpressionAccess().getCastExpressionParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_CastExpression_1=ruleCastExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_CastExpression_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // InternalAlf.g:8447:2: this_PrimaryExpression_2= rulePrimaryExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getPostfixOrCastExpressionAccess().getPrimaryExpressionParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_PrimaryExpression_2=rulePrimaryExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_PrimaryExpression_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePostfixOrCastExpression"


    // $ANTLR start "entryRulePostfixExpression"
    // InternalAlf.g:8466:1: entryRulePostfixExpression returns [EObject current=null] : iv_rulePostfixExpression= rulePostfixExpression EOF ;
    public final EObject entryRulePostfixExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePostfixExpression = null;


        try {
            // InternalAlf.g:8467:2: (iv_rulePostfixExpression= rulePostfixExpression EOF )
            // InternalAlf.g:8468:2: iv_rulePostfixExpression= rulePostfixExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPostfixExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_rulePostfixExpression=rulePostfixExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePostfixExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePostfixExpression"


    // $ANTLR start "rulePostfixExpression"
    // InternalAlf.g:8475:1: rulePostfixExpression returns [EObject current=null] : ( ( (lv_operand_0_0= ruleLeftHandSide ) ) ( (lv_operator_1_0= ruleAffixOperator ) ) ) ;
    public final EObject rulePostfixExpression() throws RecognitionException {
        EObject current = null;

        EObject lv_operand_0_0 = null;

        AntlrDatatypeRuleToken lv_operator_1_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:8478:28: ( ( ( (lv_operand_0_0= ruleLeftHandSide ) ) ( (lv_operator_1_0= ruleAffixOperator ) ) ) )
            // InternalAlf.g:8479:1: ( ( (lv_operand_0_0= ruleLeftHandSide ) ) ( (lv_operator_1_0= ruleAffixOperator ) ) )
            {
            // InternalAlf.g:8479:1: ( ( (lv_operand_0_0= ruleLeftHandSide ) ) ( (lv_operator_1_0= ruleAffixOperator ) ) )
            // InternalAlf.g:8479:2: ( (lv_operand_0_0= ruleLeftHandSide ) ) ( (lv_operator_1_0= ruleAffixOperator ) )
            {
            // InternalAlf.g:8479:2: ( (lv_operand_0_0= ruleLeftHandSide ) )
            // InternalAlf.g:8480:1: (lv_operand_0_0= ruleLeftHandSide )
            {
            // InternalAlf.g:8480:1: (lv_operand_0_0= ruleLeftHandSide )
            // InternalAlf.g:8481:3: lv_operand_0_0= ruleLeftHandSide
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getPostfixExpressionAccess().getOperandLeftHandSideParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_80);
            lv_operand_0_0=ruleLeftHandSide();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getPostfixExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"operand",
                      		lv_operand_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.LeftHandSide");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:8497:2: ( (lv_operator_1_0= ruleAffixOperator ) )
            // InternalAlf.g:8498:1: (lv_operator_1_0= ruleAffixOperator )
            {
            // InternalAlf.g:8498:1: (lv_operator_1_0= ruleAffixOperator )
            // InternalAlf.g:8499:3: lv_operator_1_0= ruleAffixOperator
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getPostfixExpressionAccess().getOperatorAffixOperatorParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_operator_1_0=ruleAffixOperator();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getPostfixExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"operator",
                      		lv_operator_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.AffixOperator");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePostfixExpression"


    // $ANTLR start "entryRuleNonPostfixNonCastUnaryExpression"
    // InternalAlf.g:8523:1: entryRuleNonPostfixNonCastUnaryExpression returns [EObject current=null] : iv_ruleNonPostfixNonCastUnaryExpression= ruleNonPostfixNonCastUnaryExpression EOF ;
    public final EObject entryRuleNonPostfixNonCastUnaryExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNonPostfixNonCastUnaryExpression = null;


        try {
            // InternalAlf.g:8524:2: (iv_ruleNonPostfixNonCastUnaryExpression= ruleNonPostfixNonCastUnaryExpression EOF )
            // InternalAlf.g:8525:2: iv_ruleNonPostfixNonCastUnaryExpression= ruleNonPostfixNonCastUnaryExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNonPostfixNonCastUnaryExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleNonPostfixNonCastUnaryExpression=ruleNonPostfixNonCastUnaryExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNonPostfixNonCastUnaryExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNonPostfixNonCastUnaryExpression"


    // $ANTLR start "ruleNonPostfixNonCastUnaryExpression"
    // InternalAlf.g:8532:1: ruleNonPostfixNonCastUnaryExpression returns [EObject current=null] : (this_PrefixExpression_0= rulePrefixExpression | this_NumericUnaryExpression_1= ruleNumericUnaryExpression | this_BooleanUnaryExpression_2= ruleBooleanUnaryExpression | this_BitStringUnaryExpression_3= ruleBitStringUnaryExpression | this_IsolationExpression_4= ruleIsolationExpression ) ;
    public final EObject ruleNonPostfixNonCastUnaryExpression() throws RecognitionException {
        EObject current = null;

        EObject this_PrefixExpression_0 = null;

        EObject this_NumericUnaryExpression_1 = null;

        EObject this_BooleanUnaryExpression_2 = null;

        EObject this_BitStringUnaryExpression_3 = null;

        EObject this_IsolationExpression_4 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:8535:28: ( (this_PrefixExpression_0= rulePrefixExpression | this_NumericUnaryExpression_1= ruleNumericUnaryExpression | this_BooleanUnaryExpression_2= ruleBooleanUnaryExpression | this_BitStringUnaryExpression_3= ruleBitStringUnaryExpression | this_IsolationExpression_4= ruleIsolationExpression ) )
            // InternalAlf.g:8536:1: (this_PrefixExpression_0= rulePrefixExpression | this_NumericUnaryExpression_1= ruleNumericUnaryExpression | this_BooleanUnaryExpression_2= ruleBooleanUnaryExpression | this_BitStringUnaryExpression_3= ruleBitStringUnaryExpression | this_IsolationExpression_4= ruleIsolationExpression )
            {
            // InternalAlf.g:8536:1: (this_PrefixExpression_0= rulePrefixExpression | this_NumericUnaryExpression_1= ruleNumericUnaryExpression | this_BooleanUnaryExpression_2= ruleBooleanUnaryExpression | this_BitStringUnaryExpression_3= ruleBitStringUnaryExpression | this_IsolationExpression_4= ruleIsolationExpression )
            int alt159=5;
            switch ( input.LA(1) ) {
            case 70:
            case 71:
                {
                alt159=1;
                }
                break;
            case 74:
            case 75:
                {
                alt159=2;
                }
                break;
            case 72:
                {
                alt159=3;
                }
                break;
            case 73:
                {
                alt159=4;
                }
                break;
            case 76:
                {
                alt159=5;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 159, 0, input);

                throw nvae;
            }

            switch (alt159) {
                case 1 :
                    // InternalAlf.g:8537:2: this_PrefixExpression_0= rulePrefixExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getNonPostfixNonCastUnaryExpressionAccess().getPrefixExpressionParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_PrefixExpression_0=rulePrefixExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_PrefixExpression_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:8550:2: this_NumericUnaryExpression_1= ruleNumericUnaryExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getNonPostfixNonCastUnaryExpressionAccess().getNumericUnaryExpressionParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_NumericUnaryExpression_1=ruleNumericUnaryExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_NumericUnaryExpression_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // InternalAlf.g:8563:2: this_BooleanUnaryExpression_2= ruleBooleanUnaryExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getNonPostfixNonCastUnaryExpressionAccess().getBooleanUnaryExpressionParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_BooleanUnaryExpression_2=ruleBooleanUnaryExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_BooleanUnaryExpression_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // InternalAlf.g:8576:2: this_BitStringUnaryExpression_3= ruleBitStringUnaryExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getNonPostfixNonCastUnaryExpressionAccess().getBitStringUnaryExpressionParserRuleCall_3()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_BitStringUnaryExpression_3=ruleBitStringUnaryExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_BitStringUnaryExpression_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 5 :
                    // InternalAlf.g:8589:2: this_IsolationExpression_4= ruleIsolationExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getNonPostfixNonCastUnaryExpressionAccess().getIsolationExpressionParserRuleCall_4()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_IsolationExpression_4=ruleIsolationExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_IsolationExpression_4; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNonPostfixNonCastUnaryExpression"


    // $ANTLR start "entryRuleBooleanUnaryExpression"
    // InternalAlf.g:8608:1: entryRuleBooleanUnaryExpression returns [EObject current=null] : iv_ruleBooleanUnaryExpression= ruleBooleanUnaryExpression EOF ;
    public final EObject entryRuleBooleanUnaryExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBooleanUnaryExpression = null;


        try {
            // InternalAlf.g:8609:2: (iv_ruleBooleanUnaryExpression= ruleBooleanUnaryExpression EOF )
            // InternalAlf.g:8610:2: iv_ruleBooleanUnaryExpression= ruleBooleanUnaryExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getBooleanUnaryExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleBooleanUnaryExpression=ruleBooleanUnaryExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleBooleanUnaryExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBooleanUnaryExpression"


    // $ANTLR start "ruleBooleanUnaryExpression"
    // InternalAlf.g:8617:1: ruleBooleanUnaryExpression returns [EObject current=null] : ( ( (lv_operator_0_0= '!' ) ) ( (lv_operand_1_0= ruleUnaryExpression ) ) ) ;
    public final EObject ruleBooleanUnaryExpression() throws RecognitionException {
        EObject current = null;

        Token lv_operator_0_0=null;
        EObject lv_operand_1_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:8620:28: ( ( ( (lv_operator_0_0= '!' ) ) ( (lv_operand_1_0= ruleUnaryExpression ) ) ) )
            // InternalAlf.g:8621:1: ( ( (lv_operator_0_0= '!' ) ) ( (lv_operand_1_0= ruleUnaryExpression ) ) )
            {
            // InternalAlf.g:8621:1: ( ( (lv_operator_0_0= '!' ) ) ( (lv_operand_1_0= ruleUnaryExpression ) ) )
            // InternalAlf.g:8621:2: ( (lv_operator_0_0= '!' ) ) ( (lv_operand_1_0= ruleUnaryExpression ) )
            {
            // InternalAlf.g:8621:2: ( (lv_operator_0_0= '!' ) )
            // InternalAlf.g:8622:1: (lv_operator_0_0= '!' )
            {
            // InternalAlf.g:8622:1: (lv_operator_0_0= '!' )
            // InternalAlf.g:8623:3: lv_operator_0_0= '!'
            {
            lv_operator_0_0=(Token)match(input,72,FOLLOW_69); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      newLeafNode(lv_operator_0_0, grammarAccess.getBooleanUnaryExpressionAccess().getOperatorExclamationMarkKeyword_0_0());
                  
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getBooleanUnaryExpressionRule());
              	        }
                     		setWithLastConsumed(current, "operator", lv_operator_0_0, "!");
              	    
            }

            }


            }

            // InternalAlf.g:8636:2: ( (lv_operand_1_0= ruleUnaryExpression ) )
            // InternalAlf.g:8637:1: (lv_operand_1_0= ruleUnaryExpression )
            {
            // InternalAlf.g:8637:1: (lv_operand_1_0= ruleUnaryExpression )
            // InternalAlf.g:8638:3: lv_operand_1_0= ruleUnaryExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getBooleanUnaryExpressionAccess().getOperandUnaryExpressionParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_operand_1_0=ruleUnaryExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getBooleanUnaryExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"operand",
                      		lv_operand_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.UnaryExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBooleanUnaryExpression"


    // $ANTLR start "entryRuleBitStringUnaryExpression"
    // InternalAlf.g:8662:1: entryRuleBitStringUnaryExpression returns [EObject current=null] : iv_ruleBitStringUnaryExpression= ruleBitStringUnaryExpression EOF ;
    public final EObject entryRuleBitStringUnaryExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBitStringUnaryExpression = null;


        try {
            // InternalAlf.g:8663:2: (iv_ruleBitStringUnaryExpression= ruleBitStringUnaryExpression EOF )
            // InternalAlf.g:8664:2: iv_ruleBitStringUnaryExpression= ruleBitStringUnaryExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getBitStringUnaryExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleBitStringUnaryExpression=ruleBitStringUnaryExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleBitStringUnaryExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBitStringUnaryExpression"


    // $ANTLR start "ruleBitStringUnaryExpression"
    // InternalAlf.g:8671:1: ruleBitStringUnaryExpression returns [EObject current=null] : ( ( (lv_operator_0_0= '~' ) ) ( (lv_operand_1_0= ruleUnaryExpression ) ) ) ;
    public final EObject ruleBitStringUnaryExpression() throws RecognitionException {
        EObject current = null;

        Token lv_operator_0_0=null;
        EObject lv_operand_1_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:8674:28: ( ( ( (lv_operator_0_0= '~' ) ) ( (lv_operand_1_0= ruleUnaryExpression ) ) ) )
            // InternalAlf.g:8675:1: ( ( (lv_operator_0_0= '~' ) ) ( (lv_operand_1_0= ruleUnaryExpression ) ) )
            {
            // InternalAlf.g:8675:1: ( ( (lv_operator_0_0= '~' ) ) ( (lv_operand_1_0= ruleUnaryExpression ) ) )
            // InternalAlf.g:8675:2: ( (lv_operator_0_0= '~' ) ) ( (lv_operand_1_0= ruleUnaryExpression ) )
            {
            // InternalAlf.g:8675:2: ( (lv_operator_0_0= '~' ) )
            // InternalAlf.g:8676:1: (lv_operator_0_0= '~' )
            {
            // InternalAlf.g:8676:1: (lv_operator_0_0= '~' )
            // InternalAlf.g:8677:3: lv_operator_0_0= '~'
            {
            lv_operator_0_0=(Token)match(input,73,FOLLOW_69); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      newLeafNode(lv_operator_0_0, grammarAccess.getBitStringUnaryExpressionAccess().getOperatorTildeKeyword_0_0());
                  
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getBitStringUnaryExpressionRule());
              	        }
                     		setWithLastConsumed(current, "operator", lv_operator_0_0, "~");
              	    
            }

            }


            }

            // InternalAlf.g:8690:2: ( (lv_operand_1_0= ruleUnaryExpression ) )
            // InternalAlf.g:8691:1: (lv_operand_1_0= ruleUnaryExpression )
            {
            // InternalAlf.g:8691:1: (lv_operand_1_0= ruleUnaryExpression )
            // InternalAlf.g:8692:3: lv_operand_1_0= ruleUnaryExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getBitStringUnaryExpressionAccess().getOperandUnaryExpressionParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_operand_1_0=ruleUnaryExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getBitStringUnaryExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"operand",
                      		lv_operand_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.UnaryExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBitStringUnaryExpression"


    // $ANTLR start "entryRuleNumericUnaryExpression"
    // InternalAlf.g:8716:1: entryRuleNumericUnaryExpression returns [EObject current=null] : iv_ruleNumericUnaryExpression= ruleNumericUnaryExpression EOF ;
    public final EObject entryRuleNumericUnaryExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNumericUnaryExpression = null;


        try {
            // InternalAlf.g:8717:2: (iv_ruleNumericUnaryExpression= ruleNumericUnaryExpression EOF )
            // InternalAlf.g:8718:2: iv_ruleNumericUnaryExpression= ruleNumericUnaryExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNumericUnaryExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleNumericUnaryExpression=ruleNumericUnaryExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNumericUnaryExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNumericUnaryExpression"


    // $ANTLR start "ruleNumericUnaryExpression"
    // InternalAlf.g:8725:1: ruleNumericUnaryExpression returns [EObject current=null] : ( ( (lv_operator_0_0= ruleNumericUnaryOperator ) ) ( (lv_operand_1_0= ruleUnaryExpression ) ) ) ;
    public final EObject ruleNumericUnaryExpression() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_operator_0_0 = null;

        EObject lv_operand_1_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:8728:28: ( ( ( (lv_operator_0_0= ruleNumericUnaryOperator ) ) ( (lv_operand_1_0= ruleUnaryExpression ) ) ) )
            // InternalAlf.g:8729:1: ( ( (lv_operator_0_0= ruleNumericUnaryOperator ) ) ( (lv_operand_1_0= ruleUnaryExpression ) ) )
            {
            // InternalAlf.g:8729:1: ( ( (lv_operator_0_0= ruleNumericUnaryOperator ) ) ( (lv_operand_1_0= ruleUnaryExpression ) ) )
            // InternalAlf.g:8729:2: ( (lv_operator_0_0= ruleNumericUnaryOperator ) ) ( (lv_operand_1_0= ruleUnaryExpression ) )
            {
            // InternalAlf.g:8729:2: ( (lv_operator_0_0= ruleNumericUnaryOperator ) )
            // InternalAlf.g:8730:1: (lv_operator_0_0= ruleNumericUnaryOperator )
            {
            // InternalAlf.g:8730:1: (lv_operator_0_0= ruleNumericUnaryOperator )
            // InternalAlf.g:8731:3: lv_operator_0_0= ruleNumericUnaryOperator
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getNumericUnaryExpressionAccess().getOperatorNumericUnaryOperatorParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_69);
            lv_operator_0_0=ruleNumericUnaryOperator();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getNumericUnaryExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"operator",
                      		lv_operator_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.NumericUnaryOperator");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:8747:2: ( (lv_operand_1_0= ruleUnaryExpression ) )
            // InternalAlf.g:8748:1: (lv_operand_1_0= ruleUnaryExpression )
            {
            // InternalAlf.g:8748:1: (lv_operand_1_0= ruleUnaryExpression )
            // InternalAlf.g:8749:3: lv_operand_1_0= ruleUnaryExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getNumericUnaryExpressionAccess().getOperandUnaryExpressionParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_operand_1_0=ruleUnaryExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getNumericUnaryExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"operand",
                      		lv_operand_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.UnaryExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNumericUnaryExpression"


    // $ANTLR start "entryRuleNumericUnaryOperator"
    // InternalAlf.g:8773:1: entryRuleNumericUnaryOperator returns [String current=null] : iv_ruleNumericUnaryOperator= ruleNumericUnaryOperator EOF ;
    public final String entryRuleNumericUnaryOperator() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleNumericUnaryOperator = null;


        try {
            // InternalAlf.g:8774:2: (iv_ruleNumericUnaryOperator= ruleNumericUnaryOperator EOF )
            // InternalAlf.g:8775:2: iv_ruleNumericUnaryOperator= ruleNumericUnaryOperator EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNumericUnaryOperatorRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleNumericUnaryOperator=ruleNumericUnaryOperator();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNumericUnaryOperator.getText(); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNumericUnaryOperator"


    // $ANTLR start "ruleNumericUnaryOperator"
    // InternalAlf.g:8782:1: ruleNumericUnaryOperator returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+' | kw= '-' ) ;
    public final AntlrDatatypeRuleToken ruleNumericUnaryOperator() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // InternalAlf.g:8785:28: ( (kw= '+' | kw= '-' ) )
            // InternalAlf.g:8786:1: (kw= '+' | kw= '-' )
            {
            // InternalAlf.g:8786:1: (kw= '+' | kw= '-' )
            int alt160=2;
            int LA160_0 = input.LA(1);

            if ( (LA160_0==74) ) {
                alt160=1;
            }
            else if ( (LA160_0==75) ) {
                alt160=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 160, 0, input);

                throw nvae;
            }
            switch (alt160) {
                case 1 :
                    // InternalAlf.g:8787:2: kw= '+'
                    {
                    kw=(Token)match(input,74,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getNumericUnaryOperatorAccess().getPlusSignKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:8794:2: kw= '-'
                    {
                    kw=(Token)match(input,75,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getNumericUnaryOperatorAccess().getHyphenMinusKeyword_1()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNumericUnaryOperator"


    // $ANTLR start "entryRuleIsolationExpression"
    // InternalAlf.g:8807:1: entryRuleIsolationExpression returns [EObject current=null] : iv_ruleIsolationExpression= ruleIsolationExpression EOF ;
    public final EObject entryRuleIsolationExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIsolationExpression = null;


        try {
            // InternalAlf.g:8808:2: (iv_ruleIsolationExpression= ruleIsolationExpression EOF )
            // InternalAlf.g:8809:2: iv_ruleIsolationExpression= ruleIsolationExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getIsolationExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleIsolationExpression=ruleIsolationExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleIsolationExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIsolationExpression"


    // $ANTLR start "ruleIsolationExpression"
    // InternalAlf.g:8816:1: ruleIsolationExpression returns [EObject current=null] : ( ( (lv_operator_0_0= '$' ) ) ( (lv_operand_1_0= ruleUnaryExpression ) ) ) ;
    public final EObject ruleIsolationExpression() throws RecognitionException {
        EObject current = null;

        Token lv_operator_0_0=null;
        EObject lv_operand_1_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:8819:28: ( ( ( (lv_operator_0_0= '$' ) ) ( (lv_operand_1_0= ruleUnaryExpression ) ) ) )
            // InternalAlf.g:8820:1: ( ( (lv_operator_0_0= '$' ) ) ( (lv_operand_1_0= ruleUnaryExpression ) ) )
            {
            // InternalAlf.g:8820:1: ( ( (lv_operator_0_0= '$' ) ) ( (lv_operand_1_0= ruleUnaryExpression ) ) )
            // InternalAlf.g:8820:2: ( (lv_operator_0_0= '$' ) ) ( (lv_operand_1_0= ruleUnaryExpression ) )
            {
            // InternalAlf.g:8820:2: ( (lv_operator_0_0= '$' ) )
            // InternalAlf.g:8821:1: (lv_operator_0_0= '$' )
            {
            // InternalAlf.g:8821:1: (lv_operator_0_0= '$' )
            // InternalAlf.g:8822:3: lv_operator_0_0= '$'
            {
            lv_operator_0_0=(Token)match(input,76,FOLLOW_69); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      newLeafNode(lv_operator_0_0, grammarAccess.getIsolationExpressionAccess().getOperatorDollarSignKeyword_0_0());
                  
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getIsolationExpressionRule());
              	        }
                     		setWithLastConsumed(current, "operator", lv_operator_0_0, "$");
              	    
            }

            }


            }

            // InternalAlf.g:8835:2: ( (lv_operand_1_0= ruleUnaryExpression ) )
            // InternalAlf.g:8836:1: (lv_operand_1_0= ruleUnaryExpression )
            {
            // InternalAlf.g:8836:1: (lv_operand_1_0= ruleUnaryExpression )
            // InternalAlf.g:8837:3: lv_operand_1_0= ruleUnaryExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getIsolationExpressionAccess().getOperandUnaryExpressionParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_operand_1_0=ruleUnaryExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getIsolationExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"operand",
                      		lv_operand_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.UnaryExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIsolationExpression"


    // $ANTLR start "entryRuleCastExpression"
    // InternalAlf.g:8861:1: entryRuleCastExpression returns [EObject current=null] : iv_ruleCastExpression= ruleCastExpression EOF ;
    public final EObject entryRuleCastExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCastExpression = null;


        try {
            // InternalAlf.g:8862:2: (iv_ruleCastExpression= ruleCastExpression EOF )
            // InternalAlf.g:8863:2: iv_ruleCastExpression= ruleCastExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getCastExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleCastExpression=ruleCastExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleCastExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCastExpression"


    // $ANTLR start "ruleCastExpression"
    // InternalAlf.g:8870:1: ruleCastExpression returns [EObject current=null] : (otherlv_0= '(' ( ( (lv_isAny_1_0= 'any' ) ) | ( (lv_typeName_2_0= ruleQualifiedName ) ) ) otherlv_3= ')' ( (lv_operand_4_0= ruleCastCompletion ) ) ) ;
    public final EObject ruleCastExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_isAny_1_0=null;
        Token otherlv_3=null;
        EObject lv_typeName_2_0 = null;

        EObject lv_operand_4_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:8873:28: ( (otherlv_0= '(' ( ( (lv_isAny_1_0= 'any' ) ) | ( (lv_typeName_2_0= ruleQualifiedName ) ) ) otherlv_3= ')' ( (lv_operand_4_0= ruleCastCompletion ) ) ) )
            // InternalAlf.g:8874:1: (otherlv_0= '(' ( ( (lv_isAny_1_0= 'any' ) ) | ( (lv_typeName_2_0= ruleQualifiedName ) ) ) otherlv_3= ')' ( (lv_operand_4_0= ruleCastCompletion ) ) )
            {
            // InternalAlf.g:8874:1: (otherlv_0= '(' ( ( (lv_isAny_1_0= 'any' ) ) | ( (lv_typeName_2_0= ruleQualifiedName ) ) ) otherlv_3= ')' ( (lv_operand_4_0= ruleCastCompletion ) ) )
            // InternalAlf.g:8874:3: otherlv_0= '(' ( ( (lv_isAny_1_0= 'any' ) ) | ( (lv_typeName_2_0= ruleQualifiedName ) ) ) otherlv_3= ')' ( (lv_operand_4_0= ruleCastCompletion ) )
            {
            otherlv_0=(Token)match(input,16,FOLLOW_48); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getCastExpressionAccess().getLeftParenthesisKeyword_0());
                  
            }
            // InternalAlf.g:8878:1: ( ( (lv_isAny_1_0= 'any' ) ) | ( (lv_typeName_2_0= ruleQualifiedName ) ) )
            int alt161=2;
            int LA161_0 = input.LA(1);

            if ( (LA161_0==51) ) {
                alt161=1;
            }
            else if ( ((LA161_0>=RULE_ID && LA161_0<=RULE_UNRESTRICTED_NAME)) ) {
                alt161=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 161, 0, input);

                throw nvae;
            }
            switch (alt161) {
                case 1 :
                    // InternalAlf.g:8878:2: ( (lv_isAny_1_0= 'any' ) )
                    {
                    // InternalAlf.g:8878:2: ( (lv_isAny_1_0= 'any' ) )
                    // InternalAlf.g:8879:1: (lv_isAny_1_0= 'any' )
                    {
                    // InternalAlf.g:8879:1: (lv_isAny_1_0= 'any' )
                    // InternalAlf.g:8880:3: lv_isAny_1_0= 'any'
                    {
                    lv_isAny_1_0=(Token)match(input,51,FOLLOW_6); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_isAny_1_0, grammarAccess.getCastExpressionAccess().getIsAnyAnyKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getCastExpressionRule());
                      	        }
                             		setWithLastConsumed(current, "isAny", true, "any");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalAlf.g:8894:6: ( (lv_typeName_2_0= ruleQualifiedName ) )
                    {
                    // InternalAlf.g:8894:6: ( (lv_typeName_2_0= ruleQualifiedName ) )
                    // InternalAlf.g:8895:1: (lv_typeName_2_0= ruleQualifiedName )
                    {
                    // InternalAlf.g:8895:1: (lv_typeName_2_0= ruleQualifiedName )
                    // InternalAlf.g:8896:3: lv_typeName_2_0= ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getCastExpressionAccess().getTypeNameQualifiedNameParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_6);
                    lv_typeName_2_0=ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getCastExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"typeName",
                              		lv_typeName_2_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.QualifiedName");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            otherlv_3=(Token)match(input,17,FOLLOW_69); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getCastExpressionAccess().getRightParenthesisKeyword_2());
                  
            }
            // InternalAlf.g:8916:1: ( (lv_operand_4_0= ruleCastCompletion ) )
            // InternalAlf.g:8917:1: (lv_operand_4_0= ruleCastCompletion )
            {
            // InternalAlf.g:8917:1: (lv_operand_4_0= ruleCastCompletion )
            // InternalAlf.g:8918:3: lv_operand_4_0= ruleCastCompletion
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getCastExpressionAccess().getOperandCastCompletionParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_operand_4_0=ruleCastCompletion();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getCastExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"operand",
                      		lv_operand_4_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.CastCompletion");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCastExpression"


    // $ANTLR start "entryRuleCastCompletion"
    // InternalAlf.g:8942:1: entryRuleCastCompletion returns [EObject current=null] : iv_ruleCastCompletion= ruleCastCompletion EOF ;
    public final EObject entryRuleCastCompletion() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCastCompletion = null;


        try {
            // InternalAlf.g:8943:2: (iv_ruleCastCompletion= ruleCastCompletion EOF )
            // InternalAlf.g:8944:2: iv_ruleCastCompletion= ruleCastCompletion EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getCastCompletionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleCastCompletion=ruleCastCompletion();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleCastCompletion; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCastCompletion"


    // $ANTLR start "ruleCastCompletion"
    // InternalAlf.g:8951:1: ruleCastCompletion returns [EObject current=null] : (this_PostfixOrCastExpression_0= rulePostfixOrCastExpression | this_BooleanUnaryExpression_1= ruleBooleanUnaryExpression | this_BitStringUnaryExpression_2= ruleBitStringUnaryExpression | this_IsolationExpression_3= ruleIsolationExpression ) ;
    public final EObject ruleCastCompletion() throws RecognitionException {
        EObject current = null;

        EObject this_PostfixOrCastExpression_0 = null;

        EObject this_BooleanUnaryExpression_1 = null;

        EObject this_BitStringUnaryExpression_2 = null;

        EObject this_IsolationExpression_3 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:8954:28: ( (this_PostfixOrCastExpression_0= rulePostfixOrCastExpression | this_BooleanUnaryExpression_1= ruleBooleanUnaryExpression | this_BitStringUnaryExpression_2= ruleBitStringUnaryExpression | this_IsolationExpression_3= ruleIsolationExpression ) )
            // InternalAlf.g:8955:1: (this_PostfixOrCastExpression_0= rulePostfixOrCastExpression | this_BooleanUnaryExpression_1= ruleBooleanUnaryExpression | this_BitStringUnaryExpression_2= ruleBitStringUnaryExpression | this_IsolationExpression_3= ruleIsolationExpression )
            {
            // InternalAlf.g:8955:1: (this_PostfixOrCastExpression_0= rulePostfixOrCastExpression | this_BooleanUnaryExpression_1= ruleBooleanUnaryExpression | this_BitStringUnaryExpression_2= ruleBitStringUnaryExpression | this_IsolationExpression_3= ruleIsolationExpression )
            int alt162=4;
            switch ( input.LA(1) ) {
            case RULE_BOOLEAN_VALUE:
            case RULE_NATURAL_VALUE:
            case RULE_STRING:
            case RULE_ID:
            case RULE_UNRESTRICTED_NAME:
            case 16:
            case 20:
            case 51:
            case 62:
            case 63:
            case 64:
            case 69:
                {
                alt162=1;
                }
                break;
            case 72:
                {
                alt162=2;
                }
                break;
            case 73:
                {
                alt162=3;
                }
                break;
            case 76:
                {
                alt162=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 162, 0, input);

                throw nvae;
            }

            switch (alt162) {
                case 1 :
                    // InternalAlf.g:8956:2: this_PostfixOrCastExpression_0= rulePostfixOrCastExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getCastCompletionAccess().getPostfixOrCastExpressionParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_PostfixOrCastExpression_0=rulePostfixOrCastExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_PostfixOrCastExpression_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:8969:2: this_BooleanUnaryExpression_1= ruleBooleanUnaryExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getCastCompletionAccess().getBooleanUnaryExpressionParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_BooleanUnaryExpression_1=ruleBooleanUnaryExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_BooleanUnaryExpression_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // InternalAlf.g:8982:2: this_BitStringUnaryExpression_2= ruleBitStringUnaryExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getCastCompletionAccess().getBitStringUnaryExpressionParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_BitStringUnaryExpression_2=ruleBitStringUnaryExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_BitStringUnaryExpression_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // InternalAlf.g:8995:2: this_IsolationExpression_3= ruleIsolationExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getCastCompletionAccess().getIsolationExpressionParserRuleCall_3()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_IsolationExpression_3=ruleIsolationExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_IsolationExpression_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCastCompletion"


    // $ANTLR start "entryRuleMultiplicativeExpression"
    // InternalAlf.g:9014:1: entryRuleMultiplicativeExpression returns [EObject current=null] : iv_ruleMultiplicativeExpression= ruleMultiplicativeExpression EOF ;
    public final EObject entryRuleMultiplicativeExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleMultiplicativeExpression = null;


        try {
            // InternalAlf.g:9015:2: (iv_ruleMultiplicativeExpression= ruleMultiplicativeExpression EOF )
            // InternalAlf.g:9016:2: iv_ruleMultiplicativeExpression= ruleMultiplicativeExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getMultiplicativeExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleMultiplicativeExpression=ruleMultiplicativeExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleMultiplicativeExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleMultiplicativeExpression"


    // $ANTLR start "ruleMultiplicativeExpression"
    // InternalAlf.g:9023:1: ruleMultiplicativeExpression returns [EObject current=null] : (this_UnaryExpression_0= ruleUnaryExpression ( () ( (lv_operator_2_0= ruleMultiplicativeOperator ) ) ( (lv_operand2_3_0= ruleUnaryExpression ) ) )* ) ;
    public final EObject ruleMultiplicativeExpression() throws RecognitionException {
        EObject current = null;

        EObject this_UnaryExpression_0 = null;

        AntlrDatatypeRuleToken lv_operator_2_0 = null;

        EObject lv_operand2_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:9026:28: ( (this_UnaryExpression_0= ruleUnaryExpression ( () ( (lv_operator_2_0= ruleMultiplicativeOperator ) ) ( (lv_operand2_3_0= ruleUnaryExpression ) ) )* ) )
            // InternalAlf.g:9027:1: (this_UnaryExpression_0= ruleUnaryExpression ( () ( (lv_operator_2_0= ruleMultiplicativeOperator ) ) ( (lv_operand2_3_0= ruleUnaryExpression ) ) )* )
            {
            // InternalAlf.g:9027:1: (this_UnaryExpression_0= ruleUnaryExpression ( () ( (lv_operator_2_0= ruleMultiplicativeOperator ) ) ( (lv_operand2_3_0= ruleUnaryExpression ) ) )* )
            // InternalAlf.g:9028:2: this_UnaryExpression_0= ruleUnaryExpression ( () ( (lv_operator_2_0= ruleMultiplicativeOperator ) ) ( (lv_operand2_3_0= ruleUnaryExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getMultiplicativeExpressionAccess().getUnaryExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_81);
            this_UnaryExpression_0=ruleUnaryExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_UnaryExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:9039:1: ( () ( (lv_operator_2_0= ruleMultiplicativeOperator ) ) ( (lv_operand2_3_0= ruleUnaryExpression ) ) )*
            loop163:
            do {
                int alt163=2;
                int LA163_0 = input.LA(1);

                if ( (LA163_0==20||(LA163_0>=77 && LA163_0<=78)) ) {
                    alt163=1;
                }


                switch (alt163) {
            	case 1 :
            	    // InternalAlf.g:9039:2: () ( (lv_operator_2_0= ruleMultiplicativeOperator ) ) ( (lv_operand2_3_0= ruleUnaryExpression ) )
            	    {
            	    // InternalAlf.g:9039:2: ()
            	    // InternalAlf.g:9040:2: 
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	  /* */ 
            	      	
            	    }
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getMultiplicativeExpressionAccess().getArithmeticExpressionOperand1Action_1_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // InternalAlf.g:9048:2: ( (lv_operator_2_0= ruleMultiplicativeOperator ) )
            	    // InternalAlf.g:9049:1: (lv_operator_2_0= ruleMultiplicativeOperator )
            	    {
            	    // InternalAlf.g:9049:1: (lv_operator_2_0= ruleMultiplicativeOperator )
            	    // InternalAlf.g:9050:3: lv_operator_2_0= ruleMultiplicativeOperator
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getMultiplicativeExpressionAccess().getOperatorMultiplicativeOperatorParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_69);
            	    lv_operator_2_0=ruleMultiplicativeOperator();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getMultiplicativeExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"operator",
            	              		lv_operator_2_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.MultiplicativeOperator");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }

            	    // InternalAlf.g:9066:2: ( (lv_operand2_3_0= ruleUnaryExpression ) )
            	    // InternalAlf.g:9067:1: (lv_operand2_3_0= ruleUnaryExpression )
            	    {
            	    // InternalAlf.g:9067:1: (lv_operand2_3_0= ruleUnaryExpression )
            	    // InternalAlf.g:9068:3: lv_operand2_3_0= ruleUnaryExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getMultiplicativeExpressionAccess().getOperand2UnaryExpressionParserRuleCall_1_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_81);
            	    lv_operand2_3_0=ruleUnaryExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getMultiplicativeExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"operand2",
            	              		lv_operand2_3_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.UnaryExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop163;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleMultiplicativeExpression"


    // $ANTLR start "entryRuleMultiplicativeOperator"
    // InternalAlf.g:9092:1: entryRuleMultiplicativeOperator returns [String current=null] : iv_ruleMultiplicativeOperator= ruleMultiplicativeOperator EOF ;
    public final String entryRuleMultiplicativeOperator() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleMultiplicativeOperator = null;


        try {
            // InternalAlf.g:9093:2: (iv_ruleMultiplicativeOperator= ruleMultiplicativeOperator EOF )
            // InternalAlf.g:9094:2: iv_ruleMultiplicativeOperator= ruleMultiplicativeOperator EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getMultiplicativeOperatorRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleMultiplicativeOperator=ruleMultiplicativeOperator();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleMultiplicativeOperator.getText(); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleMultiplicativeOperator"


    // $ANTLR start "ruleMultiplicativeOperator"
    // InternalAlf.g:9101:1: ruleMultiplicativeOperator returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '*' | kw= '/' | kw= '%' ) ;
    public final AntlrDatatypeRuleToken ruleMultiplicativeOperator() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // InternalAlf.g:9104:28: ( (kw= '*' | kw= '/' | kw= '%' ) )
            // InternalAlf.g:9105:1: (kw= '*' | kw= '/' | kw= '%' )
            {
            // InternalAlf.g:9105:1: (kw= '*' | kw= '/' | kw= '%' )
            int alt164=3;
            switch ( input.LA(1) ) {
            case 20:
                {
                alt164=1;
                }
                break;
            case 77:
                {
                alt164=2;
                }
                break;
            case 78:
                {
                alt164=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 164, 0, input);

                throw nvae;
            }

            switch (alt164) {
                case 1 :
                    // InternalAlf.g:9106:2: kw= '*'
                    {
                    kw=(Token)match(input,20,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getMultiplicativeOperatorAccess().getAsteriskKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:9113:2: kw= '/'
                    {
                    kw=(Token)match(input,77,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getMultiplicativeOperatorAccess().getSolidusKeyword_1()); 
                          
                    }

                    }
                    break;
                case 3 :
                    // InternalAlf.g:9120:2: kw= '%'
                    {
                    kw=(Token)match(input,78,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getMultiplicativeOperatorAccess().getPercentSignKeyword_2()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleMultiplicativeOperator"


    // $ANTLR start "entryRuleAdditiveExpression"
    // InternalAlf.g:9133:1: entryRuleAdditiveExpression returns [EObject current=null] : iv_ruleAdditiveExpression= ruleAdditiveExpression EOF ;
    public final EObject entryRuleAdditiveExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAdditiveExpression = null;


        try {
            // InternalAlf.g:9134:2: (iv_ruleAdditiveExpression= ruleAdditiveExpression EOF )
            // InternalAlf.g:9135:2: iv_ruleAdditiveExpression= ruleAdditiveExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAdditiveExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleAdditiveExpression=ruleAdditiveExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAdditiveExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAdditiveExpression"


    // $ANTLR start "ruleAdditiveExpression"
    // InternalAlf.g:9142:1: ruleAdditiveExpression returns [EObject current=null] : (this_MultiplicativeExpression_0= ruleMultiplicativeExpression ( () ( (lv_operator_2_0= ruleAdditiveOperator ) ) ( (lv_operand2_3_0= ruleMultiplicativeExpression ) ) )* ) ;
    public final EObject ruleAdditiveExpression() throws RecognitionException {
        EObject current = null;

        EObject this_MultiplicativeExpression_0 = null;

        AntlrDatatypeRuleToken lv_operator_2_0 = null;

        EObject lv_operand2_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:9145:28: ( (this_MultiplicativeExpression_0= ruleMultiplicativeExpression ( () ( (lv_operator_2_0= ruleAdditiveOperator ) ) ( (lv_operand2_3_0= ruleMultiplicativeExpression ) ) )* ) )
            // InternalAlf.g:9146:1: (this_MultiplicativeExpression_0= ruleMultiplicativeExpression ( () ( (lv_operator_2_0= ruleAdditiveOperator ) ) ( (lv_operand2_3_0= ruleMultiplicativeExpression ) ) )* )
            {
            // InternalAlf.g:9146:1: (this_MultiplicativeExpression_0= ruleMultiplicativeExpression ( () ( (lv_operator_2_0= ruleAdditiveOperator ) ) ( (lv_operand2_3_0= ruleMultiplicativeExpression ) ) )* )
            // InternalAlf.g:9147:2: this_MultiplicativeExpression_0= ruleMultiplicativeExpression ( () ( (lv_operator_2_0= ruleAdditiveOperator ) ) ( (lv_operand2_3_0= ruleMultiplicativeExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getAdditiveExpressionAccess().getMultiplicativeExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_82);
            this_MultiplicativeExpression_0=ruleMultiplicativeExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_MultiplicativeExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:9158:1: ( () ( (lv_operator_2_0= ruleAdditiveOperator ) ) ( (lv_operand2_3_0= ruleMultiplicativeExpression ) ) )*
            loop165:
            do {
                int alt165=2;
                int LA165_0 = input.LA(1);

                if ( ((LA165_0>=74 && LA165_0<=75)) ) {
                    alt165=1;
                }


                switch (alt165) {
            	case 1 :
            	    // InternalAlf.g:9158:2: () ( (lv_operator_2_0= ruleAdditiveOperator ) ) ( (lv_operand2_3_0= ruleMultiplicativeExpression ) )
            	    {
            	    // InternalAlf.g:9158:2: ()
            	    // InternalAlf.g:9159:2: 
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	  /* */ 
            	      	
            	    }
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getAdditiveExpressionAccess().getArithmeticExpressionOperand1Action_1_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // InternalAlf.g:9167:2: ( (lv_operator_2_0= ruleAdditiveOperator ) )
            	    // InternalAlf.g:9168:1: (lv_operator_2_0= ruleAdditiveOperator )
            	    {
            	    // InternalAlf.g:9168:1: (lv_operator_2_0= ruleAdditiveOperator )
            	    // InternalAlf.g:9169:3: lv_operator_2_0= ruleAdditiveOperator
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getAdditiveExpressionAccess().getOperatorAdditiveOperatorParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_69);
            	    lv_operator_2_0=ruleAdditiveOperator();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getAdditiveExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"operator",
            	              		lv_operator_2_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.AdditiveOperator");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }

            	    // InternalAlf.g:9185:2: ( (lv_operand2_3_0= ruleMultiplicativeExpression ) )
            	    // InternalAlf.g:9186:1: (lv_operand2_3_0= ruleMultiplicativeExpression )
            	    {
            	    // InternalAlf.g:9186:1: (lv_operand2_3_0= ruleMultiplicativeExpression )
            	    // InternalAlf.g:9187:3: lv_operand2_3_0= ruleMultiplicativeExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getAdditiveExpressionAccess().getOperand2MultiplicativeExpressionParserRuleCall_1_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_82);
            	    lv_operand2_3_0=ruleMultiplicativeExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getAdditiveExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"operand2",
            	              		lv_operand2_3_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.MultiplicativeExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop165;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAdditiveExpression"


    // $ANTLR start "entryRuleAdditiveOperator"
    // InternalAlf.g:9211:1: entryRuleAdditiveOperator returns [String current=null] : iv_ruleAdditiveOperator= ruleAdditiveOperator EOF ;
    public final String entryRuleAdditiveOperator() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleAdditiveOperator = null;


        try {
            // InternalAlf.g:9212:2: (iv_ruleAdditiveOperator= ruleAdditiveOperator EOF )
            // InternalAlf.g:9213:2: iv_ruleAdditiveOperator= ruleAdditiveOperator EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAdditiveOperatorRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleAdditiveOperator=ruleAdditiveOperator();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAdditiveOperator.getText(); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAdditiveOperator"


    // $ANTLR start "ruleAdditiveOperator"
    // InternalAlf.g:9220:1: ruleAdditiveOperator returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+' | kw= '-' ) ;
    public final AntlrDatatypeRuleToken ruleAdditiveOperator() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // InternalAlf.g:9223:28: ( (kw= '+' | kw= '-' ) )
            // InternalAlf.g:9224:1: (kw= '+' | kw= '-' )
            {
            // InternalAlf.g:9224:1: (kw= '+' | kw= '-' )
            int alt166=2;
            int LA166_0 = input.LA(1);

            if ( (LA166_0==74) ) {
                alt166=1;
            }
            else if ( (LA166_0==75) ) {
                alt166=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 166, 0, input);

                throw nvae;
            }
            switch (alt166) {
                case 1 :
                    // InternalAlf.g:9225:2: kw= '+'
                    {
                    kw=(Token)match(input,74,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getAdditiveOperatorAccess().getPlusSignKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:9232:2: kw= '-'
                    {
                    kw=(Token)match(input,75,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getAdditiveOperatorAccess().getHyphenMinusKeyword_1()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAdditiveOperator"


    // $ANTLR start "entryRuleShiftExpression"
    // InternalAlf.g:9245:1: entryRuleShiftExpression returns [EObject current=null] : iv_ruleShiftExpression= ruleShiftExpression EOF ;
    public final EObject entryRuleShiftExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleShiftExpression = null;


        try {
            // InternalAlf.g:9246:2: (iv_ruleShiftExpression= ruleShiftExpression EOF )
            // InternalAlf.g:9247:2: iv_ruleShiftExpression= ruleShiftExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getShiftExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleShiftExpression=ruleShiftExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleShiftExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleShiftExpression"


    // $ANTLR start "ruleShiftExpression"
    // InternalAlf.g:9254:1: ruleShiftExpression returns [EObject current=null] : (this_AdditiveExpression_0= ruleAdditiveExpression ( () ( (lv_operator_2_0= ruleShiftOperator ) ) ( (lv_operand2_3_0= ruleAdditiveExpression ) ) )* ) ;
    public final EObject ruleShiftExpression() throws RecognitionException {
        EObject current = null;

        EObject this_AdditiveExpression_0 = null;

        AntlrDatatypeRuleToken lv_operator_2_0 = null;

        EObject lv_operand2_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:9257:28: ( (this_AdditiveExpression_0= ruleAdditiveExpression ( () ( (lv_operator_2_0= ruleShiftOperator ) ) ( (lv_operand2_3_0= ruleAdditiveExpression ) ) )* ) )
            // InternalAlf.g:9258:1: (this_AdditiveExpression_0= ruleAdditiveExpression ( () ( (lv_operator_2_0= ruleShiftOperator ) ) ( (lv_operand2_3_0= ruleAdditiveExpression ) ) )* )
            {
            // InternalAlf.g:9258:1: (this_AdditiveExpression_0= ruleAdditiveExpression ( () ( (lv_operator_2_0= ruleShiftOperator ) ) ( (lv_operand2_3_0= ruleAdditiveExpression ) ) )* )
            // InternalAlf.g:9259:2: this_AdditiveExpression_0= ruleAdditiveExpression ( () ( (lv_operator_2_0= ruleShiftOperator ) ) ( (lv_operand2_3_0= ruleAdditiveExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getShiftExpressionAccess().getAdditiveExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_83);
            this_AdditiveExpression_0=ruleAdditiveExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_AdditiveExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:9270:1: ( () ( (lv_operator_2_0= ruleShiftOperator ) ) ( (lv_operand2_3_0= ruleAdditiveExpression ) ) )*
            loop167:
            do {
                int alt167=2;
                int LA167_0 = input.LA(1);

                if ( ((LA167_0>=79 && LA167_0<=81)) ) {
                    alt167=1;
                }


                switch (alt167) {
            	case 1 :
            	    // InternalAlf.g:9270:2: () ( (lv_operator_2_0= ruleShiftOperator ) ) ( (lv_operand2_3_0= ruleAdditiveExpression ) )
            	    {
            	    // InternalAlf.g:9270:2: ()
            	    // InternalAlf.g:9271:2: 
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	  /* */ 
            	      	
            	    }
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getShiftExpressionAccess().getShiftExpressionOperand1Action_1_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // InternalAlf.g:9279:2: ( (lv_operator_2_0= ruleShiftOperator ) )
            	    // InternalAlf.g:9280:1: (lv_operator_2_0= ruleShiftOperator )
            	    {
            	    // InternalAlf.g:9280:1: (lv_operator_2_0= ruleShiftOperator )
            	    // InternalAlf.g:9281:3: lv_operator_2_0= ruleShiftOperator
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getShiftExpressionAccess().getOperatorShiftOperatorParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_69);
            	    lv_operator_2_0=ruleShiftOperator();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getShiftExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"operator",
            	              		lv_operator_2_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.ShiftOperator");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }

            	    // InternalAlf.g:9297:2: ( (lv_operand2_3_0= ruleAdditiveExpression ) )
            	    // InternalAlf.g:9298:1: (lv_operand2_3_0= ruleAdditiveExpression )
            	    {
            	    // InternalAlf.g:9298:1: (lv_operand2_3_0= ruleAdditiveExpression )
            	    // InternalAlf.g:9299:3: lv_operand2_3_0= ruleAdditiveExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getShiftExpressionAccess().getOperand2AdditiveExpressionParserRuleCall_1_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_83);
            	    lv_operand2_3_0=ruleAdditiveExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getShiftExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"operand2",
            	              		lv_operand2_3_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.AdditiveExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop167;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleShiftExpression"


    // $ANTLR start "entryRuleShiftOperator"
    // InternalAlf.g:9323:1: entryRuleShiftOperator returns [String current=null] : iv_ruleShiftOperator= ruleShiftOperator EOF ;
    public final String entryRuleShiftOperator() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleShiftOperator = null;


        try {
            // InternalAlf.g:9324:2: (iv_ruleShiftOperator= ruleShiftOperator EOF )
            // InternalAlf.g:9325:2: iv_ruleShiftOperator= ruleShiftOperator EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getShiftOperatorRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleShiftOperator=ruleShiftOperator();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleShiftOperator.getText(); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleShiftOperator"


    // $ANTLR start "ruleShiftOperator"
    // InternalAlf.g:9332:1: ruleShiftOperator returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '<<' | kw= '>>' | kw= '>>>' ) ;
    public final AntlrDatatypeRuleToken ruleShiftOperator() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // InternalAlf.g:9335:28: ( (kw= '<<' | kw= '>>' | kw= '>>>' ) )
            // InternalAlf.g:9336:1: (kw= '<<' | kw= '>>' | kw= '>>>' )
            {
            // InternalAlf.g:9336:1: (kw= '<<' | kw= '>>' | kw= '>>>' )
            int alt168=3;
            switch ( input.LA(1) ) {
            case 79:
                {
                alt168=1;
                }
                break;
            case 80:
                {
                alt168=2;
                }
                break;
            case 81:
                {
                alt168=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 168, 0, input);

                throw nvae;
            }

            switch (alt168) {
                case 1 :
                    // InternalAlf.g:9337:2: kw= '<<'
                    {
                    kw=(Token)match(input,79,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getShiftOperatorAccess().getLessThanSignLessThanSignKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:9344:2: kw= '>>'
                    {
                    kw=(Token)match(input,80,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getShiftOperatorAccess().getGreaterThanSignGreaterThanSignKeyword_1()); 
                          
                    }

                    }
                    break;
                case 3 :
                    // InternalAlf.g:9351:2: kw= '>>>'
                    {
                    kw=(Token)match(input,81,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getShiftOperatorAccess().getGreaterThanSignGreaterThanSignGreaterThanSignKeyword_2()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleShiftOperator"


    // $ANTLR start "entryRuleRelationalExpression"
    // InternalAlf.g:9364:1: entryRuleRelationalExpression returns [EObject current=null] : iv_ruleRelationalExpression= ruleRelationalExpression EOF ;
    public final EObject entryRuleRelationalExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRelationalExpression = null;


        try {
            // InternalAlf.g:9365:2: (iv_ruleRelationalExpression= ruleRelationalExpression EOF )
            // InternalAlf.g:9366:2: iv_ruleRelationalExpression= ruleRelationalExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getRelationalExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleRelationalExpression=ruleRelationalExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleRelationalExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRelationalExpression"


    // $ANTLR start "ruleRelationalExpression"
    // InternalAlf.g:9373:1: ruleRelationalExpression returns [EObject current=null] : (this_ShiftExpression_0= ruleShiftExpression ( () ( (lv_operator_2_0= ruleRelationalOperator ) ) ( (lv_operand2_3_0= ruleShiftExpression ) ) )? ) ;
    public final EObject ruleRelationalExpression() throws RecognitionException {
        EObject current = null;

        EObject this_ShiftExpression_0 = null;

        AntlrDatatypeRuleToken lv_operator_2_0 = null;

        EObject lv_operand2_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:9376:28: ( (this_ShiftExpression_0= ruleShiftExpression ( () ( (lv_operator_2_0= ruleRelationalOperator ) ) ( (lv_operand2_3_0= ruleShiftExpression ) ) )? ) )
            // InternalAlf.g:9377:1: (this_ShiftExpression_0= ruleShiftExpression ( () ( (lv_operator_2_0= ruleRelationalOperator ) ) ( (lv_operand2_3_0= ruleShiftExpression ) ) )? )
            {
            // InternalAlf.g:9377:1: (this_ShiftExpression_0= ruleShiftExpression ( () ( (lv_operator_2_0= ruleRelationalOperator ) ) ( (lv_operand2_3_0= ruleShiftExpression ) ) )? )
            // InternalAlf.g:9378:2: this_ShiftExpression_0= ruleShiftExpression ( () ( (lv_operator_2_0= ruleRelationalOperator ) ) ( (lv_operand2_3_0= ruleShiftExpression ) ) )?
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getRelationalExpressionAccess().getShiftExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_84);
            this_ShiftExpression_0=ruleShiftExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_ShiftExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:9389:1: ( () ( (lv_operator_2_0= ruleRelationalOperator ) ) ( (lv_operand2_3_0= ruleShiftExpression ) ) )?
            int alt169=2;
            int LA169_0 = input.LA(1);

            if ( ((LA169_0>=36 && LA169_0<=37)||(LA169_0>=82 && LA169_0<=83)) ) {
                alt169=1;
            }
            switch (alt169) {
                case 1 :
                    // InternalAlf.g:9389:2: () ( (lv_operator_2_0= ruleRelationalOperator ) ) ( (lv_operand2_3_0= ruleShiftExpression ) )
                    {
                    // InternalAlf.g:9389:2: ()
                    // InternalAlf.g:9390:2: 
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElementAndSet(
                                  grammarAccess.getRelationalExpressionAccess().getRelationalExpressionOperand1Action_1_0(),
                                  current);
                          
                    }

                    }

                    // InternalAlf.g:9398:2: ( (lv_operator_2_0= ruleRelationalOperator ) )
                    // InternalAlf.g:9399:1: (lv_operator_2_0= ruleRelationalOperator )
                    {
                    // InternalAlf.g:9399:1: (lv_operator_2_0= ruleRelationalOperator )
                    // InternalAlf.g:9400:3: lv_operator_2_0= ruleRelationalOperator
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getRelationalExpressionAccess().getOperatorRelationalOperatorParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_69);
                    lv_operator_2_0=ruleRelationalOperator();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getRelationalExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"operator",
                              		lv_operator_2_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.RelationalOperator");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // InternalAlf.g:9416:2: ( (lv_operand2_3_0= ruleShiftExpression ) )
                    // InternalAlf.g:9417:1: (lv_operand2_3_0= ruleShiftExpression )
                    {
                    // InternalAlf.g:9417:1: (lv_operand2_3_0= ruleShiftExpression )
                    // InternalAlf.g:9418:3: lv_operand2_3_0= ruleShiftExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getRelationalExpressionAccess().getOperand2ShiftExpressionParserRuleCall_1_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_operand2_3_0=ruleShiftExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getRelationalExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"operand2",
                              		lv_operand2_3_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.ShiftExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRelationalExpression"


    // $ANTLR start "entryRuleRelationalOperator"
    // InternalAlf.g:9442:1: entryRuleRelationalOperator returns [String current=null] : iv_ruleRelationalOperator= ruleRelationalOperator EOF ;
    public final String entryRuleRelationalOperator() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleRelationalOperator = null;


        try {
            // InternalAlf.g:9443:2: (iv_ruleRelationalOperator= ruleRelationalOperator EOF )
            // InternalAlf.g:9444:2: iv_ruleRelationalOperator= ruleRelationalOperator EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getRelationalOperatorRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleRelationalOperator=ruleRelationalOperator();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleRelationalOperator.getText(); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRelationalOperator"


    // $ANTLR start "ruleRelationalOperator"
    // InternalAlf.g:9451:1: ruleRelationalOperator returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '<' | kw= '>' | kw= '<=' | kw= '>=' ) ;
    public final AntlrDatatypeRuleToken ruleRelationalOperator() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // InternalAlf.g:9454:28: ( (kw= '<' | kw= '>' | kw= '<=' | kw= '>=' ) )
            // InternalAlf.g:9455:1: (kw= '<' | kw= '>' | kw= '<=' | kw= '>=' )
            {
            // InternalAlf.g:9455:1: (kw= '<' | kw= '>' | kw= '<=' | kw= '>=' )
            int alt170=4;
            switch ( input.LA(1) ) {
            case 36:
                {
                alt170=1;
                }
                break;
            case 37:
                {
                alt170=2;
                }
                break;
            case 82:
                {
                alt170=3;
                }
                break;
            case 83:
                {
                alt170=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 170, 0, input);

                throw nvae;
            }

            switch (alt170) {
                case 1 :
                    // InternalAlf.g:9456:2: kw= '<'
                    {
                    kw=(Token)match(input,36,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getRelationalOperatorAccess().getLessThanSignKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:9463:2: kw= '>'
                    {
                    kw=(Token)match(input,37,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getRelationalOperatorAccess().getGreaterThanSignKeyword_1()); 
                          
                    }

                    }
                    break;
                case 3 :
                    // InternalAlf.g:9470:2: kw= '<='
                    {
                    kw=(Token)match(input,82,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getRelationalOperatorAccess().getLessThanSignEqualsSignKeyword_2()); 
                          
                    }

                    }
                    break;
                case 4 :
                    // InternalAlf.g:9477:2: kw= '>='
                    {
                    kw=(Token)match(input,83,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getRelationalOperatorAccess().getGreaterThanSignEqualsSignKeyword_3()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRelationalOperator"


    // $ANTLR start "entryRuleClassificationExpression"
    // InternalAlf.g:9490:1: entryRuleClassificationExpression returns [EObject current=null] : iv_ruleClassificationExpression= ruleClassificationExpression EOF ;
    public final EObject entryRuleClassificationExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleClassificationExpression = null;


        try {
            // InternalAlf.g:9491:2: (iv_ruleClassificationExpression= ruleClassificationExpression EOF )
            // InternalAlf.g:9492:2: iv_ruleClassificationExpression= ruleClassificationExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getClassificationExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleClassificationExpression=ruleClassificationExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleClassificationExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleClassificationExpression"


    // $ANTLR start "ruleClassificationExpression"
    // InternalAlf.g:9499:1: ruleClassificationExpression returns [EObject current=null] : (this_RelationalExpression_0= ruleRelationalExpression ( () ( (lv_operator_2_0= ruleClassificationOperator ) ) ( (lv_typeName_3_0= ruleQualifiedName ) ) )? ) ;
    public final EObject ruleClassificationExpression() throws RecognitionException {
        EObject current = null;

        EObject this_RelationalExpression_0 = null;

        AntlrDatatypeRuleToken lv_operator_2_0 = null;

        EObject lv_typeName_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:9502:28: ( (this_RelationalExpression_0= ruleRelationalExpression ( () ( (lv_operator_2_0= ruleClassificationOperator ) ) ( (lv_typeName_3_0= ruleQualifiedName ) ) )? ) )
            // InternalAlf.g:9503:1: (this_RelationalExpression_0= ruleRelationalExpression ( () ( (lv_operator_2_0= ruleClassificationOperator ) ) ( (lv_typeName_3_0= ruleQualifiedName ) ) )? )
            {
            // InternalAlf.g:9503:1: (this_RelationalExpression_0= ruleRelationalExpression ( () ( (lv_operator_2_0= ruleClassificationOperator ) ) ( (lv_typeName_3_0= ruleQualifiedName ) ) )? )
            // InternalAlf.g:9504:2: this_RelationalExpression_0= ruleRelationalExpression ( () ( (lv_operator_2_0= ruleClassificationOperator ) ) ( (lv_typeName_3_0= ruleQualifiedName ) ) )?
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getClassificationExpressionAccess().getRelationalExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_85);
            this_RelationalExpression_0=ruleRelationalExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_RelationalExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:9515:1: ( () ( (lv_operator_2_0= ruleClassificationOperator ) ) ( (lv_typeName_3_0= ruleQualifiedName ) ) )?
            int alt171=2;
            int LA171_0 = input.LA(1);

            if ( ((LA171_0>=84 && LA171_0<=85)) ) {
                alt171=1;
            }
            switch (alt171) {
                case 1 :
                    // InternalAlf.g:9515:2: () ( (lv_operator_2_0= ruleClassificationOperator ) ) ( (lv_typeName_3_0= ruleQualifiedName ) )
                    {
                    // InternalAlf.g:9515:2: ()
                    // InternalAlf.g:9516:2: 
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElementAndSet(
                                  grammarAccess.getClassificationExpressionAccess().getClassificationExpressionOperandAction_1_0(),
                                  current);
                          
                    }

                    }

                    // InternalAlf.g:9524:2: ( (lv_operator_2_0= ruleClassificationOperator ) )
                    // InternalAlf.g:9525:1: (lv_operator_2_0= ruleClassificationOperator )
                    {
                    // InternalAlf.g:9525:1: (lv_operator_2_0= ruleClassificationOperator )
                    // InternalAlf.g:9526:3: lv_operator_2_0= ruleClassificationOperator
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getClassificationExpressionAccess().getOperatorClassificationOperatorParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_4);
                    lv_operator_2_0=ruleClassificationOperator();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getClassificationExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"operator",
                              		lv_operator_2_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.ClassificationOperator");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // InternalAlf.g:9542:2: ( (lv_typeName_3_0= ruleQualifiedName ) )
                    // InternalAlf.g:9543:1: (lv_typeName_3_0= ruleQualifiedName )
                    {
                    // InternalAlf.g:9543:1: (lv_typeName_3_0= ruleQualifiedName )
                    // InternalAlf.g:9544:3: lv_typeName_3_0= ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getClassificationExpressionAccess().getTypeNameQualifiedNameParserRuleCall_1_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_typeName_3_0=ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getClassificationExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"typeName",
                              		lv_typeName_3_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.QualifiedName");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleClassificationExpression"


    // $ANTLR start "entryRuleClassificationOperator"
    // InternalAlf.g:9568:1: entryRuleClassificationOperator returns [String current=null] : iv_ruleClassificationOperator= ruleClassificationOperator EOF ;
    public final String entryRuleClassificationOperator() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleClassificationOperator = null;


        try {
            // InternalAlf.g:9569:2: (iv_ruleClassificationOperator= ruleClassificationOperator EOF )
            // InternalAlf.g:9570:2: iv_ruleClassificationOperator= ruleClassificationOperator EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getClassificationOperatorRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleClassificationOperator=ruleClassificationOperator();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleClassificationOperator.getText(); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleClassificationOperator"


    // $ANTLR start "ruleClassificationOperator"
    // InternalAlf.g:9577:1: ruleClassificationOperator returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'instanceof' | kw= 'hastype' ) ;
    public final AntlrDatatypeRuleToken ruleClassificationOperator() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // InternalAlf.g:9580:28: ( (kw= 'instanceof' | kw= 'hastype' ) )
            // InternalAlf.g:9581:1: (kw= 'instanceof' | kw= 'hastype' )
            {
            // InternalAlf.g:9581:1: (kw= 'instanceof' | kw= 'hastype' )
            int alt172=2;
            int LA172_0 = input.LA(1);

            if ( (LA172_0==84) ) {
                alt172=1;
            }
            else if ( (LA172_0==85) ) {
                alt172=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 172, 0, input);

                throw nvae;
            }
            switch (alt172) {
                case 1 :
                    // InternalAlf.g:9582:2: kw= 'instanceof'
                    {
                    kw=(Token)match(input,84,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getClassificationOperatorAccess().getInstanceofKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:9589:2: kw= 'hastype'
                    {
                    kw=(Token)match(input,85,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getClassificationOperatorAccess().getHastypeKeyword_1()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleClassificationOperator"


    // $ANTLR start "entryRuleEqualityExpression"
    // InternalAlf.g:9602:1: entryRuleEqualityExpression returns [EObject current=null] : iv_ruleEqualityExpression= ruleEqualityExpression EOF ;
    public final EObject entryRuleEqualityExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEqualityExpression = null;


        try {
            // InternalAlf.g:9603:2: (iv_ruleEqualityExpression= ruleEqualityExpression EOF )
            // InternalAlf.g:9604:2: iv_ruleEqualityExpression= ruleEqualityExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getEqualityExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleEqualityExpression=ruleEqualityExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleEqualityExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEqualityExpression"


    // $ANTLR start "ruleEqualityExpression"
    // InternalAlf.g:9611:1: ruleEqualityExpression returns [EObject current=null] : (this_ClassificationExpression_0= ruleClassificationExpression ( () ( (lv_operator_2_0= ruleEqualityOperator ) ) ( (lv_operand2_3_0= ruleClassificationExpression ) ) )* ) ;
    public final EObject ruleEqualityExpression() throws RecognitionException {
        EObject current = null;

        EObject this_ClassificationExpression_0 = null;

        AntlrDatatypeRuleToken lv_operator_2_0 = null;

        EObject lv_operand2_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:9614:28: ( (this_ClassificationExpression_0= ruleClassificationExpression ( () ( (lv_operator_2_0= ruleEqualityOperator ) ) ( (lv_operand2_3_0= ruleClassificationExpression ) ) )* ) )
            // InternalAlf.g:9615:1: (this_ClassificationExpression_0= ruleClassificationExpression ( () ( (lv_operator_2_0= ruleEqualityOperator ) ) ( (lv_operand2_3_0= ruleClassificationExpression ) ) )* )
            {
            // InternalAlf.g:9615:1: (this_ClassificationExpression_0= ruleClassificationExpression ( () ( (lv_operator_2_0= ruleEqualityOperator ) ) ( (lv_operand2_3_0= ruleClassificationExpression ) ) )* )
            // InternalAlf.g:9616:2: this_ClassificationExpression_0= ruleClassificationExpression ( () ( (lv_operator_2_0= ruleEqualityOperator ) ) ( (lv_operand2_3_0= ruleClassificationExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getEqualityExpressionAccess().getClassificationExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_86);
            this_ClassificationExpression_0=ruleClassificationExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_ClassificationExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:9627:1: ( () ( (lv_operator_2_0= ruleEqualityOperator ) ) ( (lv_operand2_3_0= ruleClassificationExpression ) ) )*
            loop173:
            do {
                int alt173=2;
                int LA173_0 = input.LA(1);

                if ( ((LA173_0>=86 && LA173_0<=87)) ) {
                    alt173=1;
                }


                switch (alt173) {
            	case 1 :
            	    // InternalAlf.g:9627:2: () ( (lv_operator_2_0= ruleEqualityOperator ) ) ( (lv_operand2_3_0= ruleClassificationExpression ) )
            	    {
            	    // InternalAlf.g:9627:2: ()
            	    // InternalAlf.g:9628:2: 
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	  /* */ 
            	      	
            	    }
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getEqualityExpressionAccess().getEqualityExpressionOperand1Action_1_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // InternalAlf.g:9636:2: ( (lv_operator_2_0= ruleEqualityOperator ) )
            	    // InternalAlf.g:9637:1: (lv_operator_2_0= ruleEqualityOperator )
            	    {
            	    // InternalAlf.g:9637:1: (lv_operator_2_0= ruleEqualityOperator )
            	    // InternalAlf.g:9638:3: lv_operator_2_0= ruleEqualityOperator
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getEqualityExpressionAccess().getOperatorEqualityOperatorParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_69);
            	    lv_operator_2_0=ruleEqualityOperator();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getEqualityExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"operator",
            	              		lv_operator_2_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.EqualityOperator");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }

            	    // InternalAlf.g:9654:2: ( (lv_operand2_3_0= ruleClassificationExpression ) )
            	    // InternalAlf.g:9655:1: (lv_operand2_3_0= ruleClassificationExpression )
            	    {
            	    // InternalAlf.g:9655:1: (lv_operand2_3_0= ruleClassificationExpression )
            	    // InternalAlf.g:9656:3: lv_operand2_3_0= ruleClassificationExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getEqualityExpressionAccess().getOperand2ClassificationExpressionParserRuleCall_1_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_86);
            	    lv_operand2_3_0=ruleClassificationExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getEqualityExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"operand2",
            	              		lv_operand2_3_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.ClassificationExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop173;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEqualityExpression"


    // $ANTLR start "entryRuleEqualityOperator"
    // InternalAlf.g:9680:1: entryRuleEqualityOperator returns [String current=null] : iv_ruleEqualityOperator= ruleEqualityOperator EOF ;
    public final String entryRuleEqualityOperator() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleEqualityOperator = null;


        try {
            // InternalAlf.g:9681:2: (iv_ruleEqualityOperator= ruleEqualityOperator EOF )
            // InternalAlf.g:9682:2: iv_ruleEqualityOperator= ruleEqualityOperator EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getEqualityOperatorRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleEqualityOperator=ruleEqualityOperator();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleEqualityOperator.getText(); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEqualityOperator"


    // $ANTLR start "ruleEqualityOperator"
    // InternalAlf.g:9689:1: ruleEqualityOperator returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '==' | kw= '!=' ) ;
    public final AntlrDatatypeRuleToken ruleEqualityOperator() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // InternalAlf.g:9692:28: ( (kw= '==' | kw= '!=' ) )
            // InternalAlf.g:9693:1: (kw= '==' | kw= '!=' )
            {
            // InternalAlf.g:9693:1: (kw= '==' | kw= '!=' )
            int alt174=2;
            int LA174_0 = input.LA(1);

            if ( (LA174_0==86) ) {
                alt174=1;
            }
            else if ( (LA174_0==87) ) {
                alt174=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 174, 0, input);

                throw nvae;
            }
            switch (alt174) {
                case 1 :
                    // InternalAlf.g:9694:2: kw= '=='
                    {
                    kw=(Token)match(input,86,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getEqualityOperatorAccess().getEqualsSignEqualsSignKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:9701:2: kw= '!='
                    {
                    kw=(Token)match(input,87,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getEqualityOperatorAccess().getExclamationMarkEqualsSignKeyword_1()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEqualityOperator"


    // $ANTLR start "entryRuleAndExpression"
    // InternalAlf.g:9714:1: entryRuleAndExpression returns [EObject current=null] : iv_ruleAndExpression= ruleAndExpression EOF ;
    public final EObject entryRuleAndExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAndExpression = null;


        try {
            // InternalAlf.g:9715:2: (iv_ruleAndExpression= ruleAndExpression EOF )
            // InternalAlf.g:9716:2: iv_ruleAndExpression= ruleAndExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAndExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleAndExpression=ruleAndExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAndExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAndExpression"


    // $ANTLR start "ruleAndExpression"
    // InternalAlf.g:9723:1: ruleAndExpression returns [EObject current=null] : (this_EqualityExpression_0= ruleEqualityExpression ( () ( (lv_operator_2_0= '&' ) ) ( (lv_operand2_3_0= ruleEqualityExpression ) ) )* ) ;
    public final EObject ruleAndExpression() throws RecognitionException {
        EObject current = null;

        Token lv_operator_2_0=null;
        EObject this_EqualityExpression_0 = null;

        EObject lv_operand2_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:9726:28: ( (this_EqualityExpression_0= ruleEqualityExpression ( () ( (lv_operator_2_0= '&' ) ) ( (lv_operand2_3_0= ruleEqualityExpression ) ) )* ) )
            // InternalAlf.g:9727:1: (this_EqualityExpression_0= ruleEqualityExpression ( () ( (lv_operator_2_0= '&' ) ) ( (lv_operand2_3_0= ruleEqualityExpression ) ) )* )
            {
            // InternalAlf.g:9727:1: (this_EqualityExpression_0= ruleEqualityExpression ( () ( (lv_operator_2_0= '&' ) ) ( (lv_operand2_3_0= ruleEqualityExpression ) ) )* )
            // InternalAlf.g:9728:2: this_EqualityExpression_0= ruleEqualityExpression ( () ( (lv_operator_2_0= '&' ) ) ( (lv_operand2_3_0= ruleEqualityExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getAndExpressionAccess().getEqualityExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_87);
            this_EqualityExpression_0=ruleEqualityExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_EqualityExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:9739:1: ( () ( (lv_operator_2_0= '&' ) ) ( (lv_operand2_3_0= ruleEqualityExpression ) ) )*
            loop175:
            do {
                int alt175=2;
                int LA175_0 = input.LA(1);

                if ( (LA175_0==88) ) {
                    alt175=1;
                }


                switch (alt175) {
            	case 1 :
            	    // InternalAlf.g:9739:2: () ( (lv_operator_2_0= '&' ) ) ( (lv_operand2_3_0= ruleEqualityExpression ) )
            	    {
            	    // InternalAlf.g:9739:2: ()
            	    // InternalAlf.g:9740:2: 
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	  /* */ 
            	      	
            	    }
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getAndExpressionAccess().getLogicalExpressionOperand1Action_1_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // InternalAlf.g:9748:2: ( (lv_operator_2_0= '&' ) )
            	    // InternalAlf.g:9749:1: (lv_operator_2_0= '&' )
            	    {
            	    // InternalAlf.g:9749:1: (lv_operator_2_0= '&' )
            	    // InternalAlf.g:9750:3: lv_operator_2_0= '&'
            	    {
            	    lv_operator_2_0=(Token)match(input,88,FOLLOW_69); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	              newLeafNode(lv_operator_2_0, grammarAccess.getAndExpressionAccess().getOperatorAmpersandKeyword_1_1_0());
            	          
            	    }
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElement(grammarAccess.getAndExpressionRule());
            	      	        }
            	             		setWithLastConsumed(current, "operator", lv_operator_2_0, "&");
            	      	    
            	    }

            	    }


            	    }

            	    // InternalAlf.g:9763:2: ( (lv_operand2_3_0= ruleEqualityExpression ) )
            	    // InternalAlf.g:9764:1: (lv_operand2_3_0= ruleEqualityExpression )
            	    {
            	    // InternalAlf.g:9764:1: (lv_operand2_3_0= ruleEqualityExpression )
            	    // InternalAlf.g:9765:3: lv_operand2_3_0= ruleEqualityExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getAndExpressionAccess().getOperand2EqualityExpressionParserRuleCall_1_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_87);
            	    lv_operand2_3_0=ruleEqualityExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getAndExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"operand2",
            	              		lv_operand2_3_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.EqualityExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop175;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAndExpression"


    // $ANTLR start "entryRuleExclusiveOrExpression"
    // InternalAlf.g:9789:1: entryRuleExclusiveOrExpression returns [EObject current=null] : iv_ruleExclusiveOrExpression= ruleExclusiveOrExpression EOF ;
    public final EObject entryRuleExclusiveOrExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExclusiveOrExpression = null;


        try {
            // InternalAlf.g:9790:2: (iv_ruleExclusiveOrExpression= ruleExclusiveOrExpression EOF )
            // InternalAlf.g:9791:2: iv_ruleExclusiveOrExpression= ruleExclusiveOrExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getExclusiveOrExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleExclusiveOrExpression=ruleExclusiveOrExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExclusiveOrExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExclusiveOrExpression"


    // $ANTLR start "ruleExclusiveOrExpression"
    // InternalAlf.g:9798:1: ruleExclusiveOrExpression returns [EObject current=null] : (this_AndExpression_0= ruleAndExpression ( () ( (lv_operator_2_0= '^' ) ) ( (lv_operand2_3_0= ruleAndExpression ) ) )* ) ;
    public final EObject ruleExclusiveOrExpression() throws RecognitionException {
        EObject current = null;

        Token lv_operator_2_0=null;
        EObject this_AndExpression_0 = null;

        EObject lv_operand2_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:9801:28: ( (this_AndExpression_0= ruleAndExpression ( () ( (lv_operator_2_0= '^' ) ) ( (lv_operand2_3_0= ruleAndExpression ) ) )* ) )
            // InternalAlf.g:9802:1: (this_AndExpression_0= ruleAndExpression ( () ( (lv_operator_2_0= '^' ) ) ( (lv_operand2_3_0= ruleAndExpression ) ) )* )
            {
            // InternalAlf.g:9802:1: (this_AndExpression_0= ruleAndExpression ( () ( (lv_operator_2_0= '^' ) ) ( (lv_operand2_3_0= ruleAndExpression ) ) )* )
            // InternalAlf.g:9803:2: this_AndExpression_0= ruleAndExpression ( () ( (lv_operator_2_0= '^' ) ) ( (lv_operand2_3_0= ruleAndExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getExclusiveOrExpressionAccess().getAndExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_88);
            this_AndExpression_0=ruleAndExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_AndExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:9814:1: ( () ( (lv_operator_2_0= '^' ) ) ( (lv_operand2_3_0= ruleAndExpression ) ) )*
            loop176:
            do {
                int alt176=2;
                int LA176_0 = input.LA(1);

                if ( (LA176_0==89) ) {
                    alt176=1;
                }


                switch (alt176) {
            	case 1 :
            	    // InternalAlf.g:9814:2: () ( (lv_operator_2_0= '^' ) ) ( (lv_operand2_3_0= ruleAndExpression ) )
            	    {
            	    // InternalAlf.g:9814:2: ()
            	    // InternalAlf.g:9815:2: 
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	  /* */ 
            	      	
            	    }
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getExclusiveOrExpressionAccess().getLogicalExpressionOperand1Action_1_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // InternalAlf.g:9823:2: ( (lv_operator_2_0= '^' ) )
            	    // InternalAlf.g:9824:1: (lv_operator_2_0= '^' )
            	    {
            	    // InternalAlf.g:9824:1: (lv_operator_2_0= '^' )
            	    // InternalAlf.g:9825:3: lv_operator_2_0= '^'
            	    {
            	    lv_operator_2_0=(Token)match(input,89,FOLLOW_69); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	              newLeafNode(lv_operator_2_0, grammarAccess.getExclusiveOrExpressionAccess().getOperatorCircumflexAccentKeyword_1_1_0());
            	          
            	    }
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElement(grammarAccess.getExclusiveOrExpressionRule());
            	      	        }
            	             		setWithLastConsumed(current, "operator", lv_operator_2_0, "^");
            	      	    
            	    }

            	    }


            	    }

            	    // InternalAlf.g:9838:2: ( (lv_operand2_3_0= ruleAndExpression ) )
            	    // InternalAlf.g:9839:1: (lv_operand2_3_0= ruleAndExpression )
            	    {
            	    // InternalAlf.g:9839:1: (lv_operand2_3_0= ruleAndExpression )
            	    // InternalAlf.g:9840:3: lv_operand2_3_0= ruleAndExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getExclusiveOrExpressionAccess().getOperand2AndExpressionParserRuleCall_1_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_88);
            	    lv_operand2_3_0=ruleAndExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getExclusiveOrExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"operand2",
            	              		lv_operand2_3_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.AndExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop176;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExclusiveOrExpression"


    // $ANTLR start "entryRuleInclusiveOrExpression"
    // InternalAlf.g:9864:1: entryRuleInclusiveOrExpression returns [EObject current=null] : iv_ruleInclusiveOrExpression= ruleInclusiveOrExpression EOF ;
    public final EObject entryRuleInclusiveOrExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleInclusiveOrExpression = null;


        try {
            // InternalAlf.g:9865:2: (iv_ruleInclusiveOrExpression= ruleInclusiveOrExpression EOF )
            // InternalAlf.g:9866:2: iv_ruleInclusiveOrExpression= ruleInclusiveOrExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getInclusiveOrExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleInclusiveOrExpression=ruleInclusiveOrExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleInclusiveOrExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleInclusiveOrExpression"


    // $ANTLR start "ruleInclusiveOrExpression"
    // InternalAlf.g:9873:1: ruleInclusiveOrExpression returns [EObject current=null] : (this_ExclusiveOrExpression_0= ruleExclusiveOrExpression ( () ( (lv_operator_2_0= '|' ) ) ( (lv_operand2_3_0= ruleExclusiveOrExpression ) ) )* ) ;
    public final EObject ruleInclusiveOrExpression() throws RecognitionException {
        EObject current = null;

        Token lv_operator_2_0=null;
        EObject this_ExclusiveOrExpression_0 = null;

        EObject lv_operand2_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:9876:28: ( (this_ExclusiveOrExpression_0= ruleExclusiveOrExpression ( () ( (lv_operator_2_0= '|' ) ) ( (lv_operand2_3_0= ruleExclusiveOrExpression ) ) )* ) )
            // InternalAlf.g:9877:1: (this_ExclusiveOrExpression_0= ruleExclusiveOrExpression ( () ( (lv_operator_2_0= '|' ) ) ( (lv_operand2_3_0= ruleExclusiveOrExpression ) ) )* )
            {
            // InternalAlf.g:9877:1: (this_ExclusiveOrExpression_0= ruleExclusiveOrExpression ( () ( (lv_operator_2_0= '|' ) ) ( (lv_operand2_3_0= ruleExclusiveOrExpression ) ) )* )
            // InternalAlf.g:9878:2: this_ExclusiveOrExpression_0= ruleExclusiveOrExpression ( () ( (lv_operator_2_0= '|' ) ) ( (lv_operand2_3_0= ruleExclusiveOrExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getInclusiveOrExpressionAccess().getExclusiveOrExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_89);
            this_ExclusiveOrExpression_0=ruleExclusiveOrExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_ExclusiveOrExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:9889:1: ( () ( (lv_operator_2_0= '|' ) ) ( (lv_operand2_3_0= ruleExclusiveOrExpression ) ) )*
            loop177:
            do {
                int alt177=2;
                int LA177_0 = input.LA(1);

                if ( (LA177_0==90) ) {
                    alt177=1;
                }


                switch (alt177) {
            	case 1 :
            	    // InternalAlf.g:9889:2: () ( (lv_operator_2_0= '|' ) ) ( (lv_operand2_3_0= ruleExclusiveOrExpression ) )
            	    {
            	    // InternalAlf.g:9889:2: ()
            	    // InternalAlf.g:9890:2: 
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	  /* */ 
            	      	
            	    }
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getInclusiveOrExpressionAccess().getLogicalExpressionOperand1Action_1_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // InternalAlf.g:9898:2: ( (lv_operator_2_0= '|' ) )
            	    // InternalAlf.g:9899:1: (lv_operator_2_0= '|' )
            	    {
            	    // InternalAlf.g:9899:1: (lv_operator_2_0= '|' )
            	    // InternalAlf.g:9900:3: lv_operator_2_0= '|'
            	    {
            	    lv_operator_2_0=(Token)match(input,90,FOLLOW_69); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	              newLeafNode(lv_operator_2_0, grammarAccess.getInclusiveOrExpressionAccess().getOperatorVerticalLineKeyword_1_1_0());
            	          
            	    }
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElement(grammarAccess.getInclusiveOrExpressionRule());
            	      	        }
            	             		setWithLastConsumed(current, "operator", lv_operator_2_0, "|");
            	      	    
            	    }

            	    }


            	    }

            	    // InternalAlf.g:9913:2: ( (lv_operand2_3_0= ruleExclusiveOrExpression ) )
            	    // InternalAlf.g:9914:1: (lv_operand2_3_0= ruleExclusiveOrExpression )
            	    {
            	    // InternalAlf.g:9914:1: (lv_operand2_3_0= ruleExclusiveOrExpression )
            	    // InternalAlf.g:9915:3: lv_operand2_3_0= ruleExclusiveOrExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getInclusiveOrExpressionAccess().getOperand2ExclusiveOrExpressionParserRuleCall_1_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_89);
            	    lv_operand2_3_0=ruleExclusiveOrExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getInclusiveOrExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"operand2",
            	              		lv_operand2_3_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.ExclusiveOrExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop177;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleInclusiveOrExpression"


    // $ANTLR start "entryRuleConditionalAndExpression"
    // InternalAlf.g:9939:1: entryRuleConditionalAndExpression returns [EObject current=null] : iv_ruleConditionalAndExpression= ruleConditionalAndExpression EOF ;
    public final EObject entryRuleConditionalAndExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConditionalAndExpression = null;


        try {
            // InternalAlf.g:9940:2: (iv_ruleConditionalAndExpression= ruleConditionalAndExpression EOF )
            // InternalAlf.g:9941:2: iv_ruleConditionalAndExpression= ruleConditionalAndExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getConditionalAndExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleConditionalAndExpression=ruleConditionalAndExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleConditionalAndExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConditionalAndExpression"


    // $ANTLR start "ruleConditionalAndExpression"
    // InternalAlf.g:9948:1: ruleConditionalAndExpression returns [EObject current=null] : (this_InclusiveOrExpression_0= ruleInclusiveOrExpression ( () ( (lv_operator_2_0= '&&' ) ) ( (lv_operand2_3_0= ruleInclusiveOrExpression ) ) )* ) ;
    public final EObject ruleConditionalAndExpression() throws RecognitionException {
        EObject current = null;

        Token lv_operator_2_0=null;
        EObject this_InclusiveOrExpression_0 = null;

        EObject lv_operand2_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:9951:28: ( (this_InclusiveOrExpression_0= ruleInclusiveOrExpression ( () ( (lv_operator_2_0= '&&' ) ) ( (lv_operand2_3_0= ruleInclusiveOrExpression ) ) )* ) )
            // InternalAlf.g:9952:1: (this_InclusiveOrExpression_0= ruleInclusiveOrExpression ( () ( (lv_operator_2_0= '&&' ) ) ( (lv_operand2_3_0= ruleInclusiveOrExpression ) ) )* )
            {
            // InternalAlf.g:9952:1: (this_InclusiveOrExpression_0= ruleInclusiveOrExpression ( () ( (lv_operator_2_0= '&&' ) ) ( (lv_operand2_3_0= ruleInclusiveOrExpression ) ) )* )
            // InternalAlf.g:9953:2: this_InclusiveOrExpression_0= ruleInclusiveOrExpression ( () ( (lv_operator_2_0= '&&' ) ) ( (lv_operand2_3_0= ruleInclusiveOrExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getConditionalAndExpressionAccess().getInclusiveOrExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_90);
            this_InclusiveOrExpression_0=ruleInclusiveOrExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_InclusiveOrExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:9964:1: ( () ( (lv_operator_2_0= '&&' ) ) ( (lv_operand2_3_0= ruleInclusiveOrExpression ) ) )*
            loop178:
            do {
                int alt178=2;
                int LA178_0 = input.LA(1);

                if ( (LA178_0==91) ) {
                    alt178=1;
                }


                switch (alt178) {
            	case 1 :
            	    // InternalAlf.g:9964:2: () ( (lv_operator_2_0= '&&' ) ) ( (lv_operand2_3_0= ruleInclusiveOrExpression ) )
            	    {
            	    // InternalAlf.g:9964:2: ()
            	    // InternalAlf.g:9965:2: 
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	  /* */ 
            	      	
            	    }
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getConditionalAndExpressionAccess().getConditionalLogicalExpressionOperand1Action_1_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // InternalAlf.g:9973:2: ( (lv_operator_2_0= '&&' ) )
            	    // InternalAlf.g:9974:1: (lv_operator_2_0= '&&' )
            	    {
            	    // InternalAlf.g:9974:1: (lv_operator_2_0= '&&' )
            	    // InternalAlf.g:9975:3: lv_operator_2_0= '&&'
            	    {
            	    lv_operator_2_0=(Token)match(input,91,FOLLOW_69); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	              newLeafNode(lv_operator_2_0, grammarAccess.getConditionalAndExpressionAccess().getOperatorAmpersandAmpersandKeyword_1_1_0());
            	          
            	    }
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElement(grammarAccess.getConditionalAndExpressionRule());
            	      	        }
            	             		setWithLastConsumed(current, "operator", lv_operator_2_0, "&&");
            	      	    
            	    }

            	    }


            	    }

            	    // InternalAlf.g:9988:2: ( (lv_operand2_3_0= ruleInclusiveOrExpression ) )
            	    // InternalAlf.g:9989:1: (lv_operand2_3_0= ruleInclusiveOrExpression )
            	    {
            	    // InternalAlf.g:9989:1: (lv_operand2_3_0= ruleInclusiveOrExpression )
            	    // InternalAlf.g:9990:3: lv_operand2_3_0= ruleInclusiveOrExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getConditionalAndExpressionAccess().getOperand2InclusiveOrExpressionParserRuleCall_1_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_90);
            	    lv_operand2_3_0=ruleInclusiveOrExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getConditionalAndExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"operand2",
            	              		lv_operand2_3_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.InclusiveOrExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop178;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConditionalAndExpression"


    // $ANTLR start "entryRuleConditionalOrExpression"
    // InternalAlf.g:10014:1: entryRuleConditionalOrExpression returns [EObject current=null] : iv_ruleConditionalOrExpression= ruleConditionalOrExpression EOF ;
    public final EObject entryRuleConditionalOrExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConditionalOrExpression = null;


        try {
            // InternalAlf.g:10015:2: (iv_ruleConditionalOrExpression= ruleConditionalOrExpression EOF )
            // InternalAlf.g:10016:2: iv_ruleConditionalOrExpression= ruleConditionalOrExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getConditionalOrExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleConditionalOrExpression=ruleConditionalOrExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleConditionalOrExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConditionalOrExpression"


    // $ANTLR start "ruleConditionalOrExpression"
    // InternalAlf.g:10023:1: ruleConditionalOrExpression returns [EObject current=null] : (this_ConditionalAndExpression_0= ruleConditionalAndExpression ( () ( (lv_operator_2_0= '||' ) ) ( (lv_operand2_3_0= ruleConditionalAndExpression ) ) )* ) ;
    public final EObject ruleConditionalOrExpression() throws RecognitionException {
        EObject current = null;

        Token lv_operator_2_0=null;
        EObject this_ConditionalAndExpression_0 = null;

        EObject lv_operand2_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:10026:28: ( (this_ConditionalAndExpression_0= ruleConditionalAndExpression ( () ( (lv_operator_2_0= '||' ) ) ( (lv_operand2_3_0= ruleConditionalAndExpression ) ) )* ) )
            // InternalAlf.g:10027:1: (this_ConditionalAndExpression_0= ruleConditionalAndExpression ( () ( (lv_operator_2_0= '||' ) ) ( (lv_operand2_3_0= ruleConditionalAndExpression ) ) )* )
            {
            // InternalAlf.g:10027:1: (this_ConditionalAndExpression_0= ruleConditionalAndExpression ( () ( (lv_operator_2_0= '||' ) ) ( (lv_operand2_3_0= ruleConditionalAndExpression ) ) )* )
            // InternalAlf.g:10028:2: this_ConditionalAndExpression_0= ruleConditionalAndExpression ( () ( (lv_operator_2_0= '||' ) ) ( (lv_operand2_3_0= ruleConditionalAndExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getConditionalOrExpressionAccess().getConditionalAndExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_91);
            this_ConditionalAndExpression_0=ruleConditionalAndExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_ConditionalAndExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:10039:1: ( () ( (lv_operator_2_0= '||' ) ) ( (lv_operand2_3_0= ruleConditionalAndExpression ) ) )*
            loop179:
            do {
                int alt179=2;
                int LA179_0 = input.LA(1);

                if ( (LA179_0==92) ) {
                    alt179=1;
                }


                switch (alt179) {
            	case 1 :
            	    // InternalAlf.g:10039:2: () ( (lv_operator_2_0= '||' ) ) ( (lv_operand2_3_0= ruleConditionalAndExpression ) )
            	    {
            	    // InternalAlf.g:10039:2: ()
            	    // InternalAlf.g:10040:2: 
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	  /* */ 
            	      	
            	    }
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getConditionalOrExpressionAccess().getConditionalLogicalExpressionOperand1Action_1_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // InternalAlf.g:10048:2: ( (lv_operator_2_0= '||' ) )
            	    // InternalAlf.g:10049:1: (lv_operator_2_0= '||' )
            	    {
            	    // InternalAlf.g:10049:1: (lv_operator_2_0= '||' )
            	    // InternalAlf.g:10050:3: lv_operator_2_0= '||'
            	    {
            	    lv_operator_2_0=(Token)match(input,92,FOLLOW_69); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	              newLeafNode(lv_operator_2_0, grammarAccess.getConditionalOrExpressionAccess().getOperatorVerticalLineVerticalLineKeyword_1_1_0());
            	          
            	    }
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElement(grammarAccess.getConditionalOrExpressionRule());
            	      	        }
            	             		setWithLastConsumed(current, "operator", lv_operator_2_0, "||");
            	      	    
            	    }

            	    }


            	    }

            	    // InternalAlf.g:10063:2: ( (lv_operand2_3_0= ruleConditionalAndExpression ) )
            	    // InternalAlf.g:10064:1: (lv_operand2_3_0= ruleConditionalAndExpression )
            	    {
            	    // InternalAlf.g:10064:1: (lv_operand2_3_0= ruleConditionalAndExpression )
            	    // InternalAlf.g:10065:3: lv_operand2_3_0= ruleConditionalAndExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getConditionalOrExpressionAccess().getOperand2ConditionalAndExpressionParserRuleCall_1_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_91);
            	    lv_operand2_3_0=ruleConditionalAndExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getConditionalOrExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"operand2",
            	              		lv_operand2_3_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.ConditionalAndExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop179;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConditionalOrExpression"


    // $ANTLR start "entryRuleConditionalExpression"
    // InternalAlf.g:10089:1: entryRuleConditionalExpression returns [EObject current=null] : iv_ruleConditionalExpression= ruleConditionalExpression EOF ;
    public final EObject entryRuleConditionalExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConditionalExpression = null;


        try {
            // InternalAlf.g:10090:2: (iv_ruleConditionalExpression= ruleConditionalExpression EOF )
            // InternalAlf.g:10091:2: iv_ruleConditionalExpression= ruleConditionalExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getConditionalExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleConditionalExpression=ruleConditionalExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleConditionalExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConditionalExpression"


    // $ANTLR start "ruleConditionalExpression"
    // InternalAlf.g:10098:1: ruleConditionalExpression returns [EObject current=null] : (this_ConditionalOrExpression_0= ruleConditionalOrExpression ( () otherlv_2= '?' ( (lv_operand2_3_0= ruleExpression ) ) otherlv_4= ':' ( (lv_operand3_5_0= ruleConditionalExpression ) ) )? ) ;
    public final EObject ruleConditionalExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject this_ConditionalOrExpression_0 = null;

        EObject lv_operand2_3_0 = null;

        EObject lv_operand3_5_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:10101:28: ( (this_ConditionalOrExpression_0= ruleConditionalOrExpression ( () otherlv_2= '?' ( (lv_operand2_3_0= ruleExpression ) ) otherlv_4= ':' ( (lv_operand3_5_0= ruleConditionalExpression ) ) )? ) )
            // InternalAlf.g:10102:1: (this_ConditionalOrExpression_0= ruleConditionalOrExpression ( () otherlv_2= '?' ( (lv_operand2_3_0= ruleExpression ) ) otherlv_4= ':' ( (lv_operand3_5_0= ruleConditionalExpression ) ) )? )
            {
            // InternalAlf.g:10102:1: (this_ConditionalOrExpression_0= ruleConditionalOrExpression ( () otherlv_2= '?' ( (lv_operand2_3_0= ruleExpression ) ) otherlv_4= ':' ( (lv_operand3_5_0= ruleConditionalExpression ) ) )? )
            // InternalAlf.g:10103:2: this_ConditionalOrExpression_0= ruleConditionalOrExpression ( () otherlv_2= '?' ( (lv_operand2_3_0= ruleExpression ) ) otherlv_4= ':' ( (lv_operand3_5_0= ruleConditionalExpression ) ) )?
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getConditionalExpressionAccess().getConditionalOrExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_92);
            this_ConditionalOrExpression_0=ruleConditionalOrExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_ConditionalOrExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:10114:1: ( () otherlv_2= '?' ( (lv_operand2_3_0= ruleExpression ) ) otherlv_4= ':' ( (lv_operand3_5_0= ruleConditionalExpression ) ) )?
            int alt180=2;
            int LA180_0 = input.LA(1);

            if ( (LA180_0==93) ) {
                alt180=1;
            }
            switch (alt180) {
                case 1 :
                    // InternalAlf.g:10114:2: () otherlv_2= '?' ( (lv_operand2_3_0= ruleExpression ) ) otherlv_4= ':' ( (lv_operand3_5_0= ruleConditionalExpression ) )
                    {
                    // InternalAlf.g:10114:2: ()
                    // InternalAlf.g:10115:2: 
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElementAndSet(
                                  grammarAccess.getConditionalExpressionAccess().getConditionalTestExpressionOperand1Action_1_0(),
                                  current);
                          
                    }

                    }

                    otherlv_2=(Token)match(input,93,FOLLOW_69); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getConditionalExpressionAccess().getQuestionMarkKeyword_1_1());
                          
                    }
                    // InternalAlf.g:10127:1: ( (lv_operand2_3_0= ruleExpression ) )
                    // InternalAlf.g:10128:1: (lv_operand2_3_0= ruleExpression )
                    {
                    // InternalAlf.g:10128:1: (lv_operand2_3_0= ruleExpression )
                    // InternalAlf.g:10129:3: lv_operand2_3_0= ruleExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getConditionalExpressionAccess().getOperand2ExpressionParserRuleCall_1_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_47);
                    lv_operand2_3_0=ruleExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getConditionalExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"operand2",
                              		lv_operand2_3_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.Expression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_4=(Token)match(input,45,FOLLOW_69); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getConditionalExpressionAccess().getColonKeyword_1_3());
                          
                    }
                    // InternalAlf.g:10149:1: ( (lv_operand3_5_0= ruleConditionalExpression ) )
                    // InternalAlf.g:10150:1: (lv_operand3_5_0= ruleConditionalExpression )
                    {
                    // InternalAlf.g:10150:1: (lv_operand3_5_0= ruleConditionalExpression )
                    // InternalAlf.g:10151:3: lv_operand3_5_0= ruleConditionalExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getConditionalExpressionAccess().getOperand3ConditionalExpressionParserRuleCall_1_4_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_operand3_5_0=ruleConditionalExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getConditionalExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"operand3",
                              		lv_operand3_5_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.ConditionalExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConditionalExpression"


    // $ANTLR start "entryRuleAssignmentExpression"
    // InternalAlf.g:10175:1: entryRuleAssignmentExpression returns [EObject current=null] : iv_ruleAssignmentExpression= ruleAssignmentExpression EOF ;
    public final EObject entryRuleAssignmentExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAssignmentExpression = null;


        try {
            // InternalAlf.g:10176:2: (iv_ruleAssignmentExpression= ruleAssignmentExpression EOF )
            // InternalAlf.g:10177:2: iv_ruleAssignmentExpression= ruleAssignmentExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAssignmentExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleAssignmentExpression=ruleAssignmentExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAssignmentExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAssignmentExpression"


    // $ANTLR start "ruleAssignmentExpression"
    // InternalAlf.g:10184:1: ruleAssignmentExpression returns [EObject current=null] : ( ( (lv_leftHandSide_0_0= ruleLeftHandSide ) ) ( (lv_operator_1_0= ruleAssignmentOperator ) ) ( (lv_rightHandSide_2_0= ruleExpression ) ) ) ;
    public final EObject ruleAssignmentExpression() throws RecognitionException {
        EObject current = null;

        EObject lv_leftHandSide_0_0 = null;

        AntlrDatatypeRuleToken lv_operator_1_0 = null;

        EObject lv_rightHandSide_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:10187:28: ( ( ( (lv_leftHandSide_0_0= ruleLeftHandSide ) ) ( (lv_operator_1_0= ruleAssignmentOperator ) ) ( (lv_rightHandSide_2_0= ruleExpression ) ) ) )
            // InternalAlf.g:10188:1: ( ( (lv_leftHandSide_0_0= ruleLeftHandSide ) ) ( (lv_operator_1_0= ruleAssignmentOperator ) ) ( (lv_rightHandSide_2_0= ruleExpression ) ) )
            {
            // InternalAlf.g:10188:1: ( ( (lv_leftHandSide_0_0= ruleLeftHandSide ) ) ( (lv_operator_1_0= ruleAssignmentOperator ) ) ( (lv_rightHandSide_2_0= ruleExpression ) ) )
            // InternalAlf.g:10188:2: ( (lv_leftHandSide_0_0= ruleLeftHandSide ) ) ( (lv_operator_1_0= ruleAssignmentOperator ) ) ( (lv_rightHandSide_2_0= ruleExpression ) )
            {
            // InternalAlf.g:10188:2: ( (lv_leftHandSide_0_0= ruleLeftHandSide ) )
            // InternalAlf.g:10189:1: (lv_leftHandSide_0_0= ruleLeftHandSide )
            {
            // InternalAlf.g:10189:1: (lv_leftHandSide_0_0= ruleLeftHandSide )
            // InternalAlf.g:10190:3: lv_leftHandSide_0_0= ruleLeftHandSide
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getAssignmentExpressionAccess().getLeftHandSideLeftHandSideParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_93);
            lv_leftHandSide_0_0=ruleLeftHandSide();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getAssignmentExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"leftHandSide",
                      		lv_leftHandSide_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.LeftHandSide");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:10206:2: ( (lv_operator_1_0= ruleAssignmentOperator ) )
            // InternalAlf.g:10207:1: (lv_operator_1_0= ruleAssignmentOperator )
            {
            // InternalAlf.g:10207:1: (lv_operator_1_0= ruleAssignmentOperator )
            // InternalAlf.g:10208:3: lv_operator_1_0= ruleAssignmentOperator
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getAssignmentExpressionAccess().getOperatorAssignmentOperatorParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_69);
            lv_operator_1_0=ruleAssignmentOperator();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getAssignmentExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"operator",
                      		lv_operator_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.AssignmentOperator");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:10224:2: ( (lv_rightHandSide_2_0= ruleExpression ) )
            // InternalAlf.g:10225:1: (lv_rightHandSide_2_0= ruleExpression )
            {
            // InternalAlf.g:10225:1: (lv_rightHandSide_2_0= ruleExpression )
            // InternalAlf.g:10226:3: lv_rightHandSide_2_0= ruleExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getAssignmentExpressionAccess().getRightHandSideExpressionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_rightHandSide_2_0=ruleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getAssignmentExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"rightHandSide",
                      		lv_rightHandSide_2_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Expression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAssignmentExpression"


    // $ANTLR start "entryRuleLeftHandSide"
    // InternalAlf.g:10250:1: entryRuleLeftHandSide returns [EObject current=null] : iv_ruleLeftHandSide= ruleLeftHandSide EOF ;
    public final EObject entryRuleLeftHandSide() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLeftHandSide = null;


        try {
            // InternalAlf.g:10251:2: (iv_ruleLeftHandSide= ruleLeftHandSide EOF )
            // InternalAlf.g:10252:2: iv_ruleLeftHandSide= ruleLeftHandSide EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getLeftHandSideRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleLeftHandSide=ruleLeftHandSide();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleLeftHandSide; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLeftHandSide"


    // $ANTLR start "ruleLeftHandSide"
    // InternalAlf.g:10259:1: ruleLeftHandSide returns [EObject current=null] : (this_NameLeftHandSide_0= ruleNameLeftHandSide | this_FeatureLeftHandSide_1= ruleFeatureLeftHandSide ) ;
    public final EObject ruleLeftHandSide() throws RecognitionException {
        EObject current = null;

        EObject this_NameLeftHandSide_0 = null;

        EObject this_FeatureLeftHandSide_1 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:10262:28: ( (this_NameLeftHandSide_0= ruleNameLeftHandSide | this_FeatureLeftHandSide_1= ruleFeatureLeftHandSide ) )
            // InternalAlf.g:10263:1: (this_NameLeftHandSide_0= ruleNameLeftHandSide | this_FeatureLeftHandSide_1= ruleFeatureLeftHandSide )
            {
            // InternalAlf.g:10263:1: (this_NameLeftHandSide_0= ruleNameLeftHandSide | this_FeatureLeftHandSide_1= ruleFeatureLeftHandSide )
            int alt181=2;
            switch ( input.LA(1) ) {
            case RULE_ID:
                {
                int LA181_1 = input.LA(2);

                if ( (synpred225_InternalAlf()) ) {
                    alt181=1;
                }
                else if ( (true) ) {
                    alt181=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 181, 1, input);

                    throw nvae;
                }
                }
                break;
            case RULE_UNRESTRICTED_NAME:
                {
                int LA181_2 = input.LA(2);

                if ( (synpred225_InternalAlf()) ) {
                    alt181=1;
                }
                else if ( (true) ) {
                    alt181=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 181, 2, input);

                    throw nvae;
                }
                }
                break;
            case RULE_BOOLEAN_VALUE:
            case RULE_NATURAL_VALUE:
            case RULE_STRING:
            case 16:
            case 20:
            case 51:
            case 62:
            case 63:
            case 64:
            case 69:
                {
                alt181=2;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 181, 0, input);

                throw nvae;
            }

            switch (alt181) {
                case 1 :
                    // InternalAlf.g:10264:2: this_NameLeftHandSide_0= ruleNameLeftHandSide
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getLeftHandSideAccess().getNameLeftHandSideParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_NameLeftHandSide_0=ruleNameLeftHandSide();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_NameLeftHandSide_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:10277:2: this_FeatureLeftHandSide_1= ruleFeatureLeftHandSide
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getLeftHandSideAccess().getFeatureLeftHandSideParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_FeatureLeftHandSide_1=ruleFeatureLeftHandSide();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_FeatureLeftHandSide_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLeftHandSide"


    // $ANTLR start "entryRuleNameLeftHandSide"
    // InternalAlf.g:10296:1: entryRuleNameLeftHandSide returns [EObject current=null] : iv_ruleNameLeftHandSide= ruleNameLeftHandSide EOF ;
    public final EObject entryRuleNameLeftHandSide() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNameLeftHandSide = null;


        try {
            // InternalAlf.g:10297:2: (iv_ruleNameLeftHandSide= ruleNameLeftHandSide EOF )
            // InternalAlf.g:10298:2: iv_ruleNameLeftHandSide= ruleNameLeftHandSide EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNameLeftHandSideRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleNameLeftHandSide=ruleNameLeftHandSide();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNameLeftHandSide; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNameLeftHandSide"


    // $ANTLR start "ruleNameLeftHandSide"
    // InternalAlf.g:10305:1: ruleNameLeftHandSide returns [EObject current=null] : ( ( (lv_target_0_0= rulePotentiallyAmbiguousQualifiedName ) ) ( (lv_index_1_0= ruleIndex ) )? ) ;
    public final EObject ruleNameLeftHandSide() throws RecognitionException {
        EObject current = null;

        EObject lv_target_0_0 = null;

        EObject lv_index_1_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:10308:28: ( ( ( (lv_target_0_0= rulePotentiallyAmbiguousQualifiedName ) ) ( (lv_index_1_0= ruleIndex ) )? ) )
            // InternalAlf.g:10309:1: ( ( (lv_target_0_0= rulePotentiallyAmbiguousQualifiedName ) ) ( (lv_index_1_0= ruleIndex ) )? )
            {
            // InternalAlf.g:10309:1: ( ( (lv_target_0_0= rulePotentiallyAmbiguousQualifiedName ) ) ( (lv_index_1_0= ruleIndex ) )? )
            // InternalAlf.g:10309:2: ( (lv_target_0_0= rulePotentiallyAmbiguousQualifiedName ) ) ( (lv_index_1_0= ruleIndex ) )?
            {
            // InternalAlf.g:10309:2: ( (lv_target_0_0= rulePotentiallyAmbiguousQualifiedName ) )
            // InternalAlf.g:10310:1: (lv_target_0_0= rulePotentiallyAmbiguousQualifiedName )
            {
            // InternalAlf.g:10310:1: (lv_target_0_0= rulePotentiallyAmbiguousQualifiedName )
            // InternalAlf.g:10311:3: lv_target_0_0= rulePotentiallyAmbiguousQualifiedName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getNameLeftHandSideAccess().getTargetPotentiallyAmbiguousQualifiedNameParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_66);
            lv_target_0_0=rulePotentiallyAmbiguousQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getNameLeftHandSideRule());
              	        }
                     		set(
                     			current, 
                     			"target",
                      		lv_target_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.PotentiallyAmbiguousQualifiedName");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:10327:2: ( (lv_index_1_0= ruleIndex ) )?
            int alt182=2;
            int LA182_0 = input.LA(1);

            if ( (LA182_0==52) ) {
                alt182=1;
            }
            switch (alt182) {
                case 1 :
                    // InternalAlf.g:10328:1: (lv_index_1_0= ruleIndex )
                    {
                    // InternalAlf.g:10328:1: (lv_index_1_0= ruleIndex )
                    // InternalAlf.g:10329:3: lv_index_1_0= ruleIndex
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getNameLeftHandSideAccess().getIndexIndexParserRuleCall_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_index_1_0=ruleIndex();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getNameLeftHandSideRule());
                      	        }
                             		set(
                             			current, 
                             			"index",
                              		lv_index_1_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.Index");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNameLeftHandSide"


    // $ANTLR start "entryRuleFeatureLeftHandSide"
    // InternalAlf.g:10353:1: entryRuleFeatureLeftHandSide returns [EObject current=null] : iv_ruleFeatureLeftHandSide= ruleFeatureLeftHandSide EOF ;
    public final EObject entryRuleFeatureLeftHandSide() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFeatureLeftHandSide = null;


        try {
            // InternalAlf.g:10354:2: (iv_ruleFeatureLeftHandSide= ruleFeatureLeftHandSide EOF )
            // InternalAlf.g:10355:2: iv_ruleFeatureLeftHandSide= ruleFeatureLeftHandSide EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getFeatureLeftHandSideRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleFeatureLeftHandSide=ruleFeatureLeftHandSide();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleFeatureLeftHandSide; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFeatureLeftHandSide"


    // $ANTLR start "ruleFeatureLeftHandSide"
    // InternalAlf.g:10362:1: ruleFeatureLeftHandSide returns [EObject current=null] : ( (lv_expression_0_0= rulePrimaryExpression ) ) ;
    public final EObject ruleFeatureLeftHandSide() throws RecognitionException {
        EObject current = null;

        EObject lv_expression_0_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:10365:28: ( ( (lv_expression_0_0= rulePrimaryExpression ) ) )
            // InternalAlf.g:10366:1: ( (lv_expression_0_0= rulePrimaryExpression ) )
            {
            // InternalAlf.g:10366:1: ( (lv_expression_0_0= rulePrimaryExpression ) )
            // InternalAlf.g:10367:1: (lv_expression_0_0= rulePrimaryExpression )
            {
            // InternalAlf.g:10367:1: (lv_expression_0_0= rulePrimaryExpression )
            // InternalAlf.g:10368:3: lv_expression_0_0= rulePrimaryExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getFeatureLeftHandSideAccess().getExpressionPrimaryExpressionParserRuleCall_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_expression_0_0=rulePrimaryExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getFeatureLeftHandSideRule());
              	        }
                     		set(
                     			current, 
                     			"expression",
                      		lv_expression_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.PrimaryExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFeatureLeftHandSide"


    // $ANTLR start "entryRuleAssignmentOperator"
    // InternalAlf.g:10392:1: entryRuleAssignmentOperator returns [String current=null] : iv_ruleAssignmentOperator= ruleAssignmentOperator EOF ;
    public final String entryRuleAssignmentOperator() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleAssignmentOperator = null;


        try {
            // InternalAlf.g:10393:2: (iv_ruleAssignmentOperator= ruleAssignmentOperator EOF )
            // InternalAlf.g:10394:2: iv_ruleAssignmentOperator= ruleAssignmentOperator EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAssignmentOperatorRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleAssignmentOperator=ruleAssignmentOperator();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAssignmentOperator.getText(); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAssignmentOperator"


    // $ANTLR start "ruleAssignmentOperator"
    // InternalAlf.g:10401:1: ruleAssignmentOperator returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '=' | kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | kw= '&=' | kw= '|=' | kw= '^=' | kw= '<<=' | kw= '>>=' | kw= '>>>=' ) ;
    public final AntlrDatatypeRuleToken ruleAssignmentOperator() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // InternalAlf.g:10404:28: ( (kw= '=' | kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | kw= '&=' | kw= '|=' | kw= '^=' | kw= '<<=' | kw= '>>=' | kw= '>>>=' ) )
            // InternalAlf.g:10405:1: (kw= '=' | kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | kw= '&=' | kw= '|=' | kw= '^=' | kw= '<<=' | kw= '>>=' | kw= '>>>=' )
            {
            // InternalAlf.g:10405:1: (kw= '=' | kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | kw= '&=' | kw= '|=' | kw= '^=' | kw= '<<=' | kw= '>>=' | kw= '>>>=' )
            int alt183=12;
            switch ( input.LA(1) ) {
            case 49:
                {
                alt183=1;
                }
                break;
            case 94:
                {
                alt183=2;
                }
                break;
            case 95:
                {
                alt183=3;
                }
                break;
            case 96:
                {
                alt183=4;
                }
                break;
            case 97:
                {
                alt183=5;
                }
                break;
            case 98:
                {
                alt183=6;
                }
                break;
            case 99:
                {
                alt183=7;
                }
                break;
            case 100:
                {
                alt183=8;
                }
                break;
            case 101:
                {
                alt183=9;
                }
                break;
            case 102:
                {
                alt183=10;
                }
                break;
            case 103:
                {
                alt183=11;
                }
                break;
            case 104:
                {
                alt183=12;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 183, 0, input);

                throw nvae;
            }

            switch (alt183) {
                case 1 :
                    // InternalAlf.g:10406:2: kw= '='
                    {
                    kw=(Token)match(input,49,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getAssignmentOperatorAccess().getEqualsSignKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:10413:2: kw= '+='
                    {
                    kw=(Token)match(input,94,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getAssignmentOperatorAccess().getPlusSignEqualsSignKeyword_1()); 
                          
                    }

                    }
                    break;
                case 3 :
                    // InternalAlf.g:10420:2: kw= '-='
                    {
                    kw=(Token)match(input,95,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getAssignmentOperatorAccess().getHyphenMinusEqualsSignKeyword_2()); 
                          
                    }

                    }
                    break;
                case 4 :
                    // InternalAlf.g:10427:2: kw= '*='
                    {
                    kw=(Token)match(input,96,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getAssignmentOperatorAccess().getAsteriskEqualsSignKeyword_3()); 
                          
                    }

                    }
                    break;
                case 5 :
                    // InternalAlf.g:10434:2: kw= '/='
                    {
                    kw=(Token)match(input,97,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getAssignmentOperatorAccess().getSolidusEqualsSignKeyword_4()); 
                          
                    }

                    }
                    break;
                case 6 :
                    // InternalAlf.g:10441:2: kw= '%='
                    {
                    kw=(Token)match(input,98,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getAssignmentOperatorAccess().getPercentSignEqualsSignKeyword_5()); 
                          
                    }

                    }
                    break;
                case 7 :
                    // InternalAlf.g:10448:2: kw= '&='
                    {
                    kw=(Token)match(input,99,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getAssignmentOperatorAccess().getAmpersandEqualsSignKeyword_6()); 
                          
                    }

                    }
                    break;
                case 8 :
                    // InternalAlf.g:10455:2: kw= '|='
                    {
                    kw=(Token)match(input,100,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getAssignmentOperatorAccess().getVerticalLineEqualsSignKeyword_7()); 
                          
                    }

                    }
                    break;
                case 9 :
                    // InternalAlf.g:10462:2: kw= '^='
                    {
                    kw=(Token)match(input,101,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getAssignmentOperatorAccess().getCircumflexAccentEqualsSignKeyword_8()); 
                          
                    }

                    }
                    break;
                case 10 :
                    // InternalAlf.g:10469:2: kw= '<<='
                    {
                    kw=(Token)match(input,102,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getAssignmentOperatorAccess().getLessThanSignLessThanSignEqualsSignKeyword_9()); 
                          
                    }

                    }
                    break;
                case 11 :
                    // InternalAlf.g:10476:2: kw= '>>='
                    {
                    kw=(Token)match(input,103,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getAssignmentOperatorAccess().getGreaterThanSignGreaterThanSignEqualsSignKeyword_10()); 
                          
                    }

                    }
                    break;
                case 12 :
                    // InternalAlf.g:10483:2: kw= '>>>='
                    {
                    kw=(Token)match(input,104,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getAssignmentOperatorAccess().getGreaterThanSignGreaterThanSignGreaterThanSignEqualsSignKeyword_11()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAssignmentOperator"


    // $ANTLR start "entryRuleDocumentedStatement"
    // InternalAlf.g:10498:1: entryRuleDocumentedStatement returns [EObject current=null] : iv_ruleDocumentedStatement= ruleDocumentedStatement EOF ;
    public final EObject entryRuleDocumentedStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDocumentedStatement = null;


        try {
            // InternalAlf.g:10499:2: (iv_ruleDocumentedStatement= ruleDocumentedStatement EOF )
            // InternalAlf.g:10500:2: iv_ruleDocumentedStatement= ruleDocumentedStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getDocumentedStatementRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleDocumentedStatement=ruleDocumentedStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDocumentedStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDocumentedStatement"


    // $ANTLR start "ruleDocumentedStatement"
    // InternalAlf.g:10507:1: ruleDocumentedStatement returns [EObject current=null] : this_AnnotatedStatement_0= ruleAnnotatedStatement ;
    public final EObject ruleDocumentedStatement() throws RecognitionException {
        EObject current = null;

        EObject this_AnnotatedStatement_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:10510:28: (this_AnnotatedStatement_0= ruleAnnotatedStatement )
            // InternalAlf.g:10512:2: this_AnnotatedStatement_0= ruleAnnotatedStatement
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getDocumentedStatementAccess().getAnnotatedStatementParserRuleCall()); 
                  
            }
            pushFollow(FOLLOW_2);
            this_AnnotatedStatement_0=ruleAnnotatedStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_AnnotatedStatement_0; 
                      afterParserOrEnumRuleCall();
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDocumentedStatement"


    // $ANTLR start "entryRuleStatement"
    // InternalAlf.g:10531:1: entryRuleStatement returns [EObject current=null] : iv_ruleStatement= ruleStatement EOF ;
    public final EObject entryRuleStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStatement = null;


        try {
            // InternalAlf.g:10532:2: (iv_ruleStatement= ruleStatement EOF )
            // InternalAlf.g:10533:2: iv_ruleStatement= ruleStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getStatementRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleStatement=ruleStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStatement"


    // $ANTLR start "ruleStatement"
    // InternalAlf.g:10540:1: ruleStatement returns [EObject current=null] : (this_InLineStatement_0= ruleInLineStatement | this_BlockStatement_1= ruleBlockStatement | this_EmptyStatement_2= ruleEmptyStatement | this_LocalNameDeclarationStatement_3= ruleLocalNameDeclarationStatement | this_ExpressionStatement_4= ruleExpressionStatement | this_IfStatement_5= ruleIfStatement | this_SwitchStatement_6= ruleSwitchStatement | this_WhileStatement_7= ruleWhileStatement | this_ForStatement_8= ruleForStatement | this_DoStatement_9= ruleDoStatement | this_BreakStatement_10= ruleBreakStatement | this_ReturnStatement_11= ruleReturnStatement | this_AcceptStatement_12= ruleAcceptStatement | this_ClassifyStatement_13= ruleClassifyStatement ) ;
    public final EObject ruleStatement() throws RecognitionException {
        EObject current = null;

        EObject this_InLineStatement_0 = null;

        EObject this_BlockStatement_1 = null;

        EObject this_EmptyStatement_2 = null;

        EObject this_LocalNameDeclarationStatement_3 = null;

        EObject this_ExpressionStatement_4 = null;

        EObject this_IfStatement_5 = null;

        EObject this_SwitchStatement_6 = null;

        EObject this_WhileStatement_7 = null;

        EObject this_ForStatement_8 = null;

        EObject this_DoStatement_9 = null;

        EObject this_BreakStatement_10 = null;

        EObject this_ReturnStatement_11 = null;

        EObject this_AcceptStatement_12 = null;

        EObject this_ClassifyStatement_13 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:10543:28: ( (this_InLineStatement_0= ruleInLineStatement | this_BlockStatement_1= ruleBlockStatement | this_EmptyStatement_2= ruleEmptyStatement | this_LocalNameDeclarationStatement_3= ruleLocalNameDeclarationStatement | this_ExpressionStatement_4= ruleExpressionStatement | this_IfStatement_5= ruleIfStatement | this_SwitchStatement_6= ruleSwitchStatement | this_WhileStatement_7= ruleWhileStatement | this_ForStatement_8= ruleForStatement | this_DoStatement_9= ruleDoStatement | this_BreakStatement_10= ruleBreakStatement | this_ReturnStatement_11= ruleReturnStatement | this_AcceptStatement_12= ruleAcceptStatement | this_ClassifyStatement_13= ruleClassifyStatement ) )
            // InternalAlf.g:10544:1: (this_InLineStatement_0= ruleInLineStatement | this_BlockStatement_1= ruleBlockStatement | this_EmptyStatement_2= ruleEmptyStatement | this_LocalNameDeclarationStatement_3= ruleLocalNameDeclarationStatement | this_ExpressionStatement_4= ruleExpressionStatement | this_IfStatement_5= ruleIfStatement | this_SwitchStatement_6= ruleSwitchStatement | this_WhileStatement_7= ruleWhileStatement | this_ForStatement_8= ruleForStatement | this_DoStatement_9= ruleDoStatement | this_BreakStatement_10= ruleBreakStatement | this_ReturnStatement_11= ruleReturnStatement | this_AcceptStatement_12= ruleAcceptStatement | this_ClassifyStatement_13= ruleClassifyStatement )
            {
            // InternalAlf.g:10544:1: (this_InLineStatement_0= ruleInLineStatement | this_BlockStatement_1= ruleBlockStatement | this_EmptyStatement_2= ruleEmptyStatement | this_LocalNameDeclarationStatement_3= ruleLocalNameDeclarationStatement | this_ExpressionStatement_4= ruleExpressionStatement | this_IfStatement_5= ruleIfStatement | this_SwitchStatement_6= ruleSwitchStatement | this_WhileStatement_7= ruleWhileStatement | this_ForStatement_8= ruleForStatement | this_DoStatement_9= ruleDoStatement | this_BreakStatement_10= ruleBreakStatement | this_ReturnStatement_11= ruleReturnStatement | this_AcceptStatement_12= ruleAcceptStatement | this_ClassifyStatement_13= ruleClassifyStatement )
            int alt184=14;
            alt184 = dfa184.predict(input);
            switch (alt184) {
                case 1 :
                    // InternalAlf.g:10545:2: this_InLineStatement_0= ruleInLineStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getInLineStatementParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_InLineStatement_0=ruleInLineStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_InLineStatement_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:10558:2: this_BlockStatement_1= ruleBlockStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getBlockStatementParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_BlockStatement_1=ruleBlockStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_BlockStatement_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // InternalAlf.g:10571:2: this_EmptyStatement_2= ruleEmptyStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getEmptyStatementParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_EmptyStatement_2=ruleEmptyStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_EmptyStatement_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // InternalAlf.g:10584:2: this_LocalNameDeclarationStatement_3= ruleLocalNameDeclarationStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getLocalNameDeclarationStatementParserRuleCall_3()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_LocalNameDeclarationStatement_3=ruleLocalNameDeclarationStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_LocalNameDeclarationStatement_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 5 :
                    // InternalAlf.g:10597:2: this_ExpressionStatement_4= ruleExpressionStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getExpressionStatementParserRuleCall_4()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_ExpressionStatement_4=ruleExpressionStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ExpressionStatement_4; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 6 :
                    // InternalAlf.g:10610:2: this_IfStatement_5= ruleIfStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getIfStatementParserRuleCall_5()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_IfStatement_5=ruleIfStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_IfStatement_5; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 7 :
                    // InternalAlf.g:10623:2: this_SwitchStatement_6= ruleSwitchStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getSwitchStatementParserRuleCall_6()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_SwitchStatement_6=ruleSwitchStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_SwitchStatement_6; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 8 :
                    // InternalAlf.g:10636:2: this_WhileStatement_7= ruleWhileStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getWhileStatementParserRuleCall_7()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_WhileStatement_7=ruleWhileStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_WhileStatement_7; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 9 :
                    // InternalAlf.g:10649:2: this_ForStatement_8= ruleForStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getForStatementParserRuleCall_8()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_ForStatement_8=ruleForStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ForStatement_8; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 10 :
                    // InternalAlf.g:10662:2: this_DoStatement_9= ruleDoStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getDoStatementParserRuleCall_9()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_DoStatement_9=ruleDoStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_DoStatement_9; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 11 :
                    // InternalAlf.g:10675:2: this_BreakStatement_10= ruleBreakStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getBreakStatementParserRuleCall_10()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_BreakStatement_10=ruleBreakStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_BreakStatement_10; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 12 :
                    // InternalAlf.g:10688:2: this_ReturnStatement_11= ruleReturnStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getReturnStatementParserRuleCall_11()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_ReturnStatement_11=ruleReturnStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ReturnStatement_11; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 13 :
                    // InternalAlf.g:10701:2: this_AcceptStatement_12= ruleAcceptStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getAcceptStatementParserRuleCall_12()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_AcceptStatement_12=ruleAcceptStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_AcceptStatement_12; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 14 :
                    // InternalAlf.g:10714:2: this_ClassifyStatement_13= ruleClassifyStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getClassifyStatementParserRuleCall_13()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_ClassifyStatement_13=ruleClassifyStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ClassifyStatement_13; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStatement"


    // $ANTLR start "entryRuleBlock"
    // InternalAlf.g:10733:1: entryRuleBlock returns [EObject current=null] : iv_ruleBlock= ruleBlock EOF ;
    public final EObject entryRuleBlock() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBlock = null;


        try {
            // InternalAlf.g:10734:2: (iv_ruleBlock= ruleBlock EOF )
            // InternalAlf.g:10735:2: iv_ruleBlock= ruleBlock EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getBlockRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleBlock=ruleBlock();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleBlock; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBlock"


    // $ANTLR start "ruleBlock"
    // InternalAlf.g:10742:1: ruleBlock returns [EObject current=null] : ( () otherlv_1= '{' ( (lv_statement_2_0= ruleDocumentedStatement ) )* otherlv_3= '}' ) ;
    public final EObject ruleBlock() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_statement_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:10745:28: ( ( () otherlv_1= '{' ( (lv_statement_2_0= ruleDocumentedStatement ) )* otherlv_3= '}' ) )
            // InternalAlf.g:10746:1: ( () otherlv_1= '{' ( (lv_statement_2_0= ruleDocumentedStatement ) )* otherlv_3= '}' )
            {
            // InternalAlf.g:10746:1: ( () otherlv_1= '{' ( (lv_statement_2_0= ruleDocumentedStatement ) )* otherlv_3= '}' )
            // InternalAlf.g:10746:2: () otherlv_1= '{' ( (lv_statement_2_0= ruleDocumentedStatement ) )* otherlv_3= '}'
            {
            // InternalAlf.g:10746:2: ()
            // InternalAlf.g:10747:2: 
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getBlockAccess().getBlockAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,31,FOLLOW_94); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getBlockAccess().getLeftCurlyBracketKeyword_1());
                  
            }
            // InternalAlf.g:10759:1: ( (lv_statement_2_0= ruleDocumentedStatement ) )*
            loop185:
            do {
                int alt185=2;
                int LA185_0 = input.LA(1);

                if ( ((LA185_0>=RULE_DOCUMENTATION_COMMENT && LA185_0<=RULE_INLINE_STATEMENT)||LA185_0==16||LA185_0==20||LA185_0==22||LA185_0==31||LA185_0==39||LA185_0==51||(LA185_0>=62 && LA185_0<=64)||(LA185_0>=69 && LA185_0<=76)||(LA185_0>=105 && LA185_0<=106)||LA185_0==109||(LA185_0>=112 && LA185_0<=117)) ) {
                    alt185=1;
                }


                switch (alt185) {
            	case 1 :
            	    // InternalAlf.g:10760:1: (lv_statement_2_0= ruleDocumentedStatement )
            	    {
            	    // InternalAlf.g:10760:1: (lv_statement_2_0= ruleDocumentedStatement )
            	    // InternalAlf.g:10761:3: lv_statement_2_0= ruleDocumentedStatement
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getBlockAccess().getStatementDocumentedStatementParserRuleCall_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_94);
            	    lv_statement_2_0=ruleDocumentedStatement();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getBlockRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"statement",
            	              		lv_statement_2_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.DocumentedStatement");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop185;
                }
            } while (true);

            otherlv_3=(Token)match(input,32,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getBlockAccess().getRightCurlyBracketKeyword_3());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBlock"


    // $ANTLR start "entryRuleAnnotatedStatement"
    // InternalAlf.g:10789:1: entryRuleAnnotatedStatement returns [EObject current=null] : iv_ruleAnnotatedStatement= ruleAnnotatedStatement EOF ;
    public final EObject entryRuleAnnotatedStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAnnotatedStatement = null;


        try {
            // InternalAlf.g:10790:2: (iv_ruleAnnotatedStatement= ruleAnnotatedStatement EOF )
            // InternalAlf.g:10791:2: iv_ruleAnnotatedStatement= ruleAnnotatedStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAnnotatedStatementRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleAnnotatedStatement=ruleAnnotatedStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAnnotatedStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAnnotatedStatement"


    // $ANTLR start "ruleAnnotatedStatement"
    // InternalAlf.g:10798:1: ruleAnnotatedStatement returns [EObject current=null] : ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_1_0= RULE_STATEMENT_ANNOTATION ) )* ( (lv_statement_2_0= ruleStatement ) ) ) ;
    public final EObject ruleAnnotatedStatement() throws RecognitionException {
        EObject current = null;

        Token lv_documentation_0_0=null;
        Token lv_annotation_1_0=null;
        EObject lv_statement_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:10801:28: ( ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_1_0= RULE_STATEMENT_ANNOTATION ) )* ( (lv_statement_2_0= ruleStatement ) ) ) )
            // InternalAlf.g:10802:1: ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_1_0= RULE_STATEMENT_ANNOTATION ) )* ( (lv_statement_2_0= ruleStatement ) ) )
            {
            // InternalAlf.g:10802:1: ( ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_1_0= RULE_STATEMENT_ANNOTATION ) )* ( (lv_statement_2_0= ruleStatement ) ) )
            // InternalAlf.g:10802:2: ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )? ( (lv_annotation_1_0= RULE_STATEMENT_ANNOTATION ) )* ( (lv_statement_2_0= ruleStatement ) )
            {
            // InternalAlf.g:10802:2: ( (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT ) )?
            int alt186=2;
            int LA186_0 = input.LA(1);

            if ( (LA186_0==RULE_DOCUMENTATION_COMMENT) ) {
                alt186=1;
            }
            switch (alt186) {
                case 1 :
                    // InternalAlf.g:10803:1: (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT )
                    {
                    // InternalAlf.g:10803:1: (lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT )
                    // InternalAlf.g:10804:3: lv_documentation_0_0= RULE_DOCUMENTATION_COMMENT
                    {
                    lv_documentation_0_0=(Token)match(input,RULE_DOCUMENTATION_COMMENT,FOLLOW_95); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_documentation_0_0, grammarAccess.getAnnotatedStatementAccess().getDocumentationDOCUMENTATION_COMMENTTerminalRuleCall_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getAnnotatedStatementRule());
                      	        }
                             		addWithLastConsumed(
                             			current, 
                             			"documentation",
                              		lv_documentation_0_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.DOCUMENTATION_COMMENT");
                      	    
                    }

                    }


                    }
                    break;

            }

            // InternalAlf.g:10820:3: ( (lv_annotation_1_0= RULE_STATEMENT_ANNOTATION ) )*
            loop187:
            do {
                int alt187=2;
                int LA187_0 = input.LA(1);

                if ( (LA187_0==RULE_STATEMENT_ANNOTATION) ) {
                    alt187=1;
                }


                switch (alt187) {
            	case 1 :
            	    // InternalAlf.g:10821:1: (lv_annotation_1_0= RULE_STATEMENT_ANNOTATION )
            	    {
            	    // InternalAlf.g:10821:1: (lv_annotation_1_0= RULE_STATEMENT_ANNOTATION )
            	    // InternalAlf.g:10822:3: lv_annotation_1_0= RULE_STATEMENT_ANNOTATION
            	    {
            	    lv_annotation_1_0=(Token)match(input,RULE_STATEMENT_ANNOTATION,FOLLOW_95); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      			newLeafNode(lv_annotation_1_0, grammarAccess.getAnnotatedStatementAccess().getAnnotationSTATEMENT_ANNOTATIONTerminalRuleCall_1_0()); 
            	      		
            	    }
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElement(grammarAccess.getAnnotatedStatementRule());
            	      	        }
            	             		addWithLastConsumed(
            	             			current, 
            	             			"annotation",
            	              		lv_annotation_1_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.STATEMENT_ANNOTATION");
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop187;
                }
            } while (true);

            // InternalAlf.g:10838:3: ( (lv_statement_2_0= ruleStatement ) )
            // InternalAlf.g:10839:1: (lv_statement_2_0= ruleStatement )
            {
            // InternalAlf.g:10839:1: (lv_statement_2_0= ruleStatement )
            // InternalAlf.g:10840:3: lv_statement_2_0= ruleStatement
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getAnnotatedStatementAccess().getStatementStatementParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_statement_2_0=ruleStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getAnnotatedStatementRule());
              	        }
                     		set(
                     			current, 
                     			"statement",
                      		lv_statement_2_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Statement");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAnnotatedStatement"


    // $ANTLR start "entryRuleInLineStatement"
    // InternalAlf.g:10864:1: entryRuleInLineStatement returns [EObject current=null] : iv_ruleInLineStatement= ruleInLineStatement EOF ;
    public final EObject entryRuleInLineStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleInLineStatement = null;


        try {
            // InternalAlf.g:10865:2: (iv_ruleInLineStatement= ruleInLineStatement EOF )
            // InternalAlf.g:10866:2: iv_ruleInLineStatement= ruleInLineStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getInLineStatementRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleInLineStatement=ruleInLineStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleInLineStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleInLineStatement"


    // $ANTLR start "ruleInLineStatement"
    // InternalAlf.g:10873:1: ruleInLineStatement returns [EObject current=null] : ( (lv_code_0_0= RULE_INLINE_STATEMENT ) ) ;
    public final EObject ruleInLineStatement() throws RecognitionException {
        EObject current = null;

        Token lv_code_0_0=null;

         enterRule(); 
            
        try {
            // InternalAlf.g:10876:28: ( ( (lv_code_0_0= RULE_INLINE_STATEMENT ) ) )
            // InternalAlf.g:10877:1: ( (lv_code_0_0= RULE_INLINE_STATEMENT ) )
            {
            // InternalAlf.g:10877:1: ( (lv_code_0_0= RULE_INLINE_STATEMENT ) )
            // InternalAlf.g:10878:1: (lv_code_0_0= RULE_INLINE_STATEMENT )
            {
            // InternalAlf.g:10878:1: (lv_code_0_0= RULE_INLINE_STATEMENT )
            // InternalAlf.g:10879:3: lv_code_0_0= RULE_INLINE_STATEMENT
            {
            lv_code_0_0=(Token)match(input,RULE_INLINE_STATEMENT,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_code_0_0, grammarAccess.getInLineStatementAccess().getCodeINLINE_STATEMENTTerminalRuleCall_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getInLineStatementRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"code",
                      		lv_code_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.INLINE_STATEMENT");
              	    
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleInLineStatement"


    // $ANTLR start "entryRuleBlockStatement"
    // InternalAlf.g:10903:1: entryRuleBlockStatement returns [EObject current=null] : iv_ruleBlockStatement= ruleBlockStatement EOF ;
    public final EObject entryRuleBlockStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBlockStatement = null;


        try {
            // InternalAlf.g:10904:2: (iv_ruleBlockStatement= ruleBlockStatement EOF )
            // InternalAlf.g:10905:2: iv_ruleBlockStatement= ruleBlockStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getBlockStatementRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleBlockStatement=ruleBlockStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleBlockStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBlockStatement"


    // $ANTLR start "ruleBlockStatement"
    // InternalAlf.g:10912:1: ruleBlockStatement returns [EObject current=null] : ( (lv_block_0_0= ruleBlock ) ) ;
    public final EObject ruleBlockStatement() throws RecognitionException {
        EObject current = null;

        EObject lv_block_0_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:10915:28: ( ( (lv_block_0_0= ruleBlock ) ) )
            // InternalAlf.g:10916:1: ( (lv_block_0_0= ruleBlock ) )
            {
            // InternalAlf.g:10916:1: ( (lv_block_0_0= ruleBlock ) )
            // InternalAlf.g:10917:1: (lv_block_0_0= ruleBlock )
            {
            // InternalAlf.g:10917:1: (lv_block_0_0= ruleBlock )
            // InternalAlf.g:10918:3: lv_block_0_0= ruleBlock
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getBlockStatementAccess().getBlockBlockParserRuleCall_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_block_0_0=ruleBlock();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getBlockStatementRule());
              	        }
                     		set(
                     			current, 
                     			"block",
                      		lv_block_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Block");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBlockStatement"


    // $ANTLR start "entryRuleEmptyStatement"
    // InternalAlf.g:10942:1: entryRuleEmptyStatement returns [EObject current=null] : iv_ruleEmptyStatement= ruleEmptyStatement EOF ;
    public final EObject entryRuleEmptyStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEmptyStatement = null;


        try {
            // InternalAlf.g:10943:2: (iv_ruleEmptyStatement= ruleEmptyStatement EOF )
            // InternalAlf.g:10944:2: iv_ruleEmptyStatement= ruleEmptyStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getEmptyStatementRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleEmptyStatement=ruleEmptyStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleEmptyStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEmptyStatement"


    // $ANTLR start "ruleEmptyStatement"
    // InternalAlf.g:10951:1: ruleEmptyStatement returns [EObject current=null] : ( () otherlv_1= ';' ) ;
    public final EObject ruleEmptyStatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // InternalAlf.g:10954:28: ( ( () otherlv_1= ';' ) )
            // InternalAlf.g:10955:1: ( () otherlv_1= ';' )
            {
            // InternalAlf.g:10955:1: ( () otherlv_1= ';' )
            // InternalAlf.g:10955:2: () otherlv_1= ';'
            {
            // InternalAlf.g:10955:2: ()
            // InternalAlf.g:10956:2: 
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getEmptyStatementAccess().getEmptyStatementAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getEmptyStatementAccess().getSemicolonKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEmptyStatement"


    // $ANTLR start "entryRuleLocalNameDeclarationStatement"
    // InternalAlf.g:10976:1: entryRuleLocalNameDeclarationStatement returns [EObject current=null] : iv_ruleLocalNameDeclarationStatement= ruleLocalNameDeclarationStatement EOF ;
    public final EObject entryRuleLocalNameDeclarationStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLocalNameDeclarationStatement = null;


        try {
            // InternalAlf.g:10977:2: (iv_ruleLocalNameDeclarationStatement= ruleLocalNameDeclarationStatement EOF )
            // InternalAlf.g:10978:2: iv_ruleLocalNameDeclarationStatement= ruleLocalNameDeclarationStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getLocalNameDeclarationStatementRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleLocalNameDeclarationStatement=ruleLocalNameDeclarationStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleLocalNameDeclarationStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLocalNameDeclarationStatement"


    // $ANTLR start "ruleLocalNameDeclarationStatement"
    // InternalAlf.g:10985:1: ruleLocalNameDeclarationStatement returns [EObject current=null] : ( ( (otherlv_0= 'let' ( (lv_name_1_0= ruleName ) ) otherlv_2= ':' ( ( (lv_isAny_3_0= 'any' ) ) | ( (lv_typeName_4_0= ruleQualifiedName ) ) ) ( (lv_hasMultiplicity_5_0= ruleMultiplicityIndicator ) )? ) | ( ( ( (lv_isAny_6_0= 'any' ) ) | ( (lv_typeName_7_0= ruleQualifiedName ) ) ) ( (lv_hasMultiplicity_8_0= ruleMultiplicityIndicator ) )? ( (lv_name_9_0= ruleName ) ) ) ) otherlv_10= '=' ( (lv_expression_11_0= ruleInitializationExpression ) ) otherlv_12= ';' ) ;
    public final EObject ruleLocalNameDeclarationStatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token lv_isAny_3_0=null;
        Token lv_isAny_6_0=null;
        Token otherlv_10=null;
        Token otherlv_12=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_typeName_4_0 = null;

        AntlrDatatypeRuleToken lv_hasMultiplicity_5_0 = null;

        EObject lv_typeName_7_0 = null;

        AntlrDatatypeRuleToken lv_hasMultiplicity_8_0 = null;

        AntlrDatatypeRuleToken lv_name_9_0 = null;

        EObject lv_expression_11_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:10988:28: ( ( ( (otherlv_0= 'let' ( (lv_name_1_0= ruleName ) ) otherlv_2= ':' ( ( (lv_isAny_3_0= 'any' ) ) | ( (lv_typeName_4_0= ruleQualifiedName ) ) ) ( (lv_hasMultiplicity_5_0= ruleMultiplicityIndicator ) )? ) | ( ( ( (lv_isAny_6_0= 'any' ) ) | ( (lv_typeName_7_0= ruleQualifiedName ) ) ) ( (lv_hasMultiplicity_8_0= ruleMultiplicityIndicator ) )? ( (lv_name_9_0= ruleName ) ) ) ) otherlv_10= '=' ( (lv_expression_11_0= ruleInitializationExpression ) ) otherlv_12= ';' ) )
            // InternalAlf.g:10989:1: ( ( (otherlv_0= 'let' ( (lv_name_1_0= ruleName ) ) otherlv_2= ':' ( ( (lv_isAny_3_0= 'any' ) ) | ( (lv_typeName_4_0= ruleQualifiedName ) ) ) ( (lv_hasMultiplicity_5_0= ruleMultiplicityIndicator ) )? ) | ( ( ( (lv_isAny_6_0= 'any' ) ) | ( (lv_typeName_7_0= ruleQualifiedName ) ) ) ( (lv_hasMultiplicity_8_0= ruleMultiplicityIndicator ) )? ( (lv_name_9_0= ruleName ) ) ) ) otherlv_10= '=' ( (lv_expression_11_0= ruleInitializationExpression ) ) otherlv_12= ';' )
            {
            // InternalAlf.g:10989:1: ( ( (otherlv_0= 'let' ( (lv_name_1_0= ruleName ) ) otherlv_2= ':' ( ( (lv_isAny_3_0= 'any' ) ) | ( (lv_typeName_4_0= ruleQualifiedName ) ) ) ( (lv_hasMultiplicity_5_0= ruleMultiplicityIndicator ) )? ) | ( ( ( (lv_isAny_6_0= 'any' ) ) | ( (lv_typeName_7_0= ruleQualifiedName ) ) ) ( (lv_hasMultiplicity_8_0= ruleMultiplicityIndicator ) )? ( (lv_name_9_0= ruleName ) ) ) ) otherlv_10= '=' ( (lv_expression_11_0= ruleInitializationExpression ) ) otherlv_12= ';' )
            // InternalAlf.g:10989:2: ( (otherlv_0= 'let' ( (lv_name_1_0= ruleName ) ) otherlv_2= ':' ( ( (lv_isAny_3_0= 'any' ) ) | ( (lv_typeName_4_0= ruleQualifiedName ) ) ) ( (lv_hasMultiplicity_5_0= ruleMultiplicityIndicator ) )? ) | ( ( ( (lv_isAny_6_0= 'any' ) ) | ( (lv_typeName_7_0= ruleQualifiedName ) ) ) ( (lv_hasMultiplicity_8_0= ruleMultiplicityIndicator ) )? ( (lv_name_9_0= ruleName ) ) ) ) otherlv_10= '=' ( (lv_expression_11_0= ruleInitializationExpression ) ) otherlv_12= ';'
            {
            // InternalAlf.g:10989:2: ( (otherlv_0= 'let' ( (lv_name_1_0= ruleName ) ) otherlv_2= ':' ( ( (lv_isAny_3_0= 'any' ) ) | ( (lv_typeName_4_0= ruleQualifiedName ) ) ) ( (lv_hasMultiplicity_5_0= ruleMultiplicityIndicator ) )? ) | ( ( ( (lv_isAny_6_0= 'any' ) ) | ( (lv_typeName_7_0= ruleQualifiedName ) ) ) ( (lv_hasMultiplicity_8_0= ruleMultiplicityIndicator ) )? ( (lv_name_9_0= ruleName ) ) ) )
            int alt192=2;
            int LA192_0 = input.LA(1);

            if ( (LA192_0==105) ) {
                alt192=1;
            }
            else if ( ((LA192_0>=RULE_ID && LA192_0<=RULE_UNRESTRICTED_NAME)||LA192_0==51) ) {
                alt192=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 192, 0, input);

                throw nvae;
            }
            switch (alt192) {
                case 1 :
                    // InternalAlf.g:10989:3: (otherlv_0= 'let' ( (lv_name_1_0= ruleName ) ) otherlv_2= ':' ( ( (lv_isAny_3_0= 'any' ) ) | ( (lv_typeName_4_0= ruleQualifiedName ) ) ) ( (lv_hasMultiplicity_5_0= ruleMultiplicityIndicator ) )? )
                    {
                    // InternalAlf.g:10989:3: (otherlv_0= 'let' ( (lv_name_1_0= ruleName ) ) otherlv_2= ':' ( ( (lv_isAny_3_0= 'any' ) ) | ( (lv_typeName_4_0= ruleQualifiedName ) ) ) ( (lv_hasMultiplicity_5_0= ruleMultiplicityIndicator ) )? )
                    // InternalAlf.g:10989:5: otherlv_0= 'let' ( (lv_name_1_0= ruleName ) ) otherlv_2= ':' ( ( (lv_isAny_3_0= 'any' ) ) | ( (lv_typeName_4_0= ruleQualifiedName ) ) ) ( (lv_hasMultiplicity_5_0= ruleMultiplicityIndicator ) )?
                    {
                    otherlv_0=(Token)match(input,105,FOLLOW_4); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_0, grammarAccess.getLocalNameDeclarationStatementAccess().getLetKeyword_0_0_0());
                          
                    }
                    // InternalAlf.g:10993:1: ( (lv_name_1_0= ruleName ) )
                    // InternalAlf.g:10994:1: (lv_name_1_0= ruleName )
                    {
                    // InternalAlf.g:10994:1: (lv_name_1_0= ruleName )
                    // InternalAlf.g:10995:3: lv_name_1_0= ruleName
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getLocalNameDeclarationStatementAccess().getNameNameParserRuleCall_0_0_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_47);
                    lv_name_1_0=ruleName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getLocalNameDeclarationStatementRule());
                      	        }
                             		set(
                             			current, 
                             			"name",
                              		lv_name_1_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.Name");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_2=(Token)match(input,45,FOLLOW_48); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getLocalNameDeclarationStatementAccess().getColonKeyword_0_0_2());
                          
                    }
                    // InternalAlf.g:11015:1: ( ( (lv_isAny_3_0= 'any' ) ) | ( (lv_typeName_4_0= ruleQualifiedName ) ) )
                    int alt188=2;
                    int LA188_0 = input.LA(1);

                    if ( (LA188_0==51) ) {
                        alt188=1;
                    }
                    else if ( ((LA188_0>=RULE_ID && LA188_0<=RULE_UNRESTRICTED_NAME)) ) {
                        alt188=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 188, 0, input);

                        throw nvae;
                    }
                    switch (alt188) {
                        case 1 :
                            // InternalAlf.g:11015:2: ( (lv_isAny_3_0= 'any' ) )
                            {
                            // InternalAlf.g:11015:2: ( (lv_isAny_3_0= 'any' ) )
                            // InternalAlf.g:11016:1: (lv_isAny_3_0= 'any' )
                            {
                            // InternalAlf.g:11016:1: (lv_isAny_3_0= 'any' )
                            // InternalAlf.g:11017:3: lv_isAny_3_0= 'any'
                            {
                            lv_isAny_3_0=(Token)match(input,51,FOLLOW_96); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_isAny_3_0, grammarAccess.getLocalNameDeclarationStatementAccess().getIsAnyAnyKeyword_0_0_3_0_0());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getLocalNameDeclarationStatementRule());
                              	        }
                                     		setWithLastConsumed(current, "isAny", true, "any");
                              	    
                            }

                            }


                            }


                            }
                            break;
                        case 2 :
                            // InternalAlf.g:11031:6: ( (lv_typeName_4_0= ruleQualifiedName ) )
                            {
                            // InternalAlf.g:11031:6: ( (lv_typeName_4_0= ruleQualifiedName ) )
                            // InternalAlf.g:11032:1: (lv_typeName_4_0= ruleQualifiedName )
                            {
                            // InternalAlf.g:11032:1: (lv_typeName_4_0= ruleQualifiedName )
                            // InternalAlf.g:11033:3: lv_typeName_4_0= ruleQualifiedName
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getLocalNameDeclarationStatementAccess().getTypeNameQualifiedNameParserRuleCall_0_0_3_1_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_96);
                            lv_typeName_4_0=ruleQualifiedName();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getLocalNameDeclarationStatementRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"typeName",
                                      		lv_typeName_4_0, 
                                      		"org.eclipse.papyrus.uml.alf.Alf.QualifiedName");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }
                            break;

                    }

                    // InternalAlf.g:11049:3: ( (lv_hasMultiplicity_5_0= ruleMultiplicityIndicator ) )?
                    int alt189=2;
                    int LA189_0 = input.LA(1);

                    if ( (LA189_0==52) ) {
                        alt189=1;
                    }
                    switch (alt189) {
                        case 1 :
                            // InternalAlf.g:11050:1: (lv_hasMultiplicity_5_0= ruleMultiplicityIndicator )
                            {
                            // InternalAlf.g:11050:1: (lv_hasMultiplicity_5_0= ruleMultiplicityIndicator )
                            // InternalAlf.g:11051:3: lv_hasMultiplicity_5_0= ruleMultiplicityIndicator
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getLocalNameDeclarationStatementAccess().getHasMultiplicityMultiplicityIndicatorParserRuleCall_0_0_4_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_97);
                            lv_hasMultiplicity_5_0=ruleMultiplicityIndicator();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getLocalNameDeclarationStatementRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"hasMultiplicity",
                                      		true, 
                                      		"org.eclipse.papyrus.uml.alf.Alf.MultiplicityIndicator");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalAlf.g:11068:6: ( ( ( (lv_isAny_6_0= 'any' ) ) | ( (lv_typeName_7_0= ruleQualifiedName ) ) ) ( (lv_hasMultiplicity_8_0= ruleMultiplicityIndicator ) )? ( (lv_name_9_0= ruleName ) ) )
                    {
                    // InternalAlf.g:11068:6: ( ( ( (lv_isAny_6_0= 'any' ) ) | ( (lv_typeName_7_0= ruleQualifiedName ) ) ) ( (lv_hasMultiplicity_8_0= ruleMultiplicityIndicator ) )? ( (lv_name_9_0= ruleName ) ) )
                    // InternalAlf.g:11068:7: ( ( (lv_isAny_6_0= 'any' ) ) | ( (lv_typeName_7_0= ruleQualifiedName ) ) ) ( (lv_hasMultiplicity_8_0= ruleMultiplicityIndicator ) )? ( (lv_name_9_0= ruleName ) )
                    {
                    // InternalAlf.g:11068:7: ( ( (lv_isAny_6_0= 'any' ) ) | ( (lv_typeName_7_0= ruleQualifiedName ) ) )
                    int alt190=2;
                    int LA190_0 = input.LA(1);

                    if ( (LA190_0==51) ) {
                        alt190=1;
                    }
                    else if ( ((LA190_0>=RULE_ID && LA190_0<=RULE_UNRESTRICTED_NAME)) ) {
                        alt190=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 190, 0, input);

                        throw nvae;
                    }
                    switch (alt190) {
                        case 1 :
                            // InternalAlf.g:11068:8: ( (lv_isAny_6_0= 'any' ) )
                            {
                            // InternalAlf.g:11068:8: ( (lv_isAny_6_0= 'any' ) )
                            // InternalAlf.g:11069:1: (lv_isAny_6_0= 'any' )
                            {
                            // InternalAlf.g:11069:1: (lv_isAny_6_0= 'any' )
                            // InternalAlf.g:11070:3: lv_isAny_6_0= 'any'
                            {
                            lv_isAny_6_0=(Token)match(input,51,FOLLOW_98); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_isAny_6_0, grammarAccess.getLocalNameDeclarationStatementAccess().getIsAnyAnyKeyword_0_1_0_0_0());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getLocalNameDeclarationStatementRule());
                              	        }
                                     		setWithLastConsumed(current, "isAny", true, "any");
                              	    
                            }

                            }


                            }


                            }
                            break;
                        case 2 :
                            // InternalAlf.g:11084:6: ( (lv_typeName_7_0= ruleQualifiedName ) )
                            {
                            // InternalAlf.g:11084:6: ( (lv_typeName_7_0= ruleQualifiedName ) )
                            // InternalAlf.g:11085:1: (lv_typeName_7_0= ruleQualifiedName )
                            {
                            // InternalAlf.g:11085:1: (lv_typeName_7_0= ruleQualifiedName )
                            // InternalAlf.g:11086:3: lv_typeName_7_0= ruleQualifiedName
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getLocalNameDeclarationStatementAccess().getTypeNameQualifiedNameParserRuleCall_0_1_0_1_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_98);
                            lv_typeName_7_0=ruleQualifiedName();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getLocalNameDeclarationStatementRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"typeName",
                                      		lv_typeName_7_0, 
                                      		"org.eclipse.papyrus.uml.alf.Alf.QualifiedName");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }
                            break;

                    }

                    // InternalAlf.g:11102:3: ( (lv_hasMultiplicity_8_0= ruleMultiplicityIndicator ) )?
                    int alt191=2;
                    int LA191_0 = input.LA(1);

                    if ( (LA191_0==52) ) {
                        alt191=1;
                    }
                    switch (alt191) {
                        case 1 :
                            // InternalAlf.g:11103:1: (lv_hasMultiplicity_8_0= ruleMultiplicityIndicator )
                            {
                            // InternalAlf.g:11103:1: (lv_hasMultiplicity_8_0= ruleMultiplicityIndicator )
                            // InternalAlf.g:11104:3: lv_hasMultiplicity_8_0= ruleMultiplicityIndicator
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getLocalNameDeclarationStatementAccess().getHasMultiplicityMultiplicityIndicatorParserRuleCall_0_1_1_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_4);
                            lv_hasMultiplicity_8_0=ruleMultiplicityIndicator();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getLocalNameDeclarationStatementRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"hasMultiplicity",
                                      		true, 
                                      		"org.eclipse.papyrus.uml.alf.Alf.MultiplicityIndicator");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }
                            break;

                    }

                    // InternalAlf.g:11120:3: ( (lv_name_9_0= ruleName ) )
                    // InternalAlf.g:11121:1: (lv_name_9_0= ruleName )
                    {
                    // InternalAlf.g:11121:1: (lv_name_9_0= ruleName )
                    // InternalAlf.g:11122:3: lv_name_9_0= ruleName
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getLocalNameDeclarationStatementAccess().getNameNameParserRuleCall_0_1_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_97);
                    lv_name_9_0=ruleName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getLocalNameDeclarationStatementRule());
                      	        }
                             		set(
                             			current, 
                             			"name",
                              		lv_name_9_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.Name");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }

            otherlv_10=(Token)match(input,49,FOLLOW_50); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_10, grammarAccess.getLocalNameDeclarationStatementAccess().getEqualsSignKeyword_1());
                  
            }
            // InternalAlf.g:11142:1: ( (lv_expression_11_0= ruleInitializationExpression ) )
            // InternalAlf.g:11143:1: (lv_expression_11_0= ruleInitializationExpression )
            {
            // InternalAlf.g:11143:1: (lv_expression_11_0= ruleInitializationExpression )
            // InternalAlf.g:11144:3: lv_expression_11_0= ruleInitializationExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getLocalNameDeclarationStatementAccess().getExpressionInitializationExpressionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_11);
            lv_expression_11_0=ruleInitializationExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getLocalNameDeclarationStatementRule());
              	        }
                     		set(
                     			current, 
                     			"expression",
                      		lv_expression_11_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.InitializationExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_12=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_12, grammarAccess.getLocalNameDeclarationStatementAccess().getSemicolonKeyword_3());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLocalNameDeclarationStatement"


    // $ANTLR start "entryRuleInitializationExpression"
    // InternalAlf.g:11172:1: entryRuleInitializationExpression returns [EObject current=null] : iv_ruleInitializationExpression= ruleInitializationExpression EOF ;
    public final EObject entryRuleInitializationExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleInitializationExpression = null;


        try {
            // InternalAlf.g:11173:2: (iv_ruleInitializationExpression= ruleInitializationExpression EOF )
            // InternalAlf.g:11174:2: iv_ruleInitializationExpression= ruleInitializationExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getInitializationExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleInitializationExpression=ruleInitializationExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleInitializationExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleInitializationExpression"


    // $ANTLR start "ruleInitializationExpression"
    // InternalAlf.g:11181:1: ruleInitializationExpression returns [EObject current=null] : (this_Expression_0= ruleExpression | this_SequenceInitializationExpression_1= ruleSequenceInitializationExpression | this_InstanceInitializationExpression_2= ruleInstanceInitializationExpression ) ;
    public final EObject ruleInitializationExpression() throws RecognitionException {
        EObject current = null;

        EObject this_Expression_0 = null;

        EObject this_SequenceInitializationExpression_1 = null;

        EObject this_InstanceInitializationExpression_2 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:11184:28: ( (this_Expression_0= ruleExpression | this_SequenceInitializationExpression_1= ruleSequenceInitializationExpression | this_InstanceInitializationExpression_2= ruleInstanceInitializationExpression ) )
            // InternalAlf.g:11185:1: (this_Expression_0= ruleExpression | this_SequenceInitializationExpression_1= ruleSequenceInitializationExpression | this_InstanceInitializationExpression_2= ruleInstanceInitializationExpression )
            {
            // InternalAlf.g:11185:1: (this_Expression_0= ruleExpression | this_SequenceInitializationExpression_1= ruleSequenceInitializationExpression | this_InstanceInitializationExpression_2= ruleInstanceInitializationExpression )
            int alt193=3;
            switch ( input.LA(1) ) {
            case RULE_BOOLEAN_VALUE:
            case RULE_NATURAL_VALUE:
            case RULE_STRING:
            case RULE_ID:
            case RULE_UNRESTRICTED_NAME:
            case 16:
            case 20:
            case 51:
            case 62:
            case 63:
            case 69:
            case 70:
            case 71:
            case 72:
            case 73:
            case 74:
            case 75:
            case 76:
                {
                alt193=1;
                }
                break;
            case 64:
                {
                switch ( input.LA(2) ) {
                case RULE_ID:
                case RULE_UNRESTRICTED_NAME:
                    {
                    alt193=1;
                    }
                    break;
                case 16:
                    {
                    alt193=3;
                    }
                    break;
                case 31:
                    {
                    alt193=2;
                    }
                    break;
                default:
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 193, 2, input);

                    throw nvae;
                }

                }
                break;
            case 31:
                {
                alt193=2;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 193, 0, input);

                throw nvae;
            }

            switch (alt193) {
                case 1 :
                    // InternalAlf.g:11186:2: this_Expression_0= ruleExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getInitializationExpressionAccess().getExpressionParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_Expression_0=ruleExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_Expression_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // InternalAlf.g:11199:2: this_SequenceInitializationExpression_1= ruleSequenceInitializationExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getInitializationExpressionAccess().getSequenceInitializationExpressionParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_SequenceInitializationExpression_1=ruleSequenceInitializationExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_SequenceInitializationExpression_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // InternalAlf.g:11212:2: this_InstanceInitializationExpression_2= ruleInstanceInitializationExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getInitializationExpressionAccess().getInstanceInitializationExpressionParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_2);
                    this_InstanceInitializationExpression_2=ruleInstanceInitializationExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_InstanceInitializationExpression_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleInitializationExpression"


    // $ANTLR start "entryRuleInstanceInitializationExpression"
    // InternalAlf.g:11231:1: entryRuleInstanceInitializationExpression returns [EObject current=null] : iv_ruleInstanceInitializationExpression= ruleInstanceInitializationExpression EOF ;
    public final EObject entryRuleInstanceInitializationExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleInstanceInitializationExpression = null;


        try {
            // InternalAlf.g:11232:2: (iv_ruleInstanceInitializationExpression= ruleInstanceInitializationExpression EOF )
            // InternalAlf.g:11233:2: iv_ruleInstanceInitializationExpression= ruleInstanceInitializationExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getInstanceInitializationExpressionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleInstanceInitializationExpression=ruleInstanceInitializationExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleInstanceInitializationExpression; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleInstanceInitializationExpression"


    // $ANTLR start "ruleInstanceInitializationExpression"
    // InternalAlf.g:11240:1: ruleInstanceInitializationExpression returns [EObject current=null] : (otherlv_0= 'new' ( (lv_tuple_1_0= ruleTuple ) ) ) ;
    public final EObject ruleInstanceInitializationExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_tuple_1_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:11243:28: ( (otherlv_0= 'new' ( (lv_tuple_1_0= ruleTuple ) ) ) )
            // InternalAlf.g:11244:1: (otherlv_0= 'new' ( (lv_tuple_1_0= ruleTuple ) ) )
            {
            // InternalAlf.g:11244:1: (otherlv_0= 'new' ( (lv_tuple_1_0= ruleTuple ) ) )
            // InternalAlf.g:11244:3: otherlv_0= 'new' ( (lv_tuple_1_0= ruleTuple ) )
            {
            otherlv_0=(Token)match(input,64,FOLLOW_42); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getInstanceInitializationExpressionAccess().getNewKeyword_0());
                  
            }
            // InternalAlf.g:11248:1: ( (lv_tuple_1_0= ruleTuple ) )
            // InternalAlf.g:11249:1: (lv_tuple_1_0= ruleTuple )
            {
            // InternalAlf.g:11249:1: (lv_tuple_1_0= ruleTuple )
            // InternalAlf.g:11250:3: lv_tuple_1_0= ruleTuple
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getInstanceInitializationExpressionAccess().getTupleTupleParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_tuple_1_0=ruleTuple();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getInstanceInitializationExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"tuple",
                      		lv_tuple_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Tuple");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleInstanceInitializationExpression"


    // $ANTLR start "entryRuleExpressionStatement"
    // InternalAlf.g:11274:1: entryRuleExpressionStatement returns [EObject current=null] : iv_ruleExpressionStatement= ruleExpressionStatement EOF ;
    public final EObject entryRuleExpressionStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExpressionStatement = null;


        try {
            // InternalAlf.g:11275:2: (iv_ruleExpressionStatement= ruleExpressionStatement EOF )
            // InternalAlf.g:11276:2: iv_ruleExpressionStatement= ruleExpressionStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getExpressionStatementRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleExpressionStatement=ruleExpressionStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExpressionStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExpressionStatement"


    // $ANTLR start "ruleExpressionStatement"
    // InternalAlf.g:11283:1: ruleExpressionStatement returns [EObject current=null] : ( ( (lv_expression_0_0= ruleExpression ) ) otherlv_1= ';' ) ;
    public final EObject ruleExpressionStatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_expression_0_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:11286:28: ( ( ( (lv_expression_0_0= ruleExpression ) ) otherlv_1= ';' ) )
            // InternalAlf.g:11287:1: ( ( (lv_expression_0_0= ruleExpression ) ) otherlv_1= ';' )
            {
            // InternalAlf.g:11287:1: ( ( (lv_expression_0_0= ruleExpression ) ) otherlv_1= ';' )
            // InternalAlf.g:11287:2: ( (lv_expression_0_0= ruleExpression ) ) otherlv_1= ';'
            {
            // InternalAlf.g:11287:2: ( (lv_expression_0_0= ruleExpression ) )
            // InternalAlf.g:11288:1: (lv_expression_0_0= ruleExpression )
            {
            // InternalAlf.g:11288:1: (lv_expression_0_0= ruleExpression )
            // InternalAlf.g:11289:3: lv_expression_0_0= ruleExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getExpressionStatementAccess().getExpressionExpressionParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_11);
            lv_expression_0_0=ruleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getExpressionStatementRule());
              	        }
                     		set(
                     			current, 
                     			"expression",
                      		lv_expression_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Expression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getExpressionStatementAccess().getSemicolonKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExpressionStatement"


    // $ANTLR start "entryRuleIfStatement"
    // InternalAlf.g:11317:1: entryRuleIfStatement returns [EObject current=null] : iv_ruleIfStatement= ruleIfStatement EOF ;
    public final EObject entryRuleIfStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIfStatement = null;


        try {
            // InternalAlf.g:11318:2: (iv_ruleIfStatement= ruleIfStatement EOF )
            // InternalAlf.g:11319:2: iv_ruleIfStatement= ruleIfStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getIfStatementRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleIfStatement=ruleIfStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleIfStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIfStatement"


    // $ANTLR start "ruleIfStatement"
    // InternalAlf.g:11326:1: ruleIfStatement returns [EObject current=null] : (otherlv_0= 'if' ( (lv_nonFinalClauses_1_0= ruleConcurrentClauses ) ) (otherlv_2= 'else' otherlv_3= 'if' ( (lv_nonFinalClauses_4_0= ruleConcurrentClauses ) ) )* (otherlv_5= 'else' ( (lv_finalClause_6_0= ruleBlock ) ) )? ) ;
    public final EObject ruleIfStatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_nonFinalClauses_1_0 = null;

        EObject lv_nonFinalClauses_4_0 = null;

        EObject lv_finalClause_6_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:11329:28: ( (otherlv_0= 'if' ( (lv_nonFinalClauses_1_0= ruleConcurrentClauses ) ) (otherlv_2= 'else' otherlv_3= 'if' ( (lv_nonFinalClauses_4_0= ruleConcurrentClauses ) ) )* (otherlv_5= 'else' ( (lv_finalClause_6_0= ruleBlock ) ) )? ) )
            // InternalAlf.g:11330:1: (otherlv_0= 'if' ( (lv_nonFinalClauses_1_0= ruleConcurrentClauses ) ) (otherlv_2= 'else' otherlv_3= 'if' ( (lv_nonFinalClauses_4_0= ruleConcurrentClauses ) ) )* (otherlv_5= 'else' ( (lv_finalClause_6_0= ruleBlock ) ) )? )
            {
            // InternalAlf.g:11330:1: (otherlv_0= 'if' ( (lv_nonFinalClauses_1_0= ruleConcurrentClauses ) ) (otherlv_2= 'else' otherlv_3= 'if' ( (lv_nonFinalClauses_4_0= ruleConcurrentClauses ) ) )* (otherlv_5= 'else' ( (lv_finalClause_6_0= ruleBlock ) ) )? )
            // InternalAlf.g:11330:3: otherlv_0= 'if' ( (lv_nonFinalClauses_1_0= ruleConcurrentClauses ) ) (otherlv_2= 'else' otherlv_3= 'if' ( (lv_nonFinalClauses_4_0= ruleConcurrentClauses ) ) )* (otherlv_5= 'else' ( (lv_finalClause_6_0= ruleBlock ) ) )?
            {
            otherlv_0=(Token)match(input,106,FOLLOW_42); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getIfStatementAccess().getIfKeyword_0());
                  
            }
            // InternalAlf.g:11334:1: ( (lv_nonFinalClauses_1_0= ruleConcurrentClauses ) )
            // InternalAlf.g:11335:1: (lv_nonFinalClauses_1_0= ruleConcurrentClauses )
            {
            // InternalAlf.g:11335:1: (lv_nonFinalClauses_1_0= ruleConcurrentClauses )
            // InternalAlf.g:11336:3: lv_nonFinalClauses_1_0= ruleConcurrentClauses
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getIfStatementAccess().getNonFinalClausesConcurrentClausesParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_99);
            lv_nonFinalClauses_1_0=ruleConcurrentClauses();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getIfStatementRule());
              	        }
                     		add(
                     			current, 
                     			"nonFinalClauses",
                      		lv_nonFinalClauses_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.ConcurrentClauses");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:11352:2: (otherlv_2= 'else' otherlv_3= 'if' ( (lv_nonFinalClauses_4_0= ruleConcurrentClauses ) ) )*
            loop194:
            do {
                int alt194=2;
                int LA194_0 = input.LA(1);

                if ( (LA194_0==107) ) {
                    int LA194_1 = input.LA(2);

                    if ( (LA194_1==106) ) {
                        alt194=1;
                    }


                }


                switch (alt194) {
            	case 1 :
            	    // InternalAlf.g:11352:4: otherlv_2= 'else' otherlv_3= 'if' ( (lv_nonFinalClauses_4_0= ruleConcurrentClauses ) )
            	    {
            	    otherlv_2=(Token)match(input,107,FOLLOW_100); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_2, grammarAccess.getIfStatementAccess().getElseKeyword_2_0());
            	          
            	    }
            	    otherlv_3=(Token)match(input,106,FOLLOW_42); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_3, grammarAccess.getIfStatementAccess().getIfKeyword_2_1());
            	          
            	    }
            	    // InternalAlf.g:11360:1: ( (lv_nonFinalClauses_4_0= ruleConcurrentClauses ) )
            	    // InternalAlf.g:11361:1: (lv_nonFinalClauses_4_0= ruleConcurrentClauses )
            	    {
            	    // InternalAlf.g:11361:1: (lv_nonFinalClauses_4_0= ruleConcurrentClauses )
            	    // InternalAlf.g:11362:3: lv_nonFinalClauses_4_0= ruleConcurrentClauses
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getIfStatementAccess().getNonFinalClausesConcurrentClausesParserRuleCall_2_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_99);
            	    lv_nonFinalClauses_4_0=ruleConcurrentClauses();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getIfStatementRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"nonFinalClauses",
            	              		lv_nonFinalClauses_4_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.ConcurrentClauses");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop194;
                }
            } while (true);

            // InternalAlf.g:11378:4: (otherlv_5= 'else' ( (lv_finalClause_6_0= ruleBlock ) ) )?
            int alt195=2;
            int LA195_0 = input.LA(1);

            if ( (LA195_0==107) ) {
                alt195=1;
            }
            switch (alt195) {
                case 1 :
                    // InternalAlf.g:11378:6: otherlv_5= 'else' ( (lv_finalClause_6_0= ruleBlock ) )
                    {
                    otherlv_5=(Token)match(input,107,FOLLOW_18); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getIfStatementAccess().getElseKeyword_3_0());
                          
                    }
                    // InternalAlf.g:11382:1: ( (lv_finalClause_6_0= ruleBlock ) )
                    // InternalAlf.g:11383:1: (lv_finalClause_6_0= ruleBlock )
                    {
                    // InternalAlf.g:11383:1: (lv_finalClause_6_0= ruleBlock )
                    // InternalAlf.g:11384:3: lv_finalClause_6_0= ruleBlock
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getIfStatementAccess().getFinalClauseBlockParserRuleCall_3_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_finalClause_6_0=ruleBlock();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getIfStatementRule());
                      	        }
                             		set(
                             			current, 
                             			"finalClause",
                              		lv_finalClause_6_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.Block");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIfStatement"


    // $ANTLR start "entryRuleConcurrentClauses"
    // InternalAlf.g:11408:1: entryRuleConcurrentClauses returns [EObject current=null] : iv_ruleConcurrentClauses= ruleConcurrentClauses EOF ;
    public final EObject entryRuleConcurrentClauses() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConcurrentClauses = null;


        try {
            // InternalAlf.g:11409:2: (iv_ruleConcurrentClauses= ruleConcurrentClauses EOF )
            // InternalAlf.g:11410:2: iv_ruleConcurrentClauses= ruleConcurrentClauses EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getConcurrentClausesRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleConcurrentClauses=ruleConcurrentClauses();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleConcurrentClauses; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConcurrentClauses"


    // $ANTLR start "ruleConcurrentClauses"
    // InternalAlf.g:11417:1: ruleConcurrentClauses returns [EObject current=null] : ( ( (lv_clause_0_0= ruleNonFinalClause ) ) (otherlv_1= 'or' otherlv_2= 'if' ( (lv_clause_3_0= ruleNonFinalClause ) ) )* ) ;
    public final EObject ruleConcurrentClauses() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        EObject lv_clause_0_0 = null;

        EObject lv_clause_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:11420:28: ( ( ( (lv_clause_0_0= ruleNonFinalClause ) ) (otherlv_1= 'or' otherlv_2= 'if' ( (lv_clause_3_0= ruleNonFinalClause ) ) )* ) )
            // InternalAlf.g:11421:1: ( ( (lv_clause_0_0= ruleNonFinalClause ) ) (otherlv_1= 'or' otherlv_2= 'if' ( (lv_clause_3_0= ruleNonFinalClause ) ) )* )
            {
            // InternalAlf.g:11421:1: ( ( (lv_clause_0_0= ruleNonFinalClause ) ) (otherlv_1= 'or' otherlv_2= 'if' ( (lv_clause_3_0= ruleNonFinalClause ) ) )* )
            // InternalAlf.g:11421:2: ( (lv_clause_0_0= ruleNonFinalClause ) ) (otherlv_1= 'or' otherlv_2= 'if' ( (lv_clause_3_0= ruleNonFinalClause ) ) )*
            {
            // InternalAlf.g:11421:2: ( (lv_clause_0_0= ruleNonFinalClause ) )
            // InternalAlf.g:11422:1: (lv_clause_0_0= ruleNonFinalClause )
            {
            // InternalAlf.g:11422:1: (lv_clause_0_0= ruleNonFinalClause )
            // InternalAlf.g:11423:3: lv_clause_0_0= ruleNonFinalClause
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getConcurrentClausesAccess().getClauseNonFinalClauseParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_101);
            lv_clause_0_0=ruleNonFinalClause();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getConcurrentClausesRule());
              	        }
                     		add(
                     			current, 
                     			"clause",
                      		lv_clause_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.NonFinalClause");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:11439:2: (otherlv_1= 'or' otherlv_2= 'if' ( (lv_clause_3_0= ruleNonFinalClause ) ) )*
            loop196:
            do {
                int alt196=2;
                int LA196_0 = input.LA(1);

                if ( (LA196_0==108) ) {
                    alt196=1;
                }


                switch (alt196) {
            	case 1 :
            	    // InternalAlf.g:11439:4: otherlv_1= 'or' otherlv_2= 'if' ( (lv_clause_3_0= ruleNonFinalClause ) )
            	    {
            	    otherlv_1=(Token)match(input,108,FOLLOW_100); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_1, grammarAccess.getConcurrentClausesAccess().getOrKeyword_1_0());
            	          
            	    }
            	    otherlv_2=(Token)match(input,106,FOLLOW_42); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_2, grammarAccess.getConcurrentClausesAccess().getIfKeyword_1_1());
            	          
            	    }
            	    // InternalAlf.g:11447:1: ( (lv_clause_3_0= ruleNonFinalClause ) )
            	    // InternalAlf.g:11448:1: (lv_clause_3_0= ruleNonFinalClause )
            	    {
            	    // InternalAlf.g:11448:1: (lv_clause_3_0= ruleNonFinalClause )
            	    // InternalAlf.g:11449:3: lv_clause_3_0= ruleNonFinalClause
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getConcurrentClausesAccess().getClauseNonFinalClauseParserRuleCall_1_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_101);
            	    lv_clause_3_0=ruleNonFinalClause();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getConcurrentClausesRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"clause",
            	              		lv_clause_3_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.NonFinalClause");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop196;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConcurrentClauses"


    // $ANTLR start "entryRuleNonFinalClause"
    // InternalAlf.g:11473:1: entryRuleNonFinalClause returns [EObject current=null] : iv_ruleNonFinalClause= ruleNonFinalClause EOF ;
    public final EObject entryRuleNonFinalClause() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNonFinalClause = null;


        try {
            // InternalAlf.g:11474:2: (iv_ruleNonFinalClause= ruleNonFinalClause EOF )
            // InternalAlf.g:11475:2: iv_ruleNonFinalClause= ruleNonFinalClause EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNonFinalClauseRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleNonFinalClause=ruleNonFinalClause();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNonFinalClause; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNonFinalClause"


    // $ANTLR start "ruleNonFinalClause"
    // InternalAlf.g:11482:1: ruleNonFinalClause returns [EObject current=null] : (otherlv_0= '(' ( (lv_condition_1_0= ruleExpression ) ) otherlv_2= ')' ( (lv_body_3_0= ruleBlock ) ) ) ;
    public final EObject ruleNonFinalClause() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject lv_condition_1_0 = null;

        EObject lv_body_3_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:11485:28: ( (otherlv_0= '(' ( (lv_condition_1_0= ruleExpression ) ) otherlv_2= ')' ( (lv_body_3_0= ruleBlock ) ) ) )
            // InternalAlf.g:11486:1: (otherlv_0= '(' ( (lv_condition_1_0= ruleExpression ) ) otherlv_2= ')' ( (lv_body_3_0= ruleBlock ) ) )
            {
            // InternalAlf.g:11486:1: (otherlv_0= '(' ( (lv_condition_1_0= ruleExpression ) ) otherlv_2= ')' ( (lv_body_3_0= ruleBlock ) ) )
            // InternalAlf.g:11486:3: otherlv_0= '(' ( (lv_condition_1_0= ruleExpression ) ) otherlv_2= ')' ( (lv_body_3_0= ruleBlock ) )
            {
            otherlv_0=(Token)match(input,16,FOLLOW_69); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getNonFinalClauseAccess().getLeftParenthesisKeyword_0());
                  
            }
            // InternalAlf.g:11490:1: ( (lv_condition_1_0= ruleExpression ) )
            // InternalAlf.g:11491:1: (lv_condition_1_0= ruleExpression )
            {
            // InternalAlf.g:11491:1: (lv_condition_1_0= ruleExpression )
            // InternalAlf.g:11492:3: lv_condition_1_0= ruleExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getNonFinalClauseAccess().getConditionExpressionParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_6);
            lv_condition_1_0=ruleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getNonFinalClauseRule());
              	        }
                     		set(
                     			current, 
                     			"condition",
                      		lv_condition_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Expression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,17,FOLLOW_18); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getNonFinalClauseAccess().getRightParenthesisKeyword_2());
                  
            }
            // InternalAlf.g:11512:1: ( (lv_body_3_0= ruleBlock ) )
            // InternalAlf.g:11513:1: (lv_body_3_0= ruleBlock )
            {
            // InternalAlf.g:11513:1: (lv_body_3_0= ruleBlock )
            // InternalAlf.g:11514:3: lv_body_3_0= ruleBlock
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getNonFinalClauseAccess().getBodyBlockParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_body_3_0=ruleBlock();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getNonFinalClauseRule());
              	        }
                     		set(
                     			current, 
                     			"body",
                      		lv_body_3_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Block");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNonFinalClause"


    // $ANTLR start "entryRuleSwitchStatement"
    // InternalAlf.g:11538:1: entryRuleSwitchStatement returns [EObject current=null] : iv_ruleSwitchStatement= ruleSwitchStatement EOF ;
    public final EObject entryRuleSwitchStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSwitchStatement = null;


        try {
            // InternalAlf.g:11539:2: (iv_ruleSwitchStatement= ruleSwitchStatement EOF )
            // InternalAlf.g:11540:2: iv_ruleSwitchStatement= ruleSwitchStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSwitchStatementRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSwitchStatement=ruleSwitchStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSwitchStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSwitchStatement"


    // $ANTLR start "ruleSwitchStatement"
    // InternalAlf.g:11547:1: ruleSwitchStatement returns [EObject current=null] : (otherlv_0= 'switch' otherlv_1= '(' ( (lv_expression_2_0= ruleExpression ) ) otherlv_3= ')' otherlv_4= '{' ( (lv_nonDefaultClause_5_0= ruleSwitchClause ) )* ( (lv_defaultClause_6_0= ruleSwitchDefaultClause ) )? otherlv_7= '}' ) ;
    public final EObject ruleSwitchStatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_7=null;
        EObject lv_expression_2_0 = null;

        EObject lv_nonDefaultClause_5_0 = null;

        EObject lv_defaultClause_6_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:11550:28: ( (otherlv_0= 'switch' otherlv_1= '(' ( (lv_expression_2_0= ruleExpression ) ) otherlv_3= ')' otherlv_4= '{' ( (lv_nonDefaultClause_5_0= ruleSwitchClause ) )* ( (lv_defaultClause_6_0= ruleSwitchDefaultClause ) )? otherlv_7= '}' ) )
            // InternalAlf.g:11551:1: (otherlv_0= 'switch' otherlv_1= '(' ( (lv_expression_2_0= ruleExpression ) ) otherlv_3= ')' otherlv_4= '{' ( (lv_nonDefaultClause_5_0= ruleSwitchClause ) )* ( (lv_defaultClause_6_0= ruleSwitchDefaultClause ) )? otherlv_7= '}' )
            {
            // InternalAlf.g:11551:1: (otherlv_0= 'switch' otherlv_1= '(' ( (lv_expression_2_0= ruleExpression ) ) otherlv_3= ')' otherlv_4= '{' ( (lv_nonDefaultClause_5_0= ruleSwitchClause ) )* ( (lv_defaultClause_6_0= ruleSwitchDefaultClause ) )? otherlv_7= '}' )
            // InternalAlf.g:11551:3: otherlv_0= 'switch' otherlv_1= '(' ( (lv_expression_2_0= ruleExpression ) ) otherlv_3= ')' otherlv_4= '{' ( (lv_nonDefaultClause_5_0= ruleSwitchClause ) )* ( (lv_defaultClause_6_0= ruleSwitchDefaultClause ) )? otherlv_7= '}'
            {
            otherlv_0=(Token)match(input,109,FOLLOW_42); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getSwitchStatementAccess().getSwitchKeyword_0());
                  
            }
            otherlv_1=(Token)match(input,16,FOLLOW_69); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getSwitchStatementAccess().getLeftParenthesisKeyword_1());
                  
            }
            // InternalAlf.g:11559:1: ( (lv_expression_2_0= ruleExpression ) )
            // InternalAlf.g:11560:1: (lv_expression_2_0= ruleExpression )
            {
            // InternalAlf.g:11560:1: (lv_expression_2_0= ruleExpression )
            // InternalAlf.g:11561:3: lv_expression_2_0= ruleExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getSwitchStatementAccess().getExpressionExpressionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_6);
            lv_expression_2_0=ruleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getSwitchStatementRule());
              	        }
                     		set(
                     			current, 
                     			"expression",
                      		lv_expression_2_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Expression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_3=(Token)match(input,17,FOLLOW_18); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getSwitchStatementAccess().getRightParenthesisKeyword_3());
                  
            }
            otherlv_4=(Token)match(input,31,FOLLOW_102); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getSwitchStatementAccess().getLeftCurlyBracketKeyword_4());
                  
            }
            // InternalAlf.g:11585:1: ( (lv_nonDefaultClause_5_0= ruleSwitchClause ) )*
            loop197:
            do {
                int alt197=2;
                int LA197_0 = input.LA(1);

                if ( (LA197_0==110) ) {
                    alt197=1;
                }


                switch (alt197) {
            	case 1 :
            	    // InternalAlf.g:11586:1: (lv_nonDefaultClause_5_0= ruleSwitchClause )
            	    {
            	    // InternalAlf.g:11586:1: (lv_nonDefaultClause_5_0= ruleSwitchClause )
            	    // InternalAlf.g:11587:3: lv_nonDefaultClause_5_0= ruleSwitchClause
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getSwitchStatementAccess().getNonDefaultClauseSwitchClauseParserRuleCall_5_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_102);
            	    lv_nonDefaultClause_5_0=ruleSwitchClause();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getSwitchStatementRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"nonDefaultClause",
            	              		lv_nonDefaultClause_5_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.SwitchClause");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop197;
                }
            } while (true);

            // InternalAlf.g:11603:3: ( (lv_defaultClause_6_0= ruleSwitchDefaultClause ) )?
            int alt198=2;
            int LA198_0 = input.LA(1);

            if ( (LA198_0==111) ) {
                alt198=1;
            }
            switch (alt198) {
                case 1 :
                    // InternalAlf.g:11604:1: (lv_defaultClause_6_0= ruleSwitchDefaultClause )
                    {
                    // InternalAlf.g:11604:1: (lv_defaultClause_6_0= ruleSwitchDefaultClause )
                    // InternalAlf.g:11605:3: lv_defaultClause_6_0= ruleSwitchDefaultClause
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSwitchStatementAccess().getDefaultClauseSwitchDefaultClauseParserRuleCall_6_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_74);
                    lv_defaultClause_6_0=ruleSwitchDefaultClause();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSwitchStatementRule());
                      	        }
                             		set(
                             			current, 
                             			"defaultClause",
                              		lv_defaultClause_6_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.SwitchDefaultClause");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            otherlv_7=(Token)match(input,32,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_7, grammarAccess.getSwitchStatementAccess().getRightCurlyBracketKeyword_7());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSwitchStatement"


    // $ANTLR start "entryRuleSwitchClause"
    // InternalAlf.g:11633:1: entryRuleSwitchClause returns [EObject current=null] : iv_ruleSwitchClause= ruleSwitchClause EOF ;
    public final EObject entryRuleSwitchClause() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSwitchClause = null;


        try {
            // InternalAlf.g:11634:2: (iv_ruleSwitchClause= ruleSwitchClause EOF )
            // InternalAlf.g:11635:2: iv_ruleSwitchClause= ruleSwitchClause EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSwitchClauseRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSwitchClause=ruleSwitchClause();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSwitchClause; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSwitchClause"


    // $ANTLR start "ruleSwitchClause"
    // InternalAlf.g:11642:1: ruleSwitchClause returns [EObject current=null] : ( ( (lv_case_0_0= ruleSwitchCase ) ) ( (lv_case_1_0= ruleSwitchCase ) )* ( (lv_block_2_0= ruleNonEmptyStatementSequence ) ) ) ;
    public final EObject ruleSwitchClause() throws RecognitionException {
        EObject current = null;

        EObject lv_case_0_0 = null;

        EObject lv_case_1_0 = null;

        EObject lv_block_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:11645:28: ( ( ( (lv_case_0_0= ruleSwitchCase ) ) ( (lv_case_1_0= ruleSwitchCase ) )* ( (lv_block_2_0= ruleNonEmptyStatementSequence ) ) ) )
            // InternalAlf.g:11646:1: ( ( (lv_case_0_0= ruleSwitchCase ) ) ( (lv_case_1_0= ruleSwitchCase ) )* ( (lv_block_2_0= ruleNonEmptyStatementSequence ) ) )
            {
            // InternalAlf.g:11646:1: ( ( (lv_case_0_0= ruleSwitchCase ) ) ( (lv_case_1_0= ruleSwitchCase ) )* ( (lv_block_2_0= ruleNonEmptyStatementSequence ) ) )
            // InternalAlf.g:11646:2: ( (lv_case_0_0= ruleSwitchCase ) ) ( (lv_case_1_0= ruleSwitchCase ) )* ( (lv_block_2_0= ruleNonEmptyStatementSequence ) )
            {
            // InternalAlf.g:11646:2: ( (lv_case_0_0= ruleSwitchCase ) )
            // InternalAlf.g:11647:1: (lv_case_0_0= ruleSwitchCase )
            {
            // InternalAlf.g:11647:1: (lv_case_0_0= ruleSwitchCase )
            // InternalAlf.g:11648:3: lv_case_0_0= ruleSwitchCase
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getSwitchClauseAccess().getCaseSwitchCaseParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_103);
            lv_case_0_0=ruleSwitchCase();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getSwitchClauseRule());
              	        }
                     		add(
                     			current, 
                     			"case",
                      		lv_case_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.SwitchCase");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:11664:2: ( (lv_case_1_0= ruleSwitchCase ) )*
            loop199:
            do {
                int alt199=2;
                int LA199_0 = input.LA(1);

                if ( (LA199_0==110) ) {
                    alt199=1;
                }


                switch (alt199) {
            	case 1 :
            	    // InternalAlf.g:11665:1: (lv_case_1_0= ruleSwitchCase )
            	    {
            	    // InternalAlf.g:11665:1: (lv_case_1_0= ruleSwitchCase )
            	    // InternalAlf.g:11666:3: lv_case_1_0= ruleSwitchCase
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getSwitchClauseAccess().getCaseSwitchCaseParserRuleCall_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_103);
            	    lv_case_1_0=ruleSwitchCase();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getSwitchClauseRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"case",
            	              		lv_case_1_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.SwitchCase");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop199;
                }
            } while (true);

            // InternalAlf.g:11682:3: ( (lv_block_2_0= ruleNonEmptyStatementSequence ) )
            // InternalAlf.g:11683:1: (lv_block_2_0= ruleNonEmptyStatementSequence )
            {
            // InternalAlf.g:11683:1: (lv_block_2_0= ruleNonEmptyStatementSequence )
            // InternalAlf.g:11684:3: lv_block_2_0= ruleNonEmptyStatementSequence
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getSwitchClauseAccess().getBlockNonEmptyStatementSequenceParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_block_2_0=ruleNonEmptyStatementSequence();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getSwitchClauseRule());
              	        }
                     		set(
                     			current, 
                     			"block",
                      		lv_block_2_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.NonEmptyStatementSequence");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSwitchClause"


    // $ANTLR start "entryRuleSwitchCase"
    // InternalAlf.g:11708:1: entryRuleSwitchCase returns [EObject current=null] : iv_ruleSwitchCase= ruleSwitchCase EOF ;
    public final EObject entryRuleSwitchCase() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSwitchCase = null;


        try {
            // InternalAlf.g:11709:2: (iv_ruleSwitchCase= ruleSwitchCase EOF )
            // InternalAlf.g:11710:2: iv_ruleSwitchCase= ruleSwitchCase EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSwitchCaseRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSwitchCase=ruleSwitchCase();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSwitchCase; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSwitchCase"


    // $ANTLR start "ruleSwitchCase"
    // InternalAlf.g:11717:1: ruleSwitchCase returns [EObject current=null] : (otherlv_0= 'case' this_Expression_1= ruleExpression otherlv_2= ':' ) ;
    public final EObject ruleSwitchCase() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject this_Expression_1 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:11720:28: ( (otherlv_0= 'case' this_Expression_1= ruleExpression otherlv_2= ':' ) )
            // InternalAlf.g:11721:1: (otherlv_0= 'case' this_Expression_1= ruleExpression otherlv_2= ':' )
            {
            // InternalAlf.g:11721:1: (otherlv_0= 'case' this_Expression_1= ruleExpression otherlv_2= ':' )
            // InternalAlf.g:11721:3: otherlv_0= 'case' this_Expression_1= ruleExpression otherlv_2= ':'
            {
            otherlv_0=(Token)match(input,110,FOLLOW_69); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getSwitchCaseAccess().getCaseKeyword_0());
                  
            }
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getSwitchCaseAccess().getExpressionParserRuleCall_1()); 
                  
            }
            pushFollow(FOLLOW_47);
            this_Expression_1=ruleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_Expression_1; 
                      afterParserOrEnumRuleCall();
                  
            }
            otherlv_2=(Token)match(input,45,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getSwitchCaseAccess().getColonKeyword_2());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSwitchCase"


    // $ANTLR start "entryRuleSwitchDefaultClause"
    // InternalAlf.g:11749:1: entryRuleSwitchDefaultClause returns [EObject current=null] : iv_ruleSwitchDefaultClause= ruleSwitchDefaultClause EOF ;
    public final EObject entryRuleSwitchDefaultClause() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSwitchDefaultClause = null;


        try {
            // InternalAlf.g:11750:2: (iv_ruleSwitchDefaultClause= ruleSwitchDefaultClause EOF )
            // InternalAlf.g:11751:2: iv_ruleSwitchDefaultClause= ruleSwitchDefaultClause EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSwitchDefaultClauseRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleSwitchDefaultClause=ruleSwitchDefaultClause();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSwitchDefaultClause; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSwitchDefaultClause"


    // $ANTLR start "ruleSwitchDefaultClause"
    // InternalAlf.g:11758:1: ruleSwitchDefaultClause returns [EObject current=null] : (otherlv_0= 'default' otherlv_1= ':' this_NonEmptyStatementSequence_2= ruleNonEmptyStatementSequence ) ;
    public final EObject ruleSwitchDefaultClause() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        EObject this_NonEmptyStatementSequence_2 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:11761:28: ( (otherlv_0= 'default' otherlv_1= ':' this_NonEmptyStatementSequence_2= ruleNonEmptyStatementSequence ) )
            // InternalAlf.g:11762:1: (otherlv_0= 'default' otherlv_1= ':' this_NonEmptyStatementSequence_2= ruleNonEmptyStatementSequence )
            {
            // InternalAlf.g:11762:1: (otherlv_0= 'default' otherlv_1= ':' this_NonEmptyStatementSequence_2= ruleNonEmptyStatementSequence )
            // InternalAlf.g:11762:3: otherlv_0= 'default' otherlv_1= ':' this_NonEmptyStatementSequence_2= ruleNonEmptyStatementSequence
            {
            otherlv_0=(Token)match(input,111,FOLLOW_47); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getSwitchDefaultClauseAccess().getDefaultKeyword_0());
                  
            }
            otherlv_1=(Token)match(input,45,FOLLOW_103); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getSwitchDefaultClauseAccess().getColonKeyword_1());
                  
            }
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getSwitchDefaultClauseAccess().getNonEmptyStatementSequenceParserRuleCall_2()); 
                  
            }
            pushFollow(FOLLOW_2);
            this_NonEmptyStatementSequence_2=ruleNonEmptyStatementSequence();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_NonEmptyStatementSequence_2; 
                      afterParserOrEnumRuleCall();
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSwitchDefaultClause"


    // $ANTLR start "entryRuleNonEmptyStatementSequence"
    // InternalAlf.g:11790:1: entryRuleNonEmptyStatementSequence returns [EObject current=null] : iv_ruleNonEmptyStatementSequence= ruleNonEmptyStatementSequence EOF ;
    public final EObject entryRuleNonEmptyStatementSequence() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNonEmptyStatementSequence = null;


        try {
            // InternalAlf.g:11791:2: (iv_ruleNonEmptyStatementSequence= ruleNonEmptyStatementSequence EOF )
            // InternalAlf.g:11792:2: iv_ruleNonEmptyStatementSequence= ruleNonEmptyStatementSequence EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNonEmptyStatementSequenceRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleNonEmptyStatementSequence=ruleNonEmptyStatementSequence();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNonEmptyStatementSequence; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNonEmptyStatementSequence"


    // $ANTLR start "ruleNonEmptyStatementSequence"
    // InternalAlf.g:11799:1: ruleNonEmptyStatementSequence returns [EObject current=null] : ( (lv_statement_0_0= ruleDocumentedStatement ) )+ ;
    public final EObject ruleNonEmptyStatementSequence() throws RecognitionException {
        EObject current = null;

        EObject lv_statement_0_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:11802:28: ( ( (lv_statement_0_0= ruleDocumentedStatement ) )+ )
            // InternalAlf.g:11803:1: ( (lv_statement_0_0= ruleDocumentedStatement ) )+
            {
            // InternalAlf.g:11803:1: ( (lv_statement_0_0= ruleDocumentedStatement ) )+
            int cnt200=0;
            loop200:
            do {
                int alt200=2;
                int LA200_0 = input.LA(1);

                if ( ((LA200_0>=RULE_DOCUMENTATION_COMMENT && LA200_0<=RULE_INLINE_STATEMENT)||LA200_0==16||LA200_0==20||LA200_0==22||LA200_0==31||LA200_0==39||LA200_0==51||(LA200_0>=62 && LA200_0<=64)||(LA200_0>=69 && LA200_0<=76)||(LA200_0>=105 && LA200_0<=106)||LA200_0==109||(LA200_0>=112 && LA200_0<=117)) ) {
                    alt200=1;
                }


                switch (alt200) {
            	case 1 :
            	    // InternalAlf.g:11804:1: (lv_statement_0_0= ruleDocumentedStatement )
            	    {
            	    // InternalAlf.g:11804:1: (lv_statement_0_0= ruleDocumentedStatement )
            	    // InternalAlf.g:11805:3: lv_statement_0_0= ruleDocumentedStatement
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getNonEmptyStatementSequenceAccess().getStatementDocumentedStatementParserRuleCall_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_104);
            	    lv_statement_0_0=ruleDocumentedStatement();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getNonEmptyStatementSequenceRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"statement",
            	              		lv_statement_0_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.DocumentedStatement");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt200 >= 1 ) break loop200;
            	    if (state.backtracking>0) {state.failed=true; return current;}
                        EarlyExitException eee =
                            new EarlyExitException(200, input);
                        throw eee;
                }
                cnt200++;
            } while (true);


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNonEmptyStatementSequence"


    // $ANTLR start "entryRuleWhileStatement"
    // InternalAlf.g:11829:1: entryRuleWhileStatement returns [EObject current=null] : iv_ruleWhileStatement= ruleWhileStatement EOF ;
    public final EObject entryRuleWhileStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleWhileStatement = null;


        try {
            // InternalAlf.g:11830:2: (iv_ruleWhileStatement= ruleWhileStatement EOF )
            // InternalAlf.g:11831:2: iv_ruleWhileStatement= ruleWhileStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getWhileStatementRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleWhileStatement=ruleWhileStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleWhileStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleWhileStatement"


    // $ANTLR start "ruleWhileStatement"
    // InternalAlf.g:11838:1: ruleWhileStatement returns [EObject current=null] : (otherlv_0= 'while' otherlv_1= '(' ( (lv_condition_2_0= ruleExpression ) ) otherlv_3= ')' ( (lv_body_4_0= ruleBlock ) ) ) ;
    public final EObject ruleWhileStatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_condition_2_0 = null;

        EObject lv_body_4_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:11841:28: ( (otherlv_0= 'while' otherlv_1= '(' ( (lv_condition_2_0= ruleExpression ) ) otherlv_3= ')' ( (lv_body_4_0= ruleBlock ) ) ) )
            // InternalAlf.g:11842:1: (otherlv_0= 'while' otherlv_1= '(' ( (lv_condition_2_0= ruleExpression ) ) otherlv_3= ')' ( (lv_body_4_0= ruleBlock ) ) )
            {
            // InternalAlf.g:11842:1: (otherlv_0= 'while' otherlv_1= '(' ( (lv_condition_2_0= ruleExpression ) ) otherlv_3= ')' ( (lv_body_4_0= ruleBlock ) ) )
            // InternalAlf.g:11842:3: otherlv_0= 'while' otherlv_1= '(' ( (lv_condition_2_0= ruleExpression ) ) otherlv_3= ')' ( (lv_body_4_0= ruleBlock ) )
            {
            otherlv_0=(Token)match(input,112,FOLLOW_42); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getWhileStatementAccess().getWhileKeyword_0());
                  
            }
            otherlv_1=(Token)match(input,16,FOLLOW_69); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getWhileStatementAccess().getLeftParenthesisKeyword_1());
                  
            }
            // InternalAlf.g:11850:1: ( (lv_condition_2_0= ruleExpression ) )
            // InternalAlf.g:11851:1: (lv_condition_2_0= ruleExpression )
            {
            // InternalAlf.g:11851:1: (lv_condition_2_0= ruleExpression )
            // InternalAlf.g:11852:3: lv_condition_2_0= ruleExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getWhileStatementAccess().getConditionExpressionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_6);
            lv_condition_2_0=ruleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getWhileStatementRule());
              	        }
                     		set(
                     			current, 
                     			"condition",
                      		lv_condition_2_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Expression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_3=(Token)match(input,17,FOLLOW_18); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getWhileStatementAccess().getRightParenthesisKeyword_3());
                  
            }
            // InternalAlf.g:11872:1: ( (lv_body_4_0= ruleBlock ) )
            // InternalAlf.g:11873:1: (lv_body_4_0= ruleBlock )
            {
            // InternalAlf.g:11873:1: (lv_body_4_0= ruleBlock )
            // InternalAlf.g:11874:3: lv_body_4_0= ruleBlock
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getWhileStatementAccess().getBodyBlockParserRuleCall_4_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_body_4_0=ruleBlock();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getWhileStatementRule());
              	        }
                     		set(
                     			current, 
                     			"body",
                      		lv_body_4_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Block");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleWhileStatement"


    // $ANTLR start "entryRuleDoStatement"
    // InternalAlf.g:11898:1: entryRuleDoStatement returns [EObject current=null] : iv_ruleDoStatement= ruleDoStatement EOF ;
    public final EObject entryRuleDoStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDoStatement = null;


        try {
            // InternalAlf.g:11899:2: (iv_ruleDoStatement= ruleDoStatement EOF )
            // InternalAlf.g:11900:2: iv_ruleDoStatement= ruleDoStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getDoStatementRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleDoStatement=ruleDoStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDoStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDoStatement"


    // $ANTLR start "ruleDoStatement"
    // InternalAlf.g:11907:1: ruleDoStatement returns [EObject current=null] : (otherlv_0= 'do' ( (lv_body_1_0= ruleBlock ) ) otherlv_2= 'while' otherlv_3= '(' ( (lv_condition_4_0= ruleExpression ) ) otherlv_5= ')' otherlv_6= ';' ) ;
    public final EObject ruleDoStatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        EObject lv_body_1_0 = null;

        EObject lv_condition_4_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:11910:28: ( (otherlv_0= 'do' ( (lv_body_1_0= ruleBlock ) ) otherlv_2= 'while' otherlv_3= '(' ( (lv_condition_4_0= ruleExpression ) ) otherlv_5= ')' otherlv_6= ';' ) )
            // InternalAlf.g:11911:1: (otherlv_0= 'do' ( (lv_body_1_0= ruleBlock ) ) otherlv_2= 'while' otherlv_3= '(' ( (lv_condition_4_0= ruleExpression ) ) otherlv_5= ')' otherlv_6= ';' )
            {
            // InternalAlf.g:11911:1: (otherlv_0= 'do' ( (lv_body_1_0= ruleBlock ) ) otherlv_2= 'while' otherlv_3= '(' ( (lv_condition_4_0= ruleExpression ) ) otherlv_5= ')' otherlv_6= ';' )
            // InternalAlf.g:11911:3: otherlv_0= 'do' ( (lv_body_1_0= ruleBlock ) ) otherlv_2= 'while' otherlv_3= '(' ( (lv_condition_4_0= ruleExpression ) ) otherlv_5= ')' otherlv_6= ';'
            {
            otherlv_0=(Token)match(input,39,FOLLOW_18); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getDoStatementAccess().getDoKeyword_0());
                  
            }
            // InternalAlf.g:11915:1: ( (lv_body_1_0= ruleBlock ) )
            // InternalAlf.g:11916:1: (lv_body_1_0= ruleBlock )
            {
            // InternalAlf.g:11916:1: (lv_body_1_0= ruleBlock )
            // InternalAlf.g:11917:3: lv_body_1_0= ruleBlock
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getDoStatementAccess().getBodyBlockParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_105);
            lv_body_1_0=ruleBlock();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getDoStatementRule());
              	        }
                     		set(
                     			current, 
                     			"body",
                      		lv_body_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Block");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,112,FOLLOW_42); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getDoStatementAccess().getWhileKeyword_2());
                  
            }
            otherlv_3=(Token)match(input,16,FOLLOW_69); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getDoStatementAccess().getLeftParenthesisKeyword_3());
                  
            }
            // InternalAlf.g:11941:1: ( (lv_condition_4_0= ruleExpression ) )
            // InternalAlf.g:11942:1: (lv_condition_4_0= ruleExpression )
            {
            // InternalAlf.g:11942:1: (lv_condition_4_0= ruleExpression )
            // InternalAlf.g:11943:3: lv_condition_4_0= ruleExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getDoStatementAccess().getConditionExpressionParserRuleCall_4_0()); 
              	    
            }
            pushFollow(FOLLOW_6);
            lv_condition_4_0=ruleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getDoStatementRule());
              	        }
                     		set(
                     			current, 
                     			"condition",
                      		lv_condition_4_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Expression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_5=(Token)match(input,17,FOLLOW_11); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_5, grammarAccess.getDoStatementAccess().getRightParenthesisKeyword_5());
                  
            }
            otherlv_6=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getDoStatementAccess().getSemicolonKeyword_6());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDoStatement"


    // $ANTLR start "entryRuleForStatement"
    // InternalAlf.g:11975:1: entryRuleForStatement returns [EObject current=null] : iv_ruleForStatement= ruleForStatement EOF ;
    public final EObject entryRuleForStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleForStatement = null;


        try {
            // InternalAlf.g:11976:2: (iv_ruleForStatement= ruleForStatement EOF )
            // InternalAlf.g:11977:2: iv_ruleForStatement= ruleForStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getForStatementRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleForStatement=ruleForStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleForStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleForStatement"


    // $ANTLR start "ruleForStatement"
    // InternalAlf.g:11984:1: ruleForStatement returns [EObject current=null] : (otherlv_0= 'for' otherlv_1= '(' ( (lv_variableDefinition_2_0= ruleLoopVariableDefinition ) ) (otherlv_3= ',' ( (lv_variableDefinition_4_0= ruleLoopVariableDefinition ) ) )* otherlv_5= ')' ( (lv_body_6_0= ruleBlock ) ) ) ;
    public final EObject ruleForStatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_variableDefinition_2_0 = null;

        EObject lv_variableDefinition_4_0 = null;

        EObject lv_body_6_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:11987:28: ( (otherlv_0= 'for' otherlv_1= '(' ( (lv_variableDefinition_2_0= ruleLoopVariableDefinition ) ) (otherlv_3= ',' ( (lv_variableDefinition_4_0= ruleLoopVariableDefinition ) ) )* otherlv_5= ')' ( (lv_body_6_0= ruleBlock ) ) ) )
            // InternalAlf.g:11988:1: (otherlv_0= 'for' otherlv_1= '(' ( (lv_variableDefinition_2_0= ruleLoopVariableDefinition ) ) (otherlv_3= ',' ( (lv_variableDefinition_4_0= ruleLoopVariableDefinition ) ) )* otherlv_5= ')' ( (lv_body_6_0= ruleBlock ) ) )
            {
            // InternalAlf.g:11988:1: (otherlv_0= 'for' otherlv_1= '(' ( (lv_variableDefinition_2_0= ruleLoopVariableDefinition ) ) (otherlv_3= ',' ( (lv_variableDefinition_4_0= ruleLoopVariableDefinition ) ) )* otherlv_5= ')' ( (lv_body_6_0= ruleBlock ) ) )
            // InternalAlf.g:11988:3: otherlv_0= 'for' otherlv_1= '(' ( (lv_variableDefinition_2_0= ruleLoopVariableDefinition ) ) (otherlv_3= ',' ( (lv_variableDefinition_4_0= ruleLoopVariableDefinition ) ) )* otherlv_5= ')' ( (lv_body_6_0= ruleBlock ) )
            {
            otherlv_0=(Token)match(input,113,FOLLOW_42); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getForStatementAccess().getForKeyword_0());
                  
            }
            otherlv_1=(Token)match(input,16,FOLLOW_48); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getForStatementAccess().getLeftParenthesisKeyword_1());
                  
            }
            // InternalAlf.g:11996:1: ( (lv_variableDefinition_2_0= ruleLoopVariableDefinition ) )
            // InternalAlf.g:11997:1: (lv_variableDefinition_2_0= ruleLoopVariableDefinition )
            {
            // InternalAlf.g:11997:1: (lv_variableDefinition_2_0= ruleLoopVariableDefinition )
            // InternalAlf.g:11998:3: lv_variableDefinition_2_0= ruleLoopVariableDefinition
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getForStatementAccess().getVariableDefinitionLoopVariableDefinitionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_44);
            lv_variableDefinition_2_0=ruleLoopVariableDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getForStatementRule());
              	        }
                     		add(
                     			current, 
                     			"variableDefinition",
                      		lv_variableDefinition_2_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.LoopVariableDefinition");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:12014:2: (otherlv_3= ',' ( (lv_variableDefinition_4_0= ruleLoopVariableDefinition ) ) )*
            loop201:
            do {
                int alt201=2;
                int LA201_0 = input.LA(1);

                if ( (LA201_0==18) ) {
                    alt201=1;
                }


                switch (alt201) {
            	case 1 :
            	    // InternalAlf.g:12014:4: otherlv_3= ',' ( (lv_variableDefinition_4_0= ruleLoopVariableDefinition ) )
            	    {
            	    otherlv_3=(Token)match(input,18,FOLLOW_48); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_3, grammarAccess.getForStatementAccess().getCommaKeyword_3_0());
            	          
            	    }
            	    // InternalAlf.g:12018:1: ( (lv_variableDefinition_4_0= ruleLoopVariableDefinition ) )
            	    // InternalAlf.g:12019:1: (lv_variableDefinition_4_0= ruleLoopVariableDefinition )
            	    {
            	    // InternalAlf.g:12019:1: (lv_variableDefinition_4_0= ruleLoopVariableDefinition )
            	    // InternalAlf.g:12020:3: lv_variableDefinition_4_0= ruleLoopVariableDefinition
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getForStatementAccess().getVariableDefinitionLoopVariableDefinitionParserRuleCall_3_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_44);
            	    lv_variableDefinition_4_0=ruleLoopVariableDefinition();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getForStatementRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"variableDefinition",
            	              		lv_variableDefinition_4_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.LoopVariableDefinition");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop201;
                }
            } while (true);

            otherlv_5=(Token)match(input,17,FOLLOW_18); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_5, grammarAccess.getForStatementAccess().getRightParenthesisKeyword_4());
                  
            }
            // InternalAlf.g:12040:1: ( (lv_body_6_0= ruleBlock ) )
            // InternalAlf.g:12041:1: (lv_body_6_0= ruleBlock )
            {
            // InternalAlf.g:12041:1: (lv_body_6_0= ruleBlock )
            // InternalAlf.g:12042:3: lv_body_6_0= ruleBlock
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getForStatementAccess().getBodyBlockParserRuleCall_5_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_body_6_0=ruleBlock();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getForStatementRule());
              	        }
                     		set(
                     			current, 
                     			"body",
                      		lv_body_6_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Block");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleForStatement"


    // $ANTLR start "entryRuleLoopVariableDefinition"
    // InternalAlf.g:12066:1: entryRuleLoopVariableDefinition returns [EObject current=null] : iv_ruleLoopVariableDefinition= ruleLoopVariableDefinition EOF ;
    public final EObject entryRuleLoopVariableDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLoopVariableDefinition = null;


        try {
            // InternalAlf.g:12067:2: (iv_ruleLoopVariableDefinition= ruleLoopVariableDefinition EOF )
            // InternalAlf.g:12068:2: iv_ruleLoopVariableDefinition= ruleLoopVariableDefinition EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getLoopVariableDefinitionRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleLoopVariableDefinition=ruleLoopVariableDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleLoopVariableDefinition; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLoopVariableDefinition"


    // $ANTLR start "ruleLoopVariableDefinition"
    // InternalAlf.g:12075:1: ruleLoopVariableDefinition returns [EObject current=null] : ( ( ( (lv_variable_0_0= ruleName ) ) ( (lv_typeIsInferred_1_0= 'in' ) ) ( (lv_expression1_2_0= ruleExpression ) ) (otherlv_3= '..' ( (lv_expression2_4_0= ruleExpression ) ) )? ) | ( ( ( (lv_isAny_5_0= 'any' ) ) | ( (lv_typeName_6_0= ruleQualifiedName ) ) ) ( (lv_variable_7_0= ruleName ) ) otherlv_8= ':' ( (lv_expression1_9_0= ruleExpression ) ) ) ) ;
    public final EObject ruleLoopVariableDefinition() throws RecognitionException {
        EObject current = null;

        Token lv_typeIsInferred_1_0=null;
        Token otherlv_3=null;
        Token lv_isAny_5_0=null;
        Token otherlv_8=null;
        AntlrDatatypeRuleToken lv_variable_0_0 = null;

        EObject lv_expression1_2_0 = null;

        EObject lv_expression2_4_0 = null;

        EObject lv_typeName_6_0 = null;

        AntlrDatatypeRuleToken lv_variable_7_0 = null;

        EObject lv_expression1_9_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:12078:28: ( ( ( ( (lv_variable_0_0= ruleName ) ) ( (lv_typeIsInferred_1_0= 'in' ) ) ( (lv_expression1_2_0= ruleExpression ) ) (otherlv_3= '..' ( (lv_expression2_4_0= ruleExpression ) ) )? ) | ( ( ( (lv_isAny_5_0= 'any' ) ) | ( (lv_typeName_6_0= ruleQualifiedName ) ) ) ( (lv_variable_7_0= ruleName ) ) otherlv_8= ':' ( (lv_expression1_9_0= ruleExpression ) ) ) ) )
            // InternalAlf.g:12079:1: ( ( ( (lv_variable_0_0= ruleName ) ) ( (lv_typeIsInferred_1_0= 'in' ) ) ( (lv_expression1_2_0= ruleExpression ) ) (otherlv_3= '..' ( (lv_expression2_4_0= ruleExpression ) ) )? ) | ( ( ( (lv_isAny_5_0= 'any' ) ) | ( (lv_typeName_6_0= ruleQualifiedName ) ) ) ( (lv_variable_7_0= ruleName ) ) otherlv_8= ':' ( (lv_expression1_9_0= ruleExpression ) ) ) )
            {
            // InternalAlf.g:12079:1: ( ( ( (lv_variable_0_0= ruleName ) ) ( (lv_typeIsInferred_1_0= 'in' ) ) ( (lv_expression1_2_0= ruleExpression ) ) (otherlv_3= '..' ( (lv_expression2_4_0= ruleExpression ) ) )? ) | ( ( ( (lv_isAny_5_0= 'any' ) ) | ( (lv_typeName_6_0= ruleQualifiedName ) ) ) ( (lv_variable_7_0= ruleName ) ) otherlv_8= ':' ( (lv_expression1_9_0= ruleExpression ) ) ) )
            int alt204=2;
            switch ( input.LA(1) ) {
            case RULE_ID:
                {
                int LA204_1 = input.LA(2);

                if ( ((LA204_1>=RULE_ID && LA204_1<=RULE_UNRESTRICTED_NAME)||(LA204_1>=25 && LA204_1<=26)||LA204_1==36) ) {
                    alt204=2;
                }
                else if ( (LA204_1==46) ) {
                    alt204=1;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 204, 1, input);

                    throw nvae;
                }
                }
                break;
            case RULE_UNRESTRICTED_NAME:
                {
                int LA204_2 = input.LA(2);

                if ( (LA204_2==46) ) {
                    alt204=1;
                }
                else if ( ((LA204_2>=RULE_ID && LA204_2<=RULE_UNRESTRICTED_NAME)||(LA204_2>=25 && LA204_2<=26)||LA204_2==36) ) {
                    alt204=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 204, 2, input);

                    throw nvae;
                }
                }
                break;
            case 51:
                {
                alt204=2;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 204, 0, input);

                throw nvae;
            }

            switch (alt204) {
                case 1 :
                    // InternalAlf.g:12079:2: ( ( (lv_variable_0_0= ruleName ) ) ( (lv_typeIsInferred_1_0= 'in' ) ) ( (lv_expression1_2_0= ruleExpression ) ) (otherlv_3= '..' ( (lv_expression2_4_0= ruleExpression ) ) )? )
                    {
                    // InternalAlf.g:12079:2: ( ( (lv_variable_0_0= ruleName ) ) ( (lv_typeIsInferred_1_0= 'in' ) ) ( (lv_expression1_2_0= ruleExpression ) ) (otherlv_3= '..' ( (lv_expression2_4_0= ruleExpression ) ) )? )
                    // InternalAlf.g:12079:3: ( (lv_variable_0_0= ruleName ) ) ( (lv_typeIsInferred_1_0= 'in' ) ) ( (lv_expression1_2_0= ruleExpression ) ) (otherlv_3= '..' ( (lv_expression2_4_0= ruleExpression ) ) )?
                    {
                    // InternalAlf.g:12079:3: ( (lv_variable_0_0= ruleName ) )
                    // InternalAlf.g:12080:1: (lv_variable_0_0= ruleName )
                    {
                    // InternalAlf.g:12080:1: (lv_variable_0_0= ruleName )
                    // InternalAlf.g:12081:3: lv_variable_0_0= ruleName
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getLoopVariableDefinitionAccess().getVariableNameParserRuleCall_0_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_106);
                    lv_variable_0_0=ruleName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getLoopVariableDefinitionRule());
                      	        }
                             		set(
                             			current, 
                             			"variable",
                              		lv_variable_0_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.Name");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // InternalAlf.g:12097:2: ( (lv_typeIsInferred_1_0= 'in' ) )
                    // InternalAlf.g:12098:1: (lv_typeIsInferred_1_0= 'in' )
                    {
                    // InternalAlf.g:12098:1: (lv_typeIsInferred_1_0= 'in' )
                    // InternalAlf.g:12099:3: lv_typeIsInferred_1_0= 'in'
                    {
                    lv_typeIsInferred_1_0=(Token)match(input,46,FOLLOW_69); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_typeIsInferred_1_0, grammarAccess.getLoopVariableDefinitionAccess().getTypeIsInferredInKeyword_0_1_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getLoopVariableDefinitionRule());
                      	        }
                             		setWithLastConsumed(current, "typeIsInferred", true, "in");
                      	    
                    }

                    }


                    }

                    // InternalAlf.g:12112:2: ( (lv_expression1_2_0= ruleExpression ) )
                    // InternalAlf.g:12113:1: (lv_expression1_2_0= ruleExpression )
                    {
                    // InternalAlf.g:12113:1: (lv_expression1_2_0= ruleExpression )
                    // InternalAlf.g:12114:3: lv_expression1_2_0= ruleExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getLoopVariableDefinitionAccess().getExpression1ExpressionParserRuleCall_0_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_107);
                    lv_expression1_2_0=ruleExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getLoopVariableDefinitionRule());
                      	        }
                             		set(
                             			current, 
                             			"expression1",
                              		lv_expression1_2_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.Expression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // InternalAlf.g:12130:2: (otherlv_3= '..' ( (lv_expression2_4_0= ruleExpression ) ) )?
                    int alt202=2;
                    int LA202_0 = input.LA(1);

                    if ( (LA202_0==54) ) {
                        alt202=1;
                    }
                    switch (alt202) {
                        case 1 :
                            // InternalAlf.g:12130:4: otherlv_3= '..' ( (lv_expression2_4_0= ruleExpression ) )
                            {
                            otherlv_3=(Token)match(input,54,FOLLOW_69); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_3, grammarAccess.getLoopVariableDefinitionAccess().getFullStopFullStopKeyword_0_3_0());
                                  
                            }
                            // InternalAlf.g:12134:1: ( (lv_expression2_4_0= ruleExpression ) )
                            // InternalAlf.g:12135:1: (lv_expression2_4_0= ruleExpression )
                            {
                            // InternalAlf.g:12135:1: (lv_expression2_4_0= ruleExpression )
                            // InternalAlf.g:12136:3: lv_expression2_4_0= ruleExpression
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getLoopVariableDefinitionAccess().getExpression2ExpressionParserRuleCall_0_3_1_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_2);
                            lv_expression2_4_0=ruleExpression();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getLoopVariableDefinitionRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"expression2",
                                      		lv_expression2_4_0, 
                                      		"org.eclipse.papyrus.uml.alf.Alf.Expression");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalAlf.g:12153:6: ( ( ( (lv_isAny_5_0= 'any' ) ) | ( (lv_typeName_6_0= ruleQualifiedName ) ) ) ( (lv_variable_7_0= ruleName ) ) otherlv_8= ':' ( (lv_expression1_9_0= ruleExpression ) ) )
                    {
                    // InternalAlf.g:12153:6: ( ( ( (lv_isAny_5_0= 'any' ) ) | ( (lv_typeName_6_0= ruleQualifiedName ) ) ) ( (lv_variable_7_0= ruleName ) ) otherlv_8= ':' ( (lv_expression1_9_0= ruleExpression ) ) )
                    // InternalAlf.g:12153:7: ( ( (lv_isAny_5_0= 'any' ) ) | ( (lv_typeName_6_0= ruleQualifiedName ) ) ) ( (lv_variable_7_0= ruleName ) ) otherlv_8= ':' ( (lv_expression1_9_0= ruleExpression ) )
                    {
                    // InternalAlf.g:12153:7: ( ( (lv_isAny_5_0= 'any' ) ) | ( (lv_typeName_6_0= ruleQualifiedName ) ) )
                    int alt203=2;
                    int LA203_0 = input.LA(1);

                    if ( (LA203_0==51) ) {
                        alt203=1;
                    }
                    else if ( ((LA203_0>=RULE_ID && LA203_0<=RULE_UNRESTRICTED_NAME)) ) {
                        alt203=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 203, 0, input);

                        throw nvae;
                    }
                    switch (alt203) {
                        case 1 :
                            // InternalAlf.g:12153:8: ( (lv_isAny_5_0= 'any' ) )
                            {
                            // InternalAlf.g:12153:8: ( (lv_isAny_5_0= 'any' ) )
                            // InternalAlf.g:12154:1: (lv_isAny_5_0= 'any' )
                            {
                            // InternalAlf.g:12154:1: (lv_isAny_5_0= 'any' )
                            // InternalAlf.g:12155:3: lv_isAny_5_0= 'any'
                            {
                            lv_isAny_5_0=(Token)match(input,51,FOLLOW_4); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_isAny_5_0, grammarAccess.getLoopVariableDefinitionAccess().getIsAnyAnyKeyword_1_0_0_0());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getLoopVariableDefinitionRule());
                              	        }
                                     		setWithLastConsumed(current, "isAny", true, "any");
                              	    
                            }

                            }


                            }


                            }
                            break;
                        case 2 :
                            // InternalAlf.g:12169:6: ( (lv_typeName_6_0= ruleQualifiedName ) )
                            {
                            // InternalAlf.g:12169:6: ( (lv_typeName_6_0= ruleQualifiedName ) )
                            // InternalAlf.g:12170:1: (lv_typeName_6_0= ruleQualifiedName )
                            {
                            // InternalAlf.g:12170:1: (lv_typeName_6_0= ruleQualifiedName )
                            // InternalAlf.g:12171:3: lv_typeName_6_0= ruleQualifiedName
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getLoopVariableDefinitionAccess().getTypeNameQualifiedNameParserRuleCall_1_0_1_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_4);
                            lv_typeName_6_0=ruleQualifiedName();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getLoopVariableDefinitionRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"typeName",
                                      		lv_typeName_6_0, 
                                      		"org.eclipse.papyrus.uml.alf.Alf.QualifiedName");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }
                            break;

                    }

                    // InternalAlf.g:12187:3: ( (lv_variable_7_0= ruleName ) )
                    // InternalAlf.g:12188:1: (lv_variable_7_0= ruleName )
                    {
                    // InternalAlf.g:12188:1: (lv_variable_7_0= ruleName )
                    // InternalAlf.g:12189:3: lv_variable_7_0= ruleName
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getLoopVariableDefinitionAccess().getVariableNameParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_47);
                    lv_variable_7_0=ruleName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getLoopVariableDefinitionRule());
                      	        }
                             		set(
                             			current, 
                             			"variable",
                              		lv_variable_7_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.Name");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_8=(Token)match(input,45,FOLLOW_69); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_8, grammarAccess.getLoopVariableDefinitionAccess().getColonKeyword_1_2());
                          
                    }
                    // InternalAlf.g:12209:1: ( (lv_expression1_9_0= ruleExpression ) )
                    // InternalAlf.g:12210:1: (lv_expression1_9_0= ruleExpression )
                    {
                    // InternalAlf.g:12210:1: (lv_expression1_9_0= ruleExpression )
                    // InternalAlf.g:12211:3: lv_expression1_9_0= ruleExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getLoopVariableDefinitionAccess().getExpression1ExpressionParserRuleCall_1_3_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_2);
                    lv_expression1_9_0=ruleExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getLoopVariableDefinitionRule());
                      	        }
                             		set(
                             			current, 
                             			"expression1",
                              		lv_expression1_9_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.Expression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLoopVariableDefinition"


    // $ANTLR start "entryRuleBreakStatement"
    // InternalAlf.g:12235:1: entryRuleBreakStatement returns [EObject current=null] : iv_ruleBreakStatement= ruleBreakStatement EOF ;
    public final EObject entryRuleBreakStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBreakStatement = null;


        try {
            // InternalAlf.g:12236:2: (iv_ruleBreakStatement= ruleBreakStatement EOF )
            // InternalAlf.g:12237:2: iv_ruleBreakStatement= ruleBreakStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getBreakStatementRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleBreakStatement=ruleBreakStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleBreakStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBreakStatement"


    // $ANTLR start "ruleBreakStatement"
    // InternalAlf.g:12244:1: ruleBreakStatement returns [EObject current=null] : ( () otherlv_1= 'break' otherlv_2= ';' ) ;
    public final EObject ruleBreakStatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;

         enterRule(); 
            
        try {
            // InternalAlf.g:12247:28: ( ( () otherlv_1= 'break' otherlv_2= ';' ) )
            // InternalAlf.g:12248:1: ( () otherlv_1= 'break' otherlv_2= ';' )
            {
            // InternalAlf.g:12248:1: ( () otherlv_1= 'break' otherlv_2= ';' )
            // InternalAlf.g:12248:2: () otherlv_1= 'break' otherlv_2= ';'
            {
            // InternalAlf.g:12248:2: ()
            // InternalAlf.g:12249:2: 
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getBreakStatementAccess().getBreakStatementAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,114,FOLLOW_11); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getBreakStatementAccess().getBreakKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getBreakStatementAccess().getSemicolonKeyword_2());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBreakStatement"


    // $ANTLR start "entryRuleReturnStatement"
    // InternalAlf.g:12273:1: entryRuleReturnStatement returns [EObject current=null] : iv_ruleReturnStatement= ruleReturnStatement EOF ;
    public final EObject entryRuleReturnStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleReturnStatement = null;


        try {
            // InternalAlf.g:12274:2: (iv_ruleReturnStatement= ruleReturnStatement EOF )
            // InternalAlf.g:12275:2: iv_ruleReturnStatement= ruleReturnStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getReturnStatementRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleReturnStatement=ruleReturnStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleReturnStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleReturnStatement"


    // $ANTLR start "ruleReturnStatement"
    // InternalAlf.g:12282:1: ruleReturnStatement returns [EObject current=null] : ( () otherlv_1= 'return' ( (lv_expression_2_0= ruleExpression ) )? otherlv_3= ';' ) ;
    public final EObject ruleReturnStatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_expression_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:12285:28: ( ( () otherlv_1= 'return' ( (lv_expression_2_0= ruleExpression ) )? otherlv_3= ';' ) )
            // InternalAlf.g:12286:1: ( () otherlv_1= 'return' ( (lv_expression_2_0= ruleExpression ) )? otherlv_3= ';' )
            {
            // InternalAlf.g:12286:1: ( () otherlv_1= 'return' ( (lv_expression_2_0= ruleExpression ) )? otherlv_3= ';' )
            // InternalAlf.g:12286:2: () otherlv_1= 'return' ( (lv_expression_2_0= ruleExpression ) )? otherlv_3= ';'
            {
            // InternalAlf.g:12286:2: ()
            // InternalAlf.g:12287:2: 
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getReturnStatementAccess().getReturnStatementAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,115,FOLLOW_108); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getReturnStatementAccess().getReturnKeyword_1());
                  
            }
            // InternalAlf.g:12299:1: ( (lv_expression_2_0= ruleExpression ) )?
            int alt205=2;
            int LA205_0 = input.LA(1);

            if ( ((LA205_0>=RULE_BOOLEAN_VALUE && LA205_0<=RULE_UNRESTRICTED_NAME)||LA205_0==16||LA205_0==20||LA205_0==51||(LA205_0>=62 && LA205_0<=64)||(LA205_0>=69 && LA205_0<=76)) ) {
                alt205=1;
            }
            switch (alt205) {
                case 1 :
                    // InternalAlf.g:12300:1: (lv_expression_2_0= ruleExpression )
                    {
                    // InternalAlf.g:12300:1: (lv_expression_2_0= ruleExpression )
                    // InternalAlf.g:12301:3: lv_expression_2_0= ruleExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getReturnStatementAccess().getExpressionExpressionParserRuleCall_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_11);
                    lv_expression_2_0=ruleExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getReturnStatementRule());
                      	        }
                             		set(
                             			current, 
                             			"expression",
                              		lv_expression_2_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.Expression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            otherlv_3=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getReturnStatementAccess().getSemicolonKeyword_3());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleReturnStatement"


    // $ANTLR start "entryRuleAcceptStatement"
    // InternalAlf.g:12329:1: entryRuleAcceptStatement returns [EObject current=null] : iv_ruleAcceptStatement= ruleAcceptStatement EOF ;
    public final EObject entryRuleAcceptStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAcceptStatement = null;


        try {
            // InternalAlf.g:12330:2: (iv_ruleAcceptStatement= ruleAcceptStatement EOF )
            // InternalAlf.g:12331:2: iv_ruleAcceptStatement= ruleAcceptStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAcceptStatementRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleAcceptStatement=ruleAcceptStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAcceptStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAcceptStatement"


    // $ANTLR start "ruleAcceptStatement"
    // InternalAlf.g:12338:1: ruleAcceptStatement returns [EObject current=null] : ( ( ( (lv_acceptBlock_0_0= ruleAcceptClause ) ) otherlv_1= ';' ) | ( ( (lv_acceptBlock_2_0= ruleAcceptBlock ) ) (otherlv_3= 'or' ( (lv_acceptBlock_4_0= ruleAcceptBlock ) ) )* ) ) ;
    public final EObject ruleAcceptStatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_acceptBlock_0_0 = null;

        EObject lv_acceptBlock_2_0 = null;

        EObject lv_acceptBlock_4_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:12341:28: ( ( ( ( (lv_acceptBlock_0_0= ruleAcceptClause ) ) otherlv_1= ';' ) | ( ( (lv_acceptBlock_2_0= ruleAcceptBlock ) ) (otherlv_3= 'or' ( (lv_acceptBlock_4_0= ruleAcceptBlock ) ) )* ) ) )
            // InternalAlf.g:12342:1: ( ( ( (lv_acceptBlock_0_0= ruleAcceptClause ) ) otherlv_1= ';' ) | ( ( (lv_acceptBlock_2_0= ruleAcceptBlock ) ) (otherlv_3= 'or' ( (lv_acceptBlock_4_0= ruleAcceptBlock ) ) )* ) )
            {
            // InternalAlf.g:12342:1: ( ( ( (lv_acceptBlock_0_0= ruleAcceptClause ) ) otherlv_1= ';' ) | ( ( (lv_acceptBlock_2_0= ruleAcceptBlock ) ) (otherlv_3= 'or' ( (lv_acceptBlock_4_0= ruleAcceptBlock ) ) )* ) )
            int alt207=2;
            int LA207_0 = input.LA(1);

            if ( (LA207_0==116) ) {
                int LA207_1 = input.LA(2);

                if ( (synpred273_InternalAlf()) ) {
                    alt207=1;
                }
                else if ( (true) ) {
                    alt207=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 207, 1, input);

                    throw nvae;
                }
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 207, 0, input);

                throw nvae;
            }
            switch (alt207) {
                case 1 :
                    // InternalAlf.g:12342:2: ( ( (lv_acceptBlock_0_0= ruleAcceptClause ) ) otherlv_1= ';' )
                    {
                    // InternalAlf.g:12342:2: ( ( (lv_acceptBlock_0_0= ruleAcceptClause ) ) otherlv_1= ';' )
                    // InternalAlf.g:12342:3: ( (lv_acceptBlock_0_0= ruleAcceptClause ) ) otherlv_1= ';'
                    {
                    // InternalAlf.g:12342:3: ( (lv_acceptBlock_0_0= ruleAcceptClause ) )
                    // InternalAlf.g:12343:1: (lv_acceptBlock_0_0= ruleAcceptClause )
                    {
                    // InternalAlf.g:12343:1: (lv_acceptBlock_0_0= ruleAcceptClause )
                    // InternalAlf.g:12344:3: lv_acceptBlock_0_0= ruleAcceptClause
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getAcceptStatementAccess().getAcceptBlockAcceptClauseParserRuleCall_0_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_11);
                    lv_acceptBlock_0_0=ruleAcceptClause();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getAcceptStatementRule());
                      	        }
                             		add(
                             			current, 
                             			"acceptBlock",
                              		lv_acceptBlock_0_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.AcceptClause");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_1=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getAcceptStatementAccess().getSemicolonKeyword_0_1());
                          
                    }

                    }


                    }
                    break;
                case 2 :
                    // InternalAlf.g:12365:6: ( ( (lv_acceptBlock_2_0= ruleAcceptBlock ) ) (otherlv_3= 'or' ( (lv_acceptBlock_4_0= ruleAcceptBlock ) ) )* )
                    {
                    // InternalAlf.g:12365:6: ( ( (lv_acceptBlock_2_0= ruleAcceptBlock ) ) (otherlv_3= 'or' ( (lv_acceptBlock_4_0= ruleAcceptBlock ) ) )* )
                    // InternalAlf.g:12365:7: ( (lv_acceptBlock_2_0= ruleAcceptBlock ) ) (otherlv_3= 'or' ( (lv_acceptBlock_4_0= ruleAcceptBlock ) ) )*
                    {
                    // InternalAlf.g:12365:7: ( (lv_acceptBlock_2_0= ruleAcceptBlock ) )
                    // InternalAlf.g:12366:1: (lv_acceptBlock_2_0= ruleAcceptBlock )
                    {
                    // InternalAlf.g:12366:1: (lv_acceptBlock_2_0= ruleAcceptBlock )
                    // InternalAlf.g:12367:3: lv_acceptBlock_2_0= ruleAcceptBlock
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getAcceptStatementAccess().getAcceptBlockAcceptBlockParserRuleCall_1_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_101);
                    lv_acceptBlock_2_0=ruleAcceptBlock();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getAcceptStatementRule());
                      	        }
                             		add(
                             			current, 
                             			"acceptBlock",
                              		lv_acceptBlock_2_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.AcceptBlock");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // InternalAlf.g:12383:2: (otherlv_3= 'or' ( (lv_acceptBlock_4_0= ruleAcceptBlock ) ) )*
                    loop206:
                    do {
                        int alt206=2;
                        int LA206_0 = input.LA(1);

                        if ( (LA206_0==108) ) {
                            alt206=1;
                        }


                        switch (alt206) {
                    	case 1 :
                    	    // InternalAlf.g:12383:4: otherlv_3= 'or' ( (lv_acceptBlock_4_0= ruleAcceptBlock ) )
                    	    {
                    	    otherlv_3=(Token)match(input,108,FOLLOW_109); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_3, grammarAccess.getAcceptStatementAccess().getOrKeyword_1_1_0());
                    	          
                    	    }
                    	    // InternalAlf.g:12387:1: ( (lv_acceptBlock_4_0= ruleAcceptBlock ) )
                    	    // InternalAlf.g:12388:1: (lv_acceptBlock_4_0= ruleAcceptBlock )
                    	    {
                    	    // InternalAlf.g:12388:1: (lv_acceptBlock_4_0= ruleAcceptBlock )
                    	    // InternalAlf.g:12389:3: lv_acceptBlock_4_0= ruleAcceptBlock
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getAcceptStatementAccess().getAcceptBlockAcceptBlockParserRuleCall_1_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_101);
                    	    lv_acceptBlock_4_0=ruleAcceptBlock();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getAcceptStatementRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"acceptBlock",
                    	              		lv_acceptBlock_4_0, 
                    	              		"org.eclipse.papyrus.uml.alf.Alf.AcceptBlock");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop206;
                        }
                    } while (true);


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAcceptStatement"


    // $ANTLR start "entryRuleAcceptBlock"
    // InternalAlf.g:12413:1: entryRuleAcceptBlock returns [EObject current=null] : iv_ruleAcceptBlock= ruleAcceptBlock EOF ;
    public final EObject entryRuleAcceptBlock() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAcceptBlock = null;


        try {
            // InternalAlf.g:12414:2: (iv_ruleAcceptBlock= ruleAcceptBlock EOF )
            // InternalAlf.g:12415:2: iv_ruleAcceptBlock= ruleAcceptBlock EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAcceptBlockRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleAcceptBlock=ruleAcceptBlock();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAcceptBlock; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAcceptBlock"


    // $ANTLR start "ruleAcceptBlock"
    // InternalAlf.g:12422:1: ruleAcceptBlock returns [EObject current=null] : (this_AcceptClause_0= ruleAcceptClause ( (lv_block_1_0= ruleBlock ) ) ) ;
    public final EObject ruleAcceptBlock() throws RecognitionException {
        EObject current = null;

        EObject this_AcceptClause_0 = null;

        EObject lv_block_1_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:12425:28: ( (this_AcceptClause_0= ruleAcceptClause ( (lv_block_1_0= ruleBlock ) ) ) )
            // InternalAlf.g:12426:1: (this_AcceptClause_0= ruleAcceptClause ( (lv_block_1_0= ruleBlock ) ) )
            {
            // InternalAlf.g:12426:1: (this_AcceptClause_0= ruleAcceptClause ( (lv_block_1_0= ruleBlock ) ) )
            // InternalAlf.g:12427:2: this_AcceptClause_0= ruleAcceptClause ( (lv_block_1_0= ruleBlock ) )
            {
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getAcceptBlockAccess().getAcceptClauseParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_18);
            this_AcceptClause_0=ruleAcceptClause();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_AcceptClause_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // InternalAlf.g:12438:1: ( (lv_block_1_0= ruleBlock ) )
            // InternalAlf.g:12439:1: (lv_block_1_0= ruleBlock )
            {
            // InternalAlf.g:12439:1: (lv_block_1_0= ruleBlock )
            // InternalAlf.g:12440:3: lv_block_1_0= ruleBlock
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getAcceptBlockAccess().getBlockBlockParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_2);
            lv_block_1_0=ruleBlock();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getAcceptBlockRule());
              	        }
                     		set(
                     			current, 
                     			"block",
                      		lv_block_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Block");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAcceptBlock"


    // $ANTLR start "entryRuleAcceptClause"
    // InternalAlf.g:12464:1: entryRuleAcceptClause returns [EObject current=null] : iv_ruleAcceptClause= ruleAcceptClause EOF ;
    public final EObject entryRuleAcceptClause() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAcceptClause = null;


        try {
            // InternalAlf.g:12465:2: (iv_ruleAcceptClause= ruleAcceptClause EOF )
            // InternalAlf.g:12466:2: iv_ruleAcceptClause= ruleAcceptClause EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAcceptClauseRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleAcceptClause=ruleAcceptClause();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAcceptClause; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAcceptClause"


    // $ANTLR start "ruleAcceptClause"
    // InternalAlf.g:12473:1: ruleAcceptClause returns [EObject current=null] : (otherlv_0= 'accept' otherlv_1= '(' ( ( (lv_name_2_0= ruleName ) ) otherlv_3= ':' )? ( (lv_signalNames_4_0= ruleQualifiedNameList ) ) otherlv_5= ')' ) ;
    public final EObject ruleAcceptClause() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        AntlrDatatypeRuleToken lv_name_2_0 = null;

        EObject lv_signalNames_4_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:12476:28: ( (otherlv_0= 'accept' otherlv_1= '(' ( ( (lv_name_2_0= ruleName ) ) otherlv_3= ':' )? ( (lv_signalNames_4_0= ruleQualifiedNameList ) ) otherlv_5= ')' ) )
            // InternalAlf.g:12477:1: (otherlv_0= 'accept' otherlv_1= '(' ( ( (lv_name_2_0= ruleName ) ) otherlv_3= ':' )? ( (lv_signalNames_4_0= ruleQualifiedNameList ) ) otherlv_5= ')' )
            {
            // InternalAlf.g:12477:1: (otherlv_0= 'accept' otherlv_1= '(' ( ( (lv_name_2_0= ruleName ) ) otherlv_3= ':' )? ( (lv_signalNames_4_0= ruleQualifiedNameList ) ) otherlv_5= ')' )
            // InternalAlf.g:12477:3: otherlv_0= 'accept' otherlv_1= '(' ( ( (lv_name_2_0= ruleName ) ) otherlv_3= ':' )? ( (lv_signalNames_4_0= ruleQualifiedNameList ) ) otherlv_5= ')'
            {
            otherlv_0=(Token)match(input,116,FOLLOW_42); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getAcceptClauseAccess().getAcceptKeyword_0());
                  
            }
            otherlv_1=(Token)match(input,16,FOLLOW_4); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getAcceptClauseAccess().getLeftParenthesisKeyword_1());
                  
            }
            // InternalAlf.g:12485:1: ( ( (lv_name_2_0= ruleName ) ) otherlv_3= ':' )?
            int alt208=2;
            int LA208_0 = input.LA(1);

            if ( (LA208_0==RULE_ID) ) {
                int LA208_1 = input.LA(2);

                if ( (LA208_1==45) ) {
                    alt208=1;
                }
            }
            else if ( (LA208_0==RULE_UNRESTRICTED_NAME) ) {
                int LA208_2 = input.LA(2);

                if ( (LA208_2==45) ) {
                    alt208=1;
                }
            }
            switch (alt208) {
                case 1 :
                    // InternalAlf.g:12485:2: ( (lv_name_2_0= ruleName ) ) otherlv_3= ':'
                    {
                    // InternalAlf.g:12485:2: ( (lv_name_2_0= ruleName ) )
                    // InternalAlf.g:12486:1: (lv_name_2_0= ruleName )
                    {
                    // InternalAlf.g:12486:1: (lv_name_2_0= ruleName )
                    // InternalAlf.g:12487:3: lv_name_2_0= ruleName
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getAcceptClauseAccess().getNameNameParserRuleCall_2_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_47);
                    lv_name_2_0=ruleName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getAcceptClauseRule());
                      	        }
                             		set(
                             			current, 
                             			"name",
                              		lv_name_2_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.Name");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_3=(Token)match(input,45,FOLLOW_4); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getAcceptClauseAccess().getColonKeyword_2_1());
                          
                    }

                    }
                    break;

            }

            // InternalAlf.g:12507:3: ( (lv_signalNames_4_0= ruleQualifiedNameList ) )
            // InternalAlf.g:12508:1: (lv_signalNames_4_0= ruleQualifiedNameList )
            {
            // InternalAlf.g:12508:1: (lv_signalNames_4_0= ruleQualifiedNameList )
            // InternalAlf.g:12509:3: lv_signalNames_4_0= ruleQualifiedNameList
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getAcceptClauseAccess().getSignalNamesQualifiedNameListParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_6);
            lv_signalNames_4_0=ruleQualifiedNameList();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getAcceptClauseRule());
              	        }
                     		set(
                     			current, 
                     			"signalNames",
                      		lv_signalNames_4_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.QualifiedNameList");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_5=(Token)match(input,17,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_5, grammarAccess.getAcceptClauseAccess().getRightParenthesisKeyword_4());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAcceptClause"


    // $ANTLR start "entryRuleClassifyStatement"
    // InternalAlf.g:12537:1: entryRuleClassifyStatement returns [EObject current=null] : iv_ruleClassifyStatement= ruleClassifyStatement EOF ;
    public final EObject entryRuleClassifyStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleClassifyStatement = null;


        try {
            // InternalAlf.g:12538:2: (iv_ruleClassifyStatement= ruleClassifyStatement EOF )
            // InternalAlf.g:12539:2: iv_ruleClassifyStatement= ruleClassifyStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getClassifyStatementRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleClassifyStatement=ruleClassifyStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleClassifyStatement; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleClassifyStatement"


    // $ANTLR start "ruleClassifyStatement"
    // InternalAlf.g:12546:1: ruleClassifyStatement returns [EObject current=null] : (otherlv_0= 'classify' ( (lv_expression_1_0= ruleExpression ) ) ( ( ( (lv_fromList_2_0= ruleClassificationFromClause ) ) ( (lv_toList_3_0= ruleClassificationToClause ) )? ) | ( ( (lv_isReclassifyAll_4_0= ruleReclassifyAllClause ) )? ( (lv_toList_5_0= ruleClassificationToClause ) ) ) ) otherlv_6= ';' ) ;
    public final EObject ruleClassifyStatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_6=null;
        EObject lv_expression_1_0 = null;

        EObject lv_fromList_2_0 = null;

        EObject lv_toList_3_0 = null;

        AntlrDatatypeRuleToken lv_isReclassifyAll_4_0 = null;

        EObject lv_toList_5_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:12549:28: ( (otherlv_0= 'classify' ( (lv_expression_1_0= ruleExpression ) ) ( ( ( (lv_fromList_2_0= ruleClassificationFromClause ) ) ( (lv_toList_3_0= ruleClassificationToClause ) )? ) | ( ( (lv_isReclassifyAll_4_0= ruleReclassifyAllClause ) )? ( (lv_toList_5_0= ruleClassificationToClause ) ) ) ) otherlv_6= ';' ) )
            // InternalAlf.g:12550:1: (otherlv_0= 'classify' ( (lv_expression_1_0= ruleExpression ) ) ( ( ( (lv_fromList_2_0= ruleClassificationFromClause ) ) ( (lv_toList_3_0= ruleClassificationToClause ) )? ) | ( ( (lv_isReclassifyAll_4_0= ruleReclassifyAllClause ) )? ( (lv_toList_5_0= ruleClassificationToClause ) ) ) ) otherlv_6= ';' )
            {
            // InternalAlf.g:12550:1: (otherlv_0= 'classify' ( (lv_expression_1_0= ruleExpression ) ) ( ( ( (lv_fromList_2_0= ruleClassificationFromClause ) ) ( (lv_toList_3_0= ruleClassificationToClause ) )? ) | ( ( (lv_isReclassifyAll_4_0= ruleReclassifyAllClause ) )? ( (lv_toList_5_0= ruleClassificationToClause ) ) ) ) otherlv_6= ';' )
            // InternalAlf.g:12550:3: otherlv_0= 'classify' ( (lv_expression_1_0= ruleExpression ) ) ( ( ( (lv_fromList_2_0= ruleClassificationFromClause ) ) ( (lv_toList_3_0= ruleClassificationToClause ) )? ) | ( ( (lv_isReclassifyAll_4_0= ruleReclassifyAllClause ) )? ( (lv_toList_5_0= ruleClassificationToClause ) ) ) ) otherlv_6= ';'
            {
            otherlv_0=(Token)match(input,117,FOLLOW_69); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getClassifyStatementAccess().getClassifyKeyword_0());
                  
            }
            // InternalAlf.g:12554:1: ( (lv_expression_1_0= ruleExpression ) )
            // InternalAlf.g:12555:1: (lv_expression_1_0= ruleExpression )
            {
            // InternalAlf.g:12555:1: (lv_expression_1_0= ruleExpression )
            // InternalAlf.g:12556:3: lv_expression_1_0= ruleExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getClassifyStatementAccess().getExpressionExpressionParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_110);
            lv_expression_1_0=ruleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getClassifyStatementRule());
              	        }
                     		set(
                     			current, 
                     			"expression",
                      		lv_expression_1_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.Expression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:12572:2: ( ( ( (lv_fromList_2_0= ruleClassificationFromClause ) ) ( (lv_toList_3_0= ruleClassificationToClause ) )? ) | ( ( (lv_isReclassifyAll_4_0= ruleReclassifyAllClause ) )? ( (lv_toList_5_0= ruleClassificationToClause ) ) ) )
            int alt211=2;
            int LA211_0 = input.LA(1);

            if ( (LA211_0==118) ) {
                int LA211_1 = input.LA(2);

                if ( ((LA211_1>=RULE_ID && LA211_1<=RULE_UNRESTRICTED_NAME)) ) {
                    alt211=1;
                }
                else if ( (LA211_1==20) ) {
                    alt211=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 211, 1, input);

                    throw nvae;
                }
            }
            else if ( (LA211_0==119) ) {
                alt211=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 211, 0, input);

                throw nvae;
            }
            switch (alt211) {
                case 1 :
                    // InternalAlf.g:12572:3: ( ( (lv_fromList_2_0= ruleClassificationFromClause ) ) ( (lv_toList_3_0= ruleClassificationToClause ) )? )
                    {
                    // InternalAlf.g:12572:3: ( ( (lv_fromList_2_0= ruleClassificationFromClause ) ) ( (lv_toList_3_0= ruleClassificationToClause ) )? )
                    // InternalAlf.g:12572:4: ( (lv_fromList_2_0= ruleClassificationFromClause ) ) ( (lv_toList_3_0= ruleClassificationToClause ) )?
                    {
                    // InternalAlf.g:12572:4: ( (lv_fromList_2_0= ruleClassificationFromClause ) )
                    // InternalAlf.g:12573:1: (lv_fromList_2_0= ruleClassificationFromClause )
                    {
                    // InternalAlf.g:12573:1: (lv_fromList_2_0= ruleClassificationFromClause )
                    // InternalAlf.g:12574:3: lv_fromList_2_0= ruleClassificationFromClause
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getClassifyStatementAccess().getFromListClassificationFromClauseParserRuleCall_2_0_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_111);
                    lv_fromList_2_0=ruleClassificationFromClause();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getClassifyStatementRule());
                      	        }
                             		set(
                             			current, 
                             			"fromList",
                              		lv_fromList_2_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.ClassificationFromClause");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // InternalAlf.g:12590:2: ( (lv_toList_3_0= ruleClassificationToClause ) )?
                    int alt209=2;
                    int LA209_0 = input.LA(1);

                    if ( (LA209_0==119) ) {
                        alt209=1;
                    }
                    switch (alt209) {
                        case 1 :
                            // InternalAlf.g:12591:1: (lv_toList_3_0= ruleClassificationToClause )
                            {
                            // InternalAlf.g:12591:1: (lv_toList_3_0= ruleClassificationToClause )
                            // InternalAlf.g:12592:3: lv_toList_3_0= ruleClassificationToClause
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getClassifyStatementAccess().getToListClassificationToClauseParserRuleCall_2_0_1_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_11);
                            lv_toList_3_0=ruleClassificationToClause();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getClassifyStatementRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"toList",
                                      		lv_toList_3_0, 
                                      		"org.eclipse.papyrus.uml.alf.Alf.ClassificationToClause");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalAlf.g:12609:6: ( ( (lv_isReclassifyAll_4_0= ruleReclassifyAllClause ) )? ( (lv_toList_5_0= ruleClassificationToClause ) ) )
                    {
                    // InternalAlf.g:12609:6: ( ( (lv_isReclassifyAll_4_0= ruleReclassifyAllClause ) )? ( (lv_toList_5_0= ruleClassificationToClause ) ) )
                    // InternalAlf.g:12609:7: ( (lv_isReclassifyAll_4_0= ruleReclassifyAllClause ) )? ( (lv_toList_5_0= ruleClassificationToClause ) )
                    {
                    // InternalAlf.g:12609:7: ( (lv_isReclassifyAll_4_0= ruleReclassifyAllClause ) )?
                    int alt210=2;
                    int LA210_0 = input.LA(1);

                    if ( (LA210_0==118) ) {
                        alt210=1;
                    }
                    switch (alt210) {
                        case 1 :
                            // InternalAlf.g:12610:1: (lv_isReclassifyAll_4_0= ruleReclassifyAllClause )
                            {
                            // InternalAlf.g:12610:1: (lv_isReclassifyAll_4_0= ruleReclassifyAllClause )
                            // InternalAlf.g:12611:3: lv_isReclassifyAll_4_0= ruleReclassifyAllClause
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getClassifyStatementAccess().getIsReclassifyAllReclassifyAllClauseParserRuleCall_2_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_110);
                            lv_isReclassifyAll_4_0=ruleReclassifyAllClause();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getClassifyStatementRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"isReclassifyAll",
                                      		true, 
                                      		"org.eclipse.papyrus.uml.alf.Alf.ReclassifyAllClause");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }
                            break;

                    }

                    // InternalAlf.g:12627:3: ( (lv_toList_5_0= ruleClassificationToClause ) )
                    // InternalAlf.g:12628:1: (lv_toList_5_0= ruleClassificationToClause )
                    {
                    // InternalAlf.g:12628:1: (lv_toList_5_0= ruleClassificationToClause )
                    // InternalAlf.g:12629:3: lv_toList_5_0= ruleClassificationToClause
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getClassifyStatementAccess().getToListClassificationToClauseParserRuleCall_2_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_11);
                    lv_toList_5_0=ruleClassificationToClause();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getClassifyStatementRule());
                      	        }
                             		set(
                             			current, 
                             			"toList",
                              		lv_toList_5_0, 
                              		"org.eclipse.papyrus.uml.alf.Alf.ClassificationToClause");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }

            otherlv_6=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getClassifyStatementAccess().getSemicolonKeyword_3());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleClassifyStatement"


    // $ANTLR start "entryRuleClassificationFromClause"
    // InternalAlf.g:12657:1: entryRuleClassificationFromClause returns [EObject current=null] : iv_ruleClassificationFromClause= ruleClassificationFromClause EOF ;
    public final EObject entryRuleClassificationFromClause() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleClassificationFromClause = null;


        try {
            // InternalAlf.g:12658:2: (iv_ruleClassificationFromClause= ruleClassificationFromClause EOF )
            // InternalAlf.g:12659:2: iv_ruleClassificationFromClause= ruleClassificationFromClause EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getClassificationFromClauseRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleClassificationFromClause=ruleClassificationFromClause();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleClassificationFromClause; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleClassificationFromClause"


    // $ANTLR start "ruleClassificationFromClause"
    // InternalAlf.g:12666:1: ruleClassificationFromClause returns [EObject current=null] : (otherlv_0= 'from' this_QualifiedNameList_1= ruleQualifiedNameList ) ;
    public final EObject ruleClassificationFromClause() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject this_QualifiedNameList_1 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:12669:28: ( (otherlv_0= 'from' this_QualifiedNameList_1= ruleQualifiedNameList ) )
            // InternalAlf.g:12670:1: (otherlv_0= 'from' this_QualifiedNameList_1= ruleQualifiedNameList )
            {
            // InternalAlf.g:12670:1: (otherlv_0= 'from' this_QualifiedNameList_1= ruleQualifiedNameList )
            // InternalAlf.g:12670:3: otherlv_0= 'from' this_QualifiedNameList_1= ruleQualifiedNameList
            {
            otherlv_0=(Token)match(input,118,FOLLOW_4); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getClassificationFromClauseAccess().getFromKeyword_0());
                  
            }
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getClassificationFromClauseAccess().getQualifiedNameListParserRuleCall_1()); 
                  
            }
            pushFollow(FOLLOW_2);
            this_QualifiedNameList_1=ruleQualifiedNameList();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_QualifiedNameList_1; 
                      afterParserOrEnumRuleCall();
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleClassificationFromClause"


    // $ANTLR start "entryRuleClassificationToClause"
    // InternalAlf.g:12694:1: entryRuleClassificationToClause returns [EObject current=null] : iv_ruleClassificationToClause= ruleClassificationToClause EOF ;
    public final EObject entryRuleClassificationToClause() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleClassificationToClause = null;


        try {
            // InternalAlf.g:12695:2: (iv_ruleClassificationToClause= ruleClassificationToClause EOF )
            // InternalAlf.g:12696:2: iv_ruleClassificationToClause= ruleClassificationToClause EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getClassificationToClauseRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleClassificationToClause=ruleClassificationToClause();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleClassificationToClause; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleClassificationToClause"


    // $ANTLR start "ruleClassificationToClause"
    // InternalAlf.g:12703:1: ruleClassificationToClause returns [EObject current=null] : (otherlv_0= 'to' this_QualifiedNameList_1= ruleQualifiedNameList ) ;
    public final EObject ruleClassificationToClause() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject this_QualifiedNameList_1 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:12706:28: ( (otherlv_0= 'to' this_QualifiedNameList_1= ruleQualifiedNameList ) )
            // InternalAlf.g:12707:1: (otherlv_0= 'to' this_QualifiedNameList_1= ruleQualifiedNameList )
            {
            // InternalAlf.g:12707:1: (otherlv_0= 'to' this_QualifiedNameList_1= ruleQualifiedNameList )
            // InternalAlf.g:12707:3: otherlv_0= 'to' this_QualifiedNameList_1= ruleQualifiedNameList
            {
            otherlv_0=(Token)match(input,119,FOLLOW_4); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getClassificationToClauseAccess().getToKeyword_0());
                  
            }
            if ( state.backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getClassificationToClauseAccess().getQualifiedNameListParserRuleCall_1()); 
                  
            }
            pushFollow(FOLLOW_2);
            this_QualifiedNameList_1=ruleQualifiedNameList();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_QualifiedNameList_1; 
                      afterParserOrEnumRuleCall();
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleClassificationToClause"


    // $ANTLR start "entryRuleReclassifyAllClause"
    // InternalAlf.g:12731:1: entryRuleReclassifyAllClause returns [String current=null] : iv_ruleReclassifyAllClause= ruleReclassifyAllClause EOF ;
    public final String entryRuleReclassifyAllClause() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleReclassifyAllClause = null;


        try {
            // InternalAlf.g:12732:2: (iv_ruleReclassifyAllClause= ruleReclassifyAllClause EOF )
            // InternalAlf.g:12733:2: iv_ruleReclassifyAllClause= ruleReclassifyAllClause EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getReclassifyAllClauseRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleReclassifyAllClause=ruleReclassifyAllClause();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleReclassifyAllClause.getText(); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleReclassifyAllClause"


    // $ANTLR start "ruleReclassifyAllClause"
    // InternalAlf.g:12740:1: ruleReclassifyAllClause returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'from' kw= '*' ) ;
    public final AntlrDatatypeRuleToken ruleReclassifyAllClause() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // InternalAlf.g:12743:28: ( (kw= 'from' kw= '*' ) )
            // InternalAlf.g:12744:1: (kw= 'from' kw= '*' )
            {
            // InternalAlf.g:12744:1: (kw= 'from' kw= '*' )
            // InternalAlf.g:12745:2: kw= 'from' kw= '*'
            {
            kw=(Token)match(input,118,FOLLOW_16); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getReclassifyAllClauseAccess().getFromKeyword_0()); 
                  
            }
            kw=(Token)match(input,20,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getReclassifyAllClauseAccess().getAsteriskKeyword_1()); 
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleReclassifyAllClause"


    // $ANTLR start "entryRuleQualifiedNameList"
    // InternalAlf.g:12764:1: entryRuleQualifiedNameList returns [EObject current=null] : iv_ruleQualifiedNameList= ruleQualifiedNameList EOF ;
    public final EObject entryRuleQualifiedNameList() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleQualifiedNameList = null;


        try {
            // InternalAlf.g:12765:2: (iv_ruleQualifiedNameList= ruleQualifiedNameList EOF )
            // InternalAlf.g:12766:2: iv_ruleQualifiedNameList= ruleQualifiedNameList EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getQualifiedNameListRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleQualifiedNameList=ruleQualifiedNameList();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleQualifiedNameList; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQualifiedNameList"


    // $ANTLR start "ruleQualifiedNameList"
    // InternalAlf.g:12773:1: ruleQualifiedNameList returns [EObject current=null] : ( ( (lv_name_0_0= ruleQualifiedName ) ) (otherlv_1= ',' ( (lv_name_2_0= ruleQualifiedName ) ) )* ) ;
    public final EObject ruleQualifiedNameList() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_name_0_0 = null;

        EObject lv_name_2_0 = null;


         enterRule(); 
            
        try {
            // InternalAlf.g:12776:28: ( ( ( (lv_name_0_0= ruleQualifiedName ) ) (otherlv_1= ',' ( (lv_name_2_0= ruleQualifiedName ) ) )* ) )
            // InternalAlf.g:12777:1: ( ( (lv_name_0_0= ruleQualifiedName ) ) (otherlv_1= ',' ( (lv_name_2_0= ruleQualifiedName ) ) )* )
            {
            // InternalAlf.g:12777:1: ( ( (lv_name_0_0= ruleQualifiedName ) ) (otherlv_1= ',' ( (lv_name_2_0= ruleQualifiedName ) ) )* )
            // InternalAlf.g:12777:2: ( (lv_name_0_0= ruleQualifiedName ) ) (otherlv_1= ',' ( (lv_name_2_0= ruleQualifiedName ) ) )*
            {
            // InternalAlf.g:12777:2: ( (lv_name_0_0= ruleQualifiedName ) )
            // InternalAlf.g:12778:1: (lv_name_0_0= ruleQualifiedName )
            {
            // InternalAlf.g:12778:1: (lv_name_0_0= ruleQualifiedName )
            // InternalAlf.g:12779:3: lv_name_0_0= ruleQualifiedName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getQualifiedNameListAccess().getNameQualifiedNameParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_7);
            lv_name_0_0=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getQualifiedNameListRule());
              	        }
                     		add(
                     			current, 
                     			"name",
                      		lv_name_0_0, 
                      		"org.eclipse.papyrus.uml.alf.Alf.QualifiedName");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // InternalAlf.g:12795:2: (otherlv_1= ',' ( (lv_name_2_0= ruleQualifiedName ) ) )*
            loop212:
            do {
                int alt212=2;
                int LA212_0 = input.LA(1);

                if ( (LA212_0==18) ) {
                    alt212=1;
                }


                switch (alt212) {
            	case 1 :
            	    // InternalAlf.g:12795:4: otherlv_1= ',' ( (lv_name_2_0= ruleQualifiedName ) )
            	    {
            	    otherlv_1=(Token)match(input,18,FOLLOW_4); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_1, grammarAccess.getQualifiedNameListAccess().getCommaKeyword_1_0());
            	          
            	    }
            	    // InternalAlf.g:12799:1: ( (lv_name_2_0= ruleQualifiedName ) )
            	    // InternalAlf.g:12800:1: (lv_name_2_0= ruleQualifiedName )
            	    {
            	    // InternalAlf.g:12800:1: (lv_name_2_0= ruleQualifiedName )
            	    // InternalAlf.g:12801:3: lv_name_2_0= ruleQualifiedName
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getQualifiedNameListAccess().getNameQualifiedNameParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_7);
            	    lv_name_2_0=ruleQualifiedName();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getQualifiedNameListRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"name",
            	              		lv_name_2_0, 
            	              		"org.eclipse.papyrus.uml.alf.Alf.QualifiedName");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop212;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQualifiedNameList"

    // $ANTLR start synpred12_InternalAlf
    public final void synpred12_InternalAlf_fragment() throws RecognitionException {   
        EObject this_PackageImportReference_0 = null;


        // InternalAlf.g:521:2: (this_PackageImportReference_0= rulePackageImportReference )
        // InternalAlf.g:521:2: this_PackageImportReference_0= rulePackageImportReference
        {
        if ( state.backtracking==0 ) {
           
          	  /* */ 
          	
        }
        pushFollow(FOLLOW_2);
        this_PackageImportReference_0=rulePackageImportReference();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred12_InternalAlf

    // $ANTLR start synpred119_InternalAlf
    public final void synpred119_InternalAlf_fragment() throws RecognitionException {   
        Token otherlv_2=null;
        Token lv_isMultiplicity_3_0=null;
        Token lv_lowerBound_4_0=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token lv_isOrdered_8_0=null;
        Token lv_isNonunique_9_0=null;
        Token lv_isNonunique_10_0=null;
        Token lv_isOrdered_11_0=null;
        Token lv_isSequence_12_0=null;
        AntlrDatatypeRuleToken lv_upperBound_6_0 = null;


        // InternalAlf.g:4626:4: ( (otherlv_2= '[' ( ( (lv_isMultiplicity_3_0= ']' ) ) | ( ( ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) ) otherlv_5= '..' )? ( (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral ) ) otherlv_7= ']' ) ) )? ( ( ( (lv_isOrdered_8_0= 'ordered' ) ) ( (lv_isNonunique_9_0= 'nonunique' ) )? ) | ( ( (lv_isNonunique_10_0= 'nonunique' ) ) ( (lv_isOrdered_11_0= 'ordered' ) )? ) | ( (lv_isSequence_12_0= 'sequence' ) ) )? )
        // InternalAlf.g:4626:4: (otherlv_2= '[' ( ( (lv_isMultiplicity_3_0= ']' ) ) | ( ( ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) ) otherlv_5= '..' )? ( (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral ) ) otherlv_7= ']' ) ) )? ( ( ( (lv_isOrdered_8_0= 'ordered' ) ) ( (lv_isNonunique_9_0= 'nonunique' ) )? ) | ( ( (lv_isNonunique_10_0= 'nonunique' ) ) ( (lv_isOrdered_11_0= 'ordered' ) )? ) | ( (lv_isSequence_12_0= 'sequence' ) ) )?
        {
        // InternalAlf.g:4626:4: (otherlv_2= '[' ( ( (lv_isMultiplicity_3_0= ']' ) ) | ( ( ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) ) otherlv_5= '..' )? ( (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral ) ) otherlv_7= ']' ) ) )?
        int alt231=2;
        int LA231_0 = input.LA(1);

        if ( (LA231_0==52) ) {
            alt231=1;
        }
        switch (alt231) {
            case 1 :
                // InternalAlf.g:4626:6: otherlv_2= '[' ( ( (lv_isMultiplicity_3_0= ']' ) ) | ( ( ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) ) otherlv_5= '..' )? ( (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral ) ) otherlv_7= ']' ) )
                {
                otherlv_2=(Token)match(input,52,FOLLOW_53); if (state.failed) return ;
                // InternalAlf.g:4630:1: ( ( (lv_isMultiplicity_3_0= ']' ) ) | ( ( ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) ) otherlv_5= '..' )? ( (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral ) ) otherlv_7= ']' ) )
                int alt230=2;
                int LA230_0 = input.LA(1);

                if ( (LA230_0==53) ) {
                    alt230=1;
                }
                else if ( (LA230_0==RULE_NATURAL_VALUE||LA230_0==20) ) {
                    alt230=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return ;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 230, 0, input);

                    throw nvae;
                }
                switch (alt230) {
                    case 1 :
                        // InternalAlf.g:4630:2: ( (lv_isMultiplicity_3_0= ']' ) )
                        {
                        // InternalAlf.g:4630:2: ( (lv_isMultiplicity_3_0= ']' ) )
                        // InternalAlf.g:4631:1: (lv_isMultiplicity_3_0= ']' )
                        {
                        // InternalAlf.g:4631:1: (lv_isMultiplicity_3_0= ']' )
                        // InternalAlf.g:4632:3: lv_isMultiplicity_3_0= ']'
                        {
                        lv_isMultiplicity_3_0=(Token)match(input,53,FOLLOW_54); if (state.failed) return ;

                        }


                        }


                        }
                        break;
                    case 2 :
                        // InternalAlf.g:4646:6: ( ( ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) ) otherlv_5= '..' )? ( (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral ) ) otherlv_7= ']' )
                        {
                        // InternalAlf.g:4646:6: ( ( ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) ) otherlv_5= '..' )? ( (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral ) ) otherlv_7= ']' )
                        // InternalAlf.g:4646:7: ( ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) ) otherlv_5= '..' )? ( (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral ) ) otherlv_7= ']'
                        {
                        // InternalAlf.g:4646:7: ( ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) ) otherlv_5= '..' )?
                        int alt229=2;
                        int LA229_0 = input.LA(1);

                        if ( (LA229_0==RULE_NATURAL_VALUE) ) {
                            int LA229_1 = input.LA(2);

                            if ( (LA229_1==54) ) {
                                alt229=1;
                            }
                        }
                        switch (alt229) {
                            case 1 :
                                // InternalAlf.g:4646:8: ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) ) otherlv_5= '..'
                                {
                                // InternalAlf.g:4646:8: ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) )
                                // InternalAlf.g:4647:1: (lv_lowerBound_4_0= RULE_NATURAL_VALUE )
                                {
                                // InternalAlf.g:4647:1: (lv_lowerBound_4_0= RULE_NATURAL_VALUE )
                                // InternalAlf.g:4648:3: lv_lowerBound_4_0= RULE_NATURAL_VALUE
                                {
                                lv_lowerBound_4_0=(Token)match(input,RULE_NATURAL_VALUE,FOLLOW_55); if (state.failed) return ;

                                }


                                }

                                otherlv_5=(Token)match(input,54,FOLLOW_53); if (state.failed) return ;

                                }
                                break;

                        }

                        // InternalAlf.g:4668:3: ( (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral ) )
                        // InternalAlf.g:4669:1: (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral )
                        {
                        // InternalAlf.g:4669:1: (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral )
                        // InternalAlf.g:4670:3: lv_upperBound_6_0= ruleUnlimitedNaturalLiteral
                        {
                        if ( state.backtracking==0 ) {
                           
                          	        newCompositeNode(grammarAccess.getTypePartAccess().getUpperBoundUnlimitedNaturalLiteralParserRuleCall_1_0_1_1_1_0()); 
                          	    
                        }
                        pushFollow(FOLLOW_56);
                        lv_upperBound_6_0=ruleUnlimitedNaturalLiteral();

                        state._fsp--;
                        if (state.failed) return ;

                        }


                        }

                        otherlv_7=(Token)match(input,53,FOLLOW_54); if (state.failed) return ;

                        }


                        }
                        break;

                }


                }
                break;

        }

        // InternalAlf.g:4690:5: ( ( ( (lv_isOrdered_8_0= 'ordered' ) ) ( (lv_isNonunique_9_0= 'nonunique' ) )? ) | ( ( (lv_isNonunique_10_0= 'nonunique' ) ) ( (lv_isOrdered_11_0= 'ordered' ) )? ) | ( (lv_isSequence_12_0= 'sequence' ) ) )?
        int alt234=4;
        switch ( input.LA(1) ) {
            case 55:
                {
                alt234=1;
                }
                break;
            case 56:
                {
                alt234=2;
                }
                break;
            case 57:
                {
                alt234=3;
                }
                break;
        }

        switch (alt234) {
            case 1 :
                // InternalAlf.g:4690:6: ( ( (lv_isOrdered_8_0= 'ordered' ) ) ( (lv_isNonunique_9_0= 'nonunique' ) )? )
                {
                // InternalAlf.g:4690:6: ( ( (lv_isOrdered_8_0= 'ordered' ) ) ( (lv_isNonunique_9_0= 'nonunique' ) )? )
                // InternalAlf.g:4690:7: ( (lv_isOrdered_8_0= 'ordered' ) ) ( (lv_isNonunique_9_0= 'nonunique' ) )?
                {
                // InternalAlf.g:4690:7: ( (lv_isOrdered_8_0= 'ordered' ) )
                // InternalAlf.g:4691:1: (lv_isOrdered_8_0= 'ordered' )
                {
                // InternalAlf.g:4691:1: (lv_isOrdered_8_0= 'ordered' )
                // InternalAlf.g:4692:3: lv_isOrdered_8_0= 'ordered'
                {
                lv_isOrdered_8_0=(Token)match(input,55,FOLLOW_57); if (state.failed) return ;

                }


                }

                // InternalAlf.g:4705:2: ( (lv_isNonunique_9_0= 'nonunique' ) )?
                int alt232=2;
                int LA232_0 = input.LA(1);

                if ( (LA232_0==56) ) {
                    alt232=1;
                }
                switch (alt232) {
                    case 1 :
                        // InternalAlf.g:4706:1: (lv_isNonunique_9_0= 'nonunique' )
                        {
                        // InternalAlf.g:4706:1: (lv_isNonunique_9_0= 'nonunique' )
                        // InternalAlf.g:4707:3: lv_isNonunique_9_0= 'nonunique'
                        {
                        lv_isNonunique_9_0=(Token)match(input,56,FOLLOW_2); if (state.failed) return ;

                        }


                        }
                        break;

                }


                }


                }
                break;
            case 2 :
                // InternalAlf.g:4721:6: ( ( (lv_isNonunique_10_0= 'nonunique' ) ) ( (lv_isOrdered_11_0= 'ordered' ) )? )
                {
                // InternalAlf.g:4721:6: ( ( (lv_isNonunique_10_0= 'nonunique' ) ) ( (lv_isOrdered_11_0= 'ordered' ) )? )
                // InternalAlf.g:4721:7: ( (lv_isNonunique_10_0= 'nonunique' ) ) ( (lv_isOrdered_11_0= 'ordered' ) )?
                {
                // InternalAlf.g:4721:7: ( (lv_isNonunique_10_0= 'nonunique' ) )
                // InternalAlf.g:4722:1: (lv_isNonunique_10_0= 'nonunique' )
                {
                // InternalAlf.g:4722:1: (lv_isNonunique_10_0= 'nonunique' )
                // InternalAlf.g:4723:3: lv_isNonunique_10_0= 'nonunique'
                {
                lv_isNonunique_10_0=(Token)match(input,56,FOLLOW_58); if (state.failed) return ;

                }


                }

                // InternalAlf.g:4736:2: ( (lv_isOrdered_11_0= 'ordered' ) )?
                int alt233=2;
                int LA233_0 = input.LA(1);

                if ( (LA233_0==55) ) {
                    alt233=1;
                }
                switch (alt233) {
                    case 1 :
                        // InternalAlf.g:4737:1: (lv_isOrdered_11_0= 'ordered' )
                        {
                        // InternalAlf.g:4737:1: (lv_isOrdered_11_0= 'ordered' )
                        // InternalAlf.g:4738:3: lv_isOrdered_11_0= 'ordered'
                        {
                        lv_isOrdered_11_0=(Token)match(input,55,FOLLOW_2); if (state.failed) return ;

                        }


                        }
                        break;

                }


                }


                }
                break;
            case 3 :
                // InternalAlf.g:4752:6: ( (lv_isSequence_12_0= 'sequence' ) )
                {
                // InternalAlf.g:4752:6: ( (lv_isSequence_12_0= 'sequence' ) )
                // InternalAlf.g:4753:1: (lv_isSequence_12_0= 'sequence' )
                {
                // InternalAlf.g:4753:1: (lv_isSequence_12_0= 'sequence' )
                // InternalAlf.g:4754:3: lv_isSequence_12_0= 'sequence'
                {
                lv_isSequence_12_0=(Token)match(input,57,FOLLOW_2); if (state.failed) return ;

                }


                }


                }
                break;

        }


        }
    }
    // $ANTLR end synpred119_InternalAlf

    // $ANTLR start synpred133_InternalAlf
    public final void synpred133_InternalAlf_fragment() throws RecognitionException {   
        Token otherlv_3=null;
        EObject lv_nameBinding_4_0 = null;


        // InternalAlf.g:5323:8: (otherlv_3= '.' ( (lv_nameBinding_4_0= ruleNameBinding ) ) )
        // InternalAlf.g:5323:8: otherlv_3= '.' ( (lv_nameBinding_4_0= ruleNameBinding ) )
        {
        otherlv_3=(Token)match(input,26,FOLLOW_4); if (state.failed) return ;
        // InternalAlf.g:5327:1: ( (lv_nameBinding_4_0= ruleNameBinding ) )
        // InternalAlf.g:5328:1: (lv_nameBinding_4_0= ruleNameBinding )
        {
        // InternalAlf.g:5328:1: (lv_nameBinding_4_0= ruleNameBinding )
        // InternalAlf.g:5329:3: lv_nameBinding_4_0= ruleNameBinding
        {
        if ( state.backtracking==0 ) {
           
          	        newCompositeNode(grammarAccess.getQualifiedNameAccess().getNameBindingNameBindingParserRuleCall_1_1_1_0()); 
          	    
        }
        pushFollow(FOLLOW_2);
        lv_nameBinding_4_0=ruleNameBinding();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }
    }
    // $ANTLR end synpred133_InternalAlf

    // $ANTLR start synpred134_InternalAlf
    public final void synpred134_InternalAlf_fragment() throws RecognitionException {   
        Token otherlv_3=null;
        EObject lv_nameBinding_4_0 = null;


        // InternalAlf.g:5323:6: ( (otherlv_3= '.' ( (lv_nameBinding_4_0= ruleNameBinding ) ) )+ )
        // InternalAlf.g:5323:6: (otherlv_3= '.' ( (lv_nameBinding_4_0= ruleNameBinding ) ) )+
        {
        // InternalAlf.g:5323:6: (otherlv_3= '.' ( (lv_nameBinding_4_0= ruleNameBinding ) ) )+
        int cnt237=0;
        loop237:
        do {
            int alt237=2;
            int LA237_0 = input.LA(1);

            if ( (LA237_0==26) ) {
                alt237=1;
            }


            switch (alt237) {
        	case 1 :
        	    // InternalAlf.g:5323:8: otherlv_3= '.' ( (lv_nameBinding_4_0= ruleNameBinding ) )
        	    {
        	    otherlv_3=(Token)match(input,26,FOLLOW_4); if (state.failed) return ;
        	    // InternalAlf.g:5327:1: ( (lv_nameBinding_4_0= ruleNameBinding ) )
        	    // InternalAlf.g:5328:1: (lv_nameBinding_4_0= ruleNameBinding )
        	    {
        	    // InternalAlf.g:5328:1: (lv_nameBinding_4_0= ruleNameBinding )
        	    // InternalAlf.g:5329:3: lv_nameBinding_4_0= ruleNameBinding
        	    {
        	    if ( state.backtracking==0 ) {
        	       
        	      	        newCompositeNode(grammarAccess.getQualifiedNameAccess().getNameBindingNameBindingParserRuleCall_1_1_1_0()); 
        	      	    
        	    }
        	    pushFollow(FOLLOW_63);
        	    lv_nameBinding_4_0=ruleNameBinding();

        	    state._fsp--;
        	    if (state.failed) return ;

        	    }


        	    }


        	    }
        	    break;

        	default :
        	    if ( cnt237 >= 1 ) break loop237;
        	    if (state.backtracking>0) {state.failed=true; return ;}
                    EarlyExitException eee =
                        new EarlyExitException(237, input);
                    throw eee;
            }
            cnt237++;
        } while (true);


        }
    }
    // $ANTLR end synpred134_InternalAlf

    // $ANTLR start synpred137_InternalAlf
    public final void synpred137_InternalAlf_fragment() throws RecognitionException {   
        Token otherlv_5=null;
        EObject lv_nameBinding_6_0 = null;


        // InternalAlf.g:5434:4: (otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) ) )
        // InternalAlf.g:5434:4: otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) )
        {
        otherlv_5=(Token)match(input,26,FOLLOW_4); if (state.failed) return ;
        // InternalAlf.g:5438:1: ( (lv_nameBinding_6_0= ruleNameBinding ) )
        // InternalAlf.g:5439:1: (lv_nameBinding_6_0= ruleNameBinding )
        {
        // InternalAlf.g:5439:1: (lv_nameBinding_6_0= ruleNameBinding )
        // InternalAlf.g:5440:3: lv_nameBinding_6_0= ruleNameBinding
        {
        if ( state.backtracking==0 ) {
           
          	        newCompositeNode(grammarAccess.getPotentiallyAmbiguousQualifiedNameAccess().getNameBindingNameBindingParserRuleCall_1_1_2_1_0()); 
          	    
        }
        pushFollow(FOLLOW_2);
        lv_nameBinding_6_0=ruleNameBinding();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }
    }
    // $ANTLR end synpred137_InternalAlf

    // $ANTLR start synpred138_InternalAlf
    public final void synpred138_InternalAlf_fragment() throws RecognitionException {   
        Token lv_isAmbiguous_3_0=null;
        Token otherlv_5=null;
        EObject lv_nameBinding_4_0 = null;

        EObject lv_nameBinding_6_0 = null;


        // InternalAlf.g:5401:6: ( ( ( (lv_isAmbiguous_3_0= '.' ) ) ( (lv_nameBinding_4_0= ruleNameBinding ) ) (otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) ) )* ) )
        // InternalAlf.g:5401:6: ( ( (lv_isAmbiguous_3_0= '.' ) ) ( (lv_nameBinding_4_0= ruleNameBinding ) ) (otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) ) )* )
        {
        // InternalAlf.g:5401:6: ( ( (lv_isAmbiguous_3_0= '.' ) ) ( (lv_nameBinding_4_0= ruleNameBinding ) ) (otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) ) )* )
        // InternalAlf.g:5401:7: ( (lv_isAmbiguous_3_0= '.' ) ) ( (lv_nameBinding_4_0= ruleNameBinding ) ) (otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) ) )*
        {
        // InternalAlf.g:5401:7: ( (lv_isAmbiguous_3_0= '.' ) )
        // InternalAlf.g:5402:1: (lv_isAmbiguous_3_0= '.' )
        {
        // InternalAlf.g:5402:1: (lv_isAmbiguous_3_0= '.' )
        // InternalAlf.g:5403:3: lv_isAmbiguous_3_0= '.'
        {
        lv_isAmbiguous_3_0=(Token)match(input,26,FOLLOW_4); if (state.failed) return ;

        }


        }

        // InternalAlf.g:5416:2: ( (lv_nameBinding_4_0= ruleNameBinding ) )
        // InternalAlf.g:5417:1: (lv_nameBinding_4_0= ruleNameBinding )
        {
        // InternalAlf.g:5417:1: (lv_nameBinding_4_0= ruleNameBinding )
        // InternalAlf.g:5418:3: lv_nameBinding_4_0= ruleNameBinding
        {
        if ( state.backtracking==0 ) {
           
          	        newCompositeNode(grammarAccess.getPotentiallyAmbiguousQualifiedNameAccess().getNameBindingNameBindingParserRuleCall_1_1_1_0()); 
          	    
        }
        pushFollow(FOLLOW_63);
        lv_nameBinding_4_0=ruleNameBinding();

        state._fsp--;
        if (state.failed) return ;

        }


        }

        // InternalAlf.g:5434:2: (otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) ) )*
        loop239:
        do {
            int alt239=2;
            int LA239_0 = input.LA(1);

            if ( (LA239_0==26) ) {
                alt239=1;
            }


            switch (alt239) {
        	case 1 :
        	    // InternalAlf.g:5434:4: otherlv_5= '.' ( (lv_nameBinding_6_0= ruleNameBinding ) )
        	    {
        	    otherlv_5=(Token)match(input,26,FOLLOW_4); if (state.failed) return ;
        	    // InternalAlf.g:5438:1: ( (lv_nameBinding_6_0= ruleNameBinding ) )
        	    // InternalAlf.g:5439:1: (lv_nameBinding_6_0= ruleNameBinding )
        	    {
        	    // InternalAlf.g:5439:1: (lv_nameBinding_6_0= ruleNameBinding )
        	    // InternalAlf.g:5440:3: lv_nameBinding_6_0= ruleNameBinding
        	    {
        	    if ( state.backtracking==0 ) {
        	       
        	      	        newCompositeNode(grammarAccess.getPotentiallyAmbiguousQualifiedNameAccess().getNameBindingNameBindingParserRuleCall_1_1_2_1_0()); 
        	      	    
        	    }
        	    pushFollow(FOLLOW_63);
        	    lv_nameBinding_6_0=ruleNameBinding();

        	    state._fsp--;
        	    if (state.failed) return ;

        	    }


        	    }


        	    }
        	    break;

        	default :
        	    break loop239;
            }
        } while (true);


        }


        }
    }
    // $ANTLR end synpred138_InternalAlf

    // $ANTLR start synpred139_InternalAlf
    public final void synpred139_InternalAlf_fragment() throws RecognitionException {   
        EObject lv_binding_1_0 = null;


        // InternalAlf.g:5539:1: ( (lv_binding_1_0= ruleTemplateBinding ) )
        // InternalAlf.g:5539:1: (lv_binding_1_0= ruleTemplateBinding )
        {
        // InternalAlf.g:5539:1: (lv_binding_1_0= ruleTemplateBinding )
        // InternalAlf.g:5540:3: lv_binding_1_0= ruleTemplateBinding
        {
        if ( state.backtracking==0 ) {
           
          	        newCompositeNode(grammarAccess.getNameBindingAccess().getBindingTemplateBindingParserRuleCall_1_0()); 
          	    
        }
        pushFollow(FOLLOW_2);
        lv_binding_1_0=ruleTemplateBinding();

        state._fsp--;
        if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred139_InternalAlf

    // $ANTLR start synpred143_InternalAlf
    public final void synpred143_InternalAlf_fragment() throws RecognitionException {   
        EObject this_AssignmentExpression_0 = null;


        // InternalAlf.g:5815:2: (this_AssignmentExpression_0= ruleAssignmentExpression )
        // InternalAlf.g:5815:2: this_AssignmentExpression_0= ruleAssignmentExpression
        {
        if ( state.backtracking==0 ) {
           
          	  /* */ 
          	
        }
        pushFollow(FOLLOW_2);
        this_AssignmentExpression_0=ruleAssignmentExpression();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred143_InternalAlf

    // $ANTLR start synpred144_InternalAlf
    public final void synpred144_InternalAlf_fragment() throws RecognitionException {   
        Token otherlv_2=null;
        EObject lv_nameBinding_3_0 = null;

        EObject lv_tuple_5_0 = null;


        // InternalAlf.g:5872:2: ( ( () otherlv_2= '.' ( (lv_nameBinding_3_0= ruleNameBinding ) ) () ( (lv_tuple_5_0= ruleTuple ) ) ) )
        // InternalAlf.g:5872:2: ( () otherlv_2= '.' ( (lv_nameBinding_3_0= ruleNameBinding ) ) () ( (lv_tuple_5_0= ruleTuple ) ) )
        {
        // InternalAlf.g:5872:2: ( () otherlv_2= '.' ( (lv_nameBinding_3_0= ruleNameBinding ) ) () ( (lv_tuple_5_0= ruleTuple ) ) )
        // InternalAlf.g:5872:3: () otherlv_2= '.' ( (lv_nameBinding_3_0= ruleNameBinding ) ) () ( (lv_tuple_5_0= ruleTuple ) )
        {
        // InternalAlf.g:5872:3: ()
        // InternalAlf.g:5873:2: 
        {
        if ( state.backtracking==0 ) {
           
          	  /* */ 
          	
        }

        }

        otherlv_2=(Token)match(input,26,FOLLOW_4); if (state.failed) return ;
        // InternalAlf.g:5885:1: ( (lv_nameBinding_3_0= ruleNameBinding ) )
        // InternalAlf.g:5886:1: (lv_nameBinding_3_0= ruleNameBinding )
        {
        // InternalAlf.g:5886:1: (lv_nameBinding_3_0= ruleNameBinding )
        // InternalAlf.g:5887:3: lv_nameBinding_3_0= ruleNameBinding
        {
        if ( state.backtracking==0 ) {
           
          	        newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getNameBindingNameBindingParserRuleCall_1_0_2_0()); 
          	    
        }
        pushFollow(FOLLOW_42);
        lv_nameBinding_3_0=ruleNameBinding();

        state._fsp--;
        if (state.failed) return ;

        }


        }

        // InternalAlf.g:5903:2: ()
        // InternalAlf.g:5904:2: 
        {
        if ( state.backtracking==0 ) {
           
          	  /* */ 
          	
        }

        }

        // InternalAlf.g:5912:2: ( (lv_tuple_5_0= ruleTuple ) )
        // InternalAlf.g:5913:1: (lv_tuple_5_0= ruleTuple )
        {
        // InternalAlf.g:5913:1: (lv_tuple_5_0= ruleTuple )
        // InternalAlf.g:5914:3: lv_tuple_5_0= ruleTuple
        {
        if ( state.backtracking==0 ) {
           
          	        newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getTupleTupleParserRuleCall_1_0_4_0()); 
          	    
        }
        pushFollow(FOLLOW_2);
        lv_tuple_5_0=ruleTuple();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred144_InternalAlf

    // $ANTLR start synpred145_InternalAlf
    public final void synpred145_InternalAlf_fragment() throws RecognitionException {   
        Token otherlv_7=null;
        EObject lv_nameBinding_8_0 = null;


        // InternalAlf.g:5931:6: ( ( () otherlv_7= '.' ( (lv_nameBinding_8_0= ruleNameBinding ) ) () ) )
        // InternalAlf.g:5931:6: ( () otherlv_7= '.' ( (lv_nameBinding_8_0= ruleNameBinding ) ) () )
        {
        // InternalAlf.g:5931:6: ( () otherlv_7= '.' ( (lv_nameBinding_8_0= ruleNameBinding ) ) () )
        // InternalAlf.g:5931:7: () otherlv_7= '.' ( (lv_nameBinding_8_0= ruleNameBinding ) ) ()
        {
        // InternalAlf.g:5931:7: ()
        // InternalAlf.g:5932:2: 
        {
        if ( state.backtracking==0 ) {
           
          	  /* */ 
          	
        }

        }

        otherlv_7=(Token)match(input,26,FOLLOW_4); if (state.failed) return ;
        // InternalAlf.g:5944:1: ( (lv_nameBinding_8_0= ruleNameBinding ) )
        // InternalAlf.g:5945:1: (lv_nameBinding_8_0= ruleNameBinding )
        {
        // InternalAlf.g:5945:1: (lv_nameBinding_8_0= ruleNameBinding )
        // InternalAlf.g:5946:3: lv_nameBinding_8_0= ruleNameBinding
        {
        if ( state.backtracking==0 ) {
           
          	        newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getNameBindingNameBindingParserRuleCall_1_1_2_0()); 
          	    
        }
        pushFollow(FOLLOW_2);
        lv_nameBinding_8_0=ruleNameBinding();

        state._fsp--;
        if (state.failed) return ;

        }


        }

        // InternalAlf.g:5962:2: ()
        // InternalAlf.g:5963:2: 
        {
        if ( state.backtracking==0 ) {
           
          	  /* */ 
          	
        }

        }


        }


        }
    }
    // $ANTLR end synpred145_InternalAlf

    // $ANTLR start synpred155_InternalAlf
    public final void synpred155_InternalAlf_fragment() throws RecognitionException {   
        EObject this_ClassExtentExpression_4 = null;


        // InternalAlf.g:6251:2: (this_ClassExtentExpression_4= ruleClassExtentExpression )
        // InternalAlf.g:6251:2: this_ClassExtentExpression_4= ruleClassExtentExpression
        {
        if ( state.backtracking==0 ) {
           
          	  /* */ 
          	
        }
        pushFollow(FOLLOW_2);
        this_ClassExtentExpression_4=ruleClassExtentExpression();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred155_InternalAlf

    // $ANTLR start synpred156_InternalAlf
    public final void synpred156_InternalAlf_fragment() throws RecognitionException {   
        EObject this_LinkOperationExpression_5 = null;


        // InternalAlf.g:6264:2: (this_LinkOperationExpression_5= ruleLinkOperationExpression )
        // InternalAlf.g:6264:2: this_LinkOperationExpression_5= ruleLinkOperationExpression
        {
        if ( state.backtracking==0 ) {
           
          	  /* */ 
          	
        }
        pushFollow(FOLLOW_2);
        this_LinkOperationExpression_5=ruleLinkOperationExpression();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred156_InternalAlf

    // $ANTLR start synpred157_InternalAlf
    public final void synpred157_InternalAlf_fragment() throws RecognitionException {   
        EObject this_SequenceConstructionExpression_6 = null;


        // InternalAlf.g:6277:2: (this_SequenceConstructionExpression_6= ruleSequenceConstructionExpression )
        // InternalAlf.g:6277:2: this_SequenceConstructionExpression_6= ruleSequenceConstructionExpression
        {
        if ( state.backtracking==0 ) {
           
          	  /* */ 
          	
        }
        pushFollow(FOLLOW_2);
        this_SequenceConstructionExpression_6=ruleSequenceConstructionExpression();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred157_InternalAlf

    // $ANTLR start synpred158_InternalAlf
    public final void synpred158_InternalAlf_fragment() throws RecognitionException {   
        EObject this_SequenceOperationOrReductionOrExpansionExpression_7 = null;


        // InternalAlf.g:6290:2: (this_SequenceOperationOrReductionOrExpansionExpression_7= ruleSequenceOperationOrReductionOrExpansionExpression )
        // InternalAlf.g:6290:2: this_SequenceOperationOrReductionOrExpansionExpression_7= ruleSequenceOperationOrReductionOrExpansionExpression
        {
        if ( state.backtracking==0 ) {
           
          	  /* */ 
          	
        }
        pushFollow(FOLLOW_2);
        this_SequenceOperationOrReductionOrExpansionExpression_7=ruleSequenceOperationOrReductionOrExpansionExpression();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred158_InternalAlf

    // $ANTLR start synpred159_InternalAlf
    public final void synpred159_InternalAlf_fragment() throws RecognitionException {   
        EObject this_BehaviorInvocationExpression_8 = null;


        // InternalAlf.g:6303:2: (this_BehaviorInvocationExpression_8= ruleBehaviorInvocationExpression )
        // InternalAlf.g:6303:2: this_BehaviorInvocationExpression_8= ruleBehaviorInvocationExpression
        {
        if ( state.backtracking==0 ) {
           
          	  /* */ 
          	
        }
        pushFollow(FOLLOW_2);
        this_BehaviorInvocationExpression_8=ruleBehaviorInvocationExpression();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred159_InternalAlf

    // $ANTLR start synpred160_InternalAlf
    public final void synpred160_InternalAlf_fragment() throws RecognitionException {   
        EObject this_NameExpression_9 = null;


        // InternalAlf.g:6316:2: (this_NameExpression_9= ruleNameExpression )
        // InternalAlf.g:6316:2: this_NameExpression_9= ruleNameExpression
        {
        if ( state.backtracking==0 ) {
           
          	  /* */ 
          	
        }
        pushFollow(FOLLOW_2);
        this_NameExpression_9=ruleNameExpression();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred160_InternalAlf

    // $ANTLR start synpred172_InternalAlf
    public final void synpred172_InternalAlf_fragment() throws RecognitionException {   
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_typeName_2_0 = null;

        AntlrDatatypeRuleToken lv_hasMultiplicity_3_0 = null;

        EObject lv_elements_5_0 = null;


        // InternalAlf.g:7102:2: ( ( () ( (lv_typeName_2_0= ruleQualifiedName ) ) ( (lv_hasMultiplicity_3_0= ruleMultiplicityIndicator ) )? otherlv_4= '{' ( (lv_elements_5_0= ruleSequenceElements ) )? otherlv_6= '}' ) )
        // InternalAlf.g:7102:2: ( () ( (lv_typeName_2_0= ruleQualifiedName ) ) ( (lv_hasMultiplicity_3_0= ruleMultiplicityIndicator ) )? otherlv_4= '{' ( (lv_elements_5_0= ruleSequenceElements ) )? otherlv_6= '}' )
        {
        // InternalAlf.g:7102:2: ( () ( (lv_typeName_2_0= ruleQualifiedName ) ) ( (lv_hasMultiplicity_3_0= ruleMultiplicityIndicator ) )? otherlv_4= '{' ( (lv_elements_5_0= ruleSequenceElements ) )? otherlv_6= '}' )
        // InternalAlf.g:7102:3: () ( (lv_typeName_2_0= ruleQualifiedName ) ) ( (lv_hasMultiplicity_3_0= ruleMultiplicityIndicator ) )? otherlv_4= '{' ( (lv_elements_5_0= ruleSequenceElements ) )? otherlv_6= '}'
        {
        // InternalAlf.g:7102:3: ()
        // InternalAlf.g:7103:2: 
        {
        if ( state.backtracking==0 ) {
           
          	  /* */ 
          	
        }

        }

        // InternalAlf.g:7111:2: ( (lv_typeName_2_0= ruleQualifiedName ) )
        // InternalAlf.g:7112:1: (lv_typeName_2_0= ruleQualifiedName )
        {
        // InternalAlf.g:7112:1: (lv_typeName_2_0= ruleQualifiedName )
        // InternalAlf.g:7113:3: lv_typeName_2_0= ruleQualifiedName
        {
        if ( state.backtracking==0 ) {
           
          	        newCompositeNode(grammarAccess.getInstanceCreationOrSequenceConstructionExpressionAccess().getTypeNameQualifiedNameParserRuleCall_1_0_1_0()); 
          	    
        }
        pushFollow(FOLLOW_72);
        lv_typeName_2_0=ruleQualifiedName();

        state._fsp--;
        if (state.failed) return ;

        }


        }

        // InternalAlf.g:7129:2: ( (lv_hasMultiplicity_3_0= ruleMultiplicityIndicator ) )?
        int alt244=2;
        int LA244_0 = input.LA(1);

        if ( (LA244_0==52) ) {
            alt244=1;
        }
        switch (alt244) {
            case 1 :
                // InternalAlf.g:7130:1: (lv_hasMultiplicity_3_0= ruleMultiplicityIndicator )
                {
                // InternalAlf.g:7130:1: (lv_hasMultiplicity_3_0= ruleMultiplicityIndicator )
                // InternalAlf.g:7131:3: lv_hasMultiplicity_3_0= ruleMultiplicityIndicator
                {
                if ( state.backtracking==0 ) {
                   
                  	        newCompositeNode(grammarAccess.getInstanceCreationOrSequenceConstructionExpressionAccess().getHasMultiplicityMultiplicityIndicatorParserRuleCall_1_0_2_0()); 
                  	    
                }
                pushFollow(FOLLOW_18);
                lv_hasMultiplicity_3_0=ruleMultiplicityIndicator();

                state._fsp--;
                if (state.failed) return ;

                }


                }
                break;

        }

        otherlv_4=(Token)match(input,31,FOLLOW_73); if (state.failed) return ;
        // InternalAlf.g:7151:1: ( (lv_elements_5_0= ruleSequenceElements ) )?
        int alt245=2;
        int LA245_0 = input.LA(1);

        if ( ((LA245_0>=RULE_BOOLEAN_VALUE && LA245_0<=RULE_UNRESTRICTED_NAME)||LA245_0==16||LA245_0==20||LA245_0==31||LA245_0==51||(LA245_0>=62 && LA245_0<=64)||(LA245_0>=69 && LA245_0<=76)) ) {
            alt245=1;
        }
        switch (alt245) {
            case 1 :
                // InternalAlf.g:7152:1: (lv_elements_5_0= ruleSequenceElements )
                {
                // InternalAlf.g:7152:1: (lv_elements_5_0= ruleSequenceElements )
                // InternalAlf.g:7153:3: lv_elements_5_0= ruleSequenceElements
                {
                if ( state.backtracking==0 ) {
                   
                  	        newCompositeNode(grammarAccess.getInstanceCreationOrSequenceConstructionExpressionAccess().getElementsSequenceElementsParserRuleCall_1_0_4_0()); 
                  	    
                }
                pushFollow(FOLLOW_74);
                lv_elements_5_0=ruleSequenceElements();

                state._fsp--;
                if (state.failed) return ;

                }


                }
                break;

        }

        otherlv_6=(Token)match(input,32,FOLLOW_2); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred172_InternalAlf

    // $ANTLR start synpred175_InternalAlf
    public final void synpred175_InternalAlf_fragment() throws RecognitionException {   
        EObject this_IndexedNamedTupleExpressionList_1 = null;


        // InternalAlf.g:7365:2: (this_IndexedNamedTupleExpressionList_1= ruleIndexedNamedTupleExpressionList )
        // InternalAlf.g:7365:2: this_IndexedNamedTupleExpressionList_1= ruleIndexedNamedTupleExpressionList
        {
        if ( state.backtracking==0 ) {
           
          	  /* */ 
          	
        }
        pushFollow(FOLLOW_2);
        this_IndexedNamedTupleExpressionList_1=ruleIndexedNamedTupleExpressionList();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred175_InternalAlf

    // $ANTLR start synpred182_InternalAlf
    public final void synpred182_InternalAlf_fragment() throws RecognitionException {   
        EObject this_SequenceRange_0 = null;


        // InternalAlf.g:7758:2: (this_SequenceRange_0= ruleSequenceRange )
        // InternalAlf.g:7758:2: this_SequenceRange_0= ruleSequenceRange
        {
        if ( state.backtracking==0 ) {
           
          	  /* */ 
          	
        }
        pushFollow(FOLLOW_2);
        this_SequenceRange_0=ruleSequenceRange();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred182_InternalAlf

    // $ANTLR start synpred192_InternalAlf
    public final void synpred192_InternalAlf_fragment() throws RecognitionException {   
        EObject this_PostfixExpression_0 = null;


        // InternalAlf.g:8421:2: (this_PostfixExpression_0= rulePostfixExpression )
        // InternalAlf.g:8421:2: this_PostfixExpression_0= rulePostfixExpression
        {
        if ( state.backtracking==0 ) {
           
          	  /* */ 
          	
        }
        pushFollow(FOLLOW_2);
        this_PostfixExpression_0=rulePostfixExpression();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred192_InternalAlf

    // $ANTLR start synpred193_InternalAlf
    public final void synpred193_InternalAlf_fragment() throws RecognitionException {   
        EObject this_CastExpression_1 = null;


        // InternalAlf.g:8434:2: (this_CastExpression_1= ruleCastExpression )
        // InternalAlf.g:8434:2: this_CastExpression_1= ruleCastExpression
        {
        if ( state.backtracking==0 ) {
           
          	  /* */ 
          	
        }
        pushFollow(FOLLOW_2);
        this_CastExpression_1=ruleCastExpression();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred193_InternalAlf

    // $ANTLR start synpred225_InternalAlf
    public final void synpred225_InternalAlf_fragment() throws RecognitionException {   
        EObject this_NameLeftHandSide_0 = null;


        // InternalAlf.g:10264:2: (this_NameLeftHandSide_0= ruleNameLeftHandSide )
        // InternalAlf.g:10264:2: this_NameLeftHandSide_0= ruleNameLeftHandSide
        {
        if ( state.backtracking==0 ) {
           
          	  /* */ 
          	
        }
        pushFollow(FOLLOW_2);
        this_NameLeftHandSide_0=ruleNameLeftHandSide();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred225_InternalAlf

    // $ANTLR start synpred241_InternalAlf
    public final void synpred241_InternalAlf_fragment() throws RecognitionException {   
        EObject this_LocalNameDeclarationStatement_3 = null;


        // InternalAlf.g:10584:2: (this_LocalNameDeclarationStatement_3= ruleLocalNameDeclarationStatement )
        // InternalAlf.g:10584:2: this_LocalNameDeclarationStatement_3= ruleLocalNameDeclarationStatement
        {
        if ( state.backtracking==0 ) {
           
          	  /* */ 
          	
        }
        pushFollow(FOLLOW_2);
        this_LocalNameDeclarationStatement_3=ruleLocalNameDeclarationStatement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred241_InternalAlf

    // $ANTLR start synpred242_InternalAlf
    public final void synpred242_InternalAlf_fragment() throws RecognitionException {   
        EObject this_ExpressionStatement_4 = null;


        // InternalAlf.g:10597:2: (this_ExpressionStatement_4= ruleExpressionStatement )
        // InternalAlf.g:10597:2: this_ExpressionStatement_4= ruleExpressionStatement
        {
        if ( state.backtracking==0 ) {
           
          	  /* */ 
          	
        }
        pushFollow(FOLLOW_2);
        this_ExpressionStatement_4=ruleExpressionStatement();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred242_InternalAlf

    // $ANTLR start synpred273_InternalAlf
    public final void synpred273_InternalAlf_fragment() throws RecognitionException {   
        Token otherlv_1=null;
        EObject lv_acceptBlock_0_0 = null;


        // InternalAlf.g:12342:2: ( ( ( (lv_acceptBlock_0_0= ruleAcceptClause ) ) otherlv_1= ';' ) )
        // InternalAlf.g:12342:2: ( ( (lv_acceptBlock_0_0= ruleAcceptClause ) ) otherlv_1= ';' )
        {
        // InternalAlf.g:12342:2: ( ( (lv_acceptBlock_0_0= ruleAcceptClause ) ) otherlv_1= ';' )
        // InternalAlf.g:12342:3: ( (lv_acceptBlock_0_0= ruleAcceptClause ) ) otherlv_1= ';'
        {
        // InternalAlf.g:12342:3: ( (lv_acceptBlock_0_0= ruleAcceptClause ) )
        // InternalAlf.g:12343:1: (lv_acceptBlock_0_0= ruleAcceptClause )
        {
        // InternalAlf.g:12343:1: (lv_acceptBlock_0_0= ruleAcceptClause )
        // InternalAlf.g:12344:3: lv_acceptBlock_0_0= ruleAcceptClause
        {
        if ( state.backtracking==0 ) {
           
          	        newCompositeNode(grammarAccess.getAcceptStatementAccess().getAcceptBlockAcceptClauseParserRuleCall_0_0_0()); 
          	    
        }
        pushFollow(FOLLOW_11);
        lv_acceptBlock_0_0=ruleAcceptClause();

        state._fsp--;
        if (state.failed) return ;

        }


        }

        otherlv_1=(Token)match(input,22,FOLLOW_2); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred273_InternalAlf

    // Delegated rules

    public final boolean synpred157_InternalAlf() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred157_InternalAlf_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred155_InternalAlf() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred155_InternalAlf_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred159_InternalAlf() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred159_InternalAlf_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred137_InternalAlf() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred137_InternalAlf_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred144_InternalAlf() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred144_InternalAlf_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred133_InternalAlf() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred133_InternalAlf_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred158_InternalAlf() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred158_InternalAlf_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred134_InternalAlf() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred134_InternalAlf_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred145_InternalAlf() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred145_InternalAlf_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred156_InternalAlf() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred156_InternalAlf_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred241_InternalAlf() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred241_InternalAlf_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred273_InternalAlf() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred273_InternalAlf_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred119_InternalAlf() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred119_InternalAlf_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred139_InternalAlf() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred139_InternalAlf_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred138_InternalAlf() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred138_InternalAlf_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred242_InternalAlf() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred242_InternalAlf_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred225_InternalAlf() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred225_InternalAlf_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred192_InternalAlf() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred192_InternalAlf_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred182_InternalAlf() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred182_InternalAlf_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred160_InternalAlf() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred160_InternalAlf_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred172_InternalAlf() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred172_InternalAlf_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred193_InternalAlf() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred193_InternalAlf_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred12_InternalAlf() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred12_InternalAlf_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred143_InternalAlf() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred143_InternalAlf_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred175_InternalAlf() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred175_InternalAlf_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }


    protected DFA104 dfa104 = new DFA104(this);
    protected DFA122 dfa122 = new DFA122(this);
    protected DFA126 dfa126 = new DFA126(this);
    protected DFA129 dfa129 = new DFA129(this);
    protected DFA130 dfa130 = new DFA130(this);
    protected DFA142 dfa142 = new DFA142(this);
    protected DFA149 dfa149 = new DFA149(this);
    protected DFA158 dfa158 = new DFA158(this);
    protected DFA184 dfa184 = new DFA184(this);
    static final String dfa_1s = "\12\uffff";
    static final String dfa_2s = "\1\4\11\uffff";
    static final String dfa_3s = "\1\21\1\uffff\7\0\1\uffff";
    static final String dfa_4s = "\1\72\1\uffff\7\0\1\uffff";
    static final String dfa_5s = "\1\uffff\1\1\7\uffff\1\2";
    static final String dfa_6s = "\2\uffff\1\3\1\2\1\4\1\6\1\1\1\5\1\0\1\uffff}>";
    static final String[] dfa_7s = {
            "\1\3\1\2\3\uffff\1\6\10\uffff\1\5\21\uffff\1\10\2\uffff\1\1\2\uffff\3\1\1\7",
            "",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            ""
    };

    static final short[] dfa_1 = DFA.unpackEncodedString(dfa_1s);
    static final short[] dfa_2 = DFA.unpackEncodedString(dfa_2s);
    static final char[] dfa_3 = DFA.unpackEncodedStringToUnsignedChars(dfa_3s);
    static final char[] dfa_4 = DFA.unpackEncodedStringToUnsignedChars(dfa_4s);
    static final short[] dfa_5 = DFA.unpackEncodedString(dfa_5s);
    static final short[] dfa_6 = DFA.unpackEncodedString(dfa_6s);
    static final short[][] dfa_7 = unpackEncodedStringArray(dfa_7s);

    class DFA104 extends DFA {

        public DFA104(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 104;
            this.eot = dfa_1;
            this.eof = dfa_2;
            this.min = dfa_3;
            this.max = dfa_4;
            this.accept = dfa_5;
            this.special = dfa_6;
            this.transition = dfa_7;
        }
        public String getDescription() {
            return "4626:3: ( (otherlv_2= '[' ( ( (lv_isMultiplicity_3_0= ']' ) ) | ( ( ( (lv_lowerBound_4_0= RULE_NATURAL_VALUE ) ) otherlv_5= '..' )? ( (lv_upperBound_6_0= ruleUnlimitedNaturalLiteral ) ) otherlv_7= ']' ) ) )? ( ( ( (lv_isOrdered_8_0= 'ordered' ) ) ( (lv_isNonunique_9_0= 'nonunique' ) )? ) | ( ( (lv_isNonunique_10_0= 'nonunique' ) ) ( (lv_isOrdered_11_0= 'ordered' ) )? ) | ( (lv_isSequence_12_0= 'sequence' ) ) )? )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA104_8 = input.LA(1);

                         
                        int index104_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred119_InternalAlf()) ) {s = 1;}

                        else if ( (true) ) {s = 9;}

                         
                        input.seek(index104_8);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA104_6 = input.LA(1);

                         
                        int index104_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred119_InternalAlf()) ) {s = 1;}

                        else if ( (true) ) {s = 9;}

                         
                        input.seek(index104_6);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA104_3 = input.LA(1);

                         
                        int index104_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred119_InternalAlf()) ) {s = 1;}

                        else if ( (true) ) {s = 9;}

                         
                        input.seek(index104_3);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA104_2 = input.LA(1);

                         
                        int index104_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred119_InternalAlf()) ) {s = 1;}

                        else if ( (true) ) {s = 9;}

                         
                        input.seek(index104_2);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA104_4 = input.LA(1);

                         
                        int index104_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred119_InternalAlf()) ) {s = 1;}

                        else if ( (true) ) {s = 9;}

                         
                        input.seek(index104_4);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA104_7 = input.LA(1);

                         
                        int index104_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred119_InternalAlf()) ) {s = 1;}

                        else if ( (true) ) {s = 9;}

                         
                        input.seek(index104_7);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA104_5 = input.LA(1);

                         
                        int index104_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred119_InternalAlf()) ) {s = 1;}

                        else if ( (true) ) {s = 9;}

                         
                        input.seek(index104_5);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 104, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String dfa_8s = "\116\uffff";
    static final String dfa_9s = "\1\2\115\uffff";
    static final String dfa_10s = "\1\10\1\0\114\uffff";
    static final String dfa_11s = "\1\167\1\0\114\uffff";
    static final String dfa_12s = "\2\uffff\1\2\112\uffff\1\1";
    static final String dfa_13s = "\1\uffff\1\0\114\uffff}>";
    static final String[] dfa_14s = {
            "\2\2\5\uffff\4\2\1\uffff\1\2\1\uffff\1\2\1\uffff\11\2\1\uffff\2\2\1\1\2\2\1\uffff\12\2\2\uffff\11\2\11\uffff\2\2\2\uffff\2\2\1\uffff\34\2\15\uffff\2\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] dfa_8 = DFA.unpackEncodedString(dfa_8s);
    static final short[] dfa_9 = DFA.unpackEncodedString(dfa_9s);
    static final char[] dfa_10 = DFA.unpackEncodedStringToUnsignedChars(dfa_10s);
    static final char[] dfa_11 = DFA.unpackEncodedStringToUnsignedChars(dfa_11s);
    static final short[] dfa_12 = DFA.unpackEncodedString(dfa_12s);
    static final short[] dfa_13 = DFA.unpackEncodedString(dfa_13s);
    static final short[][] dfa_14 = unpackEncodedStringArray(dfa_14s);

    class DFA122 extends DFA {

        public DFA122(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 122;
            this.eot = dfa_8;
            this.eof = dfa_9;
            this.min = dfa_10;
            this.max = dfa_11;
            this.accept = dfa_12;
            this.special = dfa_13;
            this.transition = dfa_14;
        }
        public String getDescription() {
            return "5538:2: ( (lv_binding_1_0= ruleTemplateBinding ) )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA122_1 = input.LA(1);

                         
                        int index122_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred139_InternalAlf()) ) {s = 77;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index122_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 122, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String dfa_15s = "\25\uffff";
    static final String dfa_16s = "\1\5\14\0\10\uffff";
    static final String dfa_17s = "\1\114\14\0\10\uffff";
    static final String dfa_18s = "\15\uffff\1\2\6\uffff\1\1";
    static final String dfa_19s = "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\10\uffff}>";
    static final String[] dfa_20s = {
            "\1\3\1\4\1\6\1\1\1\2\6\uffff\1\14\3\uffff\1\5\36\uffff\1\12\12\uffff\1\7\1\10\1\11\4\uffff\1\13\7\15",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] dfa_15 = DFA.unpackEncodedString(dfa_15s);
    static final char[] dfa_16 = DFA.unpackEncodedStringToUnsignedChars(dfa_16s);
    static final char[] dfa_17 = DFA.unpackEncodedStringToUnsignedChars(dfa_17s);
    static final short[] dfa_18 = DFA.unpackEncodedString(dfa_18s);
    static final short[] dfa_19 = DFA.unpackEncodedString(dfa_19s);
    static final short[][] dfa_20 = unpackEncodedStringArray(dfa_20s);

    class DFA126 extends DFA {

        public DFA126(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 126;
            this.eot = dfa_15;
            this.eof = dfa_15;
            this.min = dfa_16;
            this.max = dfa_17;
            this.accept = dfa_18;
            this.special = dfa_19;
            this.transition = dfa_20;
        }
        public String getDescription() {
            return "5814:1: (this_AssignmentExpression_0= ruleAssignmentExpression | this_ConditionalExpression_1= ruleConditionalExpression )";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA126_1 = input.LA(1);

                         
                        int index126_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred143_InternalAlf()) ) {s = 20;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index126_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA126_2 = input.LA(1);

                         
                        int index126_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred143_InternalAlf()) ) {s = 20;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index126_2);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA126_3 = input.LA(1);

                         
                        int index126_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred143_InternalAlf()) ) {s = 20;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index126_3);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA126_4 = input.LA(1);

                         
                        int index126_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred143_InternalAlf()) ) {s = 20;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index126_4);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA126_5 = input.LA(1);

                         
                        int index126_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred143_InternalAlf()) ) {s = 20;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index126_5);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA126_6 = input.LA(1);

                         
                        int index126_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred143_InternalAlf()) ) {s = 20;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index126_6);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA126_7 = input.LA(1);

                         
                        int index126_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred143_InternalAlf()) ) {s = 20;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index126_7);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA126_8 = input.LA(1);

                         
                        int index126_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred143_InternalAlf()) ) {s = 20;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index126_8);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA126_9 = input.LA(1);

                         
                        int index126_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred143_InternalAlf()) ) {s = 20;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index126_9);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA126_10 = input.LA(1);

                         
                        int index126_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred143_InternalAlf()) ) {s = 20;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index126_10);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA126_11 = input.LA(1);

                         
                        int index126_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred143_InternalAlf()) ) {s = 20;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index126_11);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA126_12 = input.LA(1);

                         
                        int index126_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred143_InternalAlf()) ) {s = 20;}

                        else if ( (true) ) {s = 13;}

                         
                        input.seek(index126_12);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 126, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String dfa_21s = "\64\uffff";
    static final String dfa_22s = "\1\1\63\uffff";
    static final String dfa_23s = "\1\21\56\uffff\1\0\4\uffff";
    static final String dfa_24s = "\1\167\56\uffff\1\0\4\uffff";
    static final String dfa_25s = "\1\uffff\1\5\56\uffff\1\3\1\4\1\1\1\2";
    static final String dfa_26s = "\57\uffff\1\0\4\uffff}>";
    static final String[] dfa_27s = {
            "\2\1\1\uffff\1\1\1\uffff\1\1\3\uffff\1\57\5\uffff\1\1\3\uffff\2\1\7\uffff\1\1\3\uffff\1\1\2\uffff\1\61\2\1\5\uffff\1\60\11\uffff\2\1\2\uffff\2\1\1\uffff\34\1\15\uffff\2\1",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\uffff",
            "",
            "",
            "",
            ""
    };

    static final short[] dfa_21 = DFA.unpackEncodedString(dfa_21s);
    static final short[] dfa_22 = DFA.unpackEncodedString(dfa_22s);
    static final char[] dfa_23 = DFA.unpackEncodedStringToUnsignedChars(dfa_23s);
    static final char[] dfa_24 = DFA.unpackEncodedStringToUnsignedChars(dfa_24s);
    static final short[] dfa_25 = DFA.unpackEncodedString(dfa_25s);
    static final short[] dfa_26 = DFA.unpackEncodedString(dfa_26s);
    static final short[][] dfa_27 = unpackEncodedStringArray(dfa_27s);

    class DFA129 extends DFA {

        public DFA129(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 129;
            this.eot = dfa_21;
            this.eof = dfa_22;
            this.min = dfa_23;
            this.max = dfa_24;
            this.accept = dfa_25;
            this.special = dfa_26;
            this.transition = dfa_27;
        }
        public String getDescription() {
            return "()* loopback of 5872:1: ( ( () otherlv_2= '.' ( (lv_nameBinding_3_0= ruleNameBinding ) ) () ( (lv_tuple_5_0= ruleTuple ) ) ) | ( () otherlv_7= '.' ( (lv_nameBinding_8_0= ruleNameBinding ) ) () ) | ( () otherlv_11= '->' ( ( () ( (lv_operation_13_0= ruleQualifiedName ) ) ( (lv_tuple_14_0= ruleTuple ) ) ) | ( () otherlv_16= 'reduce' ( (lv_isOrdered_17_0= 'ordered' ) )? ( (lv_behaviorName_18_0= ruleQualifiedName ) ) ) | ( () ( (lv_operation_20_0= RULE_ID ) ) ( (lv_variable_21_0= ruleName ) ) otherlv_22= '(' ( (lv_argument_23_0= ruleExpression ) ) otherlv_24= ')' ) ) ) | ( () ( (lv_index_26_0= ruleIndex ) ) ) )*";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA129_47 = input.LA(1);

                         
                        int index129_47 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred144_InternalAlf()) ) {s = 50;}

                        else if ( (synpred145_InternalAlf()) ) {s = 51;}

                         
                        input.seek(index129_47);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 129, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String dfa_28s = "\22\uffff";
    static final String dfa_29s = "\1\5\7\uffff\2\0\10\uffff";
    static final String dfa_30s = "\1\105\7\uffff\2\0\10\uffff";
    static final String dfa_31s = "\1\uffff\1\1\3\uffff\1\2\1\3\1\4\2\uffff\1\7\1\uffff\1\13\1\5\1\6\1\10\1\11\1\12";
    static final String dfa_32s = "\10\uffff\1\0\1\1\10\uffff}>";
    static final String[] dfa_33s = {
            "\3\1\1\10\1\11\6\uffff\1\14\3\uffff\1\1\36\uffff\1\12\12\uffff\1\5\1\6\1\7\4\uffff\1\12",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] dfa_28 = DFA.unpackEncodedString(dfa_28s);
    static final char[] dfa_29 = DFA.unpackEncodedStringToUnsignedChars(dfa_29s);
    static final char[] dfa_30 = DFA.unpackEncodedStringToUnsignedChars(dfa_30s);
    static final short[] dfa_31 = DFA.unpackEncodedString(dfa_31s);
    static final short[] dfa_32 = DFA.unpackEncodedString(dfa_32s);
    static final short[][] dfa_33 = unpackEncodedStringArray(dfa_33s);

    class DFA130 extends DFA {

        public DFA130(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 130;
            this.eot = dfa_28;
            this.eof = dfa_28;
            this.min = dfa_29;
            this.max = dfa_30;
            this.accept = dfa_31;
            this.special = dfa_32;
            this.transition = dfa_33;
        }
        public String getDescription() {
            return "6198:1: (this_LiteralExpression_0= ruleLiteralExpression | this_ThisExpression_1= ruleThisExpression | this_SuperInvocationExpression_2= ruleSuperInvocationExpression | this_InstanceCreationOrSequenceConstructionExpression_3= ruleInstanceCreationOrSequenceConstructionExpression | this_ClassExtentExpression_4= ruleClassExtentExpression | this_LinkOperationExpression_5= ruleLinkOperationExpression | this_SequenceConstructionExpression_6= ruleSequenceConstructionExpression | this_SequenceOperationOrReductionOrExpansionExpression_7= ruleSequenceOperationOrReductionOrExpansionExpression | this_BehaviorInvocationExpression_8= ruleBehaviorInvocationExpression | this_NameExpression_9= ruleNameExpression | this_ParenthesizedExpression_10= ruleParenthesizedExpression )";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA130_8 = input.LA(1);

                         
                        int index130_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred155_InternalAlf()) ) {s = 13;}

                        else if ( (synpred156_InternalAlf()) ) {s = 14;}

                        else if ( (synpred157_InternalAlf()) ) {s = 10;}

                        else if ( (synpred158_InternalAlf()) ) {s = 15;}

                        else if ( (synpred159_InternalAlf()) ) {s = 16;}

                        else if ( (synpred160_InternalAlf()) ) {s = 17;}

                         
                        input.seek(index130_8);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA130_9 = input.LA(1);

                         
                        int index130_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred155_InternalAlf()) ) {s = 13;}

                        else if ( (synpred156_InternalAlf()) ) {s = 14;}

                        else if ( (synpred157_InternalAlf()) ) {s = 10;}

                        else if ( (synpred158_InternalAlf()) ) {s = 15;}

                        else if ( (synpred159_InternalAlf()) ) {s = 16;}

                        else if ( (synpred160_InternalAlf()) ) {s = 17;}

                         
                        input.seek(index130_9);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 130, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String dfa_34s = "\26\uffff";
    static final String dfa_35s = "\1\5\2\0\23\uffff";
    static final String dfa_36s = "\1\114\2\0\23\uffff";
    static final String dfa_37s = "\3\uffff\1\2\21\uffff\1\1";
    static final String dfa_38s = "\1\uffff\1\0\1\1\23\uffff}>";
    static final String[] dfa_39s = {
            "\3\3\1\1\1\2\6\uffff\2\3\2\uffff\1\3\36\uffff\1\3\12\uffff\3\3\4\uffff\10\3",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] dfa_34 = DFA.unpackEncodedString(dfa_34s);
    static final char[] dfa_35 = DFA.unpackEncodedStringToUnsignedChars(dfa_35s);
    static final char[] dfa_36 = DFA.unpackEncodedStringToUnsignedChars(dfa_36s);
    static final short[] dfa_37 = DFA.unpackEncodedString(dfa_37s);
    static final short[] dfa_38 = DFA.unpackEncodedString(dfa_38s);
    static final short[][] dfa_39 = unpackEncodedStringArray(dfa_39s);

    class DFA142 extends DFA {

        public DFA142(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 142;
            this.eot = dfa_34;
            this.eof = dfa_34;
            this.min = dfa_35;
            this.max = dfa_36;
            this.accept = dfa_37;
            this.special = dfa_38;
            this.transition = dfa_39;
        }
        public String getDescription() {
            return "7364:1: (this_IndexedNamedTupleExpressionList_1= ruleIndexedNamedTupleExpressionList | this_PositionalTupleExpressionList_2= rulePositionalTupleExpressionList )";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA142_1 = input.LA(1);

                         
                        int index142_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred175_InternalAlf()) ) {s = 21;}

                        else if ( (true) ) {s = 3;}

                         
                        input.seek(index142_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA142_2 = input.LA(1);

                         
                        int index142_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred175_InternalAlf()) ) {s = 21;}

                        else if ( (true) ) {s = 3;}

                         
                        input.seek(index142_2);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 142, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String dfa_40s = "\1\5\23\0\2\uffff";
    static final String dfa_41s = "\1\114\23\0\2\uffff";
    static final String dfa_42s = "\24\uffff\1\2\1\1";
    static final String dfa_43s = "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17\1\20\1\21\1\22\2\uffff}>";
    static final String[] dfa_44s = {
            "\1\3\1\4\1\6\1\1\1\2\6\uffff\1\14\3\uffff\1\5\12\uffff\1\24\23\uffff\1\12\12\uffff\1\7\1\10\1\11\4\uffff\1\13\1\15\1\16\1\21\1\22\1\17\1\20\1\23",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            ""
    };
    static final char[] dfa_40 = DFA.unpackEncodedStringToUnsignedChars(dfa_40s);
    static final char[] dfa_41 = DFA.unpackEncodedStringToUnsignedChars(dfa_41s);
    static final short[] dfa_42 = DFA.unpackEncodedString(dfa_42s);
    static final short[] dfa_43 = DFA.unpackEncodedString(dfa_43s);
    static final short[][] dfa_44 = unpackEncodedStringArray(dfa_44s);

    class DFA149 extends DFA {

        public DFA149(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 149;
            this.eot = dfa_34;
            this.eof = dfa_34;
            this.min = dfa_40;
            this.max = dfa_41;
            this.accept = dfa_42;
            this.special = dfa_43;
            this.transition = dfa_44;
        }
        public String getDescription() {
            return "7757:1: (this_SequenceRange_0= ruleSequenceRange | this_SequenceExpressionList_1= ruleSequenceExpressionList )";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA149_1 = input.LA(1);

                         
                        int index149_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred182_InternalAlf()) ) {s = 21;}

                        else if ( (true) ) {s = 20;}

                         
                        input.seek(index149_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA149_2 = input.LA(1);

                         
                        int index149_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred182_InternalAlf()) ) {s = 21;}

                        else if ( (true) ) {s = 20;}

                         
                        input.seek(index149_2);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA149_3 = input.LA(1);

                         
                        int index149_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred182_InternalAlf()) ) {s = 21;}

                        else if ( (true) ) {s = 20;}

                         
                        input.seek(index149_3);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA149_4 = input.LA(1);

                         
                        int index149_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred182_InternalAlf()) ) {s = 21;}

                        else if ( (true) ) {s = 20;}

                         
                        input.seek(index149_4);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA149_5 = input.LA(1);

                         
                        int index149_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred182_InternalAlf()) ) {s = 21;}

                        else if ( (true) ) {s = 20;}

                         
                        input.seek(index149_5);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA149_6 = input.LA(1);

                         
                        int index149_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred182_InternalAlf()) ) {s = 21;}

                        else if ( (true) ) {s = 20;}

                         
                        input.seek(index149_6);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA149_7 = input.LA(1);

                         
                        int index149_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred182_InternalAlf()) ) {s = 21;}

                        else if ( (true) ) {s = 20;}

                         
                        input.seek(index149_7);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA149_8 = input.LA(1);

                         
                        int index149_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred182_InternalAlf()) ) {s = 21;}

                        else if ( (true) ) {s = 20;}

                         
                        input.seek(index149_8);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA149_9 = input.LA(1);

                         
                        int index149_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred182_InternalAlf()) ) {s = 21;}

                        else if ( (true) ) {s = 20;}

                         
                        input.seek(index149_9);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA149_10 = input.LA(1);

                         
                        int index149_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred182_InternalAlf()) ) {s = 21;}

                        else if ( (true) ) {s = 20;}

                         
                        input.seek(index149_10);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA149_11 = input.LA(1);

                         
                        int index149_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred182_InternalAlf()) ) {s = 21;}

                        else if ( (true) ) {s = 20;}

                         
                        input.seek(index149_11);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA149_12 = input.LA(1);

                         
                        int index149_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred182_InternalAlf()) ) {s = 21;}

                        else if ( (true) ) {s = 20;}

                         
                        input.seek(index149_12);
                        if ( s>=0 ) return s;
                        break;
                    case 12 : 
                        int LA149_13 = input.LA(1);

                         
                        int index149_13 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred182_InternalAlf()) ) {s = 21;}

                        else if ( (true) ) {s = 20;}

                         
                        input.seek(index149_13);
                        if ( s>=0 ) return s;
                        break;
                    case 13 : 
                        int LA149_14 = input.LA(1);

                         
                        int index149_14 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred182_InternalAlf()) ) {s = 21;}

                        else if ( (true) ) {s = 20;}

                         
                        input.seek(index149_14);
                        if ( s>=0 ) return s;
                        break;
                    case 14 : 
                        int LA149_15 = input.LA(1);

                         
                        int index149_15 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred182_InternalAlf()) ) {s = 21;}

                        else if ( (true) ) {s = 20;}

                         
                        input.seek(index149_15);
                        if ( s>=0 ) return s;
                        break;
                    case 15 : 
                        int LA149_16 = input.LA(1);

                         
                        int index149_16 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred182_InternalAlf()) ) {s = 21;}

                        else if ( (true) ) {s = 20;}

                         
                        input.seek(index149_16);
                        if ( s>=0 ) return s;
                        break;
                    case 16 : 
                        int LA149_17 = input.LA(1);

                         
                        int index149_17 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred182_InternalAlf()) ) {s = 21;}

                        else if ( (true) ) {s = 20;}

                         
                        input.seek(index149_17);
                        if ( s>=0 ) return s;
                        break;
                    case 17 : 
                        int LA149_18 = input.LA(1);

                         
                        int index149_18 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred182_InternalAlf()) ) {s = 21;}

                        else if ( (true) ) {s = 20;}

                         
                        input.seek(index149_18);
                        if ( s>=0 ) return s;
                        break;
                    case 18 : 
                        int LA149_19 = input.LA(1);

                         
                        int index149_19 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred182_InternalAlf()) ) {s = 21;}

                        else if ( (true) ) {s = 20;}

                         
                        input.seek(index149_19);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 149, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String dfa_45s = "\20\uffff";
    static final String dfa_46s = "\1\5\14\0\3\uffff";
    static final String dfa_47s = "\1\105\14\0\3\uffff";
    static final String dfa_48s = "\15\uffff\1\1\1\3\1\2";
    static final String dfa_49s = "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\3\uffff}>";
    static final String[] dfa_50s = {
            "\1\3\1\4\1\6\1\1\1\2\6\uffff\1\14\3\uffff\1\5\36\uffff\1\12\12\uffff\1\7\1\10\1\11\4\uffff\1\13",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            ""
    };

    static final short[] dfa_45 = DFA.unpackEncodedString(dfa_45s);
    static final char[] dfa_46 = DFA.unpackEncodedStringToUnsignedChars(dfa_46s);
    static final char[] dfa_47 = DFA.unpackEncodedStringToUnsignedChars(dfa_47s);
    static final short[] dfa_48 = DFA.unpackEncodedString(dfa_48s);
    static final short[] dfa_49 = DFA.unpackEncodedString(dfa_49s);
    static final short[][] dfa_50 = unpackEncodedStringArray(dfa_50s);

    class DFA158 extends DFA {

        public DFA158(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 158;
            this.eot = dfa_45;
            this.eof = dfa_45;
            this.min = dfa_46;
            this.max = dfa_47;
            this.accept = dfa_48;
            this.special = dfa_49;
            this.transition = dfa_50;
        }
        public String getDescription() {
            return "8420:1: (this_PostfixExpression_0= rulePostfixExpression | this_CastExpression_1= ruleCastExpression | this_PrimaryExpression_2= rulePrimaryExpression )";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA158_1 = input.LA(1);

                         
                        int index158_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred192_InternalAlf()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index158_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA158_2 = input.LA(1);

                         
                        int index158_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred192_InternalAlf()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index158_2);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA158_3 = input.LA(1);

                         
                        int index158_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred192_InternalAlf()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index158_3);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA158_4 = input.LA(1);

                         
                        int index158_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred192_InternalAlf()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index158_4);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA158_5 = input.LA(1);

                         
                        int index158_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred192_InternalAlf()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index158_5);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA158_6 = input.LA(1);

                         
                        int index158_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred192_InternalAlf()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index158_6);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA158_7 = input.LA(1);

                         
                        int index158_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred192_InternalAlf()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index158_7);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA158_8 = input.LA(1);

                         
                        int index158_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred192_InternalAlf()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index158_8);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA158_9 = input.LA(1);

                         
                        int index158_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred192_InternalAlf()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index158_9);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA158_10 = input.LA(1);

                         
                        int index158_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred192_InternalAlf()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index158_10);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA158_11 = input.LA(1);

                         
                        int index158_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred192_InternalAlf()) ) {s = 13;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index158_11);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA158_12 = input.LA(1);

                         
                        int index158_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred192_InternalAlf()) ) {s = 13;}

                        else if ( (synpred193_InternalAlf()) ) {s = 15;}

                        else if ( (true) ) {s = 14;}

                         
                        input.seek(index158_12);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 158, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String dfa_51s = "\41\uffff";
    static final String dfa_52s = "\1\5\4\uffff\3\0\31\uffff";
    static final String dfa_53s = "\1\165\4\uffff\3\0\31\uffff";
    static final String dfa_54s = "\1\uffff\1\1\1\2\1\3\1\4\3\uffff\1\5\17\uffff\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16";
    static final String dfa_55s = "\5\uffff\1\0\1\1\1\2\31\uffff}>";
    static final String[] dfa_56s = {
            "\3\10\1\6\1\7\1\uffff\1\1\4\uffff\1\10\3\uffff\1\10\1\uffff\1\3\10\uffff\1\2\7\uffff\1\34\13\uffff\1\5\12\uffff\3\10\4\uffff\10\10\34\uffff\1\4\1\30\2\uffff\1\31\2\uffff\1\32\1\33\1\35\1\36\1\37\1\40",
            "",
            "",
            "",
            "",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] dfa_51 = DFA.unpackEncodedString(dfa_51s);
    static final char[] dfa_52 = DFA.unpackEncodedStringToUnsignedChars(dfa_52s);
    static final char[] dfa_53 = DFA.unpackEncodedStringToUnsignedChars(dfa_53s);
    static final short[] dfa_54 = DFA.unpackEncodedString(dfa_54s);
    static final short[] dfa_55 = DFA.unpackEncodedString(dfa_55s);
    static final short[][] dfa_56 = unpackEncodedStringArray(dfa_56s);

    class DFA184 extends DFA {

        public DFA184(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 184;
            this.eot = dfa_51;
            this.eof = dfa_51;
            this.min = dfa_52;
            this.max = dfa_53;
            this.accept = dfa_54;
            this.special = dfa_55;
            this.transition = dfa_56;
        }
        public String getDescription() {
            return "10544:1: (this_InLineStatement_0= ruleInLineStatement | this_BlockStatement_1= ruleBlockStatement | this_EmptyStatement_2= ruleEmptyStatement | this_LocalNameDeclarationStatement_3= ruleLocalNameDeclarationStatement | this_ExpressionStatement_4= ruleExpressionStatement | this_IfStatement_5= ruleIfStatement | this_SwitchStatement_6= ruleSwitchStatement | this_WhileStatement_7= ruleWhileStatement | this_ForStatement_8= ruleForStatement | this_DoStatement_9= ruleDoStatement | this_BreakStatement_10= ruleBreakStatement | this_ReturnStatement_11= ruleReturnStatement | this_AcceptStatement_12= ruleAcceptStatement | this_ClassifyStatement_13= ruleClassifyStatement )";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA184_5 = input.LA(1);

                         
                        int index184_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred241_InternalAlf()) ) {s = 4;}

                        else if ( (synpred242_InternalAlf()) ) {s = 8;}

                         
                        input.seek(index184_5);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA184_6 = input.LA(1);

                         
                        int index184_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred241_InternalAlf()) ) {s = 4;}

                        else if ( (synpred242_InternalAlf()) ) {s = 8;}

                         
                        input.seek(index184_6);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA184_7 = input.LA(1);

                         
                        int index184_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred241_InternalAlf()) ) {s = 4;}

                        else if ( (synpred242_InternalAlf()) ) {s = 8;}

                         
                        input.seek(index184_7);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 184, _s, input);
            error(nvae);
            throw nvae;
        }
    }
 

    public static final BitSet FOLLOW_1 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_2 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x00001F4C58008010L});
    public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000000300L});
    public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000010002L});
    public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x00000000001000E0L,0x0000000000000C00L});
    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000001000002L});
    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000006000000L});
    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000000118008010L});
    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000080400000L});
    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000018008000L});
    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0000000200000002L});
    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000800000000L});
    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000001200000002L});
    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000000000000310L});
    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000002000040000L});
    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x00001F4D78008310L});
    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x00001F4C78008310L});
    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000004000000000L});
    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x08001F4D78008310L});
    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000008000000002L});
    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000000080000300L});
    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x08001F4C78008310L});
    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000010000000000L});
    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000000108008310L});
    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000000008008310L});
    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0000020000000000L});
    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000000100000310L});
    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000000100040000L});
    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0000080000000000L});
    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000001000010000L});
    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0001C00000028010L});
    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000000000060000L});
    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0001C00000008010L});
    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0000200000000002L});
    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000200000000000L});
    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0008000000000300L});
    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0002000000400000L});
    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0xC0080000801103E0L,0x0000000000001FE1L});
    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x000C000000000300L});
    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0390000000000002L});
    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x0020000000100040L});
    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x0380000000000002L});
    public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x0040000000000000L});
    public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x0020000000000000L});
    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x0100000000000002L});
    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x0080000000000002L});
    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x0400200000000002L});
    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x0400000000000002L});
    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x0000000006000002L});
    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x0000000004000002L});
    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x0000001000000002L});
    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x0000002000000000L});
    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x1010000004000002L});
    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x2000000000000300L});
    public static final BitSet FOLLOW_68 = new BitSet(new long[]{0x0080000000000300L});
    public static final BitSet FOLLOW_69 = new BitSet(new long[]{0xC0080000001103E0L,0x0000000000001FE1L});
    public static final BitSet FOLLOW_70 = new BitSet(new long[]{0xC0080000001303E0L,0x0000000000001FE1L});
    public static final BitSet FOLLOW_71 = new BitSet(new long[]{0x0000000004010000L});
    public static final BitSet FOLLOW_72 = new BitSet(new long[]{0x0010000080000000L});
    public static final BitSet FOLLOW_73 = new BitSet(new long[]{0xC0080001801103E0L,0x0000000000001FE1L});
    public static final BitSet FOLLOW_74 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x0000000000000000L,0x000000000000000EL});
    public static final BitSet FOLLOW_76 = new BitSet(new long[]{0x1010000004080000L});
    public static final BitSet FOLLOW_77 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x1000000000000000L});
    public static final BitSet FOLLOW_79 = new BitSet(new long[]{0xC0080000001103E0L,0x0000000000000021L});
    public static final BitSet FOLLOW_80 = new BitSet(new long[]{0x0000000000000000L,0x00000000000000C0L});
    public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x0000000000100002L,0x0000000000006000L});
    public static final BitSet FOLLOW_82 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000C00L});
    public static final BitSet FOLLOW_83 = new BitSet(new long[]{0x0000000000000002L,0x0000000000038000L});
    public static final BitSet FOLLOW_84 = new BitSet(new long[]{0x0000003000000002L,0x00000000000C0000L});
    public static final BitSet FOLLOW_85 = new BitSet(new long[]{0x0000000000000002L,0x0000000000300000L});
    public static final BitSet FOLLOW_86 = new BitSet(new long[]{0x0000000000000002L,0x0000000000C00000L});
    public static final BitSet FOLLOW_87 = new BitSet(new long[]{0x0000000000000002L,0x0000000001000000L});
    public static final BitSet FOLLOW_88 = new BitSet(new long[]{0x0000000000000002L,0x0000000002000000L});
    public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x0000000000000002L,0x0000000004000000L});
    public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x0000000000000002L,0x0000000008000000L});
    public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x0000000000000002L,0x0000000010000000L});
    public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x0000000000000002L,0x0000000020000000L});
    public static final BitSet FOLLOW_93 = new BitSet(new long[]{0x0002000000000000L,0x000001FFC0000000L});
    public static final BitSet FOLLOW_94 = new BitSet(new long[]{0xC008008180510FF0L,0x003F260000001FE1L});
    public static final BitSet FOLLOW_95 = new BitSet(new long[]{0xC008008080510FF0L,0x003F260000001FE1L});
    public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x0012000000000000L});
    public static final BitSet FOLLOW_97 = new BitSet(new long[]{0x0002000000000000L});
    public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x0010000000000300L});
    public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0000000000000002L,0x0000080000000000L});
    public static final BitSet FOLLOW_100 = new BitSet(new long[]{0x0000000000000000L,0x0000040000000000L});
    public static final BitSet FOLLOW_101 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
    public static final BitSet FOLLOW_102 = new BitSet(new long[]{0x0000000100000000L,0x0000C00000000000L});
    public static final BitSet FOLLOW_103 = new BitSet(new long[]{0xC008008080510FF0L,0x003F660000001FE1L});
    public static final BitSet FOLLOW_104 = new BitSet(new long[]{0xC008008080510FF2L,0x003F260000001FE1L});
    public static final BitSet FOLLOW_105 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
    public static final BitSet FOLLOW_106 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_107 = new BitSet(new long[]{0x0040000000000002L});
    public static final BitSet FOLLOW_108 = new BitSet(new long[]{0xC0080000005103E0L,0x0000000000001FE1L});
    public static final BitSet FOLLOW_109 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
    public static final BitSet FOLLOW_110 = new BitSet(new long[]{0x0000000000000000L,0x00C0000000000000L});
    public static final BitSet FOLLOW_111 = new BitSet(new long[]{0x0000000000400000L,0x00C0000000000000L});

}

Back to the top