//===========================================================================================
        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);
        }
        //===========================================================================================
        private void AddMethods(XElement element, IEnumerable <MethodBase> methods)
        {
            ParameterInfo[] parameters = (from method in methods
                                          from parameter in method.GetParameters()
                                          select parameter).ToArray();
            if (parameters.Length == 0)
            {
                element.Add(new XAttribute("type", "empty"));
            }
            else
            {
                if (methods.Count() == 1 && IsTypedElement(parameters))
                {
                    element.Add(new XAttribute("type", _GraphicsMagickNET.GetXsdName(parameters[0])));
                }
                else
                {
                    XElement complexType = new XElement(_Namespace + "complexType");

                    AddArguments(complexType, methods);

                    element.Add(complexType);
                }
            }
        }