docs: public final EObject ruleXAnnotationElementValue() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_1=null;
          Token otherlv_2=null;
          Token otherlv_4=null;
          Token otherlv_6=null;
          EObject lv_elements_3_0 = null;
  
          EObject lv_elements_5_0 = null;
  
          EObject this_XAnnotationOrExpression_7 = null;
  
  
  
          	enterRule();
  
          try {
              // InternalSARL.g:11882:2: ( ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ) )
              // InternalSARL.g:11883:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
              {
              // InternalSARL.g:11883:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
              int alt296=2;
              alt296 = dfa296.predict(input);
              switch (alt296) {
                  case 1 :
                      // InternalSARL.g:11884:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
                      {
                      // InternalSARL.g:11884:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
                      // InternalSARL.g:11885:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
                      {
                      // InternalSARL.g:11885:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
                      // InternalSARL.g:11886:5: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
                      {
                      // InternalSARL.g:11893:5: ( () otherlv_1= '#' otherlv_2= '[' )
                      // InternalSARL.g:11894:6: () otherlv_1= '#' otherlv_2= '['
                      {
                      // InternalSARL.g:11894:6: ()
                      // InternalSARL.g:11895:7: 
                      {
                      if ( state.backtracking==0 ) {
  
                        							current = forceCreateModelElement(
                        								grammarAccess.getXAnnotationElementValueAccess().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.getXAnnotationElementValueAccess().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.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2());
                        					
                      }
  
                      }
  
  
                      }
  
                      // InternalSARL.g:11911:4: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
                      int alt295=2;
                      int LA295_0 = input.LA(1);
  
                      if ( ((LA295_0>=RULE_STRING && LA295_0<=RULE_RICH_TEXT_START)||(LA295_0>=RULE_HEX && LA295_0<=RULE_DECIMAL)||LA295_0==25||(LA295_0>=28 && LA295_0<=29)||LA295_0==36||(LA295_0>=39 && LA295_0<=40)||(LA295_0>=42 && LA295_0<=45)||(LA295_0>=48 && LA295_0<=49)||LA295_0==51||LA295_0==55||(LA295_0>=60 && LA295_0<=63)||(LA295_0>=67 && LA295_0<=68)||(LA295_0>=73 && LA295_0<=75)||(LA295_0>=78 && LA295_0<=96)||(LA295_0>=105 && LA295_0<=106)||LA295_0==129||(LA295_0>=131 && LA295_0<=140)) ) {
                          alt295=1;
                      }
                      switch (alt295) {
                          case 1 :
                              // InternalSARL.g:11912:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
                              {
                              // InternalSARL.g:11912:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
                              // InternalSARL.g:11913:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
                              {
                              // InternalSARL.g:11913:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
                              // InternalSARL.g:11914:7: lv_elements_3_0= ruleXAnnotationOrExpression
                              {
                              if ( state.backtracking==0 ) {
  
                                							newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().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.getXAnnotationElementValueRule());
                                							}
                                							add(
                                								current,
                                								"elements",
                                								lv_elements_3_0,
                                								"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
                                							afterParserOrEnumRuleCall();
                                						
                              }
  
                              }
  
  
                              }
  
                              // InternalSARL.g:11931:5: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
                              loop294:
                              do {
                                  int alt294=2;
                                  int LA294_0 = input.LA(1);
  
                                  if ( (LA294_0==32) ) {
                                      alt294=1;
                                  }
  
  
                                  switch (alt294) {
                              	case 1 :
                              	    // InternalSARL.g:11932: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.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0());
                              	      					
                              	    }
                              	    // InternalSARL.g:11936:6: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
                              	    // InternalSARL.g:11937:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
                              	    {
                              	    // InternalSARL.g:11937:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
                              	    // InternalSARL.g:11938:8: lv_elements_5_0= ruleXAnnotationOrExpression
                              	    {
                              	    if ( state.backtracking==0 ) {
  
                              	      								newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().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.getXAnnotationElementValueRule());
                              	      								}
                              	      								add(
                              	      									current,
                              	      									"elements",
                              	      									lv_elements_5_0,
                              	      									"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
                              	      								afterParserOrEnumRuleCall();
                              	      							
                              	    }
  
                              	    }
  
  
                              	    }
  
  
                              	    }
                              	    break;
  
                              	default :
                              	    break loop294;
                                  }
                              } while (true);
  
  
                              }
                              break;
  
                      }
  
                      otherlv_6=(Token)match(input,56,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        				newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2());
                        			
                      }
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // InternalSARL.g:11963:3: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression
                      {
                      if ( state.backtracking==0 ) {
  
                        			newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1());
                        		
                      }
                      pushFollow(FOLLOW_2);
                      this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current = this_XAnnotationOrExpression_7;
                        			afterParserOrEnumRuleCall();
                        		
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
  
                	leaveRule();
  
              }
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }