anchor.diff:  create_value(atom, _Size, ParseState) ->
       create_val_50rand_50coll(
         ParseState, fun tester_parse_state:get_atoms/1,
  -      lists:nth(crypto:rand_uniform(1, 5), [one, two, three, four]));
  +      fun() -> lists:nth(crypto:rand_uniform(1, 5), [one, two, three, four]) end);
   create_value(float, _Size, ParseState) ->
       create_val_50rand_50coll(
         ParseState, fun tester_parse_state:get_floats/1,
  -      crypto:rand_uniform(-5, 5) * (crypto:rand_uniform(0, 30323) / 30323.0));
  +      fun() -> crypto:rand_uniform(-5, 5) * (crypto:rand_uniform(0, 30323) / 30323.0) end);
   create_value({range, {integer, Low}, {integer, High}}, _Size, _ParseState) ->
       crypto:rand_uniform(Low, High + 1);
   create_value({union, Types}, Size, ParseState) ->
  
positive.code: create_value(binary, Size, ParseState) ->
      create_val_50rand_50coll(
        ParseState, fun tester_parse_state:get_binaries/1,
        list_to_binary(create_value({list, {range, {integer, 0}, {integer, 16#ff}}}, Size, ParseState))
        );
  create_value(bool, _Size, _ParseState) ->
      case crypto:rand_uniform(0, 2) of
          0 -> false;
  
negative.code: -spec create_val_50rand_50coll(
          ParseState::tester_parse_state:state(),
          Getter::fun((tester_parse_state:state()) -> {Length::non_neg_integer(), Values::[T]}),
          RandValFun::fun(() -> T)) -> T.
  create_val_50rand_50coll(ParseState, Getter, RandValFun) ->
      case crypto:rand_uniform(0, 2) of
          0 -> % take one of the collected values (if possible)
              {Length, Values} = Getter(ParseState),
              case Length of
                  0 -> RandValFun();
                  _ -> lists:nth(crypto:rand_uniform(1, Length + 1), Values)
              end;
          1 ->
              RandValFun()
      end.
  