anchor.diff:              | '('     id1=cident { column_changes.emplace_back(alter_table_statement::column_change{id1}); }
                    (',' idn=cident { column_changes.emplace_back(alter_table_statement::column_change{idn}); } )* ')'
               )
  -          | K_WITH  properties[props]                 { type = alter_table_statement::type::opts; }
  +          | K_WITH  properties[*props]                 { type = alter_table_statement::type::opts; }
             | K_RENAME                                  { type = alter_table_statement::type::rename; }
                  id1=cident K_TO toId1=cident { renames.emplace_back(id1, toId1); }
                  ( K_AND idn=cident K_TO toIdn=cident { renames.emplace_back(idn, toIdn); } )*
  
positive.code:         )
      ;
  
  properties[::shared_ptr<cql3::statements::property_definitions> props]
      : property[props] (K_AND property[props])*
      ;
  
  property[::shared_ptr<cql3::statements::property_definitions> props]
      : k=ident '=' simple=propertyValue { try { $props->add_property(k->to_string(), simple); } catch (exceptions::syntax_exception e) { add_recognition_error(e.what()); } }
      | k=ident '=' map=mapLiteral { try { $props->add_property(k->to_string(), convert_property_map(map)); } catch (exceptions::syntax_exception e) { add_recognition_error(e.what()); } }
      ;
  
  propertyValue returns [sstring str]
  
negative.code:         auto attrs = make_shared<cql3::statements::ks_prop_defs>();
      }
      : K_ALTER K_KEYSPACE ks=keyspaceName
          K_WITH properties[*attrs] { $expr = ::make_shared<cql3::statements::alter_keyspace_statement>(ks, attrs); }
      ;
  
  /**
  