public void IterateThrough(XmlSchemaComplexType obj)
        {
            if (_functionalVisitor.StartProcessing(obj))
            {
                if (obj.Attributes != null)
                {
                    var en = obj.Attributes.GetEnumerator();
                    while (en.MoveNext())
                    {
                        en.Current.Accept(this);
                    }
                }

                if (obj.ContentModel != null)
                {
                    var complexContent = obj.ContentModel.Content as XmlSchemaComplexContentExtension;
                    if (complexContent != null)
                    {
                        if (complexContent.Attributes != null)
                        {
                            var en = complexContent.Attributes.GetEnumerator();
                            while (en.MoveNext())
                            {
                                en.Current.Accept(this);
                            }
                        }

                        var baseType = XmlSchemaExtensions.GetComplexType(_schemaSet, complexContent.BaseTypeName);
                        baseType.Accept(this);
                        complexContent.Accept(this);
                    }

                    var simpleContent = obj.ContentModel.Content as XmlSchemaSimpleContentExtension;
                    simpleContent?.Accept(this);
                }
                else if (obj.Particle != null)
                {
                    obj.Particle.Accept(this);
                }
            }
            _functionalVisitor.EndProcessing(obj);
        }
        public void IterateThrough(XmlSchemaSimpleContentExtension obj)
        {
            if (_functionalVisitor.StartProcessing(obj))
            {
                if (obj.Attributes != null)
                {
                    var en = obj.Attributes.GetEnumerator();
                    while (en.MoveNext())
                    {
                        en.Current.Accept(this);
                    }
                }

                var baseType = XmlSchemaExtensions.GetComplexType(_schemaSet, obj.BaseTypeName);

                if (baseType != null && obj.BaseTypeName.Namespace != XmlSchema.Namespace)
                {
                    baseType.Accept(this);
                }
            }

            _functionalVisitor.EndProcessing(obj);
        }