anchor.diff:        then empty
         else str "val" ^^ space
       in
  -    (decl_keyword ^^ p_ident id ^^ space ^^ colon) ^/+^ p_typ false false t
  +    decl_keyword ^^ p_ident id ^^ space ^^ group (colon ^^ space ^^ (p_typ false false t))
     | Exception(uid, t_opt) ->
       str "exception" ^^ space ^^ p_uident uid ^^ optional (fun t -> break1 ^^ str "of" ^/+^ p_typ false false t) t_opt
     | NewEffect(ne) ->
  
positive.code:       soft_parens_with_nesting (p_refinement None underscore t phi)
      | _ ->
          (* TODO implement p_simpleArrow *)
          soft_parens_with_nesting (p_tuplePattern pat ^^ break_ 0 ^^ colon ^^ p_tmEqNoRefinement t)
      end
    | PatList pats ->
      surround 2 0 lbracket (separate_break_map semi p_tuplePattern pats) rbracket
  
negative.code:         | Refine ({b = Annotated (lid', t)}, phi) when lid.idText = lid'.idText ->
            p_refinement b.aqual (p_ident lid) t phi
          | _ ->
            optional p_aqual b.aqual ^^ p_lident lid ^^ colon ^/^ p_tmFormula t
        in
        if is_atomic
        then group (lparen ^^ doc ^^ rparen)
  