anchor.diff:  and p_attributes attrs =
       match attrs with
       | [] -> empty
  -    | _ -> flow empty [(lbracket ^^ str "@ ");
  -                       (align (flow break1 (List.map p_atomicTerm attrs)));
  -                       rbracket] ^^ hardline
  +    | _ -> lbracket ^^ str "@ " ^^
  +             align ((flow break1 (List.map p_atomicTerm attrs)) ^^ rbracket) ^^ hardline
   
   and p_fsdoc (doc, kwd_args) =
     let kwd_args_doc =
  
positive.code:   group (comments ^^ printed_e)
  
  (* [place_comments_until_pos k lbegin pos doc] appends to doc all the comments present in *)
  (* [comment_stack] whose range is before pos and separate each comments by as much lines *)
  (* as indicated by the range information (at least [k]) using [lbegin] as the last line of *)
  (* [doc] in the original document. Between 2 comments [k] is set to [1] *)
  let rec place_comments_until_pos k lbegin pos_end doc =
  
negative.code:   | (comment, crange) :: cs when range_before_pos crange pos_end ->
      comment_stack := cs ;
      let lnum = max k (line_of_pos (start_of_range crange) - lbegin) in
      let lnum = min 2 lnum in
      let doc = doc ^^ repeat lnum hardline ^^ str comment in
      place_comments_until_pos 1 (line_of_pos (end_of_range crange)) pos_end doc
    | _ ->
      if doc = empty then
        empty
      else
        let lnum = max 1 (line_of_pos pos_end - lbegin) in
        let lnum = min 2 lnum in
        doc ^^ repeat lnum hardline
  
  (* [separate_map_with_comments prefix sep f xs extract_range] is the document *)
  (*                                                                            *)
  