anchor.diff:          group (p_lb None lb (i = l - 1))
       ) lbs in
       let lbs_doc = group (separate break1 lbs_docs) in
  -    paren_if ps (group (lbs_doc ^^ hardline ^^ p_term false pb e))
  +    paren_if ps (group (lbs_doc ^^ hardline ^^ p_term false pb e)) //OK
   
     | Abs([{pat=PatVar(x, typ_opt)}], {tm=Match(maybe_x, branches)}) when matches_var maybe_x x ->
       paren_if (ps || pb) (
  
positive.code:   | _ ->
        group (p_noSeqTermAndComment ps pb e)
  
  and p_term_sep (ps:bool) (pb:bool) (e:term) flag = match e.tm with
    | Seq (e1, e2) ->
        (* Don't swallow semicolons on the left-hand side of a semicolon! Note:
         * the `false` for pb is kind of useless because there is no construct
  
negative.code:         hang 2 (bar ^^ space ^^ (group ((p_tuplePattern p) ^/^ (str "when"))) ^/^
           (flow break1 [(p_tmFormula f); rarrow]))
      in
      let comm, doc = p_term_sep false pb e in
      // we need to be careful here because an inlined comment on the last branch could eat
      // any following parenthesis; to prevent this, we never inline a comment on the last branch
      // (Nit:  we could float the decision even higher to `if_paren` if we really wanted to avoid this
      // and push the paren on a new line instead but that would add even more complexity)
      if pb then
        inline_comment_or_above comm (branch ^/+^ doc) empty
      else
        comm ^^ (if comm <> empty then hardline else empty) ^^ (branch ^/+^ doc)
    in
    match pat.pat with
    | PatOr pats ->
  