/// <summary>
        /// Returns a new instance that is a copy of the original one.
        /// </summary>
        /// <param name="settings">A dictionary containing the names of the properties whose
        /// values are to be changed with respect to the original instance, or null to not
        /// modify any of those.</param>
        /// <returns>A new instance.</returns>
        public new DataEngine Clone(IDictionary <string, object> settings)
        {
            if (IsDisposed)
            {
                throw new ObjectDisposedException(this.ToString());
            }
            var cloned = new DataEngine(); OnClone(cloned, settings);

            return(cloned);
        }
        /// <summary>
        /// Returns a new instance that is a copy of the original one.
        /// </summary>
        /// <returns>A new instance.</returns>
        public new DataEngine Clone()
        {
            if (IsDisposed)
            {
                throw new ObjectDisposedException(this.ToString());
            }
            var cloned = new DataEngine(); OnClone(cloned, null);

            return(cloned);
        }
		/// <summary>
		/// Returns a new instance that is a copy of the original one.
		/// </summary>
		/// <param name="settings">A dictionary containing the names of the properties whose
		/// values are to be changed with respect to the original instance, or null to not
		/// modify any of those.</param>
		/// <returns>A new instance.</returns>
		public new DataEngine Clone(IDictionary<string, object> settings)
		{
			if (IsDisposed) throw new ObjectDisposedException(this.ToString());
			var cloned = new DataEngine(); OnClone(cloned, settings);
			return cloned;
		}
		/// <summary>
		/// Returns a new instance that is a copy of the original one.
		/// </summary>
		/// <returns>A new instance.</returns>
		public new DataEngine Clone()
		{
			if (IsDisposed) throw new ObjectDisposedException(this.ToString());
			var cloned = new DataEngine(); OnClone(cloned, null);
			return cloned;
		}