let find_next line diffs =
  match diffs with
    [] -> None
  | h :: q ->
      let rec iter acc_l = function
          [] -> h, (range_of_index2_of_diff h)
        | d :: q ->
            if (first_of_diff d) > line - acc_l then
              d, acc_l + (range_of_index2_of_diff d)
            else
              let sup =
                match  d with
                  Add (_,_,_) -> 0
                | Delete (i2,i,_)
                | Change (i2,_,i,_) -> (range_of_index i2)
              in
              iter (acc_l + sup) q
      in
      let (diff, decal) = iter 0 diffs in
      Some ((first_of_diff diff) + decal - 1)