docs: public final EObject ruleAnnotationField() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_7=null;
          Token otherlv_9=null;
          Token otherlv_11=null;
          Token otherlv_14=null;
          Token otherlv_16=null;
          Token otherlv_18=null;
          Token otherlv_20=null;
          Token otherlv_22=null;
          Token otherlv_24=null;
          Token otherlv_26=null;
          Token otherlv_28=null;
          Token otherlv_30=null;
          Token otherlv_33=null;
          Token otherlv_35=null;
          Token otherlv_37=null;
          Token otherlv_39=null;
          Token otherlv_40=null;
          Token otherlv_42=null;
          Token otherlv_44=null;
          Token otherlv_46=null;
          Token otherlv_49=null;
          Token otherlv_51=null;
          Token otherlv_53=null;
          Token otherlv_55=null;
          Token otherlv_56=null;
          Token otherlv_59=null;
          Token otherlv_61=null;
          Token otherlv_63=null;
          EObject lv_annotations_1_0 = null;
  
          AntlrDatatypeRuleToken lv_modifiers_3_0 = null;
  
          AntlrDatatypeRuleToken lv_modifiers_4_0 = null;
  
          AntlrDatatypeRuleToken lv_modifiers_5_0 = null;
  
          AntlrDatatypeRuleToken lv_name_6_0 = null;
  
          EObject lv_type_8_0 = null;
  
          EObject lv_initialValue_10_0 = null;
  
          AntlrDatatypeRuleToken lv_modifiers_13_0 = null;
  
          AntlrDatatypeRuleToken lv_name_15_0 = null;
  
          EObject lv_typeParameters_17_0 = null;
  
          EObject lv_typeParameters_19_0 = null;
  
          EObject lv_extends_23_0 = null;
  
          EObject lv_implements_25_0 = null;
  
          EObject lv_implements_27_0 = null;
  
          EObject lv_members_29_0 = null;
  
          AntlrDatatypeRuleToken lv_modifiers_32_0 = null;
  
          AntlrDatatypeRuleToken lv_name_34_0 = null;
  
          EObject lv_typeParameters_36_0 = null;
  
          EObject lv_typeParameters_38_0 = null;
  
          EObject lv_extends_41_0 = null;
  
          EObject lv_extends_43_0 = null;
  
          EObject lv_members_45_0 = null;
  
          AntlrDatatypeRuleToken lv_modifiers_48_0 = null;
  
          AntlrDatatypeRuleToken lv_name_50_0 = null;
  
          EObject lv_members_52_0 = null;
  
          EObject lv_members_54_0 = null;
  
          AntlrDatatypeRuleToken lv_modifiers_58_0 = null;
  
          AntlrDatatypeRuleToken lv_name_60_0 = null;
  
          EObject lv_members_62_0 = null;
  
  
  
          	enterRule();
  
          try {
              // InternalSARL.g:6451:2: ( ( () ( (lv_annotations_1_0= ruleXAnnotation ) )* ( ( () ( (lv_modifiers_3_0= ruleCommonModifier ) )* ( (lv_modifiers_4_0= ruleFieldModifier ) ) ( (lv_modifiers_5_0= ruleCommonModifier ) )* ( (lv_name_6_0= ruleValidID ) ) (otherlv_7= ':' ( (lv_type_8_0= ruleJvmTypeReference ) ) )? (otherlv_9= '=' ( (lv_initialValue_10_0= ruleXAnnotationElementValue ) ) )? (otherlv_11= ';' )? ) | ( () ( (lv_modifiers_13_0= ruleCommonModifier ) )* otherlv_14= 'class' ( (lv_name_15_0= ruleValidID ) ) (otherlv_16= '<' ( (lv_typeParameters_17_0= ruleJvmTypeParameter ) ) (otherlv_18= ',' ( (lv_typeParameters_19_0= ruleJvmTypeParameter ) ) )* otherlv_20= '>' )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_22= 'extends' ( (lv_extends_23_0= ruleJvmParameterizedTypeReference ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'implements' ( (lv_implements_25_0= ruleJvmParameterizedTypeReference ) ) (otherlv_26= ',' ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) ) )* ) ) ) ) )* ) ) ) otherlv_28= '{' ( (lv_members_29_0= ruleMember ) )* otherlv_30= '}' ) | ( () ( (lv_modifiers_32_0= ruleCommonModifier ) )* otherlv_33= 'interface' ( (lv_name_34_0= ruleValidID ) ) (otherlv_35= '<' ( (lv_typeParameters_36_0= ruleJvmTypeParameter ) ) (otherlv_37= ',' ( (lv_typeParameters_38_0= ruleJvmTypeParameter ) ) )* otherlv_39= '>' )? (otherlv_40= 'extends' ( (lv_extends_41_0= ruleJvmParameterizedTypeReference ) ) (otherlv_42= ',' ( (lv_extends_43_0= ruleJvmParameterizedTypeReference ) ) )* )? otherlv_44= '{' ( (lv_members_45_0= ruleMember ) )* otherlv_46= '}' ) | ( () ( (lv_modifiers_48_0= ruleCommonModifier ) )* otherlv_49= 'enum' ( (lv_name_50_0= ruleValidID ) ) otherlv_51= '{' ( ( (lv_members_52_0= ruleXtendEnumLiteral ) ) (otherlv_53= ',' ( (lv_members_54_0= ruleXtendEnumLiteral ) ) )* )? (otherlv_55= ';' )? otherlv_56= '}' ) | ( () ( (lv_modifiers_58_0= ruleCommonModifier ) )* otherlv_59= 'annotation' ( (lv_name_60_0= ruleValidID ) ) otherlv_61= '{' ( (lv_members_62_0= ruleAnnotationField ) )* otherlv_63= '}' ) ) ) )
              // InternalSARL.g:6452:2: ( () ( (lv_annotations_1_0= ruleXAnnotation ) )* ( ( () ( (lv_modifiers_3_0= ruleCommonModifier ) )* ( (lv_modifiers_4_0= ruleFieldModifier ) ) ( (lv_modifiers_5_0= ruleCommonModifier ) )* ( (lv_name_6_0= ruleValidID ) ) (otherlv_7= ':' ( (lv_type_8_0= ruleJvmTypeReference ) ) )? (otherlv_9= '=' ( (lv_initialValue_10_0= ruleXAnnotationElementValue ) ) )? (otherlv_11= ';' )? ) | ( () ( (lv_modifiers_13_0= ruleCommonModifier ) )* otherlv_14= 'class' ( (lv_name_15_0= ruleValidID ) ) (otherlv_16= '<' ( (lv_typeParameters_17_0= ruleJvmTypeParameter ) ) (otherlv_18= ',' ( (lv_typeParameters_19_0= ruleJvmTypeParameter ) ) )* otherlv_20= '>' )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_22= 'extends' ( (lv_extends_23_0= ruleJvmParameterizedTypeReference ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'implements' ( (lv_implements_25_0= ruleJvmParameterizedTypeReference ) ) (otherlv_26= ',' ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) ) )* ) ) ) ) )* ) ) ) otherlv_28= '{' ( (lv_members_29_0= ruleMember ) )* otherlv_30= '}' ) | ( () ( (lv_modifiers_32_0= ruleCommonModifier ) )* otherlv_33= 'interface' ( (lv_name_34_0= ruleValidID ) ) (otherlv_35= '<' ( (lv_typeParameters_36_0= ruleJvmTypeParameter ) ) (otherlv_37= ',' ( (lv_typeParameters_38_0= ruleJvmTypeParameter ) ) )* otherlv_39= '>' )? (otherlv_40= 'extends' ( (lv_extends_41_0= ruleJvmParameterizedTypeReference ) ) (otherlv_42= ',' ( (lv_extends_43_0= ruleJvmParameterizedTypeReference ) ) )* )? otherlv_44= '{' ( (lv_members_45_0= ruleMember ) )* otherlv_46= '}' ) | ( () ( (lv_modifiers_48_0= ruleCommonModifier ) )* otherlv_49= 'enum' ( (lv_name_50_0= ruleValidID ) ) otherlv_51= '{' ( ( (lv_members_52_0= ruleXtendEnumLiteral ) ) (otherlv_53= ',' ( (lv_members_54_0= ruleXtendEnumLiteral ) ) )* )? (otherlv_55= ';' )? otherlv_56= '}' ) | ( () ( (lv_modifiers_58_0= ruleCommonModifier ) )* otherlv_59= 'annotation' ( (lv_name_60_0= ruleValidID ) ) otherlv_61= '{' ( (lv_members_62_0= ruleAnnotationField ) )* otherlv_63= '}' ) ) )
              {
              // InternalSARL.g:6452:2: ( () ( (lv_annotations_1_0= ruleXAnnotation ) )* ( ( () ( (lv_modifiers_3_0= ruleCommonModifier ) )* ( (lv_modifiers_4_0= ruleFieldModifier ) ) ( (lv_modifiers_5_0= ruleCommonModifier ) )* ( (lv_name_6_0= ruleValidID ) ) (otherlv_7= ':' ( (lv_type_8_0= ruleJvmTypeReference ) ) )? (otherlv_9= '=' ( (lv_initialValue_10_0= ruleXAnnotationElementValue ) ) )? (otherlv_11= ';' )? ) | ( () ( (lv_modifiers_13_0= ruleCommonModifier ) )* otherlv_14= 'class' ( (lv_name_15_0= ruleValidID ) ) (otherlv_16= '<' ( (lv_typeParameters_17_0= ruleJvmTypeParameter ) ) (otherlv_18= ',' ( (lv_typeParameters_19_0= ruleJvmTypeParameter ) ) )* otherlv_20= '>' )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_22= 'extends' ( (lv_extends_23_0= ruleJvmParameterizedTypeReference ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'implements' ( (lv_implements_25_0= ruleJvmParameterizedTypeReference ) ) (otherlv_26= ',' ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) ) )* ) ) ) ) )* ) ) ) otherlv_28= '{' ( (lv_members_29_0= ruleMember ) )* otherlv_30= '}' ) | ( () ( (lv_modifiers_32_0= ruleCommonModifier ) )* otherlv_33= 'interface' ( (lv_name_34_0= ruleValidID ) ) (otherlv_35= '<' ( (lv_typeParameters_36_0= ruleJvmTypeParameter ) ) (otherlv_37= ',' ( (lv_typeParameters_38_0= ruleJvmTypeParameter ) ) )* otherlv_39= '>' )? (otherlv_40= 'extends' ( (lv_extends_41_0= ruleJvmParameterizedTypeReference ) ) (otherlv_42= ',' ( (lv_extends_43_0= ruleJvmParameterizedTypeReference ) ) )* )? otherlv_44= '{' ( (lv_members_45_0= ruleMember ) )* otherlv_46= '}' ) | ( () ( (lv_modifiers_48_0= ruleCommonModifier ) )* otherlv_49= 'enum' ( (lv_name_50_0= ruleValidID ) ) otherlv_51= '{' ( ( (lv_members_52_0= ruleXtendEnumLiteral ) ) (otherlv_53= ',' ( (lv_members_54_0= ruleXtendEnumLiteral ) ) )* )? (otherlv_55= ';' )? otherlv_56= '}' ) | ( () ( (lv_modifiers_58_0= ruleCommonModifier ) )* otherlv_59= 'annotation' ( (lv_name_60_0= ruleValidID ) ) otherlv_61= '{' ( (lv_members_62_0= ruleAnnotationField ) )* otherlv_63= '}' ) ) )
              // InternalSARL.g:6453:3: () ( (lv_annotations_1_0= ruleXAnnotation ) )* ( ( () ( (lv_modifiers_3_0= ruleCommonModifier ) )* ( (lv_modifiers_4_0= ruleFieldModifier ) ) ( (lv_modifiers_5_0= ruleCommonModifier ) )* ( (lv_name_6_0= ruleValidID ) ) (otherlv_7= ':' ( (lv_type_8_0= ruleJvmTypeReference ) ) )? (otherlv_9= '=' ( (lv_initialValue_10_0= ruleXAnnotationElementValue ) ) )? (otherlv_11= ';' )? ) | ( () ( (lv_modifiers_13_0= ruleCommonModifier ) )* otherlv_14= 'class' ( (lv_name_15_0= ruleValidID ) ) (otherlv_16= '<' ( (lv_typeParameters_17_0= ruleJvmTypeParameter ) ) (otherlv_18= ',' ( (lv_typeParameters_19_0= ruleJvmTypeParameter ) ) )* otherlv_20= '>' )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_22= 'extends' ( (lv_extends_23_0= ruleJvmParameterizedTypeReference ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'implements' ( (lv_implements_25_0= ruleJvmParameterizedTypeReference ) ) (otherlv_26= ',' ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) ) )* ) ) ) ) )* ) ) ) otherlv_28= '{' ( (lv_members_29_0= ruleMember ) )* otherlv_30= '}' ) | ( () ( (lv_modifiers_32_0= ruleCommonModifier ) )* otherlv_33= 'interface' ( (lv_name_34_0= ruleValidID ) ) (otherlv_35= '<' ( (lv_typeParameters_36_0= ruleJvmTypeParameter ) ) (otherlv_37= ',' ( (lv_typeParameters_38_0= ruleJvmTypeParameter ) ) )* otherlv_39= '>' )? (otherlv_40= 'extends' ( (lv_extends_41_0= ruleJvmParameterizedTypeReference ) ) (otherlv_42= ',' ( (lv_extends_43_0= ruleJvmParameterizedTypeReference ) ) )* )? otherlv_44= '{' ( (lv_members_45_0= ruleMember ) )* otherlv_46= '}' ) | ( () ( (lv_modifiers_48_0= ruleCommonModifier ) )* otherlv_49= 'enum' ( (lv_name_50_0= ruleValidID ) ) otherlv_51= '{' ( ( (lv_members_52_0= ruleXtendEnumLiteral ) ) (otherlv_53= ',' ( (lv_members_54_0= ruleXtendEnumLiteral ) ) )* )? (otherlv_55= ';' )? otherlv_56= '}' ) | ( () ( (lv_modifiers_58_0= ruleCommonModifier ) )* otherlv_59= 'annotation' ( (lv_name_60_0= ruleValidID ) ) otherlv_61= '{' ( (lv_members_62_0= ruleAnnotationField ) )* otherlv_63= '}' ) )
              {
              // InternalSARL.g:6453:3: ()
              // InternalSARL.g:6454:4: 
              {
              if ( state.backtracking==0 ) {
  
                				current = forceCreateModelElement(
                					grammarAccess.getAnnotationFieldAccess().getXtendMemberAction_0(),
                					current);
                			
              }
  
              }
  
              // InternalSARL.g:6460:3: ( (lv_annotations_1_0= ruleXAnnotation ) )*
              loop186:
              do {
                  int alt186=2;
                  int LA186_0 = input.LA(1);
  
                  if ( (LA186_0==105) ) {
                      alt186=1;
                  }
  
  
                  switch (alt186) {
              	case 1 :
              	    // InternalSARL.g:6461:4: (lv_annotations_1_0= ruleXAnnotation )
              	    {
              	    // InternalSARL.g:6461:4: (lv_annotations_1_0= ruleXAnnotation )
              	    // InternalSARL.g:6462:5: lv_annotations_1_0= ruleXAnnotation
              	    {
              	    if ( state.backtracking==0 ) {
  
              	      					newCompositeNode(grammarAccess.getAnnotationFieldAccess().getAnnotationsXAnnotationParserRuleCall_1_0());
              	      				
              	    }
              	    pushFollow(FOLLOW_67);
              	    lv_annotations_1_0=ruleXAnnotation();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      					if (current==null) {
              	      						current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
              	      					}
              	      					add(
              	      						current,
              	      						"annotations",
              	      						lv_annotations_1_0,
              	      						"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotation");
              	      					afterParserOrEnumRuleCall();
              	      				
              	    }
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop186;
                  }
              } while (true);
  
              // InternalSARL.g:6479:3: ( ( () ( (lv_modifiers_3_0= ruleCommonModifier ) )* ( (lv_modifiers_4_0= ruleFieldModifier ) ) ( (lv_modifiers_5_0= ruleCommonModifier ) )* ( (lv_name_6_0= ruleValidID ) ) (otherlv_7= ':' ( (lv_type_8_0= ruleJvmTypeReference ) ) )? (otherlv_9= '=' ( (lv_initialValue_10_0= ruleXAnnotationElementValue ) ) )? (otherlv_11= ';' )? ) | ( () ( (lv_modifiers_13_0= ruleCommonModifier ) )* otherlv_14= 'class' ( (lv_name_15_0= ruleValidID ) ) (otherlv_16= '<' ( (lv_typeParameters_17_0= ruleJvmTypeParameter ) ) (otherlv_18= ',' ( (lv_typeParameters_19_0= ruleJvmTypeParameter ) ) )* otherlv_20= '>' )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_22= 'extends' ( (lv_extends_23_0= ruleJvmParameterizedTypeReference ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'implements' ( (lv_implements_25_0= ruleJvmParameterizedTypeReference ) ) (otherlv_26= ',' ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) ) )* ) ) ) ) )* ) ) ) otherlv_28= '{' ( (lv_members_29_0= ruleMember ) )* otherlv_30= '}' ) | ( () ( (lv_modifiers_32_0= ruleCommonModifier ) )* otherlv_33= 'interface' ( (lv_name_34_0= ruleValidID ) ) (otherlv_35= '<' ( (lv_typeParameters_36_0= ruleJvmTypeParameter ) ) (otherlv_37= ',' ( (lv_typeParameters_38_0= ruleJvmTypeParameter ) ) )* otherlv_39= '>' )? (otherlv_40= 'extends' ( (lv_extends_41_0= ruleJvmParameterizedTypeReference ) ) (otherlv_42= ',' ( (lv_extends_43_0= ruleJvmParameterizedTypeReference ) ) )* )? otherlv_44= '{' ( (lv_members_45_0= ruleMember ) )* otherlv_46= '}' ) | ( () ( (lv_modifiers_48_0= ruleCommonModifier ) )* otherlv_49= 'enum' ( (lv_name_50_0= ruleValidID ) ) otherlv_51= '{' ( ( (lv_members_52_0= ruleXtendEnumLiteral ) ) (otherlv_53= ',' ( (lv_members_54_0= ruleXtendEnumLiteral ) ) )* )? (otherlv_55= ';' )? otherlv_56= '}' ) | ( () ( (lv_modifiers_58_0= ruleCommonModifier ) )* otherlv_59= 'annotation' ( (lv_name_60_0= ruleValidID ) ) otherlv_61= '{' ( (lv_members_62_0= ruleAnnotationField ) )* otherlv_63= '}' ) )
              int alt210=5;
              alt210 = dfa210.predict(input);
              switch (alt210) {
                  case 1 :
                      // InternalSARL.g:6480:4: ( () ( (lv_modifiers_3_0= ruleCommonModifier ) )* ( (lv_modifiers_4_0= ruleFieldModifier ) ) ( (lv_modifiers_5_0= ruleCommonModifier ) )* ( (lv_name_6_0= ruleValidID ) ) (otherlv_7= ':' ( (lv_type_8_0= ruleJvmTypeReference ) ) )? (otherlv_9= '=' ( (lv_initialValue_10_0= ruleXAnnotationElementValue ) ) )? (otherlv_11= ';' )? )
                      {
                      // InternalSARL.g:6480:4: ( () ( (lv_modifiers_3_0= ruleCommonModifier ) )* ( (lv_modifiers_4_0= ruleFieldModifier ) ) ( (lv_modifiers_5_0= ruleCommonModifier ) )* ( (lv_name_6_0= ruleValidID ) ) (otherlv_7= ':' ( (lv_type_8_0= ruleJvmTypeReference ) ) )? (otherlv_9= '=' ( (lv_initialValue_10_0= ruleXAnnotationElementValue ) ) )? (otherlv_11= ';' )? )
                      // InternalSARL.g:6481:5: () ( (lv_modifiers_3_0= ruleCommonModifier ) )* ( (lv_modifiers_4_0= ruleFieldModifier ) ) ( (lv_modifiers_5_0= ruleCommonModifier ) )* ( (lv_name_6_0= ruleValidID ) ) (otherlv_7= ':' ( (lv_type_8_0= ruleJvmTypeReference ) ) )? (otherlv_9= '=' ( (lv_initialValue_10_0= ruleXAnnotationElementValue ) ) )? (otherlv_11= ';' )?
                      {
                      // InternalSARL.g:6481:5: ()
                      // InternalSARL.g:6482:6: 
                      {
                      if ( state.backtracking==0 ) {
  
                        						current = forceCreateModelElementAndSet(
                        							grammarAccess.getAnnotationFieldAccess().getSarlFieldAnnotationInfoAction_2_0_0(),
                        							current);
                        					
                      }
  
                      }
  
                      // InternalSARL.g:6488:5: ( (lv_modifiers_3_0= ruleCommonModifier ) )*
                      loop187:
                      do {
                          int alt187=2;
                          int LA187_0 = input.LA(1);
  
                          if ( (LA187_0==25||(LA187_0>=78 && LA187_0<=89)) ) {
                              alt187=1;
                          }
  
  
                          switch (alt187) {
                      	case 1 :
                      	    // InternalSARL.g:6489:6: (lv_modifiers_3_0= ruleCommonModifier )
                      	    {
                      	    // InternalSARL.g:6489:6: (lv_modifiers_3_0= ruleCommonModifier )
                      	    // InternalSARL.g:6490:7: lv_modifiers_3_0= ruleCommonModifier
                      	    {
                      	    if ( state.backtracking==0 ) {
  
                      	      							newCompositeNode(grammarAccess.getAnnotationFieldAccess().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.getAnnotationFieldRule());
                      	      							}
                      	      							add(
                      	      								current,
                      	      								"modifiers",
                      	      								lv_modifiers_3_0,
                      	      								"org.eclipse.xtend.core.Xtend.CommonModifier");
                      	      							afterParserOrEnumRuleCall();
                      	      						
                      	    }
  
                      	    }
  
  
                      	    }
                      	    break;
  
                      	default :
                      	    break loop187;
                          }
                      } while (true);
  
                      // InternalSARL.g:6507:5: ( (lv_modifiers_4_0= ruleFieldModifier ) )
                      // InternalSARL.g:6508:6: (lv_modifiers_4_0= ruleFieldModifier )
                      {
                      // InternalSARL.g:6508:6: (lv_modifiers_4_0= ruleFieldModifier )
                      // InternalSARL.g:6509:7: lv_modifiers_4_0= ruleFieldModifier
                      {
                      if ( state.backtracking==0 ) {
  
                        							newCompositeNode(grammarAccess.getAnnotationFieldAccess().getModifiersFieldModifierParserRuleCall_2_0_2_0());
                        						
                      }
                      pushFollow(FOLLOW_68);
                      lv_modifiers_4_0=ruleFieldModifier();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        							if (current==null) {
                        								current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                        							}
                        							add(
                        								current,
                        								"modifiers",
                        								lv_modifiers_4_0,
                        								"org.eclipse.xtend.core.Xtend.FieldModifier");
                        							afterParserOrEnumRuleCall();
                        						
                      }
  
                      }
  
  
                      }
  
                      // InternalSARL.g:6526:5: ( (lv_modifiers_5_0= ruleCommonModifier ) )*
                      loop188:
                      do {
                          int alt188=2;
                          int LA188_0 = input.LA(1);
  
                          if ( (LA188_0==25||(LA188_0>=78 && LA188_0<=89)) ) {
                              alt188=1;
                          }
  
  
                          switch (alt188) {
                      	case 1 :
                      	    // InternalSARL.g:6527:6: (lv_modifiers_5_0= ruleCommonModifier )
                      	    {
                      	    // InternalSARL.g:6527:6: (lv_modifiers_5_0= ruleCommonModifier )
                      	    // InternalSARL.g:6528:7: lv_modifiers_5_0= ruleCommonModifier
                      	    {
                      	    if ( state.backtracking==0 ) {
  
                      	      							newCompositeNode(grammarAccess.getAnnotationFieldAccess().getModifiersCommonModifierParserRuleCall_2_0_3_0());
                      	      						
                      	    }
                      	    pushFollow(FOLLOW_68);
                      	    lv_modifiers_5_0=ruleCommonModifier();
  
                      	    state._fsp--;
                      	    if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      							if (current==null) {
                      	      								current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                      	      							}
                      	      							add(
                      	      								current,
                      	      								"modifiers",
                      	      								lv_modifiers_5_0,
                      	      								"org.eclipse.xtend.core.Xtend.CommonModifier");
                      	      							afterParserOrEnumRuleCall();
                      	      						
                      	    }
  
                      	    }
  
  
                      	    }
                      	    break;
  
                      	default :
                      	    break loop188;
                          }
                      } while (true);
  
                      // InternalSARL.g:6545:5: ( (lv_name_6_0= ruleValidID ) )
                      // InternalSARL.g:6546:6: (lv_name_6_0= ruleValidID )
                      {
                      // InternalSARL.g:6546:6: (lv_name_6_0= ruleValidID )
                      // InternalSARL.g:6547:7: lv_name_6_0= ruleValidID
                      {
                      if ( state.backtracking==0 ) {
  
                        							newCompositeNode(grammarAccess.getAnnotationFieldAccess().getNameValidIDParserRuleCall_2_0_4_0());
                        						
                      }
                      pushFollow(FOLLOW_44);
                      lv_name_6_0=ruleValidID();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        							if (current==null) {
                        								current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                        							}
                        							set(
                        								current,
                        								"name",
                        								lv_name_6_0,
                        								"org.eclipse.xtend.core.Xtend.ValidID");
                        							afterParserOrEnumRuleCall();
                        						
                      }
  
                      }
  
  
                      }
  
                      // InternalSARL.g:6564:5: (otherlv_7= ':' ( (lv_type_8_0= ruleJvmTypeReference ) ) )?
                      int alt189=2;
                      int LA189_0 = input.LA(1);
  
                      if ( (LA189_0==46) ) {
                          alt189=1;
                      }
                      switch (alt189) {
                          case 1 :
                              // InternalSARL.g:6565:6: otherlv_7= ':' ( (lv_type_8_0= ruleJvmTypeReference ) )
                              {
                              otherlv_7=(Token)match(input,46,FOLLOW_41); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                						newLeafNode(otherlv_7, grammarAccess.getAnnotationFieldAccess().getColonKeyword_2_0_5_0());
                                					
                              }
                              // InternalSARL.g:6569:6: ( (lv_type_8_0= ruleJvmTypeReference ) )
                              // InternalSARL.g:6570:7: (lv_type_8_0= ruleJvmTypeReference )
                              {
                              // InternalSARL.g:6570:7: (lv_type_8_0= ruleJvmTypeReference )
                              // InternalSARL.g:6571:8: lv_type_8_0= ruleJvmTypeReference
                              {
                              if ( state.backtracking==0 ) {
  
                                								newCompositeNode(grammarAccess.getAnnotationFieldAccess().getTypeJvmTypeReferenceParserRuleCall_2_0_5_1_0());
                                							
                              }
                              pushFollow(FOLLOW_42);
                              lv_type_8_0=ruleJvmTypeReference();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                								if (current==null) {
                                									current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                                								}
                                								set(
                                									current,
                                									"type",
                                									lv_type_8_0,
                                									"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
                                								afterParserOrEnumRuleCall();
                                							
                              }
  
                              }
  
  
                              }
  
  
                              }
                              break;
  
                      }
  
                      // InternalSARL.g:6589:5: (otherlv_9= '=' ( (lv_initialValue_10_0= ruleXAnnotationElementValue ) ) )?
                      int alt190=2;
                      int LA190_0 = input.LA(1);
  
                      if ( (LA190_0==47) ) {
                          alt190=1;
                      }
                      switch (alt190) {
                          case 1 :
                              // InternalSARL.g:6590:6: otherlv_9= '=' ( (lv_initialValue_10_0= ruleXAnnotationElementValue ) )
                              {
                              otherlv_9=(Token)match(input,47,FOLLOW_69); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                						newLeafNode(otherlv_9, grammarAccess.getAnnotationFieldAccess().getEqualsSignKeyword_2_0_6_0());
                                					
                              }
                              // InternalSARL.g:6594:6: ( (lv_initialValue_10_0= ruleXAnnotationElementValue ) )
                              // InternalSARL.g:6595:7: (lv_initialValue_10_0= ruleXAnnotationElementValue )
                              {
                              // InternalSARL.g:6595:7: (lv_initialValue_10_0= ruleXAnnotationElementValue )
                              // InternalSARL.g:6596:8: lv_initialValue_10_0= ruleXAnnotationElementValue
                              {
                              if ( state.backtracking==0 ) {
  
                                								newCompositeNode(grammarAccess.getAnnotationFieldAccess().getInitialValueXAnnotationElementValueParserRuleCall_2_0_6_1_0());
                                							
                              }
                              pushFollow(FOLLOW_46);
                              lv_initialValue_10_0=ruleXAnnotationElementValue();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                								if (current==null) {
                                									current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                                								}
                                								set(
                                									current,
                                									"initialValue",
                                									lv_initialValue_10_0,
                                									"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationElementValue");
                                								afterParserOrEnumRuleCall();
                                							
                              }
  
                              }
  
  
                              }
  
  
                              }
                              break;
  
                      }
  
                      // InternalSARL.g:6614:5: (otherlv_11= ';' )?
                      int alt191=2;
                      int LA191_0 = input.LA(1);
  
                      if ( (LA191_0==26) ) {
                          alt191=1;
                      }
                      switch (alt191) {
                          case 1 :
                              // InternalSARL.g:6615:6: otherlv_11= ';'
                              {
                              otherlv_11=(Token)match(input,26,FOLLOW_2); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                						newLeafNode(otherlv_11, grammarAccess.getAnnotationFieldAccess().getSemicolonKeyword_2_0_7());
                                					
                              }
  
                              }
                              break;
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // InternalSARL.g:6622:4: ( () ( (lv_modifiers_13_0= ruleCommonModifier ) )* otherlv_14= 'class' ( (lv_name_15_0= ruleValidID ) ) (otherlv_16= '<' ( (lv_typeParameters_17_0= ruleJvmTypeParameter ) ) (otherlv_18= ',' ( (lv_typeParameters_19_0= ruleJvmTypeParameter ) ) )* otherlv_20= '>' )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_22= 'extends' ( (lv_extends_23_0= ruleJvmParameterizedTypeReference ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'implements' ( (lv_implements_25_0= ruleJvmParameterizedTypeReference ) ) (otherlv_26= ',' ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) ) )* ) ) ) ) )* ) ) ) otherlv_28= '{' ( (lv_members_29_0= ruleMember ) )* otherlv_30= '}' )
                      {
                      // InternalSARL.g:6622:4: ( () ( (lv_modifiers_13_0= ruleCommonModifier ) )* otherlv_14= 'class' ( (lv_name_15_0= ruleValidID ) ) (otherlv_16= '<' ( (lv_typeParameters_17_0= ruleJvmTypeParameter ) ) (otherlv_18= ',' ( (lv_typeParameters_19_0= ruleJvmTypeParameter ) ) )* otherlv_20= '>' )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_22= 'extends' ( (lv_extends_23_0= ruleJvmParameterizedTypeReference ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'implements' ( (lv_implements_25_0= ruleJvmParameterizedTypeReference ) ) (otherlv_26= ',' ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) ) )* ) ) ) ) )* ) ) ) otherlv_28= '{' ( (lv_members_29_0= ruleMember ) )* otherlv_30= '}' )
                      // InternalSARL.g:6623:5: () ( (lv_modifiers_13_0= ruleCommonModifier ) )* otherlv_14= 'class' ( (lv_name_15_0= ruleValidID ) ) (otherlv_16= '<' ( (lv_typeParameters_17_0= ruleJvmTypeParameter ) ) (otherlv_18= ',' ( (lv_typeParameters_19_0= ruleJvmTypeParameter ) ) )* otherlv_20= '>' )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_22= 'extends' ( (lv_extends_23_0= ruleJvmParameterizedTypeReference ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'implements' ( (lv_implements_25_0= ruleJvmParameterizedTypeReference ) ) (otherlv_26= ',' ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) ) )* ) ) ) ) )* ) ) ) otherlv_28= '{' ( (lv_members_29_0= ruleMember ) )* otherlv_30= '}'
                      {
                      // InternalSARL.g:6623:5: ()
                      // InternalSARL.g:6624:6: 
                      {
                      if ( state.backtracking==0 ) {
  
                        						current = forceCreateModelElementAndSet(
                        							grammarAccess.getAnnotationFieldAccess().getSarlClassAnnotationInfoAction_2_1_0(),
                        							current);
                        					
                      }
  
                      }
  
                      // InternalSARL.g:6630:5: ( (lv_modifiers_13_0= ruleCommonModifier ) )*
                      loop192:
                      do {
                          int alt192=2;
                          int LA192_0 = input.LA(1);
  
                          if ( (LA192_0==25||(LA192_0>=78 && LA192_0<=89)) ) {
                              alt192=1;
                          }
  
  
                          switch (alt192) {
                      	case 1 :
                      	    // InternalSARL.g:6631:6: (lv_modifiers_13_0= ruleCommonModifier )
                      	    {
                      	    // InternalSARL.g:6631:6: (lv_modifiers_13_0= ruleCommonModifier )
                      	    // InternalSARL.g:6632:7: lv_modifiers_13_0= ruleCommonModifier
                      	    {
                      	    if ( state.backtracking==0 ) {
  
                      	      							newCompositeNode(grammarAccess.getAnnotationFieldAccess().getModifiersCommonModifierParserRuleCall_2_1_1_0());
                      	      						
                      	    }
                      	    pushFollow(FOLLOW_26);
                      	    lv_modifiers_13_0=ruleCommonModifier();
  
                      	    state._fsp--;
                      	    if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      							if (current==null) {
                      	      								current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                      	      							}
                      	      							add(
                      	      								current,
                      	      								"modifiers",
                      	      								lv_modifiers_13_0,
                      	      								"org.eclipse.xtend.core.Xtend.CommonModifier");
                      	      							afterParserOrEnumRuleCall();
                      	      						
                      	    }
  
                      	    }
  
  
                      	    }
                      	    break;
  
                      	default :
                      	    break loop192;
                          }
                      } while (true);
  
                      otherlv_14=(Token)match(input,39,FOLLOW_3); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        					newLeafNode(otherlv_14, grammarAccess.getAnnotationFieldAccess().getClassKeyword_2_1_2());
                        				
                      }
                      // InternalSARL.g:6653:5: ( (lv_name_15_0= ruleValidID ) )
                      // InternalSARL.g:6654:6: (lv_name_15_0= ruleValidID )
                      {
                      // InternalSARL.g:6654:6: (lv_name_15_0= ruleValidID )
                      // InternalSARL.g:6655:7: lv_name_15_0= ruleValidID
                      {
                      if ( state.backtracking==0 ) {
  
                        							newCompositeNode(grammarAccess.getAnnotationFieldAccess().getNameValidIDParserRuleCall_2_1_3_0());
                        						
                      }
                      pushFollow(FOLLOW_27);
                      lv_name_15_0=ruleValidID();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        							if (current==null) {
                        								current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                        							}
                        							set(
                        								current,
                        								"name",
                        								lv_name_15_0,
                        								"org.eclipse.xtend.core.Xtend.ValidID");
                        							afterParserOrEnumRuleCall();
                        						
                      }
  
                      }
  
  
                      }
  
                      // InternalSARL.g:6672:5: (otherlv_16= '<' ( (lv_typeParameters_17_0= ruleJvmTypeParameter ) ) (otherlv_18= ',' ( (lv_typeParameters_19_0= ruleJvmTypeParameter ) ) )* otherlv_20= '>' )?
                      int alt194=2;
                      int LA194_0 = input.LA(1);
  
                      if ( (LA194_0==40) ) {
                          alt194=1;
                      }
                      switch (alt194) {
                          case 1 :
                              // InternalSARL.g:6673:6: otherlv_16= '<' ( (lv_typeParameters_17_0= ruleJvmTypeParameter ) ) (otherlv_18= ',' ( (lv_typeParameters_19_0= ruleJvmTypeParameter ) ) )* otherlv_20= '>'
                              {
                              otherlv_16=(Token)match(input,40,FOLLOW_3); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                						newLeafNode(otherlv_16, grammarAccess.getAnnotationFieldAccess().getLessThanSignKeyword_2_1_4_0());
                                					
                              }
                              // InternalSARL.g:6677:6: ( (lv_typeParameters_17_0= ruleJvmTypeParameter ) )
                              // InternalSARL.g:6678:7: (lv_typeParameters_17_0= ruleJvmTypeParameter )
                              {
                              // InternalSARL.g:6678:7: (lv_typeParameters_17_0= ruleJvmTypeParameter )
                              // InternalSARL.g:6679:8: lv_typeParameters_17_0= ruleJvmTypeParameter
                              {
                              if ( state.backtracking==0 ) {
  
                                								newCompositeNode(grammarAccess.getAnnotationFieldAccess().getTypeParametersJvmTypeParameterParserRuleCall_2_1_4_1_0());
                                							
                              }
                              pushFollow(FOLLOW_28);
                              lv_typeParameters_17_0=ruleJvmTypeParameter();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                								if (current==null) {
                                									current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                                								}
                                								add(
                                									current,
                                									"typeParameters",
                                									lv_typeParameters_17_0,
                                									"org.eclipse.xtext.xbase.Xtype.JvmTypeParameter");
                                								afterParserOrEnumRuleCall();
                                							
                              }
  
                              }
  
  
                              }
  
                              // InternalSARL.g:6696:6: (otherlv_18= ',' ( (lv_typeParameters_19_0= ruleJvmTypeParameter ) ) )*
                              loop193:
                              do {
                                  int alt193=2;
                                  int LA193_0 = input.LA(1);
  
                                  if ( (LA193_0==32) ) {
                                      alt193=1;
                                  }
  
  
                                  switch (alt193) {
                              	case 1 :
                              	    // InternalSARL.g:6697:7: otherlv_18= ',' ( (lv_typeParameters_19_0= ruleJvmTypeParameter ) )
                              	    {
                              	    otherlv_18=(Token)match(input,32,FOLLOW_3); if (state.failed) return current;
                              	    if ( state.backtracking==0 ) {
  
                              	      							newLeafNode(otherlv_18, grammarAccess.getAnnotationFieldAccess().getCommaKeyword_2_1_4_2_0());
                              	      						
                              	    }
                              	    // InternalSARL.g:6701:7: ( (lv_typeParameters_19_0= ruleJvmTypeParameter ) )
                              	    // InternalSARL.g:6702:8: (lv_typeParameters_19_0= ruleJvmTypeParameter )
                              	    {
                              	    // InternalSARL.g:6702:8: (lv_typeParameters_19_0= ruleJvmTypeParameter )
                              	    // InternalSARL.g:6703:9: lv_typeParameters_19_0= ruleJvmTypeParameter
                              	    {
                              	    if ( state.backtracking==0 ) {
  
                              	      									newCompositeNode(grammarAccess.getAnnotationFieldAccess().getTypeParametersJvmTypeParameterParserRuleCall_2_1_4_2_1_0());
                              	      								
                              	    }
                              	    pushFollow(FOLLOW_28);
                              	    lv_typeParameters_19_0=ruleJvmTypeParameter();
  
                              	    state._fsp--;
                              	    if (state.failed) return current;
                              	    if ( state.backtracking==0 ) {
  
                              	      									if (current==null) {
                              	      										current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                              	      									}
                              	      									add(
                              	      										current,
                              	      										"typeParameters",
                              	      										lv_typeParameters_19_0,
                              	      										"org.eclipse.xtext.xbase.Xtype.JvmTypeParameter");
                              	      									afterParserOrEnumRuleCall();
                              	      								
                              	    }
  
                              	    }
  
  
                              	    }
  
  
                              	    }
                              	    break;
  
                              	default :
                              	    break loop193;
                                  }
                              } while (true);
  
                              otherlv_20=(Token)match(input,41,FOLLOW_21); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                						newLeafNode(otherlv_20, grammarAccess.getAnnotationFieldAccess().getGreaterThanSignKeyword_2_1_4_3());
                                					
                              }
  
                              }
                              break;
  
                      }
  
                      // InternalSARL.g:6726:5: ( ( ( ( ({...}? => ( ({...}? => (otherlv_22= 'extends' ( (lv_extends_23_0= ruleJvmParameterizedTypeReference ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'implements' ( (lv_implements_25_0= ruleJvmParameterizedTypeReference ) ) (otherlv_26= ',' ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) ) )* ) ) ) ) )* ) ) )
                      // InternalSARL.g:6727:6: ( ( ( ({...}? => ( ({...}? => (otherlv_22= 'extends' ( (lv_extends_23_0= ruleJvmParameterizedTypeReference ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'implements' ( (lv_implements_25_0= ruleJvmParameterizedTypeReference ) ) (otherlv_26= ',' ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) ) )* ) ) ) ) )* ) )
                      {
                      // InternalSARL.g:6727:6: ( ( ( ({...}? => ( ({...}? => (otherlv_22= 'extends' ( (lv_extends_23_0= ruleJvmParameterizedTypeReference ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'implements' ( (lv_implements_25_0= ruleJvmParameterizedTypeReference ) ) (otherlv_26= ',' ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) ) )* ) ) ) ) )* ) )
                      // InternalSARL.g:6728:7: ( ( ({...}? => ( ({...}? => (otherlv_22= 'extends' ( (lv_extends_23_0= ruleJvmParameterizedTypeReference ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'implements' ( (lv_implements_25_0= ruleJvmParameterizedTypeReference ) ) (otherlv_26= ',' ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) ) )* ) ) ) ) )* )
                      {
                      getUnorderedGroupHelper().enter(grammarAccess.getAnnotationFieldAccess().getUnorderedGroup_2_1_5());
                      // InternalSARL.g:6731:7: ( ( ({...}? => ( ({...}? => (otherlv_22= 'extends' ( (lv_extends_23_0= ruleJvmParameterizedTypeReference ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'implements' ( (lv_implements_25_0= ruleJvmParameterizedTypeReference ) ) (otherlv_26= ',' ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) ) )* ) ) ) ) )* )
                      // InternalSARL.g:6732:8: ( ({...}? => ( ({...}? => (otherlv_22= 'extends' ( (lv_extends_23_0= ruleJvmParameterizedTypeReference ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'implements' ( (lv_implements_25_0= ruleJvmParameterizedTypeReference ) ) (otherlv_26= ',' ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) ) )* ) ) ) ) )*
                      {
                      // InternalSARL.g:6732:8: ( ({...}? => ( ({...}? => (otherlv_22= 'extends' ( (lv_extends_23_0= ruleJvmParameterizedTypeReference ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'implements' ( (lv_implements_25_0= ruleJvmParameterizedTypeReference ) ) (otherlv_26= ',' ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) ) )* ) ) ) ) )*
                      loop196:
                      do {
                          int alt196=3;
                          int LA196_0 = input.LA(1);
  
                          if ( LA196_0 == 28 && getUnorderedGroupHelper().canSelect(grammarAccess.getAnnotationFieldAccess().getUnorderedGroup_2_1_5(), 0) ) {
                              alt196=1;
                          }
                          else if ( LA196_0 == 36 && getUnorderedGroupHelper().canSelect(grammarAccess.getAnnotationFieldAccess().getUnorderedGroup_2_1_5(), 1) ) {
                              alt196=2;
                          }
  
  
                          switch (alt196) {
                      	case 1 :
                      	    // InternalSARL.g:6733:6: ({...}? => ( ({...}? => (otherlv_22= 'extends' ( (lv_extends_23_0= ruleJvmParameterizedTypeReference ) ) ) ) ) )
                      	    {
                      	    // InternalSARL.g:6733:6: ({...}? => ( ({...}? => (otherlv_22= 'extends' ( (lv_extends_23_0= ruleJvmParameterizedTypeReference ) ) ) ) ) )
                      	    // InternalSARL.g:6734:7: {...}? => ( ({...}? => (otherlv_22= 'extends' ( (lv_extends_23_0= ruleJvmParameterizedTypeReference ) ) ) ) )
                      	    {
                      	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getAnnotationFieldAccess().getUnorderedGroup_2_1_5(), 0) ) {
                      	        if (state.backtracking>0) {state.failed=true; return current;}
                      	        throw new FailedPredicateException(input, "ruleAnnotationField", "getUnorderedGroupHelper().canSelect(grammarAccess.getAnnotationFieldAccess().getUnorderedGroup_2_1_5(), 0)");
                      	    }
                      	    // InternalSARL.g:6734:118: ( ({...}? => (otherlv_22= 'extends' ( (lv_extends_23_0= ruleJvmParameterizedTypeReference ) ) ) ) )
                      	    // InternalSARL.g:6735:8: ({...}? => (otherlv_22= 'extends' ( (lv_extends_23_0= ruleJvmParameterizedTypeReference ) ) ) )
                      	    {
                      	    getUnorderedGroupHelper().select(grammarAccess.getAnnotationFieldAccess().getUnorderedGroup_2_1_5(), 0);
                      	    // InternalSARL.g:6738:11: ({...}? => (otherlv_22= 'extends' ( (lv_extends_23_0= ruleJvmParameterizedTypeReference ) ) ) )
                      	    // InternalSARL.g:6738:12: {...}? => (otherlv_22= 'extends' ( (lv_extends_23_0= ruleJvmParameterizedTypeReference ) ) )
                      	    {
                      	    if ( !((true)) ) {
                      	        if (state.backtracking>0) {state.failed=true; return current;}
                      	        throw new FailedPredicateException(input, "ruleAnnotationField", "true");
                      	    }
                      	    // InternalSARL.g:6738:21: (otherlv_22= 'extends' ( (lv_extends_23_0= ruleJvmParameterizedTypeReference ) ) )
                      	    // InternalSARL.g:6738:22: otherlv_22= 'extends' ( (lv_extends_23_0= ruleJvmParameterizedTypeReference ) )
                      	    {
                      	    otherlv_22=(Token)match(input,28,FOLLOW_3); if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      											newLeafNode(otherlv_22, grammarAccess.getAnnotationFieldAccess().getExtendsKeyword_2_1_5_0_0());
                      	      										
                      	    }
                      	    // InternalSARL.g:6742:11: ( (lv_extends_23_0= ruleJvmParameterizedTypeReference ) )
                      	    // InternalSARL.g:6743:12: (lv_extends_23_0= ruleJvmParameterizedTypeReference )
                      	    {
                      	    // InternalSARL.g:6743:12: (lv_extends_23_0= ruleJvmParameterizedTypeReference )
                      	    // InternalSARL.g:6744:13: lv_extends_23_0= ruleJvmParameterizedTypeReference
                      	    {
                      	    if ( state.backtracking==0 ) {
  
                      	      													newCompositeNode(grammarAccess.getAnnotationFieldAccess().getExtendsJvmParameterizedTypeReferenceParserRuleCall_2_1_5_0_1_0());
                      	      												
                      	    }
                      	    pushFollow(FOLLOW_21);
                      	    lv_extends_23_0=ruleJvmParameterizedTypeReference();
  
                      	    state._fsp--;
                      	    if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      													if (current==null) {
                      	      														current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                      	      													}
                      	      													set(
                      	      														current,
                      	      														"extends",
                      	      														lv_extends_23_0,
                      	      														"org.eclipse.xtext.xbase.Xtype.JvmParameterizedTypeReference");
                      	      													afterParserOrEnumRuleCall();
                      	      												
                      	    }
  
                      	    }
  
  
                      	    }
  
  
                      	    }
  
  
                      	    }
  
                      	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getAnnotationFieldAccess().getUnorderedGroup_2_1_5());
  
                      	    }
  
  
                      	    }
  
  
                      	    }
                      	    break;
                      	case 2 :
                      	    // InternalSARL.g:6767:6: ({...}? => ( ({...}? => (otherlv_24= 'implements' ( (lv_implements_25_0= ruleJvmParameterizedTypeReference ) ) (otherlv_26= ',' ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) ) )* ) ) ) )
                      	    {
                      	    // InternalSARL.g:6767:6: ({...}? => ( ({...}? => (otherlv_24= 'implements' ( (lv_implements_25_0= ruleJvmParameterizedTypeReference ) ) (otherlv_26= ',' ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) ) )* ) ) ) )
                      	    // InternalSARL.g:6768:7: {...}? => ( ({...}? => (otherlv_24= 'implements' ( (lv_implements_25_0= ruleJvmParameterizedTypeReference ) ) (otherlv_26= ',' ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) ) )* ) ) )
                      	    {
                      	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getAnnotationFieldAccess().getUnorderedGroup_2_1_5(), 1) ) {
                      	        if (state.backtracking>0) {state.failed=true; return current;}
                      	        throw new FailedPredicateException(input, "ruleAnnotationField", "getUnorderedGroupHelper().canSelect(grammarAccess.getAnnotationFieldAccess().getUnorderedGroup_2_1_5(), 1)");
                      	    }
                      	    // InternalSARL.g:6768:118: ( ({...}? => (otherlv_24= 'implements' ( (lv_implements_25_0= ruleJvmParameterizedTypeReference ) ) (otherlv_26= ',' ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) ) )* ) ) )
                      	    // InternalSARL.g:6769:8: ({...}? => (otherlv_24= 'implements' ( (lv_implements_25_0= ruleJvmParameterizedTypeReference ) ) (otherlv_26= ',' ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) ) )* ) )
                      	    {
                      	    getUnorderedGroupHelper().select(grammarAccess.getAnnotationFieldAccess().getUnorderedGroup_2_1_5(), 1);
                      	    // InternalSARL.g:6772:11: ({...}? => (otherlv_24= 'implements' ( (lv_implements_25_0= ruleJvmParameterizedTypeReference ) ) (otherlv_26= ',' ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) ) )* ) )
                      	    // InternalSARL.g:6772:12: {...}? => (otherlv_24= 'implements' ( (lv_implements_25_0= ruleJvmParameterizedTypeReference ) ) (otherlv_26= ',' ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) ) )* )
                      	    {
                      	    if ( !((true)) ) {
                      	        if (state.backtracking>0) {state.failed=true; return current;}
                      	        throw new FailedPredicateException(input, "ruleAnnotationField", "true");
                      	    }
                      	    // InternalSARL.g:6772:21: (otherlv_24= 'implements' ( (lv_implements_25_0= ruleJvmParameterizedTypeReference ) ) (otherlv_26= ',' ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) ) )* )
                      	    // InternalSARL.g:6772:22: otherlv_24= 'implements' ( (lv_implements_25_0= ruleJvmParameterizedTypeReference ) ) (otherlv_26= ',' ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) ) )*
                      	    {
                      	    otherlv_24=(Token)match(input,36,FOLLOW_3); if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      											newLeafNode(otherlv_24, grammarAccess.getAnnotationFieldAccess().getImplementsKeyword_2_1_5_1_0());
                      	      										
                      	    }
                      	    // InternalSARL.g:6776:11: ( (lv_implements_25_0= ruleJvmParameterizedTypeReference ) )
                      	    // InternalSARL.g:6777:12: (lv_implements_25_0= ruleJvmParameterizedTypeReference )
                      	    {
                      	    // InternalSARL.g:6777:12: (lv_implements_25_0= ruleJvmParameterizedTypeReference )
                      	    // InternalSARL.g:6778:13: lv_implements_25_0= ruleJvmParameterizedTypeReference
                      	    {
                      	    if ( state.backtracking==0 ) {
  
                      	      													newCompositeNode(grammarAccess.getAnnotationFieldAccess().getImplementsJvmParameterizedTypeReferenceParserRuleCall_2_1_5_1_1_0());
                      	      												
                      	    }
                      	    pushFollow(FOLLOW_22);
                      	    lv_implements_25_0=ruleJvmParameterizedTypeReference();
  
                      	    state._fsp--;
                      	    if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      													if (current==null) {
                      	      														current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                      	      													}
                      	      													add(
                      	      														current,
                      	      														"implements",
                      	      														lv_implements_25_0,
                      	      														"org.eclipse.xtext.xbase.Xtype.JvmParameterizedTypeReference");
                      	      													afterParserOrEnumRuleCall();
                      	      												
                      	    }
  
                      	    }
  
  
                      	    }
  
                      	    // InternalSARL.g:6795:11: (otherlv_26= ',' ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) ) )*
                      	    loop195:
                      	    do {
                      	        int alt195=2;
                      	        int LA195_0 = input.LA(1);
  
                      	        if ( (LA195_0==32) ) {
                      	            alt195=1;
                      	        }
  
  
                      	        switch (alt195) {
                      	    	case 1 :
                      	    	    // InternalSARL.g:6796:12: otherlv_26= ',' ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) )
                      	    	    {
                      	    	    otherlv_26=(Token)match(input,32,FOLLOW_3); if (state.failed) return current;
                      	    	    if ( state.backtracking==0 ) {
  
                      	    	      												newLeafNode(otherlv_26, grammarAccess.getAnnotationFieldAccess().getCommaKeyword_2_1_5_1_2_0());
                      	    	      											
                      	    	    }
                      	    	    // InternalSARL.g:6800:12: ( (lv_implements_27_0= ruleJvmParameterizedTypeReference ) )
                      	    	    // InternalSARL.g:6801:13: (lv_implements_27_0= ruleJvmParameterizedTypeReference )
                      	    	    {
                      	    	    // InternalSARL.g:6801:13: (lv_implements_27_0= ruleJvmParameterizedTypeReference )
                      	    	    // InternalSARL.g:6802:14: lv_implements_27_0= ruleJvmParameterizedTypeReference
                      	    	    {
                      	    	    if ( state.backtracking==0 ) {
  
                      	    	      														newCompositeNode(grammarAccess.getAnnotationFieldAccess().getImplementsJvmParameterizedTypeReferenceParserRuleCall_2_1_5_1_2_1_0());
                      	    	      													
                      	    	    }
                      	    	    pushFollow(FOLLOW_22);
                      	    	    lv_implements_27_0=ruleJvmParameterizedTypeReference();
  
                      	    	    state._fsp--;
                      	    	    if (state.failed) return current;
                      	    	    if ( state.backtracking==0 ) {
  
                      	    	      														if (current==null) {
                      	    	      															current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                      	    	      														}
                      	    	      														add(
                      	    	      															current,
                      	    	      															"implements",
                      	    	      															lv_implements_27_0,
                      	    	      															"org.eclipse.xtext.xbase.Xtype.JvmParameterizedTypeReference");
                      	    	      														afterParserOrEnumRuleCall();
                      	    	      													
                      	    	    }
  
                      	    	    }
  
  
                      	    	    }
  
  
                      	    	    }
                      	    	    break;
  
                      	    	default :
                      	    	    break loop195;
                      	        }
                      	    } while (true);
  
  
                      	    }
  
  
                      	    }
  
                      	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getAnnotationFieldAccess().getUnorderedGroup_2_1_5());
  
                      	    }
  
  
                      	    }
  
  
                      	    }
                      	    break;
  
                      	default :
                      	    break loop196;
                          }
                      } while (true);
  
  
                      }
  
  
                      }
  
                      getUnorderedGroupHelper().leave(grammarAccess.getAnnotationFieldAccess().getUnorderedGroup_2_1_5());
  
                      }
  
                      otherlv_28=(Token)match(input,29,FOLLOW_29); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        					newLeafNode(otherlv_28, grammarAccess.getAnnotationFieldAccess().getLeftCurlyBracketKeyword_2_1_6());
                        				
                      }
                      // InternalSARL.g:6837:5: ( (lv_members_29_0= ruleMember ) )*
                      loop197:
                      do {
                          int alt197=2;
                          int LA197_0 = input.LA(1);
  
                          if ( (LA197_0==25||LA197_0==39||(LA197_0>=42 && LA197_0<=45)||LA197_0==48||(LA197_0>=65 && LA197_0<=66)||(LA197_0>=78 && LA197_0<=91)||LA197_0==105) ) {
                              alt197=1;
                          }
  
  
                          switch (alt197) {
                      	case 1 :
                      	    // InternalSARL.g:6838:6: (lv_members_29_0= ruleMember )
                      	    {
                      	    // InternalSARL.g:6838:6: (lv_members_29_0= ruleMember )
                      	    // InternalSARL.g:6839:7: lv_members_29_0= ruleMember
                      	    {
                      	    if ( state.backtracking==0 ) {
  
                      	      							newCompositeNode(grammarAccess.getAnnotationFieldAccess().getMembersMemberParserRuleCall_2_1_7_0());
                      	      						
                      	    }
                      	    pushFollow(FOLLOW_29);
                      	    lv_members_29_0=ruleMember();
  
                      	    state._fsp--;
                      	    if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      							if (current==null) {
                      	      								current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                      	      							}
                      	      							add(
                      	      								current,
                      	      								"members",
                      	      								lv_members_29_0,
                      	      								"io.sarl.lang.SARL.Member");
                      	      							afterParserOrEnumRuleCall();
                      	      						
                      	    }
  
                      	    }
  
  
                      	    }
                      	    break;
  
                      	default :
                      	    break loop197;
                          }
                      } while (true);
  
                      otherlv_30=(Token)match(input,30,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        					newLeafNode(otherlv_30, grammarAccess.getAnnotationFieldAccess().getRightCurlyBracketKeyword_2_1_8());
                        				
                      }
  
                      }
  
  
                      }
                      break;
                  case 3 :
                      // InternalSARL.g:6862:4: ( () ( (lv_modifiers_32_0= ruleCommonModifier ) )* otherlv_33= 'interface' ( (lv_name_34_0= ruleValidID ) ) (otherlv_35= '<' ( (lv_typeParameters_36_0= ruleJvmTypeParameter ) ) (otherlv_37= ',' ( (lv_typeParameters_38_0= ruleJvmTypeParameter ) ) )* otherlv_39= '>' )? (otherlv_40= 'extends' ( (lv_extends_41_0= ruleJvmParameterizedTypeReference ) ) (otherlv_42= ',' ( (lv_extends_43_0= ruleJvmParameterizedTypeReference ) ) )* )? otherlv_44= '{' ( (lv_members_45_0= ruleMember ) )* otherlv_46= '}' )
                      {
                      // InternalSARL.g:6862:4: ( () ( (lv_modifiers_32_0= ruleCommonModifier ) )* otherlv_33= 'interface' ( (lv_name_34_0= ruleValidID ) ) (otherlv_35= '<' ( (lv_typeParameters_36_0= ruleJvmTypeParameter ) ) (otherlv_37= ',' ( (lv_typeParameters_38_0= ruleJvmTypeParameter ) ) )* otherlv_39= '>' )? (otherlv_40= 'extends' ( (lv_extends_41_0= ruleJvmParameterizedTypeReference ) ) (otherlv_42= ',' ( (lv_extends_43_0= ruleJvmParameterizedTypeReference ) ) )* )? otherlv_44= '{' ( (lv_members_45_0= ruleMember ) )* otherlv_46= '}' )
                      // InternalSARL.g:6863:5: () ( (lv_modifiers_32_0= ruleCommonModifier ) )* otherlv_33= 'interface' ( (lv_name_34_0= ruleValidID ) ) (otherlv_35= '<' ( (lv_typeParameters_36_0= ruleJvmTypeParameter ) ) (otherlv_37= ',' ( (lv_typeParameters_38_0= ruleJvmTypeParameter ) ) )* otherlv_39= '>' )? (otherlv_40= 'extends' ( (lv_extends_41_0= ruleJvmParameterizedTypeReference ) ) (otherlv_42= ',' ( (lv_extends_43_0= ruleJvmParameterizedTypeReference ) ) )* )? otherlv_44= '{' ( (lv_members_45_0= ruleMember ) )* otherlv_46= '}'
                      {
                      // InternalSARL.g:6863:5: ()
                      // InternalSARL.g:6864:6: 
                      {
                      if ( state.backtracking==0 ) {
  
                        						current = forceCreateModelElementAndSet(
                        							grammarAccess.getAnnotationFieldAccess().getSarlInterfaceAnnotationInfoAction_2_2_0(),
                        							current);
                        					
                      }
  
                      }
  
                      // InternalSARL.g:6870:5: ( (lv_modifiers_32_0= ruleCommonModifier ) )*
                      loop198:
                      do {
                          int alt198=2;
                          int LA198_0 = input.LA(1);
  
                          if ( (LA198_0==25||(LA198_0>=78 && LA198_0<=89)) ) {
                              alt198=1;
                          }
  
  
                          switch (alt198) {
                      	case 1 :
                      	    // InternalSARL.g:6871:6: (lv_modifiers_32_0= ruleCommonModifier )
                      	    {
                      	    // InternalSARL.g:6871:6: (lv_modifiers_32_0= ruleCommonModifier )
                      	    // InternalSARL.g:6872:7: lv_modifiers_32_0= ruleCommonModifier
                      	    {
                      	    if ( state.backtracking==0 ) {
  
                      	      							newCompositeNode(grammarAccess.getAnnotationFieldAccess().getModifiersCommonModifierParserRuleCall_2_2_1_0());
                      	      						
                      	    }
                      	    pushFollow(FOLLOW_30);
                      	    lv_modifiers_32_0=ruleCommonModifier();
  
                      	    state._fsp--;
                      	    if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      							if (current==null) {
                      	      								current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                      	      							}
                      	      							add(
                      	      								current,
                      	      								"modifiers",
                      	      								lv_modifiers_32_0,
                      	      								"org.eclipse.xtend.core.Xtend.CommonModifier");
                      	      							afterParserOrEnumRuleCall();
                      	      						
                      	    }
  
                      	    }
  
  
                      	    }
                      	    break;
  
                      	default :
                      	    break loop198;
                          }
                      } while (true);
  
                      otherlv_33=(Token)match(input,42,FOLLOW_3); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        					newLeafNode(otherlv_33, grammarAccess.getAnnotationFieldAccess().getInterfaceKeyword_2_2_2());
                        				
                      }
                      // InternalSARL.g:6893:5: ( (lv_name_34_0= ruleValidID ) )
                      // InternalSARL.g:6894:6: (lv_name_34_0= ruleValidID )
                      {
                      // InternalSARL.g:6894:6: (lv_name_34_0= ruleValidID )
                      // InternalSARL.g:6895:7: lv_name_34_0= ruleValidID
                      {
                      if ( state.backtracking==0 ) {
  
                        							newCompositeNode(grammarAccess.getAnnotationFieldAccess().getNameValidIDParserRuleCall_2_2_3_0());
                        						
                      }
                      pushFollow(FOLLOW_31);
                      lv_name_34_0=ruleValidID();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        							if (current==null) {
                        								current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                        							}
                        							set(
                        								current,
                        								"name",
                        								lv_name_34_0,
                        								"org.eclipse.xtend.core.Xtend.ValidID");
                        							afterParserOrEnumRuleCall();
                        						
                      }
  
                      }
  
  
                      }
  
                      // InternalSARL.g:6912:5: (otherlv_35= '<' ( (lv_typeParameters_36_0= ruleJvmTypeParameter ) ) (otherlv_37= ',' ( (lv_typeParameters_38_0= ruleJvmTypeParameter ) ) )* otherlv_39= '>' )?
                      int alt200=2;
                      int LA200_0 = input.LA(1);
  
                      if ( (LA200_0==40) ) {
                          alt200=1;
                      }
                      switch (alt200) {
                          case 1 :
                              // InternalSARL.g:6913:6: otherlv_35= '<' ( (lv_typeParameters_36_0= ruleJvmTypeParameter ) ) (otherlv_37= ',' ( (lv_typeParameters_38_0= ruleJvmTypeParameter ) ) )* otherlv_39= '>'
                              {
                              otherlv_35=(Token)match(input,40,FOLLOW_3); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                						newLeafNode(otherlv_35, grammarAccess.getAnnotationFieldAccess().getLessThanSignKeyword_2_2_4_0());
                                					
                              }
                              // InternalSARL.g:6917:6: ( (lv_typeParameters_36_0= ruleJvmTypeParameter ) )
                              // InternalSARL.g:6918:7: (lv_typeParameters_36_0= ruleJvmTypeParameter )
                              {
                              // InternalSARL.g:6918:7: (lv_typeParameters_36_0= ruleJvmTypeParameter )
                              // InternalSARL.g:6919:8: lv_typeParameters_36_0= ruleJvmTypeParameter
                              {
                              if ( state.backtracking==0 ) {
  
                                								newCompositeNode(grammarAccess.getAnnotationFieldAccess().getTypeParametersJvmTypeParameterParserRuleCall_2_2_4_1_0());
                                							
                              }
                              pushFollow(FOLLOW_28);
                              lv_typeParameters_36_0=ruleJvmTypeParameter();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                								if (current==null) {
                                									current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                                								}
                                								add(
                                									current,
                                									"typeParameters",
                                									lv_typeParameters_36_0,
                                									"org.eclipse.xtext.xbase.Xtype.JvmTypeParameter");
                                								afterParserOrEnumRuleCall();
                                							
                              }
  
                              }
  
  
                              }
  
                              // InternalSARL.g:6936:6: (otherlv_37= ',' ( (lv_typeParameters_38_0= ruleJvmTypeParameter ) ) )*
                              loop199:
                              do {
                                  int alt199=2;
                                  int LA199_0 = input.LA(1);
  
                                  if ( (LA199_0==32) ) {
                                      alt199=1;
                                  }
  
  
                                  switch (alt199) {
                              	case 1 :
                              	    // InternalSARL.g:6937:7: otherlv_37= ',' ( (lv_typeParameters_38_0= ruleJvmTypeParameter ) )
                              	    {
                              	    otherlv_37=(Token)match(input,32,FOLLOW_3); if (state.failed) return current;
                              	    if ( state.backtracking==0 ) {
  
                              	      							newLeafNode(otherlv_37, grammarAccess.getAnnotationFieldAccess().getCommaKeyword_2_2_4_2_0());
                              	      						
                              	    }
                              	    // InternalSARL.g:6941:7: ( (lv_typeParameters_38_0= ruleJvmTypeParameter ) )
                              	    // InternalSARL.g:6942:8: (lv_typeParameters_38_0= ruleJvmTypeParameter )
                              	    {
                              	    // InternalSARL.g:6942:8: (lv_typeParameters_38_0= ruleJvmTypeParameter )
                              	    // InternalSARL.g:6943:9: lv_typeParameters_38_0= ruleJvmTypeParameter
                              	    {
                              	    if ( state.backtracking==0 ) {
  
                              	      									newCompositeNode(grammarAccess.getAnnotationFieldAccess().getTypeParametersJvmTypeParameterParserRuleCall_2_2_4_2_1_0());
                              	      								
                              	    }
                              	    pushFollow(FOLLOW_28);
                              	    lv_typeParameters_38_0=ruleJvmTypeParameter();
  
                              	    state._fsp--;
                              	    if (state.failed) return current;
                              	    if ( state.backtracking==0 ) {
  
                              	      									if (current==null) {
                              	      										current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                              	      									}
                              	      									add(
                              	      										current,
                              	      										"typeParameters",
                              	      										lv_typeParameters_38_0,
                              	      										"org.eclipse.xtext.xbase.Xtype.JvmTypeParameter");
                              	      									afterParserOrEnumRuleCall();
                              	      								
                              	    }
  
                              	    }
  
  
                              	    }
  
  
                              	    }
                              	    break;
  
                              	default :
                              	    break loop199;
                                  }
                              } while (true);
  
                              otherlv_39=(Token)match(input,41,FOLLOW_13); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                						newLeafNode(otherlv_39, grammarAccess.getAnnotationFieldAccess().getGreaterThanSignKeyword_2_2_4_3());
                                					
                              }
  
                              }
                              break;
  
                      }
  
                      // InternalSARL.g:6966:5: (otherlv_40= 'extends' ( (lv_extends_41_0= ruleJvmParameterizedTypeReference ) ) (otherlv_42= ',' ( (lv_extends_43_0= ruleJvmParameterizedTypeReference ) ) )* )?
                      int alt202=2;
                      int LA202_0 = input.LA(1);
  
                      if ( (LA202_0==28) ) {
                          alt202=1;
                      }
                      switch (alt202) {
                          case 1 :
                              // InternalSARL.g:6967:6: otherlv_40= 'extends' ( (lv_extends_41_0= ruleJvmParameterizedTypeReference ) ) (otherlv_42= ',' ( (lv_extends_43_0= ruleJvmParameterizedTypeReference ) ) )*
                              {
                              otherlv_40=(Token)match(input,28,FOLLOW_3); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                						newLeafNode(otherlv_40, grammarAccess.getAnnotationFieldAccess().getExtendsKeyword_2_2_5_0());
                                					
                              }
                              // InternalSARL.g:6971:6: ( (lv_extends_41_0= ruleJvmParameterizedTypeReference ) )
                              // InternalSARL.g:6972:7: (lv_extends_41_0= ruleJvmParameterizedTypeReference )
                              {
                              // InternalSARL.g:6972:7: (lv_extends_41_0= ruleJvmParameterizedTypeReference )
                              // InternalSARL.g:6973:8: lv_extends_41_0= ruleJvmParameterizedTypeReference
                              {
                              if ( state.backtracking==0 ) {
  
                                								newCompositeNode(grammarAccess.getAnnotationFieldAccess().getExtendsJvmParameterizedTypeReferenceParserRuleCall_2_2_5_1_0());
                                							
                              }
                              pushFollow(FOLLOW_14);
                              lv_extends_41_0=ruleJvmParameterizedTypeReference();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                								if (current==null) {
                                									current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                                								}
                                								add(
                                									current,
                                									"extends",
                                									lv_extends_41_0,
                                									"org.eclipse.xtext.xbase.Xtype.JvmParameterizedTypeReference");
                                								afterParserOrEnumRuleCall();
                                							
                              }
  
                              }
  
  
                              }
  
                              // InternalSARL.g:6990:6: (otherlv_42= ',' ( (lv_extends_43_0= ruleJvmParameterizedTypeReference ) ) )*
                              loop201:
                              do {
                                  int alt201=2;
                                  int LA201_0 = input.LA(1);
  
                                  if ( (LA201_0==32) ) {
                                      alt201=1;
                                  }
  
  
                                  switch (alt201) {
                              	case 1 :
                              	    // InternalSARL.g:6991:7: otherlv_42= ',' ( (lv_extends_43_0= ruleJvmParameterizedTypeReference ) )
                              	    {
                              	    otherlv_42=(Token)match(input,32,FOLLOW_3); if (state.failed) return current;
                              	    if ( state.backtracking==0 ) {
  
                              	      							newLeafNode(otherlv_42, grammarAccess.getAnnotationFieldAccess().getCommaKeyword_2_2_5_2_0());
                              	      						
                              	    }
                              	    // InternalSARL.g:6995:7: ( (lv_extends_43_0= ruleJvmParameterizedTypeReference ) )
                              	    // InternalSARL.g:6996:8: (lv_extends_43_0= ruleJvmParameterizedTypeReference )
                              	    {
                              	    // InternalSARL.g:6996:8: (lv_extends_43_0= ruleJvmParameterizedTypeReference )
                              	    // InternalSARL.g:6997:9: lv_extends_43_0= ruleJvmParameterizedTypeReference
                              	    {
                              	    if ( state.backtracking==0 ) {
  
                              	      									newCompositeNode(grammarAccess.getAnnotationFieldAccess().getExtendsJvmParameterizedTypeReferenceParserRuleCall_2_2_5_2_1_0());
                              	      								
                              	    }
                              	    pushFollow(FOLLOW_14);
                              	    lv_extends_43_0=ruleJvmParameterizedTypeReference();
  
                              	    state._fsp--;
                              	    if (state.failed) return current;
                              	    if ( state.backtracking==0 ) {
  
                              	      									if (current==null) {
                              	      										current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                              	      									}
                              	      									add(
                              	      										current,
                              	      										"extends",
                              	      										lv_extends_43_0,
                              	      										"org.eclipse.xtext.xbase.Xtype.JvmParameterizedTypeReference");
                              	      									afterParserOrEnumRuleCall();
                              	      								
                              	    }
  
                              	    }
  
  
                              	    }
  
  
                              	    }
                              	    break;
  
                              	default :
                              	    break loop201;
                                  }
                              } while (true);
  
  
                              }
                              break;
  
                      }
  
                      otherlv_44=(Token)match(input,29,FOLLOW_29); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        					newLeafNode(otherlv_44, grammarAccess.getAnnotationFieldAccess().getLeftCurlyBracketKeyword_2_2_6());
                        				
                      }
                      // InternalSARL.g:7020:5: ( (lv_members_45_0= ruleMember ) )*
                      loop203:
                      do {
                          int alt203=2;
                          int LA203_0 = input.LA(1);
  
                          if ( (LA203_0==25||LA203_0==39||(LA203_0>=42 && LA203_0<=45)||LA203_0==48||(LA203_0>=65 && LA203_0<=66)||(LA203_0>=78 && LA203_0<=91)||LA203_0==105) ) {
                              alt203=1;
                          }
  
  
                          switch (alt203) {
                      	case 1 :
                      	    // InternalSARL.g:7021:6: (lv_members_45_0= ruleMember )
                      	    {
                      	    // InternalSARL.g:7021:6: (lv_members_45_0= ruleMember )
                      	    // InternalSARL.g:7022:7: lv_members_45_0= ruleMember
                      	    {
                      	    if ( state.backtracking==0 ) {
  
                      	      							newCompositeNode(grammarAccess.getAnnotationFieldAccess().getMembersMemberParserRuleCall_2_2_7_0());
                      	      						
                      	    }
                      	    pushFollow(FOLLOW_29);
                      	    lv_members_45_0=ruleMember();
  
                      	    state._fsp--;
                      	    if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      							if (current==null) {
                      	      								current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                      	      							}
                      	      							add(
                      	      								current,
                      	      								"members",
                      	      								lv_members_45_0,
                      	      								"io.sarl.lang.SARL.Member");
                      	      							afterParserOrEnumRuleCall();
                      	      						
                      	    }
  
                      	    }
  
  
                      	    }
                      	    break;
  
                      	default :
                      	    break loop203;
                          }
                      } while (true);
  
                      otherlv_46=(Token)match(input,30,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        					newLeafNode(otherlv_46, grammarAccess.getAnnotationFieldAccess().getRightCurlyBracketKeyword_2_2_8());
                        				
                      }
  
                      }
  
  
                      }
                      break;
                  case 4 :
                      // InternalSARL.g:7045:4: ( () ( (lv_modifiers_48_0= ruleCommonModifier ) )* otherlv_49= 'enum' ( (lv_name_50_0= ruleValidID ) ) otherlv_51= '{' ( ( (lv_members_52_0= ruleXtendEnumLiteral ) ) (otherlv_53= ',' ( (lv_members_54_0= ruleXtendEnumLiteral ) ) )* )? (otherlv_55= ';' )? otherlv_56= '}' )
                      {
                      // InternalSARL.g:7045:4: ( () ( (lv_modifiers_48_0= ruleCommonModifier ) )* otherlv_49= 'enum' ( (lv_name_50_0= ruleValidID ) ) otherlv_51= '{' ( ( (lv_members_52_0= ruleXtendEnumLiteral ) ) (otherlv_53= ',' ( (lv_members_54_0= ruleXtendEnumLiteral ) ) )* )? (otherlv_55= ';' )? otherlv_56= '}' )
                      // InternalSARL.g:7046:5: () ( (lv_modifiers_48_0= ruleCommonModifier ) )* otherlv_49= 'enum' ( (lv_name_50_0= ruleValidID ) ) otherlv_51= '{' ( ( (lv_members_52_0= ruleXtendEnumLiteral ) ) (otherlv_53= ',' ( (lv_members_54_0= ruleXtendEnumLiteral ) ) )* )? (otherlv_55= ';' )? otherlv_56= '}'
                      {
                      // InternalSARL.g:7046:5: ()
                      // InternalSARL.g:7047:6: 
                      {
                      if ( state.backtracking==0 ) {
  
                        						current = forceCreateModelElementAndSet(
                        							grammarAccess.getAnnotationFieldAccess().getSarlEnumerationAnnotationInfoAction_2_3_0(),
                        							current);
                        					
                      }
  
                      }
  
                      // InternalSARL.g:7053:5: ( (lv_modifiers_48_0= ruleCommonModifier ) )*
                      loop204:
                      do {
                          int alt204=2;
                          int LA204_0 = input.LA(1);
  
                          if ( (LA204_0==25||(LA204_0>=78 && LA204_0<=89)) ) {
                              alt204=1;
                          }
  
  
                          switch (alt204) {
                      	case 1 :
                      	    // InternalSARL.g:7054:6: (lv_modifiers_48_0= ruleCommonModifier )
                      	    {
                      	    // InternalSARL.g:7054:6: (lv_modifiers_48_0= ruleCommonModifier )
                      	    // InternalSARL.g:7055:7: lv_modifiers_48_0= ruleCommonModifier
                      	    {
                      	    if ( state.backtracking==0 ) {
  
                      	      							newCompositeNode(grammarAccess.getAnnotationFieldAccess().getModifiersCommonModifierParserRuleCall_2_3_1_0());
                      	      						
                      	    }
                      	    pushFollow(FOLLOW_32);
                      	    lv_modifiers_48_0=ruleCommonModifier();
  
                      	    state._fsp--;
                      	    if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      							if (current==null) {
                      	      								current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                      	      							}
                      	      							add(
                      	      								current,
                      	      								"modifiers",
                      	      								lv_modifiers_48_0,
                      	      								"org.eclipse.xtend.core.Xtend.CommonModifier");
                      	      							afterParserOrEnumRuleCall();
                      	      						
                      	    }
  
                      	    }
  
  
                      	    }
                      	    break;
  
                      	default :
                      	    break loop204;
                          }
                      } while (true);
  
                      otherlv_49=(Token)match(input,43,FOLLOW_3); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        					newLeafNode(otherlv_49, grammarAccess.getAnnotationFieldAccess().getEnumKeyword_2_3_2());
                        				
                      }
                      // InternalSARL.g:7076:5: ( (lv_name_50_0= ruleValidID ) )
                      // InternalSARL.g:7077:6: (lv_name_50_0= ruleValidID )
                      {
                      // InternalSARL.g:7077:6: (lv_name_50_0= ruleValidID )
                      // InternalSARL.g:7078:7: lv_name_50_0= ruleValidID
                      {
                      if ( state.backtracking==0 ) {
  
                        							newCompositeNode(grammarAccess.getAnnotationFieldAccess().getNameValidIDParserRuleCall_2_3_3_0());
                        						
                      }
                      pushFollow(FOLLOW_17);
                      lv_name_50_0=ruleValidID();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        							if (current==null) {
                        								current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                        							}
                        							set(
                        								current,
                        								"name",
                        								lv_name_50_0,
                        								"org.eclipse.xtend.core.Xtend.ValidID");
                        							afterParserOrEnumRuleCall();
                        						
                      }
  
                      }
  
  
                      }
  
                      otherlv_51=(Token)match(input,29,FOLLOW_33); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        					newLeafNode(otherlv_51, grammarAccess.getAnnotationFieldAccess().getLeftCurlyBracketKeyword_2_3_4());
                        				
                      }
                      // InternalSARL.g:7099:5: ( ( (lv_members_52_0= ruleXtendEnumLiteral ) ) (otherlv_53= ',' ( (lv_members_54_0= ruleXtendEnumLiteral ) ) )* )?
                      int alt206=2;
                      int LA206_0 = input.LA(1);
  
                      if ( (LA206_0==RULE_ID||LA206_0==44||(LA206_0>=92 && LA206_0<=95)) ) {
                          alt206=1;
                      }
                      switch (alt206) {
                          case 1 :
                              // InternalSARL.g:7100:6: ( (lv_members_52_0= ruleXtendEnumLiteral ) ) (otherlv_53= ',' ( (lv_members_54_0= ruleXtendEnumLiteral ) ) )*
                              {
                              // InternalSARL.g:7100:6: ( (lv_members_52_0= ruleXtendEnumLiteral ) )
                              // InternalSARL.g:7101:7: (lv_members_52_0= ruleXtendEnumLiteral )
                              {
                              // InternalSARL.g:7101:7: (lv_members_52_0= ruleXtendEnumLiteral )
                              // InternalSARL.g:7102:8: lv_members_52_0= ruleXtendEnumLiteral
                              {
                              if ( state.backtracking==0 ) {
  
                                								newCompositeNode(grammarAccess.getAnnotationFieldAccess().getMembersXtendEnumLiteralParserRuleCall_2_3_5_0_0());
                                							
                              }
                              pushFollow(FOLLOW_34);
                              lv_members_52_0=ruleXtendEnumLiteral();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                								if (current==null) {
                                									current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                                								}
                                								add(
                                									current,
                                									"members",
                                									lv_members_52_0,
                                									"io.sarl.lang.SARL.XtendEnumLiteral");
                                								afterParserOrEnumRuleCall();
                                							
                              }
  
                              }
  
  
                              }
  
                              // InternalSARL.g:7119:6: (otherlv_53= ',' ( (lv_members_54_0= ruleXtendEnumLiteral ) ) )*
                              loop205:
                              do {
                                  int alt205=2;
                                  int LA205_0 = input.LA(1);
  
                                  if ( (LA205_0==32) ) {
                                      alt205=1;
                                  }
  
  
                                  switch (alt205) {
                              	case 1 :
                              	    // InternalSARL.g:7120:7: otherlv_53= ',' ( (lv_members_54_0= ruleXtendEnumLiteral ) )
                              	    {
                              	    otherlv_53=(Token)match(input,32,FOLLOW_3); if (state.failed) return current;
                              	    if ( state.backtracking==0 ) {
  
                              	      							newLeafNode(otherlv_53, grammarAccess.getAnnotationFieldAccess().getCommaKeyword_2_3_5_1_0());
                              	      						
                              	    }
                              	    // InternalSARL.g:7124:7: ( (lv_members_54_0= ruleXtendEnumLiteral ) )
                              	    // InternalSARL.g:7125:8: (lv_members_54_0= ruleXtendEnumLiteral )
                              	    {
                              	    // InternalSARL.g:7125:8: (lv_members_54_0= ruleXtendEnumLiteral )
                              	    // InternalSARL.g:7126:9: lv_members_54_0= ruleXtendEnumLiteral
                              	    {
                              	    if ( state.backtracking==0 ) {
  
                              	      									newCompositeNode(grammarAccess.getAnnotationFieldAccess().getMembersXtendEnumLiteralParserRuleCall_2_3_5_1_1_0());
                              	      								
                              	    }
                              	    pushFollow(FOLLOW_34);
                              	    lv_members_54_0=ruleXtendEnumLiteral();
  
                              	    state._fsp--;
                              	    if (state.failed) return current;
                              	    if ( state.backtracking==0 ) {
  
                              	      									if (current==null) {
                              	      										current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                              	      									}
                              	      									add(
                              	      										current,
                              	      										"members",
                              	      										lv_members_54_0,
                              	      										"io.sarl.lang.SARL.XtendEnumLiteral");
                              	      									afterParserOrEnumRuleCall();
                              	      								
                              	    }
  
                              	    }
  
  
                              	    }
  
  
                              	    }
                              	    break;
  
                              	default :
                              	    break loop205;
                                  }
                              } while (true);
  
  
                              }
                              break;
  
                      }
  
                      // InternalSARL.g:7145:5: (otherlv_55= ';' )?
                      int alt207=2;
                      int LA207_0 = input.LA(1);
  
                      if ( (LA207_0==26) ) {
                          alt207=1;
                      }
                      switch (alt207) {
                          case 1 :
                              // InternalSARL.g:7146:6: otherlv_55= ';'
                              {
                              otherlv_55=(Token)match(input,26,FOLLOW_24); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                						newLeafNode(otherlv_55, grammarAccess.getAnnotationFieldAccess().getSemicolonKeyword_2_3_6());
                                					
                              }
  
                              }
                              break;
  
                      }
  
                      otherlv_56=(Token)match(input,30,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        					newLeafNode(otherlv_56, grammarAccess.getAnnotationFieldAccess().getRightCurlyBracketKeyword_2_3_7());
                        				
                      }
  
                      }
  
  
                      }
                      break;
                  case 5 :
                      // InternalSARL.g:7157:4: ( () ( (lv_modifiers_58_0= ruleCommonModifier ) )* otherlv_59= 'annotation' ( (lv_name_60_0= ruleValidID ) ) otherlv_61= '{' ( (lv_members_62_0= ruleAnnotationField ) )* otherlv_63= '}' )
                      {
                      // InternalSARL.g:7157:4: ( () ( (lv_modifiers_58_0= ruleCommonModifier ) )* otherlv_59= 'annotation' ( (lv_name_60_0= ruleValidID ) ) otherlv_61= '{' ( (lv_members_62_0= ruleAnnotationField ) )* otherlv_63= '}' )
                      // InternalSARL.g:7158:5: () ( (lv_modifiers_58_0= ruleCommonModifier ) )* otherlv_59= 'annotation' ( (lv_name_60_0= ruleValidID ) ) otherlv_61= '{' ( (lv_members_62_0= ruleAnnotationField ) )* otherlv_63= '}'
                      {
                      // InternalSARL.g:7158:5: ()
                      // InternalSARL.g:7159:6: 
                      {
                      if ( state.backtracking==0 ) {
  
                        						current = forceCreateModelElementAndSet(
                        							grammarAccess.getAnnotationFieldAccess().getSarlAnnotationTypeAnnotationInfoAction_2_4_0(),
                        							current);
                        					
                      }
  
                      }
  
                      // InternalSARL.g:7165:5: ( (lv_modifiers_58_0= ruleCommonModifier ) )*
                      loop208:
                      do {
                          int alt208=2;
                          int LA208_0 = input.LA(1);
  
                          if ( (LA208_0==25||(LA208_0>=78 && LA208_0<=89)) ) {
                              alt208=1;
                          }
  
  
                          switch (alt208) {
                      	case 1 :
                      	    // InternalSARL.g:7166:6: (lv_modifiers_58_0= ruleCommonModifier )
                      	    {
                      	    // InternalSARL.g:7166:6: (lv_modifiers_58_0= ruleCommonModifier )
                      	    // InternalSARL.g:7167:7: lv_modifiers_58_0= ruleCommonModifier
                      	    {
                      	    if ( state.backtracking==0 ) {
  
                      	      							newCompositeNode(grammarAccess.getAnnotationFieldAccess().getModifiersCommonModifierParserRuleCall_2_4_1_0());
                      	      						
                      	    }
                      	    pushFollow(FOLLOW_35);
                      	    lv_modifiers_58_0=ruleCommonModifier();
  
                      	    state._fsp--;
                      	    if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      							if (current==null) {
                      	      								current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                      	      							}
                      	      							add(
                      	      								current,
                      	      								"modifiers",
                      	      								lv_modifiers_58_0,
                      	      								"org.eclipse.xtend.core.Xtend.CommonModifier");
                      	      							afterParserOrEnumRuleCall();
                      	      						
                      	    }
  
                      	    }
  
  
                      	    }
                      	    break;
  
                      	default :
                      	    break loop208;
                          }
                      } while (true);
  
                      otherlv_59=(Token)match(input,44,FOLLOW_3); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        					newLeafNode(otherlv_59, grammarAccess.getAnnotationFieldAccess().getAnnotationKeyword_2_4_2());
                        				
                      }
                      // InternalSARL.g:7188:5: ( (lv_name_60_0= ruleValidID ) )
                      // InternalSARL.g:7189:6: (lv_name_60_0= ruleValidID )
                      {
                      // InternalSARL.g:7189:6: (lv_name_60_0= ruleValidID )
                      // InternalSARL.g:7190:7: lv_name_60_0= ruleValidID
                      {
                      if ( state.backtracking==0 ) {
  
                        							newCompositeNode(grammarAccess.getAnnotationFieldAccess().getNameValidIDParserRuleCall_2_4_3_0());
                        						
                      }
                      pushFollow(FOLLOW_17);
                      lv_name_60_0=ruleValidID();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        							if (current==null) {
                        								current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                        							}
                        							set(
                        								current,
                        								"name",
                        								lv_name_60_0,
                        								"org.eclipse.xtend.core.Xtend.ValidID");
                        							afterParserOrEnumRuleCall();
                        						
                      }
  
                      }
  
  
                      }
  
                      otherlv_61=(Token)match(input,29,FOLLOW_36); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        					newLeafNode(otherlv_61, grammarAccess.getAnnotationFieldAccess().getLeftCurlyBracketKeyword_2_4_4());
                        				
                      }
                      // InternalSARL.g:7211:5: ( (lv_members_62_0= ruleAnnotationField ) )*
                      loop209:
                      do {
                          int alt209=2;
                          int LA209_0 = input.LA(1);
  
                          if ( (LA209_0==25||LA209_0==39||(LA209_0>=42 && LA209_0<=44)||(LA209_0>=65 && LA209_0<=66)||(LA209_0>=78 && LA209_0<=89)||LA209_0==105) ) {
                              alt209=1;
                          }
  
  
                          switch (alt209) {
                      	case 1 :
                      	    // InternalSARL.g:7212:6: (lv_members_62_0= ruleAnnotationField )
                      	    {
                      	    // InternalSARL.g:7212:6: (lv_members_62_0= ruleAnnotationField )
                      	    // InternalSARL.g:7213:7: lv_members_62_0= ruleAnnotationField
                      	    {
                      	    if ( state.backtracking==0 ) {
  
                      	      							newCompositeNode(grammarAccess.getAnnotationFieldAccess().getMembersAnnotationFieldParserRuleCall_2_4_5_0());
                      	      						
                      	    }
                      	    pushFollow(FOLLOW_36);
                      	    lv_members_62_0=ruleAnnotationField();
  
                      	    state._fsp--;
                      	    if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      							if (current==null) {
                      	      								current = createModelElementForParent(grammarAccess.getAnnotationFieldRule());
                      	      							}
                      	      							add(
                      	      								current,
                      	      								"members",
                      	      								lv_members_62_0,
                      	      								"io.sarl.lang.SARL.AnnotationField");
                      	      							afterParserOrEnumRuleCall();
                      	      						
                      	    }
  
                      	    }
  
  
                      	    }
                      	    break;
  
                      	default :
                      	    break loop209;
                          }
                      } while (true);
  
                      otherlv_63=(Token)match(input,30,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        					newLeafNode(otherlv_63, grammarAccess.getAnnotationFieldAccess().getRightCurlyBracketKeyword_2_4_6());
                        				
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
  
                	leaveRule();
  
              }
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }