anchor.diff:  
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   
  +decode_binary(_Config) ->
  +    test(decode, encoded_binary()).
  +
  +decode_binary_to_string(_Config) ->
  +    test(decode_to_string, encoded_binary()).
  +
  +decode_list(_Config) ->
  +    test(decode, encoded_list()).
  +
  +decode_list_to_string(_Config) ->
  +    test(decode_to_string, encoded_list()).
  +
  +encode_binary(_Config) ->
  +    test(encode, binary()).
  +
  +encode_binary_to_string(_Config) ->
  +    test(encode_to_string, binary()).
  +
  +encode_list(_Config) ->
  +    test(encode, list()).
  +
  +encode_list_to_string(_Config) ->
  +    test(encode_to_string, list()).
  +
  +mime_binary_decode(_Config) ->
  +    test(mime_decode, encoded_binary()).
  +
  +mime_binary_decode_to_string(_Config) ->
  +    test(mime_decode_to_string, encoded_binary()).
  +
  +mime_list_decode(_Config) ->
  +    test(mime_decode, encoded_list()).
  +
  +mime_list_decode_to_string(_Config) ->
  +    test(mime_decode_to_string, encoded_list()).
  +
  +-define(SIZE, 10000).
  +-define(N, 1000).
  +
  +encoded_binary() ->
  +    list_to_binary(encoded_list()).
  +
  +encoded_list() ->
  +    L = random_byte_list(round(?SIZE*0.75)),
  +    base64:encode_to_string(L).
  +
  +binary() ->
  +    list_to_binary(list()).
  +
  +list() ->
  +    random_byte_list(?SIZE).
  +
  +test(Func, Data) ->
  +    F = fun() -> loop(?N, Func, Data) end,
  +    {Time, ok} = timer:tc(fun() -> lspawn(F) end),
  +    report_base64(Time).
  +
  +loop(0, _F, _D) -> garbage_collect(), ok;
  +loop(N, F, D) ->
  +    _ = base64:F(D),
  +    loop(N - 1, F, D).
  +
  +lspawn(Fun) ->
  +    {Pid, Ref} = spawn_monitor(fun() -> exit(Fun()) end),
  +    receive
  +        {'DOWN', Ref, process, Pid, Rep} -> Rep
  +    end.
  +
  +report_base64(Time) ->
  +    Tps = round((?N*1000000)/Time),
  +    ct_event:notify(#event{name = benchmark_data,
  +                           data = [{suite, "stdlib_base64"},
  +                                   {value, Tps}]}),
  +    Tps.
  +
  +%% Copied from base64_SUITE.erl.
  +
  +random_byte_list(N) ->
  +    random_byte_list(N, []).
  +
  +random_byte_list(0, Acc) ->
  +    Acc;
  +random_byte_list(N, Acc) ->
  +    random_byte_list(N-1, [rand:uniform(255)|Acc]).
  +
  +make_big_binary(N) ->
  +    list_to_binary(mbb(N, [])).
  +
  +mbb(N, Acc) when N > 256 ->
  +    B = list_to_binary(lists:seq(0, 255)),
  +    mbb(N - 256, [B | Acc]);
  +mbb(N, Acc) ->
  +    B = list_to_binary(lists:seq(0, N-1)),
  +    lists:reverse(Acc, B).
  
positive.code: 
  
  all() ->
      [{group,unicode}].
  
  groups() ->
      [{unicode,[{repeat,5}],
        [norm_nfc_list, norm_nfc_deep_l, norm_nfc_binary,
         string_lexemes_list, string_lexemes_binary
        ]}].
  
  init_per_group(_GroupName, Config) ->
      Config.
  
negative.code: %%
  %% %CopyrightBegin%
  %%
  %% Copyright Ericsson AB 2012-2017. All Rights Reserved.
  %%
  %% Licensed under the Apache License, Version 2.0 (the "License");
  %% you may not use this file except in compliance with the License.
  