private void ExportDataContract(DataContract dataContract)
        {
            if (dataContract.IsBuiltInDataContract)
            {
                return;
            }
            else if (dataContract is XmlDataContract)
            {
                ExportXmlDataContract((XmlDataContract)dataContract);
            }
            else
            {
                XmlSchema schema = GetSchema(dataContract.StableName.Namespace);

                if (dataContract is ClassDataContract)
                {
                    ClassDataContract classDataContract = (ClassDataContract)dataContract;
                    if (classDataContract.IsISerializable)
                    {
                        ExportISerializableDataContract(classDataContract, schema);
                    }
                    else
                    {
                        ExportClassDataContract(classDataContract, schema);
                    }
                }
                else if (dataContract is CollectionDataContract)
                {
                    ExportCollectionDataContract((CollectionDataContract)dataContract, schema);
                }
                else if (dataContract is EnumDataContract)
                {
                    ExportEnumDataContract((EnumDataContract)dataContract, schema);
                }

                ExportTopLevelElement(dataContract, schema);
                Schemas.Reprocess(schema);
            }
        }