$ java ComputeIfAbsentRecursionDemo

=== ConcurrentHashMap: computeIfAbsent recursing into a DIFFERENT key ===
no exception, result = 99, map = {1=99, 2=99}

=== HashMap: computeIfAbsent recursing into a DIFFERENT key (single-threaded!) ===
threw java.util.ConcurrentModificationException: null

=== ConcurrentHashMap: computeIfAbsent recursing into the SAME key ===
threw java.lang.IllegalStateException: Recursive update
