/// <summary>
        /// Gets the Oracle object type associated with the queue for batched operations.
        /// </summary>
        /// <returns></returns>
        public async Task <OracleObjectType> GetPayloadArrayTypeAsync()
        {
            if (PayloadArrayTypeName == null)
            {
                throw new InvalidOperationException($"{nameof(PayloadArrayTypeName)} is null during attempt to dequeue multiple UDT messages.");
            }

            // retrieve type
            if (payloadArrayType == null)
            {
                payloadArrayType = await OracleObjectTypeProvider.GetObjectMetadataAsync(Connection, PayloadArrayTypeName, log);
            }

            return(payloadArrayType);
        }
        /// <summary>
        /// Gets the UDT type associated with the queue.
        /// </summary>
        /// <returns></returns>
        public async Task <OracleObjectType> GetPayloadTypeAsync()
        {
            if (PayloadTypeName == null)
            {
                throw new InvalidOperationException($"{nameof(PayloadTypeName)} is null during attempt to dequeue a UDT message.");
            }

            // retrieve type
            if (payloadType == null)
            {
                payloadType = await OracleObjectTypeProvider.GetObjectMetadataAsync(Connection, PayloadTypeName, log);
            }

            // failure to get metadata
            if (payloadType == null)
            {
                throw new OracleAQException($"Unable to retrieve metadata for UDT {PayloadTypeName}.");
            }

            return(payloadType);
        }