anchor.diff:          )
       ;
   
  -#if 0
  -
  -properties[PropertyDefinitions props]
  +properties[::shared_ptr<cql3::statements::property_definitions> props]
       : property[props] (K_AND property[props])*
       ;
   
  -property[PropertyDefinitions props]
  -    : k=ident '=' (simple=propertyValue { try { $props.addProperty(k.toString(), simple); } catch (SyntaxException e) { addRecognitionError(e.getMessage()); } }
  -                  |   map=mapLiteral    { try { $props.addProperty(k.toString(), convertPropertyMap(map)); } catch (SyntaxException e) { addRecognitionError(e.getMessage()); } })
  -    ;
  -
  -propertyValue returns [String str]
  -    : c=constant           { $str = c.getRawText(); }
  +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()); } }
  +                  |   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]
  +    : c=constant           { $str = c->get_raw_text(); }
       | u=unreserved_keyword { $str = u; }
       ;
  -#endif
   
   relationType returns [const cql3::operator_type* op = nullptr]
       : '='  { $op = &cql3::operator_type::EQ; }
  
positive.code:         listener->syntax_error(*this, msg);
      }
  
  #if 0
      public Map<String, String> convertPropertyMap(Maps.Literal map)
      {
          if (map == null || map.entries == null || map.entries.isEmpty())
              return Collections.<String, String>emptyMap();
  
  
negative.code: }
  
  @parser::includes {
  #include "cql3/statements/property_definitions.hh"
  #include "cql3/statements/select_statement.hh"
  #include "cql3/statements/update_statement.hh"
  #include "cql3/statements/use_statement.hh"
  