Avoid creating UnknownFieldSets unless we really have to.
diff --git a/src/ProtocolBuffers/GeneratedBuilder.cs b/src/ProtocolBuffers/GeneratedBuilder.cs
index c678d66..c3543be 100644
--- a/src/ProtocolBuffers/GeneratedBuilder.cs
+++ b/src/ProtocolBuffers/GeneratedBuilder.cs
@@ -158,10 +158,12 @@
     }
 
     public override TBuilder MergeUnknownFields(UnknownFieldSet unknownFields) {
-      TMessage result = MessageBeingBuilt;
-      result.SetUnknownFields(UnknownFieldSet.CreateBuilder(result.UnknownFields)
-          .MergeFrom(unknownFields)
-          .Build());
+      if (unknownFields != UnknownFieldSet.DefaultInstance) {
+        TMessage result = MessageBeingBuilt;
+        result.SetUnknownFields(UnknownFieldSet.CreateBuilder(result.UnknownFields)
+            .MergeFrom(unknownFields)
+            .Build());
+      }
       return ThisBuilder;
     }