public final void throwsSpec() throws RecognitionException {
        try {
            // back-end/koopa/trees/antlr/filter/generator/ANTLRv3Tree.g:104:2: ( ^( 'throws' ( ID )+ ) )
            // back-end/koopa/trees/antlr/filter/generator/ANTLRv3Tree.g:104:4: ^( 'throws' ( ID )+ )
            {
            match(input,80,FOLLOW_80_in_throwsSpec425); 

            match(input, Token.DOWN, null); 
            // back-end/koopa/trees/antlr/filter/generator/ANTLRv3Tree.g:104:15: ( ID )+
            int cnt18=0;
            loop18:
            do {
                int alt18=2;
                int LA18_0 = input.LA(1);

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


                switch (alt18) {
            	case 1 :
            	    // back-end/koopa/trees/antlr/filter/generator/ANTLRv3Tree.g:104:15: ID
            	    {
            	    match(input,ID,FOLLOW_ID_in_throwsSpec427); 

            	    }
            	    break;

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


            match(input, Token.UP, null); 

            }

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