ContainerPropertiesInternal
Properties of a container. 
                using Azure.Core;
using Azure.Storage.Common;
using System;
using System.Xml.Linq;
namespace Azure.Storage.Blobs.Models
{
    [CodeGenModel("ContainerProperties")]
    internal class ContainerPropertiesInternal
    {
        public DateTimeOffset LastModified { get; }
        public string Etag { get; }
        public LeaseStatus? LeaseStatus { get; }
        public LeaseState? LeaseState { get; }
        public LeaseDurationType? LeaseDuration { get; }
        public PublicAccessType? PublicAccess { get; }
        public bool? HasImmutabilityPolicy { get; }
        public bool? HasLegalHold { get; }
        public string DefaultEncryptionScope { get; }
        public bool? PreventEncryptionScopeOverride { get; }
        public DateTimeOffset? DeletedTime { get; }
        public int? RemainingRetentionDays { get; }
        public bool? IsImmutableStorageWithVersioningEnabled { get; }
        internal ContainerPropertiesInternal(DateTimeOffset lastModified, string etag)
        {
            Argument.AssertNotNull(etag, "etag");
            LastModified = lastModified;
            Etag = etag;
        }
        internal ContainerPropertiesInternal(DateTimeOffset lastModified, string etag, LeaseStatus? leaseStatus, LeaseState? leaseState, LeaseDurationType? leaseDuration, PublicAccessType? publicAccess, bool? hasImmutabilityPolicy, bool? hasLegalHold, string defaultEncryptionScope, bool? preventEncryptionScopeOverride, DateTimeOffset? deletedTime, int? remainingRetentionDays, bool? isImmutableStorageWithVersioningEnabled)
        {
            LastModified = lastModified;
            Etag = etag;
            LeaseStatus = leaseStatus;
            LeaseState = leaseState;
            LeaseDuration = leaseDuration;
            PublicAccess = publicAccess;
            HasImmutabilityPolicy = hasImmutabilityPolicy;
            HasLegalHold = hasLegalHold;
            DefaultEncryptionScope = defaultEncryptionScope;
            PreventEncryptionScopeOverride = preventEncryptionScopeOverride;
            DeletedTime = deletedTime;
            RemainingRetentionDays = remainingRetentionDays;
            IsImmutableStorageWithVersioningEnabled = isImmutableStorageWithVersioningEnabled;
        }
        internal static ContainerPropertiesInternal DeserializeContainerPropertiesInternal(XElement element)
        {
            DateTimeOffset lastModified = default(DateTimeOffset);
            string etag = null;
            LeaseStatus? leaseStatus = null;
            LeaseState? leaseState = null;
            LeaseDurationType? leaseDuration = null;
            PublicAccessType? publicAccess = null;
            bool? hasImmutabilityPolicy = null;
            bool? hasLegalHold = null;
            string defaultEncryptionScope = null;
            bool? preventEncryptionScopeOverride = null;
            DateTimeOffset? deletedTime = null;
            int? remainingRetentionDays = null;
            bool? isImmutableStorageWithVersioningEnabled = null;
            XElement xElement = element.Element("Last-Modified");
            if (xElement != null)
                lastModified = xElement.GetDateTimeOffsetValue("R");
            XElement xElement2 = element.Element("Etag");
            if (xElement2 != null)
                etag = (string)xElement2;
            XElement xElement3 = element.Element("LeaseStatus");
            if (xElement3 != null)
                leaseStatus = xElement3.Value.ToLeaseStatus();
            XElement xElement4 = element.Element("LeaseState");
            if (xElement4 != null)
                leaseState = xElement4.Value.ToLeaseState();
            XElement xElement5 = element.Element("LeaseDuration");
            if (xElement5 != null)
                leaseDuration = xElement5.Value.ToLeaseDurationType();
            XElement xElement6 = element.Element("PublicAccess");
            if (xElement6 != null)
                publicAccess = xElement6.Value.ToPublicAccessType();
            XElement xElement7 = element.Element("HasImmutabilityPolicy");
            if (xElement7 != null)
                hasImmutabilityPolicy = (bool?)xElement7;
            XElement xElement8 = element.Element("HasLegalHold");
            if (xElement8 != null)
                hasLegalHold = (bool?)xElement8;
            XElement xElement9 = element.Element("DefaultEncryptionScope");
            if (xElement9 != null)
                defaultEncryptionScope = (string)xElement9;
            XElement xElement10 = element.Element("DenyEncryptionScopeOverride");
            if (xElement10 != null)
                preventEncryptionScopeOverride = (bool?)xElement10;
            XElement xElement11 = element.Element("DeletedTime");
            if (xElement11 != null)
                deletedTime = xElement11.GetDateTimeOffsetValue("R");
            XElement xElement12 = element.Element("RemainingRetentionDays");
            if (xElement12 != null)
                remainingRetentionDays = (int?)xElement12;
            XElement xElement13 = element.Element("ImmutableStorageWithVersioningEnabled");
            if (xElement13 != null)
                isImmutableStorageWithVersioningEnabled = (bool?)xElement13;
            return new ContainerPropertiesInternal(lastModified, etag, leaseStatus, leaseState, leaseDuration, publicAccess, hasImmutabilityPolicy, hasLegalHold, defaultEncryptionScope, preventEncryptionScopeOverride, deletedTime, remainingRetentionDays, isImmutableStorageWithVersioningEnabled);
        }
    }
}