sig   val of_native_substring :     empty:'->     init:(unit -> 'b) ->     on_new_character:('-> '-> 'd) ->     finalize:('-> 'a) ->     read_character_from_native_string:(buf:string ->                                        index:int -> ('c * int) option) ->     string ->     offset:int ->     length:int ->     ('a, [> `out_of_bounds | `wrong_char_at of int ]) Sosa.result   val of_native_string :     (string ->      offset:int ->      length:int ->      [< `Error of [< `out_of_bounds | `wrong_char_at of 'a ] | `Ok of 'b ]) ->     string -> ('b, [> `wrong_char_at of 'a ]) Sosa.result   val to_native_string_knowing_size :     future_size:('-> int) ->     iter:('-> f:('-> unit) -> 'c) ->     write_char_to_native_string:('->                                  buf:string ->                                  index:int ->                                  [< `Error of [< `out_of_bounds ]                                   | `Ok of int ]) ->     '-> string end