public final EObject ruleInitialisedVariableDeclaration() throws RecognitionException {
        EObject current = null;

        Token lv_writeable_1_0=null;
        Token otherlv_2=null;
        Token otherlv_6=null;
        EObject lv_type_3_0 = null;

        AntlrDatatypeRuleToken lv_name_4_0 = null;

        AntlrDatatypeRuleToken lv_name_5_0 = null;

        EObject lv_right_7_0 = null;



        	enterRule();

        try {
            // InternalPureXbase.g:506:2: ( ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) ) )
            // InternalPureXbase.g:507:2: ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )
            {
            // InternalPureXbase.g:507:2: ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )
            // InternalPureXbase.g:508:3: () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) )
            {
            // InternalPureXbase.g:508:3: ()
            // InternalPureXbase.g:509:4: 
            {
            if ( state.backtracking==0 ) {

              				current = forceCreateModelElement(
              					grammarAccess.getInitialisedVariableDeclarationAccess().getXVariableDeclarationAction_0(),
              					current);
              			
            }

            }

            // InternalPureXbase.g:515:3: ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' )
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( (LA14_0==18) ) {
                alt14=1;
            }
            else if ( (LA14_0==19) ) {
                alt14=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 14, 0, input);

                throw nvae;
            }
            switch (alt14) {
                case 1 :
                    // InternalPureXbase.g:516:4: ( (lv_writeable_1_0= 'var' ) )
                    {
                    // InternalPureXbase.g:516:4: ( (lv_writeable_1_0= 'var' ) )
                    // InternalPureXbase.g:517:5: (lv_writeable_1_0= 'var' )
                    {
                    // InternalPureXbase.g:517:5: (lv_writeable_1_0= 'var' )
                    // InternalPureXbase.g:518:6: lv_writeable_1_0= 'var'
                    {
                    lv_writeable_1_0=(Token)match(input,18,FOLLOW_11); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						newLeafNode(lv_writeable_1_0, grammarAccess.getInitialisedVariableDeclarationAccess().getWriteableVarKeyword_1_0_0());
                      					
                    }
                    if ( state.backtracking==0 ) {

                      						if (current==null) {
                      							current = createModelElement(grammarAccess.getInitialisedVariableDeclarationRule());
                      						}
                      						setWithLastConsumed(current, "writeable", true, "var");
                      					
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalPureXbase.g:531:4: otherlv_2= 'val'
                    {
                    otherlv_2=(Token)match(input,19,FOLLOW_11); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				newLeafNode(otherlv_2, grammarAccess.getInitialisedVariableDeclarationAccess().getValKeyword_1_1());
                      			
                    }

                    }
                    break;

            }

            // InternalPureXbase.g:536:3: ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) )
            int alt15=2;
            int LA15_0 = input.LA(1);

            if ( (LA15_0==RULE_ID) ) {
                int LA15_1 = input.LA(2);

                if ( (LA15_1==20) ) {
                    alt15=2;
                }
                else if ( (LA15_1==54) && (synpred6_InternalPureXbase())) {
                    alt15=1;
                }
                else if ( (LA15_1==28) && (synpred6_InternalPureXbase())) {
                    alt15=1;
                }
                else if ( (LA15_1==61) && (synpred6_InternalPureXbase())) {
                    alt15=1;
                }
                else if ( (LA15_1==RULE_ID) && (synpred6_InternalPureXbase())) {
                    alt15=1;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 15, 1, input);

                    throw nvae;
                }
            }
            else if ( (LA15_0==15) && (synpred6_InternalPureXbase())) {
                alt15=1;
            }
            else if ( (LA15_0==41) && (synpred6_InternalPureXbase())) {
                alt15=1;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 15, 0, input);

                throw nvae;
            }
            switch (alt15) {
                case 1 :
                    // InternalPureXbase.g:537:4: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
                    {
                    // InternalPureXbase.g:537:4: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
                    // InternalPureXbase.g:538:5: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
                    {
                    // InternalPureXbase.g:551:5: ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
                    // InternalPureXbase.g:552:6: ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) )
                    {
                    // InternalPureXbase.g:552:6: ( (lv_type_3_0= ruleJvmTypeReference ) )
                    // InternalPureXbase.g:553:7: (lv_type_3_0= ruleJvmTypeReference )
                    {
                    // InternalPureXbase.g:553:7: (lv_type_3_0= ruleJvmTypeReference )
                    // InternalPureXbase.g:554:8: lv_type_3_0= ruleJvmTypeReference
                    {
                    if ( state.backtracking==0 ) {

                      								newCompositeNode(grammarAccess.getInitialisedVariableDeclarationAccess().getTypeJvmTypeReferenceParserRuleCall_2_0_0_0_0());
                      							
                    }
                    pushFollow(FOLLOW_12);
                    lv_type_3_0=ruleJvmTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      								if (current==null) {
                      									current = createModelElementForParent(grammarAccess.getInitialisedVariableDeclarationRule());
                      								}
                      								set(
                      									current,
                      									"type",
                      									lv_type_3_0,
                      									"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
                      								afterParserOrEnumRuleCall();
                      							
                    }

                    }


                    }

                    // InternalPureXbase.g:571:6: ( (lv_name_4_0= ruleValidID ) )
                    // InternalPureXbase.g:572:7: (lv_name_4_0= ruleValidID )
                    {
                    // InternalPureXbase.g:572:7: (lv_name_4_0= ruleValidID )
                    // InternalPureXbase.g:573:8: lv_name_4_0= ruleValidID
                    {
                    if ( state.backtracking==0 ) {

                      								newCompositeNode(grammarAccess.getInitialisedVariableDeclarationAccess().getNameValidIDParserRuleCall_2_0_0_1_0());
                      							
                    }
                    pushFollow(FOLLOW_13);
                    lv_name_4_0=ruleValidID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      								if (current==null) {
                      									current = createModelElementForParent(grammarAccess.getInitialisedVariableDeclarationRule());
                      								}
                      								set(
                      									current,
                      									"name",
                      									lv_name_4_0,
                      									"org.eclipse.xtext.xbase.Xtype.ValidID");
                      								afterParserOrEnumRuleCall();
                      							
                    }

                    }


                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // InternalPureXbase.g:593:4: ( (lv_name_5_0= ruleValidID ) )
                    {
                    // InternalPureXbase.g:593:4: ( (lv_name_5_0= ruleValidID ) )
                    // InternalPureXbase.g:594:5: (lv_name_5_0= ruleValidID )
                    {
                    // InternalPureXbase.g:594:5: (lv_name_5_0= ruleValidID )
                    // InternalPureXbase.g:595:6: lv_name_5_0= ruleValidID
                    {
                    if ( state.backtracking==0 ) {

                      						newCompositeNode(grammarAccess.getInitialisedVariableDeclarationAccess().getNameValidIDParserRuleCall_2_1_0());
                      					
                    }
                    pushFollow(FOLLOW_13);
                    lv_name_5_0=ruleValidID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						if (current==null) {
                      							current = createModelElementForParent(grammarAccess.getInitialisedVariableDeclarationRule());
                      						}
                      						set(
                      							current,
                      							"name",
                      							lv_name_5_0,
                      							"org.eclipse.xtext.xbase.Xtype.ValidID");
                      						afterParserOrEnumRuleCall();
                      					
                    }

                    }


                    }


                    }
                    break;

            }

            otherlv_6=(Token)match(input,20,FOLLOW_3); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(otherlv_6, grammarAccess.getInitialisedVariableDeclarationAccess().getEqualsSignKeyword_3());
              		
            }
            // InternalPureXbase.g:617:3: ( (lv_right_7_0= ruleXExpression ) )
            // InternalPureXbase.g:618:4: (lv_right_7_0= ruleXExpression )
            {
            // InternalPureXbase.g:618:4: (lv_right_7_0= ruleXExpression )
            // InternalPureXbase.g:619:5: lv_right_7_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {

              					newCompositeNode(grammarAccess.getInitialisedVariableDeclarationAccess().getRightXExpressionParserRuleCall_4_0());
              				
            }
            pushFollow(FOLLOW_2);
            lv_right_7_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					if (current==null) {
              						current = createModelElementForParent(grammarAccess.getInitialisedVariableDeclarationRule());
              					}
              					set(
              						current,
              						"right",
              						lv_right_7_0,
              						"org.eclipse.xtext.xbase.Xbase.XExpression");
              					afterParserOrEnumRuleCall();
              				
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
public final EObject ruleInitialisedVariableDeclaration ( ) throws RecognitionException { EObject current = null ; Token lv_writeable_1_0 = null ; Token otherlv_2 = null ; Token otherlv_6 = null ; EObject lv_type_3_0 = null ; AntlrDatatypeRuleToken lv_name_4_0 = null ; AntlrDatatypeRuleToken lv_name_5_0 = null ; EObject lv_right_7_0 = null ; enterRule ( ) ; try { { { { if ( state . backtracking == 0 ) { current = forceCreateModelElement ( grammarAccess . getInitialisedVariableDeclarationAccess ( ) . getXVariableDeclarationAction_0 ( ) , current ) ; } } int alt14 = 2 ; int LA14_0 = input . LA ( 1 ) ; if ( ( LA14_0 == 18 ) ) { alt14 = 1 ; } else if ( ( LA14_0 == 19 ) ) { alt14 = 2 ; } else { if ( state . backtracking > 0 ) { state . failed = true ; return current ; } NoViableAltException nvae = new NoViableAltException ( "" , 14 , 0 , input ) ; throw nvae ; } switch ( alt14 ) { case 1 : { { { lv_writeable_1_0 = ( Token ) match ( input , 18 , FOLLOW_11 ) ; if ( state . failed ) return current ; if ( state . backtracking == 0 ) { newLeafNode ( lv_writeable_1_0 , grammarAccess . getInitialisedVariableDeclarationAccess ( ) . getWriteableVarKeyword_1_0_0 ( ) ) ; } if ( state . backtracking == 0 ) { if ( current == null ) { current = createModelElement ( grammarAccess . getInitialisedVariableDeclarationRule ( ) ) ; } setWithLastConsumed ( current , "writeable" , true , "var" ) ; } } } } break ; case 2 : { otherlv_2 = ( Token ) match ( input , 19 , FOLLOW_11 ) ; if ( state . failed ) return current ; if ( state . backtracking == 0 ) { newLeafNode ( otherlv_2 , grammarAccess . getInitialisedVariableDeclarationAccess ( ) . getValKeyword_1_1 ( ) ) ; } } break ; } int alt15 = 2 ; int LA15_0 = input . LA ( 1 ) ; if ( ( LA15_0 == RULE_ID ) ) { int LA15_1 = input . LA ( 2 ) ; if ( ( LA15_1 == 20 ) ) { alt15 = 2 ; } else if ( ( LA15_1 == 54 ) && ( synpred6_InternalPureXbase ( ) ) ) { alt15 = 1 ; } else if ( ( LA15_1 == 28 ) && ( synpred6_InternalPureXbase ( ) ) ) { alt15 = 1 ; } else if ( ( LA15_1 == 61 ) && ( synpred6_InternalPureXbase ( ) ) ) { alt15 = 1 ; } else if ( ( LA15_1 == RULE_ID ) && ( synpred6_InternalPureXbase ( ) ) ) { alt15 = 1 ; } else { if ( state . backtracking > 0 ) { state . failed = true ; return current ; } NoViableAltException nvae = new NoViableAltException ( "" , 15 , 1 , input ) ; throw nvae ; } } else if ( ( LA15_0 == 15 ) && ( synpred6_InternalPureXbase ( ) ) ) { alt15 = 1 ; } else if ( ( LA15_0 == 41 ) && ( synpred6_InternalPureXbase ( ) ) ) { alt15 = 1 ; } else { if ( state . backtracking > 0 ) { state . failed = true ; return current ; } NoViableAltException nvae = new NoViableAltException ( "" , 15 , 0 , input ) ; throw nvae ; } switch ( alt15 ) { case 1 : { { { { { if ( state . backtracking == 0 ) { newCompositeNode ( grammarAccess . getInitialisedVariableDeclarationAccess ( ) . getTypeJvmTypeReferenceParserRuleCall_2_0_0_0_0 ( ) ) ; } pushFollow ( FOLLOW_12 ) ; lv_type_3_0 = ruleJvmTypeReference ( ) ; state . _fsp -- ; if ( state . failed ) return current ; if ( state . backtracking == 0 ) { if ( current == null ) { current = createModelElementForParent ( grammarAccess . getInitialisedVariableDeclarationRule ( ) ) ; } set ( current , "type" , lv_type_3_0 , "org.eclipse.xtext.xbase.Xtype.JvmTypeReference" ) ; afterParserOrEnumRuleCall ( ) ; } } } { { if ( state . backtracking == 0 ) { newCompositeNode ( grammarAccess . getInitialisedVariableDeclarationAccess ( ) . getNameValidIDParserRuleCall_2_0_0_1_0 ( ) ) ; } pushFollow ( FOLLOW_13 ) ; lv_name_4_0 = ruleValidID ( ) ; state . _fsp -- ; if ( state . failed ) return current ; if ( state . backtracking == 0 ) { if ( current == null ) { current = createModelElementForParent ( grammarAccess . getInitialisedVariableDeclarationRule ( ) ) ; } set ( current , "name" , lv_name_4_0 , "org.eclipse.xtext.xbase.Xtype.ValidID" ) ; afterParserOrEnumRuleCall ( ) ; } } } } } } break ; case 2 : { { { if ( state . backtracking == 0 ) { newCompositeNode ( grammarAccess . getInitialisedVariableDeclarationAccess ( ) . getNameValidIDParserRuleCall_2_1_0 ( ) ) ; } pushFollow ( FOLLOW_13 ) ; lv_name_5_0 = ruleValidID ( ) ; state . _fsp -- ; if ( state . failed ) return current ; if ( state . backtracking == 0 ) { if ( current == null ) { current = createModelElementForParent ( grammarAccess . getInitialisedVariableDeclarationRule ( ) ) ; } set ( current , "name" , lv_name_5_0 , "org.eclipse.xtext.xbase.Xtype.ValidID" ) ; afterParserOrEnumRuleCall ( ) ; } } } } break ; } otherlv_6 = ( Token ) match ( input , 20 , FOLLOW_3 ) ; if ( state . failed ) return current ; if ( state . backtracking == 0 ) { newLeafNode ( otherlv_6 , grammarAccess . getInitialisedVariableDeclarationAccess ( ) . getEqualsSignKeyword_3 ( ) ) ; } { { if ( state . backtracking == 0 ) { newCompositeNode ( grammarAccess . getInitialisedVariableDeclarationAccess ( ) . getRightXExpressionParserRuleCall_4_0 ( ) ) ; } pushFollow ( FOLLOW_2 ) ; lv_right_7_0 = ruleXExpression ( ) ; state . _fsp -- ; if ( state . failed ) return current ; if ( state . backtracking == 0 ) { if ( current == null ) { current = createModelElementForParent ( grammarAccess . getInitialisedVariableDeclarationRule ( ) ) ; } set ( current , "right" , lv_right_7_0 , "org.eclipse.xtext.xbase.Xbase.XExpression" ) ; afterParserOrEnumRuleCall ( ) ; } } } } } if ( state . backtracking == 0 ) { leaveRule ( ) ; } } catch ( RecognitionException re ) { recover ( input , re ) ; appendSkippedTokens ( ) ; } finally { } return current ; }
InternalPureXbase.g:500:1: ruleInitialisedVariableDeclaration returns [EObject current=null] : ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) ) ;