anchor.diff:      | '(' relation[$clauses] ')'
       ;
   
  -inMarker returns [shared_ptr<cql3::term::raw> marker]
  -    : QMARK { $marker = cql3::expr::as_term_raw(new_in_bind_variables(nullptr)); }
  -    | ':' name=ident { $marker = cql3::expr::as_term_raw(new_in_bind_variables(name)); }
  +inMarker returns [cql3::expr::expression marker]
  +    : QMARK { $marker = new_in_bind_variables(nullptr); }
  +    | ':' name=ident { $marker = new_in_bind_variables(name); }
       ;
   
   tupleOfIdentifiers returns [std::vector<::shared_ptr<cql3::column_identifier::raw>> ids]
  
positive.code:     : K_INSERT K_INTO cf=columnFamilyName
          ('(' c1=cident { column_names.push_back(c1); }  ( ',' cn=cident { column_names.push_back(cn); } )* ')'
              K_VALUES
              '(' v1=term { values.push_back(cql3::expr::as_expression(v1)); } ( ',' vn=term { values.push_back(cql3::expr::as_expression(vn)); } )* ')'
              ( K_IF K_NOT K_EXISTS { if_not_exists = true; } )?
              ( usingClause[attrs] )?
                {
  
negative.code:                                                        if_not_exists);
                }
          | K_JSON
            json_token=jsonValue { json_value = $json_token.value; }
              ( K_DEFAULT K_UNSET { default_unset = true; } | K_DEFAULT K_NULL )?
              ( K_IF K_NOT K_EXISTS { if_not_exists = true; } )?
              ( usingClause[attrs] )?
  