@Test
public void concurrentPuts() throws InterruptedException {

    Integer k = 1;
    Integer v1 = 1;
    Integer v2 = 2;
    Integer v3 = 3;

    final Integer[] results = new Integer[3];

    List<Thread> threadList = new ArrayList<>(results.length);
    threadList.add(new Thread(() -> results[0] = testMap.put(k, v1,
            OakCommonBuildersFactory.DEFAULT_INT_SERIALIZER::deserialize)));
    threadList.add(new Thread(() -> results[1] = testMap.put(k, v2, InternalOakMapTest::slowDeserialize)));
    threadList.add(new Thread(() -> results[2] = testMap.put(k, v3,
            OakCommonBuildersFactory.DEFAULT_INT_SERIALIZER::deserialize)));

    runThreads(threadList);

    Assert.assertNull(results[0]);
    Assert.assertNotEquals(results[1], results[2]);
}