Store.ValueHolder<String> computed1 = xaStore.getAndCompute(1L, (aLong, s) -> { assertThat(aLong, is(1L)); assertThat(s, is(nullValue())); assertThat(computed1, is(nullValue())); assertThat(xaStore.get(1L).get(), equalTo("one")); Store.ValueHolder<String> computed2 = xaStore.getAndCompute(1L, (aLong, s) -> { assertThat(aLong, is(1L)); assertThat(s, equalTo("one")); assertThat(computed2.get(), equalTo("one")); assertThat(xaStore.get(1L).get(), equalTo("un")); Store.ValueHolder<String> computed3 = xaStore.getAndCompute(1L, (aLong, s) -> { assertThat(aLong, is(1L)); assertThat(s, equalTo("un")); Store.ValueHolder<String> computed1 = xaStore.getAndCompute(1L, (aLong, s) -> { assertThat(aLong, is(1L)); assertThat(s, is(nullValue())); assertThat(computed1, is(nullValue())); assertThat(xaStore.get(1L).get(), equalTo("one")); Store.ValueHolder<String> computed2 = xaStore.getAndCompute(1L, (aLong, s) -> { assertThat(aLong, is(1L)); assertThat(s, equalTo("one")); Store.ValueHolder<String> computed1 = xaStore.getAndCompute(1L, (aLong, s) -> { assertThat(aLong, is(1L)); assertThat(s, is(nullValue()));