public static DescribeZonesResponse Unmarshall(UnmarshallerContext context)
        {
            DescribeZonesResponse describeZonesResponse = new DescribeZonesResponse()
            {
                HttpResponse = context.HttpResponse,
                RequestId    = context.StringValue("DescribeZones.RequestId")
            };
            List <DescribeZonesResponse.Zone> zones = new List <DescribeZonesResponse.Zone>();

            for (int i = 0; i < context.Length("DescribeZones.Zones.Length"); i++)
            {
                DescribeZonesResponse.Zone zone = new DescribeZonesResponse.Zone()
                {
                    ZoneId    = context.StringValue($"DescribeZones.Zones[{i}].ZoneId"),
                    LocalName = context.StringValue($"DescribeZones.Zones[{i}].LocalName")
                };
                List <DescribeZonesResponse.Zone.SlaveZone> slaveZones = new List <DescribeZonesResponse.Zone.SlaveZone>();
                for (int j = 0; j < context.Length($"DescribeZones.Zones[{i}].SlaveZones.Length"); j++)
                {
                    DescribeZonesResponse.Zone.SlaveZone slaveZone = new DescribeZonesResponse.Zone.SlaveZone()
                    {
                        ZoneId    = context.StringValue($"DescribeZones.Zones[{i}].SlaveZones[{j}].ZoneId"),
                        LocalName = context.StringValue($"DescribeZones.Zones[{i}].SlaveZones[{j}].LocalName")
                    };
                    slaveZones.Add(slaveZone);
                }
                zone.SlaveZones = slaveZones;

                zones.Add(zone);
            }
            describeZonesResponse.Zones = zones;

            return(describeZonesResponse);
        }
        public static DescribeZonesResponse Unmarshall(UnmarshallerContext context)
        {
            DescribeZonesResponse describeZonesResponse = new DescribeZonesResponse();

            describeZonesResponse.HttpResponse = context.HttpResponse;
            describeZonesResponse.RequestId    = context.StringValue("DescribeZones.RequestId");

            List <DescribeZonesResponse.Zone> zones = new List <DescribeZonesResponse.Zone>();

            for (int i = 0; i < context.Length("DescribeZones.Zones.Length"); i++)
            {
                DescribeZonesResponse.Zone zone = new DescribeZonesResponse.Zone();
                zone.ZoneId    = context.StringValue("DescribeZones.Zones[" + i + "].ZoneId");
                zone.LocalName = context.StringValue("DescribeZones.Zones[" + i + "].LocalName");

                List <string> availableResourceCreation = new List <string>();
                for (int j = 0; j < context.Length("DescribeZones.Zones[" + i + "].AvailableResourceCreation.Length"); j++)
                {
                    availableResourceCreation.Add(context.StringValue("DescribeZones.Zones[" + i + "].AvailableResourceCreation[" + j + "]"));
                }
                zone.AvailableResourceCreation = availableResourceCreation;

                List <string> availableDiskCategories = new List <string>();
                for (int j = 0; j < context.Length("DescribeZones.Zones[" + i + "].AvailableDiskCategories.Length"); j++)
                {
                    availableDiskCategories.Add(context.StringValue("DescribeZones.Zones[" + i + "].AvailableDiskCategories[" + j + "]"));
                }
                zone.AvailableDiskCategories = availableDiskCategories;

                List <string> availableInstanceTypes = new List <string>();
                for (int j = 0; j < context.Length("DescribeZones.Zones[" + i + "].AvailableInstanceTypes.Length"); j++)
                {
                    availableInstanceTypes.Add(context.StringValue("DescribeZones.Zones[" + i + "].AvailableInstanceTypes[" + j + "]"));
                }
                zone.AvailableInstanceTypes = availableInstanceTypes;

                List <DescribeZonesResponse.Zone.ResourcesInfo> availableResources = new List <DescribeZonesResponse.Zone.ResourcesInfo>();
                for (int j = 0; j < context.Length("DescribeZones.Zones[" + i + "].AvailableResources.Length"); j++)
                {
                    DescribeZonesResponse.Zone.ResourcesInfo resourcesInfo = new DescribeZonesResponse.Zone.ResourcesInfo();
                    resourcesInfo.IoOptimized = context.BooleanValue("DescribeZones.Zones[" + i + "].AvailableResources[" + j + "].IoOptimized");

                    List <string> systemDiskCategories = new List <string>();
                    for (int k = 0; k < context.Length("DescribeZones.Zones[" + i + "].AvailableResources[" + j + "].SystemDiskCategories.Length"); k++)
                    {
                        systemDiskCategories.Add(context.StringValue("DescribeZones.Zones[" + i + "].AvailableResources[" + j + "].SystemDiskCategories[" + k + "]"));
                    }
                    resourcesInfo.SystemDiskCategories = systemDiskCategories;

                    List <string> dataDiskCategories = new List <string>();
                    for (int k = 0; k < context.Length("DescribeZones.Zones[" + i + "].AvailableResources[" + j + "].DataDiskCategories.Length"); k++)
                    {
                        dataDiskCategories.Add(context.StringValue("DescribeZones.Zones[" + i + "].AvailableResources[" + j + "].DataDiskCategories[" + k + "]"));
                    }
                    resourcesInfo.DataDiskCategories = dataDiskCategories;

                    List <string> networkTypes = new List <string>();
                    for (int k = 0; k < context.Length("DescribeZones.Zones[" + i + "].AvailableResources[" + j + "].NetworkTypes.Length"); k++)
                    {
                        networkTypes.Add(context.StringValue("DescribeZones.Zones[" + i + "].AvailableResources[" + j + "].NetworkTypes[" + k + "]"));
                    }
                    resourcesInfo.NetworkTypes = networkTypes;

                    List <string> instanceTypes = new List <string>();
                    for (int k = 0; k < context.Length("DescribeZones.Zones[" + i + "].AvailableResources[" + j + "].InstanceTypes.Length"); k++)
                    {
                        instanceTypes.Add(context.StringValue("DescribeZones.Zones[" + i + "].AvailableResources[" + j + "].InstanceTypes[" + k + "]"));
                    }
                    resourcesInfo.InstanceTypes = instanceTypes;

                    List <string> instanceTypeFamilies = new List <string>();
                    for (int k = 0; k < context.Length("DescribeZones.Zones[" + i + "].AvailableResources[" + j + "].InstanceTypeFamilies.Length"); k++)
                    {
                        instanceTypeFamilies.Add(context.StringValue("DescribeZones.Zones[" + i + "].AvailableResources[" + j + "].InstanceTypeFamilies[" + k + "]"));
                    }
                    resourcesInfo.InstanceTypeFamilies = instanceTypeFamilies;

                    List <string> instanceGenerations = new List <string>();
                    for (int k = 0; k < context.Length("DescribeZones.Zones[" + i + "].AvailableResources[" + j + "].InstanceGenerations.Length"); k++)
                    {
                        instanceGenerations.Add(context.StringValue("DescribeZones.Zones[" + i + "].AvailableResources[" + j + "].InstanceGenerations[" + k + "]"));
                    }
                    resourcesInfo.InstanceGenerations = instanceGenerations;

                    availableResources.Add(resourcesInfo);
                }
                zone.AvailableResources = availableResources;

                zones.Add(zone);
            }
            describeZonesResponse.Zones = zones;

            return(describeZonesResponse);
        }