package org.xtext.example.mydsl.ide.contentassist.antlr.internal;

import java.io.InputStream;
import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.DFA;
import org.xtext.example.mydsl.services.MyDslGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalMyDslParser extends AbstractInternalContentAssistParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_INT", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'Model'", "'{'", "'}'", "'classAs'", "','", "'ClassA'", "'classb'", "'ClassB'", "'target'"
    };
    public static final int RULE_STRING=6;
    public static final int RULE_SL_COMMENT=8;
    public static final int T__19=19;
    public static final int T__15=15;
    public static final int T__16=16;
    public static final int T__17=17;
    public static final int T__18=18;
    public static final int T__11=11;
    public static final int T__12=12;
    public static final int T__13=13;
    public static final int T__14=14;
    public static final int EOF=-1;
    public static final int RULE_ID=4;
    public static final int RULE_WS=9;
    public static final int RULE_ANY_OTHER=10;
    public static final int RULE_INT=5;
    public static final int RULE_ML_COMMENT=7;

    // delegates
    // delegators


        public InternalMyDslParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalMyDslParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalMyDslParser.tokenNames; }
    public String getGrammarFileName() { return "InternalMyDsl.g"; }


    	private MyDslGrammarAccess grammarAccess;

    	public void setGrammarAccess(MyDslGrammarAccess grammarAccess) {
    		this.grammarAccess = grammarAccess;
    	}

    	@Override
    	protected Grammar getGrammar() {
    		return grammarAccess.getGrammar();
    	}

    	@Override
    	protected String getValueForTokenName(String tokenName) {
    		return tokenName;
    	}



    // $ANTLR start "entryRuleModel"
    // InternalMyDsl.g:53:1: entryRuleModel : ruleModel EOF ;
    public final void entryRuleModel() throws RecognitionException {
        try {
            // InternalMyDsl.g:54:1: ( ruleModel EOF )
            // InternalMyDsl.g:55:1: ruleModel EOF
            {
             before(grammarAccess.getModelRule()); 
            pushFollow(FOLLOW_1);
            ruleModel();

            state._fsp--;

             after(grammarAccess.getModelRule()); 
            match(input,EOF,FOLLOW_2); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleModel"


    // $ANTLR start "ruleModel"
    // InternalMyDsl.g:62:1: ruleModel : ( ( rule__Model__Group__0 ) ) ;
    public final void ruleModel() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:66:2: ( ( ( rule__Model__Group__0 ) ) )
            // InternalMyDsl.g:67:2: ( ( rule__Model__Group__0 ) )
            {
            // InternalMyDsl.g:67:2: ( ( rule__Model__Group__0 ) )
            // InternalMyDsl.g:68:3: ( rule__Model__Group__0 )
            {
             before(grammarAccess.getModelAccess().getGroup()); 
            // InternalMyDsl.g:69:3: ( rule__Model__Group__0 )
            // InternalMyDsl.g:69:4: rule__Model__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__Model__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getModelAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleModel"


    // $ANTLR start "entryRuleClassA"
    // InternalMyDsl.g:78:1: entryRuleClassA : ruleClassA EOF ;
    public final void entryRuleClassA() throws RecognitionException {
        try {
            // InternalMyDsl.g:79:1: ( ruleClassA EOF )
            // InternalMyDsl.g:80:1: ruleClassA EOF
            {
             before(grammarAccess.getClassARule()); 
            pushFollow(FOLLOW_1);
            ruleClassA();

            state._fsp--;

             after(grammarAccess.getClassARule()); 
            match(input,EOF,FOLLOW_2); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleClassA"


    // $ANTLR start "ruleClassA"
    // InternalMyDsl.g:87:1: ruleClassA : ( ( rule__ClassA__Group__0 ) ) ;
    public final void ruleClassA() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:91:2: ( ( ( rule__ClassA__Group__0 ) ) )
            // InternalMyDsl.g:92:2: ( ( rule__ClassA__Group__0 ) )
            {
            // InternalMyDsl.g:92:2: ( ( rule__ClassA__Group__0 ) )
            // InternalMyDsl.g:93:3: ( rule__ClassA__Group__0 )
            {
             before(grammarAccess.getClassAAccess().getGroup()); 
            // InternalMyDsl.g:94:3: ( rule__ClassA__Group__0 )
            // InternalMyDsl.g:94:4: rule__ClassA__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__ClassA__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getClassAAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleClassA"


    // $ANTLR start "entryRuleClassB"
    // InternalMyDsl.g:103:1: entryRuleClassB : ruleClassB EOF ;
    public final void entryRuleClassB() throws RecognitionException {
        try {
            // InternalMyDsl.g:104:1: ( ruleClassB EOF )
            // InternalMyDsl.g:105:1: ruleClassB EOF
            {
             before(grammarAccess.getClassBRule()); 
            pushFollow(FOLLOW_1);
            ruleClassB();

            state._fsp--;

             after(grammarAccess.getClassBRule()); 
            match(input,EOF,FOLLOW_2); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleClassB"


    // $ANTLR start "ruleClassB"
    // InternalMyDsl.g:112:1: ruleClassB : ( ( rule__ClassB__Group__0 ) ) ;
    public final void ruleClassB() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:116:2: ( ( ( rule__ClassB__Group__0 ) ) )
            // InternalMyDsl.g:117:2: ( ( rule__ClassB__Group__0 ) )
            {
            // InternalMyDsl.g:117:2: ( ( rule__ClassB__Group__0 ) )
            // InternalMyDsl.g:118:3: ( rule__ClassB__Group__0 )
            {
             before(grammarAccess.getClassBAccess().getGroup()); 
            // InternalMyDsl.g:119:3: ( rule__ClassB__Group__0 )
            // InternalMyDsl.g:119:4: rule__ClassB__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__ClassB__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getClassBAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleClassB"


    // $ANTLR start "rule__Model__Group__0"
    // InternalMyDsl.g:127:1: rule__Model__Group__0 : rule__Model__Group__0__Impl rule__Model__Group__1 ;
    public final void rule__Model__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:131:1: ( rule__Model__Group__0__Impl rule__Model__Group__1 )
            // InternalMyDsl.g:132:2: rule__Model__Group__0__Impl rule__Model__Group__1
            {
            pushFollow(FOLLOW_3);
            rule__Model__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_2);
            rule__Model__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group__0"


    // $ANTLR start "rule__Model__Group__0__Impl"
    // InternalMyDsl.g:139:1: rule__Model__Group__0__Impl : ( () ) ;
    public final void rule__Model__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:143:1: ( ( () ) )
            // InternalMyDsl.g:144:1: ( () )
            {
            // InternalMyDsl.g:144:1: ( () )
            // InternalMyDsl.g:145:2: ()
            {
             before(grammarAccess.getModelAccess().getModelAction_0()); 
            // InternalMyDsl.g:146:2: ()
            // InternalMyDsl.g:146:3: 
            {
            }

             after(grammarAccess.getModelAccess().getModelAction_0()); 

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group__0__Impl"


    // $ANTLR start "rule__Model__Group__1"
    // InternalMyDsl.g:154:1: rule__Model__Group__1 : rule__Model__Group__1__Impl rule__Model__Group__2 ;
    public final void rule__Model__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:158:1: ( rule__Model__Group__1__Impl rule__Model__Group__2 )
            // InternalMyDsl.g:159:2: rule__Model__Group__1__Impl rule__Model__Group__2
            {
            pushFollow(FOLLOW_4);
            rule__Model__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_2);
            rule__Model__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group__1"


    // $ANTLR start "rule__Model__Group__1__Impl"
    // InternalMyDsl.g:166:1: rule__Model__Group__1__Impl : ( 'Model' ) ;
    public final void rule__Model__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:170:1: ( ( 'Model' ) )
            // InternalMyDsl.g:171:1: ( 'Model' )
            {
            // InternalMyDsl.g:171:1: ( 'Model' )
            // InternalMyDsl.g:172:2: 'Model'
            {
             before(grammarAccess.getModelAccess().getModelKeyword_1()); 
            match(input,11,FOLLOW_2); 
             after(grammarAccess.getModelAccess().getModelKeyword_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group__1__Impl"


    // $ANTLR start "rule__Model__Group__2"
    // InternalMyDsl.g:181:1: rule__Model__Group__2 : rule__Model__Group__2__Impl rule__Model__Group__3 ;
    public final void rule__Model__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:185:1: ( rule__Model__Group__2__Impl rule__Model__Group__3 )
            // InternalMyDsl.g:186:2: rule__Model__Group__2__Impl rule__Model__Group__3
            {
            pushFollow(FOLLOW_5);
            rule__Model__Group__2__Impl();

            state._fsp--;

            pushFollow(FOLLOW_2);
            rule__Model__Group__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group__2"


    // $ANTLR start "rule__Model__Group__2__Impl"
    // InternalMyDsl.g:193:1: rule__Model__Group__2__Impl : ( ( rule__Model__NameAssignment_2 ) ) ;
    public final void rule__Model__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:197:1: ( ( ( rule__Model__NameAssignment_2 ) ) )
            // InternalMyDsl.g:198:1: ( ( rule__Model__NameAssignment_2 ) )
            {
            // InternalMyDsl.g:198:1: ( ( rule__Model__NameAssignment_2 ) )
            // InternalMyDsl.g:199:2: ( rule__Model__NameAssignment_2 )
            {
             before(grammarAccess.getModelAccess().getNameAssignment_2()); 
            // InternalMyDsl.g:200:2: ( rule__Model__NameAssignment_2 )
            // InternalMyDsl.g:200:3: rule__Model__NameAssignment_2
            {
            pushFollow(FOLLOW_2);
            rule__Model__NameAssignment_2();

            state._fsp--;


            }

             after(grammarAccess.getModelAccess().getNameAssignment_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group__2__Impl"


    // $ANTLR start "rule__Model__Group__3"
    // InternalMyDsl.g:208:1: rule__Model__Group__3 : rule__Model__Group__3__Impl rule__Model__Group__4 ;
    public final void rule__Model__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:212:1: ( rule__Model__Group__3__Impl rule__Model__Group__4 )
            // InternalMyDsl.g:213:2: rule__Model__Group__3__Impl rule__Model__Group__4
            {
            pushFollow(FOLLOW_6);
            rule__Model__Group__3__Impl();

            state._fsp--;

            pushFollow(FOLLOW_2);
            rule__Model__Group__4();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group__3"


    // $ANTLR start "rule__Model__Group__3__Impl"
    // InternalMyDsl.g:220:1: rule__Model__Group__3__Impl : ( '{' ) ;
    public final void rule__Model__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:224:1: ( ( '{' ) )
            // InternalMyDsl.g:225:1: ( '{' )
            {
            // InternalMyDsl.g:225:1: ( '{' )
            // InternalMyDsl.g:226:2: '{'
            {
             before(grammarAccess.getModelAccess().getLeftCurlyBracketKeyword_3()); 
            match(input,12,FOLLOW_2); 
             after(grammarAccess.getModelAccess().getLeftCurlyBracketKeyword_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group__3__Impl"


    // $ANTLR start "rule__Model__Group__4"
    // InternalMyDsl.g:235:1: rule__Model__Group__4 : rule__Model__Group__4__Impl rule__Model__Group__5 ;
    public final void rule__Model__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:239:1: ( rule__Model__Group__4__Impl rule__Model__Group__5 )
            // InternalMyDsl.g:240:2: rule__Model__Group__4__Impl rule__Model__Group__5
            {
            pushFollow(FOLLOW_6);
            rule__Model__Group__4__Impl();

            state._fsp--;

            pushFollow(FOLLOW_2);
            rule__Model__Group__5();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group__4"


    // $ANTLR start "rule__Model__Group__4__Impl"
    // InternalMyDsl.g:247:1: rule__Model__Group__4__Impl : ( ( rule__Model__Group_4__0 )? ) ;
    public final void rule__Model__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:251:1: ( ( ( rule__Model__Group_4__0 )? ) )
            // InternalMyDsl.g:252:1: ( ( rule__Model__Group_4__0 )? )
            {
            // InternalMyDsl.g:252:1: ( ( rule__Model__Group_4__0 )? )
            // InternalMyDsl.g:253:2: ( rule__Model__Group_4__0 )?
            {
             before(grammarAccess.getModelAccess().getGroup_4()); 
            // InternalMyDsl.g:254:2: ( rule__Model__Group_4__0 )?
            int alt1=2;
            int LA1_0 = input.LA(1);

            if ( (LA1_0==14) ) {
                alt1=1;
            }
            switch (alt1) {
                case 1 :
                    // InternalMyDsl.g:254:3: rule__Model__Group_4__0
                    {
                    pushFollow(FOLLOW_2);
                    rule__Model__Group_4__0();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getModelAccess().getGroup_4()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group__4__Impl"


    // $ANTLR start "rule__Model__Group__5"
    // InternalMyDsl.g:262:1: rule__Model__Group__5 : rule__Model__Group__5__Impl ;
    public final void rule__Model__Group__5() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:266:1: ( rule__Model__Group__5__Impl )
            // InternalMyDsl.g:267:2: rule__Model__Group__5__Impl
            {
            pushFollow(FOLLOW_2);
            rule__Model__Group__5__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group__5"


    // $ANTLR start "rule__Model__Group__5__Impl"
    // InternalMyDsl.g:273:1: rule__Model__Group__5__Impl : ( '}' ) ;
    public final void rule__Model__Group__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:277:1: ( ( '}' ) )
            // InternalMyDsl.g:278:1: ( '}' )
            {
            // InternalMyDsl.g:278:1: ( '}' )
            // InternalMyDsl.g:279:2: '}'
            {
             before(grammarAccess.getModelAccess().getRightCurlyBracketKeyword_5()); 
            match(input,13,FOLLOW_2); 
             after(grammarAccess.getModelAccess().getRightCurlyBracketKeyword_5()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group__5__Impl"


    // $ANTLR start "rule__Model__Group_4__0"
    // InternalMyDsl.g:289:1: rule__Model__Group_4__0 : rule__Model__Group_4__0__Impl rule__Model__Group_4__1 ;
    public final void rule__Model__Group_4__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:293:1: ( rule__Model__Group_4__0__Impl rule__Model__Group_4__1 )
            // InternalMyDsl.g:294:2: rule__Model__Group_4__0__Impl rule__Model__Group_4__1
            {
            pushFollow(FOLLOW_5);
            rule__Model__Group_4__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_2);
            rule__Model__Group_4__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group_4__0"


    // $ANTLR start "rule__Model__Group_4__0__Impl"
    // InternalMyDsl.g:301:1: rule__Model__Group_4__0__Impl : ( 'classAs' ) ;
    public final void rule__Model__Group_4__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:305:1: ( ( 'classAs' ) )
            // InternalMyDsl.g:306:1: ( 'classAs' )
            {
            // InternalMyDsl.g:306:1: ( 'classAs' )
            // InternalMyDsl.g:307:2: 'classAs'
            {
             before(grammarAccess.getModelAccess().getClassAsKeyword_4_0()); 
            match(input,14,FOLLOW_2); 
             after(grammarAccess.getModelAccess().getClassAsKeyword_4_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group_4__0__Impl"


    // $ANTLR start "rule__Model__Group_4__1"
    // InternalMyDsl.g:316:1: rule__Model__Group_4__1 : rule__Model__Group_4__1__Impl rule__Model__Group_4__2 ;
    public final void rule__Model__Group_4__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:320:1: ( rule__Model__Group_4__1__Impl rule__Model__Group_4__2 )
            // InternalMyDsl.g:321:2: rule__Model__Group_4__1__Impl rule__Model__Group_4__2
            {
            pushFollow(FOLLOW_7);
            rule__Model__Group_4__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_2);
            rule__Model__Group_4__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group_4__1"


    // $ANTLR start "rule__Model__Group_4__1__Impl"
    // InternalMyDsl.g:328:1: rule__Model__Group_4__1__Impl : ( '{' ) ;
    public final void rule__Model__Group_4__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:332:1: ( ( '{' ) )
            // InternalMyDsl.g:333:1: ( '{' )
            {
            // InternalMyDsl.g:333:1: ( '{' )
            // InternalMyDsl.g:334:2: '{'
            {
             before(grammarAccess.getModelAccess().getLeftCurlyBracketKeyword_4_1()); 
            match(input,12,FOLLOW_2); 
             after(grammarAccess.getModelAccess().getLeftCurlyBracketKeyword_4_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group_4__1__Impl"


    // $ANTLR start "rule__Model__Group_4__2"
    // InternalMyDsl.g:343:1: rule__Model__Group_4__2 : rule__Model__Group_4__2__Impl rule__Model__Group_4__3 ;
    public final void rule__Model__Group_4__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:347:1: ( rule__Model__Group_4__2__Impl rule__Model__Group_4__3 )
            // InternalMyDsl.g:348:2: rule__Model__Group_4__2__Impl rule__Model__Group_4__3
            {
            pushFollow(FOLLOW_8);
            rule__Model__Group_4__2__Impl();

            state._fsp--;

            pushFollow(FOLLOW_2);
            rule__Model__Group_4__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group_4__2"


    // $ANTLR start "rule__Model__Group_4__2__Impl"
    // InternalMyDsl.g:355:1: rule__Model__Group_4__2__Impl : ( ( rule__Model__ClassAsAssignment_4_2 ) ) ;
    public final void rule__Model__Group_4__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:359:1: ( ( ( rule__Model__ClassAsAssignment_4_2 ) ) )
            // InternalMyDsl.g:360:1: ( ( rule__Model__ClassAsAssignment_4_2 ) )
            {
            // InternalMyDsl.g:360:1: ( ( rule__Model__ClassAsAssignment_4_2 ) )
            // InternalMyDsl.g:361:2: ( rule__Model__ClassAsAssignment_4_2 )
            {
             before(grammarAccess.getModelAccess().getClassAsAssignment_4_2()); 
            // InternalMyDsl.g:362:2: ( rule__Model__ClassAsAssignment_4_2 )
            // InternalMyDsl.g:362:3: rule__Model__ClassAsAssignment_4_2
            {
            pushFollow(FOLLOW_2);
            rule__Model__ClassAsAssignment_4_2();

            state._fsp--;


            }

             after(grammarAccess.getModelAccess().getClassAsAssignment_4_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group_4__2__Impl"


    // $ANTLR start "rule__Model__Group_4__3"
    // InternalMyDsl.g:370:1: rule__Model__Group_4__3 : rule__Model__Group_4__3__Impl rule__Model__Group_4__4 ;
    public final void rule__Model__Group_4__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:374:1: ( rule__Model__Group_4__3__Impl rule__Model__Group_4__4 )
            // InternalMyDsl.g:375:2: rule__Model__Group_4__3__Impl rule__Model__Group_4__4
            {
            pushFollow(FOLLOW_8);
            rule__Model__Group_4__3__Impl();

            state._fsp--;

            pushFollow(FOLLOW_2);
            rule__Model__Group_4__4();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group_4__3"


    // $ANTLR start "rule__Model__Group_4__3__Impl"
    // InternalMyDsl.g:382:1: rule__Model__Group_4__3__Impl : ( ( rule__Model__Group_4_3__0 )* ) ;
    public final void rule__Model__Group_4__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:386:1: ( ( ( rule__Model__Group_4_3__0 )* ) )
            // InternalMyDsl.g:387:1: ( ( rule__Model__Group_4_3__0 )* )
            {
            // InternalMyDsl.g:387:1: ( ( rule__Model__Group_4_3__0 )* )
            // InternalMyDsl.g:388:2: ( rule__Model__Group_4_3__0 )*
            {
             before(grammarAccess.getModelAccess().getGroup_4_3()); 
            // InternalMyDsl.g:389:2: ( rule__Model__Group_4_3__0 )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==15) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // InternalMyDsl.g:389:3: rule__Model__Group_4_3__0
            	    {
            	    pushFollow(FOLLOW_9);
            	    rule__Model__Group_4_3__0();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);

             after(grammarAccess.getModelAccess().getGroup_4_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group_4__3__Impl"


    // $ANTLR start "rule__Model__Group_4__4"
    // InternalMyDsl.g:397:1: rule__Model__Group_4__4 : rule__Model__Group_4__4__Impl ;
    public final void rule__Model__Group_4__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:401:1: ( rule__Model__Group_4__4__Impl )
            // InternalMyDsl.g:402:2: rule__Model__Group_4__4__Impl
            {
            pushFollow(FOLLOW_2);
            rule__Model__Group_4__4__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group_4__4"


    // $ANTLR start "rule__Model__Group_4__4__Impl"
    // InternalMyDsl.g:408:1: rule__Model__Group_4__4__Impl : ( '}' ) ;
    public final void rule__Model__Group_4__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:412:1: ( ( '}' ) )
            // InternalMyDsl.g:413:1: ( '}' )
            {
            // InternalMyDsl.g:413:1: ( '}' )
            // InternalMyDsl.g:414:2: '}'
            {
             before(grammarAccess.getModelAccess().getRightCurlyBracketKeyword_4_4()); 
            match(input,13,FOLLOW_2); 
             after(grammarAccess.getModelAccess().getRightCurlyBracketKeyword_4_4()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group_4__4__Impl"


    // $ANTLR start "rule__Model__Group_4_3__0"
    // InternalMyDsl.g:424:1: rule__Model__Group_4_3__0 : rule__Model__Group_4_3__0__Impl rule__Model__Group_4_3__1 ;
    public final void rule__Model__Group_4_3__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:428:1: ( rule__Model__Group_4_3__0__Impl rule__Model__Group_4_3__1 )
            // InternalMyDsl.g:429:2: rule__Model__Group_4_3__0__Impl rule__Model__Group_4_3__1
            {
            pushFollow(FOLLOW_7);
            rule__Model__Group_4_3__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_2);
            rule__Model__Group_4_3__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group_4_3__0"


    // $ANTLR start "rule__Model__Group_4_3__0__Impl"
    // InternalMyDsl.g:436:1: rule__Model__Group_4_3__0__Impl : ( ',' ) ;
    public final void rule__Model__Group_4_3__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:440:1: ( ( ',' ) )
            // InternalMyDsl.g:441:1: ( ',' )
            {
            // InternalMyDsl.g:441:1: ( ',' )
            // InternalMyDsl.g:442:2: ','
            {
             before(grammarAccess.getModelAccess().getCommaKeyword_4_3_0()); 
            match(input,15,FOLLOW_2); 
             after(grammarAccess.getModelAccess().getCommaKeyword_4_3_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group_4_3__0__Impl"


    // $ANTLR start "rule__Model__Group_4_3__1"
    // InternalMyDsl.g:451:1: rule__Model__Group_4_3__1 : rule__Model__Group_4_3__1__Impl ;
    public final void rule__Model__Group_4_3__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:455:1: ( rule__Model__Group_4_3__1__Impl )
            // InternalMyDsl.g:456:2: rule__Model__Group_4_3__1__Impl
            {
            pushFollow(FOLLOW_2);
            rule__Model__Group_4_3__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group_4_3__1"


    // $ANTLR start "rule__Model__Group_4_3__1__Impl"
    // InternalMyDsl.g:462:1: rule__Model__Group_4_3__1__Impl : ( ( rule__Model__ClassAsAssignment_4_3_1 ) ) ;
    public final void rule__Model__Group_4_3__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:466:1: ( ( ( rule__Model__ClassAsAssignment_4_3_1 ) ) )
            // InternalMyDsl.g:467:1: ( ( rule__Model__ClassAsAssignment_4_3_1 ) )
            {
            // InternalMyDsl.g:467:1: ( ( rule__Model__ClassAsAssignment_4_3_1 ) )
            // InternalMyDsl.g:468:2: ( rule__Model__ClassAsAssignment_4_3_1 )
            {
             before(grammarAccess.getModelAccess().getClassAsAssignment_4_3_1()); 
            // InternalMyDsl.g:469:2: ( rule__Model__ClassAsAssignment_4_3_1 )
            // InternalMyDsl.g:469:3: rule__Model__ClassAsAssignment_4_3_1
            {
            pushFollow(FOLLOW_2);
            rule__Model__ClassAsAssignment_4_3_1();

            state._fsp--;


            }

             after(grammarAccess.getModelAccess().getClassAsAssignment_4_3_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__Group_4_3__1__Impl"


    // $ANTLR start "rule__ClassA__Group__0"
    // InternalMyDsl.g:478:1: rule__ClassA__Group__0 : rule__ClassA__Group__0__Impl rule__ClassA__Group__1 ;
    public final void rule__ClassA__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:482:1: ( rule__ClassA__Group__0__Impl rule__ClassA__Group__1 )
            // InternalMyDsl.g:483:2: rule__ClassA__Group__0__Impl rule__ClassA__Group__1
            {
            pushFollow(FOLLOW_7);
            rule__ClassA__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_2);
            rule__ClassA__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__Group__0"


    // $ANTLR start "rule__ClassA__Group__0__Impl"
    // InternalMyDsl.g:490:1: rule__ClassA__Group__0__Impl : ( () ) ;
    public final void rule__ClassA__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:494:1: ( ( () ) )
            // InternalMyDsl.g:495:1: ( () )
            {
            // InternalMyDsl.g:495:1: ( () )
            // InternalMyDsl.g:496:2: ()
            {
             before(grammarAccess.getClassAAccess().getClassAAction_0()); 
            // InternalMyDsl.g:497:2: ()
            // InternalMyDsl.g:497:3: 
            {
            }

             after(grammarAccess.getClassAAccess().getClassAAction_0()); 

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__Group__0__Impl"


    // $ANTLR start "rule__ClassA__Group__1"
    // InternalMyDsl.g:505:1: rule__ClassA__Group__1 : rule__ClassA__Group__1__Impl rule__ClassA__Group__2 ;
    public final void rule__ClassA__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:509:1: ( rule__ClassA__Group__1__Impl rule__ClassA__Group__2 )
            // InternalMyDsl.g:510:2: rule__ClassA__Group__1__Impl rule__ClassA__Group__2
            {
            pushFollow(FOLLOW_4);
            rule__ClassA__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_2);
            rule__ClassA__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__Group__1"


    // $ANTLR start "rule__ClassA__Group__1__Impl"
    // InternalMyDsl.g:517:1: rule__ClassA__Group__1__Impl : ( 'ClassA' ) ;
    public final void rule__ClassA__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:521:1: ( ( 'ClassA' ) )
            // InternalMyDsl.g:522:1: ( 'ClassA' )
            {
            // InternalMyDsl.g:522:1: ( 'ClassA' )
            // InternalMyDsl.g:523:2: 'ClassA'
            {
             before(grammarAccess.getClassAAccess().getClassAKeyword_1()); 
            match(input,16,FOLLOW_2); 
             after(grammarAccess.getClassAAccess().getClassAKeyword_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__Group__1__Impl"


    // $ANTLR start "rule__ClassA__Group__2"
    // InternalMyDsl.g:532:1: rule__ClassA__Group__2 : rule__ClassA__Group__2__Impl rule__ClassA__Group__3 ;
    public final void rule__ClassA__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:536:1: ( rule__ClassA__Group__2__Impl rule__ClassA__Group__3 )
            // InternalMyDsl.g:537:2: rule__ClassA__Group__2__Impl rule__ClassA__Group__3
            {
            pushFollow(FOLLOW_5);
            rule__ClassA__Group__2__Impl();

            state._fsp--;

            pushFollow(FOLLOW_2);
            rule__ClassA__Group__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__Group__2"


    // $ANTLR start "rule__ClassA__Group__2__Impl"
    // InternalMyDsl.g:544:1: rule__ClassA__Group__2__Impl : ( ( rule__ClassA__NameAssignment_2 ) ) ;
    public final void rule__ClassA__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:548:1: ( ( ( rule__ClassA__NameAssignment_2 ) ) )
            // InternalMyDsl.g:549:1: ( ( rule__ClassA__NameAssignment_2 ) )
            {
            // InternalMyDsl.g:549:1: ( ( rule__ClassA__NameAssignment_2 ) )
            // InternalMyDsl.g:550:2: ( rule__ClassA__NameAssignment_2 )
            {
             before(grammarAccess.getClassAAccess().getNameAssignment_2()); 
            // InternalMyDsl.g:551:2: ( rule__ClassA__NameAssignment_2 )
            // InternalMyDsl.g:551:3: rule__ClassA__NameAssignment_2
            {
            pushFollow(FOLLOW_2);
            rule__ClassA__NameAssignment_2();

            state._fsp--;


            }

             after(grammarAccess.getClassAAccess().getNameAssignment_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__Group__2__Impl"


    // $ANTLR start "rule__ClassA__Group__3"
    // InternalMyDsl.g:559:1: rule__ClassA__Group__3 : rule__ClassA__Group__3__Impl rule__ClassA__Group__4 ;
    public final void rule__ClassA__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:563:1: ( rule__ClassA__Group__3__Impl rule__ClassA__Group__4 )
            // InternalMyDsl.g:564:2: rule__ClassA__Group__3__Impl rule__ClassA__Group__4
            {
            pushFollow(FOLLOW_10);
            rule__ClassA__Group__3__Impl();

            state._fsp--;

            pushFollow(FOLLOW_2);
            rule__ClassA__Group__4();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__Group__3"


    // $ANTLR start "rule__ClassA__Group__3__Impl"
    // InternalMyDsl.g:571:1: rule__ClassA__Group__3__Impl : ( '{' ) ;
    public final void rule__ClassA__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:575:1: ( ( '{' ) )
            // InternalMyDsl.g:576:1: ( '{' )
            {
            // InternalMyDsl.g:576:1: ( '{' )
            // InternalMyDsl.g:577:2: '{'
            {
             before(grammarAccess.getClassAAccess().getLeftCurlyBracketKeyword_3()); 
            match(input,12,FOLLOW_2); 
             after(grammarAccess.getClassAAccess().getLeftCurlyBracketKeyword_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__Group__3__Impl"


    // $ANTLR start "rule__ClassA__Group__4"
    // InternalMyDsl.g:586:1: rule__ClassA__Group__4 : rule__ClassA__Group__4__Impl rule__ClassA__Group__5 ;
    public final void rule__ClassA__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:590:1: ( rule__ClassA__Group__4__Impl rule__ClassA__Group__5 )
            // InternalMyDsl.g:591:2: rule__ClassA__Group__4__Impl rule__ClassA__Group__5
            {
            pushFollow(FOLLOW_10);
            rule__ClassA__Group__4__Impl();

            state._fsp--;

            pushFollow(FOLLOW_2);
            rule__ClassA__Group__5();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__Group__4"


    // $ANTLR start "rule__ClassA__Group__4__Impl"
    // InternalMyDsl.g:598:1: rule__ClassA__Group__4__Impl : ( ( rule__ClassA__Group_4__0 )? ) ;
    public final void rule__ClassA__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:602:1: ( ( ( rule__ClassA__Group_4__0 )? ) )
            // InternalMyDsl.g:603:1: ( ( rule__ClassA__Group_4__0 )? )
            {
            // InternalMyDsl.g:603:1: ( ( rule__ClassA__Group_4__0 )? )
            // InternalMyDsl.g:604:2: ( rule__ClassA__Group_4__0 )?
            {
             before(grammarAccess.getClassAAccess().getGroup_4()); 
            // InternalMyDsl.g:605:2: ( rule__ClassA__Group_4__0 )?
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0==17) ) {
                alt3=1;
            }
            switch (alt3) {
                case 1 :
                    // InternalMyDsl.g:605:3: rule__ClassA__Group_4__0
                    {
                    pushFollow(FOLLOW_2);
                    rule__ClassA__Group_4__0();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getClassAAccess().getGroup_4()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__Group__4__Impl"


    // $ANTLR start "rule__ClassA__Group__5"
    // InternalMyDsl.g:613:1: rule__ClassA__Group__5 : rule__ClassA__Group__5__Impl ;
    public final void rule__ClassA__Group__5() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:617:1: ( rule__ClassA__Group__5__Impl )
            // InternalMyDsl.g:618:2: rule__ClassA__Group__5__Impl
            {
            pushFollow(FOLLOW_2);
            rule__ClassA__Group__5__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__Group__5"


    // $ANTLR start "rule__ClassA__Group__5__Impl"
    // InternalMyDsl.g:624:1: rule__ClassA__Group__5__Impl : ( '}' ) ;
    public final void rule__ClassA__Group__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:628:1: ( ( '}' ) )
            // InternalMyDsl.g:629:1: ( '}' )
            {
            // InternalMyDsl.g:629:1: ( '}' )
            // InternalMyDsl.g:630:2: '}'
            {
             before(grammarAccess.getClassAAccess().getRightCurlyBracketKeyword_5()); 
            match(input,13,FOLLOW_2); 
             after(grammarAccess.getClassAAccess().getRightCurlyBracketKeyword_5()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__Group__5__Impl"


    // $ANTLR start "rule__ClassA__Group_4__0"
    // InternalMyDsl.g:640:1: rule__ClassA__Group_4__0 : rule__ClassA__Group_4__0__Impl rule__ClassA__Group_4__1 ;
    public final void rule__ClassA__Group_4__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:644:1: ( rule__ClassA__Group_4__0__Impl rule__ClassA__Group_4__1 )
            // InternalMyDsl.g:645:2: rule__ClassA__Group_4__0__Impl rule__ClassA__Group_4__1
            {
            pushFollow(FOLLOW_5);
            rule__ClassA__Group_4__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_2);
            rule__ClassA__Group_4__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__Group_4__0"


    // $ANTLR start "rule__ClassA__Group_4__0__Impl"
    // InternalMyDsl.g:652:1: rule__ClassA__Group_4__0__Impl : ( 'classb' ) ;
    public final void rule__ClassA__Group_4__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:656:1: ( ( 'classb' ) )
            // InternalMyDsl.g:657:1: ( 'classb' )
            {
            // InternalMyDsl.g:657:1: ( 'classb' )
            // InternalMyDsl.g:658:2: 'classb'
            {
             before(grammarAccess.getClassAAccess().getClassbKeyword_4_0()); 
            match(input,17,FOLLOW_2); 
             after(grammarAccess.getClassAAccess().getClassbKeyword_4_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__Group_4__0__Impl"


    // $ANTLR start "rule__ClassA__Group_4__1"
    // InternalMyDsl.g:667:1: rule__ClassA__Group_4__1 : rule__ClassA__Group_4__1__Impl rule__ClassA__Group_4__2 ;
    public final void rule__ClassA__Group_4__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:671:1: ( rule__ClassA__Group_4__1__Impl rule__ClassA__Group_4__2 )
            // InternalMyDsl.g:672:2: rule__ClassA__Group_4__1__Impl rule__ClassA__Group_4__2
            {
            pushFollow(FOLLOW_11);
            rule__ClassA__Group_4__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_2);
            rule__ClassA__Group_4__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__Group_4__1"


    // $ANTLR start "rule__ClassA__Group_4__1__Impl"
    // InternalMyDsl.g:679:1: rule__ClassA__Group_4__1__Impl : ( '{' ) ;
    public final void rule__ClassA__Group_4__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:683:1: ( ( '{' ) )
            // InternalMyDsl.g:684:1: ( '{' )
            {
            // InternalMyDsl.g:684:1: ( '{' )
            // InternalMyDsl.g:685:2: '{'
            {
             before(grammarAccess.getClassAAccess().getLeftCurlyBracketKeyword_4_1()); 
            match(input,12,FOLLOW_2); 
             after(grammarAccess.getClassAAccess().getLeftCurlyBracketKeyword_4_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__Group_4__1__Impl"


    // $ANTLR start "rule__ClassA__Group_4__2"
    // InternalMyDsl.g:694:1: rule__ClassA__Group_4__2 : rule__ClassA__Group_4__2__Impl rule__ClassA__Group_4__3 ;
    public final void rule__ClassA__Group_4__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:698:1: ( rule__ClassA__Group_4__2__Impl rule__ClassA__Group_4__3 )
            // InternalMyDsl.g:699:2: rule__ClassA__Group_4__2__Impl rule__ClassA__Group_4__3
            {
            pushFollow(FOLLOW_8);
            rule__ClassA__Group_4__2__Impl();

            state._fsp--;

            pushFollow(FOLLOW_2);
            rule__ClassA__Group_4__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__Group_4__2"


    // $ANTLR start "rule__ClassA__Group_4__2__Impl"
    // InternalMyDsl.g:706:1: rule__ClassA__Group_4__2__Impl : ( ( rule__ClassA__ClassbAssignment_4_2 ) ) ;
    public final void rule__ClassA__Group_4__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:710:1: ( ( ( rule__ClassA__ClassbAssignment_4_2 ) ) )
            // InternalMyDsl.g:711:1: ( ( rule__ClassA__ClassbAssignment_4_2 ) )
            {
            // InternalMyDsl.g:711:1: ( ( rule__ClassA__ClassbAssignment_4_2 ) )
            // InternalMyDsl.g:712:2: ( rule__ClassA__ClassbAssignment_4_2 )
            {
             before(grammarAccess.getClassAAccess().getClassbAssignment_4_2()); 
            // InternalMyDsl.g:713:2: ( rule__ClassA__ClassbAssignment_4_2 )
            // InternalMyDsl.g:713:3: rule__ClassA__ClassbAssignment_4_2
            {
            pushFollow(FOLLOW_2);
            rule__ClassA__ClassbAssignment_4_2();

            state._fsp--;


            }

             after(grammarAccess.getClassAAccess().getClassbAssignment_4_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__Group_4__2__Impl"


    // $ANTLR start "rule__ClassA__Group_4__3"
    // InternalMyDsl.g:721:1: rule__ClassA__Group_4__3 : rule__ClassA__Group_4__3__Impl rule__ClassA__Group_4__4 ;
    public final void rule__ClassA__Group_4__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:725:1: ( rule__ClassA__Group_4__3__Impl rule__ClassA__Group_4__4 )
            // InternalMyDsl.g:726:2: rule__ClassA__Group_4__3__Impl rule__ClassA__Group_4__4
            {
            pushFollow(FOLLOW_8);
            rule__ClassA__Group_4__3__Impl();

            state._fsp--;

            pushFollow(FOLLOW_2);
            rule__ClassA__Group_4__4();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__Group_4__3"


    // $ANTLR start "rule__ClassA__Group_4__3__Impl"
    // InternalMyDsl.g:733:1: rule__ClassA__Group_4__3__Impl : ( ( rule__ClassA__Group_4_3__0 )* ) ;
    public final void rule__ClassA__Group_4__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:737:1: ( ( ( rule__ClassA__Group_4_3__0 )* ) )
            // InternalMyDsl.g:738:1: ( ( rule__ClassA__Group_4_3__0 )* )
            {
            // InternalMyDsl.g:738:1: ( ( rule__ClassA__Group_4_3__0 )* )
            // InternalMyDsl.g:739:2: ( rule__ClassA__Group_4_3__0 )*
            {
             before(grammarAccess.getClassAAccess().getGroup_4_3()); 
            // InternalMyDsl.g:740:2: ( rule__ClassA__Group_4_3__0 )*
            loop4:
            do {
                int alt4=2;
                int LA4_0 = input.LA(1);

                if ( (LA4_0==15) ) {
                    alt4=1;
                }


                switch (alt4) {
            	case 1 :
            	    // InternalMyDsl.g:740:3: rule__ClassA__Group_4_3__0
            	    {
            	    pushFollow(FOLLOW_9);
            	    rule__ClassA__Group_4_3__0();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop4;
                }
            } while (true);

             after(grammarAccess.getClassAAccess().getGroup_4_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__Group_4__3__Impl"


    // $ANTLR start "rule__ClassA__Group_4__4"
    // InternalMyDsl.g:748:1: rule__ClassA__Group_4__4 : rule__ClassA__Group_4__4__Impl ;
    public final void rule__ClassA__Group_4__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:752:1: ( rule__ClassA__Group_4__4__Impl )
            // InternalMyDsl.g:753:2: rule__ClassA__Group_4__4__Impl
            {
            pushFollow(FOLLOW_2);
            rule__ClassA__Group_4__4__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__Group_4__4"


    // $ANTLR start "rule__ClassA__Group_4__4__Impl"
    // InternalMyDsl.g:759:1: rule__ClassA__Group_4__4__Impl : ( '}' ) ;
    public final void rule__ClassA__Group_4__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:763:1: ( ( '}' ) )
            // InternalMyDsl.g:764:1: ( '}' )
            {
            // InternalMyDsl.g:764:1: ( '}' )
            // InternalMyDsl.g:765:2: '}'
            {
             before(grammarAccess.getClassAAccess().getRightCurlyBracketKeyword_4_4()); 
            match(input,13,FOLLOW_2); 
             after(grammarAccess.getClassAAccess().getRightCurlyBracketKeyword_4_4()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__Group_4__4__Impl"


    // $ANTLR start "rule__ClassA__Group_4_3__0"
    // InternalMyDsl.g:775:1: rule__ClassA__Group_4_3__0 : rule__ClassA__Group_4_3__0__Impl rule__ClassA__Group_4_3__1 ;
    public final void rule__ClassA__Group_4_3__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:779:1: ( rule__ClassA__Group_4_3__0__Impl rule__ClassA__Group_4_3__1 )
            // InternalMyDsl.g:780:2: rule__ClassA__Group_4_3__0__Impl rule__ClassA__Group_4_3__1
            {
            pushFollow(FOLLOW_11);
            rule__ClassA__Group_4_3__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_2);
            rule__ClassA__Group_4_3__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__Group_4_3__0"


    // $ANTLR start "rule__ClassA__Group_4_3__0__Impl"
    // InternalMyDsl.g:787:1: rule__ClassA__Group_4_3__0__Impl : ( ',' ) ;
    public final void rule__ClassA__Group_4_3__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:791:1: ( ( ',' ) )
            // InternalMyDsl.g:792:1: ( ',' )
            {
            // InternalMyDsl.g:792:1: ( ',' )
            // InternalMyDsl.g:793:2: ','
            {
             before(grammarAccess.getClassAAccess().getCommaKeyword_4_3_0()); 
            match(input,15,FOLLOW_2); 
             after(grammarAccess.getClassAAccess().getCommaKeyword_4_3_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__Group_4_3__0__Impl"


    // $ANTLR start "rule__ClassA__Group_4_3__1"
    // InternalMyDsl.g:802:1: rule__ClassA__Group_4_3__1 : rule__ClassA__Group_4_3__1__Impl ;
    public final void rule__ClassA__Group_4_3__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:806:1: ( rule__ClassA__Group_4_3__1__Impl )
            // InternalMyDsl.g:807:2: rule__ClassA__Group_4_3__1__Impl
            {
            pushFollow(FOLLOW_2);
            rule__ClassA__Group_4_3__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__Group_4_3__1"


    // $ANTLR start "rule__ClassA__Group_4_3__1__Impl"
    // InternalMyDsl.g:813:1: rule__ClassA__Group_4_3__1__Impl : ( ( rule__ClassA__ClassbAssignment_4_3_1 ) ) ;
    public final void rule__ClassA__Group_4_3__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:817:1: ( ( ( rule__ClassA__ClassbAssignment_4_3_1 ) ) )
            // InternalMyDsl.g:818:1: ( ( rule__ClassA__ClassbAssignment_4_3_1 ) )
            {
            // InternalMyDsl.g:818:1: ( ( rule__ClassA__ClassbAssignment_4_3_1 ) )
            // InternalMyDsl.g:819:2: ( rule__ClassA__ClassbAssignment_4_3_1 )
            {
             before(grammarAccess.getClassAAccess().getClassbAssignment_4_3_1()); 
            // InternalMyDsl.g:820:2: ( rule__ClassA__ClassbAssignment_4_3_1 )
            // InternalMyDsl.g:820:3: rule__ClassA__ClassbAssignment_4_3_1
            {
            pushFollow(FOLLOW_2);
            rule__ClassA__ClassbAssignment_4_3_1();

            state._fsp--;


            }

             after(grammarAccess.getClassAAccess().getClassbAssignment_4_3_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__Group_4_3__1__Impl"


    // $ANTLR start "rule__ClassB__Group__0"
    // InternalMyDsl.g:829:1: rule__ClassB__Group__0 : rule__ClassB__Group__0__Impl rule__ClassB__Group__1 ;
    public final void rule__ClassB__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:833:1: ( rule__ClassB__Group__0__Impl rule__ClassB__Group__1 )
            // InternalMyDsl.g:834:2: rule__ClassB__Group__0__Impl rule__ClassB__Group__1
            {
            pushFollow(FOLLOW_4);
            rule__ClassB__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_2);
            rule__ClassB__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassB__Group__0"


    // $ANTLR start "rule__ClassB__Group__0__Impl"
    // InternalMyDsl.g:841:1: rule__ClassB__Group__0__Impl : ( 'ClassB' ) ;
    public final void rule__ClassB__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:845:1: ( ( 'ClassB' ) )
            // InternalMyDsl.g:846:1: ( 'ClassB' )
            {
            // InternalMyDsl.g:846:1: ( 'ClassB' )
            // InternalMyDsl.g:847:2: 'ClassB'
            {
             before(grammarAccess.getClassBAccess().getClassBKeyword_0()); 
            match(input,18,FOLLOW_2); 
             after(grammarAccess.getClassBAccess().getClassBKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassB__Group__0__Impl"


    // $ANTLR start "rule__ClassB__Group__1"
    // InternalMyDsl.g:856:1: rule__ClassB__Group__1 : rule__ClassB__Group__1__Impl rule__ClassB__Group__2 ;
    public final void rule__ClassB__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:860:1: ( rule__ClassB__Group__1__Impl rule__ClassB__Group__2 )
            // InternalMyDsl.g:861:2: rule__ClassB__Group__1__Impl rule__ClassB__Group__2
            {
            pushFollow(FOLLOW_5);
            rule__ClassB__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_2);
            rule__ClassB__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassB__Group__1"


    // $ANTLR start "rule__ClassB__Group__1__Impl"
    // InternalMyDsl.g:868:1: rule__ClassB__Group__1__Impl : ( ( rule__ClassB__NameAssignment_1 ) ) ;
    public final void rule__ClassB__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:872:1: ( ( ( rule__ClassB__NameAssignment_1 ) ) )
            // InternalMyDsl.g:873:1: ( ( rule__ClassB__NameAssignment_1 ) )
            {
            // InternalMyDsl.g:873:1: ( ( rule__ClassB__NameAssignment_1 ) )
            // InternalMyDsl.g:874:2: ( rule__ClassB__NameAssignment_1 )
            {
             before(grammarAccess.getClassBAccess().getNameAssignment_1()); 
            // InternalMyDsl.g:875:2: ( rule__ClassB__NameAssignment_1 )
            // InternalMyDsl.g:875:3: rule__ClassB__NameAssignment_1
            {
            pushFollow(FOLLOW_2);
            rule__ClassB__NameAssignment_1();

            state._fsp--;


            }

             after(grammarAccess.getClassBAccess().getNameAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassB__Group__1__Impl"


    // $ANTLR start "rule__ClassB__Group__2"
    // InternalMyDsl.g:883:1: rule__ClassB__Group__2 : rule__ClassB__Group__2__Impl rule__ClassB__Group__3 ;
    public final void rule__ClassB__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:887:1: ( rule__ClassB__Group__2__Impl rule__ClassB__Group__3 )
            // InternalMyDsl.g:888:2: rule__ClassB__Group__2__Impl rule__ClassB__Group__3
            {
            pushFollow(FOLLOW_12);
            rule__ClassB__Group__2__Impl();

            state._fsp--;

            pushFollow(FOLLOW_2);
            rule__ClassB__Group__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassB__Group__2"


    // $ANTLR start "rule__ClassB__Group__2__Impl"
    // InternalMyDsl.g:895:1: rule__ClassB__Group__2__Impl : ( '{' ) ;
    public final void rule__ClassB__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:899:1: ( ( '{' ) )
            // InternalMyDsl.g:900:1: ( '{' )
            {
            // InternalMyDsl.g:900:1: ( '{' )
            // InternalMyDsl.g:901:2: '{'
            {
             before(grammarAccess.getClassBAccess().getLeftCurlyBracketKeyword_2()); 
            match(input,12,FOLLOW_2); 
             after(grammarAccess.getClassBAccess().getLeftCurlyBracketKeyword_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassB__Group__2__Impl"


    // $ANTLR start "rule__ClassB__Group__3"
    // InternalMyDsl.g:910:1: rule__ClassB__Group__3 : rule__ClassB__Group__3__Impl rule__ClassB__Group__4 ;
    public final void rule__ClassB__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:914:1: ( rule__ClassB__Group__3__Impl rule__ClassB__Group__4 )
            // InternalMyDsl.g:915:2: rule__ClassB__Group__3__Impl rule__ClassB__Group__4
            {
            pushFollow(FOLLOW_4);
            rule__ClassB__Group__3__Impl();

            state._fsp--;

            pushFollow(FOLLOW_2);
            rule__ClassB__Group__4();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassB__Group__3"


    // $ANTLR start "rule__ClassB__Group__3__Impl"
    // InternalMyDsl.g:922:1: rule__ClassB__Group__3__Impl : ( 'target' ) ;
    public final void rule__ClassB__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:926:1: ( ( 'target' ) )
            // InternalMyDsl.g:927:1: ( 'target' )
            {
            // InternalMyDsl.g:927:1: ( 'target' )
            // InternalMyDsl.g:928:2: 'target'
            {
             before(grammarAccess.getClassBAccess().getTargetKeyword_3()); 
            match(input,19,FOLLOW_2); 
             after(grammarAccess.getClassBAccess().getTargetKeyword_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassB__Group__3__Impl"


    // $ANTLR start "rule__ClassB__Group__4"
    // InternalMyDsl.g:937:1: rule__ClassB__Group__4 : rule__ClassB__Group__4__Impl rule__ClassB__Group__5 ;
    public final void rule__ClassB__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:941:1: ( rule__ClassB__Group__4__Impl rule__ClassB__Group__5 )
            // InternalMyDsl.g:942:2: rule__ClassB__Group__4__Impl rule__ClassB__Group__5
            {
            pushFollow(FOLLOW_13);
            rule__ClassB__Group__4__Impl();

            state._fsp--;

            pushFollow(FOLLOW_2);
            rule__ClassB__Group__5();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassB__Group__4"


    // $ANTLR start "rule__ClassB__Group__4__Impl"
    // InternalMyDsl.g:949:1: rule__ClassB__Group__4__Impl : ( ( rule__ClassB__TargetAssignment_4 ) ) ;
    public final void rule__ClassB__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:953:1: ( ( ( rule__ClassB__TargetAssignment_4 ) ) )
            // InternalMyDsl.g:954:1: ( ( rule__ClassB__TargetAssignment_4 ) )
            {
            // InternalMyDsl.g:954:1: ( ( rule__ClassB__TargetAssignment_4 ) )
            // InternalMyDsl.g:955:2: ( rule__ClassB__TargetAssignment_4 )
            {
             before(grammarAccess.getClassBAccess().getTargetAssignment_4()); 
            // InternalMyDsl.g:956:2: ( rule__ClassB__TargetAssignment_4 )
            // InternalMyDsl.g:956:3: rule__ClassB__TargetAssignment_4
            {
            pushFollow(FOLLOW_2);
            rule__ClassB__TargetAssignment_4();

            state._fsp--;


            }

             after(grammarAccess.getClassBAccess().getTargetAssignment_4()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassB__Group__4__Impl"


    // $ANTLR start "rule__ClassB__Group__5"
    // InternalMyDsl.g:964:1: rule__ClassB__Group__5 : rule__ClassB__Group__5__Impl ;
    public final void rule__ClassB__Group__5() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:968:1: ( rule__ClassB__Group__5__Impl )
            // InternalMyDsl.g:969:2: rule__ClassB__Group__5__Impl
            {
            pushFollow(FOLLOW_2);
            rule__ClassB__Group__5__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassB__Group__5"


    // $ANTLR start "rule__ClassB__Group__5__Impl"
    // InternalMyDsl.g:975:1: rule__ClassB__Group__5__Impl : ( '}' ) ;
    public final void rule__ClassB__Group__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:979:1: ( ( '}' ) )
            // InternalMyDsl.g:980:1: ( '}' )
            {
            // InternalMyDsl.g:980:1: ( '}' )
            // InternalMyDsl.g:981:2: '}'
            {
             before(grammarAccess.getClassBAccess().getRightCurlyBracketKeyword_5()); 
            match(input,13,FOLLOW_2); 
             after(grammarAccess.getClassBAccess().getRightCurlyBracketKeyword_5()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassB__Group__5__Impl"


    // $ANTLR start "rule__Model__NameAssignment_2"
    // InternalMyDsl.g:991:1: rule__Model__NameAssignment_2 : ( RULE_ID ) ;
    public final void rule__Model__NameAssignment_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:995:1: ( ( RULE_ID ) )
            // InternalMyDsl.g:996:2: ( RULE_ID )
            {
            // InternalMyDsl.g:996:2: ( RULE_ID )
            // InternalMyDsl.g:997:3: RULE_ID
            {
             before(grammarAccess.getModelAccess().getNameIDTerminalRuleCall_2_0()); 
            match(input,RULE_ID,FOLLOW_2); 
             after(grammarAccess.getModelAccess().getNameIDTerminalRuleCall_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__NameAssignment_2"


    // $ANTLR start "rule__Model__ClassAsAssignment_4_2"
    // InternalMyDsl.g:1006:1: rule__Model__ClassAsAssignment_4_2 : ( ruleClassA ) ;
    public final void rule__Model__ClassAsAssignment_4_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:1010:1: ( ( ruleClassA ) )
            // InternalMyDsl.g:1011:2: ( ruleClassA )
            {
            // InternalMyDsl.g:1011:2: ( ruleClassA )
            // InternalMyDsl.g:1012:3: ruleClassA
            {
             before(grammarAccess.getModelAccess().getClassAsClassAParserRuleCall_4_2_0()); 
            pushFollow(FOLLOW_2);
            ruleClassA();

            state._fsp--;

             after(grammarAccess.getModelAccess().getClassAsClassAParserRuleCall_4_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__ClassAsAssignment_4_2"


    // $ANTLR start "rule__Model__ClassAsAssignment_4_3_1"
    // InternalMyDsl.g:1021:1: rule__Model__ClassAsAssignment_4_3_1 : ( ruleClassA ) ;
    public final void rule__Model__ClassAsAssignment_4_3_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:1025:1: ( ( ruleClassA ) )
            // InternalMyDsl.g:1026:2: ( ruleClassA )
            {
            // InternalMyDsl.g:1026:2: ( ruleClassA )
            // InternalMyDsl.g:1027:3: ruleClassA
            {
             before(grammarAccess.getModelAccess().getClassAsClassAParserRuleCall_4_3_1_0()); 
            pushFollow(FOLLOW_2);
            ruleClassA();

            state._fsp--;

             after(grammarAccess.getModelAccess().getClassAsClassAParserRuleCall_4_3_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__ClassAsAssignment_4_3_1"


    // $ANTLR start "rule__ClassA__NameAssignment_2"
    // InternalMyDsl.g:1036:1: rule__ClassA__NameAssignment_2 : ( RULE_ID ) ;
    public final void rule__ClassA__NameAssignment_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:1040:1: ( ( RULE_ID ) )
            // InternalMyDsl.g:1041:2: ( RULE_ID )
            {
            // InternalMyDsl.g:1041:2: ( RULE_ID )
            // InternalMyDsl.g:1042:3: RULE_ID
            {
             before(grammarAccess.getClassAAccess().getNameIDTerminalRuleCall_2_0()); 
            match(input,RULE_ID,FOLLOW_2); 
             after(grammarAccess.getClassAAccess().getNameIDTerminalRuleCall_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__NameAssignment_2"


    // $ANTLR start "rule__ClassA__ClassbAssignment_4_2"
    // InternalMyDsl.g:1051:1: rule__ClassA__ClassbAssignment_4_2 : ( ruleClassB ) ;
    public final void rule__ClassA__ClassbAssignment_4_2() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:1055:1: ( ( ruleClassB ) )
            // InternalMyDsl.g:1056:2: ( ruleClassB )
            {
            // InternalMyDsl.g:1056:2: ( ruleClassB )
            // InternalMyDsl.g:1057:3: ruleClassB
            {
             before(grammarAccess.getClassAAccess().getClassbClassBParserRuleCall_4_2_0()); 
            pushFollow(FOLLOW_2);
            ruleClassB();

            state._fsp--;

             after(grammarAccess.getClassAAccess().getClassbClassBParserRuleCall_4_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__ClassbAssignment_4_2"


    // $ANTLR start "rule__ClassA__ClassbAssignment_4_3_1"
    // InternalMyDsl.g:1066:1: rule__ClassA__ClassbAssignment_4_3_1 : ( ruleClassB ) ;
    public final void rule__ClassA__ClassbAssignment_4_3_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:1070:1: ( ( ruleClassB ) )
            // InternalMyDsl.g:1071:2: ( ruleClassB )
            {
            // InternalMyDsl.g:1071:2: ( ruleClassB )
            // InternalMyDsl.g:1072:3: ruleClassB
            {
             before(grammarAccess.getClassAAccess().getClassbClassBParserRuleCall_4_3_1_0()); 
            pushFollow(FOLLOW_2);
            ruleClassB();

            state._fsp--;

             after(grammarAccess.getClassAAccess().getClassbClassBParserRuleCall_4_3_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassA__ClassbAssignment_4_3_1"


    // $ANTLR start "rule__ClassB__NameAssignment_1"
    // InternalMyDsl.g:1081:1: rule__ClassB__NameAssignment_1 : ( RULE_ID ) ;
    public final void rule__ClassB__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:1085:1: ( ( RULE_ID ) )
            // InternalMyDsl.g:1086:2: ( RULE_ID )
            {
            // InternalMyDsl.g:1086:2: ( RULE_ID )
            // InternalMyDsl.g:1087:3: RULE_ID
            {
             before(grammarAccess.getClassBAccess().getNameIDTerminalRuleCall_1_0()); 
            match(input,RULE_ID,FOLLOW_2); 
             after(grammarAccess.getClassBAccess().getNameIDTerminalRuleCall_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassB__NameAssignment_1"


    // $ANTLR start "rule__ClassB__TargetAssignment_4"
    // InternalMyDsl.g:1096:1: rule__ClassB__TargetAssignment_4 : ( ( RULE_ID ) ) ;
    public final void rule__ClassB__TargetAssignment_4() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalMyDsl.g:1100:1: ( ( ( RULE_ID ) ) )
            // InternalMyDsl.g:1101:2: ( ( RULE_ID ) )
            {
            // InternalMyDsl.g:1101:2: ( ( RULE_ID ) )
            // InternalMyDsl.g:1102:3: ( RULE_ID )
            {
             before(grammarAccess.getClassBAccess().getTargetClassACrossReference_4_0()); 
            // InternalMyDsl.g:1103:3: ( RULE_ID )
            // InternalMyDsl.g:1104:4: RULE_ID
            {
             before(grammarAccess.getClassBAccess().getTargetClassAIDTerminalRuleCall_4_0_1()); 
            match(input,RULE_ID,FOLLOW_2); 
             after(grammarAccess.getClassBAccess().getTargetClassAIDTerminalRuleCall_4_0_1()); 

            }

             after(grammarAccess.getClassBAccess().getTargetClassACrossReference_4_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ClassB__TargetAssignment_4"

    // Delegated rules


 

    public static final BitSet FOLLOW_1 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_2 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x0000000000000800L});
    public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000006000L});
    public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x000000000000A000L});
    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000008002L});
    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000022000L});
    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000000002000L});

}