anchor.diff:  
   (* Skipping patternOrMultibinder since it would need retro-engineering the flattening of binders *)
   
  +and is_typ_tuple e = match e.tm with
  +  | Op({idText = "*"}, _) -> true
  +  | _ -> false
  +
   (* is_atomic is true if the binder must be parsed atomically *)
   and p_binder is_atomic b = match b.b with
     | Variable lid -> optional p_aqual b.aqual ^^ p_lident lid
  
positive.code:         | Refine ({b = Annotated (lid', t)}, phi) when lid.idText = lid'.idText ->
            p_refinement b.aqual (p_lident lid) t phi
          | _ ->
            optional p_aqual b.aqual ^^ p_lident lid ^^ colon ^/^ p_tmFormula t
        in
        if is_atomic
        then group (lparen ^^ doc ^^ rparen)
  
negative.code:         infix0 (str op) (p_tmNoEqWith' true p_X left e1) (p_tmNoEqWith' true p_X right e2)
        else
          paren_if_gt curr mine (infix0 (str op) (p_tmNoEqWith' true p_X left e1) (p_tmNoEqWith' true p_X right e2))
    | Op (op, [e1; e2]) when is_operatorInfix34 op ->
        let op = Ident.text_of_id op in
        let left, mine, right = levels op in
        paren_if_gt curr mine (infix0 (str op) (p_tmNoEqWith' false p_X left e1) (p_tmNoEqWith' false p_X right e2))
  