public final hqlParser.insertablePropertySpec_return insertablePropertySpec() throws RecognitionException {
		hqlParser.insertablePropertySpec_return retval = new hqlParser.insertablePropertySpec_return();
		retval.start = input.LT(1);

		CommonTree root_0 = null;

		Token OPEN33=null;
		Token COMMA35=null;
		Token CLOSE37=null;
		ParserRuleReturnScope primaryExpression34 =null;
		ParserRuleReturnScope primaryExpression36 =null;

		CommonTree OPEN33_tree=null;
		CommonTree COMMA35_tree=null;
		CommonTree CLOSE37_tree=null;
		RewriteRuleTokenStream stream_OPEN=new RewriteRuleTokenStream(adaptor,"token OPEN");
		RewriteRuleTokenStream stream_CLOSE=new RewriteRuleTokenStream(adaptor,"token CLOSE");
		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
		RewriteRuleSubtreeStream stream_primaryExpression=new RewriteRuleSubtreeStream(adaptor,"rule primaryExpression");

		try {
			// hql.g:225:2: ( OPEN primaryExpression ( COMMA primaryExpression )* CLOSE -> ^( RANGE[\"column-spec\"] ( primaryExpression )* ) )
			// hql.g:225:4: OPEN primaryExpression ( COMMA primaryExpression )* CLOSE
			{
			OPEN33=(Token)match(input,OPEN,FOLLOW_OPEN_in_insertablePropertySpec865);
			stream_OPEN.add(OPEN33);

			pushFollow(FOLLOW_primaryExpression_in_insertablePropertySpec867);
			primaryExpression34=primaryExpression();
			state._fsp--;

			stream_primaryExpression.add(primaryExpression34.getTree());
			// hql.g:225:27: ( COMMA primaryExpression )*
			loop8:
			while (true) {
				int alt8=2;
				int LA8_0 = input.LA(1);
				if ( (LA8_0==COMMA) ) {
					alt8=1;
				}

				switch (alt8) {
				case 1 :
					// hql.g:225:29: COMMA primaryExpression
					{
					COMMA35=(Token)match(input,COMMA,FOLLOW_COMMA_in_insertablePropertySpec871);
					stream_COMMA.add(COMMA35);

					pushFollow(FOLLOW_primaryExpression_in_insertablePropertySpec873);
					primaryExpression36=primaryExpression();
					state._fsp--;

					stream_primaryExpression.add(primaryExpression36.getTree());
					}
					break;

				default :
					break loop8;
				}
			}

			CLOSE37=(Token)match(input,CLOSE,FOLLOW_CLOSE_in_insertablePropertySpec878);
			stream_CLOSE.add(CLOSE37);

			// AST REWRITE
			// elements: primaryExpression
			// token labels:
			// rule labels: retval
			// 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);

			root_0 = (CommonTree)adaptor.nil();
			// 226:3: -> ^( RANGE[\"column-spec\"] ( primaryExpression )* )
			{
				// hql.g:226:6: ^( RANGE[\"column-spec\"] ( primaryExpression )* )
				{
				CommonTree root_1 = (CommonTree)adaptor.nil();
				root_1 = (CommonTree)adaptor.becomeRoot(adaptor.create(RANGE, "column-spec"), root_1);
				// hql.g:226:29: ( primaryExpression )*
				while ( stream_primaryExpression.hasNext() ) {
					adaptor.addChild(root_1, stream_primaryExpression.nextTree());
				}
				stream_primaryExpression.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;

			}

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

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

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
public final hqlParser . insertablePropertySpec_return insertablePropertySpec ( ) throws RecognitionException { hqlParser . insertablePropertySpec_return retval = new hqlParser . insertablePropertySpec_return ( ) ; retval . start = input . LT ( 1 ) ; CommonTree root_0 = null ; Token OPEN33 = null ; Token COMMA35 = null ; Token CLOSE37 = null ; ParserRuleReturnScope primaryExpression34 = null ; ParserRuleReturnScope primaryExpression36 = null ; CommonTree OPEN33_tree = null ; CommonTree COMMA35_tree = null ; CommonTree CLOSE37_tree = null ; RewriteRuleTokenStream stream_OPEN = new RewriteRuleTokenStream ( adaptor , "token OPEN" ) ; RewriteRuleTokenStream stream_CLOSE = new RewriteRuleTokenStream ( adaptor , "token CLOSE" ) ; RewriteRuleTokenStream stream_COMMA = new RewriteRuleTokenStream ( adaptor , "token COMMA" ) ; RewriteRuleSubtreeStream stream_primaryExpression = new RewriteRuleSubtreeStream ( adaptor , "rule primaryExpression" ) ; try { { OPEN33 = ( Token ) match ( input , OPEN , FOLLOW_OPEN_in_insertablePropertySpec865 ) ; stream_OPEN . add ( OPEN33 ) ; pushFollow ( FOLLOW_primaryExpression_in_insertablePropertySpec867 ) ; primaryExpression34 = primaryExpression ( ) ; state . _fsp -- ; stream_primaryExpression . add ( primaryExpression34 . getTree ( ) ) ; loop8 : while ( true ) { int alt8 = 2 ; int LA8_0 = input . LA ( 1 ) ; if ( ( LA8_0 == COMMA ) ) { alt8 = 1 ; } switch ( alt8 ) { case 1 : { COMMA35 = ( Token ) match ( input , COMMA , FOLLOW_COMMA_in_insertablePropertySpec871 ) ; stream_COMMA . add ( COMMA35 ) ; pushFollow ( FOLLOW_primaryExpression_in_insertablePropertySpec873 ) ; primaryExpression36 = primaryExpression ( ) ; state . _fsp -- ; stream_primaryExpression . add ( primaryExpression36 . getTree ( ) ) ; } break ; default : break loop8 ; } } CLOSE37 = ( Token ) match ( input , CLOSE , FOLLOW_CLOSE_in_insertablePropertySpec878 ) ; stream_CLOSE . add ( CLOSE37 ) ; retval . tree = root_0 ; RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream ( adaptor , "rule retval" , retval != null ? retval . getTree ( ) : null ) ; root_0 = ( CommonTree ) adaptor . nil ( ) ; { { CommonTree root_1 = ( CommonTree ) adaptor . nil ( ) ; root_1 = ( CommonTree ) adaptor . becomeRoot ( adaptor . create ( RANGE , "column-spec" ) , root_1 ) ; while ( stream_primaryExpression . hasNext ( ) ) { adaptor . addChild ( root_1 , stream_primaryExpression . nextTree ( ) ) ; } stream_primaryExpression . reset ( ) ; adaptor . addChild ( root_0 , root_1 ) ; } } retval . tree = root_0 ; } retval . stop = input . LT ( - 1 ) ; retval . tree = ( CommonTree ) adaptor . rulePostProcessing ( root_0 ) ; adaptor . setTokenBoundaries ( retval . tree , retval . start , retval . stop ) ; } catch ( RecognitionException re ) { reportError ( re ) ; recover ( input , re ) ; retval . tree = ( CommonTree ) adaptor . errorNode ( input , retval . start , input . LT ( - 1 ) , re ) ; } finally { } return retval ; }
hql.g:224:1: insertablePropertySpec : OPEN primaryExpression ( COMMA primaryExpression )* CLOSE -> ^( RANGE[\"column-spec\"] ( primaryExpression )* ) ;