protected void setUpTestMapWithRandomContent(int size, int run) throws Exception {

    valueFactory = valueFactoryFactory.getInstance();

    IMapWriter writer1 = valueFactory.mapWriter();
    IMapWriter writer2 = valueFactory.mapWriter();

    int seedForThisTrial = BenchmarkUtils.seedFromSizeAndRun(size, run);
    Random rand = new Random(seedForThisTrial + 13);
    int existingValueIndex = rand.nextInt(size);

    int[] data = BenchmarkUtils.generateTestData(size, run);

    for (int i = size - 1; i >= 0; i--) {
      //			final IValue current = producer.createFromInt(data[i]);

      writer1.put(producer.createFromInt(data[i]), producer.createFromInt(data[i]));
      writer2.put(producer.createFromInt(data[i]), producer.createFromInt(data[i]));

      if (i == existingValueIndex) {
        VALUE_EXISTING = producer.createFromInt(data[i]);
      }
    }

    testMap = writer1.done();
    testMapRealDuplicate = writer2.done();

    /*
     * generate random values until a value not part of the data strucure is
     * found
     */
    while (VALUE_NOT_EXISTING == null) {
      final IValue candidate = producer.createFromInt(rand.nextInt());

      if (!testMap.containsKey(candidate)) {
        VALUE_NOT_EXISTING = candidate;
      }
    }

    testMapDeltaDuplicate =
        testMap.put(VALUE_EXISTING, VALUE_NOT_EXISTING).put(VALUE_EXISTING, VALUE_EXISTING);

    testMapRealDuplicateSameSizeButDifferent =
        testMapRealDuplicate.removeKey(VALUE_EXISTING).put(VALUE_NOT_EXISTING, VALUE_NOT_EXISTING);
  }
  @Setup(Level.Trial)
  public void setUp() throws Exception {
    setUpTestMapWithRandomContent(size, run);

    switch (sampleDataSelection) {

        /*
         * random integers might or might not be in the dataset
         */
      case RANDOM:
        {
          // random data generator with fixed seed
          /* seed == Mersenne Prime #8 */
          Random randForOperations = new Random(2147483647L);

          for (int i = 0; i < CACHED_NUMBERS_SIZE; i++) {
            cachedNumbers[i] = producer.createFromInt(randForOperations.nextInt());
          }
        }

        /*
         * random integers are in the dataset
         */
      case MATCH:
        {
          // random data generator with fixed seed
          int seedForThisTrial = BenchmarkUtils.seedFromSizeAndRun(size, run);
          Random rand = new Random(seedForThisTrial);

          for (int i = 0; i < CACHED_NUMBERS_SIZE; i++) {
            if (i >= size) {
              cachedNumbers[i] = cachedNumbers[i % size];
            } else {
              cachedNumbers[i] = producer.createFromInt(rand.nextInt());
            }
          }

          // random data generator with fixed seed
          /* seed == Mersenne Prime #8 */
          Random anotherRand = new Random(2147483647L);

          for (int i = 0; i < CACHED_NUMBERS_SIZE; i++) {
            /*
             * generate random values until a value not part of the data
             * strucure is found
             */
            boolean found = false;
            while (!found) {
              final IValue candidate = producer.createFromInt(anotherRand.nextInt());

              if (testMap.containsKey(candidate)) {
                continue;
              } else {
                cachedNumbersNotContained[i] = candidate;
                found = true;
              }
            }
          }

          // assert (contained)
          for (IValue sample : cachedNumbers) {
            if (!testMap.containsKey(sample)) {
              throw new IllegalStateException();
            }
          }

          // assert (not contained)
          for (IValue sample : cachedNumbersNotContained) {
            if (testMap.containsKey(sample)) {
              throw new IllegalStateException();
            }
          }
        }
    }

    final IMapWriter mapWriter1 = valueFactory.mapWriter();
    mapWriter1.put(VALUE_EXISTING, VALUE_EXISTING);
    singletonMapWithExistingValue = mapWriter1.done();

    final IMapWriter mapWriter2 = valueFactory.mapWriter();
    mapWriter2.put(VALUE_NOT_EXISTING, VALUE_NOT_EXISTING);
    singletonMapWithNotExistingValue = mapWriter2.done();

    // System.out.println(String.format("\n\ncachedNumbers = %s",
    // Arrays.toString(cachedNumbers)));
    // System.out.println(String.format("cachedNumbersNotContained = %s\n\n",
    // Arrays.toString(cachedNumbersNotContained)));

    // OverseerUtils.setup(JmhMapBenchmarks.class, this);
  }