/// <summary>
        /// Creates an attribute collection.
        /// </summary>
        /// <param name="source">The source collection.</param>
        /// <returns>The produced attribute collection.</returns>
        /// <exception cref="System.ArgumentNullException">The source is null.</exception>
        public IAttributeCollection CreateCollection(IDictionary <String, Object> source)
        {
            if (source == null)
            {
                throw new ArgumentNullException(nameof(source));
            }

            StoredAttributeCollection collection = new StoredAttributeCollection(this, this.Driver.CreateIdentifier());

            foreach (String key in source.Keys)
            {
                collection.Add(key, source[key]);
            }

            return(collection);
        }
        /// <summary>
        /// Creates an attribute collection.
        /// </summary>
        /// <param name="identifier">The feature identifier.</param>
        /// <param name="source">The source collection.</param>
        /// <returns>The produced attribute collection.</returns>
        /// <exception cref="System.ArgumentNullException">
        /// The identifier is null.
        /// or
        /// The source is null.
        /// </exception>
        public IAttributeCollection CreateCollection(String identifier, IAttributeCollection source)
        {
            if (source == null)
            {
                throw new ArgumentNullException(nameof(source));
            }

            StoredAttributeCollection collection = new StoredAttributeCollection(this, identifier);

            foreach (String key in source.Keys)
            {
                collection.Add(key, source[key]);
            }

            return(collection);
        }