docs: public final EObject ruleEventMember() throws RecognitionException {
          EObject current = null;
  
          Token lv_modifiers_4_0=null;
          Token otherlv_8=null;
          Token lv_modifiers_12_0=null;
          Token otherlv_14=null;
          Token otherlv_17=null;
          Token otherlv_19=null;
          Token otherlv_21=null;
          Token otherlv_24=null;
          Token otherlv_25=null;
          Token otherlv_27=null;
          Token otherlv_29=null;
          Token otherlv_30=null;
          Token otherlv_32=null;
          Token otherlv_34=null;
          Token otherlv_36=null;
          Token otherlv_38=null;
          Token otherlv_40=null;
          Token otherlv_42=null;
          EObject lv_annotations_1_0 = null;
  
          AntlrDatatypeRuleToken lv_modifiers_3_0 = null;
  
          AntlrDatatypeRuleToken lv_modifiers_5_0 = null;
  
          AntlrDatatypeRuleToken lv_modifiers_6_0 = null;
  
          AntlrDatatypeRuleToken lv_name_7_0 = null;
  
          EObject lv_type_9_0 = null;
  
          AntlrDatatypeRuleToken lv_modifiers_10_0 = null;
  
          AntlrDatatypeRuleToken lv_modifiers_11_0 = null;
  
          AntlrDatatypeRuleToken lv_name_13_0 = null;
  
          EObject lv_type_15_0 = null;
  
          AntlrDatatypeRuleToken lv_name_16_0 = null;
  
          EObject lv_type_18_0 = null;
  
          EObject lv_initialValue_20_0 = null;
  
          AntlrDatatypeRuleToken lv_modifiers_23_0 = null;
  
          EObject lv_typeParameters_26_0 = null;
  
          EObject lv_typeParameters_28_0 = null;
  
          EObject lv_parameters_31_0 = null;
  
          EObject lv_parameters_33_0 = null;
  
          EObject lv_exceptions_37_0 = null;
  
          EObject lv_exceptions_39_0 = null;
  
          EObject lv_typeParameters_41_0 = null;
  
          EObject lv_typeParameters_43_0 = null;
  
          EObject lv_expression_44_0 = null;
  
  
  
          	enterRule();
  
          try {
              // InternalSARL.g:1601:2: ( ( () ( (lv_annotations_1_0= ruleXAnnotation ) )* ( ( () ( (lv_modifiers_3_0= ruleCommonModifier ) )* ( ( ( (lv_modifiers_4_0= 'extension' ) ) ( ( (lv_modifiers_5_0= ruleFieldModifier ) ) | ( (lv_modifiers_6_0= ruleCommonModifier ) ) )* ( (lv_name_7_0= ruleValidID ) ) otherlv_8= ':' ( (lv_type_9_0= ruleJvmTypeReference ) ) ) | ( ( (lv_modifiers_10_0= ruleFieldModifier ) ) ( (lv_modifiers_11_0= ruleCommonModifier ) )* ( ( ( (lv_modifiers_12_0= 'extension' ) ) ( (lv_name_13_0= ruleValidID ) ) otherlv_14= ':' ( (lv_type_15_0= ruleJvmTypeReference ) ) ) | ( ( (lv_name_16_0= ruleValidID ) ) (otherlv_17= ':' ( (lv_type_18_0= ruleJvmTypeReference ) ) )? ) ) ) ) (otherlv_19= '=' ( (lv_initialValue_20_0= ruleXExpression ) ) )? (otherlv_21= ';' )? ) | ( () ( (lv_modifiers_23_0= ruleCommonModifier ) )* otherlv_24= 'new' (otherlv_25= '<' ( (lv_typeParameters_26_0= ruleJvmTypeParameter ) ) (otherlv_27= ',' ( (lv_typeParameters_28_0= ruleJvmTypeParameter ) ) )* otherlv_29= '>' )? (otherlv_30= '(' ( ( (lv_parameters_31_0= ruleParameter ) ) (otherlv_32= ',' ( (lv_parameters_33_0= ruleParameter ) ) )* )? otherlv_34= ')' )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_36= 'throws' ( (lv_exceptions_37_0= ruleJvmTypeReference ) ) (otherlv_38= ',' ( (lv_exceptions_39_0= ruleJvmTypeReference ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_40= 'with' ( (lv_typeParameters_41_0= ruleJvmTypeParameter ) ) (otherlv_42= ',' ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) ) )* ) ) ) ) )* ) ) ) ( (lv_expression_44_0= ruleXBlockExpression ) ) ) ) ) )
              // InternalSARL.g:1602:2: ( () ( (lv_annotations_1_0= ruleXAnnotation ) )* ( ( () ( (lv_modifiers_3_0= ruleCommonModifier ) )* ( ( ( (lv_modifiers_4_0= 'extension' ) ) ( ( (lv_modifiers_5_0= ruleFieldModifier ) ) | ( (lv_modifiers_6_0= ruleCommonModifier ) ) )* ( (lv_name_7_0= ruleValidID ) ) otherlv_8= ':' ( (lv_type_9_0= ruleJvmTypeReference ) ) ) | ( ( (lv_modifiers_10_0= ruleFieldModifier ) ) ( (lv_modifiers_11_0= ruleCommonModifier ) )* ( ( ( (lv_modifiers_12_0= 'extension' ) ) ( (lv_name_13_0= ruleValidID ) ) otherlv_14= ':' ( (lv_type_15_0= ruleJvmTypeReference ) ) ) | ( ( (lv_name_16_0= ruleValidID ) ) (otherlv_17= ':' ( (lv_type_18_0= ruleJvmTypeReference ) ) )? ) ) ) ) (otherlv_19= '=' ( (lv_initialValue_20_0= ruleXExpression ) ) )? (otherlv_21= ';' )? ) | ( () ( (lv_modifiers_23_0= ruleCommonModifier ) )* otherlv_24= 'new' (otherlv_25= '<' ( (lv_typeParameters_26_0= ruleJvmTypeParameter ) ) (otherlv_27= ',' ( (lv_typeParameters_28_0= ruleJvmTypeParameter ) ) )* otherlv_29= '>' )? (otherlv_30= '(' ( ( (lv_parameters_31_0= ruleParameter ) ) (otherlv_32= ',' ( (lv_parameters_33_0= ruleParameter ) ) )* )? otherlv_34= ')' )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_36= 'throws' ( (lv_exceptions_37_0= ruleJvmTypeReference ) ) (otherlv_38= ',' ( (lv_exceptions_39_0= ruleJvmTypeReference ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_40= 'with' ( (lv_typeParameters_41_0= ruleJvmTypeParameter ) ) (otherlv_42= ',' ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) ) )* ) ) ) ) )* ) ) ) ( (lv_expression_44_0= ruleXBlockExpression ) ) ) ) )
              {
              // InternalSARL.g:1602:2: ( () ( (lv_annotations_1_0= ruleXAnnotation ) )* ( ( () ( (lv_modifiers_3_0= ruleCommonModifier ) )* ( ( ( (lv_modifiers_4_0= 'extension' ) ) ( ( (lv_modifiers_5_0= ruleFieldModifier ) ) | ( (lv_modifiers_6_0= ruleCommonModifier ) ) )* ( (lv_name_7_0= ruleValidID ) ) otherlv_8= ':' ( (lv_type_9_0= ruleJvmTypeReference ) ) ) | ( ( (lv_modifiers_10_0= ruleFieldModifier ) ) ( (lv_modifiers_11_0= ruleCommonModifier ) )* ( ( ( (lv_modifiers_12_0= 'extension' ) ) ( (lv_name_13_0= ruleValidID ) ) otherlv_14= ':' ( (lv_type_15_0= ruleJvmTypeReference ) ) ) | ( ( (lv_name_16_0= ruleValidID ) ) (otherlv_17= ':' ( (lv_type_18_0= ruleJvmTypeReference ) ) )? ) ) ) ) (otherlv_19= '=' ( (lv_initialValue_20_0= ruleXExpression ) ) )? (otherlv_21= ';' )? ) | ( () ( (lv_modifiers_23_0= ruleCommonModifier ) )* otherlv_24= 'new' (otherlv_25= '<' ( (lv_typeParameters_26_0= ruleJvmTypeParameter ) ) (otherlv_27= ',' ( (lv_typeParameters_28_0= ruleJvmTypeParameter ) ) )* otherlv_29= '>' )? (otherlv_30= '(' ( ( (lv_parameters_31_0= ruleParameter ) ) (otherlv_32= ',' ( (lv_parameters_33_0= ruleParameter ) ) )* )? otherlv_34= ')' )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_36= 'throws' ( (lv_exceptions_37_0= ruleJvmTypeReference ) ) (otherlv_38= ',' ( (lv_exceptions_39_0= ruleJvmTypeReference ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_40= 'with' ( (lv_typeParameters_41_0= ruleJvmTypeParameter ) ) (otherlv_42= ',' ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) ) )* ) ) ) ) )* ) ) ) ( (lv_expression_44_0= ruleXBlockExpression ) ) ) ) )
              // InternalSARL.g:1603:3: () ( (lv_annotations_1_0= ruleXAnnotation ) )* ( ( () ( (lv_modifiers_3_0= ruleCommonModifier ) )* ( ( ( (lv_modifiers_4_0= 'extension' ) ) ( ( (lv_modifiers_5_0= ruleFieldModifier ) ) | ( (lv_modifiers_6_0= ruleCommonModifier ) ) )* ( (lv_name_7_0= ruleValidID ) ) otherlv_8= ':' ( (lv_type_9_0= ruleJvmTypeReference ) ) ) | ( ( (lv_modifiers_10_0= ruleFieldModifier ) ) ( (lv_modifiers_11_0= ruleCommonModifier ) )* ( ( ( (lv_modifiers_12_0= 'extension' ) ) ( (lv_name_13_0= ruleValidID ) ) otherlv_14= ':' ( (lv_type_15_0= ruleJvmTypeReference ) ) ) | ( ( (lv_name_16_0= ruleValidID ) ) (otherlv_17= ':' ( (lv_type_18_0= ruleJvmTypeReference ) ) )? ) ) ) ) (otherlv_19= '=' ( (lv_initialValue_20_0= ruleXExpression ) ) )? (otherlv_21= ';' )? ) | ( () ( (lv_modifiers_23_0= ruleCommonModifier ) )* otherlv_24= 'new' (otherlv_25= '<' ( (lv_typeParameters_26_0= ruleJvmTypeParameter ) ) (otherlv_27= ',' ( (lv_typeParameters_28_0= ruleJvmTypeParameter ) ) )* otherlv_29= '>' )? (otherlv_30= '(' ( ( (lv_parameters_31_0= ruleParameter ) ) (otherlv_32= ',' ( (lv_parameters_33_0= ruleParameter ) ) )* )? otherlv_34= ')' )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_36= 'throws' ( (lv_exceptions_37_0= ruleJvmTypeReference ) ) (otherlv_38= ',' ( (lv_exceptions_39_0= ruleJvmTypeReference ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_40= 'with' ( (lv_typeParameters_41_0= ruleJvmTypeParameter ) ) (otherlv_42= ',' ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) ) )* ) ) ) ) )* ) ) ) ( (lv_expression_44_0= ruleXBlockExpression ) ) ) )
              {
              // InternalSARL.g:1603:3: ()
              // InternalSARL.g:1604:4: 
              {
              if ( state.backtracking==0 ) {
  
                				current = forceCreateModelElement(
                					grammarAccess.getEventMemberAccess().getXtendMemberAction_0(),
                					current);
                			
              }
  
              }
  
              // InternalSARL.g:1610:3: ( (lv_annotations_1_0= ruleXAnnotation ) )*
              loop45:
              do {
                  int alt45=2;
                  int LA45_0 = input.LA(1);
  
                  if ( (LA45_0==105) ) {
                      alt45=1;
                  }
  
  
                  switch (alt45) {
              	case 1 :
              	    // InternalSARL.g:1611:4: (lv_annotations_1_0= ruleXAnnotation )
              	    {
              	    // InternalSARL.g:1611:4: (lv_annotations_1_0= ruleXAnnotation )
              	    // InternalSARL.g:1612:5: lv_annotations_1_0= ruleXAnnotation
              	    {
              	    if ( state.backtracking==0 ) {
  
              	      					newCompositeNode(grammarAccess.getEventMemberAccess().getAnnotationsXAnnotationParserRuleCall_1_0());
              	      				
              	    }
              	    pushFollow(FOLLOW_37);
              	    lv_annotations_1_0=ruleXAnnotation();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      					if (current==null) {
              	      						current = createModelElementForParent(grammarAccess.getEventMemberRule());
              	      					}
              	      					add(
              	      						current,
              	      						"annotations",
              	      						lv_annotations_1_0,
              	      						"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotation");
              	      					afterParserOrEnumRuleCall();
              	      				
              	    }
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop45;
                  }
              } while (true);
  
              // InternalSARL.g:1629:3: ( ( () ( (lv_modifiers_3_0= ruleCommonModifier ) )* ( ( ( (lv_modifiers_4_0= 'extension' ) ) ( ( (lv_modifiers_5_0= ruleFieldModifier ) ) | ( (lv_modifiers_6_0= ruleCommonModifier ) ) )* ( (lv_name_7_0= ruleValidID ) ) otherlv_8= ':' ( (lv_type_9_0= ruleJvmTypeReference ) ) ) | ( ( (lv_modifiers_10_0= ruleFieldModifier ) ) ( (lv_modifiers_11_0= ruleCommonModifier ) )* ( ( ( (lv_modifiers_12_0= 'extension' ) ) ( (lv_name_13_0= ruleValidID ) ) otherlv_14= ':' ( (lv_type_15_0= ruleJvmTypeReference ) ) ) | ( ( (lv_name_16_0= ruleValidID ) ) (otherlv_17= ':' ( (lv_type_18_0= ruleJvmTypeReference ) ) )? ) ) ) ) (otherlv_19= '=' ( (lv_initialValue_20_0= ruleXExpression ) ) )? (otherlv_21= ';' )? ) | ( () ( (lv_modifiers_23_0= ruleCommonModifier ) )* otherlv_24= 'new' (otherlv_25= '<' ( (lv_typeParameters_26_0= ruleJvmTypeParameter ) ) (otherlv_27= ',' ( (lv_typeParameters_28_0= ruleJvmTypeParameter ) ) )* otherlv_29= '>' )? (otherlv_30= '(' ( ( (lv_parameters_31_0= ruleParameter ) ) (otherlv_32= ',' ( (lv_parameters_33_0= ruleParameter ) ) )* )? otherlv_34= ')' )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_36= 'throws' ( (lv_exceptions_37_0= ruleJvmTypeReference ) ) (otherlv_38= ',' ( (lv_exceptions_39_0= ruleJvmTypeReference ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_40= 'with' ( (lv_typeParameters_41_0= ruleJvmTypeParameter ) ) (otherlv_42= ',' ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) ) )* ) ) ) ) )* ) ) ) ( (lv_expression_44_0= ruleXBlockExpression ) ) ) )
              int alt63=2;
              alt63 = dfa63.predict(input);
              switch (alt63) {
                  case 1 :
                      // InternalSARL.g:1630:4: ( () ( (lv_modifiers_3_0= ruleCommonModifier ) )* ( ( ( (lv_modifiers_4_0= 'extension' ) ) ( ( (lv_modifiers_5_0= ruleFieldModifier ) ) | ( (lv_modifiers_6_0= ruleCommonModifier ) ) )* ( (lv_name_7_0= ruleValidID ) ) otherlv_8= ':' ( (lv_type_9_0= ruleJvmTypeReference ) ) ) | ( ( (lv_modifiers_10_0= ruleFieldModifier ) ) ( (lv_modifiers_11_0= ruleCommonModifier ) )* ( ( ( (lv_modifiers_12_0= 'extension' ) ) ( (lv_name_13_0= ruleValidID ) ) otherlv_14= ':' ( (lv_type_15_0= ruleJvmTypeReference ) ) ) | ( ( (lv_name_16_0= ruleValidID ) ) (otherlv_17= ':' ( (lv_type_18_0= ruleJvmTypeReference ) ) )? ) ) ) ) (otherlv_19= '=' ( (lv_initialValue_20_0= ruleXExpression ) ) )? (otherlv_21= ';' )? )
                      {
                      // InternalSARL.g:1630:4: ( () ( (lv_modifiers_3_0= ruleCommonModifier ) )* ( ( ( (lv_modifiers_4_0= 'extension' ) ) ( ( (lv_modifiers_5_0= ruleFieldModifier ) ) | ( (lv_modifiers_6_0= ruleCommonModifier ) ) )* ( (lv_name_7_0= ruleValidID ) ) otherlv_8= ':' ( (lv_type_9_0= ruleJvmTypeReference ) ) ) | ( ( (lv_modifiers_10_0= ruleFieldModifier ) ) ( (lv_modifiers_11_0= ruleCommonModifier ) )* ( ( ( (lv_modifiers_12_0= 'extension' ) ) ( (lv_name_13_0= ruleValidID ) ) otherlv_14= ':' ( (lv_type_15_0= ruleJvmTypeReference ) ) ) | ( ( (lv_name_16_0= ruleValidID ) ) (otherlv_17= ':' ( (lv_type_18_0= ruleJvmTypeReference ) ) )? ) ) ) ) (otherlv_19= '=' ( (lv_initialValue_20_0= ruleXExpression ) ) )? (otherlv_21= ';' )? )
                      // InternalSARL.g:1631:5: () ( (lv_modifiers_3_0= ruleCommonModifier ) )* ( ( ( (lv_modifiers_4_0= 'extension' ) ) ( ( (lv_modifiers_5_0= ruleFieldModifier ) ) | ( (lv_modifiers_6_0= ruleCommonModifier ) ) )* ( (lv_name_7_0= ruleValidID ) ) otherlv_8= ':' ( (lv_type_9_0= ruleJvmTypeReference ) ) ) | ( ( (lv_modifiers_10_0= ruleFieldModifier ) ) ( (lv_modifiers_11_0= ruleCommonModifier ) )* ( ( ( (lv_modifiers_12_0= 'extension' ) ) ( (lv_name_13_0= ruleValidID ) ) otherlv_14= ':' ( (lv_type_15_0= ruleJvmTypeReference ) ) ) | ( ( (lv_name_16_0= ruleValidID ) ) (otherlv_17= ':' ( (lv_type_18_0= ruleJvmTypeReference ) ) )? ) ) ) ) (otherlv_19= '=' ( (lv_initialValue_20_0= ruleXExpression ) ) )? (otherlv_21= ';' )?
                      {
                      // InternalSARL.g:1631:5: ()
                      // InternalSARL.g:1632:6: 
                      {
                      if ( state.backtracking==0 ) {
  
                        						current = forceCreateModelElementAndSet(
                        							grammarAccess.getEventMemberAccess().getSarlFieldAnnotationInfoAction_2_0_0(),
                        							current);
                        					
                      }
  
                      }
  
                      // InternalSARL.g:1638:5: ( (lv_modifiers_3_0= ruleCommonModifier ) )*
                      loop46:
                      do {
                          int alt46=2;
                          int LA46_0 = input.LA(1);
  
                          if ( (LA46_0==25||(LA46_0>=78 && LA46_0<=89)) ) {
                              alt46=1;
                          }
  
  
                          switch (alt46) {
                      	case 1 :
                      	    // InternalSARL.g:1639:6: (lv_modifiers_3_0= ruleCommonModifier )
                      	    {
                      	    // InternalSARL.g:1639:6: (lv_modifiers_3_0= ruleCommonModifier )
                      	    // InternalSARL.g:1640:7: lv_modifiers_3_0= ruleCommonModifier
                      	    {
                      	    if ( state.backtracking==0 ) {
  
                      	      							newCompositeNode(grammarAccess.getEventMemberAccess().getModifiersCommonModifierParserRuleCall_2_0_1_0());
                      	      						
                      	    }
                      	    pushFollow(FOLLOW_38);
                      	    lv_modifiers_3_0=ruleCommonModifier();
  
                      	    state._fsp--;
                      	    if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      							if (current==null) {
                      	      								current = createModelElementForParent(grammarAccess.getEventMemberRule());
                      	      							}
                      	      							add(
                      	      								current,
                      	      								"modifiers",
                      	      								lv_modifiers_3_0,
                      	      								"org.eclipse.xtend.core.Xtend.CommonModifier");
                      	      							afterParserOrEnumRuleCall();
                      	      						
                      	    }
  
                      	    }
  
  
                      	    }
                      	    break;
  
                      	default :
                      	    break loop46;
                          }
                      } while (true);
  
                      // InternalSARL.g:1657:5: ( ( ( (lv_modifiers_4_0= 'extension' ) ) ( ( (lv_modifiers_5_0= ruleFieldModifier ) ) | ( (lv_modifiers_6_0= ruleCommonModifier ) ) )* ( (lv_name_7_0= ruleValidID ) ) otherlv_8= ':' ( (lv_type_9_0= ruleJvmTypeReference ) ) ) | ( ( (lv_modifiers_10_0= ruleFieldModifier ) ) ( (lv_modifiers_11_0= ruleCommonModifier ) )* ( ( ( (lv_modifiers_12_0= 'extension' ) ) ( (lv_name_13_0= ruleValidID ) ) otherlv_14= ':' ( (lv_type_15_0= ruleJvmTypeReference ) ) ) | ( ( (lv_name_16_0= ruleValidID ) ) (otherlv_17= ':' ( (lv_type_18_0= ruleJvmTypeReference ) ) )? ) ) ) )
                      int alt51=2;
                      int LA51_0 = input.LA(1);
  
                      if ( (LA51_0==45) ) {
                          alt51=1;
                      }
                      else if ( ((LA51_0>=65 && LA51_0<=66)) ) {
                          alt51=2;
                      }
                      else {
                          if (state.backtracking>0) {state.failed=true; return current;}
                          NoViableAltException nvae =
                              new NoViableAltException("", 51, 0, input);
  
                          throw nvae;
                      }
                      switch (alt51) {
                          case 1 :
                              // InternalSARL.g:1658:6: ( ( (lv_modifiers_4_0= 'extension' ) ) ( ( (lv_modifiers_5_0= ruleFieldModifier ) ) | ( (lv_modifiers_6_0= ruleCommonModifier ) ) )* ( (lv_name_7_0= ruleValidID ) ) otherlv_8= ':' ( (lv_type_9_0= ruleJvmTypeReference ) ) )
                              {
                              // InternalSARL.g:1658:6: ( ( (lv_modifiers_4_0= 'extension' ) ) ( ( (lv_modifiers_5_0= ruleFieldModifier ) ) | ( (lv_modifiers_6_0= ruleCommonModifier ) ) )* ( (lv_name_7_0= ruleValidID ) ) otherlv_8= ':' ( (lv_type_9_0= ruleJvmTypeReference ) ) )
                              // InternalSARL.g:1659:7: ( (lv_modifiers_4_0= 'extension' ) ) ( ( (lv_modifiers_5_0= ruleFieldModifier ) ) | ( (lv_modifiers_6_0= ruleCommonModifier ) ) )* ( (lv_name_7_0= ruleValidID ) ) otherlv_8= ':' ( (lv_type_9_0= ruleJvmTypeReference ) )
                              {
                              // InternalSARL.g:1659:7: ( (lv_modifiers_4_0= 'extension' ) )
                              // InternalSARL.g:1660:8: (lv_modifiers_4_0= 'extension' )
                              {
                              // InternalSARL.g:1660:8: (lv_modifiers_4_0= 'extension' )
                              // InternalSARL.g:1661:9: lv_modifiers_4_0= 'extension'
                              {
                              lv_modifiers_4_0=(Token)match(input,45,FOLLOW_39); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                									newLeafNode(lv_modifiers_4_0, grammarAccess.getEventMemberAccess().getModifiersExtensionKeyword_2_0_2_0_0_0());
                                								
                              }
                              if ( state.backtracking==0 ) {
  
                                									if (current==null) {
                                										current = createModelElement(grammarAccess.getEventMemberRule());
                                									}
                                									addWithLastConsumed(current, "modifiers", lv_modifiers_4_0, "extension");
                                								
                              }
  
                              }
  
  
                              }
  
                              // InternalSARL.g:1673:7: ( ( (lv_modifiers_5_0= ruleFieldModifier ) ) | ( (lv_modifiers_6_0= ruleCommonModifier ) ) )*
                              loop47:
                              do {
                                  int alt47=3;
                                  int LA47_0 = input.LA(1);
  
                                  if ( ((LA47_0>=65 && LA47_0<=66)) ) {
                                      alt47=1;
                                  }
                                  else if ( (LA47_0==25||(LA47_0>=78 && LA47_0<=89)) ) {
                                      alt47=2;
                                  }
  
  
                                  switch (alt47) {
                              	case 1 :
                              	    // InternalSARL.g:1674:8: ( (lv_modifiers_5_0= ruleFieldModifier ) )
                              	    {
                              	    // InternalSARL.g:1674:8: ( (lv_modifiers_5_0= ruleFieldModifier ) )
                              	    // InternalSARL.g:1675:9: (lv_modifiers_5_0= ruleFieldModifier )
                              	    {
                              	    // InternalSARL.g:1675:9: (lv_modifiers_5_0= ruleFieldModifier )
                              	    // InternalSARL.g:1676:10: lv_modifiers_5_0= ruleFieldModifier
                              	    {
                              	    if ( state.backtracking==0 ) {
  
                              	      										newCompositeNode(grammarAccess.getEventMemberAccess().getModifiersFieldModifierParserRuleCall_2_0_2_0_1_0_0());
                              	      									
                              	    }
                              	    pushFollow(FOLLOW_39);
                              	    lv_modifiers_5_0=ruleFieldModifier();
  
                              	    state._fsp--;
                              	    if (state.failed) return current;
                              	    if ( state.backtracking==0 ) {
  
                              	      										if (current==null) {
                              	      											current = createModelElementForParent(grammarAccess.getEventMemberRule());
                              	      										}
                              	      										add(
                              	      											current,
                              	      											"modifiers",
                              	      											lv_modifiers_5_0,
                              	      											"org.eclipse.xtend.core.Xtend.FieldModifier");
                              	      										afterParserOrEnumRuleCall();
                              	      									
                              	    }
  
                              	    }
  
  
                              	    }
  
  
                              	    }
                              	    break;
                              	case 2 :
                              	    // InternalSARL.g:1694:8: ( (lv_modifiers_6_0= ruleCommonModifier ) )
                              	    {
                              	    // InternalSARL.g:1694:8: ( (lv_modifiers_6_0= ruleCommonModifier ) )
                              	    // InternalSARL.g:1695:9: (lv_modifiers_6_0= ruleCommonModifier )
                              	    {
                              	    // InternalSARL.g:1695:9: (lv_modifiers_6_0= ruleCommonModifier )
                              	    // InternalSARL.g:1696:10: lv_modifiers_6_0= ruleCommonModifier
                              	    {
                              	    if ( state.backtracking==0 ) {
  
                              	      										newCompositeNode(grammarAccess.getEventMemberAccess().getModifiersCommonModifierParserRuleCall_2_0_2_0_1_1_0());
                              	      									
                              	    }
                              	    pushFollow(FOLLOW_39);
                              	    lv_modifiers_6_0=ruleCommonModifier();
  
                              	    state._fsp--;
                              	    if (state.failed) return current;
                              	    if ( state.backtracking==0 ) {
  
                              	      										if (current==null) {
                              	      											current = createModelElementForParent(grammarAccess.getEventMemberRule());
                              	      										}
                              	      										add(
                              	      											current,
                              	      											"modifiers",
                              	      											lv_modifiers_6_0,
                              	      											"org.eclipse.xtend.core.Xtend.CommonModifier");
                              	      										afterParserOrEnumRuleCall();
                              	      									
                              	    }
  
                              	    }
  
  
                              	    }
  
  
                              	    }
                              	    break;
  
                              	default :
                              	    break loop47;
                                  }
                              } while (true);
  
                              // InternalSARL.g:1714:7: ( (lv_name_7_0= ruleValidID ) )
                              // InternalSARL.g:1715:8: (lv_name_7_0= ruleValidID )
                              {
                              // InternalSARL.g:1715:8: (lv_name_7_0= ruleValidID )
                              // InternalSARL.g:1716:9: lv_name_7_0= ruleValidID
                              {
                              if ( state.backtracking==0 ) {
  
                                									newCompositeNode(grammarAccess.getEventMemberAccess().getNameValidIDParserRuleCall_2_0_2_0_2_0());
                                								
                              }
                              pushFollow(FOLLOW_40);
                              lv_name_7_0=ruleValidID();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                									if (current==null) {
                                										current = createModelElementForParent(grammarAccess.getEventMemberRule());
                                									}
                                									set(
                                										current,
                                										"name",
                                										lv_name_7_0,
                                										"org.eclipse.xtend.core.Xtend.ValidID");
                                									afterParserOrEnumRuleCall();
                                								
                              }
  
                              }
  
  
                              }
  
                              otherlv_8=(Token)match(input,46,FOLLOW_41); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                							newLeafNode(otherlv_8, grammarAccess.getEventMemberAccess().getColonKeyword_2_0_2_0_3());
                                						
                              }
                              // InternalSARL.g:1737:7: ( (lv_type_9_0= ruleJvmTypeReference ) )
                              // InternalSARL.g:1738:8: (lv_type_9_0= ruleJvmTypeReference )
                              {
                              // InternalSARL.g:1738:8: (lv_type_9_0= ruleJvmTypeReference )
                              // InternalSARL.g:1739:9: lv_type_9_0= ruleJvmTypeReference
                              {
                              if ( state.backtracking==0 ) {
  
                                									newCompositeNode(grammarAccess.getEventMemberAccess().getTypeJvmTypeReferenceParserRuleCall_2_0_2_0_4_0());
                                								
                              }
                              pushFollow(FOLLOW_42);
                              lv_type_9_0=ruleJvmTypeReference();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                									if (current==null) {
                                										current = createModelElementForParent(grammarAccess.getEventMemberRule());
                                									}
                                									set(
                                										current,
                                										"type",
                                										lv_type_9_0,
                                										"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
                                									afterParserOrEnumRuleCall();
                                								
                              }
  
                              }
  
  
                              }
  
  
                              }
  
  
                              }
                              break;
                          case 2 :
                              // InternalSARL.g:1758:6: ( ( (lv_modifiers_10_0= ruleFieldModifier ) ) ( (lv_modifiers_11_0= ruleCommonModifier ) )* ( ( ( (lv_modifiers_12_0= 'extension' ) ) ( (lv_name_13_0= ruleValidID ) ) otherlv_14= ':' ( (lv_type_15_0= ruleJvmTypeReference ) ) ) | ( ( (lv_name_16_0= ruleValidID ) ) (otherlv_17= ':' ( (lv_type_18_0= ruleJvmTypeReference ) ) )? ) ) )
                              {
                              // InternalSARL.g:1758:6: ( ( (lv_modifiers_10_0= ruleFieldModifier ) ) ( (lv_modifiers_11_0= ruleCommonModifier ) )* ( ( ( (lv_modifiers_12_0= 'extension' ) ) ( (lv_name_13_0= ruleValidID ) ) otherlv_14= ':' ( (lv_type_15_0= ruleJvmTypeReference ) ) ) | ( ( (lv_name_16_0= ruleValidID ) ) (otherlv_17= ':' ( (lv_type_18_0= ruleJvmTypeReference ) ) )? ) ) )
                              // InternalSARL.g:1759:7: ( (lv_modifiers_10_0= ruleFieldModifier ) ) ( (lv_modifiers_11_0= ruleCommonModifier ) )* ( ( ( (lv_modifiers_12_0= 'extension' ) ) ( (lv_name_13_0= ruleValidID ) ) otherlv_14= ':' ( (lv_type_15_0= ruleJvmTypeReference ) ) ) | ( ( (lv_name_16_0= ruleValidID ) ) (otherlv_17= ':' ( (lv_type_18_0= ruleJvmTypeReference ) ) )? ) )
                              {
                              // InternalSARL.g:1759:7: ( (lv_modifiers_10_0= ruleFieldModifier ) )
                              // InternalSARL.g:1760:8: (lv_modifiers_10_0= ruleFieldModifier )
                              {
                              // InternalSARL.g:1760:8: (lv_modifiers_10_0= ruleFieldModifier )
                              // InternalSARL.g:1761:9: lv_modifiers_10_0= ruleFieldModifier
                              {
                              if ( state.backtracking==0 ) {
  
                                									newCompositeNode(grammarAccess.getEventMemberAccess().getModifiersFieldModifierParserRuleCall_2_0_2_1_0_0());
                                								
                              }
                              pushFollow(FOLLOW_43);
                              lv_modifiers_10_0=ruleFieldModifier();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                									if (current==null) {
                                										current = createModelElementForParent(grammarAccess.getEventMemberRule());
                                									}
                                									add(
                                										current,
                                										"modifiers",
                                										lv_modifiers_10_0,
                                										"org.eclipse.xtend.core.Xtend.FieldModifier");
                                									afterParserOrEnumRuleCall();
                                								
                              }
  
                              }
  
  
                              }
  
                              // InternalSARL.g:1778:7: ( (lv_modifiers_11_0= ruleCommonModifier ) )*
                              loop48:
                              do {
                                  int alt48=2;
                                  int LA48_0 = input.LA(1);
  
                                  if ( (LA48_0==25||(LA48_0>=78 && LA48_0<=89)) ) {
                                      alt48=1;
                                  }
  
  
                                  switch (alt48) {
                              	case 1 :
                              	    // InternalSARL.g:1779:8: (lv_modifiers_11_0= ruleCommonModifier )
                              	    {
                              	    // InternalSARL.g:1779:8: (lv_modifiers_11_0= ruleCommonModifier )
                              	    // InternalSARL.g:1780:9: lv_modifiers_11_0= ruleCommonModifier
                              	    {
                              	    if ( state.backtracking==0 ) {
  
                              	      									newCompositeNode(grammarAccess.getEventMemberAccess().getModifiersCommonModifierParserRuleCall_2_0_2_1_1_0());
                              	      								
                              	    }
                              	    pushFollow(FOLLOW_43);
                              	    lv_modifiers_11_0=ruleCommonModifier();
  
                              	    state._fsp--;
                              	    if (state.failed) return current;
                              	    if ( state.backtracking==0 ) {
  
                              	      									if (current==null) {
                              	      										current = createModelElementForParent(grammarAccess.getEventMemberRule());
                              	      									}
                              	      									add(
                              	      										current,
                              	      										"modifiers",
                              	      										lv_modifiers_11_0,
                              	      										"org.eclipse.xtend.core.Xtend.CommonModifier");
                              	      									afterParserOrEnumRuleCall();
                              	      								
                              	    }
  
                              	    }
  
  
                              	    }
                              	    break;
  
                              	default :
                              	    break loop48;
                                  }
                              } while (true);
  
                              // InternalSARL.g:1797:7: ( ( ( (lv_modifiers_12_0= 'extension' ) ) ( (lv_name_13_0= ruleValidID ) ) otherlv_14= ':' ( (lv_type_15_0= ruleJvmTypeReference ) ) ) | ( ( (lv_name_16_0= ruleValidID ) ) (otherlv_17= ':' ( (lv_type_18_0= ruleJvmTypeReference ) ) )? ) )
                              int alt50=2;
                              int LA50_0 = input.LA(1);
  
                              if ( (LA50_0==45) ) {
                                  alt50=1;
                              }
                              else if ( (LA50_0==RULE_ID||LA50_0==44||(LA50_0>=92 && LA50_0<=95)) ) {
                                  alt50=2;
                              }
                              else {
                                  if (state.backtracking>0) {state.failed=true; return current;}
                                  NoViableAltException nvae =
                                      new NoViableAltException("", 50, 0, input);
  
                                  throw nvae;
                              }
                              switch (alt50) {
                                  case 1 :
                                      // InternalSARL.g:1798:8: ( ( (lv_modifiers_12_0= 'extension' ) ) ( (lv_name_13_0= ruleValidID ) ) otherlv_14= ':' ( (lv_type_15_0= ruleJvmTypeReference ) ) )
                                      {
                                      // InternalSARL.g:1798:8: ( ( (lv_modifiers_12_0= 'extension' ) ) ( (lv_name_13_0= ruleValidID ) ) otherlv_14= ':' ( (lv_type_15_0= ruleJvmTypeReference ) ) )
                                      // InternalSARL.g:1799:9: ( (lv_modifiers_12_0= 'extension' ) ) ( (lv_name_13_0= ruleValidID ) ) otherlv_14= ':' ( (lv_type_15_0= ruleJvmTypeReference ) )
                                      {
                                      // InternalSARL.g:1799:9: ( (lv_modifiers_12_0= 'extension' ) )
                                      // InternalSARL.g:1800:10: (lv_modifiers_12_0= 'extension' )
                                      {
                                      // InternalSARL.g:1800:10: (lv_modifiers_12_0= 'extension' )
                                      // InternalSARL.g:1801:11: lv_modifiers_12_0= 'extension'
                                      {
                                      lv_modifiers_12_0=(Token)match(input,45,FOLLOW_3); if (state.failed) return current;
                                      if ( state.backtracking==0 ) {
  
                                        											newLeafNode(lv_modifiers_12_0, grammarAccess.getEventMemberAccess().getModifiersExtensionKeyword_2_0_2_1_2_0_0_0());
                                        										
                                      }
                                      if ( state.backtracking==0 ) {
  
                                        											if (current==null) {
                                        												current = createModelElement(grammarAccess.getEventMemberRule());
                                        											}
                                        											addWithLastConsumed(current, "modifiers", lv_modifiers_12_0, "extension");
                                        										
                                      }
  
                                      }
  
  
                                      }
  
                                      // InternalSARL.g:1813:9: ( (lv_name_13_0= ruleValidID ) )
                                      // InternalSARL.g:1814:10: (lv_name_13_0= ruleValidID )
                                      {
                                      // InternalSARL.g:1814:10: (lv_name_13_0= ruleValidID )
                                      // InternalSARL.g:1815:11: lv_name_13_0= ruleValidID
                                      {
                                      if ( state.backtracking==0 ) {
  
                                        											newCompositeNode(grammarAccess.getEventMemberAccess().getNameValidIDParserRuleCall_2_0_2_1_2_0_1_0());
                                        										
                                      }
                                      pushFollow(FOLLOW_40);
                                      lv_name_13_0=ruleValidID();
  
                                      state._fsp--;
                                      if (state.failed) return current;
                                      if ( state.backtracking==0 ) {
  
                                        											if (current==null) {
                                        												current = createModelElementForParent(grammarAccess.getEventMemberRule());
                                        											}
                                        											set(
                                        												current,
                                        												"name",
                                        												lv_name_13_0,
                                        												"org.eclipse.xtend.core.Xtend.ValidID");
                                        											afterParserOrEnumRuleCall();
                                        										
                                      }
  
                                      }
  
  
                                      }
  
                                      otherlv_14=(Token)match(input,46,FOLLOW_41); if (state.failed) return current;
                                      if ( state.backtracking==0 ) {
  
                                        									newLeafNode(otherlv_14, grammarAccess.getEventMemberAccess().getColonKeyword_2_0_2_1_2_0_2());
                                        								
                                      }
                                      // InternalSARL.g:1836:9: ( (lv_type_15_0= ruleJvmTypeReference ) )
                                      // InternalSARL.g:1837:10: (lv_type_15_0= ruleJvmTypeReference )
                                      {
                                      // InternalSARL.g:1837:10: (lv_type_15_0= ruleJvmTypeReference )
                                      // InternalSARL.g:1838:11: lv_type_15_0= ruleJvmTypeReference
                                      {
                                      if ( state.backtracking==0 ) {
  
                                        											newCompositeNode(grammarAccess.getEventMemberAccess().getTypeJvmTypeReferenceParserRuleCall_2_0_2_1_2_0_3_0());
                                        										
                                      }
                                      pushFollow(FOLLOW_42);
                                      lv_type_15_0=ruleJvmTypeReference();
  
                                      state._fsp--;
                                      if (state.failed) return current;
                                      if ( state.backtracking==0 ) {
  
                                        											if (current==null) {
                                        												current = createModelElementForParent(grammarAccess.getEventMemberRule());
                                        											}
                                        											set(
                                        												current,
                                        												"type",
                                        												lv_type_15_0,
                                        												"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
                                        											afterParserOrEnumRuleCall();
                                        										
                                      }
  
                                      }
  
  
                                      }
  
  
                                      }
  
  
                                      }
                                      break;
                                  case 2 :
                                      // InternalSARL.g:1857:8: ( ( (lv_name_16_0= ruleValidID ) ) (otherlv_17= ':' ( (lv_type_18_0= ruleJvmTypeReference ) ) )? )
                                      {
                                      // InternalSARL.g:1857:8: ( ( (lv_name_16_0= ruleValidID ) ) (otherlv_17= ':' ( (lv_type_18_0= ruleJvmTypeReference ) ) )? )
                                      // InternalSARL.g:1858:9: ( (lv_name_16_0= ruleValidID ) ) (otherlv_17= ':' ( (lv_type_18_0= ruleJvmTypeReference ) ) )?
                                      {
                                      // InternalSARL.g:1858:9: ( (lv_name_16_0= ruleValidID ) )
                                      // InternalSARL.g:1859:10: (lv_name_16_0= ruleValidID )
                                      {
                                      // InternalSARL.g:1859:10: (lv_name_16_0= ruleValidID )
                                      // InternalSARL.g:1860:11: lv_name_16_0= ruleValidID
                                      {
                                      if ( state.backtracking==0 ) {
  
                                        											newCompositeNode(grammarAccess.getEventMemberAccess().getNameValidIDParserRuleCall_2_0_2_1_2_1_0_0());
                                        										
                                      }
                                      pushFollow(FOLLOW_44);
                                      lv_name_16_0=ruleValidID();
  
                                      state._fsp--;
                                      if (state.failed) return current;
                                      if ( state.backtracking==0 ) {
  
                                        											if (current==null) {
                                        												current = createModelElementForParent(grammarAccess.getEventMemberRule());
                                        											}
                                        											set(
                                        												current,
                                        												"name",
                                        												lv_name_16_0,
                                        												"org.eclipse.xtend.core.Xtend.ValidID");
                                        											afterParserOrEnumRuleCall();
                                        										
                                      }
  
                                      }
  
  
                                      }
  
                                      // InternalSARL.g:1877:9: (otherlv_17= ':' ( (lv_type_18_0= ruleJvmTypeReference ) ) )?
                                      int alt49=2;
                                      int LA49_0 = input.LA(1);
  
                                      if ( (LA49_0==46) ) {
                                          alt49=1;
                                      }
                                      switch (alt49) {
                                          case 1 :
                                              // InternalSARL.g:1878:10: otherlv_17= ':' ( (lv_type_18_0= ruleJvmTypeReference ) )
                                              {
                                              otherlv_17=(Token)match(input,46,FOLLOW_41); if (state.failed) return current;
                                              if ( state.backtracking==0 ) {
  
                                                										newLeafNode(otherlv_17, grammarAccess.getEventMemberAccess().getColonKeyword_2_0_2_1_2_1_1_0());
                                                									
                                              }
                                              // InternalSARL.g:1882:10: ( (lv_type_18_0= ruleJvmTypeReference ) )
                                              // InternalSARL.g:1883:11: (lv_type_18_0= ruleJvmTypeReference )
                                              {
                                              // InternalSARL.g:1883:11: (lv_type_18_0= ruleJvmTypeReference )
                                              // InternalSARL.g:1884:12: lv_type_18_0= ruleJvmTypeReference
                                              {
                                              if ( state.backtracking==0 ) {
  
                                                												newCompositeNode(grammarAccess.getEventMemberAccess().getTypeJvmTypeReferenceParserRuleCall_2_0_2_1_2_1_1_1_0());
                                                											
                                              }
                                              pushFollow(FOLLOW_42);
                                              lv_type_18_0=ruleJvmTypeReference();
  
                                              state._fsp--;
                                              if (state.failed) return current;
                                              if ( state.backtracking==0 ) {
  
                                                												if (current==null) {
                                                													current = createModelElementForParent(grammarAccess.getEventMemberRule());
                                                												}
                                                												set(
                                                													current,
                                                													"type",
                                                													lv_type_18_0,
                                                													"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
                                                												afterParserOrEnumRuleCall();
                                                											
                                              }
  
                                              }
  
  
                                              }
  
  
                                              }
                                              break;
  
                                      }
  
  
                                      }
  
  
                                      }
                                      break;
  
                              }
  
  
                              }
  
  
                              }
                              break;
  
                      }
  
                      // InternalSARL.g:1906:5: (otherlv_19= '=' ( (lv_initialValue_20_0= ruleXExpression ) ) )?
                      int alt52=2;
                      int LA52_0 = input.LA(1);
  
                      if ( (LA52_0==47) ) {
                          alt52=1;
                      }
                      switch (alt52) {
                          case 1 :
                              // InternalSARL.g:1907:6: otherlv_19= '=' ( (lv_initialValue_20_0= ruleXExpression ) )
                              {
                              otherlv_19=(Token)match(input,47,FOLLOW_45); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                						newLeafNode(otherlv_19, grammarAccess.getEventMemberAccess().getEqualsSignKeyword_2_0_3_0());
                                					
                              }
                              // InternalSARL.g:1911:6: ( (lv_initialValue_20_0= ruleXExpression ) )
                              // InternalSARL.g:1912:7: (lv_initialValue_20_0= ruleXExpression )
                              {
                              // InternalSARL.g:1912:7: (lv_initialValue_20_0= ruleXExpression )
                              // InternalSARL.g:1913:8: lv_initialValue_20_0= ruleXExpression
                              {
                              if ( state.backtracking==0 ) {
  
                                								newCompositeNode(grammarAccess.getEventMemberAccess().getInitialValueXExpressionParserRuleCall_2_0_3_1_0());
                                							
                              }
                              pushFollow(FOLLOW_46);
                              lv_initialValue_20_0=ruleXExpression();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                								if (current==null) {
                                									current = createModelElementForParent(grammarAccess.getEventMemberRule());
                                								}
                                								set(
                                									current,
                                									"initialValue",
                                									lv_initialValue_20_0,
                                									"org.eclipse.xtext.xbase.Xbase.XExpression");
                                								afterParserOrEnumRuleCall();
                                							
                              }
  
                              }
  
  
                              }
  
  
                              }
                              break;
  
                      }
  
                      // InternalSARL.g:1931:5: (otherlv_21= ';' )?
                      int alt53=2;
                      int LA53_0 = input.LA(1);
  
                      if ( (LA53_0==26) ) {
                          alt53=1;
                      }
                      switch (alt53) {
                          case 1 :
                              // InternalSARL.g:1932:6: otherlv_21= ';'
                              {
                              otherlv_21=(Token)match(input,26,FOLLOW_2); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                						newLeafNode(otherlv_21, grammarAccess.getEventMemberAccess().getSemicolonKeyword_2_0_4());
                                					
                              }
  
                              }
                              break;
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // InternalSARL.g:1939:4: ( () ( (lv_modifiers_23_0= ruleCommonModifier ) )* otherlv_24= 'new' (otherlv_25= '<' ( (lv_typeParameters_26_0= ruleJvmTypeParameter ) ) (otherlv_27= ',' ( (lv_typeParameters_28_0= ruleJvmTypeParameter ) ) )* otherlv_29= '>' )? (otherlv_30= '(' ( ( (lv_parameters_31_0= ruleParameter ) ) (otherlv_32= ',' ( (lv_parameters_33_0= ruleParameter ) ) )* )? otherlv_34= ')' )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_36= 'throws' ( (lv_exceptions_37_0= ruleJvmTypeReference ) ) (otherlv_38= ',' ( (lv_exceptions_39_0= ruleJvmTypeReference ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_40= 'with' ( (lv_typeParameters_41_0= ruleJvmTypeParameter ) ) (otherlv_42= ',' ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) ) )* ) ) ) ) )* ) ) ) ( (lv_expression_44_0= ruleXBlockExpression ) ) )
                      {
                      // InternalSARL.g:1939:4: ( () ( (lv_modifiers_23_0= ruleCommonModifier ) )* otherlv_24= 'new' (otherlv_25= '<' ( (lv_typeParameters_26_0= ruleJvmTypeParameter ) ) (otherlv_27= ',' ( (lv_typeParameters_28_0= ruleJvmTypeParameter ) ) )* otherlv_29= '>' )? (otherlv_30= '(' ( ( (lv_parameters_31_0= ruleParameter ) ) (otherlv_32= ',' ( (lv_parameters_33_0= ruleParameter ) ) )* )? otherlv_34= ')' )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_36= 'throws' ( (lv_exceptions_37_0= ruleJvmTypeReference ) ) (otherlv_38= ',' ( (lv_exceptions_39_0= ruleJvmTypeReference ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_40= 'with' ( (lv_typeParameters_41_0= ruleJvmTypeParameter ) ) (otherlv_42= ',' ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) ) )* ) ) ) ) )* ) ) ) ( (lv_expression_44_0= ruleXBlockExpression ) ) )
                      // InternalSARL.g:1940:5: () ( (lv_modifiers_23_0= ruleCommonModifier ) )* otherlv_24= 'new' (otherlv_25= '<' ( (lv_typeParameters_26_0= ruleJvmTypeParameter ) ) (otherlv_27= ',' ( (lv_typeParameters_28_0= ruleJvmTypeParameter ) ) )* otherlv_29= '>' )? (otherlv_30= '(' ( ( (lv_parameters_31_0= ruleParameter ) ) (otherlv_32= ',' ( (lv_parameters_33_0= ruleParameter ) ) )* )? otherlv_34= ')' )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_36= 'throws' ( (lv_exceptions_37_0= ruleJvmTypeReference ) ) (otherlv_38= ',' ( (lv_exceptions_39_0= ruleJvmTypeReference ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_40= 'with' ( (lv_typeParameters_41_0= ruleJvmTypeParameter ) ) (otherlv_42= ',' ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) ) )* ) ) ) ) )* ) ) ) ( (lv_expression_44_0= ruleXBlockExpression ) )
                      {
                      // InternalSARL.g:1940:5: ()
                      // InternalSARL.g:1941:6: 
                      {
                      if ( state.backtracking==0 ) {
  
                        						current = forceCreateModelElementAndSet(
                        							grammarAccess.getEventMemberAccess().getSarlConstructorAnnotationInfoAction_2_1_0(),
                        							current);
                        					
                      }
  
                      }
  
                      // InternalSARL.g:1947:5: ( (lv_modifiers_23_0= ruleCommonModifier ) )*
                      loop54:
                      do {
                          int alt54=2;
                          int LA54_0 = input.LA(1);
  
                          if ( (LA54_0==25||(LA54_0>=78 && LA54_0<=89)) ) {
                              alt54=1;
                          }
  
  
                          switch (alt54) {
                      	case 1 :
                      	    // InternalSARL.g:1948:6: (lv_modifiers_23_0= ruleCommonModifier )
                      	    {
                      	    // InternalSARL.g:1948:6: (lv_modifiers_23_0= ruleCommonModifier )
                      	    // InternalSARL.g:1949:7: lv_modifiers_23_0= ruleCommonModifier
                      	    {
                      	    if ( state.backtracking==0 ) {
  
                      	      							newCompositeNode(grammarAccess.getEventMemberAccess().getModifiersCommonModifierParserRuleCall_2_1_1_0());
                      	      						
                      	    }
                      	    pushFollow(FOLLOW_47);
                      	    lv_modifiers_23_0=ruleCommonModifier();
  
                      	    state._fsp--;
                      	    if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      							if (current==null) {
                      	      								current = createModelElementForParent(grammarAccess.getEventMemberRule());
                      	      							}
                      	      							add(
                      	      								current,
                      	      								"modifiers",
                      	      								lv_modifiers_23_0,
                      	      								"org.eclipse.xtend.core.Xtend.CommonModifier");
                      	      							afterParserOrEnumRuleCall();
                      	      						
                      	    }
  
                      	    }
  
  
                      	    }
                      	    break;
  
                      	default :
                      	    break loop54;
                          }
                      } while (true);
  
                      otherlv_24=(Token)match(input,48,FOLLOW_48); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        					newLeafNode(otherlv_24, grammarAccess.getEventMemberAccess().getNewKeyword_2_1_2());
                        				
                      }
                      // InternalSARL.g:1970:5: (otherlv_25= '<' ( (lv_typeParameters_26_0= ruleJvmTypeParameter ) ) (otherlv_27= ',' ( (lv_typeParameters_28_0= ruleJvmTypeParameter ) ) )* otherlv_29= '>' )?
                      int alt56=2;
                      int LA56_0 = input.LA(1);
  
                      if ( (LA56_0==40) ) {
                          alt56=1;
                      }
                      switch (alt56) {
                          case 1 :
                              // InternalSARL.g:1971:6: otherlv_25= '<' ( (lv_typeParameters_26_0= ruleJvmTypeParameter ) ) (otherlv_27= ',' ( (lv_typeParameters_28_0= ruleJvmTypeParameter ) ) )* otherlv_29= '>'
                              {
                              otherlv_25=(Token)match(input,40,FOLLOW_3); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                						newLeafNode(otherlv_25, grammarAccess.getEventMemberAccess().getLessThanSignKeyword_2_1_3_0());
                                					
                              }
                              // InternalSARL.g:1975:6: ( (lv_typeParameters_26_0= ruleJvmTypeParameter ) )
                              // InternalSARL.g:1976:7: (lv_typeParameters_26_0= ruleJvmTypeParameter )
                              {
                              // InternalSARL.g:1976:7: (lv_typeParameters_26_0= ruleJvmTypeParameter )
                              // InternalSARL.g:1977:8: lv_typeParameters_26_0= ruleJvmTypeParameter
                              {
                              if ( state.backtracking==0 ) {
  
                                								newCompositeNode(grammarAccess.getEventMemberAccess().getTypeParametersJvmTypeParameterParserRuleCall_2_1_3_1_0());
                                							
                              }
                              pushFollow(FOLLOW_28);
                              lv_typeParameters_26_0=ruleJvmTypeParameter();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                								if (current==null) {
                                									current = createModelElementForParent(grammarAccess.getEventMemberRule());
                                								}
                                								add(
                                									current,
                                									"typeParameters",
                                									lv_typeParameters_26_0,
                                									"org.eclipse.xtext.xbase.Xtype.JvmTypeParameter");
                                								afterParserOrEnumRuleCall();
                                							
                              }
  
                              }
  
  
                              }
  
                              // InternalSARL.g:1994:6: (otherlv_27= ',' ( (lv_typeParameters_28_0= ruleJvmTypeParameter ) ) )*
                              loop55:
                              do {
                                  int alt55=2;
                                  int LA55_0 = input.LA(1);
  
                                  if ( (LA55_0==32) ) {
                                      alt55=1;
                                  }
  
  
                                  switch (alt55) {
                              	case 1 :
                              	    // InternalSARL.g:1995:7: otherlv_27= ',' ( (lv_typeParameters_28_0= ruleJvmTypeParameter ) )
                              	    {
                              	    otherlv_27=(Token)match(input,32,FOLLOW_3); if (state.failed) return current;
                              	    if ( state.backtracking==0 ) {
  
                              	      							newLeafNode(otherlv_27, grammarAccess.getEventMemberAccess().getCommaKeyword_2_1_3_2_0());
                              	      						
                              	    }
                              	    // InternalSARL.g:1999:7: ( (lv_typeParameters_28_0= ruleJvmTypeParameter ) )
                              	    // InternalSARL.g:2000:8: (lv_typeParameters_28_0= ruleJvmTypeParameter )
                              	    {
                              	    // InternalSARL.g:2000:8: (lv_typeParameters_28_0= ruleJvmTypeParameter )
                              	    // InternalSARL.g:2001:9: lv_typeParameters_28_0= ruleJvmTypeParameter
                              	    {
                              	    if ( state.backtracking==0 ) {
  
                              	      									newCompositeNode(grammarAccess.getEventMemberAccess().getTypeParametersJvmTypeParameterParserRuleCall_2_1_3_2_1_0());
                              	      								
                              	    }
                              	    pushFollow(FOLLOW_28);
                              	    lv_typeParameters_28_0=ruleJvmTypeParameter();
  
                              	    state._fsp--;
                              	    if (state.failed) return current;
                              	    if ( state.backtracking==0 ) {
  
                              	      									if (current==null) {
                              	      										current = createModelElementForParent(grammarAccess.getEventMemberRule());
                              	      									}
                              	      									add(
                              	      										current,
                              	      										"typeParameters",
                              	      										lv_typeParameters_28_0,
                              	      										"org.eclipse.xtext.xbase.Xtype.JvmTypeParameter");
                              	      									afterParserOrEnumRuleCall();
                              	      								
                              	    }
  
                              	    }
  
  
                              	    }
  
  
                              	    }
                              	    break;
  
                              	default :
                              	    break loop55;
                                  }
                              } while (true);
  
                              otherlv_29=(Token)match(input,41,FOLLOW_49); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                						newLeafNode(otherlv_29, grammarAccess.getEventMemberAccess().getGreaterThanSignKeyword_2_1_3_3());
                                					
                              }
  
                              }
                              break;
  
                      }
  
                      // InternalSARL.g:2024:5: (otherlv_30= '(' ( ( (lv_parameters_31_0= ruleParameter ) ) (otherlv_32= ',' ( (lv_parameters_33_0= ruleParameter ) ) )* )? otherlv_34= ')' )?
                      int alt59=2;
                      int LA59_0 = input.LA(1);
  
                      if ( (LA59_0==49) ) {
                          alt59=1;
                      }
                      switch (alt59) {
                          case 1 :
                              // InternalSARL.g:2025:6: otherlv_30= '(' ( ( (lv_parameters_31_0= ruleParameter ) ) (otherlv_32= ',' ( (lv_parameters_33_0= ruleParameter ) ) )* )? otherlv_34= ')'
                              {
                              otherlv_30=(Token)match(input,49,FOLLOW_50); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                						newLeafNode(otherlv_30, grammarAccess.getEventMemberAccess().getLeftParenthesisKeyword_2_1_4_0());
                                					
                              }
                              // InternalSARL.g:2029:6: ( ( (lv_parameters_31_0= ruleParameter ) ) (otherlv_32= ',' ( (lv_parameters_33_0= ruleParameter ) ) )* )?
                              int alt58=2;
                              int LA58_0 = input.LA(1);
  
                              if ( (LA58_0==RULE_ID||(LA58_0>=44 && LA58_0<=45)||(LA58_0>=92 && LA58_0<=95)||LA58_0==105) ) {
                                  alt58=1;
                              }
                              switch (alt58) {
                                  case 1 :
                                      // InternalSARL.g:2030:7: ( (lv_parameters_31_0= ruleParameter ) ) (otherlv_32= ',' ( (lv_parameters_33_0= ruleParameter ) ) )*
                                      {
                                      // InternalSARL.g:2030:7: ( (lv_parameters_31_0= ruleParameter ) )
                                      // InternalSARL.g:2031:8: (lv_parameters_31_0= ruleParameter )
                                      {
                                      // InternalSARL.g:2031:8: (lv_parameters_31_0= ruleParameter )
                                      // InternalSARL.g:2032:9: lv_parameters_31_0= ruleParameter
                                      {
                                      if ( state.backtracking==0 ) {
  
                                        									newCompositeNode(grammarAccess.getEventMemberAccess().getParametersParameterParserRuleCall_2_1_4_1_0_0());
                                        								
                                      }
                                      pushFollow(FOLLOW_51);
                                      lv_parameters_31_0=ruleParameter();
  
                                      state._fsp--;
                                      if (state.failed) return current;
                                      if ( state.backtracking==0 ) {
  
                                        									if (current==null) {
                                        										current = createModelElementForParent(grammarAccess.getEventMemberRule());
                                        									}
                                        									add(
                                        										current,
                                        										"parameters",
                                        										lv_parameters_31_0,
                                        										"io.sarl.lang.SARL.Parameter");
                                        									afterParserOrEnumRuleCall();
                                        								
                                      }
  
                                      }
  
  
                                      }
  
                                      // InternalSARL.g:2049:7: (otherlv_32= ',' ( (lv_parameters_33_0= ruleParameter ) ) )*
                                      loop57:
                                      do {
                                          int alt57=2;
                                          int LA57_0 = input.LA(1);
  
                                          if ( (LA57_0==32) ) {
                                              alt57=1;
                                          }
  
  
                                          switch (alt57) {
                                      	case 1 :
                                      	    // InternalSARL.g:2050:8: otherlv_32= ',' ( (lv_parameters_33_0= ruleParameter ) )
                                      	    {
                                      	    otherlv_32=(Token)match(input,32,FOLLOW_52); if (state.failed) return current;
                                      	    if ( state.backtracking==0 ) {
  
                                      	      								newLeafNode(otherlv_32, grammarAccess.getEventMemberAccess().getCommaKeyword_2_1_4_1_1_0());
                                      	      							
                                      	    }
                                      	    // InternalSARL.g:2054:8: ( (lv_parameters_33_0= ruleParameter ) )
                                      	    // InternalSARL.g:2055:9: (lv_parameters_33_0= ruleParameter )
                                      	    {
                                      	    // InternalSARL.g:2055:9: (lv_parameters_33_0= ruleParameter )
                                      	    // InternalSARL.g:2056:10: lv_parameters_33_0= ruleParameter
                                      	    {
                                      	    if ( state.backtracking==0 ) {
  
                                      	      										newCompositeNode(grammarAccess.getEventMemberAccess().getParametersParameterParserRuleCall_2_1_4_1_1_1_0());
                                      	      									
                                      	    }
                                      	    pushFollow(FOLLOW_51);
                                      	    lv_parameters_33_0=ruleParameter();
  
                                      	    state._fsp--;
                                      	    if (state.failed) return current;
                                      	    if ( state.backtracking==0 ) {
  
                                      	      										if (current==null) {
                                      	      											current = createModelElementForParent(grammarAccess.getEventMemberRule());
                                      	      										}
                                      	      										add(
                                      	      											current,
                                      	      											"parameters",
                                      	      											lv_parameters_33_0,
                                      	      											"io.sarl.lang.SARL.Parameter");
                                      	      										afterParserOrEnumRuleCall();
                                      	      									
                                      	    }
  
                                      	    }
  
  
                                      	    }
  
  
                                      	    }
                                      	    break;
  
                                      	default :
                                      	    break loop57;
                                          }
                                      } while (true);
  
  
                                      }
                                      break;
  
                              }
  
                              otherlv_34=(Token)match(input,50,FOLLOW_53); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                						newLeafNode(otherlv_34, grammarAccess.getEventMemberAccess().getRightParenthesisKeyword_2_1_4_2());
                                					
                              }
  
                              }
                              break;
  
                      }
  
                      // InternalSARL.g:2080:5: ( ( ( ( ({...}? => ( ({...}? => (otherlv_36= 'throws' ( (lv_exceptions_37_0= ruleJvmTypeReference ) ) (otherlv_38= ',' ( (lv_exceptions_39_0= ruleJvmTypeReference ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_40= 'with' ( (lv_typeParameters_41_0= ruleJvmTypeParameter ) ) (otherlv_42= ',' ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) ) )* ) ) ) ) )* ) ) )
                      // InternalSARL.g:2081:6: ( ( ( ({...}? => ( ({...}? => (otherlv_36= 'throws' ( (lv_exceptions_37_0= ruleJvmTypeReference ) ) (otherlv_38= ',' ( (lv_exceptions_39_0= ruleJvmTypeReference ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_40= 'with' ( (lv_typeParameters_41_0= ruleJvmTypeParameter ) ) (otherlv_42= ',' ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) ) )* ) ) ) ) )* ) )
                      {
                      // InternalSARL.g:2081:6: ( ( ( ({...}? => ( ({...}? => (otherlv_36= 'throws' ( (lv_exceptions_37_0= ruleJvmTypeReference ) ) (otherlv_38= ',' ( (lv_exceptions_39_0= ruleJvmTypeReference ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_40= 'with' ( (lv_typeParameters_41_0= ruleJvmTypeParameter ) ) (otherlv_42= ',' ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) ) )* ) ) ) ) )* ) )
                      // InternalSARL.g:2082:7: ( ( ({...}? => ( ({...}? => (otherlv_36= 'throws' ( (lv_exceptions_37_0= ruleJvmTypeReference ) ) (otherlv_38= ',' ( (lv_exceptions_39_0= ruleJvmTypeReference ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_40= 'with' ( (lv_typeParameters_41_0= ruleJvmTypeParameter ) ) (otherlv_42= ',' ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) ) )* ) ) ) ) )* )
                      {
                      getUnorderedGroupHelper().enter(grammarAccess.getEventMemberAccess().getUnorderedGroup_2_1_5());
                      // InternalSARL.g:2085:7: ( ( ({...}? => ( ({...}? => (otherlv_36= 'throws' ( (lv_exceptions_37_0= ruleJvmTypeReference ) ) (otherlv_38= ',' ( (lv_exceptions_39_0= ruleJvmTypeReference ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_40= 'with' ( (lv_typeParameters_41_0= ruleJvmTypeParameter ) ) (otherlv_42= ',' ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) ) )* ) ) ) ) )* )
                      // InternalSARL.g:2086:8: ( ({...}? => ( ({...}? => (otherlv_36= 'throws' ( (lv_exceptions_37_0= ruleJvmTypeReference ) ) (otherlv_38= ',' ( (lv_exceptions_39_0= ruleJvmTypeReference ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_40= 'with' ( (lv_typeParameters_41_0= ruleJvmTypeParameter ) ) (otherlv_42= ',' ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) ) )* ) ) ) ) )*
                      {
                      // InternalSARL.g:2086:8: ( ({...}? => ( ({...}? => (otherlv_36= 'throws' ( (lv_exceptions_37_0= ruleJvmTypeReference ) ) (otherlv_38= ',' ( (lv_exceptions_39_0= ruleJvmTypeReference ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_40= 'with' ( (lv_typeParameters_41_0= ruleJvmTypeParameter ) ) (otherlv_42= ',' ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) ) )* ) ) ) ) )*
                      loop62:
                      do {
                          int alt62=3;
                          int LA62_0 = input.LA(1);
  
                          if ( LA62_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getEventMemberAccess().getUnorderedGroup_2_1_5(), 0) ) {
                              alt62=1;
                          }
                          else if ( LA62_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getEventMemberAccess().getUnorderedGroup_2_1_5(), 1) ) {
                              alt62=2;
                          }
  
  
                          switch (alt62) {
                      	case 1 :
                      	    // InternalSARL.g:2087:6: ({...}? => ( ({...}? => (otherlv_36= 'throws' ( (lv_exceptions_37_0= ruleJvmTypeReference ) ) (otherlv_38= ',' ( (lv_exceptions_39_0= ruleJvmTypeReference ) ) )* ) ) ) )
                      	    {
                      	    // InternalSARL.g:2087:6: ({...}? => ( ({...}? => (otherlv_36= 'throws' ( (lv_exceptions_37_0= ruleJvmTypeReference ) ) (otherlv_38= ',' ( (lv_exceptions_39_0= ruleJvmTypeReference ) ) )* ) ) ) )
                      	    // InternalSARL.g:2088:7: {...}? => ( ({...}? => (otherlv_36= 'throws' ( (lv_exceptions_37_0= ruleJvmTypeReference ) ) (otherlv_38= ',' ( (lv_exceptions_39_0= ruleJvmTypeReference ) ) )* ) ) )
                      	    {
                      	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getEventMemberAccess().getUnorderedGroup_2_1_5(), 0) ) {
                      	        if (state.backtracking>0) {state.failed=true; return current;}
                      	        throw new FailedPredicateException(input, "ruleEventMember", "getUnorderedGroupHelper().canSelect(grammarAccess.getEventMemberAccess().getUnorderedGroup_2_1_5(), 0)");
                      	    }
                      	    // InternalSARL.g:2088:114: ( ({...}? => (otherlv_36= 'throws' ( (lv_exceptions_37_0= ruleJvmTypeReference ) ) (otherlv_38= ',' ( (lv_exceptions_39_0= ruleJvmTypeReference ) ) )* ) ) )
                      	    // InternalSARL.g:2089:8: ({...}? => (otherlv_36= 'throws' ( (lv_exceptions_37_0= ruleJvmTypeReference ) ) (otherlv_38= ',' ( (lv_exceptions_39_0= ruleJvmTypeReference ) ) )* ) )
                      	    {
                      	    getUnorderedGroupHelper().select(grammarAccess.getEventMemberAccess().getUnorderedGroup_2_1_5(), 0);
                      	    // InternalSARL.g:2092:11: ({...}? => (otherlv_36= 'throws' ( (lv_exceptions_37_0= ruleJvmTypeReference ) ) (otherlv_38= ',' ( (lv_exceptions_39_0= ruleJvmTypeReference ) ) )* ) )
                      	    // InternalSARL.g:2092:12: {...}? => (otherlv_36= 'throws' ( (lv_exceptions_37_0= ruleJvmTypeReference ) ) (otherlv_38= ',' ( (lv_exceptions_39_0= ruleJvmTypeReference ) ) )* )
                      	    {
                      	    if ( !((true)) ) {
                      	        if (state.backtracking>0) {state.failed=true; return current;}
                      	        throw new FailedPredicateException(input, "ruleEventMember", "true");
                      	    }
                      	    // InternalSARL.g:2092:21: (otherlv_36= 'throws' ( (lv_exceptions_37_0= ruleJvmTypeReference ) ) (otherlv_38= ',' ( (lv_exceptions_39_0= ruleJvmTypeReference ) ) )* )
                      	    // InternalSARL.g:2092:22: otherlv_36= 'throws' ( (lv_exceptions_37_0= ruleJvmTypeReference ) ) (otherlv_38= ',' ( (lv_exceptions_39_0= ruleJvmTypeReference ) ) )*
                      	    {
                      	    otherlv_36=(Token)match(input,51,FOLLOW_41); if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      											newLeafNode(otherlv_36, grammarAccess.getEventMemberAccess().getThrowsKeyword_2_1_5_0_0());
                      	      										
                      	    }
                      	    // InternalSARL.g:2096:11: ( (lv_exceptions_37_0= ruleJvmTypeReference ) )
                      	    // InternalSARL.g:2097:12: (lv_exceptions_37_0= ruleJvmTypeReference )
                      	    {
                      	    // InternalSARL.g:2097:12: (lv_exceptions_37_0= ruleJvmTypeReference )
                      	    // InternalSARL.g:2098:13: lv_exceptions_37_0= ruleJvmTypeReference
                      	    {
                      	    if ( state.backtracking==0 ) {
  
                      	      													newCompositeNode(grammarAccess.getEventMemberAccess().getExceptionsJvmTypeReferenceParserRuleCall_2_1_5_0_1_0());
                      	      												
                      	    }
                      	    pushFollow(FOLLOW_54);
                      	    lv_exceptions_37_0=ruleJvmTypeReference();
  
                      	    state._fsp--;
                      	    if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      													if (current==null) {
                      	      														current = createModelElementForParent(grammarAccess.getEventMemberRule());
                      	      													}
                      	      													add(
                      	      														current,
                      	      														"exceptions",
                      	      														lv_exceptions_37_0,
                      	      														"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
                      	      													afterParserOrEnumRuleCall();
                      	      												
                      	    }
  
                      	    }
  
  
                      	    }
  
                      	    // InternalSARL.g:2115:11: (otherlv_38= ',' ( (lv_exceptions_39_0= ruleJvmTypeReference ) ) )*
                      	    loop60:
                      	    do {
                      	        int alt60=2;
                      	        int LA60_0 = input.LA(1);
  
                      	        if ( (LA60_0==32) ) {
                      	            alt60=1;
                      	        }
  
  
                      	        switch (alt60) {
                      	    	case 1 :
                      	    	    // InternalSARL.g:2116:12: otherlv_38= ',' ( (lv_exceptions_39_0= ruleJvmTypeReference ) )
                      	    	    {
                      	    	    otherlv_38=(Token)match(input,32,FOLLOW_41); if (state.failed) return current;
                      	    	    if ( state.backtracking==0 ) {
  
                      	    	      												newLeafNode(otherlv_38, grammarAccess.getEventMemberAccess().getCommaKeyword_2_1_5_0_2_0());
                      	    	      											
                      	    	    }
                      	    	    // InternalSARL.g:2120:12: ( (lv_exceptions_39_0= ruleJvmTypeReference ) )
                      	    	    // InternalSARL.g:2121:13: (lv_exceptions_39_0= ruleJvmTypeReference )
                      	    	    {
                      	    	    // InternalSARL.g:2121:13: (lv_exceptions_39_0= ruleJvmTypeReference )
                      	    	    // InternalSARL.g:2122:14: lv_exceptions_39_0= ruleJvmTypeReference
                      	    	    {
                      	    	    if ( state.backtracking==0 ) {
  
                      	    	      														newCompositeNode(grammarAccess.getEventMemberAccess().getExceptionsJvmTypeReferenceParserRuleCall_2_1_5_0_2_1_0());
                      	    	      													
                      	    	    }
                      	    	    pushFollow(FOLLOW_54);
                      	    	    lv_exceptions_39_0=ruleJvmTypeReference();
  
                      	    	    state._fsp--;
                      	    	    if (state.failed) return current;
                      	    	    if ( state.backtracking==0 ) {
  
                      	    	      														if (current==null) {
                      	    	      															current = createModelElementForParent(grammarAccess.getEventMemberRule());
                      	    	      														}
                      	    	      														add(
                      	    	      															current,
                      	    	      															"exceptions",
                      	    	      															lv_exceptions_39_0,
                      	    	      															"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
                      	    	      														afterParserOrEnumRuleCall();
                      	    	      													
                      	    	    }
  
                      	    	    }
  
  
                      	    	    }
  
  
                      	    	    }
                      	    	    break;
  
                      	    	default :
                      	    	    break loop60;
                      	        }
                      	    } while (true);
  
  
                      	    }
  
  
                      	    }
  
                      	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEventMemberAccess().getUnorderedGroup_2_1_5());
  
                      	    }
  
  
                      	    }
  
  
                      	    }
                      	    break;
                      	case 2 :
                      	    // InternalSARL.g:2146:6: ({...}? => ( ({...}? => (otherlv_40= 'with' ( (lv_typeParameters_41_0= ruleJvmTypeParameter ) ) (otherlv_42= ',' ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) ) )* ) ) ) )
                      	    {
                      	    // InternalSARL.g:2146:6: ({...}? => ( ({...}? => (otherlv_40= 'with' ( (lv_typeParameters_41_0= ruleJvmTypeParameter ) ) (otherlv_42= ',' ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) ) )* ) ) ) )
                      	    // InternalSARL.g:2147:7: {...}? => ( ({...}? => (otherlv_40= 'with' ( (lv_typeParameters_41_0= ruleJvmTypeParameter ) ) (otherlv_42= ',' ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) ) )* ) ) )
                      	    {
                      	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getEventMemberAccess().getUnorderedGroup_2_1_5(), 1) ) {
                      	        if (state.backtracking>0) {state.failed=true; return current;}
                      	        throw new FailedPredicateException(input, "ruleEventMember", "getUnorderedGroupHelper().canSelect(grammarAccess.getEventMemberAccess().getUnorderedGroup_2_1_5(), 1)");
                      	    }
                      	    // InternalSARL.g:2147:114: ( ({...}? => (otherlv_40= 'with' ( (lv_typeParameters_41_0= ruleJvmTypeParameter ) ) (otherlv_42= ',' ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) ) )* ) ) )
                      	    // InternalSARL.g:2148:8: ({...}? => (otherlv_40= 'with' ( (lv_typeParameters_41_0= ruleJvmTypeParameter ) ) (otherlv_42= ',' ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) ) )* ) )
                      	    {
                      	    getUnorderedGroupHelper().select(grammarAccess.getEventMemberAccess().getUnorderedGroup_2_1_5(), 1);
                      	    // InternalSARL.g:2151:11: ({...}? => (otherlv_40= 'with' ( (lv_typeParameters_41_0= ruleJvmTypeParameter ) ) (otherlv_42= ',' ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) ) )* ) )
                      	    // InternalSARL.g:2151:12: {...}? => (otherlv_40= 'with' ( (lv_typeParameters_41_0= ruleJvmTypeParameter ) ) (otherlv_42= ',' ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) ) )* )
                      	    {
                      	    if ( !((true)) ) {
                      	        if (state.backtracking>0) {state.failed=true; return current;}
                      	        throw new FailedPredicateException(input, "ruleEventMember", "true");
                      	    }
                      	    // InternalSARL.g:2151:21: (otherlv_40= 'with' ( (lv_typeParameters_41_0= ruleJvmTypeParameter ) ) (otherlv_42= ',' ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) ) )* )
                      	    // InternalSARL.g:2151:22: otherlv_40= 'with' ( (lv_typeParameters_41_0= ruleJvmTypeParameter ) ) (otherlv_42= ',' ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) ) )*
                      	    {
                      	    otherlv_40=(Token)match(input,52,FOLLOW_3); if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      											newLeafNode(otherlv_40, grammarAccess.getEventMemberAccess().getWithKeyword_2_1_5_1_0());
                      	      										
                      	    }
                      	    // InternalSARL.g:2155:11: ( (lv_typeParameters_41_0= ruleJvmTypeParameter ) )
                      	    // InternalSARL.g:2156:12: (lv_typeParameters_41_0= ruleJvmTypeParameter )
                      	    {
                      	    // InternalSARL.g:2156:12: (lv_typeParameters_41_0= ruleJvmTypeParameter )
                      	    // InternalSARL.g:2157:13: lv_typeParameters_41_0= ruleJvmTypeParameter
                      	    {
                      	    if ( state.backtracking==0 ) {
  
                      	      													newCompositeNode(grammarAccess.getEventMemberAccess().getTypeParametersJvmTypeParameterParserRuleCall_2_1_5_1_1_0());
                      	      												
                      	    }
                      	    pushFollow(FOLLOW_54);
                      	    lv_typeParameters_41_0=ruleJvmTypeParameter();
  
                      	    state._fsp--;
                      	    if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      													if (current==null) {
                      	      														current = createModelElementForParent(grammarAccess.getEventMemberRule());
                      	      													}
                      	      													add(
                      	      														current,
                      	      														"typeParameters",
                      	      														lv_typeParameters_41_0,
                      	      														"org.eclipse.xtext.xbase.Xtype.JvmTypeParameter");
                      	      													afterParserOrEnumRuleCall();
                      	      												
                      	    }
  
                      	    }
  
  
                      	    }
  
                      	    // InternalSARL.g:2174:11: (otherlv_42= ',' ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) ) )*
                      	    loop61:
                      	    do {
                      	        int alt61=2;
                      	        int LA61_0 = input.LA(1);
  
                      	        if ( (LA61_0==32) ) {
                      	            alt61=1;
                      	        }
  
  
                      	        switch (alt61) {
                      	    	case 1 :
                      	    	    // InternalSARL.g:2175:12: otherlv_42= ',' ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) )
                      	    	    {
                      	    	    otherlv_42=(Token)match(input,32,FOLLOW_3); if (state.failed) return current;
                      	    	    if ( state.backtracking==0 ) {
  
                      	    	      												newLeafNode(otherlv_42, grammarAccess.getEventMemberAccess().getCommaKeyword_2_1_5_1_2_0());
                      	    	      											
                      	    	    }
                      	    	    // InternalSARL.g:2179:12: ( (lv_typeParameters_43_0= ruleJvmTypeParameter ) )
                      	    	    // InternalSARL.g:2180:13: (lv_typeParameters_43_0= ruleJvmTypeParameter )
                      	    	    {
                      	    	    // InternalSARL.g:2180:13: (lv_typeParameters_43_0= ruleJvmTypeParameter )
                      	    	    // InternalSARL.g:2181:14: lv_typeParameters_43_0= ruleJvmTypeParameter
                      	    	    {
                      	    	    if ( state.backtracking==0 ) {
  
                      	    	      														newCompositeNode(grammarAccess.getEventMemberAccess().getTypeParametersJvmTypeParameterParserRuleCall_2_1_5_1_2_1_0());
                      	    	      													
                      	    	    }
                      	    	    pushFollow(FOLLOW_54);
                      	    	    lv_typeParameters_43_0=ruleJvmTypeParameter();
  
                      	    	    state._fsp--;
                      	    	    if (state.failed) return current;
                      	    	    if ( state.backtracking==0 ) {
  
                      	    	      														if (current==null) {
                      	    	      															current = createModelElementForParent(grammarAccess.getEventMemberRule());
                      	    	      														}
                      	    	      														add(
                      	    	      															current,
                      	    	      															"typeParameters",
                      	    	      															lv_typeParameters_43_0,
                      	    	      															"org.eclipse.xtext.xbase.Xtype.JvmTypeParameter");
                      	    	      														afterParserOrEnumRuleCall();
                      	    	      													
                      	    	    }
  
                      	    	    }
  
  
                      	    	    }
  
  
                      	    	    }
                      	    	    break;
  
                      	    	default :
                      	    	    break loop61;
                      	        }
                      	    } while (true);
  
  
                      	    }
  
  
                      	    }
  
                      	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEventMemberAccess().getUnorderedGroup_2_1_5());
  
                      	    }
  
  
                      	    }
  
  
                      	    }
                      	    break;
  
                      	default :
                      	    break loop62;
                          }
                      } while (true);
  
  
                      }
  
  
                      }
  
                      getUnorderedGroupHelper().leave(grammarAccess.getEventMemberAccess().getUnorderedGroup_2_1_5());
  
                      }
  
                      // InternalSARL.g:2212:5: ( (lv_expression_44_0= ruleXBlockExpression ) )
                      // InternalSARL.g:2213:6: (lv_expression_44_0= ruleXBlockExpression )
                      {
                      // InternalSARL.g:2213:6: (lv_expression_44_0= ruleXBlockExpression )
                      // InternalSARL.g:2214:7: lv_expression_44_0= ruleXBlockExpression
                      {
                      if ( state.backtracking==0 ) {
  
                        							newCompositeNode(grammarAccess.getEventMemberAccess().getExpressionXBlockExpressionParserRuleCall_2_1_6_0());
                        						
                      }
                      pushFollow(FOLLOW_2);
                      lv_expression_44_0=ruleXBlockExpression();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        							if (current==null) {
                        								current = createModelElementForParent(grammarAccess.getEventMemberRule());
                        							}
                        							set(
                        								current,
                        								"expression",
                        								lv_expression_44_0,
                        								"org.eclipse.xtext.xbase.Xbase.XBlockExpression");
                        							afterParserOrEnumRuleCall();
                        						
                      }
  
                      }
  
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
  
                	leaveRule();
  
              }
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }