class GridDhtDetachedCacheEntry extends GridDistributedCacheEntry {
    /**
     * @param ctx Cache context.
     * @param key Cache key.
     */
    public GridDhtDetachedCacheEntry(GridCacheContext ctx, KeyCacheObject key) {
        super(ctx, key);
    }

    /**
     * Sets value to detached entry so it can be retrieved in transactional gets.
     *
     * @param val Value.
     * @param ver Version.
     */
    public void resetFromPrimary(CacheObject val, GridCacheVersion ver) {
        value(val);

        this.ver = ver;
    }

    /** {@inheritDoc} */
    @Nullable @Override public CacheDataRow unswap(CacheDataRow row, boolean checkExpire) throws IgniteCheckedException {
        return null;
    }

    /** {@inheritDoc} */
    @Override protected void value(@Nullable CacheObject val) {
        this.val = val;
    }

    /** {@inheritDoc} */
    @Override protected boolean storeValue(CacheObject val,
        long expireTime,
        GridCacheVersion ver) throws IgniteCheckedException {<FILL_FUNCTION_BODY>}

    /** {@inheritDoc} */
    @Override protected void logUpdate(
        GridCacheOperation op,
        CacheObject val,
        GridCacheVersion writeVer,
        long expireTime,
        long updCntr,
        boolean primary
    ) throws IgniteCheckedException {
        // No-op for detached entries, index is updated on primary or backup nodes.
    }

    /** {@inheritDoc} */
    @Override protected WALPointer logTxUpdate(
        IgniteInternalTx tx,
        CacheObject val,
        GridCacheVersion writeVer,
        long expireTime,
        long updCntr
    ) {
        return null;
    }

    /** {@inheritDoc} */
    @Override protected void removeValue() throws IgniteCheckedException {
        // No-op for detached entries, index is updated on primary or backup nodes.
    }

    /** {@inheritDoc} */
    @Override public boolean detached() {
        return true;
    }

    /** {@inheritDoc} */
    @Override public String toString() {
        return toStringWithTryLock(() -> S.toString(GridDhtDetachedCacheEntry.class, this, "super", super.toString()));
    }

    /** {@inheritDoc} */
    @Override public boolean addRemoved(GridCacheVersion ver) {
        // No-op for detached cache entry.
        return true;
    }

    /** {@inheritDoc} */
    @Override public int partition() {
        return cctx.affinity().partition(key);
    }
}

        return false;
        // No-op for detached entries, index is updated on primary nodes.
    
<methods>public void <init>(GridCacheContext#RAW, org.apache.ignite.internal.processors.cache.KeyCacheObject) ,public org.apache.ignite.internal.processors.cache.GridCacheMvccCandidate addLocal(long, org.apache.ignite.internal.processors.cache.version.GridCacheVersion, org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion, long, boolean, boolean, boolean, boolean) throws org.apache.ignite.internal.processors.cache.GridCacheEntryRemovedException,public void addRemote(java.util.UUID, java.util.UUID, long, org.apache.ignite.internal.processors.cache.version.GridCacheVersion, boolean, boolean, org.apache.ignite.internal.processors.cache.version.GridCacheVersion) throws org.apache.ignite.internal.processors.cache.distributed.GridDistributedLockCancelledException, org.apache.ignite.internal.processors.cache.GridCacheEntryRemovedException,public boolean addRemoved(org.apache.ignite.internal.processors.cache.version.GridCacheVersion) ,public void doneRemote(org.apache.ignite.internal.processors.cache.version.GridCacheVersion, org.apache.ignite.internal.processors.cache.version.GridCacheVersion, Collection<org.apache.ignite.internal.processors.cache.version.GridCacheVersion>, Collection<org.apache.ignite.internal.processors.cache.version.GridCacheVersion>, Collection<org.apache.ignite.internal.processors.cache.version.GridCacheVersion>, boolean) throws org.apache.ignite.internal.processors.cache.GridCacheEntryRemovedException,public org.apache.ignite.internal.processors.cache.CacheLockCandidates readyLock(org.apache.ignite.internal.processors.cache.version.GridCacheVersion) throws org.apache.ignite.internal.processors.cache.GridCacheEntryRemovedException,public void readyNearLock(org.apache.ignite.internal.processors.cache.version.GridCacheVersion, org.apache.ignite.internal.processors.cache.version.GridCacheVersion, Collection<org.apache.ignite.internal.processors.cache.version.GridCacheVersion>, Collection<org.apache.ignite.internal.processors.cache.version.GridCacheVersion>, Collection<org.apache.ignite.internal.processors.cache.version.GridCacheVersion>) throws org.apache.ignite.internal.processors.cache.GridCacheEntryRemovedException,public boolean recheck(org.apache.ignite.internal.processors.cache.version.GridCacheVersion) ,public transient Collection<org.apache.ignite.internal.processors.cache.GridCacheMvccCandidate> remoteMvccSnapshot(org.apache.ignite.internal.processors.cache.version.GridCacheVersion[]) ,public void removeExplicitNodeLocks(java.util.UUID) throws org.apache.ignite.internal.processors.cache.GridCacheEntryRemovedException,public org.apache.ignite.internal.processors.cache.GridCacheMvccCandidate removeLock() ,public boolean removeLock(org.apache.ignite.internal.processors.cache.version.GridCacheVersion) throws org.apache.ignite.internal.processors.cache.GridCacheEntryRemovedException,public boolean tmLock(org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx, long, org.apache.ignite.internal.processors.cache.version.GridCacheVersion, org.apache.ignite.internal.processors.cache.version.GridCacheVersion, boolean) throws org.apache.ignite.internal.processors.cache.GridCacheEntryRemovedException, org.apache.ignite.internal.processors.cache.distributed.GridDistributedLockCancelledException,public java.lang.String toString() <variables>private volatile List<org.apache.ignite.internal.processors.cache.GridCacheMvccCandidate> rmts