// $ANTLR 3.2 Sep 23, 2009 12:02:23 C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g 2010-12-07 14:28:50

	package jTMass.core.jLoaders.jTMassML;
	import jTMass.TMass;
	import jTMass.core.jLoaders.TModelLoader;
	import jTMass.core.jALLL.jTObjects.*;
	import jTMass.core.jAMass.TAgent;
	import jTMass.core.jTMassModel.TModel;
	import jTMass.core.jTMassPlatform.TPlatform;
	import java.util.LinkedList;
	import java.util.TreeSet;	



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

public class tMassMLParser extends Parser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "ID", "FILE", "NUMBER", "DRIVER", "BACKSLASH", "WS", "'sources'", "'{'", "'}'", "';'", "'elements'", "'relations'", "'model:'", "'agents'", "':'", "'platforms'", "'environments'", "'file'", "'platform'", "'('", "','", "')'", "'name'", "'slots'", "'='", "'services'", "'['", "']'", "'variables'", "'multicast'", "'#'", "'->'"
    };
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int T__21=21;
    public static final int DRIVER=7;
    public static final int T__20=20;
    public static final int NUMBER=6;
    public static final int ID=4;
    public static final int FILE=5;
    public static final int EOF=-1;
    public static final int T__30=30;
    public static final int T__19=19;
    public static final int T__31=31;
    public static final int T__32=32;
    public static final int WS=9;
    public static final int T__33=33;
    public static final int T__16=16;
    public static final int T__34=34;
    public static final int T__15=15;
    public static final int T__35=35;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__12=12;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int T__10=10;
    public static final int BACKSLASH=8;

    // delegates
    // delegators


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

    public String[] getTokenNames() { return tMassMLParser.tokenNames; }
    public String getGrammarFileName() { return "C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g"; }



    // $ANTLR start "tMassML"
    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:43:1: tMassML[TModelLoader loader] returns [LinkedList<TAgent> agentPopulation] : ( model_name[loader] ( ( 'sources' '{' element_sources[loader] '}' ';' ) | ( 'elements' '{' element_specs[loader] '}' ';' ) | ( 'relations' '{' relation_specs[loader] '}' ';' ) )+ ) ;
    public final LinkedList<TAgent> tMassML(TModelLoader loader) throws RecognitionException {
        LinkedList<TAgent> agentPopulation = null;


        	TMass._Terminal.printlnSystemInfo("==================================================================");
        	TMass._Terminal.printlnSystemInfo("T-Mass Meta Language loader. The system model will be created now.");
        	TMass._Terminal.printlnSystemInfo("==================================================================");

        try {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:50:2: ( ( model_name[loader] ( ( 'sources' '{' element_sources[loader] '}' ';' ) | ( 'elements' '{' element_specs[loader] '}' ';' ) | ( 'relations' '{' relation_specs[loader] '}' ';' ) )+ ) )
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:51:2: ( model_name[loader] ( ( 'sources' '{' element_sources[loader] '}' ';' ) | ( 'elements' '{' element_specs[loader] '}' ';' ) | ( 'relations' '{' relation_specs[loader] '}' ';' ) )+ )
            {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:51:2: ( model_name[loader] ( ( 'sources' '{' element_sources[loader] '}' ';' ) | ( 'elements' '{' element_specs[loader] '}' ';' ) | ( 'relations' '{' relation_specs[loader] '}' ';' ) )+ )
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:51:3: model_name[loader] ( ( 'sources' '{' element_sources[loader] '}' ';' ) | ( 'elements' '{' element_specs[loader] '}' ';' ) | ( 'relations' '{' relation_specs[loader] '}' ';' ) )+
            {
            pushFollow(FOLLOW_model_name_in_tMassML53);
            model_name(loader);

            state._fsp--;

            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:51:23: ( ( 'sources' '{' element_sources[loader] '}' ';' ) | ( 'elements' '{' element_specs[loader] '}' ';' ) | ( 'relations' '{' relation_specs[loader] '}' ';' ) )+
            int cnt1=0;
            loop1:
            do {
                int alt1=4;
                switch ( input.LA(1) ) {
                case 10:
                    {
                    alt1=1;
                    }
                    break;
                case 14:
                    {
                    alt1=2;
                    }
                    break;
                case 15:
                    {
                    alt1=3;
                    }
                    break;

                }

                switch (alt1) {
            	case 1 :
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:51:24: ( 'sources' '{' element_sources[loader] '}' ';' )
            	    {
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:51:24: ( 'sources' '{' element_sources[loader] '}' ';' )
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:51:25: 'sources' '{' element_sources[loader] '}' ';'
            	    {
            	    match(input,10,FOLLOW_10_in_tMassML59); 
            	    match(input,11,FOLLOW_11_in_tMassML61); 
            	    pushFollow(FOLLOW_element_sources_in_tMassML63);
            	    element_sources(loader);

            	    state._fsp--;

            	    match(input,12,FOLLOW_12_in_tMassML67); 
            	    match(input,13,FOLLOW_13_in_tMassML68); 

            	    }


            	    }
            	    break;
            	case 2 :
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:51:72: ( 'elements' '{' element_specs[loader] '}' ';' )
            	    {
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:51:72: ( 'elements' '{' element_specs[loader] '}' ';' )
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:51:73: 'elements' '{' element_specs[loader] '}' ';'
            	    {
            	    match(input,14,FOLLOW_14_in_tMassML72); 
            	    match(input,11,FOLLOW_11_in_tMassML74); 
            	    pushFollow(FOLLOW_element_specs_in_tMassML76);
            	    element_specs(loader);

            	    state._fsp--;

            	    match(input,12,FOLLOW_12_in_tMassML79); 
            	    match(input,13,FOLLOW_13_in_tMassML80); 

            	    }


            	    }
            	    break;
            	case 3 :
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:52:3: ( 'relations' '{' relation_specs[loader] '}' ';' )
            	    {
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:52:3: ( 'relations' '{' relation_specs[loader] '}' ';' )
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:52:4: 'relations' '{' relation_specs[loader] '}' ';'
            	    {
            	    match(input,15,FOLLOW_15_in_tMassML88); 
            	    match(input,11,FOLLOW_11_in_tMassML90); 
            	    pushFollow(FOLLOW_relation_specs_in_tMassML92);
            	    relation_specs(loader);

            	    state._fsp--;

            	    match(input,12,FOLLOW_12_in_tMassML96); 
            	    match(input,13,FOLLOW_13_in_tMassML98); 

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt1 >= 1 ) break loop1;
                        EarlyExitException eee =
                            new EarlyExitException(1, input);
                        throw eee;
                }
                cnt1++;
            } while (true);


            }


            }

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


    // $ANTLR start "model_name"
    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:55:1: model_name[TModelLoader loader] : ( 'model:' ID ';' )? ;
    public final void model_name(TModelLoader loader) throws RecognitionException {
        Token ID1=null;

        try {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:56:2: ( ( 'model:' ID ';' )? )
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:56:4: ( 'model:' ID ';' )?
            {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:56:4: ( 'model:' ID ';' )?
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0==16) ) {
                alt2=1;
            }
            switch (alt2) {
                case 1 :
                    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:56:6: 'model:' ID ';'
                    {
                    match(input,16,FOLLOW_16_in_model_name117); 
                    ID1=(Token)match(input,ID,FOLLOW_ID_in_model_name119); 
                    match(input,13,FOLLOW_13_in_model_name122); 

                    			loader.setModelName((ID1!=null?ID1.getText():null));
                    			TMass._Terminal.printlnSystemInfo("Model name:"+(ID1!=null?ID1.getText():null));
                    		

                    }
                    break;

            }


            }

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


    // $ANTLR start "element_sources"
    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:64:1: element_sources[TModelLoader loader] : ( 'agents' ':' agent_sources[loader] | 'platforms' ':' platform_sources[loader] | 'environments' ':' environments[loader] )+ ;
    public final void element_sources(TModelLoader loader) throws RecognitionException {
        try {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:65:2: ( ( 'agents' ':' agent_sources[loader] | 'platforms' ':' platform_sources[loader] | 'environments' ':' environments[loader] )+ )
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:65:4: ( 'agents' ':' agent_sources[loader] | 'platforms' ':' platform_sources[loader] | 'environments' ':' environments[loader] )+
            {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:65:4: ( 'agents' ':' agent_sources[loader] | 'platforms' ':' platform_sources[loader] | 'environments' ':' environments[loader] )+
            int cnt3=0;
            loop3:
            do {
                int alt3=4;
                switch ( input.LA(1) ) {
                case 17:
                    {
                    alt3=1;
                    }
                    break;
                case 19:
                    {
                    alt3=2;
                    }
                    break;
                case 20:
                    {
                    alt3=3;
                    }
                    break;

                }

                switch (alt3) {
            	case 1 :
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:65:5: 'agents' ':' agent_sources[loader]
            	    {
            	    match(input,17,FOLLOW_17_in_element_sources151); 
            	    match(input,18,FOLLOW_18_in_element_sources153); 
            	    pushFollow(FOLLOW_agent_sources_in_element_sources155);
            	    agent_sources(loader);

            	    state._fsp--;


            	    }
            	    break;
            	case 2 :
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:65:42: 'platforms' ':' platform_sources[loader]
            	    {
            	    match(input,19,FOLLOW_19_in_element_sources160); 
            	    match(input,18,FOLLOW_18_in_element_sources162); 
            	    pushFollow(FOLLOW_platform_sources_in_element_sources164);
            	    platform_sources(loader);

            	    state._fsp--;


            	    }
            	    break;
            	case 3 :
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:65:86: 'environments' ':' environments[loader]
            	    {
            	    match(input,20,FOLLOW_20_in_element_sources170); 
            	    match(input,18,FOLLOW_18_in_element_sources172); 
            	    pushFollow(FOLLOW_environments_in_element_sources174);
            	    environments(loader);

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    if ( cnt3 >= 1 ) break loop3;
                        EarlyExitException eee =
                            new EarlyExitException(3, input);
                        throw eee;
                }
                cnt3++;
            } while (true);


            	
            	

            }

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


    // $ANTLR start "agent_sources"
    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:72:1: agent_sources[TModelLoader loader] : ( 'file' ':' FILE ID ';' )* ;
    public final void agent_sources(TModelLoader loader) throws RecognitionException {
        Token ID2=null;
        Token FILE3=null;

        try {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:74:2: ( ( 'file' ':' FILE ID ';' )* )
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:74:4: ( 'file' ':' FILE ID ';' )*
            {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:74:4: ( 'file' ':' FILE ID ';' )*
            loop4:
            do {
                int alt4=2;
                int LA4_0 = input.LA(1);

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


                switch (alt4) {
            	case 1 :
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:74:6: 'file' ':' FILE ID ';'
            	    {
            	    match(input,21,FOLLOW_21_in_agent_sources200); 
            	    match(input,18,FOLLOW_18_in_agent_sources201); 
            	    FILE3=(Token)match(input,FILE,FOLLOW_FILE_in_agent_sources204); 
            	    ID2=(Token)match(input,ID,FOLLOW_ID_in_agent_sources206); 
            	    match(input,13,FOLLOW_13_in_agent_sources207); 

            	    			 loader.loadAgent((ID2!=null?ID2.getText():null),(FILE3!=null?FILE3.getText():null));
            	    			 /*agent=null;*/

            	    }
            	    break;

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


            }

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


    // $ANTLR start "platform_sources"
    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:79:1: platform_sources[TModelLoader loader] : ( 'file' ':' FILE ';' | 'platform' ':' '{' ( load_platform[loader] ) '}' ';' )* ;
    public final void platform_sources(TModelLoader loader) throws RecognitionException {
        Token FILE4=null;

        try {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:80:2: ( ( 'file' ':' FILE ';' | 'platform' ':' '{' ( load_platform[loader] ) '}' ';' )* )
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:81:2: ( 'file' ':' FILE ';' | 'platform' ':' '{' ( load_platform[loader] ) '}' ';' )*
            {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:81:2: ( 'file' ':' FILE ';' | 'platform' ':' '{' ( load_platform[loader] ) '}' ';' )*
            loop5:
            do {
                int alt5=3;
                int LA5_0 = input.LA(1);

                if ( (LA5_0==21) ) {
                    alt5=1;
                }
                else if ( (LA5_0==22) ) {
                    alt5=2;
                }


                switch (alt5) {
            	case 1 :
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:81:4: 'file' ':' FILE ';'
            	    {
            	    match(input,21,FOLLOW_21_in_platform_sources228); 
            	    match(input,18,FOLLOW_18_in_platform_sources229); 
            	    FILE4=(Token)match(input,FILE,FOLLOW_FILE_in_platform_sources232); 
            	    match(input,13,FOLLOW_13_in_platform_sources234); 

            	    			 loader.loadPlatform((FILE4!=null?FILE4.getText():null));
            	    			 /*agent=null;*/

            	    }
            	    break;
            	case 2 :
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:86:4: 'platform' ':' '{' ( load_platform[loader] ) '}' ';'
            	    {
            	    match(input,22,FOLLOW_22_in_platform_sources250); 
            	    match(input,18,FOLLOW_18_in_platform_sources252); 
            	    match(input,11,FOLLOW_11_in_platform_sources254); 
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:86:23: ( load_platform[loader] )
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:86:24: load_platform[loader]
            	    {
            	    pushFollow(FOLLOW_load_platform_in_platform_sources257);
            	    load_platform(loader);

            	    state._fsp--;


            	    }

            	    match(input,12,FOLLOW_12_in_platform_sources262); 
            	    match(input,13,FOLLOW_13_in_platform_sources263); 

            	    }
            	    break;

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


            }

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


    // $ANTLR start "integer"
    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:92:1: integer returns [Integer result] : NUMBER ;
    public final Integer integer() throws RecognitionException {
        Integer result = null;

        Token NUMBER5=null;

        try {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:93:2: ( NUMBER )
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:93:4: NUMBER
            {
            NUMBER5=(Token)match(input,NUMBER,FOLLOW_NUMBER_in_integer290); 
            result= Integer.parseInt(NUMBER5.getText());

            }

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


    // $ANTLR start "item"
    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:97:1: item returns [TAtom atom] : ( ID | number= integer );
    public final TAtom item() throws RecognitionException {
        TAtom atom = null;

        Token ID6=null;
        Integer number = null;


        try {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:98:2: ( ID | number= integer )
            int alt6=2;
            int LA6_0 = input.LA(1);

            if ( (LA6_0==ID) ) {
                alt6=1;
            }
            else if ( (LA6_0==NUMBER) ) {
                alt6=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 6, 0, input);

                throw nvae;
            }
            switch (alt6) {
                case 1 :
                    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:99:3: ID
                    {
                    ID6=(Token)match(input,ID,FOLLOW_ID_in_item310); 
                    atom= new TAtom(ID6.getText());

                    }
                    break;
                case 2 :
                    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:100:5: number= integer
                    {
                    pushFollow(FOLLOW_integer_in_item321);
                    number=integer();

                    state._fsp--;

                    atom= new TAtom(number);

                    }
                    break;

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


    // $ANTLR start "generalListItem"
    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:103:1: generalListItem returns [TObject result] : (iResult= item | gResult= generalList );
    public final TObject generalListItem() throws RecognitionException {
        TObject result = null;

        TAtom iResult = null;

        TList gResult = null;


        try {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:104:2: (iResult= item | gResult= generalList )
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0==ID||LA7_0==NUMBER) ) {
                alt7=1;
            }
            else if ( (LA7_0==23) ) {
                alt7=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 7, 0, input);

                throw nvae;
            }
            switch (alt7) {
                case 1 :
                    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:105:2: iResult= item
                    {
                    pushFollow(FOLLOW_item_in_generalListItem342);
                    iResult=item();

                    state._fsp--;

                    result=iResult;

                    }
                    break;
                case 2 :
                    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:105:34: gResult= generalList
                    {
                    pushFollow(FOLLOW_generalList_in_generalListItem349);
                    gResult=generalList();

                    state._fsp--;

                    result=gResult;

                    }
                    break;

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


    // $ANTLR start "generalList"
    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:108:1: generalList returns [TList list] : '(' mItem= generalListItem ( ',' mItem= generalListItem )* ')' ;
    public final TList generalList() throws RecognitionException {
        TList list = null;

        TObject mItem = null;


        try {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:109:2: ( '(' mItem= generalListItem ( ',' mItem= generalListItem )* ')' )
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:110:2: '(' mItem= generalListItem ( ',' mItem= generalListItem )* ')'
            {

            	TMass._Terminal.printlnDebug("General list: ");
            	list=new TList(TConstants._GeneralList);
            match(input,23,FOLLOW_23_in_generalList371); 
            pushFollow(FOLLOW_generalListItem_in_generalList375);
            mItem=generalListItem();

            state._fsp--;

            list.add(mItem);
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:115:2: ( ',' mItem= generalListItem )*
            loop8:
            do {
                int alt8=2;
                int LA8_0 = input.LA(1);

                if ( (LA8_0==24) ) {
                    alt8=1;
                }


                switch (alt8) {
            	case 1 :
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:115:3: ',' mItem= generalListItem
            	    {
            	    match(input,24,FOLLOW_24_in_generalList383); 
            	    pushFollow(FOLLOW_generalListItem_in_generalList387);
            	    mItem=generalListItem();

            	    state._fsp--;

            	    list.add(mItem);

            	    }
            	    break;

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

            match(input,25,FOLLOW_25_in_generalList397); 

            }

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


    // $ANTLR start "load_platform"
    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:120:1: load_platform[TModelLoader loader] : 'name' ':' name= ID ';' ( 'slots' ':' 'environments' '=' noESlots= NUMBER ',' 'agents' '=' noASlots= NUMBER ';' )? ( 'services' ':' ( '[' svcName= ID svcClass= ID ']' )+ ';' )? ( 'variables' ':' (varName= ID ( '=' varValue= generalList )? )+ )? ;
    public final void load_platform(TModelLoader loader) throws RecognitionException {
        Token name=null;
        Token noESlots=null;
        Token noASlots=null;
        Token svcName=null;
        Token svcClass=null;
        Token varName=null;
        TList varValue = null;


        try {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:121:2: ( 'name' ':' name= ID ';' ( 'slots' ':' 'environments' '=' noESlots= NUMBER ',' 'agents' '=' noASlots= NUMBER ';' )? ( 'services' ':' ( '[' svcName= ID svcClass= ID ']' )+ ';' )? ( 'variables' ':' (varName= ID ( '=' varValue= generalList )? )+ )? )
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:122:2: 'name' ':' name= ID ';' ( 'slots' ':' 'environments' '=' noESlots= NUMBER ',' 'agents' '=' noASlots= NUMBER ';' )? ( 'services' ':' ( '[' svcName= ID svcClass= ID ']' )+ ';' )? ( 'variables' ':' (varName= ID ( '=' varValue= generalList )? )+ )?
            {
            int noESlotsI=1; int noASlotsI=1;
            match(input,26,FOLLOW_26_in_load_platform414); 
            match(input,18,FOLLOW_18_in_load_platform415); 
            name=(Token)match(input,ID,FOLLOW_ID_in_load_platform420); 
            match(input,13,FOLLOW_13_in_load_platform422); 
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:124:2: ( 'slots' ':' 'environments' '=' noESlots= NUMBER ',' 'agents' '=' noASlots= NUMBER ';' )?
            int alt9=2;
            int LA9_0 = input.LA(1);

            if ( (LA9_0==27) ) {
                alt9=1;
            }
            switch (alt9) {
                case 1 :
                    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:124:3: 'slots' ':' 'environments' '=' noESlots= NUMBER ',' 'agents' '=' noASlots= NUMBER ';'
                    {
                    match(input,27,FOLLOW_27_in_load_platform426); 
                    match(input,18,FOLLOW_18_in_load_platform428); 
                    match(input,20,FOLLOW_20_in_load_platform430); 
                    match(input,28,FOLLOW_28_in_load_platform432); 
                    noESlots=(Token)match(input,NUMBER,FOLLOW_NUMBER_in_load_platform436); 
                    match(input,24,FOLLOW_24_in_load_platform438); 
                    match(input,17,FOLLOW_17_in_load_platform440); 
                    match(input,28,FOLLOW_28_in_load_platform442); 
                    noASlots=(Token)match(input,NUMBER,FOLLOW_NUMBER_in_load_platform446); 
                    match(input,13,FOLLOW_13_in_load_platform448); 

                    		if((new Integer((noESlots!=null?noESlots.getText():null))<1)||(new Integer((noESlots!=null?noESlots.getText():null))>TPlatform._MaxSlots)) {
                    			// TMass._Terminal ... reportError ...
                    			noESlotsI=1;
                    			}
                    			else
                    			noESlotsI=new Integer((noESlots!=null?noESlots.getText():null));
                    		if((new Integer((noASlots!=null?noASlots.getText():null))<1)||(new Integer((noASlots!=null?noASlots.getText():null))>TPlatform._MaxSlots)) {
                    			// TMass._Terminal .... 
                    			noASlotsI=1;
                    			}
                    			else
                    			noASlotsI=new Integer((noASlots!=null?noASlots.getText():null));
                    			TMass._Terminal.printlnSystemInfo("Platform source: name="+(name!=null?name.getText():null)+", environment slots="+(noESlots!=null?noESlots.getText():null)+", agent slots="+(noASlots!=null?noASlots.getText():null));
                    		// chtelo by to mit moznost importovat cele adresare!!
                    	

                    }
                    break;

            }


            	TPlatform platform;platform=new TPlatform((name!=null?name.getText():null), noESlotsI, noASlotsI, true);
            	loader.addToPlatformSet(platform);
            	
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:147:2: ( 'services' ':' ( '[' svcName= ID svcClass= ID ']' )+ ';' )?
            int alt11=2;
            int LA11_0 = input.LA(1);

            if ( (LA11_0==29) ) {
                alt11=1;
            }
            switch (alt11) {
                case 1 :
                    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:147:3: 'services' ':' ( '[' svcName= ID svcClass= ID ']' )+ ';'
                    {
                    match(input,29,FOLLOW_29_in_load_platform464); 
                    match(input,18,FOLLOW_18_in_load_platform466); 
                    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:147:18: ( '[' svcName= ID svcClass= ID ']' )+
                    int cnt10=0;
                    loop10:
                    do {
                        int alt10=2;
                        int LA10_0 = input.LA(1);

                        if ( (LA10_0==30) ) {
                            alt10=1;
                        }


                        switch (alt10) {
                    	case 1 :
                    	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:147:19: '[' svcName= ID svcClass= ID ']'
                    	    {
                    	    match(input,30,FOLLOW_30_in_load_platform469); 
                    	    svcName=(Token)match(input,ID,FOLLOW_ID_in_load_platform473); 
                    	    svcClass=(Token)match(input,ID,FOLLOW_ID_in_load_platform477); 
                    	    match(input,31,FOLLOW_31_in_load_platform479); 
                    	    TMass._Terminal.printlnSystemInfo("Adding service '"+(svcName!=null?svcName.getText():null)+"' of class "+(svcClass!=null?svcClass.getText():null));
                    	    		loader.addServiceToPlatform(platform,(svcName!=null?svcName.getText():null),(svcClass!=null?svcClass.getText():null));
                    	    	

                    	    }
                    	    break;

                    	default :
                    	    if ( cnt10 >= 1 ) break loop10;
                                EarlyExitException eee =
                                    new EarlyExitException(10, input);
                                throw eee;
                        }
                        cnt10++;
                    } while (true);

                    match(input,13,FOLLOW_13_in_load_platform488); 

                    }
                    break;

            }

            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:153:2: ( 'variables' ':' (varName= ID ( '=' varValue= generalList )? )+ )?
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( (LA14_0==32) ) {
                alt14=1;
            }
            switch (alt14) {
                case 1 :
                    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:153:3: 'variables' ':' (varName= ID ( '=' varValue= generalList )? )+
                    {
                    match(input,32,FOLLOW_32_in_load_platform496); 
                    match(input,18,FOLLOW_18_in_load_platform498); 
                    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:153:19: (varName= ID ( '=' varValue= generalList )? )+
                    int cnt13=0;
                    loop13:
                    do {
                        int alt13=2;
                        int LA13_0 = input.LA(1);

                        if ( (LA13_0==ID) ) {
                            alt13=1;
                        }


                        switch (alt13) {
                    	case 1 :
                    	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:153:21: varName= ID ( '=' varValue= generalList )?
                    	    {
                    	    varName=(Token)match(input,ID,FOLLOW_ID_in_load_platform504); 
                    	    TObject value=null;TMass._Terminal.printlnSystemInfo("Adding variable "+(varName!=null?varName.getText():null));
                    	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:155:2: ( '=' varValue= generalList )?
                    	    int alt12=2;
                    	    int LA12_0 = input.LA(1);

                    	    if ( (LA12_0==28) ) {
                    	        alt12=1;
                    	    }
                    	    switch (alt12) {
                    	        case 1 :
                    	            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:155:3: '=' varValue= generalList
                    	            {
                    	            match(input,28,FOLLOW_28_in_load_platform513); 
                    	            pushFollow(FOLLOW_generalList_in_load_platform517);
                    	            varValue=generalList();

                    	            state._fsp--;


                    	            }
                    	            break;

                    	    }


                    	    	loader.addVariableToPlatform(platform, (varName!=null?varName.getText():null), varValue);
                    	    	

                    	    }
                    	    break;

                    	default :
                    	    if ( cnt13 >= 1 ) break loop13;
                                EarlyExitException eee =
                                    new EarlyExitException(13, input);
                                throw eee;
                        }
                        cnt13++;
                    } while (true);


                    }
                    break;

            }


            }

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


    // $ANTLR start "element_specs"
    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:166:1: element_specs[TModelLoader loader] : ( 'agents' ':' agent_specs[loader] | 'platforms' ':' platform_specs[loader] | 'environments' ':' environments[loader] )* ;
    public final void element_specs(TModelLoader loader) throws RecognitionException {
        try {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:167:2: ( ( 'agents' ':' agent_specs[loader] | 'platforms' ':' platform_specs[loader] | 'environments' ':' environments[loader] )* )
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:167:3: ( 'agents' ':' agent_specs[loader] | 'platforms' ':' platform_specs[loader] | 'environments' ':' environments[loader] )*
            {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:167:3: ( 'agents' ':' agent_specs[loader] | 'platforms' ':' platform_specs[loader] | 'environments' ':' environments[loader] )*
            loop15:
            do {
                int alt15=4;
                switch ( input.LA(1) ) {
                case 17:
                    {
                    alt15=1;
                    }
                    break;
                case 19:
                    {
                    alt15=2;
                    }
                    break;
                case 20:
                    {
                    alt15=3;
                    }
                    break;

                }

                switch (alt15) {
            	case 1 :
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:167:4: 'agents' ':' agent_specs[loader]
            	    {
            	    match(input,17,FOLLOW_17_in_element_specs548); 
            	    match(input,18,FOLLOW_18_in_element_specs550); 
            	    pushFollow(FOLLOW_agent_specs_in_element_specs552);
            	    agent_specs(loader);

            	    state._fsp--;


            	    }
            	    break;
            	case 2 :
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:167:39: 'platforms' ':' platform_specs[loader]
            	    {
            	    match(input,19,FOLLOW_19_in_element_specs557); 
            	    match(input,18,FOLLOW_18_in_element_specs559); 
            	    pushFollow(FOLLOW_platform_specs_in_element_specs561);
            	    platform_specs(loader);

            	    state._fsp--;


            	    }
            	    break;
            	case 3 :
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:167:80: 'environments' ':' environments[loader]
            	    {
            	    match(input,20,FOLLOW_20_in_element_specs566); 
            	    match(input,18,FOLLOW_18_in_element_specs568); 
            	    pushFollow(FOLLOW_environments_in_element_specs570);
            	    environments(loader);

            	    state._fsp--;


            	    }
            	    break;

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


            }

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


    // $ANTLR start "environments"
    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:170:1: environments[TModelLoader loader] : (name= ID '(' multicast[loader,$name.text] ';' )* ;
    public final void environments(TModelLoader loader) throws RecognitionException {
        Token name=null;

        try {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:171:2: ( (name= ID '(' multicast[loader,$name.text] ';' )* )
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:171:4: (name= ID '(' multicast[loader,$name.text] ';' )*
            {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:171:4: (name= ID '(' multicast[loader,$name.text] ';' )*
            loop16:
            do {
                int alt16=2;
                int LA16_0 = input.LA(1);

                if ( (LA16_0==ID) ) {
                    alt16=1;
                }


                switch (alt16) {
            	case 1 :
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:171:5: name= ID '(' multicast[loader,$name.text] ';'
            	    {
            	    name=(Token)match(input,ID,FOLLOW_ID_in_environments592); 
            	    match(input,23,FOLLOW_23_in_environments594); 
            	    pushFollow(FOLLOW_multicast_in_environments596);
            	    multicast(loader, (name!=null?name.getText():null));

            	    state._fsp--;

            	    match(input,13,FOLLOW_13_in_environments600); 

            	    }
            	    break;

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


            }

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


    // $ANTLR start "multicast"
    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:174:1: multicast[TModelLoader loader, String name] : 'multicast' ')' ;
    public final void multicast(TModelLoader loader, String name) throws RecognitionException {
        try {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:175:2: ( 'multicast' ')' )
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:175:4: 'multicast' ')'
            {
            match(input,33,FOLLOW_33_in_multicast615); 
            match(input,25,FOLLOW_25_in_multicast617); 

            		loader.addMulticastToModel(name);
            	

            }

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


    // $ANTLR start "agent_specs"
    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:181:1: agent_specs[TModelLoader loader] : (name= ID '(' source= ID ')' (ts= params )? ';' )+ ;
    public final void agent_specs(TModelLoader loader) throws RecognitionException {
        Token name=null;
        Token source=null;
        TreeSet<Integer> ts = null;


        try {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:182:2: ( (name= ID '(' source= ID ')' (ts= params )? ';' )+ )
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:182:4: (name= ID '(' source= ID ')' (ts= params )? ';' )+
            {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:182:4: (name= ID '(' source= ID ')' (ts= params )? ';' )+
            int cnt18=0;
            loop18:
            do {
                int alt18=2;
                int LA18_0 = input.LA(1);

                if ( (LA18_0==ID) ) {
                    alt18=1;
                }


                switch (alt18) {
            	case 1 :
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:182:5: name= ID '(' source= ID ')' (ts= params )? ';'
            	    {
            	    ts=new TreeSet<Integer>(); ts.add(-1);
            	    name=(Token)match(input,ID,FOLLOW_ID_in_agent_specs648); 
            	    match(input,23,FOLLOW_23_in_agent_specs650); 
            	    source=(Token)match(input,ID,FOLLOW_ID_in_agent_specs654); 
            	    match(input,25,FOLLOW_25_in_agent_specs656); 
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:183:29: (ts= params )?
            	    int alt17=2;
            	    int LA17_0 = input.LA(1);

            	    if ( (LA17_0==30) ) {
            	        alt17=1;
            	    }
            	    switch (alt17) {
            	        case 1 :
            	            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:183:30: ts= params
            	            {
            	            pushFollow(FOLLOW_params_in_agent_specs662);
            	            ts=params();

            	            state._fsp--;


            	            }
            	            break;

            	    }

            	    match(input,13,FOLLOW_13_in_agent_specs665); 

            	    	 	for(Integer i:ts){
            	    	  		loader.addAgentToModel((name!=null?name.getText():null),(source!=null?source.getText():null),i);
            	    	 		}
            	    	 	

            	    }
            	    break;

            	default :
            	    if ( cnt18 >= 1 ) break loop18;
                        EarlyExitException eee =
                            new EarlyExitException(18, input);
                        throw eee;
                }
                cnt18++;
            } while (true);


            }

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


    // $ANTLR start "platform_specs"
    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:193:1: platform_specs[TModelLoader loader] : (name= ID '(' source= ID ')' (ts= params )? ';' )+ ;
    public final void platform_specs(TModelLoader loader) throws RecognitionException {
        Token name=null;
        Token source=null;
        TreeSet<Integer> ts = null;


        try {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:194:2: ( (name= ID '(' source= ID ')' (ts= params )? ';' )+ )
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:194:3: (name= ID '(' source= ID ')' (ts= params )? ';' )+
            {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:194:3: (name= ID '(' source= ID ')' (ts= params )? ';' )+
            int cnt20=0;
            loop20:
            do {
                int alt20=2;
                int LA20_0 = input.LA(1);

                if ( (LA20_0==ID) ) {
                    alt20=1;
                }


                switch (alt20) {
            	case 1 :
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:194:4: name= ID '(' source= ID ')' (ts= params )? ';'
            	    {
            	    ts=new TreeSet<Integer>(); ts.add(-1);
            	    name=(Token)match(input,ID,FOLLOW_ID_in_platform_specs700); 
            	    match(input,23,FOLLOW_23_in_platform_specs702); 
            	    source=(Token)match(input,ID,FOLLOW_ID_in_platform_specs706); 
            	    match(input,25,FOLLOW_25_in_platform_specs708); 
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:195:31: (ts= params )?
            	    int alt19=2;
            	    int LA19_0 = input.LA(1);

            	    if ( (LA19_0==30) ) {
            	        alt19=1;
            	    }
            	    switch (alt19) {
            	        case 1 :
            	            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:195:32: ts= params
            	            {
            	            pushFollow(FOLLOW_params_in_platform_specs714);
            	            ts=params();

            	            state._fsp--;


            	            }
            	            break;

            	    }

            	    match(input,13,FOLLOW_13_in_platform_specs717); 

            	    	 	for(Integer i:ts){
            	    	  		loader.addPlatformToModel((name!=null?name.getText():null),(source!=null?source.getText():null),i);
            	    	 		}
            	    	 	

            	    }
            	    break;

            	default :
            	    if ( cnt20 >= 1 ) break loop20;
                        EarlyExitException eee =
                            new EarlyExitException(20, input);
                        throw eee;
                }
                cnt20++;
            } while (true);


            }

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


    // $ANTLR start "relation_specs"
    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:204:1: relation_specs[TModelLoader loader] : (elm= ID (elpm= params )? ( relation_mul[loader,$elm.text,elpm] | relation_oto[loader,$elm.text,elpm] | relation_btb[loader,$elm.text,elpm] ) )+ ;
    public final void relation_specs(TModelLoader loader) throws RecognitionException {
        Token elm=null;
        TreeSet<Integer> elpm = null;


        try {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:205:2: ( (elm= ID (elpm= params )? ( relation_mul[loader,$elm.text,elpm] | relation_oto[loader,$elm.text,elpm] | relation_btb[loader,$elm.text,elpm] ) )+ )
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:206:2: (elm= ID (elpm= params )? ( relation_mul[loader,$elm.text,elpm] | relation_oto[loader,$elm.text,elpm] | relation_btb[loader,$elm.text,elpm] ) )+
            {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:206:2: (elm= ID (elpm= params )? ( relation_mul[loader,$elm.text,elpm] | relation_oto[loader,$elm.text,elpm] | relation_btb[loader,$elm.text,elpm] ) )+
            int cnt23=0;
            loop23:
            do {
                int alt23=2;
                int LA23_0 = input.LA(1);

                if ( (LA23_0==ID) ) {
                    alt23=1;
                }


                switch (alt23) {
            	case 1 :
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:206:3: elm= ID (elpm= params )? ( relation_mul[loader,$elm.text,elpm] | relation_oto[loader,$elm.text,elpm] | relation_btb[loader,$elm.text,elpm] )
            	    {
            	    elpm=null;
            	    elm=(Token)match(input,ID,FOLLOW_ID_in_relation_specs748); 
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:207:9: (elpm= params )?
            	    int alt21=2;
            	    int LA21_0 = input.LA(1);

            	    if ( (LA21_0==30) ) {
            	        alt21=1;
            	    }
            	    switch (alt21) {
            	        case 1 :
            	            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:207:10: elpm= params
            	            {
            	            pushFollow(FOLLOW_params_in_relation_specs753);
            	            elpm=params();

            	            state._fsp--;


            	            }
            	            break;

            	    }

            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:207:24: ( relation_mul[loader,$elm.text,elpm] | relation_oto[loader,$elm.text,elpm] | relation_btb[loader,$elm.text,elpm] )
            	    int alt22=3;
            	    switch ( input.LA(1) ) {
            	    case 34:
            	        {
            	        alt22=1;
            	        }
            	        break;
            	    case 35:
            	        {
            	        alt22=2;
            	        }
            	        break;
            	    case 28:
            	        {
            	        alt22=3;
            	        }
            	        break;
            	    default:
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 22, 0, input);

            	        throw nvae;
            	    }

            	    switch (alt22) {
            	        case 1 :
            	            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:207:25: relation_mul[loader,$elm.text,elpm]
            	            {
            	            pushFollow(FOLLOW_relation_mul_in_relation_specs758);
            	            relation_mul(loader, (elm!=null?elm.getText():null), elpm);

            	            state._fsp--;


            	            }
            	            break;
            	        case 2 :
            	            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:207:63: relation_oto[loader,$elm.text,elpm]
            	            {
            	            pushFollow(FOLLOW_relation_oto_in_relation_specs763);
            	            relation_oto(loader, (elm!=null?elm.getText():null), elpm);

            	            state._fsp--;


            	            }
            	            break;
            	        case 3 :
            	            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:207:100: relation_btb[loader,$elm.text,elpm]
            	            {
            	            pushFollow(FOLLOW_relation_btb_in_relation_specs767);
            	            relation_btb(loader, (elm!=null?elm.getText():null), elpm);

            	            state._fsp--;


            	            }
            	            break;

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt23 >= 1 ) break loop23;
                        EarlyExitException eee =
                            new EarlyExitException(23, input);
                        throw eee;
                }
                cnt23++;
            } while (true);


            }

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


    // $ANTLR start "relation_mul"
    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:210:1: relation_mul[TModelLoader loader, String oelm, TreeSet<Integer> oelpm] : '#' (ielm= ID (ielpm= params )? ';' ) ;
    public final void relation_mul(TModelLoader loader, String oelm, TreeSet<Integer> oelpm) throws RecognitionException {
        Token ielm=null;
        TreeSet<Integer> ielpm = null;


        try {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:211:2: ( '#' (ielm= ID (ielpm= params )? ';' ) )
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:211:4: '#' (ielm= ID (ielpm= params )? ';' )
            {
            ielpm=null;
            match(input,34,FOLLOW_34_in_relation_mul787); 
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:212:6: (ielm= ID (ielpm= params )? ';' )
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:212:7: ielm= ID (ielpm= params )? ';'
            {
            ielm=(Token)match(input,ID,FOLLOW_ID_in_relation_mul792); 
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:212:15: (ielpm= params )?
            int alt24=2;
            int LA24_0 = input.LA(1);

            if ( (LA24_0==30) ) {
                alt24=1;
            }
            switch (alt24) {
                case 1 :
                    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:212:16: ielpm= params
                    {
                    pushFollow(FOLLOW_params_in_relation_mul797);
                    ielpm=params();

                    state._fsp--;


                    }
                    break;

            }

            match(input,13,FOLLOW_13_in_relation_mul801); 

            }


            		loader.relationsMultiply(oelm,oelpm,(ielm!=null?ielm.getText():null),ielpm);
            		loader.relationsMultiply((ielm!=null?ielm.getText():null),ielpm, oelm,oelpm);

            	

            }

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


    // $ANTLR start "relation_oto"
    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:221:1: relation_oto[TModelLoader loader, String oelm, TreeSet<Integer> oelpm] : '->' (ielm= ID (ielpm= params )? ';' ) ;
    public final void relation_oto(TModelLoader loader, String oelm, TreeSet<Integer> oelpm) throws RecognitionException {
        Token ielm=null;
        TreeSet<Integer> ielpm = null;


        try {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:222:2: ( '->' (ielm= ID (ielpm= params )? ';' ) )
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:222:4: '->' (ielm= ID (ielpm= params )? ';' )
            {
            ielpm=null;
            match(input,35,FOLLOW_35_in_relation_oto823); 
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:223:7: (ielm= ID (ielpm= params )? ';' )
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:223:8: ielm= ID (ielpm= params )? ';'
            {
            ielm=(Token)match(input,ID,FOLLOW_ID_in_relation_oto828); 
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:223:16: (ielpm= params )?
            int alt25=2;
            int LA25_0 = input.LA(1);

            if ( (LA25_0==30) ) {
                alt25=1;
            }
            switch (alt25) {
                case 1 :
                    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:223:17: ielpm= params
                    {
                    pushFollow(FOLLOW_params_in_relation_oto833);
                    ielpm=params();

                    state._fsp--;


                    }
                    break;

            }

            match(input,13,FOLLOW_13_in_relation_oto837); 

            }


            		loader.relationsOneToOne(oelm,oelpm,(ielm!=null?ielm.getText():null),ielpm);
            	

            }

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


    // $ANTLR start "relation_btb"
    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:229:1: relation_btb[TModelLoader loader, String oelm, TreeSet<Integer> oelpm] : '=' (ielm= ID (ielpm= params )? ';' ) ;
    public final void relation_btb(TModelLoader loader, String oelm, TreeSet<Integer> oelpm) throws RecognitionException {
        Token ielm=null;
        TreeSet<Integer> ielpm = null;


        try {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:230:2: ( '=' (ielm= ID (ielpm= params )? ';' ) )
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:230:4: '=' (ielm= ID (ielpm= params )? ';' )
            {
            ielpm=null;
            match(input,28,FOLLOW_28_in_relation_btb859); 
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:231:6: (ielm= ID (ielpm= params )? ';' )
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:231:7: ielm= ID (ielpm= params )? ';'
            {
            ielm=(Token)match(input,ID,FOLLOW_ID_in_relation_btb864); 
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:231:15: (ielpm= params )?
            int alt26=2;
            int LA26_0 = input.LA(1);

            if ( (LA26_0==30) ) {
                alt26=1;
            }
            switch (alt26) {
                case 1 :
                    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:231:16: ielpm= params
                    {
                    pushFollow(FOLLOW_params_in_relation_btb869);
                    ielpm=params();

                    state._fsp--;


                    }
                    break;

            }

            match(input,13,FOLLOW_13_in_relation_btb873); 

            }


            		loader.relationsOneToOne(oelm,oelpm,(ielm!=null?ielm.getText():null),ielpm);
            		loader.relationsOneToOne((ielm!=null?ielm.getText():null),ielpm,oelm,oelpm);
            	

            }

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


    // $ANTLR start "params"
    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:239:1: params returns [TreeSet<Integer> ts] : '[' intervals[ts] ( ',' intervals[ts] )* ']' ;
    public final TreeSet<Integer> params() throws RecognitionException {
        TreeSet<Integer> ts = null;

        try {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:242:2: ( '[' intervals[ts] ( ',' intervals[ts] )* ']' )
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:242:5: '[' intervals[ts] ( ',' intervals[ts] )* ']'
            {
             ts=new TreeSet();
            match(input,30,FOLLOW_30_in_params909); 
            pushFollow(FOLLOW_intervals_in_params911);
            intervals(ts);

            state._fsp--;

            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:243:25: ( ',' intervals[ts] )*
            loop27:
            do {
                int alt27=2;
                int LA27_0 = input.LA(1);

                if ( (LA27_0==24) ) {
                    alt27=1;
                }


                switch (alt27) {
            	case 1 :
            	    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:243:26: ',' intervals[ts]
            	    {
            	    match(input,24,FOLLOW_24_in_params915); 
            	    pushFollow(FOLLOW_intervals_in_params917);
            	    intervals(ts);

            	    state._fsp--;


            	    }
            	    break;

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

            match(input,31,FOLLOW_31_in_params922); 

            }

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


    // $ANTLR start "intervals"
    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:246:1: intervals[TreeSet<Integer> ts] : n1= NUMBER ( ':' n2= NUMBER )? ;
    public final void intervals(TreeSet<Integer> ts) throws RecognitionException {
        Token n1=null;
        Token n2=null;

        try {
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:247:2: (n1= NUMBER ( ':' n2= NUMBER )? )
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:247:4: n1= NUMBER ( ':' n2= NUMBER )?
            {
            n1=(Token)match(input,NUMBER,FOLLOW_NUMBER_in_intervals941); 
            // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:247:15: ( ':' n2= NUMBER )?
            int alt28=2;
            int LA28_0 = input.LA(1);

            if ( (LA28_0==18) ) {
                alt28=1;
            }
            switch (alt28) {
                case 1 :
                    // C:\\Users\\zborilf\\workspace\\TMass-X\\src\\jTMass\\core\\jLoaders\\jTMassML\\tMassML.g:247:16: ':' n2= NUMBER
                    {
                    match(input,18,FOLLOW_18_in_intervals945); 
                    n2=(Token)match(input,NUMBER,FOLLOW_NUMBER_in_intervals949); 

                    }
                    break;

            }

             if (n2!=null)
            		{
            		for(int i=new Integer((n1!=null?n1.getText():null));i<=new Integer((n2!=null?n2.getText():null));i++)
            			ts.add(new Integer(i));
            		}
            		else
            			ts.add(new Integer((n1!=null?n1.getText():null)));
            		

            }

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

    // Delegated rules


 

    public static final BitSet FOLLOW_model_name_in_tMassML53 = new BitSet(new long[]{0x000000000000C400L});
    public static final BitSet FOLLOW_10_in_tMassML59 = new BitSet(new long[]{0x0000000000000800L});
    public static final BitSet FOLLOW_11_in_tMassML61 = new BitSet(new long[]{0x00000000001A0000L});
    public static final BitSet FOLLOW_element_sources_in_tMassML63 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_tMassML67 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_tMassML68 = new BitSet(new long[]{0x000000000000C402L});
    public static final BitSet FOLLOW_14_in_tMassML72 = new BitSet(new long[]{0x0000000000000800L});
    public static final BitSet FOLLOW_11_in_tMassML74 = new BitSet(new long[]{0x00000000001A1000L});
    public static final BitSet FOLLOW_element_specs_in_tMassML76 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_tMassML79 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_tMassML80 = new BitSet(new long[]{0x000000000000C402L});
    public static final BitSet FOLLOW_15_in_tMassML88 = new BitSet(new long[]{0x0000000000000800L});
    public static final BitSet FOLLOW_11_in_tMassML90 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_relation_specs_in_tMassML92 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_tMassML96 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_tMassML98 = new BitSet(new long[]{0x000000000000C402L});
    public static final BitSet FOLLOW_16_in_model_name117 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ID_in_model_name119 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_model_name122 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_element_sources151 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_element_sources153 = new BitSet(new long[]{0x00000000003A0000L});
    public static final BitSet FOLLOW_agent_sources_in_element_sources155 = new BitSet(new long[]{0x00000000001A0002L});
    public static final BitSet FOLLOW_19_in_element_sources160 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_element_sources162 = new BitSet(new long[]{0x00000000007A0000L});
    public static final BitSet FOLLOW_platform_sources_in_element_sources164 = new BitSet(new long[]{0x00000000001A0002L});
    public static final BitSet FOLLOW_20_in_element_sources170 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_element_sources172 = new BitSet(new long[]{0x00000000001A0010L});
    public static final BitSet FOLLOW_environments_in_element_sources174 = new BitSet(new long[]{0x00000000001A0002L});
    public static final BitSet FOLLOW_21_in_agent_sources200 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_agent_sources201 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_FILE_in_agent_sources204 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ID_in_agent_sources206 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_agent_sources207 = new BitSet(new long[]{0x0000000000200002L});
    public static final BitSet FOLLOW_21_in_platform_sources228 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_platform_sources229 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_FILE_in_platform_sources232 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_platform_sources234 = new BitSet(new long[]{0x0000000000600002L});
    public static final BitSet FOLLOW_22_in_platform_sources250 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_platform_sources252 = new BitSet(new long[]{0x0000000000000800L});
    public static final BitSet FOLLOW_11_in_platform_sources254 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_load_platform_in_platform_sources257 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_platform_sources262 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_platform_sources263 = new BitSet(new long[]{0x0000000000600002L});
    public static final BitSet FOLLOW_NUMBER_in_integer290 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ID_in_item310 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_integer_in_item321 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_item_in_generalListItem342 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_generalList_in_generalListItem349 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_23_in_generalList371 = new BitSet(new long[]{0x0000000000800050L});
    public static final BitSet FOLLOW_generalListItem_in_generalList375 = new BitSet(new long[]{0x0000000003000000L});
    public static final BitSet FOLLOW_24_in_generalList383 = new BitSet(new long[]{0x0000000000800050L});
    public static final BitSet FOLLOW_generalListItem_in_generalList387 = new BitSet(new long[]{0x0000000003000000L});
    public static final BitSet FOLLOW_25_in_generalList397 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_26_in_load_platform414 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_load_platform415 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ID_in_load_platform420 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_load_platform422 = new BitSet(new long[]{0x0000000128000002L});
    public static final BitSet FOLLOW_27_in_load_platform426 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_load_platform428 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_20_in_load_platform430 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_load_platform432 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_NUMBER_in_load_platform436 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_load_platform438 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_load_platform440 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_load_platform442 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_NUMBER_in_load_platform446 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_load_platform448 = new BitSet(new long[]{0x0000000120000002L});
    public static final BitSet FOLLOW_29_in_load_platform464 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_load_platform466 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_30_in_load_platform469 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ID_in_load_platform473 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ID_in_load_platform477 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_31_in_load_platform479 = new BitSet(new long[]{0x0000000040002000L});
    public static final BitSet FOLLOW_13_in_load_platform488 = new BitSet(new long[]{0x0000000100000002L});
    public static final BitSet FOLLOW_32_in_load_platform496 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_load_platform498 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ID_in_load_platform504 = new BitSet(new long[]{0x0000000010000012L});
    public static final BitSet FOLLOW_28_in_load_platform513 = new BitSet(new long[]{0x0000000000800050L});
    public static final BitSet FOLLOW_generalList_in_load_platform517 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_17_in_element_specs548 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_element_specs550 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_agent_specs_in_element_specs552 = new BitSet(new long[]{0x00000000001A0002L});
    public static final BitSet FOLLOW_19_in_element_specs557 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_element_specs559 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_platform_specs_in_element_specs561 = new BitSet(new long[]{0x00000000001A0002L});
    public static final BitSet FOLLOW_20_in_element_specs566 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_element_specs568 = new BitSet(new long[]{0x00000000001A0010L});
    public static final BitSet FOLLOW_environments_in_element_specs570 = new BitSet(new long[]{0x00000000001A0002L});
    public static final BitSet FOLLOW_ID_in_environments592 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_environments594 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_multicast_in_environments596 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_environments600 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_33_in_multicast615 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_multicast617 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ID_in_agent_specs648 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_agent_specs650 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ID_in_agent_specs654 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_agent_specs656 = new BitSet(new long[]{0x0000000040002000L});
    public static final BitSet FOLLOW_params_in_agent_specs662 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_agent_specs665 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_ID_in_platform_specs700 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_platform_specs702 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ID_in_platform_specs706 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_platform_specs708 = new BitSet(new long[]{0x0000000040002000L});
    public static final BitSet FOLLOW_params_in_platform_specs714 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_platform_specs717 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_ID_in_relation_specs748 = new BitSet(new long[]{0x0000000C50000000L});
    public static final BitSet FOLLOW_params_in_relation_specs753 = new BitSet(new long[]{0x0000000C50000000L});
    public static final BitSet FOLLOW_relation_mul_in_relation_specs758 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_relation_oto_in_relation_specs763 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_relation_btb_in_relation_specs767 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_34_in_relation_mul787 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ID_in_relation_mul792 = new BitSet(new long[]{0x0000000040002000L});
    public static final BitSet FOLLOW_params_in_relation_mul797 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_relation_mul801 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_35_in_relation_oto823 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ID_in_relation_oto828 = new BitSet(new long[]{0x0000000040002000L});
    public static final BitSet FOLLOW_params_in_relation_oto833 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_relation_oto837 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_28_in_relation_btb859 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ID_in_relation_btb864 = new BitSet(new long[]{0x0000000040002000L});
    public static final BitSet FOLLOW_params_in_relation_btb869 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_relation_btb873 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_30_in_params909 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_intervals_in_params911 = new BitSet(new long[]{0x0000000081000000L});
    public static final BitSet FOLLOW_24_in_params915 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_intervals_in_params917 = new BitSet(new long[]{0x0000000081000000L});
    public static final BitSet FOLLOW_31_in_params922 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NUMBER_in_intervals941 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_18_in_intervals945 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_NUMBER_in_intervals949 = new BitSet(new long[]{0x0000000000000002L});

}