anchor.diff:              {error, Reason, S2}
       end;
   
  -
  -run(put, KeyGen, ValueGen, #state{check_integrity = CI, id = Id, concurrent = Concurrent} = State) ->
  +run(test, _KeyGen, _ValueGen, #state{value_source = VS,
  +                                     value_size_groups = VSG} = State) ->
  +    {Group, _Val} = value_gen_with_size_groups(VS, VSG),
  +    C = case erlang:get({size_groups_counter, Group}) of
  +        undefined -> 0;
  +        Else -> Else
  +    end,
  +    erlang:put({size_groups_counter, Group}, C + 1),
  +    case C rem 10000 of
  +        0 -> io:format(user, "[debug] group:~p counter:~p~n", [Group, C]);
  +        _ -> void
  +    end,
  +    {ok, State};
  +
  +run(put, KeyGen, _ValueGen, #state{check_integrity = CI,
  +                                   value_source = VS,
  +                                   value_size_groups = VSG, 
  +                                   id = Id,
  +                                   concurrent = Concurrent} = State) ->
       Key = keygen_global_uniq(CI, Id, Concurrent, KeyGen),
  -    Val = ValueGen(),
  +    {_, Val} = value_gen_with_size_groups(VS, VSG),
       {NextUrl, S2} = next_url(State),
       Url = url(NextUrl, Key, State#state.path_params),
       case do_put(Url, [], Val) of
  
positive.code:             {error, Reason, S2}
      end.
  
  
  %% ====================================================================
  %% Internal functions
  %% ====================================================================
  
negative.code: normalize_error(Method, {'EXIT', Reason})        -> {error, {Method, 'EXIT', Reason}};
  normalize_error(Method, {error, Reason})         -> {error, {Method, Reason}}.
  
  