public final ANTLRv3TreeFilter.notSet_return notSet() throws RecognitionException {
        ANTLRv3TreeFilter.notSet_return retval = new ANTLRv3TreeFilter.notSet_return();
        retval.start = input.LT(1);

        try {
            // back-end/koopa/trees/antlr/filter/generator/ANTLRv3TreeFilter.g:291:2: ( ^( '~' notTerminal ) | ^( '~' block ) )
            int alt36=2;
            int LA36_0 = input.LA(1);

            if ( (LA36_0==89) ) {
                int LA36_1 = input.LA(2);

                if ( (LA36_1==DOWN) ) {
                    int LA36_2 = input.LA(3);

                    if ( ((LA36_2>=TOKEN_REF && LA36_2<=CHAR_LITERAL)) ) {
                        alt36=1;
                    }
                    else if ( (LA36_2==BLOCK) ) {
                        alt36=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 36, 2, input);

                        throw nvae;
                    }
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 36, 1, input);

                    throw nvae;
                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 36, 0, input);

                throw nvae;
            }
            switch (alt36) {
                case 1 :
                    // back-end/koopa/trees/antlr/filter/generator/ANTLRv3TreeFilter.g:291:4: ^( '~' notTerminal )
                    {
                    match(input,89,FOLLOW_89_in_notSet1473); 

                    match(input, Token.DOWN, null); 
                    pushFollow(FOLLOW_notTerminal_in_notSet1475);
                    notTerminal();

                    state._fsp--;


                    match(input, Token.UP, null); 

                    }
                    break;
                case 2 :
                    // back-end/koopa/trees/antlr/filter/generator/ANTLRv3TreeFilter.g:292:4: ^( '~' block )
                    {
                    match(input,89,FOLLOW_89_in_notSet1482); 

                    match(input, Token.DOWN, null); 
                    pushFollow(FOLLOW_block_in_notSet1484);
                    block();

                    state._fsp--;


                    match(input, Token.UP, null); 

                    }
                    break;

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