code: public final void whereClause(QueryMeta qMeta) throws RecognitionException {
  		List<Interval> intls =null;
  		Filter f =null;
  
  		try {
  			// druidG.g:300:2: (intls= intervalClause ( WS AND WS f= grandFilter )? )
  			// druidG.g:300:3: intls= intervalClause ( WS AND WS f= grandFilter )?
  			{
  			pushFollow(FOLLOW_intervalClause_in_whereClause2008);
  			intls=intervalClause();
  			state._fsp--;
  
  			qMeta.intervals.addAll(intls);
  			// druidG.g:300:57: ( WS AND WS f= grandFilter )?
  			int alt131=2;
  			int LA131_0 = input.LA(1);
  			if ( (LA131_0==WS) ) {
  				int LA131_1 = input.LA(2);
  				if ( (LA131_1==AND) ) {
  					alt131=1;
  				}
  			}
  			switch (alt131) {
  				case 1 :
  					// druidG.g:300:58: WS AND WS f= grandFilter
  					{
  					match(input,WS,FOLLOW_WS_in_whereClause2013); 
  					match(input,AND,FOLLOW_AND_in_whereClause2015); 
  					match(input,WS,FOLLOW_WS_in_whereClause2017); 
  					pushFollow(FOLLOW_grandFilter_in_whereClause2021);
  					f=grandFilter();
  					state._fsp--;
  
  					qMeta.filter = f;
  					}
  					break;
  
  			}
  
  			}
  
  		}
  		catch (RecognitionException re) {
  			reportError(re);
  			recover(input,re);
  		}
  		finally {
  			// do for sure before leaving
  		}
  	}
docs: druidG.g:299:1: whereClause[QueryMeta qMeta] : intls= intervalClause ( WS AND WS f= grandFilter )? ;