   a group does not fit, all strict breaks are treated as breaks. The flex
   breaks however are re-evaluated and may still be rendered as spaces.
 
-  This implementation also adds `force_break/1` and `cancel_break/1` which
+  This implementation also adds `force_break/1` and `cancel_break/2` which
   give more control over the document fitting.
 
   Custom pretty printers can be implemented using the documents returned

  @tail_separator " |"
  @newline "\n"
  @break :flex

  # Functional interface to "doc" records


  defp format(w, k, [{i, m, doc_color(x, c)} | t]),     do: [ansi(c) | format(w, k, [{i, m, x} | t])]
  defp format(w, k, [{_, _, doc_string(s, l)} | t]),    do: [s | format(w, k + l, t)]
  defp format(w, k, [{_, _, s} | t]) when is_binary(s), do: [s | format(w, k + byte_size(s), t)]
  defp format(w, k, [{i, m, doc_force(x)} | t]),        do: format(w, k, [{i, m, x} | t])
  defp format(w, k, [{i, m, doc_cancel(x, _)} | t]),    do: format(w, k, [{i, m, x} | t])

  # Flex breaks are not conditional to the mode
  defp format(w, k, [{i, _, doc_break(s, :flex)} | t]) do
