/// <summary>
        /// Deserializes the given object from bytes
        /// </summary>
        /// <param name="bytes">The bytes to deserialize</param>
        /// <returns>The object</returns>
        /// <seealso cref="Org.IdentityConnectors.Framework.Common.Serializer.ObjectSerializerFactory" />
        public static object DeserializeBinaryObject(byte[] bytes)
        {
            ObjectSerializerFactory  fact = ObjectSerializerFactory.GetInstance();
            MemoryStream             mem  = new MemoryStream(bytes);
            BinaryObjectDeserializer des  = fact.NewBinaryDeserializer(mem);

            return(des.ReadObject());
        }
        /// <summary>
        /// Serializes the given object to xml
        /// </summary>
        /// <param name="object">The object to serialize</param>
        /// <param name="includeHeader">True if we are to include the xml header.</param>
        /// <returns>The xml</returns>
        /// <seealso cref="Org.IdentityConnectors.Framework.Common.Serializer.ObjectSerializerFactory" />
        public static String SerializeXmlObject(Object obj, bool includeHeader)
        {
            ObjectSerializerFactory fact = ObjectSerializerFactory.GetInstance();
            StringWriter            w    = new StringWriter();
            XmlObjectSerializer     ser  = fact.NewXmlSerializer(w, includeHeader, false);

            ser.WriteObject(obj);
            ser.Close(true);
            return(w.ToString());
        }
        /// <summary>
        /// Serializes the given object to bytes
        /// </summary>
        /// <param name="object">The object to serialize</param>
        /// <returns>The bytes</returns>
        /// <seealso cref="Org.IdentityConnectors.Framework.Common.Serializer.ObjectSerializerFactory" />
        public static byte[] SerializeBinaryObject(object obj)
        {
            ObjectSerializerFactory fact = ObjectSerializerFactory.GetInstance();
            MemoryStream            mem  = new MemoryStream();
            BinaryObjectSerializer  ser  = fact.NewBinarySerializer(mem);

            ser.WriteObject(obj);
            ser.Close();
            return(mem.ToArray());
        }
        /// <summary>
        /// Deserializes the given object from xml
        /// </summary>
        /// <param name="bytes">The xml to deserialize</param>
        /// <param name="validate">True if we are to validate the xml</param>
        /// <returns>The object</returns>
        /// <seealso cref="Org.IdentityConnectors.Framework.Common.Serializer.ObjectSerializerFactory" />
        public static Object DeserializeXmlObject(String str, bool validate)
        {
            ObjectSerializerFactory fact   = ObjectSerializerFactory.GetInstance();
            StringReader            source = new StringReader(str);
            IList <Object>          rv     = new List <Object>();

            fact.DeserializeXmlStream(source,
                                      obj =>
            {
                rv.Add(obj);
                return(true);
            }, validate);
            if (rv.Count > 0)
            {
                return(rv[0]);
            }
            else
            {
                return(null);
            }
        }