    @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]);
    }