public final EsperParser.forgap_return forgap() throws RecognitionException {
        EsperParser.forgap_return retval = new EsperParser.forgap_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token set50=null;
        EsperParser.factor_return factor51 =null;

        EsperParser.factor_return factor52 =null;


        Object set50_tree=null;

        try {
            // C:\\Users\\Alex\\Dropbox\\EclipseWorkspace\\esper-compiler\\src\\compiler\\Esper.g:64:8: ( ( INCREASING | DECREASING ) ^ factor factor )
            // C:\\Users\\Alex\\Dropbox\\EclipseWorkspace\\esper-compiler\\src\\compiler\\Esper.g:64:10: ( INCREASING | DECREASING ) ^ factor factor
            {
            root_0 = (Object)adaptor.nil();


            set50=(Token)input.LT(1);

            set50=(Token)input.LT(1);

            if ( input.LA(1)==DECREASING||input.LA(1)==INCREASING ) {
                input.consume();
                root_0 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(set50)
                , root_0);
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            pushFollow(FOLLOW_factor_in_forgap654);
            factor51=factor();

            state._fsp--;

            adaptor.addChild(root_0, factor51.getTree());

            pushFollow(FOLLOW_factor_in_forgap656);
            factor52=factor();

            state._fsp--;

            adaptor.addChild(root_0, factor52.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }