anchor.diff:  (*   (f sep xs[n]) *)
   let separate_map_with_comments_kw prefix sep f xs extract_range =
     let fold_fun (last_line, doc) x =
  -    let r, c = extract_range x in
  -    let doc = place_comments_until_pos 1 last_line (start_of_range r) c doc in
  +    let r, end_c, fsdoc_c = extract_range x in
  +    let doc = place_comments_until_pos 1 last_line (start_of_range r) end_c fsdoc_c doc in
       line_of_pos (end_of_range r), doc ^^ f sep x
     in
     let x, xs = List.hd xs, List.tl xs in
     let init =
  -    let r, c = extract_range x in
  +    let r, _, _ = extract_range x in
       line_of_pos (end_of_range r), f prefix x
     in
     snd (List.fold_left fold_fun init xs)
  
positive.code:         | _ -> d :: ds, d.drange
        in
        comment_stack := comments ;
        let initial_comment = place_comments_until_pos 0 1 (start_of_range first_range) 0 empty in
    let doc = separate_map_with_comments empty empty decl_to_document decls extract_decl_range in
    let comments = !comment_stack in
    comment_stack := [] ;
  
negative.code:       let lnum = line_of_pos pos_end - lbegin in
        let lnum = if lnum >= 2 then lnum - end_correction else lnum in //make up for incorrect range information in declarations with qualifiers
        let lnum = min 2 lnum in //puts a limit of at most one empty line between decls
        let lnum = if lnum >= 2 then lnum - fsdoc_correction else lnum in
        doc ^^ repeat lnum hardline //^^ (str <| string_of_int lbegin) ^^ (str "*") ^^ (str <| string_of_int (line_of_pos pos_end)) ^^ (str "+") ^^ (str <| string_of_int (end_correction)) ^^ (str "+") ^^ (str <| string_of_int (fsdoc_correction))
  
  (* [separate_map_with_comments prefix sep f xs extract_range] is the document *)
  (*                                                                            *)
  