docs: public final EObject ruleXListLiteral() 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;
  
  
  
          	enterRule();
  
          try {
              // InternalSARL.g:13869:2: ( ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) )
              // InternalSARL.g:13870:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
              {
              // InternalSARL.g:13870:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
              // InternalSARL.g:13871:3: () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']'
              {
              // InternalSARL.g:13871:3: ()
              // InternalSARL.g:13872:4: 
              {
              if ( state.backtracking==0 ) {
  
                				current = forceCreateModelElement(
                					grammarAccess.getXListLiteralAccess().getXListLiteralAction_0(),
                					current);
                			
              }
  
              }
  
              otherlv_1=(Token)match(input,106,FOLLOW_90); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                			newLeafNode(otherlv_1, grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1());
                		
              }
              otherlv_2=(Token)match(input,55,FOLLOW_132); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                			newLeafNode(otherlv_2, grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2());
                		
              }
              // InternalSARL.g:13886:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
              int alt330=2;
              int LA330_0 = input.LA(1);
  
              if ( ((LA330_0>=RULE_STRING && LA330_0<=RULE_RICH_TEXT_START)||(LA330_0>=RULE_HEX && LA330_0<=RULE_DECIMAL)||LA330_0==25||(LA330_0>=28 && LA330_0<=29)||LA330_0==36||(LA330_0>=39 && LA330_0<=40)||(LA330_0>=42 && LA330_0<=45)||(LA330_0>=48 && LA330_0<=49)||LA330_0==51||LA330_0==55||(LA330_0>=60 && LA330_0<=63)||(LA330_0>=67 && LA330_0<=68)||(LA330_0>=73 && LA330_0<=75)||(LA330_0>=78 && LA330_0<=96)||LA330_0==106||LA330_0==129||(LA330_0>=131 && LA330_0<=140)) ) {
                  alt330=1;
              }
              switch (alt330) {
                  case 1 :
                      // InternalSARL.g:13887:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
                      {
                      // InternalSARL.g:13887:4: ( (lv_elements_3_0= ruleXExpression ) )
                      // InternalSARL.g:13888:5: (lv_elements_3_0= ruleXExpression )
                      {
                      // InternalSARL.g:13888:5: (lv_elements_3_0= ruleXExpression )
                      // InternalSARL.g:13889:6: lv_elements_3_0= ruleXExpression
                      {
                      if ( state.backtracking==0 ) {
  
                        						newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0());
                        					
                      }
                      pushFollow(FOLLOW_111);
                      lv_elements_3_0=ruleXExpression();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        						if (current==null) {
                        							current = createModelElementForParent(grammarAccess.getXListLiteralRule());
                        						}
                        						add(
                        							current,
                        							"elements",
                        							lv_elements_3_0,
                        							"org.eclipse.xtext.xbase.Xbase.XExpression");
                        						afterParserOrEnumRuleCall();
                        					
                      }
  
                      }
  
  
                      }
  
                      // InternalSARL.g:13906:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
                      loop329:
                      do {
                          int alt329=2;
                          int LA329_0 = input.LA(1);
  
                          if ( (LA329_0==32) ) {
                              alt329=1;
                          }
  
  
                          switch (alt329) {
                      	case 1 :
                      	    // InternalSARL.g:13907:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
                      	    {
                      	    otherlv_4=(Token)match(input,32,FOLLOW_45); if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      					newLeafNode(otherlv_4, grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0());
                      	      				
                      	    }
                      	    // InternalSARL.g:13911:5: ( (lv_elements_5_0= ruleXExpression ) )
                      	    // InternalSARL.g:13912:6: (lv_elements_5_0= ruleXExpression )
                      	    {
                      	    // InternalSARL.g:13912:6: (lv_elements_5_0= ruleXExpression )
                      	    // InternalSARL.g:13913:7: lv_elements_5_0= ruleXExpression
                      	    {
                      	    if ( state.backtracking==0 ) {
  
                      	      							newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0());
                      	      						
                      	    }
                      	    pushFollow(FOLLOW_111);
                      	    lv_elements_5_0=ruleXExpression();
  
                      	    state._fsp--;
                      	    if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      							if (current==null) {
                      	      								current = createModelElementForParent(grammarAccess.getXListLiteralRule());
                      	      							}
                      	      							add(
                      	      								current,
                      	      								"elements",
                      	      								lv_elements_5_0,
                      	      								"org.eclipse.xtext.xbase.Xbase.XExpression");
                      	      							afterParserOrEnumRuleCall();
                      	      						
                      	    }
  
                      	    }
  
  
                      	    }
  
  
                      	    }
                      	    break;
  
                      	default :
                      	    break loop329;
                          }
                      } while (true);
  
  
                      }
                      break;
  
              }
  
              otherlv_6=(Token)match(input,56,FOLLOW_2); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                			newLeafNode(otherlv_6, grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4());
                		
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
  
                	leaveRule();
  
              }
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }