/// <summary>
        /// Initializes a new instance.
        /// </summary>
        /// <param name="owner"></param>
        /// <param name="name"></param>
        /// <param name="itemObjectDbType"></param>
        /// <param name="itemDbTypeDef"></param>
        /// <param name="itemObjectType"></param>
        internal OracleObjectType(string owner, string name, OracleObjectDbType itemObjectDbType, OracleDbTypeDef itemDbTypeDef, OracleObjectType itemObjectType)
        {
            if (string.IsNullOrWhiteSpace(owner))
            {
                throw new ArgumentException(nameof(owner));
            }
            if (string.IsNullOrWhiteSpace(name))
            {
                throw new ArgumentException(nameof(name));
            }
            if (itemObjectDbType == OracleObjectDbType.DbType && itemDbTypeDef == null)
            {
                throw new ArgumentNullException(nameof(itemDbTypeDef), "Table of DbType requires a ItemDbTypeDef.");
            }
            if (itemObjectDbType == OracleObjectDbType.Object && itemObjectType?.objectDbType != OracleObjectDbType.Object)
            {
                throw new ArgumentNullException(nameof(itemDbTypeDef), "Table of Object requires a ItemObjectDbType of type Object.");
            }

            this.owner            = owner;
            this.name             = name;
            this.objectDbType     = OracleObjectDbType.Table;
            this.itemObjectDbType = itemObjectDbType;
            this.itemDbTypeDef    = itemDbTypeDef;
            this.itemObjectType   = itemObjectType;
        }
        /// <summary>
        /// Initializes a new instance.
        /// </summary>
        /// <param name="owner"></param>
        /// <param name="name"></param>
        /// <param name="itemObjectDbType"></param>
        /// <param name="itemDbTypeDef"></param>
        /// <param name="itemObjectType"></param>
        /// <param name="capacity"></param>
        internal OracleObjectType(string owner, string name, OracleObjectDbType itemObjectDbType, OracleDbTypeDef itemDbTypeDef, OracleObjectType itemObjectType, int capacity)
        {
            if (string.IsNullOrWhiteSpace(owner))
            {
                throw new ArgumentException(nameof(owner));
            }
            if (string.IsNullOrWhiteSpace(name))
            {
                throw new ArgumentException(nameof(name));
            }
            if (capacity < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(capacity));
            }

            this.owner            = owner;
            this.name             = name;
            this.objectDbType     = OracleObjectDbType.Array;
            this.itemObjectDbType = itemObjectDbType;
            this.itemDbTypeDef    = itemDbTypeDef;
            this.itemObjectType   = itemObjectType;
            this.capacity         = capacity;
        }