class AbstractPendingEntryLeafIO extends BPlusLeafIO<PendingRow> implements PendingRowIO {
    /**
     * @param type Page type.
     * @param ver Page format version.
     * @param itemSize Single item size on page.
     */
    AbstractPendingEntryLeafIO(int type, int ver, int itemSize) {
        super(type, ver, itemSize);
    }

    /** {@inheritDoc} */
    @Override public void storeByOffset(long pageAddr, int off, PendingRow row) throws IgniteCheckedException {
        assert row.link != 0;
        assert row.expireTime != 0;
        assertPageType(pageAddr);

        PageUtils.putLong(pageAddr, off, row.expireTime);
        PageUtils.putLong(pageAddr, off + 8, row.link);

        if (storeCacheId()) {
            assert row.cacheId != CU.UNDEFINED_CACHE_ID;

            PageUtils.putInt(pageAddr, off + 16, row.cacheId);
        }
    }

    /** {@inheritDoc} */
    @Override public void store(long dstPageAddr,
        int dstIdx,
        BPlusIO<PendingRow> srcIo,
        long srcPageAddr,
        int srcIdx) throws IgniteCheckedException {<FILL_FUNCTION_BODY>}

    /** {@inheritDoc} */
    @Override public PendingRow getLookupRow(BPlusTree<PendingRow, ?> tree, long pageAddr, int idx)
        throws IgniteCheckedException {
        return new PendingRow(getCacheId(pageAddr, idx), getExpireTime(pageAddr, idx), getLink(pageAddr, idx));
    }

    /** {@inheritDoc} */
    @Override public long getExpireTime(long pageAddr, int idx) {
        return PageUtils.getLong(pageAddr, offset(idx));
    }

    /** {@inheritDoc} */
    @Override public long getLink(long pageAddr, int idx) {
        return PageUtils.getLong(pageAddr, offset(idx) + 8);
    }

    /**
     * @return {@code True} if cache ID has to be stored.
     */
    protected abstract boolean storeCacheId();
}

        assertPageType(dstPageAddr);

        int dstOff = offset(dstIdx);

        long link = ((PendingRowIO)srcIo).getLink(srcPageAddr, srcIdx);
        long expireTime = ((PendingRowIO)srcIo).getExpireTime(srcPageAddr, srcIdx);

        PageUtils.putLong(dstPageAddr, dstOff, expireTime);
        PageUtils.putLong(dstPageAddr, dstOff + 8, link);

        if (storeCacheId()) {
            int cacheId = ((PendingRowIO)srcIo).getCacheId(srcPageAddr, srcIdx);

            assert cacheId != CU.UNDEFINED_CACHE_ID;

            PageUtils.putInt(dstPageAddr, dstOff + 16, cacheId);
        }
    
<methods>public final void copyItems(long, long, int, int, int, boolean) throws org.apache.ignite.IgniteCheckedException,public int getMaxCount(long, int) ,public final int offset(int) <variables>