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;
    }
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 { { int alt293 = 2 ; alt293 = dfa293 . predict ( input ) ; switch ( alt293 ) { case 1 : { { { { { 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 ( ) ) ; } } } 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 : { { { 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 ( ) ; } } } loop289 : do { int alt289 = 2 ; int LA289_0 = input . LA ( 1 ) ; if ( ( LA289_0 == 32 ) ) { alt289 = 1 ; } switch ( alt289 ) { case 1 : { 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 ( ) ) ; } { { 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 : { { 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 ( ) ; } int alt292 = 2 ; int LA292_0 = input . LA ( 1 ) ; if ( ( LA292_0 == 32 ) ) { alt292 = 1 ; } switch ( alt292 ) { case 1 : { { if ( state . backtracking == 0 ) { current = forceCreateModelElementAndAdd ( grammarAccess . getXAnnotationElementValueOrCommaListAccess ( ) . getXListLiteralElementsAction_1_1_0 ( ) , current ) ; } } int cnt291 = 0 ; loop291 : do { int alt291 = 2 ; int LA291_0 = input . LA ( 1 ) ; if ( ( LA291_0 == 32 ) ) { alt291 = 1 ; } switch ( alt291 ) { case 1 : { 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 ( ) ) ; } { { 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 ; }
InternalSARL.g:11734:1: ruleXAnnotationElementValueOrCommaList returns [EObject current=null] : ( ( ( ( ( () '#' '[' ) )=> ( () 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 ) ) )+ )? ) ) ;