class PartitionParameterNode extends PartitionSingleNode {
    /** Indexing. */
    @GridToStringExclude
    private final PartitionResolver partRslvr;

    /** Index. */
    private final int idx;

    /** Parameter data type. */
    private final int type;

    /** Client parameter type. */
    private final PartitionParameterType clientType;

    /**
     * Constructor.
     *
     * @param tbl Table descriptor.
     * @param partRslvr Partition resolver.
     * @param idx Parameter index.
     * @param type Parameter data type.
     * @param clientType Mapped parameter type to be used by thin clients.
     */
    public PartitionParameterNode(PartitionTable tbl, PartitionResolver partRslvr, int idx, int type,
        PartitionParameterType clientType) {
        super(tbl);

        this.partRslvr = partRslvr;
        this.idx = idx;
        this.type = type;
        this.clientType = clientType;
    }

    /** {@inheritDoc} */
    @Override public Integer applySingle(PartitionClientContext cliCtx, Object... args) throws IgniteCheckedException {<FILL_FUNCTION_BODY>}

    /** {@inheritDoc} */
    @Override public boolean constant() {
        return false;
    }

    /** {@inheritDoc} */
    @Override public int value() {
        return idx;
    }

    /**
     * @return Parameter data type.
     */
    public int type() {
        return type;
    }

    /**
     * @return Client parameter type.
     */
    public PartitionParameterType clientType() {
        return clientType;
    }

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

        assert args != null;
        assert idx < args.length;

        Object arg = args[idx];

        if (cliCtx != null)
            return cliCtx.partition(arg, clientType);
        else {
            assert partRslvr != null;

            return partRslvr.partition(
                arg,
                type,
                tbl.cacheName()
            );
        }
    
<methods>public transient Collection<java.lang.Integer> apply(org.apache.ignite.internal.sql.optimizer.affinity.PartitionClientContext, java.lang.Object[]) throws org.apache.ignite.IgniteCheckedException,public transient abstract java.lang.Integer applySingle(org.apache.ignite.internal.sql.optimizer.affinity.PartitionClientContext, java.lang.Object[]) throws org.apache.ignite.IgniteCheckedException,public java.lang.String cacheName() ,public abstract boolean constant() ,public boolean equals(java.lang.Object) ,public int hashCode() ,public int joinGroup() ,public org.apache.ignite.internal.sql.optimizer.affinity.PartitionTable table() ,public abstract int value() <variables>protected final non-sealed org.apache.ignite.internal.sql.optimizer.affinity.PartitionTable tbl