docs: public final EObject ruleXAnnotationElementValueOrCommaList() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_1=null;
          Token otherlv_2=null;
          Token otherlv_4=null;
          Token otherlv_6=null;
          Token otherlv_9=null;
          EObject lv_elements_3_0 = null;
  
          EObject lv_elements_5_0 = null;
  
          EObject this_XAnnotationOrExpression_7 = null;
  
          EObject lv_elements_10_0 = null;
  
  
  
          	enterRule();
  
          try {
              // InternalSARL.g:11740:2: ( ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) ) )
              // InternalSARL.g:11741:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )
              {
              // InternalSARL.g:11741:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )
              int alt293=2;
              alt293 = dfa293.predict(input);
              switch (alt293) {
                  case 1 :
                      // InternalSARL.g:11742:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
                      {
                      // InternalSARL.g:11742:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
                      // InternalSARL.g:11743:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
                      {
                      // InternalSARL.g:11743:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
                      // InternalSARL.g:11744:5: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
                      {
                      // InternalSARL.g:11751:5: ( () otherlv_1= '#' otherlv_2= '[' )
                      // InternalSARL.g:11752:6: () otherlv_1= '#' otherlv_2= '['
                      {
                      // InternalSARL.g:11752:6: ()
                      // InternalSARL.g:11753:7: 
                      {
                      if ( state.backtracking==0 ) {
  
                        							current = forceCreateModelElement(
                        								grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0(),
                        								current);
                        						
                      }
  
                      }
  
                      otherlv_1=(Token)match(input,106,FOLLOW_90); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        						newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1());
                        					
                      }
                      otherlv_2=(Token)match(input,55,FOLLOW_110); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        						newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2());
                        					
                      }
  
                      }
  
  
                      }
  
                      // InternalSARL.g:11769:4: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
                      int alt290=2;
                      int LA290_0 = input.LA(1);
  
                      if ( ((LA290_0>=RULE_STRING && LA290_0<=RULE_RICH_TEXT_START)||(LA290_0>=RULE_HEX && LA290_0<=RULE_DECIMAL)||LA290_0==25||(LA290_0>=28 && LA290_0<=29)||LA290_0==36||(LA290_0>=39 && LA290_0<=40)||(LA290_0>=42 && LA290_0<=45)||(LA290_0>=48 && LA290_0<=49)||LA290_0==51||LA290_0==55||(LA290_0>=60 && LA290_0<=63)||(LA290_0>=67 && LA290_0<=68)||(LA290_0>=73 && LA290_0<=75)||(LA290_0>=78 && LA290_0<=96)||(LA290_0>=105 && LA290_0<=106)||LA290_0==129||(LA290_0>=131 && LA290_0<=140)) ) {
                          alt290=1;
                      }
                      switch (alt290) {
                          case 1 :
                              // InternalSARL.g:11770:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
                              {
                              // InternalSARL.g:11770:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
                              // InternalSARL.g:11771:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
                              {
                              // InternalSARL.g:11771:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
                              // InternalSARL.g:11772:7: lv_elements_3_0= ruleXAnnotationOrExpression
                              {
                              if ( state.backtracking==0 ) {
  
                                							newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0());
                                						
                              }
                              pushFollow(FOLLOW_111);
                              lv_elements_3_0=ruleXAnnotationOrExpression();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                							if (current==null) {
                                								current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
                                							}
                                							add(
                                								current,
                                								"elements",
                                								lv_elements_3_0,
                                								"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
                                							afterParserOrEnumRuleCall();
                                						
                              }
  
                              }
  
  
                              }
  
                              // InternalSARL.g:11789:5: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
                              loop289:
                              do {
                                  int alt289=2;
                                  int LA289_0 = input.LA(1);
  
                                  if ( (LA289_0==32) ) {
                                      alt289=1;
                                  }
  
  
                                  switch (alt289) {
                              	case 1 :
                              	    // InternalSARL.g:11790:6: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
                              	    {
                              	    otherlv_4=(Token)match(input,32,FOLLOW_69); if (state.failed) return current;
                              	    if ( state.backtracking==0 ) {
  
                              	      						newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0());
                              	      					
                              	    }
                              	    // InternalSARL.g:11794:6: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
                              	    // InternalSARL.g:11795:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
                              	    {
                              	    // InternalSARL.g:11795:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
                              	    // InternalSARL.g:11796:8: lv_elements_5_0= ruleXAnnotationOrExpression
                              	    {
                              	    if ( state.backtracking==0 ) {
  
                              	      								newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0());
                              	      							
                              	    }
                              	    pushFollow(FOLLOW_111);
                              	    lv_elements_5_0=ruleXAnnotationOrExpression();
  
                              	    state._fsp--;
                              	    if (state.failed) return current;
                              	    if ( state.backtracking==0 ) {
  
                              	      								if (current==null) {
                              	      									current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
                              	      								}
                              	      								add(
                              	      									current,
                              	      									"elements",
                              	      									lv_elements_5_0,
                              	      									"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
                              	      								afterParserOrEnumRuleCall();
                              	      							
                              	    }
  
                              	    }
  
  
                              	    }
  
  
                              	    }
                              	    break;
  
                              	default :
                              	    break loop289;
                                  }
                              } while (true);
  
  
                              }
                              break;
  
                      }
  
                      otherlv_6=(Token)match(input,56,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        				newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2());
                        			
                      }
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // InternalSARL.g:11821:3: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
                      {
                      // InternalSARL.g:11821:3: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
                      // InternalSARL.g:11822:4: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
                      {
                      if ( state.backtracking==0 ) {
  
                        				newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0());
                        			
                      }
                      pushFollow(FOLLOW_72);
                      this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        				current = this_XAnnotationOrExpression_7;
                        				afterParserOrEnumRuleCall();
                        			
                      }
                      // InternalSARL.g:11830:4: ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
                      int alt292=2;
                      int LA292_0 = input.LA(1);
  
                      if ( (LA292_0==32) ) {
                          alt292=1;
                      }
                      switch (alt292) {
                          case 1 :
                              // InternalSARL.g:11831:5: () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
                              {
                              // InternalSARL.g:11831:5: ()
                              // InternalSARL.g:11832:6: 
                              {
                              if ( state.backtracking==0 ) {
  
                                						current = forceCreateModelElementAndAdd(
                                							grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0(),
                                							current);
                                					
                              }
  
                              }
  
                              // InternalSARL.g:11838:5: (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
                              int cnt291=0;
                              loop291:
                              do {
                                  int alt291=2;
                                  int LA291_0 = input.LA(1);
  
                                  if ( (LA291_0==32) ) {
                                      alt291=1;
                                  }
  
  
                                  switch (alt291) {
                              	case 1 :
                              	    // InternalSARL.g:11839:6: otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
                              	    {
                              	    otherlv_9=(Token)match(input,32,FOLLOW_69); if (state.failed) return current;
                              	    if ( state.backtracking==0 ) {
  
                              	      						newLeafNode(otherlv_9, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0());
                              	      					
                              	    }
                              	    // InternalSARL.g:11843:6: ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
                              	    // InternalSARL.g:11844:7: (lv_elements_10_0= ruleXAnnotationOrExpression )
                              	    {
                              	    // InternalSARL.g:11844:7: (lv_elements_10_0= ruleXAnnotationOrExpression )
                              	    // InternalSARL.g:11845:8: lv_elements_10_0= ruleXAnnotationOrExpression
                              	    {
                              	    if ( state.backtracking==0 ) {
  
                              	      								newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0());
                              	      							
                              	    }
                              	    pushFollow(FOLLOW_72);
                              	    lv_elements_10_0=ruleXAnnotationOrExpression();
  
                              	    state._fsp--;
                              	    if (state.failed) return current;
                              	    if ( state.backtracking==0 ) {
  
                              	      								if (current==null) {
                              	      									current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
                              	      								}
                              	      								add(
                              	      									current,
                              	      									"elements",
                              	      									lv_elements_10_0,
                              	      									"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
                              	      								afterParserOrEnumRuleCall();
                              	      							
                              	    }
  
                              	    }
  
  
                              	    }
  
  
                              	    }
                              	    break;
  
                              	default :
                              	    if ( cnt291 >= 1 ) break loop291;
                              	    if (state.backtracking>0) {state.failed=true; return current;}
                                          EarlyExitException eee =
                                              new EarlyExitException(291, input);
                                          throw eee;
                                  }
                                  cnt291++;
                              } while (true);
  
  
                              }
                              break;
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
  
                	leaveRule();
  
              }
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }