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

        try {
            // back-end/koopa/trees/antlr/filter/generator/ANTLRv3TreeFilter.g:126:2: ( 'protected' | 'public' | 'private' | 'fragment' )
            // back-end/koopa/trees/antlr/filter/generator/ANTLRv3TreeFilter.g:
            {
            if ( input.LA(1)==FRAGMENT||(input.LA(1)>=75 && input.LA(1)<=77) ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

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