private void Write62_XmlSchemaComplexType(string n, string ns, XmlSchemaComplexType o, bool isNullable, bool needType)
 {
     if (o == null)
     {
         if (isNullable)
         {
             base.WriteNullTagLiteral(n, ns);
         }
     }
     else
     {
         if (!needType && !(o.GetType() == typeof(XmlSchemaComplexType)))
         {
             throw base.CreateUnknownTypeException(o);
         }
         base.EscapeName = false;
         base.WriteStartElement(n, ns, o, false, o.Namespaces);
         if (needType)
         {
             base.WriteXsiType("XmlSchemaComplexType", "http://www.w3.org/2001/XMLSchema");
         }
         base.WriteAttribute("id", "", o.Id);
         XmlAttribute[] unhandledAttributes = o.UnhandledAttributes;
         if (unhandledAttributes != null)
         {
             for (int i = 0; i < unhandledAttributes.Length; i++)
             {
                 XmlAttribute node = unhandledAttributes[i];
                 base.WriteXmlAttribute(node, o);
             }
         }
         base.WriteAttribute("name", "", o.Name);
         if (o.Final != XmlSchemaDerivationMethod.None)
         {
             base.WriteAttribute("final", "", this.Write7_XmlSchemaDerivationMethod(o.Final));
         }
         if (o.IsAbstract)
         {
             base.WriteAttribute("abstract", "", XmlConvert.ToString(o.IsAbstract));
         }
         if (o.Block != XmlSchemaDerivationMethod.None)
         {
             base.WriteAttribute("block", "", this.Write7_XmlSchemaDerivationMethod(o.Block));
         }
         if (o.IsMixed)
         {
             base.WriteAttribute("mixed", "", XmlConvert.ToString(o.IsMixed));
         }
         this.Write11_XmlSchemaAnnotation("annotation", "http://www.w3.org/2001/XMLSchema", o.Annotation, false, false);
         if (o.ContentModel is XmlSchemaSimpleContent)
         {
             this.Write61_XmlSchemaSimpleContent("simpleContent", "http://www.w3.org/2001/XMLSchema", (XmlSchemaSimpleContent) o.ContentModel, false, false);
         }
         else if (o.ContentModel is XmlSchemaComplexContent)
         {
             this.Write58_XmlSchemaComplexContent("complexContent", "http://www.w3.org/2001/XMLSchema", (XmlSchemaComplexContent) o.ContentModel, false, false);
         }
         else if (o.ContentModel != null)
         {
             throw base.CreateUnknownTypeException(o.ContentModel);
         }
         if (o.Particle is XmlSchemaChoice)
         {
             this.Write54_XmlSchemaChoice("choice", "http://www.w3.org/2001/XMLSchema", (XmlSchemaChoice) o.Particle, false, false);
         }
         else if (o.Particle is XmlSchemaAll)
         {
             this.Write55_XmlSchemaAll("all", "http://www.w3.org/2001/XMLSchema", (XmlSchemaAll) o.Particle, false, false);
         }
         else if (o.Particle is XmlSchemaSequence)
         {
             this.Write53_XmlSchemaSequence("sequence", "http://www.w3.org/2001/XMLSchema", (XmlSchemaSequence) o.Particle, false, false);
         }
         else if (o.Particle is XmlSchemaGroupRef)
         {
             this.Write44_XmlSchemaGroupRef("group", "http://www.w3.org/2001/XMLSchema", (XmlSchemaGroupRef) o.Particle, false, false);
         }
         else if (o.Particle != null)
         {
             throw base.CreateUnknownTypeException(o.Particle);
         }
         XmlSchemaObjectCollection attributes = o.Attributes;
         if (attributes != null)
         {
             for (int j = 0; j < attributes.Count; j++)
             {
                 XmlSchemaObject obj2 = attributes[j];
                 if (obj2 is XmlSchemaAttributeGroupRef)
                 {
                     this.Write37_XmlSchemaAttributeGroupRef("attributeGroup", "http://www.w3.org/2001/XMLSchema", (XmlSchemaAttributeGroupRef) obj2, false, false);
                 }
                 else if (obj2 is XmlSchemaAttribute)
                 {
                     this.Write36_XmlSchemaAttribute("attribute", "http://www.w3.org/2001/XMLSchema", (XmlSchemaAttribute) obj2, false, false);
                 }
                 else if (obj2 != null)
                 {
                     throw base.CreateUnknownTypeException(obj2);
                 }
             }
         }
         this.Write39_XmlSchemaAnyAttribute("anyAttribute", "http://www.w3.org/2001/XMLSchema", o.AnyAttribute, false, false);
         base.WriteEndElement(o);
     }
 }