ContainerItemInternal
                    class ContainerItemInternal
                
                An Azure Storage container. 
                using Azure.Core;
using Azure.Storage.Common;
using System.Collections.Generic;
using System.Xml.Linq;
namespace Azure.Storage.Blobs.Models
{
    [CodeGenModel("ContainerItem")]
    internal class ContainerItemInternal
    {
        public string Name { get; }
        public bool? Deleted { get; }
        public string Version { get; }
        public ContainerPropertiesInternal Properties { get; }
        public IReadOnlyDictionary<string, string> Metadata { get; }
        internal ContainerItemInternal(string name, ContainerPropertiesInternal properties)
        {
            Argument.AssertNotNull(name, "name");
            Argument.AssertNotNull(properties, "properties");
            Name = name;
            Properties = properties;
            Metadata = new ChangeTrackingDictionary<string, string>();
        }
        internal ContainerItemInternal(string name, bool? deleted, string version, ContainerPropertiesInternal properties, IReadOnlyDictionary<string, string> metadata)
        {
            Name = name;
            Deleted = deleted;
            Version = version;
            Properties = properties;
            Metadata = metadata;
        }
        internal static ContainerItemInternal DeserializeContainerItemInternal(XElement element)
        {
            string name = null;
            bool? deleted = null;
            string version = null;
            ContainerPropertiesInternal properties = null;
            IReadOnlyDictionary<string, string> metadata = null;
            XElement xElement = element.Element("Name");
            if (xElement != null)
                name = (string)xElement;
            XElement xElement2 = element.Element("Deleted");
            if (xElement2 != null)
                deleted = (bool?)xElement2;
            XElement xElement3 = element.Element("Version");
            if (xElement3 != null)
                version = (string)xElement3;
            XElement xElement4 = element.Element("Properties");
            if (xElement4 != null)
                properties = ContainerPropertiesInternal.DeserializeContainerPropertiesInternal(xElement4);
            XElement xElement5 = element.Element("Metadata");
            if (xElement5 != null) {
                Dictionary<string, string> dictionary = new Dictionary<string, string>();
                foreach (XElement item in xElement5.Elements()) {
                    dictionary.Add(item.Name.LocalName, (string)item);
                }
                metadata = dictionary;
            }
            return new ContainerItemInternal(name, deleted, version, properties, metadata);
        }
    }
}