void GenerateUnmarshaller(List<string> structures)
{
foreach (var structure in structures)
{
var shape = this.Configuration.ServiceModel.FindShape(structure);
var lookup = new NestedStructureLookup();
lookup.SearchForNestedStructures(shape);
foreach (var nestedStructure in lookup.NestedStructures)
{
// Skip structure unmarshallers that have already been generated for the parent model
if (IsShapePresentInParentModel(this.Configuration, nestedStructure.Name))
continue;
if (this.Configuration.ServiceModel.Customizations.IsSubstitutedShape(nestedStructure.Name))
continue;
// Skip already processed unmarshallers. This handles the case of structures being returned in mulitiple requests.
if (!this._processedUnmarshallers.Contains(nestedStructure.Name))
{
var generator = GetStructureUnmarshaller();
generator.Structure = nestedStructure;
this.ExecuteGenerator(generator, nestedStructure.Name + "Unmarshaller.cs", "Model.Internal.MarshallTransformations");
this._processedUnmarshallers.Add(nestedStructure.Name);
}
}
}
}