class MarshallerMappingItem implements Serializable {
    /** */
    private static final long serialVersionUID = 0L;

    /** */
    private final byte platformId;

    /** */
    private final int typeId;

    /** */
    private String clsName;

    /**
     * Class name may be null when instance is created to request missing mapping from cluster.
     *
     * @param platformId Platform id.
     * @param typeId Type id.
     * @param clsName Class name. May be null in case when the item is created to request missing mapping from grid.
     */
    public MarshallerMappingItem(byte platformId, int typeId, @Nullable String clsName) {
        this.platformId = platformId;
        this.typeId = typeId;
        this.clsName = clsName;
    }

    /** */
    public int typeId() {
        return typeId;
    }

    /** */
    public byte platformId() {
        return platformId;
    }

    /** */
    public String className() {
        return clsName;
    }

    /**
     * @param clsName Class name.
     */
    public void className(String clsName) {
        this.clsName = clsName;
    }

    /** {@inheritDoc} */
    @Override public boolean equals(Object obj) {<FILL_FUNCTION_BODY>}

    /** {@inheritDoc} */
    @Override public int hashCode() {
        return 31 * 31 * ((int)platformId) + 31 * typeId + (clsName != null ? clsName.hashCode() : 0);
    }

    /** {@inheritDoc} */
    @Override public String toString() {
        return "[platformId: " + platformId + ", typeId:" + typeId + ", clsName: " + clsName + "]";
    }
}

        if (obj == this)
            return true;

        if (!(obj instanceof MarshallerMappingItem))
            return false;

        MarshallerMappingItem that = (MarshallerMappingItem)obj;

        return platformId == that.platformId
                && typeId == that.typeId
                && (Objects.equals(clsName, that.clsName));
    
<no_super_class>