class MapAbsent<K, V> implements Absent<K, V> {

    @StageRef
    public KeySearch<K> ks;
    @StageRef
    public HashLookupSearch hashLookupSearch;
    @StageRef
    public CheckOnEachPublicOperation checkOnEachPublicOperation;
    @StageRef
    public SegmentStages s;
    @StageRef
    MapQuery<K, V, ?> q;
    @StageRef
    MapEntryStages<K, V> e;
    @StageRef
    VanillaChronicleMapHolder<K, V, ?> mh;

    void putEntry(Data<V> value) {
        assert ks.searchStateAbsent();
        long entrySize = e.entrySize(ks.inputKey.size(), value.size());
        q.allocatedChunks.initEntryAndKey(entrySize);
        e.initValue(value);
        e.freeExtraAllocatedChunks();
        hashLookupSearch.putNewVolatile(e.pos);
    }

    @NotNull
    @Override
    public MapQuery<K, V, ?> context() {
        checkOnEachPublicOperation.checkOnEachPublicOperation();
        return q;
    }

    @NotNull
    @Override
    public Data<K> absentKey() {
        checkOnEachPublicOperation.checkOnEachPublicOperation();
        return ks.inputKey;
    }

    @Override
    public void doInsert(Data<V> value) {<FILL_FUNCTION_BODY>}

    @Override
    public void doInsert() {
        if (mh.set() == null)
            throw new IllegalStateException(mh.h().toIdentityString() +
                    ": Called SetAbsentEntry.doInsert() from Map context");
        //noinspection unchecked
        doInsert((Data<V>) DummyValueData.INSTANCE);
    }
}

        q.putPrefix();
        if (!q.entryPresent()) {
            putEntry(value);
            s.incrementModCount();
            ks.setSearchState(PRESENT);
            q.initPresenceOfEntry(EntryPresence.PRESENT);
        } else {
            throw new IllegalStateException(mh.h().toIdentityString() +
                    ": Entry is present in the map when doInsert() is called");
        }
    
<no_super_class>