Split off the Serialization namespace into a new assembly.
diff --git a/src/ProtocolBuffers.Test/ProtocolBuffers.Test.csproj b/src/ProtocolBuffers.Test/ProtocolBuffers.Test.csproj
index 5e31987..bf22426 100644
--- a/src/ProtocolBuffers.Test/ProtocolBuffers.Test.csproj
+++ b/src/ProtocolBuffers.Test/ProtocolBuffers.Test.csproj
@@ -124,6 +124,10 @@
     <Compile Include="WireFormatTest.cs" />

   </ItemGroup>

   <ItemGroup>

+    <ProjectReference Include="..\ProtocolBuffers.Serialization\ProtocolBuffers.Serialization.csproj">

+      <Project>{231391AF-449C-4a39-986C-AD7F270F4750}</Project>

+      <Name>ProtocolBuffers.Serialization</Name>

+    </ProjectReference>

     <ProjectReference Include="..\ProtocolBuffers\ProtocolBuffers.csproj">

       <Project>{6908BDCE-D925-43F3-94AC-A531E6DF2591}</Project>

       <Name>ProtocolBuffers</Name>

diff --git a/src/ProtocolBuffers.Test/TestWriterFormatJson.cs b/src/ProtocolBuffers.Test/TestWriterFormatJson.cs
index fe6c22b..3f534fc 100644
--- a/src/ProtocolBuffers.Test/TestWriterFormatJson.cs
+++ b/src/ProtocolBuffers.Test/TestWriterFormatJson.cs
@@ -38,7 +38,7 @@
             TestAllTypes msg = new TestAllTypes.Builder().SetDefaultBool(true).Build();

             string json = msg.ToJson();

             Assert.AreEqual("{\"default_bool\":true}", json);

-            TestAllTypes copy = TestAllTypes.ParseFromJson(json);

+            TestAllTypes copy = new TestAllTypes.Builder().MergeFromJson(json).Build();

             Assert.IsTrue(copy.HasDefaultBool && copy.DefaultBool);

             Assert.AreEqual(msg, copy);

         }

@@ -49,7 +49,7 @@
             TestAllTypes msg = new TestAllTypes.Builder().SetDefaultBool(true).Build();

             string json = msg.ToJson();

             Assert.AreEqual("{\"default_bool\":true}", json);

-            TestAllTypes copy = TestAllTypes.ParseFromJson(new StringReader(json));

+            TestAllTypes copy = new TestAllTypes.Builder().MergeFromJson(new StringReader(json)).Build();

             Assert.IsTrue(copy.HasDefaultBool && copy.DefaultBool);

             Assert.AreEqual(msg, copy);

         }

@@ -337,13 +337,13 @@
             Assert.AreEqual(3, ordinal);

             Assert.AreEqual(3, builder.TextlinesCount);

         }

-        [Test,ExpectedException(typeof(InvalidProtocolBufferException))]

+        [Test,ExpectedException(typeof(RecursionLimitExceededException))]

         public void TestRecursiveLimit()

         {

             StringBuilder sb = new StringBuilder(8192);

             for (int i = 0; i < 80; i++)

                 sb.Append("{\"child\":");

-            TestXmlRescursive msg = TestXmlRescursive.ParseFromJson(sb.ToString());

+            TestXmlRescursive msg = new TestXmlRescursive.Builder().MergeFromJson(sb.ToString()).Build();

         }

         [Test, ExpectedException(typeof(FormatException))]

         public void FailWithEmptyText()

diff --git a/src/ProtocolBuffers.Test/TestWriterFormatXml.cs b/src/ProtocolBuffers.Test/TestWriterFormatXml.cs
index acad6f1..2ffca9f 100644
--- a/src/ProtocolBuffers.Test/TestWriterFormatXml.cs
+++ b/src/ProtocolBuffers.Test/TestWriterFormatXml.cs
@@ -18,7 +18,7 @@
             TestAllTypes msg = new TestAllTypes.Builder().SetDefaultBool(true).Build();

             string xml = msg.ToXml();

             Assert.AreEqual("<root><default_bool>true</default_bool></root>", xml);

-            TestAllTypes copy = TestAllTypes.ParseFromXml(XmlReader.Create(new StringReader(xml)));

+            TestAllTypes copy = new TestAllTypes.Builder().MergeFromXml(XmlReader.Create(new StringReader(xml))).Build();

             Assert.IsTrue(copy.HasDefaultBool && copy.DefaultBool);

             Assert.AreEqual(msg, copy);

         }

@@ -29,7 +29,7 @@
             TestAllTypes msg = new TestAllTypes.Builder().SetDefaultBool(true).Build();

             string xml = msg.ToXml("message");

             Assert.AreEqual("<message><default_bool>true</default_bool></message>", xml);

-            TestAllTypes copy = TestAllTypes.ParseFromXml("message", XmlReader.Create(new StringReader(xml)));

+            TestAllTypes copy = new TestAllTypes.Builder().MergeFromXml("message", XmlReader.Create(new StringReader(xml))).Build();

             Assert.IsTrue(copy.HasDefaultBool && copy.DefaultBool);

             Assert.AreEqual(msg, copy);

         }

@@ -324,13 +324,13 @@
             TestXmlMessage copy = rdr.Merge(TestXmlMessage.CreateBuilder(), registry).Build();

             Assert.AreEqual(message, copy);

         }

-        [Test, ExpectedException(typeof(InvalidProtocolBufferException))]

+        [Test, ExpectedException(typeof(RecursionLimitExceededException))]

         public void TestRecursiveLimit()

         {

             StringBuilder sb = new StringBuilder(8192);

             for (int i = 0; i < 80; i++)

                 sb.Append("<child>");

-            TestXmlRescursive msg = TestXmlRescursive.ParseFromXml("child", XmlReader.Create(new StringReader(sb.ToString())));

+            TestXmlRescursive msg = new TestXmlRescursive.Builder().MergeFromXml("child", XmlReader.Create(new StringReader(sb.ToString()))).Build();

         }

     }

 }