public static DescribeRouteTablesResponse Unmarshall(UnmarshallerContext context)
        {
            DescribeRouteTablesResponse describeRouteTablesResponse = new DescribeRouteTablesResponse();

            describeRouteTablesResponse.HttpResponse = context.HttpResponse;
            describeRouteTablesResponse.RequestId    = context.StringValue("DescribeRouteTables.RequestId");
            describeRouteTablesResponse.TotalCount   = context.IntegerValue("DescribeRouteTables.TotalCount");
            describeRouteTablesResponse.PageNumber   = context.IntegerValue("DescribeRouteTables.PageNumber");
            describeRouteTablesResponse.PageSize     = context.IntegerValue("DescribeRouteTables.PageSize");

            List <DescribeRouteTablesResponse.DescribeRouteTables_RouteTable> describeRouteTablesResponse_routeTables = new List <DescribeRouteTablesResponse.DescribeRouteTables_RouteTable>();

            for (int i = 0; i < context.Length("DescribeRouteTables.RouteTables.Length"); i++)
            {
                DescribeRouteTablesResponse.DescribeRouteTables_RouteTable routeTable = new DescribeRouteTablesResponse.DescribeRouteTables_RouteTable();
                routeTable.VRouterId      = context.StringValue("DescribeRouteTables.RouteTables[" + i + "].VRouterId");
                routeTable.RouteTableId   = context.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteTableId");
                routeTable.RouteTableType = context.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteTableType");
                routeTable.CreationTime   = context.StringValue("DescribeRouteTables.RouteTables[" + i + "].CreationTime");

                List <DescribeRouteTablesResponse.DescribeRouteTables_RouteTable.DescribeRouteTables_RouteEntry> routeTable_routeEntrys = new List <DescribeRouteTablesResponse.DescribeRouteTables_RouteTable.DescribeRouteTables_RouteEntry>();
                for (int j = 0; j < context.Length("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys.Length"); j++)
                {
                    DescribeRouteTablesResponse.DescribeRouteTables_RouteTable.DescribeRouteTables_RouteEntry routeEntry = new DescribeRouteTablesResponse.DescribeRouteTables_RouteTable.DescribeRouteTables_RouteEntry();
                    routeEntry.RouteTableId         = context.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].RouteTableId");
                    routeEntry.DestinationCidrBlock = context.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].DestinationCidrBlock");
                    routeEntry.Type            = context.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].Type");
                    routeEntry.Status          = context.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].Status");
                    routeEntry.InstanceId      = context.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].InstanceId");
                    routeEntry.NextHopType     = context.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].NextHopType");
                    routeEntry.NextHopRegionId = context.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].NextHopRegionId");

                    List <DescribeRouteTablesResponse.DescribeRouteTables_RouteTable.DescribeRouteTables_RouteEntry.DescribeRouteTables_NextHop> routeEntry_nextHops = new List <DescribeRouteTablesResponse.DescribeRouteTables_RouteTable.DescribeRouteTables_RouteEntry.DescribeRouteTables_NextHop>();
                    for (int k = 0; k < context.Length("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].NextHops.Length"); k++)
                    {
                        DescribeRouteTablesResponse.DescribeRouteTables_RouteTable.DescribeRouteTables_RouteEntry.DescribeRouteTables_NextHop nextHop = new DescribeRouteTablesResponse.DescribeRouteTables_RouteTable.DescribeRouteTables_RouteEntry.DescribeRouteTables_NextHop();
                        nextHop.NextHopType     = context.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].NextHops[" + k + "].NextHopType");
                        nextHop.NextHopId       = context.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].NextHops[" + k + "].NextHopId");
                        nextHop.Enabled         = context.IntegerValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].NextHops[" + k + "].Enabled");
                        nextHop.Weight          = context.IntegerValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].NextHops[" + k + "].Weight");
                        nextHop.NextHopRegionId = context.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].NextHops[" + k + "].NextHopRegionId");

                        routeEntry_nextHops.Add(nextHop);
                    }
                    routeEntry.NextHops = routeEntry_nextHops;

                    routeTable_routeEntrys.Add(routeEntry);
                }
                routeTable.RouteEntrys = routeTable_routeEntrys;

                describeRouteTablesResponse_routeTables.Add(routeTable);
            }
            describeRouteTablesResponse.RouteTables = describeRouteTablesResponse_routeTables;

            return(describeRouteTablesResponse);
        }
        public static DescribeRouteTablesResponse Unmarshall(UnmarshallerContext _ctx)
        {
            DescribeRouteTablesResponse describeRouteTablesResponse = new DescribeRouteTablesResponse();

            describeRouteTablesResponse.HttpResponse = _ctx.HttpResponse;
            describeRouteTablesResponse.RequestId    = _ctx.StringValue("DescribeRouteTables.RequestId");
            describeRouteTablesResponse.TotalCount   = _ctx.IntegerValue("DescribeRouteTables.TotalCount");
            describeRouteTablesResponse.PageNumber   = _ctx.IntegerValue("DescribeRouteTables.PageNumber");
            describeRouteTablesResponse.PageSize     = _ctx.IntegerValue("DescribeRouteTables.PageSize");

            List <DescribeRouteTablesResponse.DescribeRouteTables_RouteTable> describeRouteTablesResponse_routeTables = new List <DescribeRouteTablesResponse.DescribeRouteTables_RouteTable>();

            for (int i = 0; i < _ctx.Length("DescribeRouteTables.RouteTables.Length"); i++)
            {
                DescribeRouteTablesResponse.DescribeRouteTables_RouteTable routeTable = new DescribeRouteTablesResponse.DescribeRouteTables_RouteTable();
                routeTable.VRouterId       = _ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].VRouterId");
                routeTable.RouteTableId    = _ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteTableId");
                routeTable.RouteTableType  = _ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteTableType");
                routeTable.CreationTime    = _ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].CreationTime");
                routeTable.ResourceGroupId = _ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].ResourceGroupId");
                routeTable.Status          = _ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].Status");

                List <string> routeTable_vSwitchIds = new List <string>();
                for (int j = 0; j < _ctx.Length("DescribeRouteTables.RouteTables[" + i + "].VSwitchIds.Length"); j++)
                {
                    routeTable_vSwitchIds.Add(_ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].VSwitchIds[" + j + "]"));
                }
                routeTable.VSwitchIds = routeTable_vSwitchIds;

                List <DescribeRouteTablesResponse.DescribeRouteTables_RouteTable.DescribeRouteTables_RouteEntry> routeTable_routeEntrys = new List <DescribeRouteTablesResponse.DescribeRouteTables_RouteTable.DescribeRouteTables_RouteEntry>();
                for (int j = 0; j < _ctx.Length("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys.Length"); j++)
                {
                    DescribeRouteTablesResponse.DescribeRouteTables_RouteTable.DescribeRouteTables_RouteEntry routeEntry = new DescribeRouteTablesResponse.DescribeRouteTables_RouteTable.DescribeRouteTables_RouteEntry();
                    routeEntry.RouteTableId         = _ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].RouteTableId");
                    routeEntry.DestinationCidrBlock = _ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].DestinationCidrBlock");
                    routeEntry.Type                     = _ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].Type");
                    routeEntry.Status                   = _ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].Status");
                    routeEntry.InstanceId               = _ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].InstanceId");
                    routeEntry.NextHopType              = _ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].NextHopType");
                    routeEntry.RouteEntryName           = _ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].RouteEntryName");
                    routeEntry.Description              = _ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].Description");
                    routeEntry.RouteEntryId             = _ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].RouteEntryId");
                    routeEntry.NextHopRegionId          = _ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].NextHopRegionId");
                    routeEntry.NextHopOppsiteType       = _ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].NextHopOppsiteType");
                    routeEntry.NextHopOppsiteInstanceId = _ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].NextHopOppsiteInstanceId");
                    routeEntry.NextHopOppsiteRegionId   = _ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].NextHopOppsiteRegionId");
                    routeEntry.PrivateIpAddress         = _ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].PrivateIpAddress");

                    List <DescribeRouteTablesResponse.DescribeRouteTables_RouteTable.DescribeRouteTables_RouteEntry.DescribeRouteTables_NextHop> routeEntry_nextHops = new List <DescribeRouteTablesResponse.DescribeRouteTables_RouteTable.DescribeRouteTables_RouteEntry.DescribeRouteTables_NextHop>();
                    for (int k = 0; k < _ctx.Length("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].NextHops.Length"); k++)
                    {
                        DescribeRouteTablesResponse.DescribeRouteTables_RouteTable.DescribeRouteTables_RouteEntry.DescribeRouteTables_NextHop nextHop = new DescribeRouteTablesResponse.DescribeRouteTables_RouteTable.DescribeRouteTables_RouteEntry.DescribeRouteTables_NextHop();
                        nextHop.NextHopType              = _ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].NextHops[" + k + "].NextHopType");
                        nextHop.NextHopId                = _ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].NextHops[" + k + "].NextHopId");
                        nextHop.Enabled                  = _ctx.IntegerValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].NextHops[" + k + "].Enabled");
                        nextHop.Weight                   = _ctx.IntegerValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].NextHops[" + k + "].Weight");
                        nextHop.NextHopRegionId          = _ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].NextHops[" + k + "].NextHopRegionId");
                        nextHop.NextHopOppsiteType       = _ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].NextHops[" + k + "].NextHopOppsiteType");
                        nextHop.NextHopOppsiteInstanceId = _ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].NextHops[" + k + "].NextHopOppsiteInstanceId");
                        nextHop.NextHopOppsiteRegionId   = _ctx.StringValue("DescribeRouteTables.RouteTables[" + i + "].RouteEntrys[" + j + "].NextHops[" + k + "].NextHopOppsiteRegionId");

                        routeEntry_nextHops.Add(nextHop);
                    }
                    routeEntry.NextHops = routeEntry_nextHops;

                    routeTable_routeEntrys.Add(routeEntry);
                }
                routeTable.RouteEntrys = routeTable_routeEntrys;

                describeRouteTablesResponse_routeTables.Add(routeTable);
            }
            describeRouteTablesResponse.RouteTables = describeRouteTablesResponse_routeTables;

            return(describeRouteTablesResponse);
        }