public static ServiceDescription Read(XmlReader reader, bool validate)
        {
            if (!validate)
            {
                return((ServiceDescription)Serializer.Deserialize(reader));
            }
            XmlReaderSettings settings = new XmlReaderSettings {
                ValidationType  = ValidationType.Schema,
                ValidationFlags = XmlSchemaValidationFlags.ProcessIdentityConstraints
            };

            settings.Schemas.Add(Schema);
            settings.Schemas.Add(SoapBinding.Schema);
            settings.ValidationEventHandler += new ValidationEventHandler(ServiceDescription.InstanceValidation);
            warnings.Clear();
            XmlReader xmlReader = XmlReader.Create(reader, settings);

            if (reader.ReadState != ReadState.Initial)
            {
                xmlReader.Read();
            }
            ServiceDescription description = (ServiceDescription)Serializer.Deserialize(xmlReader);

            description.SetWarnings(warnings);
            return(description);
        }