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

        try {
            // back-end/koopa/trees/antlr/filter/generator/ANTLRv3TreeFilter.g:360:2: ( ^( CHAR_RANGE CHAR_LITERAL CHAR_LITERAL ) )
            // back-end/koopa/trees/antlr/filter/generator/ANTLRv3TreeFilter.g:360:4: ^( CHAR_RANGE CHAR_LITERAL CHAR_LITERAL )
            {
            match(input,CHAR_RANGE,FOLLOW_CHAR_RANGE_in_range1865); 

            match(input, Token.DOWN, null); 
            match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_range1867); 
            match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_range1869); 

            match(input, Token.UP, null); 

            }

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