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<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();
                    slaveZone.ZoneId = context.StringValue("DescribeZones.Zones["+ i +"].SlaveZones["+ j +"].ZoneId");
                    slaveZone.LocalName = context.StringValue("DescribeZones.Zones["+ i +"].SlaveZones["+ j +"].LocalName");

                    slaveZones.Add(slaveZone);
                }
                zone.SlaveZones = slaveZones;

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

            return describeZonesResponse;
        }