anchor.diff:  import com.metamx.druid.query.filter.*;
   import com.metamx.druid.query.dimension.*;
   import com.metamx.druid.*;
  +
   import com.google.common.base.*;
   import com.google.common.collect.Lists;
  +import org.joda.time.*;
  +
  +import java.text.*;
   import java.util.*;
  -import org.joda.time.*;
   }
   
   @parser::members {
  
positive.code:     ;
  
  constant returns [ConstantPostAggregator c]
      : value=DOUBLE  { double v = Double.parseDouble($value.text); $c = new ConstantPostAggregator(Double.toString(v), v); }
      ;
  
  /* time filters must be top level filters */
  
negative.code: 
  timeFilter returns [org.joda.time.Interval interval, QueryGranularity granularity]
      : 'timestamp' 'between' s=timestamp AND e=timestamp {
          $interval = new org.joda.time.Interval($s.t, $e.t);
      }
      ;
  
  