public static DescribeAvailableResourceResponse Unmarshall(UnmarshallerContext _ctx)
        {
            DescribeAvailableResourceResponse describeAvailableResourceResponse = new DescribeAvailableResourceResponse();

            describeAvailableResourceResponse.HttpResponse = _ctx.HttpResponse;
            describeAvailableResourceResponse.RequestId    = _ctx.StringValue("DescribeAvailableResource.RequestId");

            List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone> describeAvailableResourceResponse_availableZones = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone>();

            for (int i = 0; i < _ctx.Length("DescribeAvailableResource.AvailableZones.Length"); i++)
            {
                DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone availableZone = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone();
                availableZone.NetworkTypes = _ctx.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].NetworkTypes");
                availableZone.RegionId     = _ctx.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].RegionId");
                availableZone.Status       = _ctx.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].Status");
                availableZone.ZoneId       = _ctx.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].ZoneId");

                List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine> availableZone_supportedEngines = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine>();
                for (int j = 0; j < _ctx.Length("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines.Length"); j++)
                {
                    DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine supportedEngine = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine();
                    supportedEngine.Engine = _ctx.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].Engine");

                    List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion> supportedEngine_supportedEngineVersions = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion>();
                    for (int k = 0; k < _ctx.Length("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions.Length"); k++)
                    {
                        DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion supportedEngineVersion = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion();
                        supportedEngineVersion.Version = _ctx.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].Version");

                        List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategory> supportedEngineVersion_supportedCategorys = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategory>();
                        for (int l = 0; l < _ctx.Length("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedCategorys.Length"); l++)
                        {
                            DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategory supportedCategory = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategory();
                            supportedCategory.Category = _ctx.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedCategorys[" + l + "].Category");

                            List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategory.DescribeAvailableResource_SupportedStorageType> supportedCategory_supportedStorageTypes = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategory.DescribeAvailableResource_SupportedStorageType>();
                            for (int m = 0; m < _ctx.Length("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedCategorys[" + l + "].SupportedStorageTypes.Length"); m++)
                            {
                                DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategory.DescribeAvailableResource_SupportedStorageType supportedStorageType = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategory.DescribeAvailableResource_SupportedStorageType();
                                supportedStorageType.StorageType = _ctx.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedCategorys[" + l + "].SupportedStorageTypes[" + m + "].StorageType");

                                List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategory.DescribeAvailableResource_SupportedStorageType.DescribeAvailableResource_AvailableResource> supportedStorageType_availableResources = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategory.DescribeAvailableResource_SupportedStorageType.DescribeAvailableResource_AvailableResource>();
                                for (int n = 0; n < _ctx.Length("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedCategorys[" + l + "].SupportedStorageTypes[" + m + "].AvailableResources.Length"); n++)
                                {
                                    DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategory.DescribeAvailableResource_SupportedStorageType.DescribeAvailableResource_AvailableResource availableResource = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategory.DescribeAvailableResource_SupportedStorageType.DescribeAvailableResource_AvailableResource();
                                    availableResource.DBInstanceClass = _ctx.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedCategorys[" + l + "].SupportedStorageTypes[" + m + "].AvailableResources[" + n + "].DBInstanceClass");
                                    availableResource.StorageRange    = _ctx.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedCategorys[" + l + "].SupportedStorageTypes[" + m + "].AvailableResources[" + n + "].StorageRange");

                                    DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategory.DescribeAvailableResource_SupportedStorageType.DescribeAvailableResource_AvailableResource.DescribeAvailableResource_DBInstanceStorageRange dBInstanceStorageRange = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategory.DescribeAvailableResource_SupportedStorageType.DescribeAvailableResource_AvailableResource.DescribeAvailableResource_DBInstanceStorageRange();
                                    dBInstanceStorageRange.Max  = _ctx.IntegerValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedCategorys[" + l + "].SupportedStorageTypes[" + m + "].AvailableResources[" + n + "].DBInstanceStorageRange.Max");
                                    dBInstanceStorageRange.Min  = _ctx.IntegerValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedCategorys[" + l + "].SupportedStorageTypes[" + m + "].AvailableResources[" + n + "].DBInstanceStorageRange.Min");
                                    dBInstanceStorageRange.Step = _ctx.IntegerValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedCategorys[" + l + "].SupportedStorageTypes[" + m + "].AvailableResources[" + n + "].DBInstanceStorageRange.Step");
                                    availableResource.DBInstanceStorageRange = dBInstanceStorageRange;

                                    supportedStorageType_availableResources.Add(availableResource);
                                }
                                supportedStorageType.AvailableResources = supportedStorageType_availableResources;

                                supportedCategory_supportedStorageTypes.Add(supportedStorageType);
                            }
                            supportedCategory.SupportedStorageTypes = supportedCategory_supportedStorageTypes;

                            supportedEngineVersion_supportedCategorys.Add(supportedCategory);
                        }
                        supportedEngineVersion.SupportedCategorys = supportedEngineVersion_supportedCategorys;

                        supportedEngine_supportedEngineVersions.Add(supportedEngineVersion);
                    }
                    supportedEngine.SupportedEngineVersions = supportedEngine_supportedEngineVersions;

                    availableZone_supportedEngines.Add(supportedEngine);
                }
                availableZone.SupportedEngines = availableZone_supportedEngines;

                describeAvailableResourceResponse_availableZones.Add(availableZone);
            }
            describeAvailableResourceResponse.AvailableZones = describeAvailableResourceResponse_availableZones;

            return(describeAvailableResourceResponse);
        }
        public static DescribeAvailableResourceResponse Unmarshall(UnmarshallerContext _ctx)
        {
            DescribeAvailableResourceResponse describeAvailableResourceResponse = new DescribeAvailableResourceResponse();

            describeAvailableResourceResponse.HttpResponse = _ctx.HttpResponse;
            describeAvailableResourceResponse.RequestId    = _ctx.StringValue("DescribeAvailableResource.RequestId");

            List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone> describeAvailableResourceResponse_availableZones = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone>();

            for (int i = 0; i < _ctx.Length("DescribeAvailableResource.AvailableZones.Length"); i++)
            {
                DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone availableZone = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone();
                availableZone.RegionId     = _ctx.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].RegionId");
                availableZone.ZoneId       = _ctx.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].ZoneId");
                availableZone.Status       = _ctx.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].Status");
                availableZone.NetworkTypes = _ctx.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].NetworkTypes");
                availableZone.ZoneName     = _ctx.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].ZoneName");

                List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine> availableZone_supportedEngines = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine>();
                for (int j = 0; j < _ctx.Length("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines.Length"); j++)
                {
                    DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine supportedEngine = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine();
                    supportedEngine.Engine = _ctx.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].Engine");

                    List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType> supportedEngine_supportedEditionTypes = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType>();
                    for (int k = 0; k < _ctx.Length("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEditionTypes.Length"); k++)
                    {
                        DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType supportedEditionType = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType();
                        supportedEditionType.EditionType = _ctx.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEditionTypes[" + k + "].EditionType");

                        List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType.DescribeAvailableResource_SupportedSeriesType> supportedEditionType_supportedSeriesTypes = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType.DescribeAvailableResource_SupportedSeriesType>();
                        for (int l = 0; l < _ctx.Length("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEditionTypes[" + k + "].SupportedSeriesTypes.Length"); l++)
                        {
                            DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType.DescribeAvailableResource_SupportedSeriesType supportedSeriesType = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType.DescribeAvailableResource_SupportedSeriesType();
                            supportedSeriesType.SeriesType = _ctx.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEditionTypes[" + k + "].SupportedSeriesTypes[" + l + "].SeriesType");

                            List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType.DescribeAvailableResource_SupportedSeriesType.DescribeAvailableResource_SupportedEngineVersion> supportedSeriesType_supportedEngineVersions = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType.DescribeAvailableResource_SupportedSeriesType.DescribeAvailableResource_SupportedEngineVersion>();
                            for (int m = 0; m < _ctx.Length("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEditionTypes[" + k + "].SupportedSeriesTypes[" + l + "].SupportedEngineVersions.Length"); m++)
                            {
                                DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType.DescribeAvailableResource_SupportedSeriesType.DescribeAvailableResource_SupportedEngineVersion supportedEngineVersion = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType.DescribeAvailableResource_SupportedSeriesType.DescribeAvailableResource_SupportedEngineVersion();
                                supportedEngineVersion.Version = _ctx.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEditionTypes[" + k + "].SupportedSeriesTypes[" + l + "].SupportedEngineVersions[" + m + "].Version");

                                List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType.DescribeAvailableResource_SupportedSeriesType.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType> supportedEngineVersion_supportedArchitectureTypes = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType.DescribeAvailableResource_SupportedSeriesType.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType>();
                                for (int n = 0; n < _ctx.Length("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEditionTypes[" + k + "].SupportedSeriesTypes[" + l + "].SupportedEngineVersions[" + m + "].SupportedArchitectureTypes.Length"); n++)
                                {
                                    DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType.DescribeAvailableResource_SupportedSeriesType.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType supportedArchitectureType = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType.DescribeAvailableResource_SupportedSeriesType.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType();
                                    supportedArchitectureType.Architecture = _ctx.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEditionTypes[" + k + "].SupportedSeriesTypes[" + l + "].SupportedEngineVersions[" + m + "].SupportedArchitectureTypes[" + n + "].Architecture");

                                    List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType.DescribeAvailableResource_SupportedSeriesType.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedShardNumber> supportedArchitectureType_supportedShardNumbers = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType.DescribeAvailableResource_SupportedSeriesType.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedShardNumber>();
                                    for (int o = 0; o < _ctx.Length("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEditionTypes[" + k + "].SupportedSeriesTypes[" + l + "].SupportedEngineVersions[" + m + "].SupportedArchitectureTypes[" + n + "].SupportedShardNumbers.Length"); o++)
                                    {
                                        DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType.DescribeAvailableResource_SupportedSeriesType.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedShardNumber supportedShardNumber = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType.DescribeAvailableResource_SupportedSeriesType.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedShardNumber();
                                        supportedShardNumber.ShardNumber = _ctx.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEditionTypes[" + k + "].SupportedSeriesTypes[" + l + "].SupportedEngineVersions[" + m + "].SupportedArchitectureTypes[" + n + "].SupportedShardNumbers[" + o + "].ShardNumber");

                                        List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType.DescribeAvailableResource_SupportedSeriesType.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedShardNumber.DescribeAvailableResource_SupportedNodeType> supportedShardNumber_supportedNodeTypes = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType.DescribeAvailableResource_SupportedSeriesType.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedShardNumber.DescribeAvailableResource_SupportedNodeType>();
                                        for (int p = 0; p < _ctx.Length("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEditionTypes[" + k + "].SupportedSeriesTypes[" + l + "].SupportedEngineVersions[" + m + "].SupportedArchitectureTypes[" + n + "].SupportedShardNumbers[" + o + "].SupportedNodeTypes.Length"); p++)
                                        {
                                            DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType.DescribeAvailableResource_SupportedSeriesType.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedShardNumber.DescribeAvailableResource_SupportedNodeType supportedNodeType = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType.DescribeAvailableResource_SupportedSeriesType.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedShardNumber.DescribeAvailableResource_SupportedNodeType();
                                            supportedNodeType.SupportedNodeType = _ctx.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEditionTypes[" + k + "].SupportedSeriesTypes[" + l + "].SupportedEngineVersions[" + m + "].SupportedArchitectureTypes[" + n + "].SupportedShardNumbers[" + o + "].SupportedNodeTypes[" + p + "].SupportedNodeType");

                                            List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType.DescribeAvailableResource_SupportedSeriesType.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedShardNumber.DescribeAvailableResource_SupportedNodeType.DescribeAvailableResource_AvailableResource> supportedNodeType_availableResources = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType.DescribeAvailableResource_SupportedSeriesType.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedShardNumber.DescribeAvailableResource_SupportedNodeType.DescribeAvailableResource_AvailableResource>();
                                            for (int q = 0; q < _ctx.Length("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEditionTypes[" + k + "].SupportedSeriesTypes[" + l + "].SupportedEngineVersions[" + m + "].SupportedArchitectureTypes[" + n + "].SupportedShardNumbers[" + o + "].SupportedNodeTypes[" + p + "].AvailableResources.Length"); q++)
                                            {
                                                DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType.DescribeAvailableResource_SupportedSeriesType.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedShardNumber.DescribeAvailableResource_SupportedNodeType.DescribeAvailableResource_AvailableResource availableResource = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEditionType.DescribeAvailableResource_SupportedSeriesType.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedShardNumber.DescribeAvailableResource_SupportedNodeType.DescribeAvailableResource_AvailableResource();
                                                availableResource.InstanceClass       = _ctx.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEditionTypes[" + k + "].SupportedSeriesTypes[" + l + "].SupportedEngineVersions[" + m + "].SupportedArchitectureTypes[" + n + "].SupportedShardNumbers[" + o + "].SupportedNodeTypes[" + p + "].AvailableResources[" + q + "].InstanceClass");
                                                availableResource.InstanceClassRemark = _ctx.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEditionTypes[" + k + "].SupportedSeriesTypes[" + l + "].SupportedEngineVersions[" + m + "].SupportedArchitectureTypes[" + n + "].SupportedShardNumbers[" + o + "].SupportedNodeTypes[" + p + "].AvailableResources[" + q + "].InstanceClassRemark");

                                                supportedNodeType_availableResources.Add(availableResource);
                                            }
                                            supportedNodeType.AvailableResources = supportedNodeType_availableResources;

                                            supportedShardNumber_supportedNodeTypes.Add(supportedNodeType);
                                        }
                                        supportedShardNumber.SupportedNodeTypes = supportedShardNumber_supportedNodeTypes;

                                        supportedArchitectureType_supportedShardNumbers.Add(supportedShardNumber);
                                    }
                                    supportedArchitectureType.SupportedShardNumbers = supportedArchitectureType_supportedShardNumbers;

                                    supportedEngineVersion_supportedArchitectureTypes.Add(supportedArchitectureType);
                                }
                                supportedEngineVersion.SupportedArchitectureTypes = supportedEngineVersion_supportedArchitectureTypes;

                                supportedSeriesType_supportedEngineVersions.Add(supportedEngineVersion);
                            }
                            supportedSeriesType.SupportedEngineVersions = supportedSeriesType_supportedEngineVersions;

                            supportedEditionType_supportedSeriesTypes.Add(supportedSeriesType);
                        }
                        supportedEditionType.SupportedSeriesTypes = supportedEditionType_supportedSeriesTypes;

                        supportedEngine_supportedEditionTypes.Add(supportedEditionType);
                    }
                    supportedEngine.SupportedEditionTypes = supportedEngine_supportedEditionTypes;

                    availableZone_supportedEngines.Add(supportedEngine);
                }
                availableZone.SupportedEngines = availableZone_supportedEngines;

                describeAvailableResourceResponse_availableZones.Add(availableZone);
            }
            describeAvailableResourceResponse.AvailableZones = describeAvailableResourceResponse_availableZones;

            return(describeAvailableResourceResponse);
        }
        public static DescribeAvailableResourceResponse Unmarshall(UnmarshallerContext context)
        {
            DescribeAvailableResourceResponse describeAvailableResourceResponse = new DescribeAvailableResourceResponse();

            describeAvailableResourceResponse.HttpResponse = context.HttpResponse;
            describeAvailableResourceResponse.RequestId    = context.StringValue("DescribeAvailableResource.RequestId");

            List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone> describeAvailableResourceResponse_availableZones = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone>();

            for (int i = 0; i < context.Length("DescribeAvailableResource.AvailableZones.Length"); i++)
            {
                DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone availableZone = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone();
                availableZone.RegionId = context.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].RegionId");
                availableZone.ZoneId   = context.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].ZoneId");

                List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine> availableZone_supportedEngines = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine>();
                for (int j = 0; j < context.Length("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines.Length"); j++)
                {
                    DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine supportedEngine = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine();
                    supportedEngine.Engine = context.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].Engine");

                    List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion> supportedEngine_supportedEngineVersions = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion>();
                    for (int k = 0; k < context.Length("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions.Length"); k++)
                    {
                        DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion supportedEngineVersion = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion();
                        supportedEngineVersion.Version = context.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].Version");

                        List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategoriesItem> supportedEngineVersion_supportedCategories = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategoriesItem>();
                        for (int l = 0; l < context.Length("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedCategories.Length"); l++)
                        {
                            DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategoriesItem supportedCategoriesItem = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategoriesItem();
                            supportedCategoriesItem.Category = context.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedCategories[" + l + "].Category");

                            List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategoriesItem.DescribeAvailableResource_SupportedStorageType> supportedCategoriesItem_supportedStorageTypes = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategoriesItem.DescribeAvailableResource_SupportedStorageType>();
                            for (int m = 0; m < context.Length("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedCategories[" + l + "].SupportedStorageTypes.Length"); m++)
                            {
                                DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategoriesItem.DescribeAvailableResource_SupportedStorageType supportedStorageType = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategoriesItem.DescribeAvailableResource_SupportedStorageType();
                                supportedStorageType.StorageType = context.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedCategories[" + l + "].SupportedStorageTypes[" + m + "].StorageType");

                                List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategoriesItem.DescribeAvailableResource_SupportedStorageType.DescribeAvailableResource_CoreResource> supportedStorageType_coreResources = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategoriesItem.DescribeAvailableResource_SupportedStorageType.DescribeAvailableResource_CoreResource>();
                                for (int n = 0; n < context.Length("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedCategories[" + l + "].SupportedStorageTypes[" + m + "].CoreResources.Length"); n++)
                                {
                                    DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategoriesItem.DescribeAvailableResource_SupportedStorageType.DescribeAvailableResource_CoreResource coreResource = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategoriesItem.DescribeAvailableResource_SupportedStorageType.DescribeAvailableResource_CoreResource();
                                    coreResource.InstanceType = context.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedCategories[" + l + "].SupportedStorageTypes[" + m + "].CoreResources[" + n + "].InstanceType");
                                    coreResource.MaxCoreCount = context.IntegerValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedCategories[" + l + "].SupportedStorageTypes[" + m + "].CoreResources[" + n + "].MaxCoreCount");

                                    DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategoriesItem.DescribeAvailableResource_SupportedStorageType.DescribeAvailableResource_CoreResource.DescribeAvailableResource_DBInstanceStorageRange dBInstanceStorageRange = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategoriesItem.DescribeAvailableResource_SupportedStorageType.DescribeAvailableResource_CoreResource.DescribeAvailableResource_DBInstanceStorageRange();
                                    dBInstanceStorageRange.MaxSize      = context.IntegerValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedCategories[" + l + "].SupportedStorageTypes[" + m + "].CoreResources[" + n + "].DBInstanceStorageRange.MaxSize");
                                    dBInstanceStorageRange.MinSize      = context.IntegerValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedCategories[" + l + "].SupportedStorageTypes[" + m + "].CoreResources[" + n + "].DBInstanceStorageRange.MinSize");
                                    dBInstanceStorageRange.StepSize     = context.IntegerValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedCategories[" + l + "].SupportedStorageTypes[" + m + "].CoreResources[" + n + "].DBInstanceStorageRange.StepSize");
                                    coreResource.DBInstanceStorageRange = dBInstanceStorageRange;

                                    DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategoriesItem.DescribeAvailableResource_SupportedStorageType.DescribeAvailableResource_CoreResource.DescribeAvailableResource_InstanceTypeDetail instanceTypeDetail = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedCategoriesItem.DescribeAvailableResource_SupportedStorageType.DescribeAvailableResource_CoreResource.DescribeAvailableResource_InstanceTypeDetail();
                                    instanceTypeDetail.Cpu          = context.IntegerValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedCategories[" + l + "].SupportedStorageTypes[" + m + "].CoreResources[" + n + "].InstanceTypeDetail.Cpu");
                                    instanceTypeDetail.Mem          = context.IntegerValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedCategories[" + l + "].SupportedStorageTypes[" + m + "].CoreResources[" + n + "].InstanceTypeDetail.Mem");
                                    coreResource.InstanceTypeDetail = instanceTypeDetail;

                                    supportedStorageType_coreResources.Add(coreResource);
                                }
                                supportedStorageType.CoreResources = supportedStorageType_coreResources;

                                supportedCategoriesItem_supportedStorageTypes.Add(supportedStorageType);
                            }
                            supportedCategoriesItem.SupportedStorageTypes = supportedCategoriesItem_supportedStorageTypes;

                            supportedEngineVersion_supportedCategories.Add(supportedCategoriesItem);
                        }
                        supportedEngineVersion.SupportedCategories = supportedEngineVersion_supportedCategories;

                        supportedEngine_supportedEngineVersions.Add(supportedEngineVersion);
                    }
                    supportedEngine.SupportedEngineVersions = supportedEngine_supportedEngineVersions;

                    availableZone_supportedEngines.Add(supportedEngine);
                }
                availableZone.SupportedEngines = availableZone_supportedEngines;

                List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_MasterResource> availableZone_masterResources = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_MasterResource>();
                for (int j = 0; j < context.Length("DescribeAvailableResource.AvailableZones[" + i + "].MasterResources.Length"); j++)
                {
                    DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_MasterResource masterResource = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_MasterResource();
                    masterResource.InstanceType = context.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].MasterResources[" + j + "].InstanceType");

                    DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_MasterResource.DescribeAvailableResource_InstanceTypeDetail1 instanceTypeDetail1 = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_MasterResource.DescribeAvailableResource_InstanceTypeDetail1();
                    instanceTypeDetail1.Cpu            = context.IntegerValue("DescribeAvailableResource.AvailableZones[" + i + "].MasterResources[" + j + "].InstanceTypeDetail.Cpu");
                    instanceTypeDetail1.Mem            = context.IntegerValue("DescribeAvailableResource.AvailableZones[" + i + "].MasterResources[" + j + "].InstanceTypeDetail.Mem");
                    masterResource.InstanceTypeDetail1 = instanceTypeDetail1;

                    availableZone_masterResources.Add(masterResource);
                }
                availableZone.MasterResources = availableZone_masterResources;

                describeAvailableResourceResponse_availableZones.Add(availableZone);
            }
            describeAvailableResourceResponse.AvailableZones = describeAvailableResourceResponse_availableZones;

            return(describeAvailableResourceResponse);
        }
        public static DescribeAvailableResourceResponse Unmarshall(UnmarshallerContext context)
        {
            DescribeAvailableResourceResponse describeAvailableResourceResponse = new DescribeAvailableResourceResponse();

            describeAvailableResourceResponse.HttpResponse = context.HttpResponse;
            describeAvailableResourceResponse.RequestId    = context.StringValue("DescribeAvailableResource.RequestId");

            List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone> describeAvailableResourceResponse_availableZones = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone>();

            for (int i = 0; i < context.Length("DescribeAvailableResource.AvailableZones.Length"); i++)
            {
                DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone availableZone = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone();
                availableZone.RegionId     = context.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].RegionId");
                availableZone.ZoneId       = context.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].ZoneId");
                availableZone.Status       = context.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].Status");
                availableZone.NetworkTypes = context.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].NetworkTypes");

                List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine> availableZone_supportedEngines = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine>();
                for (int j = 0; j < context.Length("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines.Length"); j++)
                {
                    DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine supportedEngine = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine();
                    supportedEngine.Engine = context.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].Engine");

                    List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion> supportedEngine_supportedEngineVersions = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion>();
                    for (int k = 0; k < context.Length("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions.Length"); k++)
                    {
                        DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion supportedEngineVersion = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion();
                        supportedEngineVersion.Version = context.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].Version");

                        List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType> supportedEngineVersion_supportedArchitectureTypes = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType>();
                        for (int l = 0; l < context.Length("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedArchitectureTypes.Length"); l++)
                        {
                            DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType supportedArchitectureType = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType();
                            supportedArchitectureType.Architecture = context.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedArchitectureTypes[" + l + "].Architecture");

                            List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedPerformanceType> supportedArchitectureType_supportedPerformanceTypes = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedPerformanceType>();
                            for (int m = 0; m < context.Length("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedArchitectureTypes[" + l + "].SupportedPerformanceTypes.Length"); m++)
                            {
                                DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedPerformanceType supportedPerformanceType = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedPerformanceType();
                                supportedPerformanceType.PerformanceType = context.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedArchitectureTypes[" + l + "].SupportedPerformanceTypes[" + m + "].PerformanceType");

                                List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedPerformanceType.DescribeAvailableResource_SupportedStorageType> supportedPerformanceType_supportedStorageTypes = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedPerformanceType.DescribeAvailableResource_SupportedStorageType>();
                                for (int n = 0; n < context.Length("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedArchitectureTypes[" + l + "].SupportedPerformanceTypes[" + m + "].SupportedStorageTypes.Length"); n++)
                                {
                                    DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedPerformanceType.DescribeAvailableResource_SupportedStorageType supportedStorageType = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedPerformanceType.DescribeAvailableResource_SupportedStorageType();
                                    supportedStorageType.StorageType = context.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedArchitectureTypes[" + l + "].SupportedPerformanceTypes[" + m + "].SupportedStorageTypes[" + n + "].StorageType");

                                    List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedPerformanceType.DescribeAvailableResource_SupportedStorageType.DescribeAvailableResource_SupportedNodeType> supportedStorageType_supportedNodeTypes = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedPerformanceType.DescribeAvailableResource_SupportedStorageType.DescribeAvailableResource_SupportedNodeType>();
                                    for (int o = 0; o < context.Length("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedArchitectureTypes[" + l + "].SupportedPerformanceTypes[" + m + "].SupportedStorageTypes[" + n + "].SupportedNodeTypes.Length"); o++)
                                    {
                                        DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedPerformanceType.DescribeAvailableResource_SupportedStorageType.DescribeAvailableResource_SupportedNodeType supportedNodeType = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedPerformanceType.DescribeAvailableResource_SupportedStorageType.DescribeAvailableResource_SupportedNodeType();
                                        supportedNodeType.NodeType = context.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedArchitectureTypes[" + l + "].SupportedPerformanceTypes[" + m + "].SupportedStorageTypes[" + n + "].SupportedNodeTypes[" + o + "].NodeType");

                                        List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedPerformanceType.DescribeAvailableResource_SupportedStorageType.DescribeAvailableResource_SupportedNodeType.DescribeAvailableResource_SupportedPackageType> supportedNodeType_supportedPackageTypes = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedPerformanceType.DescribeAvailableResource_SupportedStorageType.DescribeAvailableResource_SupportedNodeType.DescribeAvailableResource_SupportedPackageType>();
                                        for (int p = 0; p < context.Length("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedArchitectureTypes[" + l + "].SupportedPerformanceTypes[" + m + "].SupportedStorageTypes[" + n + "].SupportedNodeTypes[" + o + "].SupportedPackageTypes.Length"); p++)
                                        {
                                            DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedPerformanceType.DescribeAvailableResource_SupportedStorageType.DescribeAvailableResource_SupportedNodeType.DescribeAvailableResource_SupportedPackageType supportedPackageType = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedPerformanceType.DescribeAvailableResource_SupportedStorageType.DescribeAvailableResource_SupportedNodeType.DescribeAvailableResource_SupportedPackageType();
                                            supportedPackageType.PackageType = context.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedArchitectureTypes[" + l + "].SupportedPerformanceTypes[" + m + "].SupportedStorageTypes[" + n + "].SupportedNodeTypes[" + o + "].SupportedPackageTypes[" + p + "].PackageType");

                                            List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedPerformanceType.DescribeAvailableResource_SupportedStorageType.DescribeAvailableResource_SupportedNodeType.DescribeAvailableResource_SupportedPackageType.DescribeAvailableResource_AvailableResource> supportedPackageType_availableResources = new List <DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedPerformanceType.DescribeAvailableResource_SupportedStorageType.DescribeAvailableResource_SupportedNodeType.DescribeAvailableResource_SupportedPackageType.DescribeAvailableResource_AvailableResource>();
                                            for (int q = 0; q < context.Length("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedArchitectureTypes[" + l + "].SupportedPerformanceTypes[" + m + "].SupportedStorageTypes[" + n + "].SupportedNodeTypes[" + o + "].SupportedPackageTypes[" + p + "].AvailableResources.Length"); q++)
                                            {
                                                DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedPerformanceType.DescribeAvailableResource_SupportedStorageType.DescribeAvailableResource_SupportedNodeType.DescribeAvailableResource_SupportedPackageType.DescribeAvailableResource_AvailableResource availableResource = new DescribeAvailableResourceResponse.DescribeAvailableResource_AvailableZone.DescribeAvailableResource_SupportedEngine.DescribeAvailableResource_SupportedEngineVersion.DescribeAvailableResource_SupportedArchitectureType.DescribeAvailableResource_SupportedPerformanceType.DescribeAvailableResource_SupportedStorageType.DescribeAvailableResource_SupportedNodeType.DescribeAvailableResource_SupportedPackageType.DescribeAvailableResource_AvailableResource();
                                                availableResource.InstanceClass = context.StringValue("DescribeAvailableResource.AvailableZones[" + i + "].SupportedEngines[" + j + "].SupportedEngineVersions[" + k + "].SupportedArchitectureTypes[" + l + "].SupportedPerformanceTypes[" + m + "].SupportedStorageTypes[" + n + "].SupportedNodeTypes[" + o + "].SupportedPackageTypes[" + p + "].AvailableResources[" + q + "].InstanceClass");

                                                supportedPackageType_availableResources.Add(availableResource);
                                            }
                                            supportedPackageType.AvailableResources = supportedPackageType_availableResources;

                                            supportedNodeType_supportedPackageTypes.Add(supportedPackageType);
                                        }
                                        supportedNodeType.SupportedPackageTypes = supportedNodeType_supportedPackageTypes;

                                        supportedStorageType_supportedNodeTypes.Add(supportedNodeType);
                                    }
                                    supportedStorageType.SupportedNodeTypes = supportedStorageType_supportedNodeTypes;

                                    supportedPerformanceType_supportedStorageTypes.Add(supportedStorageType);
                                }
                                supportedPerformanceType.SupportedStorageTypes = supportedPerformanceType_supportedStorageTypes;

                                supportedArchitectureType_supportedPerformanceTypes.Add(supportedPerformanceType);
                            }
                            supportedArchitectureType.SupportedPerformanceTypes = supportedArchitectureType_supportedPerformanceTypes;

                            supportedEngineVersion_supportedArchitectureTypes.Add(supportedArchitectureType);
                        }
                        supportedEngineVersion.SupportedArchitectureTypes = supportedEngineVersion_supportedArchitectureTypes;

                        supportedEngine_supportedEngineVersions.Add(supportedEngineVersion);
                    }
                    supportedEngine.SupportedEngineVersions = supportedEngine_supportedEngineVersions;

                    availableZone_supportedEngines.Add(supportedEngine);
                }
                availableZone.SupportedEngines = availableZone_supportedEngines;

                describeAvailableResourceResponse_availableZones.Add(availableZone);
            }
            describeAvailableResourceResponse.AvailableZones = describeAvailableResourceResponse_availableZones;

            return(describeAvailableResourceResponse);
        }