public final HiveParser_SelectClauseParser.incrementalArgs_return incrementalArgs() throws RecognitionException {
		HiveParser_SelectClauseParser.incrementalArgs_return retval = new HiveParser_SelectClauseParser.incrementalArgs_return();
		retval.start = input.LT(1);

		CommonTree root_0 = null;

		Token time=null;
		Token interval=null;
		Token numerator=null;
		Token unit1=null;
		Token unit2=null;
		Token KW_CONSTANT79=null;
		Token DIVIDE80=null;
		Token KW_AFTER81=null;
		Token DIVIDE82=null;
		ParserRuleReturnScope bdate =null;
		ParserRuleReturnScope sdate =null;

		CommonTree time_tree=null;
		CommonTree interval_tree=null;
		CommonTree numerator_tree=null;
		CommonTree unit1_tree=null;
		CommonTree unit2_tree=null;
		CommonTree KW_CONSTANT79_tree=null;
		CommonTree DIVIDE80_tree=null;
		CommonTree KW_AFTER81_tree=null;
		CommonTree DIVIDE82_tree=null;
		RewriteRuleTokenStream stream_TimeUnit=new RewriteRuleTokenStream(adaptor,"token TimeUnit");
		RewriteRuleTokenStream stream_KW_DAY=new RewriteRuleTokenStream(adaptor,"token KW_DAY");
		RewriteRuleTokenStream stream_KW_HOUR=new RewriteRuleTokenStream(adaptor,"token KW_HOUR");
		RewriteRuleTokenStream stream_KW_SECOND=new RewriteRuleTokenStream(adaptor,"token KW_SECOND");
		RewriteRuleTokenStream stream_Number=new RewriteRuleTokenStream(adaptor,"token Number");
		RewriteRuleTokenStream stream_KW_AFTER=new RewriteRuleTokenStream(adaptor,"token KW_AFTER");
		RewriteRuleTokenStream stream_DIVIDE=new RewriteRuleTokenStream(adaptor,"token DIVIDE");
		RewriteRuleTokenStream stream_KW_CONSTANT=new RewriteRuleTokenStream(adaptor,"token KW_CONSTANT");
		RewriteRuleTokenStream stream_KW_MINUTE=new RewriteRuleTokenStream(adaptor,"token KW_MINUTE");
		RewriteRuleTokenStream stream_KW_INTERVAL=new RewriteRuleTokenStream(adaptor,"token KW_INTERVAL");
		RewriteRuleSubtreeStream stream_startDate=new RewriteRuleSubtreeStream(adaptor,"rule startDate");
		RewriteRuleSubtreeStream stream_betweenDate=new RewriteRuleSubtreeStream(adaptor,"rule betweenDate");

		 gParent.msgs.push("incremental arguments"); 
		try {
			// SelectClauseParser.g:179:5: (bdate= betweenDate -> ^( TOK_DATE $bdate) | KW_CONSTANT time= TimeUnit (interval= KW_INTERVAL numerator= Number DIVIDE unit1= ( KW_DAY | KW_HOUR | KW_MINUTE | KW_SECOND ) )? -> {interval != null}? ^( TOK_CONSTANT $time TOK_INTERVAL $numerator $unit1) -> ^( TOK_CONSTANT $time) | KW_AFTER sdate= startDate (interval= KW_INTERVAL numerator= Number DIVIDE unit2= ( KW_DAY | KW_HOUR | KW_MINUTE | KW_SECOND ) )? -> {interval != null}? ^( TOK_DATE $sdate TOK_INTERVAL $numerator $unit2) -> ^( TOK_DATE $sdate) )
			int alt28=3;
			switch ( input.LA(1) ) {
			case Number:
				{
				alt28=1;
				}
				break;
			case KW_CONSTANT:
				{
				alt28=2;
				}
				break;
			case KW_AFTER:
				{
				alt28=3;
				}
				break;
			default:
				NoViableAltException nvae =
					new NoViableAltException("", 28, 0, input);
				throw nvae;
			}
			switch (alt28) {
				case 1 :
					// SelectClauseParser.g:180:6: bdate= betweenDate
					{
					pushFollow(FOLLOW_betweenDate_in_incrementalArgs1112);
					bdate=betweenDate();
					state._fsp--;

					stream_betweenDate.add(bdate.getTree());
					// AST REWRITE
					// elements: bdate
					// token labels: 
					// rule labels: retval, bdate
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
					RewriteRuleSubtreeStream stream_bdate=new RewriteRuleSubtreeStream(adaptor,"rule bdate",bdate!=null?bdate.getTree():null);

					root_0 = (CommonTree)adaptor.nil();
					// 181:5: -> ^( TOK_DATE $bdate)
					{
						// SelectClauseParser.g:181:8: ^( TOK_DATE $bdate)
						{
						CommonTree root_1 = (CommonTree)adaptor.nil();
						root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(TOK_DATE, "TOK_DATE"), root_1);
						adaptor.addChild(root_1, stream_bdate.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;

					}
					break;
				case 2 :
					// SelectClauseParser.g:182:7: KW_CONSTANT time= TimeUnit (interval= KW_INTERVAL numerator= Number DIVIDE unit1= ( KW_DAY | KW_HOUR | KW_MINUTE | KW_SECOND ) )?
					{
					KW_CONSTANT79=(Token)match(input,KW_CONSTANT,FOLLOW_KW_CONSTANT_in_incrementalArgs1134);  
					stream_KW_CONSTANT.add(KW_CONSTANT79);

					time=(Token)match(input,TimeUnit,FOLLOW_TimeUnit_in_incrementalArgs1138);  
					stream_TimeUnit.add(time);

					// SelectClauseParser.g:182:33: (interval= KW_INTERVAL numerator= Number DIVIDE unit1= ( KW_DAY | KW_HOUR | KW_MINUTE | KW_SECOND ) )?
					int alt25=2;
					int LA25_0 = input.LA(1);
					if ( (LA25_0==KW_INTERVAL) ) {
						alt25=1;
					}
					switch (alt25) {
						case 1 :
							// SelectClauseParser.g:182:34: interval= KW_INTERVAL numerator= Number DIVIDE unit1= ( KW_DAY | KW_HOUR | KW_MINUTE | KW_SECOND )
							{
							interval=(Token)match(input,KW_INTERVAL,FOLLOW_KW_INTERVAL_in_incrementalArgs1143);  
							stream_KW_INTERVAL.add(interval);

							numerator=(Token)match(input,Number,FOLLOW_Number_in_incrementalArgs1147);  
							stream_Number.add(numerator);

							DIVIDE80=(Token)match(input,DIVIDE,FOLLOW_DIVIDE_in_incrementalArgs1149);  
							stream_DIVIDE.add(DIVIDE80);

							// SelectClauseParser.g:182:85: ( KW_DAY | KW_HOUR | KW_MINUTE | KW_SECOND )
							int alt24=4;
							switch ( input.LA(1) ) {
							case KW_DAY:
								{
								alt24=1;
								}
								break;
							case KW_HOUR:
								{
								alt24=2;
								}
								break;
							case KW_MINUTE:
								{
								alt24=3;
								}
								break;
							case KW_SECOND:
								{
								alt24=4;
								}
								break;
							default:
								NoViableAltException nvae =
									new NoViableAltException("", 24, 0, input);
								throw nvae;
							}
							switch (alt24) {
								case 1 :
									// SelectClauseParser.g:182:86: KW_DAY
									{
									unit1=(Token)match(input,KW_DAY,FOLLOW_KW_DAY_in_incrementalArgs1154);  
									stream_KW_DAY.add(unit1);

									}
									break;
								case 2 :
									// SelectClauseParser.g:182:93: KW_HOUR
									{
									unit1=(Token)match(input,KW_HOUR,FOLLOW_KW_HOUR_in_incrementalArgs1156);  
									stream_KW_HOUR.add(unit1);

									}
									break;
								case 3 :
									// SelectClauseParser.g:182:101: KW_MINUTE
									{
									unit1=(Token)match(input,KW_MINUTE,FOLLOW_KW_MINUTE_in_incrementalArgs1158);  
									stream_KW_MINUTE.add(unit1);

									}
									break;
								case 4 :
									// SelectClauseParser.g:182:111: KW_SECOND
									{
									unit1=(Token)match(input,KW_SECOND,FOLLOW_KW_SECOND_in_incrementalArgs1160);  
									stream_KW_SECOND.add(unit1);

									}
									break;

							}

							}
							break;

					}

					// AST REWRITE
					// elements: time, numerator, unit1, time
					// token labels: time, unit1, numerator
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					retval.tree = root_0;
					RewriteRuleTokenStream stream_time=new RewriteRuleTokenStream(adaptor,"token time",time);
					RewriteRuleTokenStream stream_unit1=new RewriteRuleTokenStream(adaptor,"token unit1",unit1);
					RewriteRuleTokenStream stream_numerator=new RewriteRuleTokenStream(adaptor,"token numerator",numerator);
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (CommonTree)adaptor.nil();
					// 183:6: -> {interval != null}? ^( TOK_CONSTANT $time TOK_INTERVAL $numerator $unit1)
					if (interval != null) {
						// SelectClauseParser.g:183:27: ^( TOK_CONSTANT $time TOK_INTERVAL $numerator $unit1)
						{
						CommonTree root_1 = (CommonTree)adaptor.nil();
						root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(TOK_CONSTANT, "TOK_CONSTANT"), root_1);
						adaptor.addChild(root_1, stream_time.nextNode());
						adaptor.addChild(root_1, (CommonTree)adaptor.create(TOK_INTERVAL, "TOK_INTERVAL"));
						adaptor.addChild(root_1, stream_numerator.nextNode());
						adaptor.addChild(root_1, stream_unit1.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}

					else // 184:6: -> ^( TOK_CONSTANT $time)
					{
						// SelectClauseParser.g:184:8: ^( TOK_CONSTANT $time)
						{
						CommonTree root_1 = (CommonTree)adaptor.nil();
						root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(TOK_CONSTANT, "TOK_CONSTANT"), root_1);
						adaptor.addChild(root_1, stream_time.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;

					}
					break;
				case 3 :
					// SelectClauseParser.g:185:7: KW_AFTER sdate= startDate (interval= KW_INTERVAL numerator= Number DIVIDE unit2= ( KW_DAY | KW_HOUR | KW_MINUTE | KW_SECOND ) )?
					{
					KW_AFTER81=(Token)match(input,KW_AFTER,FOLLOW_KW_AFTER_in_incrementalArgs1214);  
					stream_KW_AFTER.add(KW_AFTER81);

					pushFollow(FOLLOW_startDate_in_incrementalArgs1218);
					sdate=startDate();
					state._fsp--;

					stream_startDate.add(sdate.getTree());
					// SelectClauseParser.g:185:32: (interval= KW_INTERVAL numerator= Number DIVIDE unit2= ( KW_DAY | KW_HOUR | KW_MINUTE | KW_SECOND ) )?
					int alt27=2;
					int LA27_0 = input.LA(1);
					if ( (LA27_0==KW_INTERVAL) ) {
						alt27=1;
					}
					switch (alt27) {
						case 1 :
							// SelectClauseParser.g:185:33: interval= KW_INTERVAL numerator= Number DIVIDE unit2= ( KW_DAY | KW_HOUR | KW_MINUTE | KW_SECOND )
							{
							interval=(Token)match(input,KW_INTERVAL,FOLLOW_KW_INTERVAL_in_incrementalArgs1223);  
							stream_KW_INTERVAL.add(interval);

							numerator=(Token)match(input,Number,FOLLOW_Number_in_incrementalArgs1227);  
							stream_Number.add(numerator);

							DIVIDE82=(Token)match(input,DIVIDE,FOLLOW_DIVIDE_in_incrementalArgs1229);  
							stream_DIVIDE.add(DIVIDE82);

							// SelectClauseParser.g:185:84: ( KW_DAY | KW_HOUR | KW_MINUTE | KW_SECOND )
							int alt26=4;
							switch ( input.LA(1) ) {
							case KW_DAY:
								{
								alt26=1;
								}
								break;
							case KW_HOUR:
								{
								alt26=2;
								}
								break;
							case KW_MINUTE:
								{
								alt26=3;
								}
								break;
							case KW_SECOND:
								{
								alt26=4;
								}
								break;
							default:
								NoViableAltException nvae =
									new NoViableAltException("", 26, 0, input);
								throw nvae;
							}
							switch (alt26) {
								case 1 :
									// SelectClauseParser.g:185:85: KW_DAY
									{
									unit2=(Token)match(input,KW_DAY,FOLLOW_KW_DAY_in_incrementalArgs1234);  
									stream_KW_DAY.add(unit2);

									}
									break;
								case 2 :
									// SelectClauseParser.g:185:92: KW_HOUR
									{
									unit2=(Token)match(input,KW_HOUR,FOLLOW_KW_HOUR_in_incrementalArgs1236);  
									stream_KW_HOUR.add(unit2);

									}
									break;
								case 3 :
									// SelectClauseParser.g:185:100: KW_MINUTE
									{
									unit2=(Token)match(input,KW_MINUTE,FOLLOW_KW_MINUTE_in_incrementalArgs1238);  
									stream_KW_MINUTE.add(unit2);

									}
									break;
								case 4 :
									// SelectClauseParser.g:185:110: KW_SECOND
									{
									unit2=(Token)match(input,KW_SECOND,FOLLOW_KW_SECOND_in_incrementalArgs1240);  
									stream_KW_SECOND.add(unit2);

									}
									break;

							}

							}
							break;

					}

					// AST REWRITE
					// elements: sdate, numerator, sdate, unit2
					// token labels: numerator, unit2
					// rule labels: retval, sdate
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					retval.tree = root_0;
					RewriteRuleTokenStream stream_numerator=new RewriteRuleTokenStream(adaptor,"token numerator",numerator);
					RewriteRuleTokenStream stream_unit2=new RewriteRuleTokenStream(adaptor,"token unit2",unit2);
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
					RewriteRuleSubtreeStream stream_sdate=new RewriteRuleSubtreeStream(adaptor,"rule sdate",sdate!=null?sdate.getTree():null);

					root_0 = (CommonTree)adaptor.nil();
					// 186:6: -> {interval != null}? ^( TOK_DATE $sdate TOK_INTERVAL $numerator $unit2)
					if (interval != null) {
						// SelectClauseParser.g:186:27: ^( TOK_DATE $sdate TOK_INTERVAL $numerator $unit2)
						{
						CommonTree root_1 = (CommonTree)adaptor.nil();
						root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(TOK_DATE, "TOK_DATE"), root_1);
						adaptor.addChild(root_1, stream_sdate.nextTree());
						adaptor.addChild(root_1, (CommonTree)adaptor.create(TOK_INTERVAL, "TOK_INTERVAL"));
						adaptor.addChild(root_1, stream_numerator.nextNode());
						adaptor.addChild(root_1, stream_unit2.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}

					else // 187:6: -> ^( TOK_DATE $sdate)
					{
						// SelectClauseParser.g:187:8: ^( TOK_DATE $sdate)
						{
						CommonTree root_1 = (CommonTree)adaptor.nil();
						root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(TOK_DATE, "TOK_DATE"), root_1);
						adaptor.addChild(root_1, stream_sdate.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;

					}
					break;

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

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

			 gParent.msgs.pop(); 
		}

		catch (RecognitionException e) {
		  throw e;
		}

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