public T computeIfAbsent()

in servicetalk-concurrent-api/src/main/java/io/servicetalk/concurrent/api/CopyOnWriteContextMap.java [2025:2088]


        public <T> T computeIfAbsent(final Key<T> key, final Function<Key<T>, T> computeFunction,
                     final CopyOnWriteContextMap owner,
                     final AtomicReferenceFieldUpdater<CopyOnWriteContextMap, CopyContextMap> mapUpdater) {
            if (key.equals(keyOne)) {
                if (valueOne == null) {
                    final T value = computeFunction.apply(key);
                    return mapUpdater.compareAndSet(owner, this, new SixContextMap(key, value, keyTwo, valueTwo,
                            keyThree, valueThree, keyFour, valueFour, keyFive, valueFive, keySix, valueSix)) ?
                            value : owner.computeIfAbsent(key, computeFunction);
                }
                return (T) valueOne;
            }
            if (key.equals(keyTwo)) {
                if (valueTwo == null) {
                    final T value = computeFunction.apply(key);
                    return mapUpdater.compareAndSet(owner, this, new SixContextMap(keyOne, valueOne, key, value,
                            keyThree, valueThree, keyFour, valueFour, keyFive, valueFive, keySix, valueSix)) ?
                            value : owner.computeIfAbsent(key, computeFunction);
                }
                return (T) valueTwo;
            }
            if (key.equals(keyThree)) {
                if (valueThree == null) {
                    final T value = computeFunction.apply(key);
                    return mapUpdater.compareAndSet(owner, this, new SixContextMap(keyOne, valueOne,
                            keyTwo, valueTwo, key, value, keyFour, valueFour, keyFive, valueFive, keySix, valueSix)) ?
                            value : owner.computeIfAbsent(key, computeFunction);
                }
                return (T) valueThree;
            }
            if (key.equals(keyFour)) {
                if (valueFour == null) {
                    final T value = computeFunction.apply(key);
                    return mapUpdater.compareAndSet(owner, this, new SixContextMap(keyOne, valueOne,
                            keyTwo, valueTwo, keyThree, valueThree, key, value, keyFive, valueFive, keySix, valueSix)) ?
                            value : owner.computeIfAbsent(key, computeFunction);
                }
                return (T) valueFour;
            }
            if (key.equals(keyFive)) {
                if (valueFive == null) {
                    final T value = computeFunction.apply(key);
                    return mapUpdater.compareAndSet(owner, this, new SixContextMap(keyOne, valueOne,
                            keyTwo, valueTwo, keyThree, valueThree, keyFour, valueFour, key, value, keySix, valueSix)) ?
                            value : owner.computeIfAbsent(key, computeFunction);
                }
                return (T) valueFive;
            }
            if (key.equals(keySix)) {
                if (valueSix == null) {
                    final T value = computeFunction.apply(key);
                    return mapUpdater.compareAndSet(owner, this, new SixContextMap(keyOne, valueOne,
                            keyTwo, valueTwo, keyThree, valueThree, keyFour, valueFour, keyFive, valueFive,
                            key, value)) ?
                            value : owner.computeIfAbsent(key, computeFunction);
                }
                return (T) valueSix;
            }
            final T value = computeFunction.apply(key);
            return mapUpdater.compareAndSet(owner, this, new SevenOrMoreContextMap(keyOne, valueOne,
                    keyTwo, valueTwo, keyThree, valueThree, keyFour, valueFour, keyFive, valueFive, keySix, valueSix,
                    key, value)) ?
                    value : owner.computeIfAbsent(key, computeFunction);
        }