public T putIfAbsent()

in servicetalk-concurrent-api/src/main/java/io/servicetalk/concurrent/api/CopyOnWriteContextMap.java [1965:2020]


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