/// <summary>
        /// This method is used to create the storage manifest data element.
        /// </summary>
        /// <param name="cellIDMapping">Specify the mapping of cell manifest.</param>
        /// <returns>Return the storage manifest data element.</returns>
        public static DataElement CreateStorageManifestDataElement(Dictionary <CellID, ExGuid> cellIDMapping)
        {
            StorageManifestDataElementData data = new StorageManifestDataElementData();

            data.StorageManifestSchemaGUID = new StorageManifestSchemaGUID()
            {
                GUID = SchemaGuid
            };

            foreach (KeyValuePair <CellID, ExGuid> kv in cellIDMapping)
            {
                StorageManifestRootDeclare manifestRootDeclare = new StorageManifestRootDeclare();
                manifestRootDeclare.RootExtendedGUID = new ExGuid(2u, RootExGuid);
                manifestRootDeclare.CellID           = new CellID(kv.Key);
                data.StorageManifestRootDeclareList.Add(manifestRootDeclare);
            }

            return(new DataElement(DataElementType.StorageManifestDataElementData, data));
        }
        /// <summary>
        /// This method is used to create the storage manifest data element.
        /// </summary>
        /// <param name="cellIDMapping">Specify the mapping of cell manifest.</param>
        /// <returns>Return the storage manifest data element.</returns>
        public static DataElement CreateStorageManifestDataElement(Dictionary<CellID, ExGuid> cellIDMapping)
        {
            StorageManifestDataElementData data = new StorageManifestDataElementData();
            data.StorageManifestSchemaGUID = new StorageManifestSchemaGUID() { GUID = SchemaGuid };

            foreach (KeyValuePair<CellID, ExGuid> kv in cellIDMapping)
            {
                StorageManifestRootDeclare manifestRootDeclare = new StorageManifestRootDeclare();
                manifestRootDeclare.RootExtendedGUID = new ExGuid(2u, RootExGuid);
                manifestRootDeclare.CellID = new CellID(kv.Key);
                data.StorageManifestRootDeclareList.Add(manifestRootDeclare);
            }

            return new DataElement(DataElementType.StorageManifestDataElementData, data);
        }
        /// <summary>
        /// This method is used to test Storage Manifest Root Declare related adapter requirements.
        /// </summary>
        /// <param name="instance">Specify the instance which need to be verified.</param> 
        /// <param name="site">Specify the ITestSite instance.</param>
        public void VerifyStorageManifestRootDeclare(StorageManifestRootDeclare instance, ITestSite site)
        {
            // If the instance is not null and there are no parsing errors, then the StorageManifestRootDeclare related adapter requirements can be directly captured.
            if (null == instance)
            {
                site.Assert.Fail("The instance of type StorageManifestRootDeclare is null due to parsing error or type casting error.");
            }

            // Verify the stream object header related requirements.
            this.ExpectStreamObjectHeaderStart(instance.StreamObjectHeaderStart, instance.GetType(), site);

            // Directly capture requirement MS-FSSHTTPB_R278, if the stream object header is StreamObjectHeaderStart16bit.
            site.CaptureRequirementIfAreEqual<Type>(
                     typeof(StreamObjectHeaderStart16bit),
                     instance.StreamObjectHeaderStart.GetType(),
                     "MS-FSSHTTPB",
                     278,
                     @"[In Storage Manifest Data Element] Storage Manifest Root Declare (2 bytes): A 16-bit stream object header that specifies one or more storage manifest root declare.");

            // Directly capture requirement MS-FSSHTTPB_R279, if there are no parsing errors. 
            site.CaptureRequirement(
                     "MS-FSSHTTPB",
                     279,
                     @"[In Storage Manifest Data Element] Root Extended GUID (variable): An extended GUID that specifies the root storage manifest.");

            // Directly capture requirement MS-FSSHTTPB_R280, if there are no parsing errors. 
            site.CaptureRequirement(
                     "MS-FSSHTTPB",
                     280,
                     @"[In Storage Manifest Data Element] Cell ID (variable): A cell ID (section 2.2.1.10) that specifies the cell identifier.");

            // Verify the stream object header related requirements.
            this.ExpectSingleObject(instance.StreamObjectHeaderStart, site);
        }