anchor.diff:    | QForall (bs, trigger, e1)
     | QExists (bs, trigger, e1) ->
         let binders_doc = p_binders true bs in
  -      let term_doc = p_noSeqTerm ps pb e1 in
  +      let term_doc = p_noSeqTermAndComment ps pb e1 in
         //VD: We could dispense with this pattern matching if we removed trailing whitespace after the fact
         (match trigger with
          | [] ->
  
positive.code:     | Op _ -> false
      | _ -> true
      in
    let phi = p_noSeqTerm false false phi in
    (* If t is atomic, don't put a space between t and phi
     * If t can be displayed on a single line, tightly surround it with braces,
     * otherwise pad with a space. *)
  
negative.code:        * semicolons. We forward our caller's [ps] parameter, though, because
         * something in [e2] may swallow. *)
        if is_unit e3
        then group ((str "if" ^/+^ p_noSeqTermAndComment false false e1) ^/^ (str "then" ^/+^ p_noSeqTermAndComment ps pb e2))
        else
             let e2_doc =
                match e2.tm with
                    (* Not protecting, since an ELSE follows. *)
                    | If (_,_,e3) when is_unit e3 ->
                        (* Dangling else *)
                        soft_parens_with_nesting (p_noSeqTermAndComment false false e2)
                    | _ -> p_noSeqTermAndComment false false e2
            in group (
                (str "if" ^/+^ p_noSeqTermAndComment false false e1) ^/^
                (str "then" ^/+^ e2_doc) ^/^
                (str "else" ^/+^ p_noSeqTermAndComment ps pb e3))
    | TryWith(e, branches) ->
        paren_if (ps || pb) (
            group (prefix2 (str "try") (p_noSeqTermAndComment false false e) ^/^ str "with" ^/^
                separate_map_last hardline p_patternBranch branches))
    | Match (e, branches) ->
        paren_if (ps || pb) (
          group (surround 2 1 (str "match") (p_noSeqTermAndComment false false e) (str "with") ^/^
          separate_map_last hardline p_patternBranch branches)
        )
    | LetOpen (uid, e) ->
  