class GridCacheAtomicStampedValue<T, S> extends AtomicDataStructureValue implements GridPeerDeployAware {
    /** */
    private static final long serialVersionUID = 0L;

    /** Value. */
    private T val;

    /** Stamp. */
    private S stamp;

    /**
     * Constructor.
     *
     * @param val Initial value.
     * @param stamp Initial stamp.
     */
    public GridCacheAtomicStampedValue(T val, S stamp) {
        this.val = val;
        this.stamp = stamp;
    }

    /**
     * Empty constructor required for {@link Externalizable}.
     */
    public GridCacheAtomicStampedValue() {
        // No-op.
    }

    /** {@inheritDoc} */
    @Override public DataStructureType type() {
        return DataStructureType.ATOMIC_STAMPED;
    }

    /**
     * @param val New value.
     * @param stamp New stamp.
     */
    public void set(T val, S stamp) {
        this.val = val;
        this.stamp = stamp;
    }

    /**
     * @return Current value and stamp.
     */
    public IgniteBiTuple<T, S> get() {
        return F.t(val, stamp);
    }

    /**
     * @return val Current value.
     */
    public T value() {
        return val;
    }

    /**
     * @return Current stamp.
     */
    public S stamp() {
        return stamp;
    }

    /** {@inheritDoc} */
    @Override public void writeExternal(ObjectOutput out) throws IOException {
        out.writeObject(val);
        out.writeObject(stamp);
    }

    /** {@inheritDoc} */
    @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
        val = (T)in.readObject();
        stamp = (S)in.readObject();
    }

    /** {@inheritDoc} */
    @Override public Class<?> deployClass() {<FILL_FUNCTION_BODY>}

    /** {@inheritDoc} */
    @Override public ClassLoader classLoader() {
        return deployClass().getClassLoader();
    }

    /** {@inheritDoc} */
    @Override public String toString() {
        return GridToStringBuilder.toString(GridCacheAtomicStampedValue.class, this);
    }
}

        ClassLoader clsLdr = getClass().getClassLoader();

        // First of all check classes that may be loaded by class loader other than application one.
        return stamp != null && !clsLdr.equals(stamp.getClass().getClassLoader()) ?
            stamp.getClass() : val != null ? val.getClass() : getClass();
    
<methods>public non-sealed void <init>() ,public abstract org.apache.ignite.internal.processors.datastructures.DataStructureType type() <variables>private static final long serialVersionUID