anchor.diff:      group(str "module" ^^ space ^^ p_quident uid)
     | Tycon(true, [TyconAbbrev(uid, tpars, None, t), None]) ->
       let effect_prefix_doc = str "effect" ^^ space ^^ p_uident uid in
  -    surround 2 1 effect_prefix_doc (p_typars tpars) equals ^/+^ p_typ false false t
  +    surround 2 1 effect_prefix_doc (p_typars tpars []) equals ^/+^ p_typ false false t
     | Tycon(false, tcdefs) ->
       (* TODO : needs some range information to be able to use this *)
       (* separate_map_with_comments (str "type" ^^ space) (str "and" ^^ space) p_fsdocTypeDeclPairs tcdefs *)
  -    precede_break_separate_map (str "type") (str "and") p_fsdocTypeDeclPairs tcdefs
  +    (p_fsdocTypeDeclPairs (str "type") (List.hd tcdefs)) ^^
  +      (concat_map (fun x -> break1 ^^ p_fsdocTypeDeclPairs (str "and") x) <| List.tl tcdefs)
     | TopLevelLet(q, lbs) ->
       let let_doc = str "let" ^^ p_letqualifier q ^^ space in
       separate_map_with_comments let_doc (str "and" ^^ space) p_letbinding lbs
  
positive.code:     if List.length l < 10
      then separate_map_last sep f l
      else flow_map_last sep f l
  
  let soft_surround_separate_map n b void_ opening sep closing f xs =
    if xs = []
  
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 ^^ break_ 1 ^^ p_tmFormula t
        in
        if is_atomic
        then group (lparen ^^ doc ^^ rparen)
  