public bool Serialize <T> (T obj1, T obj2, Stream stream, XmlSerializationOptions options)
        {
            if (stream == null)
            {
                throw new ArgumentNullException("stream");
            }

            var encoding      = options != null ? options.Encoding ?? Helper.UTF8Unsigned : Helper.UTF8Unsigned;
            var update_writer = new UpdateTextWriter(new StreamWriter(stream, encoding));
            var context       = new UpdateContext(obj2, stream, encoding);

            using (var xml_writer = XmlWriter.Create(update_writer, new XmlWriterSettings {
                Encoding = encoding, OmitXmlDeclaration = true
            })) {
                xml_serializer.Serialize(obj1, xml_writer, context);
            }
            return(context.Delineated);
        }
 void AssertAreEqual (string expected, Test test)
 {
     var builder = new StringBuilder ();
     using (var string_writer = new StringWriter (builder)) {
         using (var update_writer = new UpdateTextWriter (string_writer)) {
             test (update_writer);
         }
     }
     
     Assert.AreEqual (expected, builder.ToString ());
 }