private void DetermineStructuresToProcess(Shape containingShape, bool includeContainingShape)
{
if (containingShape.IsStructure)
{
if (this._structuresToProcess.Contains(containingShape))
return;
else if (includeContainingShape)
this._structuresToProcess.Add(containingShape);
foreach (var member in containingShape.Members)
{
if (member.IsStructure)
{
DetermineStructuresToProcess(member.Shape, true);
}
else if (member.IsList)
{
DetermineStructuresToProcess(member.Shape.ListShape, true);
}
else if (member.IsMap)
{
DetermineStructuresToProcess(member.Shape.ValueShape, true);
}
}
}
else if (containingShape.IsList)
{
DetermineStructuresToProcess(containingShape.ListShape, true);
}
else if (containingShape.IsMap)
{
DetermineStructuresToProcess(containingShape.ValueShape, true);
}
}