anchor.diff:      : '(' t1=tupleLiteral { $literals.emplace_back(std::move(t1)); } (',' ti=tupleLiteral { $literals.emplace_back(std::move(ti)); })* ')'
       ;
   
  -markerForTuple returns [expression marker]
  -    : QMARK { $marker = new_bind_variables(nullptr); }
  -    | ':' name=ident { $marker = new_bind_variables(name); }
  -    ;
  -
   tupleOfMarkersForTuples returns [std::vector<expression> markers]
  -    : '(' m1=markerForTuple { $markers.emplace_back(std::move(m1)); } (',' mi=markerForTuple { $markers.emplace_back(std::move(mi)); })* ')'
  -    ;
  -
  -inMarkerForTuple returns [expression marker]
  -    : QMARK { $marker = new_bind_variables(nullptr); }
  -    | ':' name=ident { $marker = new_bind_variables(name); }
  +    : '(' m1=marker { $markers.emplace_back(std::move(m1)); } (',' mi=marker { $markers.emplace_back(std::move(mi)); })* ')'
       ;
   
   // The comparator_type rule is used for users' queries (internal=false)
  
positive.code: jsonValue returns [expression value]
      :
      | s=STRING_LITERAL { $value = untyped_constant{untyped_constant::string, $s.text}; }
      | ':' id=ident     { $value = new_bind_variables(id); }
      | QMARK            { $value = new_bind_variables(shared_ptr<cql3::column_identifier>{}); }
      ;
  
  /**
  
negative.code:                     }
                    );
                }
            | tupleInMarker=marker /* (a, b, c) IN ? */
                {
                  $e = binary_operator(
                      ids,
  