anchor.diff:  binary_skip_bytes(<<C, RestB/binary>>, L, N, Acc) ->
       binary_skip_bytes(RestB, L, 1 + N, [C | Acc]).
   
  -%% @spec invalid_utf8_indexes(B::binary()) -> [integer()]
  +-spec invalid_utf8_indexes(binary()) -> [non_neg_integer()].
   %% @doc Return the 0-based indexes in B that are not valid UTF-8.
   invalid_utf8_indexes(B) ->
       invalid_utf8_indexes(B, 0, []).
   
   %% @private.
  +-spec invalid_utf8_indexes(binary(), non_neg_integer(), [non_neg_integer()]) -> [non_neg_integer()].
   invalid_utf8_indexes(<<C, Rest/binary>>, N, Acc) when C < 16#80 ->
       %% U+0000 - U+007F - 7 bits
       invalid_utf8_indexes(Rest, 1 + N, Acc);
  
positive.code: %%      invalid bytes.
  
  -module(mochiutf8).
  -export([valid_utf8_bytes/1, codepoint_to_bytes/1]).
  
  %% External API
  
  %% @spec codepoint_to_binary(integer()) -> binary()
  %% @doc Convert a unicode codepoint to UTF-8 bytes.
  codepoint_to_bytes(C) when (C >= 16#00 andalso C =< 16#7f) ->
      %% U+0000 - U+007F - 7 bits
  
negative.code:     binary_skip_bytes(B, L, 0, []).
  
  %% @private
  -spec binary_skip_bytes(binary(), [non_neg_integer()], non_neg_integer(), iolist()) -> binary().
  binary_skip_bytes(B, [], _N, Acc) ->
      iolist_to_binary(lists:reverse([B | Acc]));
  binary_skip_bytes(<<_, RestB/binary>>, [N | RestL], N, Acc) ->
  