//===========================================================================================
        private void WriteAttributeForEach(IndentedTextWriter writer, ParameterInfo[] allParameters)
        {
            ParameterInfo[] parameters = allParameters.Where(p => _GraphicsMagickNET.GetXsdAttributeType(p) != null).ToArray();
            if (parameters.Length == 0)
            {
                return;
            }

            parameters = parameters.OrderBy(p => p.Name).ToArray();

            writer.WriteLine("for each(XmlAttribute^ attribute in element->Attributes)");
            WriteStartColon(writer);

            if (parameters.DistinctBy(p => _GraphicsMagickNET.GetCppTypeName(p)).Count() == 1)
            {
                writer.Write("arguments[attribute->Name] = _Variables->GetValue<");
                writer.Write(_GraphicsMagickNET.GetCppTypeName(parameters[0]));
                writer.WriteLine(">(attribute);");
            }
            else
            {
                for (int i = 0; i < parameters.Length; i++)
                {
                    string xsdName = _GraphicsMagickNET.GetXsdName(parameters[i]);

                    if (i > 0)
                    {
                        writer.Write("else ");
                    }

                    writer.Write("if (attribute->Name == \"");
                    writer.Write(xsdName);
                    writer.WriteLine("\")");
                    writer.Indent++;
                    writer.Write("arguments[\"");
                    writer.Write(xsdName);
                    writer.Write("\"] = ");
                    WriteGetAttributeValue(writer, _GraphicsMagickNET.GetCppTypeName(parameters[i]), xsdName);
                    writer.Indent--;
                }
            }

            WriteEndColon(writer);
        }