anchor.diff:  #include "cql3/statements/update_statement.hh"
   #include "cql3/statements/delete_statement.hh"
   #include "cql3/statements/use_statement.hh"
  +#include "cql3/statements/batch_statement.hh"
   #include "cql3/statements/ks_prop_defs.hh"
   #include "cql3/selection/raw_selector.hh"
   #include "cql3/constants.hh"
  
positive.code:     : st1= selectStatement             { $stmt = st1; }
      | st2= insertStatement             { $stmt = st2; }
      | st3= updateStatement             { $stmt = st3; }
  #if 0
      | st4= batchStatement              { $stmt = st4; }
  #endif
      | st5= deleteStatement             { $stmt = st5; }
      | st6= useStatement                { $stmt = st6; }
  #if 0
  
negative.code:  *   ...
   * APPLY BATCH
   */
  batchStatement returns [shared_ptr<cql3::statements::batch_statement::parsed> expr]
      @init {
          using btype = cql3::statements::batch_statement::type; 
          btype type = btype::LOGGED;
          std::vector<shared_ptr<cql3::statements::modification_statement::parsed>> statements;
          auto attrs = make_shared<cql3::attributes::raw>();
      }
      : K_BEGIN
        ( K_UNLOGGED { type = btype::UNLOGGED; } | K_COUNTER { type = btype::COUNTER; } )?
        K_BATCH ( usingClause[attrs] )?
            ( s=batchStatementObjective ';'? { statements.push_back(std::move(s)); } )*
        K_APPLY K_BATCH
        {
            $expr = ::make_shared<cql3::statements::batch_statement::parsed>(type, std::move(attrs), std::move(statements));
        }
      ;
  
  batchStatementObjective returns [shared_ptr<cql3::statements::modification_statement::parsed> statement]
      : i=insertStatement  { $statement = i; }
      | u=updateStatement  { $statement = u; }
      | d=deleteStatement  { $statement = d; }
      ;
  
  #if 0
  createAggregateStatement returns [CreateAggregateStatement expr]
      @init {
          boolean orReplace = false;
  