anchor.diff:                  [
                       fun should_collate_fwd/1,
                       fun should_collate_rev/1,
  -                    fun should_collate_range/1,
  +                    fun should_collate_range_/1,
                       fun should_collate_with_inclusive_end_fwd/1,
                       fun should_collate_with_inclusive_end_rev/1,
                       fun should_collate_without_inclusive_end_fwd/1,
  
positive.code:     Expect = [{meta, [{total, length(?VALUES)}, {offset, 0}]}] ++ lists:reverse(rows()),
      ?_assertEquiv(Expect, Results).
  
  should_collate_range(Db) ->
      ?_assertNot(
          begin
              {_, Error} = lists:foldl(fun(V, {Count, Error}) ->
                  {ok, Results} = run_query(Db, [{start_key, V}, {end_key, V}]),
                  Id = list_to_binary(integer_to_list(Count)),
                  Expect = [
                      {meta, [{total, length(?VALUES)}, {offset, Count}]},
                      {row, [{id, Id}, {key, V}, {value, 0}]}
                  ],
                  case Results == Expect of
                      true -> {Count+1, Error};
                      _ -> {Count+1, true}
                  end
              end, {0, false}, ?VALUES),
              Error
          end).
  
  should_collate_with_inclusive_end_fwd(Db) ->
      Opts = [{end_key, <<"b">>}, {inclusive_end, true}],
  
negative.code:     <<"B">>,
      <<"ba">>,
      <<"bb">>,
  
      % U+200B is a zero-width space, which will be ignored by ICU but will cause
      % the raw collator to treat these as three distinct keys
      <<"c">>,
      unicode:characters_to_binary([$c, 16#200B]),
      unicode:characters_to_binary([$c, 16#200B, 16#200B]),
  
      [<<"a">>],
      [<<"b">>],
  