Update generated proto output

The previous output was not generated with proto3-alpha-2. This has been
regenerated using protoc on Maven Central, so it should be the same
output everywhere.
diff --git a/benchmarks/src/generated/main/grpc/testing/Qpstest.java b/benchmarks/src/generated/main/grpc/testing/Qpstest.java
index d61b071..558ff53 100644
--- a/benchmarks/src/generated/main/grpc/testing/Qpstest.java
+++ b/benchmarks/src/generated/main/grpc/testing/Qpstest.java
@@ -420,7 +420,8 @@
     }
     private StatsRequest(
         com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
       this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -448,11 +449,10 @@
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw new RuntimeException(e.setUnfinishedMessage(this));
+        throw e.setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
-        throw new RuntimeException(
-            new com.google.protobuf.InvalidProtocolBufferException(
-                e.getMessage()).setUnfinishedMessage(this));
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
       } finally {
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -476,16 +476,7 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        try {
-          return new StatsRequest(input, extensionRegistry);
-        } catch (RuntimeException e) {
-          if (e.getCause() instanceof
-              com.google.protobuf.InvalidProtocolBufferException) {
-            throw (com.google.protobuf.InvalidProtocolBufferException)
-                e.getCause();
-          }
-          throw e;
-        }
+        return new StatsRequest(input, extensionRegistry);
       }
     };
 
@@ -530,6 +521,7 @@
 
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
+      getSerializedSize();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         output.writeInt32(1, testNum_);
       }
@@ -605,17 +597,12 @@
       return PARSER.parseFrom(input, extensionRegistry);
     }
 
+    public static Builder newBuilder() { return new Builder(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return defaultInstance.toBuilder();
-    }
     public static Builder newBuilder(grpc.testing.Qpstest.StatsRequest prototype) {
-      return defaultInstance.toBuilder().mergeFrom(prototype);
+      return newBuilder().mergeFrom(prototype);
     }
-    public Builder toBuilder() {
-      return this == defaultInstance
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    public Builder toBuilder() { return newBuilder(this); }
 
     @java.lang.Override
     protected Builder newBuilderForType(
@@ -787,8 +774,7 @@
     }
 
     // @@protoc_insertion_point(class_scope:grpc.testing.StatsRequest)
-    private static final grpc.testing.Qpstest.StatsRequest defaultInstance;
-    static {
+    private static final grpc.testing.Qpstest.StatsRequest defaultInstance;static {
       defaultInstance = new grpc.testing.Qpstest.StatsRequest();
     }
 
@@ -800,8 +786,6 @@
       return defaultInstance;
     }
 
-    static {
-    }
   }
 
   public interface ServerStatsOrBuilder extends
@@ -883,7 +867,8 @@
     }
     private ServerStats(
         com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
       this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -921,11 +906,10 @@
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw new RuntimeException(e.setUnfinishedMessage(this));
+        throw e.setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
-        throw new RuntimeException(
-            new com.google.protobuf.InvalidProtocolBufferException(
-                e.getMessage()).setUnfinishedMessage(this));
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
       } finally {
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -949,16 +933,7 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        try {
-          return new ServerStats(input, extensionRegistry);
-        } catch (RuntimeException e) {
-          if (e.getCause() instanceof
-              com.google.protobuf.InvalidProtocolBufferException) {
-            throw (com.google.protobuf.InvalidProtocolBufferException)
-                e.getCause();
-          }
-          throw e;
-        }
+        return new ServerStats(input, extensionRegistry);
       }
     };
 
@@ -1061,6 +1036,7 @@
 
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
+      getSerializedSize();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         output.writeDouble(1, timeElapsed_);
       }
@@ -1150,17 +1126,12 @@
       return PARSER.parseFrom(input, extensionRegistry);
     }
 
+    public static Builder newBuilder() { return new Builder(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return defaultInstance.toBuilder();
-    }
     public static Builder newBuilder(grpc.testing.Qpstest.ServerStats prototype) {
-      return defaultInstance.toBuilder().mergeFrom(prototype);
+      return newBuilder().mergeFrom(prototype);
     }
-    public Builder toBuilder() {
-      return this == defaultInstance
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    public Builder toBuilder() { return newBuilder(this); }
 
     @java.lang.Override
     protected Builder newBuilderForType(
@@ -1458,8 +1429,7 @@
     }
 
     // @@protoc_insertion_point(class_scope:grpc.testing.ServerStats)
-    private static final grpc.testing.Qpstest.ServerStats defaultInstance;
-    static {
+    private static final grpc.testing.Qpstest.ServerStats defaultInstance;static {
       defaultInstance = new grpc.testing.Qpstest.ServerStats();
     }
 
@@ -1471,8 +1441,6 @@
       return defaultInstance;
     }
 
-    static {
-    }
   }
 
   public interface PayloadOrBuilder extends
@@ -1536,7 +1504,8 @@
     }
     private Payload(
         com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
       this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -1575,11 +1544,10 @@
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw new RuntimeException(e.setUnfinishedMessage(this));
+        throw e.setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
-        throw new RuntimeException(
-            new com.google.protobuf.InvalidProtocolBufferException(
-                e.getMessage()).setUnfinishedMessage(this));
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
       } finally {
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -1603,16 +1571,7 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        try {
-          return new Payload(input, extensionRegistry);
-        } catch (RuntimeException e) {
-          if (e.getCause() instanceof
-              com.google.protobuf.InvalidProtocolBufferException) {
-            throw (com.google.protobuf.InvalidProtocolBufferException)
-                e.getCause();
-          }
-          throw e;
-        }
+        return new Payload(input, extensionRegistry);
       }
     };
 
@@ -1681,6 +1640,7 @@
 
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
+      getSerializedSize();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         output.writeEnum(1, type_);
       }
@@ -1763,17 +1723,12 @@
       return PARSER.parseFrom(input, extensionRegistry);
     }
 
+    public static Builder newBuilder() { return new Builder(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return defaultInstance.toBuilder();
-    }
     public static Builder newBuilder(grpc.testing.Qpstest.Payload prototype) {
-      return defaultInstance.toBuilder().mergeFrom(prototype);
+      return newBuilder().mergeFrom(prototype);
     }
-    public Builder toBuilder() {
-      return this == defaultInstance
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    public Builder toBuilder() { return newBuilder(this); }
 
     @java.lang.Override
     protected Builder newBuilderForType(
@@ -2009,8 +1964,7 @@
     }
 
     // @@protoc_insertion_point(class_scope:grpc.testing.Payload)
-    private static final grpc.testing.Qpstest.Payload defaultInstance;
-    static {
+    private static final grpc.testing.Qpstest.Payload defaultInstance;static {
       defaultInstance = new grpc.testing.Qpstest.Payload();
     }
 
@@ -2022,8 +1976,6 @@
       return defaultInstance;
     }
 
-    static {
-    }
   }
 
   public interface HistogramDataOrBuilder extends
@@ -2115,7 +2067,8 @@
     }
     private HistogramData(
         com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
       this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -2184,11 +2137,10 @@
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw new RuntimeException(e.setUnfinishedMessage(this));
+        throw e.setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
-        throw new RuntimeException(
-            new com.google.protobuf.InvalidProtocolBufferException(
-                e.getMessage()).setUnfinishedMessage(this));
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
           bucket_ = java.util.Collections.unmodifiableList(bucket_);
@@ -2215,16 +2167,7 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        try {
-          return new HistogramData(input, extensionRegistry);
-        } catch (RuntimeException e) {
-          if (e.getCause() instanceof
-              com.google.protobuf.InvalidProtocolBufferException) {
-            throw (com.google.protobuf.InvalidProtocolBufferException)
-                e.getCause();
-          }
-          throw e;
-        }
+        return new HistogramData(input, extensionRegistry);
       }
     };
 
@@ -2363,6 +2306,7 @@
 
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
+      getSerializedSize();
       for (int i = 0; i < bucket_.size(); i++) {
         output.writeUInt32(1, bucket_.get(i));
       }
@@ -2478,17 +2422,12 @@
       return PARSER.parseFrom(input, extensionRegistry);
     }
 
+    public static Builder newBuilder() { return new Builder(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return defaultInstance.toBuilder();
-    }
     public static Builder newBuilder(grpc.testing.Qpstest.HistogramData prototype) {
-      return defaultInstance.toBuilder().mergeFrom(prototype);
+      return newBuilder().mergeFrom(prototype);
     }
-    public Builder toBuilder() {
-      return this == defaultInstance
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    public Builder toBuilder() { return newBuilder(this); }
 
     @java.lang.Override
     protected Builder newBuilderForType(
@@ -2911,8 +2850,7 @@
     }
 
     // @@protoc_insertion_point(class_scope:grpc.testing.HistogramData)
-    private static final grpc.testing.Qpstest.HistogramData defaultInstance;
-    static {
+    private static final grpc.testing.Qpstest.HistogramData defaultInstance;static {
       defaultInstance = new grpc.testing.Qpstest.HistogramData();
     }
 
@@ -2924,8 +2862,6 @@
       return defaultInstance;
     }
 
-    static {
-    }
   }
 
   public interface ClientConfigOrBuilder extends
@@ -3051,7 +2987,8 @@
     }
     private ClientConfig(
         com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
       this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -3130,11 +3067,10 @@
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw new RuntimeException(e.setUnfinishedMessage(this));
+        throw e.setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
-        throw new RuntimeException(
-            new com.google.protobuf.InvalidProtocolBufferException(
-                e.getMessage()).setUnfinishedMessage(this));
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
           serverTargets_ = serverTargets_.getUnmodifiableView();
@@ -3161,16 +3097,7 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        try {
-          return new ClientConfig(input, extensionRegistry);
-        } catch (RuntimeException e) {
-          if (e.getCause() instanceof
-              com.google.protobuf.InvalidProtocolBufferException) {
-            throw (com.google.protobuf.InvalidProtocolBufferException)
-                e.getCause();
-          }
-          throw e;
-        }
+        return new ClientConfig(input, extensionRegistry);
       }
     };
 
@@ -3352,6 +3279,7 @@
 
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
+      getSerializedSize();
       for (int i = 0; i < serverTargets_.size(); i++) {
         output.writeBytes(1, serverTargets_.getByteString(i));
       }
@@ -3481,17 +3409,12 @@
       return PARSER.parseFrom(input, extensionRegistry);
     }
 
+    public static Builder newBuilder() { return new Builder(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return defaultInstance.toBuilder();
-    }
     public static Builder newBuilder(grpc.testing.Qpstest.ClientConfig prototype) {
-      return defaultInstance.toBuilder().mergeFrom(prototype);
+      return newBuilder().mergeFrom(prototype);
     }
-    public Builder toBuilder() {
-      return this == defaultInstance
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    public Builder toBuilder() { return newBuilder(this); }
 
     @java.lang.Override
     protected Builder newBuilderForType(
@@ -4043,8 +3966,7 @@
     }
 
     // @@protoc_insertion_point(class_scope:grpc.testing.ClientConfig)
-    private static final grpc.testing.Qpstest.ClientConfig defaultInstance;
-    static {
+    private static final grpc.testing.Qpstest.ClientConfig defaultInstance;static {
       defaultInstance = new grpc.testing.Qpstest.ClientConfig();
     }
 
@@ -4056,8 +3978,6 @@
       return defaultInstance;
     }
 
-    static {
-    }
   }
 
   public interface MarkOrBuilder extends
@@ -4089,7 +4009,8 @@
     }
     private Mark(
         com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
       this();
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
@@ -4111,11 +4032,10 @@
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw new RuntimeException(e.setUnfinishedMessage(this));
+        throw e.setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
-        throw new RuntimeException(
-            new com.google.protobuf.InvalidProtocolBufferException(
-                e.getMessage()).setUnfinishedMessage(this));
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
       } finally {
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -4139,16 +4059,7 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        try {
-          return new Mark(input, extensionRegistry);
-        } catch (RuntimeException e) {
-          if (e.getCause() instanceof
-              com.google.protobuf.InvalidProtocolBufferException) {
-            throw (com.google.protobuf.InvalidProtocolBufferException)
-                e.getCause();
-          }
-          throw e;
-        }
+        return new Mark(input, extensionRegistry);
       }
     };
 
@@ -4169,6 +4080,7 @@
 
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
+      getSerializedSize();
       unknownFields.writeTo(output);
     }
 
@@ -4237,17 +4149,12 @@
       return PARSER.parseFrom(input, extensionRegistry);
     }
 
+    public static Builder newBuilder() { return new Builder(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return defaultInstance.toBuilder();
-    }
     public static Builder newBuilder(grpc.testing.Qpstest.Mark prototype) {
-      return defaultInstance.toBuilder().mergeFrom(prototype);
+      return newBuilder().mergeFrom(prototype);
     }
-    public Builder toBuilder() {
-      return this == defaultInstance
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    public Builder toBuilder() { return newBuilder(this); }
 
     @java.lang.Override
     protected Builder newBuilderForType(
@@ -4362,8 +4269,7 @@
     }
 
     // @@protoc_insertion_point(class_scope:grpc.testing.Mark)
-    private static final grpc.testing.Qpstest.Mark defaultInstance;
-    static {
+    private static final grpc.testing.Qpstest.Mark defaultInstance;static {
       defaultInstance = new grpc.testing.Qpstest.Mark();
     }
 
@@ -4375,8 +4281,6 @@
       return defaultInstance;
     }
 
-    static {
-    }
   }
 
   public interface ClientArgsOrBuilder extends
@@ -4430,7 +4334,8 @@
     }
     private ClientArgs(
         com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
       this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -4479,11 +4384,10 @@
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw new RuntimeException(e.setUnfinishedMessage(this));
+        throw e.setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
-        throw new RuntimeException(
-            new com.google.protobuf.InvalidProtocolBufferException(
-                e.getMessage()).setUnfinishedMessage(this));
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
       } finally {
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -4507,16 +4411,7 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        try {
-          return new ClientArgs(input, extensionRegistry);
-        } catch (RuntimeException e) {
-          if (e.getCause() instanceof
-              com.google.protobuf.InvalidProtocolBufferException) {
-            throw (com.google.protobuf.InvalidProtocolBufferException)
-                e.getCause();
-          }
-          throw e;
-        }
+        return new ClientArgs(input, extensionRegistry);
       }
     };
 
@@ -4627,6 +4522,7 @@
 
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
+      getSerializedSize();
       if (argtypeCase_ == 1) {
         output.writeMessage(1, (grpc.testing.Qpstest.ClientConfig) argtype_);
       }
@@ -4709,17 +4605,12 @@
       return PARSER.parseFrom(input, extensionRegistry);
     }
 
+    public static Builder newBuilder() { return new Builder(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return defaultInstance.toBuilder();
-    }
     public static Builder newBuilder(grpc.testing.Qpstest.ClientArgs prototype) {
-      return defaultInstance.toBuilder().mergeFrom(prototype);
+      return newBuilder().mergeFrom(prototype);
     }
-    public Builder toBuilder() {
-      return this == defaultInstance
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    public Builder toBuilder() { return newBuilder(this); }
 
     @java.lang.Override
     protected Builder newBuilderForType(
@@ -5157,8 +5048,7 @@
     }
 
     // @@protoc_insertion_point(class_scope:grpc.testing.ClientArgs)
-    private static final grpc.testing.Qpstest.ClientArgs defaultInstance;
-    static {
+    private static final grpc.testing.Qpstest.ClientArgs defaultInstance;static {
       defaultInstance = new grpc.testing.Qpstest.ClientArgs();
     }
 
@@ -5170,8 +5060,6 @@
       return defaultInstance;
     }
 
-    static {
-    }
   }
 
   public interface ClientStatsOrBuilder extends
@@ -5242,7 +5130,8 @@
     }
     private ClientStats(
         com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
       this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -5293,11 +5182,10 @@
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw new RuntimeException(e.setUnfinishedMessage(this));
+        throw e.setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
-        throw new RuntimeException(
-            new com.google.protobuf.InvalidProtocolBufferException(
-                e.getMessage()).setUnfinishedMessage(this));
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
       } finally {
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -5321,16 +5209,7 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        try {
-          return new ClientStats(input, extensionRegistry);
-        } catch (RuntimeException e) {
-          if (e.getCause() instanceof
-              com.google.protobuf.InvalidProtocolBufferException) {
-            throw (com.google.protobuf.InvalidProtocolBufferException)
-                e.getCause();
-          }
-          throw e;
-        }
+        return new ClientStats(input, extensionRegistry);
       }
     };
 
@@ -5438,6 +5317,7 @@
 
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
+      getSerializedSize();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         output.writeMessage(1, getLatencies());
       }
@@ -5534,17 +5414,12 @@
       return PARSER.parseFrom(input, extensionRegistry);
     }
 
+    public static Builder newBuilder() { return new Builder(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return defaultInstance.toBuilder();
-    }
     public static Builder newBuilder(grpc.testing.Qpstest.ClientStats prototype) {
-      return defaultInstance.toBuilder().mergeFrom(prototype);
+      return newBuilder().mergeFrom(prototype);
     }
-    public Builder toBuilder() {
-      return this == defaultInstance
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    public Builder toBuilder() { return newBuilder(this); }
 
     @java.lang.Override
     protected Builder newBuilderForType(
@@ -5938,8 +5813,7 @@
     }
 
     // @@protoc_insertion_point(class_scope:grpc.testing.ClientStats)
-    private static final grpc.testing.Qpstest.ClientStats defaultInstance;
-    static {
+    private static final grpc.testing.Qpstest.ClientStats defaultInstance;static {
       defaultInstance = new grpc.testing.Qpstest.ClientStats();
     }
 
@@ -5951,8 +5825,6 @@
       return defaultInstance;
     }
 
-    static {
-    }
   }
 
   public interface ClientStatusOrBuilder extends
@@ -5993,7 +5865,8 @@
     }
     private ClientStatus(
         com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
       this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -6029,11 +5902,10 @@
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw new RuntimeException(e.setUnfinishedMessage(this));
+        throw e.setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
-        throw new RuntimeException(
-            new com.google.protobuf.InvalidProtocolBufferException(
-                e.getMessage()).setUnfinishedMessage(this));
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
       } finally {
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -6057,16 +5929,7 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        try {
-          return new ClientStatus(input, extensionRegistry);
-        } catch (RuntimeException e) {
-          if (e.getCause() instanceof
-              com.google.protobuf.InvalidProtocolBufferException) {
-            throw (com.google.protobuf.InvalidProtocolBufferException)
-                e.getCause();
-          }
-          throw e;
-        }
+        return new ClientStatus(input, extensionRegistry);
       }
     };
 
@@ -6115,6 +5978,7 @@
 
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
+      getSerializedSize();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         output.writeMessage(1, getStats());
       }
@@ -6190,17 +6054,12 @@
       return PARSER.parseFrom(input, extensionRegistry);
     }
 
+    public static Builder newBuilder() { return new Builder(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return defaultInstance.toBuilder();
-    }
     public static Builder newBuilder(grpc.testing.Qpstest.ClientStatus prototype) {
-      return defaultInstance.toBuilder().mergeFrom(prototype);
+      return newBuilder().mergeFrom(prototype);
     }
-    public Builder toBuilder() {
-      return this == defaultInstance
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    public Builder toBuilder() { return newBuilder(this); }
 
     @java.lang.Override
     protected Builder newBuilderForType(
@@ -6457,8 +6316,7 @@
     }
 
     // @@protoc_insertion_point(class_scope:grpc.testing.ClientStatus)
-    private static final grpc.testing.Qpstest.ClientStatus defaultInstance;
-    static {
+    private static final grpc.testing.Qpstest.ClientStatus defaultInstance;static {
       defaultInstance = new grpc.testing.Qpstest.ClientStatus();
     }
 
@@ -6470,8 +6328,6 @@
       return defaultInstance;
     }
 
-    static {
-    }
   }
 
   public interface ServerConfigOrBuilder extends
@@ -6529,7 +6385,8 @@
     }
     private ServerConfig(
         com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
       this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -6573,11 +6430,10 @@
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw new RuntimeException(e.setUnfinishedMessage(this));
+        throw e.setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
-        throw new RuntimeException(
-            new com.google.protobuf.InvalidProtocolBufferException(
-                e.getMessage()).setUnfinishedMessage(this));
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
       } finally {
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -6601,16 +6457,7 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        try {
-          return new ServerConfig(input, extensionRegistry);
-        } catch (RuntimeException e) {
-          if (e.getCause() instanceof
-              com.google.protobuf.InvalidProtocolBufferException) {
-            throw (com.google.protobuf.InvalidProtocolBufferException)
-                e.getCause();
-          }
-          throw e;
-        }
+        return new ServerConfig(input, extensionRegistry);
       }
     };
 
@@ -6682,6 +6529,7 @@
 
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
+      getSerializedSize();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         output.writeEnum(1, serverType_);
       }
@@ -6771,17 +6619,12 @@
       return PARSER.parseFrom(input, extensionRegistry);
     }
 
+    public static Builder newBuilder() { return new Builder(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return defaultInstance.toBuilder();
-    }
     public static Builder newBuilder(grpc.testing.Qpstest.ServerConfig prototype) {
-      return defaultInstance.toBuilder().mergeFrom(prototype);
+      return newBuilder().mergeFrom(prototype);
     }
-    public Builder toBuilder() {
-      return this == defaultInstance
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    public Builder toBuilder() { return newBuilder(this); }
 
     @java.lang.Override
     protected Builder newBuilderForType(
@@ -7027,8 +6870,7 @@
     }
 
     // @@protoc_insertion_point(class_scope:grpc.testing.ServerConfig)
-    private static final grpc.testing.Qpstest.ServerConfig defaultInstance;
-    static {
+    private static final grpc.testing.Qpstest.ServerConfig defaultInstance;static {
       defaultInstance = new grpc.testing.Qpstest.ServerConfig();
     }
 
@@ -7040,8 +6882,6 @@
       return defaultInstance;
     }
 
-    static {
-    }
   }
 
   public interface ServerArgsOrBuilder extends
@@ -7095,7 +6935,8 @@
     }
     private ServerArgs(
         com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
       this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -7144,11 +6985,10 @@
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw new RuntimeException(e.setUnfinishedMessage(this));
+        throw e.setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
-        throw new RuntimeException(
-            new com.google.protobuf.InvalidProtocolBufferException(
-                e.getMessage()).setUnfinishedMessage(this));
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
       } finally {
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -7172,16 +7012,7 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        try {
-          return new ServerArgs(input, extensionRegistry);
-        } catch (RuntimeException e) {
-          if (e.getCause() instanceof
-              com.google.protobuf.InvalidProtocolBufferException) {
-            throw (com.google.protobuf.InvalidProtocolBufferException)
-                e.getCause();
-          }
-          throw e;
-        }
+        return new ServerArgs(input, extensionRegistry);
       }
     };
 
@@ -7292,6 +7123,7 @@
 
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
+      getSerializedSize();
       if (argtypeCase_ == 1) {
         output.writeMessage(1, (grpc.testing.Qpstest.ServerConfig) argtype_);
       }
@@ -7374,17 +7206,12 @@
       return PARSER.parseFrom(input, extensionRegistry);
     }
 
+    public static Builder newBuilder() { return new Builder(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return defaultInstance.toBuilder();
-    }
     public static Builder newBuilder(grpc.testing.Qpstest.ServerArgs prototype) {
-      return defaultInstance.toBuilder().mergeFrom(prototype);
+      return newBuilder().mergeFrom(prototype);
     }
-    public Builder toBuilder() {
-      return this == defaultInstance
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    public Builder toBuilder() { return newBuilder(this); }
 
     @java.lang.Override
     protected Builder newBuilderForType(
@@ -7822,8 +7649,7 @@
     }
 
     // @@protoc_insertion_point(class_scope:grpc.testing.ServerArgs)
-    private static final grpc.testing.Qpstest.ServerArgs defaultInstance;
-    static {
+    private static final grpc.testing.Qpstest.ServerArgs defaultInstance;static {
       defaultInstance = new grpc.testing.Qpstest.ServerArgs();
     }
 
@@ -7835,8 +7661,6 @@
       return defaultInstance;
     }
 
-    static {
-    }
   }
 
   public interface ServerStatusOrBuilder extends
@@ -7887,7 +7711,8 @@
     }
     private ServerStatus(
         com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
       this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -7928,11 +7753,10 @@
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw new RuntimeException(e.setUnfinishedMessage(this));
+        throw e.setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
-        throw new RuntimeException(
-            new com.google.protobuf.InvalidProtocolBufferException(
-                e.getMessage()).setUnfinishedMessage(this));
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
       } finally {
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -7956,16 +7780,7 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        try {
-          return new ServerStatus(input, extensionRegistry);
-        } catch (RuntimeException e) {
-          if (e.getCause() instanceof
-              com.google.protobuf.InvalidProtocolBufferException) {
-            throw (com.google.protobuf.InvalidProtocolBufferException)
-                e.getCause();
-          }
-          throw e;
-        }
+        return new ServerStatus(input, extensionRegistry);
       }
     };
 
@@ -8033,6 +7848,7 @@
 
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
+      getSerializedSize();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         output.writeMessage(1, getStats());
       }
@@ -8115,17 +7931,12 @@
       return PARSER.parseFrom(input, extensionRegistry);
     }
 
+    public static Builder newBuilder() { return new Builder(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return defaultInstance.toBuilder();
-    }
     public static Builder newBuilder(grpc.testing.Qpstest.ServerStatus prototype) {
-      return defaultInstance.toBuilder().mergeFrom(prototype);
+      return newBuilder().mergeFrom(prototype);
     }
-    public Builder toBuilder() {
-      return this == defaultInstance
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    public Builder toBuilder() { return newBuilder(this); }
 
     @java.lang.Override
     protected Builder newBuilderForType(
@@ -8427,8 +8238,7 @@
     }
 
     // @@protoc_insertion_point(class_scope:grpc.testing.ServerStatus)
-    private static final grpc.testing.Qpstest.ServerStatus defaultInstance;
-    static {
+    private static final grpc.testing.Qpstest.ServerStatus defaultInstance;static {
       defaultInstance = new grpc.testing.Qpstest.ServerStatus();
     }
 
@@ -8440,8 +8250,6 @@
       return defaultInstance;
     }
 
-    static {
-    }
   }
 
   public interface SimpleRequestOrBuilder extends
@@ -8534,7 +8342,8 @@
     }
     private SimpleRequest(
         com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
       this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -8586,11 +8395,10 @@
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw new RuntimeException(e.setUnfinishedMessage(this));
+        throw e.setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
-        throw new RuntimeException(
-            new com.google.protobuf.InvalidProtocolBufferException(
-                e.getMessage()).setUnfinishedMessage(this));
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
       } finally {
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -8614,16 +8422,7 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        try {
-          return new SimpleRequest(input, extensionRegistry);
-        } catch (RuntimeException e) {
-          if (e.getCause() instanceof
-              com.google.protobuf.InvalidProtocolBufferException) {
-            throw (com.google.protobuf.InvalidProtocolBufferException)
-                e.getCause();
-          }
-          throw e;
-        }
+        return new SimpleRequest(input, extensionRegistry);
       }
     };
 
@@ -8729,6 +8528,7 @@
 
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
+      getSerializedSize();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         output.writeEnum(1, responseType_);
       }
@@ -8818,17 +8618,12 @@
       return PARSER.parseFrom(input, extensionRegistry);
     }
 
+    public static Builder newBuilder() { return new Builder(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return defaultInstance.toBuilder();
-    }
     public static Builder newBuilder(grpc.testing.Qpstest.SimpleRequest prototype) {
-      return defaultInstance.toBuilder().mergeFrom(prototype);
+      return newBuilder().mergeFrom(prototype);
     }
-    public Builder toBuilder() {
-      return this == defaultInstance
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    public Builder toBuilder() { return newBuilder(this); }
 
     @java.lang.Override
     protected Builder newBuilderForType(
@@ -9241,8 +9036,7 @@
     }
 
     // @@protoc_insertion_point(class_scope:grpc.testing.SimpleRequest)
-    private static final grpc.testing.Qpstest.SimpleRequest defaultInstance;
-    static {
+    private static final grpc.testing.Qpstest.SimpleRequest defaultInstance;static {
       defaultInstance = new grpc.testing.Qpstest.SimpleRequest();
     }
 
@@ -9254,8 +9048,6 @@
       return defaultInstance;
     }
 
-    static {
-    }
   }
 
   public interface SimpleResponseOrBuilder extends
@@ -9296,7 +9088,8 @@
     }
     private SimpleResponse(
         com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
       this();
       int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
@@ -9332,11 +9125,10 @@
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw new RuntimeException(e.setUnfinishedMessage(this));
+        throw e.setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
-        throw new RuntimeException(
-            new com.google.protobuf.InvalidProtocolBufferException(
-                e.getMessage()).setUnfinishedMessage(this));
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
       } finally {
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -9360,16 +9152,7 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        try {
-          return new SimpleResponse(input, extensionRegistry);
-        } catch (RuntimeException e) {
-          if (e.getCause() instanceof
-              com.google.protobuf.InvalidProtocolBufferException) {
-            throw (com.google.protobuf.InvalidProtocolBufferException)
-                e.getCause();
-          }
-          throw e;
-        }
+        return new SimpleResponse(input, extensionRegistry);
       }
     };
 
@@ -9412,6 +9195,7 @@
 
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
+      getSerializedSize();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         output.writeMessage(1, getPayload());
       }
@@ -9487,17 +9271,12 @@
       return PARSER.parseFrom(input, extensionRegistry);
     }
 
+    public static Builder newBuilder() { return new Builder(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return defaultInstance.toBuilder();
-    }
     public static Builder newBuilder(grpc.testing.Qpstest.SimpleResponse prototype) {
-      return defaultInstance.toBuilder().mergeFrom(prototype);
+      return newBuilder().mergeFrom(prototype);
     }
-    public Builder toBuilder() {
-      return this == defaultInstance
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    public Builder toBuilder() { return newBuilder(this); }
 
     @java.lang.Override
     protected Builder newBuilderForType(
@@ -9748,8 +9527,7 @@
     }
 
     // @@protoc_insertion_point(class_scope:grpc.testing.SimpleResponse)
-    private static final grpc.testing.Qpstest.SimpleResponse defaultInstance;
-    static {
+    private static final grpc.testing.Qpstest.SimpleResponse defaultInstance;static {
       defaultInstance = new grpc.testing.Qpstest.SimpleResponse();
     }
 
@@ -9761,8 +9539,6 @@
       return defaultInstance;
     }
 
-    static {
-    }
   }
 
   private static final com.google.protobuf.Descriptors.Descriptor
diff --git a/examples/src/generated/main/io/grpc/examples/helloworld/HelloRequest.java b/examples/src/generated/main/io/grpc/examples/helloworld/HelloRequest.java
index 0b1285b..75b4551 100644
--- a/examples/src/generated/main/io/grpc/examples/helloworld/HelloRequest.java
+++ b/examples/src/generated/main/io/grpc/examples/helloworld/HelloRequest.java
@@ -29,7 +29,8 @@
   }
   private HelloRequest(
       com.google.protobuf.CodedInputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
     this();
     int mutable_bitField0_ = 0;
     try {
@@ -55,11 +56,10 @@
         }
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-      throw new RuntimeException(e.setUnfinishedMessage(this));
+      throw e.setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
-      throw new RuntimeException(
-          new com.google.protobuf.InvalidProtocolBufferException(
-              e.getMessage()).setUnfinishedMessage(this));
+      throw new com.google.protobuf.InvalidProtocolBufferException(
+          e.getMessage()).setUnfinishedMessage(this);
     } finally {
       makeExtensionsImmutable();
     }
@@ -82,16 +82,7 @@
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      try {
-        return new HelloRequest(input, extensionRegistry);
-      } catch (RuntimeException e) {
-        if (e.getCause() instanceof
-            com.google.protobuf.InvalidProtocolBufferException) {
-          throw (com.google.protobuf.InvalidProtocolBufferException)
-              e.getCause();
-        }
-        throw e;
-      }
+      return new HelloRequest(input, extensionRegistry);
     }
   };
 
@@ -148,6 +139,7 @@
 
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
+    getSerializedSize();
     if (!getNameBytes().isEmpty()) {
       output.writeBytes(1, getNameBytes());
     }
@@ -221,17 +213,12 @@
     return PARSER.parseFrom(input, extensionRegistry);
   }
 
+  public static Builder newBuilder() { return new Builder(); }
   public Builder newBuilderForType() { return newBuilder(); }
-  public static Builder newBuilder() {
-    return defaultInstance.toBuilder();
-  }
   public static Builder newBuilder(io.grpc.examples.helloworld.HelloRequest prototype) {
-    return defaultInstance.toBuilder().mergeFrom(prototype);
+    return newBuilder().mergeFrom(prototype);
   }
-  public Builder toBuilder() {
-    return this == defaultInstance
-        ? new Builder() : new Builder().mergeFrom(this);
-  }
+  public Builder toBuilder() { return newBuilder(this); }
 
   @java.lang.Override
   protected Builder newBuilderForType(
@@ -432,8 +419,7 @@
   }
 
   // @@protoc_insertion_point(class_scope:helloworld.HelloRequest)
-  private static final io.grpc.examples.helloworld.HelloRequest defaultInstance;
-  static {
+  private static final io.grpc.examples.helloworld.HelloRequest defaultInstance;static {
     defaultInstance = new io.grpc.examples.helloworld.HelloRequest();
   }
 
@@ -445,7 +431,5 @@
     return defaultInstance;
   }
 
-  static {
-  }
 }
 
diff --git a/examples/src/generated/main/io/grpc/examples/helloworld/HelloResponse.java b/examples/src/generated/main/io/grpc/examples/helloworld/HelloResponse.java
index e5cfd9c..82d2b05 100644
--- a/examples/src/generated/main/io/grpc/examples/helloworld/HelloResponse.java
+++ b/examples/src/generated/main/io/grpc/examples/helloworld/HelloResponse.java
@@ -29,7 +29,8 @@
   }
   private HelloResponse(
       com.google.protobuf.CodedInputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
     this();
     int mutable_bitField0_ = 0;
     try {
@@ -55,11 +56,10 @@
         }
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-      throw new RuntimeException(e.setUnfinishedMessage(this));
+      throw e.setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
-      throw new RuntimeException(
-          new com.google.protobuf.InvalidProtocolBufferException(
-              e.getMessage()).setUnfinishedMessage(this));
+      throw new com.google.protobuf.InvalidProtocolBufferException(
+          e.getMessage()).setUnfinishedMessage(this);
     } finally {
       makeExtensionsImmutable();
     }
@@ -82,16 +82,7 @@
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      try {
-        return new HelloResponse(input, extensionRegistry);
-      } catch (RuntimeException e) {
-        if (e.getCause() instanceof
-            com.google.protobuf.InvalidProtocolBufferException) {
-          throw (com.google.protobuf.InvalidProtocolBufferException)
-              e.getCause();
-        }
-        throw e;
-      }
+      return new HelloResponse(input, extensionRegistry);
     }
   };
 
@@ -148,6 +139,7 @@
 
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
+    getSerializedSize();
     if (!getMessageBytes().isEmpty()) {
       output.writeBytes(1, getMessageBytes());
     }
@@ -221,17 +213,12 @@
     return PARSER.parseFrom(input, extensionRegistry);
   }
 
+  public static Builder newBuilder() { return new Builder(); }
   public Builder newBuilderForType() { return newBuilder(); }
-  public static Builder newBuilder() {
-    return defaultInstance.toBuilder();
-  }
   public static Builder newBuilder(io.grpc.examples.helloworld.HelloResponse prototype) {
-    return defaultInstance.toBuilder().mergeFrom(prototype);
+    return newBuilder().mergeFrom(prototype);
   }
-  public Builder toBuilder() {
-    return this == defaultInstance
-        ? new Builder() : new Builder().mergeFrom(this);
-  }
+  public Builder toBuilder() { return newBuilder(this); }
 
   @java.lang.Override
   protected Builder newBuilderForType(
@@ -432,8 +419,7 @@
   }
 
   // @@protoc_insertion_point(class_scope:helloworld.HelloResponse)
-  private static final io.grpc.examples.helloworld.HelloResponse defaultInstance;
-  static {
+  private static final io.grpc.examples.helloworld.HelloResponse defaultInstance;static {
     defaultInstance = new io.grpc.examples.helloworld.HelloResponse();
   }
 
@@ -445,7 +431,5 @@
     return defaultInstance;
   }
 
-  static {
-  }
 }
 
diff --git a/examples/src/generated/main/io/grpc/examples/routeguide/Feature.java b/examples/src/generated/main/io/grpc/examples/routeguide/Feature.java
index 0f4250c..6effc4e 100644
--- a/examples/src/generated/main/io/grpc/examples/routeguide/Feature.java
+++ b/examples/src/generated/main/io/grpc/examples/routeguide/Feature.java
@@ -30,7 +30,8 @@
   }
   private Feature(
       com.google.protobuf.CodedInputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
     this();
     int mutable_bitField0_ = 0;
     try {
@@ -69,11 +70,10 @@
         }
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-      throw new RuntimeException(e.setUnfinishedMessage(this));
+      throw e.setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
-      throw new RuntimeException(
-          new com.google.protobuf.InvalidProtocolBufferException(
-              e.getMessage()).setUnfinishedMessage(this));
+      throw new com.google.protobuf.InvalidProtocolBufferException(
+          e.getMessage()).setUnfinishedMessage(this);
     } finally {
       makeExtensionsImmutable();
     }
@@ -96,16 +96,7 @@
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      try {
-        return new Feature(input, extensionRegistry);
-      } catch (RuntimeException e) {
-        if (e.getCause() instanceof
-            com.google.protobuf.InvalidProtocolBufferException) {
-          throw (com.google.protobuf.InvalidProtocolBufferException)
-              e.getCause();
-        }
-        throw e;
-      }
+      return new Feature(input, extensionRegistry);
     }
   };
 
@@ -203,6 +194,7 @@
 
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
+    getSerializedSize();
     if (!getNameBytes().isEmpty()) {
       output.writeBytes(1, getNameBytes());
     }
@@ -283,17 +275,12 @@
     return PARSER.parseFrom(input, extensionRegistry);
   }
 
+  public static Builder newBuilder() { return new Builder(); }
   public Builder newBuilderForType() { return newBuilder(); }
-  public static Builder newBuilder() {
-    return defaultInstance.toBuilder();
-  }
   public static Builder newBuilder(io.grpc.examples.routeguide.Feature prototype) {
-    return defaultInstance.toBuilder().mergeFrom(prototype);
+    return newBuilder().mergeFrom(prototype);
   }
-  public Builder toBuilder() {
-    return this == defaultInstance
-        ? new Builder() : new Builder().mergeFrom(this);
-  }
+  public Builder toBuilder() { return newBuilder(this); }
 
   @java.lang.Override
   protected Builder newBuilderForType(
@@ -682,8 +669,7 @@
   }
 
   // @@protoc_insertion_point(class_scope:routeguide.Feature)
-  private static final io.grpc.examples.routeguide.Feature defaultInstance;
-  static {
+  private static final io.grpc.examples.routeguide.Feature defaultInstance;static {
     defaultInstance = new io.grpc.examples.routeguide.Feature();
   }
 
@@ -695,7 +681,5 @@
     return defaultInstance;
   }
 
-  static {
-  }
 }
 
diff --git a/examples/src/generated/main/io/grpc/examples/routeguide/Point.java b/examples/src/generated/main/io/grpc/examples/routeguide/Point.java
index f3e2fb4..417e088 100644
--- a/examples/src/generated/main/io/grpc/examples/routeguide/Point.java
+++ b/examples/src/generated/main/io/grpc/examples/routeguide/Point.java
@@ -33,7 +33,8 @@
   }
   private Point(
       com.google.protobuf.CodedInputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
     this();
     int mutable_bitField0_ = 0;
     try {
@@ -63,11 +64,10 @@
         }
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-      throw new RuntimeException(e.setUnfinishedMessage(this));
+      throw e.setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
-      throw new RuntimeException(
-          new com.google.protobuf.InvalidProtocolBufferException(
-              e.getMessage()).setUnfinishedMessage(this));
+      throw new com.google.protobuf.InvalidProtocolBufferException(
+          e.getMessage()).setUnfinishedMessage(this);
     } finally {
       makeExtensionsImmutable();
     }
@@ -90,16 +90,7 @@
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      try {
-        return new Point(input, extensionRegistry);
-      } catch (RuntimeException e) {
-        if (e.getCause() instanceof
-            com.google.protobuf.InvalidProtocolBufferException) {
-          throw (com.google.protobuf.InvalidProtocolBufferException)
-              e.getCause();
-        }
-        throw e;
-      }
+      return new Point(input, extensionRegistry);
     }
   };
 
@@ -138,6 +129,7 @@
 
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
+    getSerializedSize();
     if (latitude_ != 0) {
       output.writeInt32(1, latitude_);
     }
@@ -218,17 +210,12 @@
     return PARSER.parseFrom(input, extensionRegistry);
   }
 
+  public static Builder newBuilder() { return new Builder(); }
   public Builder newBuilderForType() { return newBuilder(); }
-  public static Builder newBuilder() {
-    return defaultInstance.toBuilder();
-  }
   public static Builder newBuilder(io.grpc.examples.routeguide.Point prototype) {
-    return defaultInstance.toBuilder().mergeFrom(prototype);
+    return newBuilder().mergeFrom(prototype);
   }
-  public Builder toBuilder() {
-    return this == defaultInstance
-        ? new Builder() : new Builder().mergeFrom(this);
-  }
+  public Builder toBuilder() { return newBuilder(this); }
 
   @java.lang.Override
   protected Builder newBuilderForType(
@@ -419,8 +406,7 @@
   }
 
   // @@protoc_insertion_point(class_scope:routeguide.Point)
-  private static final io.grpc.examples.routeguide.Point defaultInstance;
-  static {
+  private static final io.grpc.examples.routeguide.Point defaultInstance;static {
     defaultInstance = new io.grpc.examples.routeguide.Point();
   }
 
@@ -432,7 +418,5 @@
     return defaultInstance;
   }
 
-  static {
-  }
 }
 
diff --git a/examples/src/generated/main/io/grpc/examples/routeguide/Rectangle.java b/examples/src/generated/main/io/grpc/examples/routeguide/Rectangle.java
index d58ff09..d3a0561 100644
--- a/examples/src/generated/main/io/grpc/examples/routeguide/Rectangle.java
+++ b/examples/src/generated/main/io/grpc/examples/routeguide/Rectangle.java
@@ -29,7 +29,8 @@
   }
   private Rectangle(
       com.google.protobuf.CodedInputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
     this();
     int mutable_bitField0_ = 0;
     try {
@@ -75,11 +76,10 @@
         }
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-      throw new RuntimeException(e.setUnfinishedMessage(this));
+      throw e.setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
-      throw new RuntimeException(
-          new com.google.protobuf.InvalidProtocolBufferException(
-              e.getMessage()).setUnfinishedMessage(this));
+      throw new com.google.protobuf.InvalidProtocolBufferException(
+          e.getMessage()).setUnfinishedMessage(this);
     } finally {
       makeExtensionsImmutable();
     }
@@ -102,16 +102,7 @@
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      try {
-        return new Rectangle(input, extensionRegistry);
-      } catch (RuntimeException e) {
-        if (e.getCause() instanceof
-            com.google.protobuf.InvalidProtocolBufferException) {
-          throw (com.google.protobuf.InvalidProtocolBufferException)
-              e.getCause();
-        }
-        throw e;
-      }
+      return new Rectangle(input, extensionRegistry);
     }
   };
 
@@ -198,6 +189,7 @@
 
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
+    getSerializedSize();
     if (lo_ != null) {
       output.writeMessage(1, getLo());
     }
@@ -278,17 +270,12 @@
     return PARSER.parseFrom(input, extensionRegistry);
   }
 
+  public static Builder newBuilder() { return new Builder(); }
   public Builder newBuilderForType() { return newBuilder(); }
-  public static Builder newBuilder() {
-    return defaultInstance.toBuilder();
-  }
   public static Builder newBuilder(io.grpc.examples.routeguide.Rectangle prototype) {
-    return defaultInstance.toBuilder().mergeFrom(prototype);
+    return newBuilder().mergeFrom(prototype);
   }
-  public Builder toBuilder() {
-    return this == defaultInstance
-        ? new Builder() : new Builder().mergeFrom(this);
-  }
+  public Builder toBuilder() { return newBuilder(this); }
 
   @java.lang.Override
   protected Builder newBuilderForType(
@@ -747,8 +734,7 @@
   }
 
   // @@protoc_insertion_point(class_scope:routeguide.Rectangle)
-  private static final io.grpc.examples.routeguide.Rectangle defaultInstance;
-  static {
+  private static final io.grpc.examples.routeguide.Rectangle defaultInstance;static {
     defaultInstance = new io.grpc.examples.routeguide.Rectangle();
   }
 
@@ -760,7 +746,5 @@
     return defaultInstance;
   }
 
-  static {
-  }
 }
 
diff --git a/examples/src/generated/main/io/grpc/examples/routeguide/RouteNote.java b/examples/src/generated/main/io/grpc/examples/routeguide/RouteNote.java
index 70df9dc..738981a 100644
--- a/examples/src/generated/main/io/grpc/examples/routeguide/RouteNote.java
+++ b/examples/src/generated/main/io/grpc/examples/routeguide/RouteNote.java
@@ -29,7 +29,8 @@
   }
   private RouteNote(
       com.google.protobuf.CodedInputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
     this();
     int mutable_bitField0_ = 0;
     try {
@@ -68,11 +69,10 @@
         }
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-      throw new RuntimeException(e.setUnfinishedMessage(this));
+      throw e.setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
-      throw new RuntimeException(
-          new com.google.protobuf.InvalidProtocolBufferException(
-              e.getMessage()).setUnfinishedMessage(this));
+      throw new com.google.protobuf.InvalidProtocolBufferException(
+          e.getMessage()).setUnfinishedMessage(this);
     } finally {
       makeExtensionsImmutable();
     }
@@ -95,16 +95,7 @@
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      try {
-        return new RouteNote(input, extensionRegistry);
-      } catch (RuntimeException e) {
-        if (e.getCause() instanceof
-            com.google.protobuf.InvalidProtocolBufferException) {
-          throw (com.google.protobuf.InvalidProtocolBufferException)
-              e.getCause();
-        }
-        throw e;
-      }
+      return new RouteNote(input, extensionRegistry);
     }
   };
 
@@ -202,6 +193,7 @@
 
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
+    getSerializedSize();
     if (location_ != null) {
       output.writeMessage(1, getLocation());
     }
@@ -282,17 +274,12 @@
     return PARSER.parseFrom(input, extensionRegistry);
   }
 
+  public static Builder newBuilder() { return new Builder(); }
   public Builder newBuilderForType() { return newBuilder(); }
-  public static Builder newBuilder() {
-    return defaultInstance.toBuilder();
-  }
   public static Builder newBuilder(io.grpc.examples.routeguide.RouteNote prototype) {
-    return defaultInstance.toBuilder().mergeFrom(prototype);
+    return newBuilder().mergeFrom(prototype);
   }
-  public Builder toBuilder() {
-    return this == defaultInstance
-        ? new Builder() : new Builder().mergeFrom(this);
-  }
+  public Builder toBuilder() { return newBuilder(this); }
 
   @java.lang.Override
   protected Builder newBuilderForType(
@@ -680,8 +667,7 @@
   }
 
   // @@protoc_insertion_point(class_scope:routeguide.RouteNote)
-  private static final io.grpc.examples.routeguide.RouteNote defaultInstance;
-  static {
+  private static final io.grpc.examples.routeguide.RouteNote defaultInstance;static {
     defaultInstance = new io.grpc.examples.routeguide.RouteNote();
   }
 
@@ -693,7 +679,5 @@
     return defaultInstance;
   }
 
-  static {
-  }
 }
 
diff --git a/examples/src/generated/main/io/grpc/examples/routeguide/RouteSummary.java b/examples/src/generated/main/io/grpc/examples/routeguide/RouteSummary.java
index 8945965..5fbcea6 100644
--- a/examples/src/generated/main/io/grpc/examples/routeguide/RouteSummary.java
+++ b/examples/src/generated/main/io/grpc/examples/routeguide/RouteSummary.java
@@ -35,7 +35,8 @@
   }
   private RouteSummary(
       com.google.protobuf.CodedInputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
     this();
     int mutable_bitField0_ = 0;
     try {
@@ -75,11 +76,10 @@
         }
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-      throw new RuntimeException(e.setUnfinishedMessage(this));
+      throw e.setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
-      throw new RuntimeException(
-          new com.google.protobuf.InvalidProtocolBufferException(
-              e.getMessage()).setUnfinishedMessage(this));
+      throw new com.google.protobuf.InvalidProtocolBufferException(
+          e.getMessage()).setUnfinishedMessage(this);
     } finally {
       makeExtensionsImmutable();
     }
@@ -102,16 +102,7 @@
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      try {
-        return new RouteSummary(input, extensionRegistry);
-      } catch (RuntimeException e) {
-        if (e.getCause() instanceof
-            com.google.protobuf.InvalidProtocolBufferException) {
-          throw (com.google.protobuf.InvalidProtocolBufferException)
-              e.getCause();
-        }
-        throw e;
-      }
+      return new RouteSummary(input, extensionRegistry);
     }
   };
 
@@ -184,6 +175,7 @@
 
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
+    getSerializedSize();
     if (pointCount_ != 0) {
       output.writeInt32(1, pointCount_);
     }
@@ -278,17 +270,12 @@
     return PARSER.parseFrom(input, extensionRegistry);
   }
 
+  public static Builder newBuilder() { return new Builder(); }
   public Builder newBuilderForType() { return newBuilder(); }
-  public static Builder newBuilder() {
-    return defaultInstance.toBuilder();
-  }
   public static Builder newBuilder(io.grpc.examples.routeguide.RouteSummary prototype) {
-    return defaultInstance.toBuilder().mergeFrom(prototype);
+    return newBuilder().mergeFrom(prototype);
   }
-  public Builder toBuilder() {
-    return this == defaultInstance
-        ? new Builder() : new Builder().mergeFrom(this);
-  }
+  public Builder toBuilder() { return newBuilder(this); }
 
   @java.lang.Override
   protected Builder newBuilderForType(
@@ -591,8 +578,7 @@
   }
 
   // @@protoc_insertion_point(class_scope:routeguide.RouteSummary)
-  private static final io.grpc.examples.routeguide.RouteSummary defaultInstance;
-  static {
+  private static final io.grpc.examples.routeguide.RouteSummary defaultInstance;static {
     defaultInstance = new io.grpc.examples.routeguide.RouteSummary();
   }
 
@@ -604,7 +590,5 @@
     return defaultInstance;
   }
 
-  static {
-  }
 }
 
diff --git a/integration-testing/src/generated/main/com/google/protobuf/EmptyProtos.java b/integration-testing/src/generated/main/com/google/protobuf/EmptyProtos.java
index 3c32611..2c018d6 100644
--- a/integration-testing/src/generated/main/com/google/protobuf/EmptyProtos.java
+++ b/integration-testing/src/generated/main/com/google/protobuf/EmptyProtos.java
@@ -42,7 +42,8 @@
     }
     private Empty(
         com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
       this();
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
@@ -64,11 +65,10 @@
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw new RuntimeException(e.setUnfinishedMessage(this));
+        throw e.setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
-        throw new RuntimeException(
-            new com.google.protobuf.InvalidProtocolBufferException(
-                e.getMessage()).setUnfinishedMessage(this));
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
       } finally {
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -92,16 +92,7 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        try {
-          return new Empty(input, extensionRegistry);
-        } catch (RuntimeException e) {
-          if (e.getCause() instanceof
-              com.google.protobuf.InvalidProtocolBufferException) {
-            throw (com.google.protobuf.InvalidProtocolBufferException)
-                e.getCause();
-          }
-          throw e;
-        }
+        return new Empty(input, extensionRegistry);
       }
     };
 
@@ -122,6 +113,7 @@
 
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
+      getSerializedSize();
       unknownFields.writeTo(output);
     }
 
@@ -190,17 +182,12 @@
       return PARSER.parseFrom(input, extensionRegistry);
     }
 
+    public static Builder newBuilder() { return new Builder(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return defaultInstance.toBuilder();
-    }
     public static Builder newBuilder(com.google.protobuf.EmptyProtos.Empty prototype) {
-      return defaultInstance.toBuilder().mergeFrom(prototype);
+      return newBuilder().mergeFrom(prototype);
     }
-    public Builder toBuilder() {
-      return this == defaultInstance
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    public Builder toBuilder() { return newBuilder(this); }
 
     @java.lang.Override
     protected Builder newBuilderForType(
@@ -320,8 +307,7 @@
     }
 
     // @@protoc_insertion_point(class_scope:grpc.testing.Empty)
-    private static final com.google.protobuf.EmptyProtos.Empty defaultInstance;
-    static {
+    private static final com.google.protobuf.EmptyProtos.Empty defaultInstance;static {
       defaultInstance = new com.google.protobuf.EmptyProtos.Empty();
     }
 
@@ -333,8 +319,6 @@
       return defaultInstance;
     }
 
-    static {
-    }
   }
 
   private static final com.google.protobuf.Descriptors.Descriptor
diff --git a/integration-testing/src/generated/main/io/grpc/testing/integration/Messages.java b/integration-testing/src/generated/main/io/grpc/testing/integration/Messages.java
index 4a9cb32..9a58d05 100644
--- a/integration-testing/src/generated/main/io/grpc/testing/integration/Messages.java
+++ b/integration-testing/src/generated/main/io/grpc/testing/integration/Messages.java
@@ -194,7 +194,8 @@
     }
     private Payload(
         com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
       this();
       int mutable_bitField0_ = 0;
       try {
@@ -225,11 +226,10 @@
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw new RuntimeException(e.setUnfinishedMessage(this));
+        throw e.setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
-        throw new RuntimeException(
-            new com.google.protobuf.InvalidProtocolBufferException(
-                e.getMessage()).setUnfinishedMessage(this));
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
       } finally {
         makeExtensionsImmutable();
       }
@@ -252,16 +252,7 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        try {
-          return new Payload(input, extensionRegistry);
-        } catch (RuntimeException e) {
-          if (e.getCause() instanceof
-              com.google.protobuf.InvalidProtocolBufferException) {
-            throw (com.google.protobuf.InvalidProtocolBufferException)
-                e.getCause();
-          }
-          throw e;
-        }
+        return new Payload(input, extensionRegistry);
       }
     };
 
@@ -319,6 +310,7 @@
 
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
+      getSerializedSize();
       if (type_ != io.grpc.testing.integration.Messages.PayloadType.COMPRESSABLE.getNumber()) {
         output.writeEnum(1, type_);
       }
@@ -399,17 +391,12 @@
       return PARSER.parseFrom(input, extensionRegistry);
     }
 
+    public static Builder newBuilder() { return new Builder(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return defaultInstance.toBuilder();
-    }
     public static Builder newBuilder(io.grpc.testing.integration.Messages.Payload prototype) {
-      return defaultInstance.toBuilder().mergeFrom(prototype);
+      return newBuilder().mergeFrom(prototype);
     }
-    public Builder toBuilder() {
-      return this == defaultInstance
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    public Builder toBuilder() { return newBuilder(this); }
 
     @java.lang.Override
     protected Builder newBuilderForType(
@@ -650,8 +637,7 @@
     }
 
     // @@protoc_insertion_point(class_scope:grpc.testing.Payload)
-    private static final io.grpc.testing.integration.Messages.Payload defaultInstance;
-    static {
+    private static final io.grpc.testing.integration.Messages.Payload defaultInstance;static {
       defaultInstance = new io.grpc.testing.integration.Messages.Payload();
     }
 
@@ -663,8 +649,6 @@
       return defaultInstance;
     }
 
-    static {
-    }
   }
 
   public interface SimpleRequestOrBuilder extends
@@ -772,7 +756,8 @@
     }
     private SimpleRequest(
         com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
       this();
       int mutable_bitField0_ = 0;
       try {
@@ -826,11 +811,10 @@
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw new RuntimeException(e.setUnfinishedMessage(this));
+        throw e.setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
-        throw new RuntimeException(
-            new com.google.protobuf.InvalidProtocolBufferException(
-                e.getMessage()).setUnfinishedMessage(this));
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
       } finally {
         makeExtensionsImmutable();
       }
@@ -853,16 +837,7 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        try {
-          return new SimpleRequest(input, extensionRegistry);
-        } catch (RuntimeException e) {
-          if (e.getCause() instanceof
-              com.google.protobuf.InvalidProtocolBufferException) {
-            throw (com.google.protobuf.InvalidProtocolBufferException)
-                e.getCause();
-          }
-          throw e;
-        }
+        return new SimpleRequest(input, extensionRegistry);
       }
     };
 
@@ -982,6 +957,7 @@
 
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
+      getSerializedSize();
       if (responseType_ != io.grpc.testing.integration.Messages.PayloadType.COMPRESSABLE.getNumber()) {
         output.writeEnum(1, responseType_);
       }
@@ -1083,17 +1059,12 @@
       return PARSER.parseFrom(input, extensionRegistry);
     }
 
+    public static Builder newBuilder() { return new Builder(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return defaultInstance.toBuilder();
-    }
     public static Builder newBuilder(io.grpc.testing.integration.Messages.SimpleRequest prototype) {
-      return defaultInstance.toBuilder().mergeFrom(prototype);
+      return newBuilder().mergeFrom(prototype);
     }
-    public Builder toBuilder() {
-      return this == defaultInstance
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    public Builder toBuilder() { return newBuilder(this); }
 
     @java.lang.Override
     protected Builder newBuilderForType(
@@ -1594,8 +1565,7 @@
     }
 
     // @@protoc_insertion_point(class_scope:grpc.testing.SimpleRequest)
-    private static final io.grpc.testing.integration.Messages.SimpleRequest defaultInstance;
-    static {
+    private static final io.grpc.testing.integration.Messages.SimpleRequest defaultInstance;static {
       defaultInstance = new io.grpc.testing.integration.Messages.SimpleRequest();
     }
 
@@ -1607,8 +1577,6 @@
       return defaultInstance;
     }
 
-    static {
-    }
   }
 
   public interface SimpleResponseOrBuilder extends
@@ -1705,7 +1673,8 @@
     }
     private SimpleResponse(
         com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
       this();
       int mutable_bitField0_ = 0;
       try {
@@ -1750,11 +1719,10 @@
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw new RuntimeException(e.setUnfinishedMessage(this));
+        throw e.setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
-        throw new RuntimeException(
-            new com.google.protobuf.InvalidProtocolBufferException(
-                e.getMessage()).setUnfinishedMessage(this));
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
       } finally {
         makeExtensionsImmutable();
       }
@@ -1777,16 +1745,7 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        try {
-          return new SimpleResponse(input, extensionRegistry);
-        } catch (RuntimeException e) {
-          if (e.getCause() instanceof
-              com.google.protobuf.InvalidProtocolBufferException) {
-            throw (com.google.protobuf.InvalidProtocolBufferException)
-                e.getCause();
-          }
-          throw e;
-        }
+        return new SimpleResponse(input, extensionRegistry);
       }
     };
 
@@ -1930,6 +1889,7 @@
 
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
+      getSerializedSize();
       if (payload_ != null) {
         output.writeMessage(1, getPayload());
       }
@@ -2017,17 +1977,12 @@
       return PARSER.parseFrom(input, extensionRegistry);
     }
 
+    public static Builder newBuilder() { return new Builder(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return defaultInstance.toBuilder();
-    }
     public static Builder newBuilder(io.grpc.testing.integration.Messages.SimpleResponse prototype) {
-      return defaultInstance.toBuilder().mergeFrom(prototype);
+      return newBuilder().mergeFrom(prototype);
     }
-    public Builder toBuilder() {
-      return this == defaultInstance
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    public Builder toBuilder() { return newBuilder(this); }
 
     @java.lang.Override
     protected Builder newBuilderForType(
@@ -2517,8 +2472,7 @@
     }
 
     // @@protoc_insertion_point(class_scope:grpc.testing.SimpleResponse)
-    private static final io.grpc.testing.integration.Messages.SimpleResponse defaultInstance;
-    static {
+    private static final io.grpc.testing.integration.Messages.SimpleResponse defaultInstance;static {
       defaultInstance = new io.grpc.testing.integration.Messages.SimpleResponse();
     }
 
@@ -2530,8 +2484,6 @@
       return defaultInstance;
     }
 
-    static {
-    }
   }
 
   public interface SimpleContextOrBuilder extends
@@ -2570,7 +2522,8 @@
     }
     private SimpleContext(
         com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
       this();
       int mutable_bitField0_ = 0;
       try {
@@ -2596,11 +2549,10 @@
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw new RuntimeException(e.setUnfinishedMessage(this));
+        throw e.setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
-        throw new RuntimeException(
-            new com.google.protobuf.InvalidProtocolBufferException(
-                e.getMessage()).setUnfinishedMessage(this));
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
       } finally {
         makeExtensionsImmutable();
       }
@@ -2623,16 +2575,7 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        try {
-          return new SimpleContext(input, extensionRegistry);
-        } catch (RuntimeException e) {
-          if (e.getCause() instanceof
-              com.google.protobuf.InvalidProtocolBufferException) {
-            throw (com.google.protobuf.InvalidProtocolBufferException)
-                e.getCause();
-          }
-          throw e;
-        }
+        return new SimpleContext(input, extensionRegistry);
       }
     };
 
@@ -2689,6 +2632,7 @@
 
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
+      getSerializedSize();
       if (!getValueBytes().isEmpty()) {
         output.writeBytes(1, getValueBytes());
       }
@@ -2762,17 +2706,12 @@
       return PARSER.parseFrom(input, extensionRegistry);
     }
 
+    public static Builder newBuilder() { return new Builder(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return defaultInstance.toBuilder();
-    }
     public static Builder newBuilder(io.grpc.testing.integration.Messages.SimpleContext prototype) {
-      return defaultInstance.toBuilder().mergeFrom(prototype);
+      return newBuilder().mergeFrom(prototype);
     }
-    public Builder toBuilder() {
-      return this == defaultInstance
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    public Builder toBuilder() { return newBuilder(this); }
 
     @java.lang.Override
     protected Builder newBuilderForType(
@@ -2969,8 +2908,7 @@
     }
 
     // @@protoc_insertion_point(class_scope:grpc.testing.SimpleContext)
-    private static final io.grpc.testing.integration.Messages.SimpleContext defaultInstance;
-    static {
+    private static final io.grpc.testing.integration.Messages.SimpleContext defaultInstance;static {
       defaultInstance = new io.grpc.testing.integration.Messages.SimpleContext();
     }
 
@@ -2982,8 +2920,6 @@
       return defaultInstance;
     }
 
-    static {
-    }
   }
 
   public interface StreamingInputCallRequestOrBuilder extends
@@ -3040,7 +2976,8 @@
     }
     private StreamingInputCallRequest(
         com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
       this();
       int mutable_bitField0_ = 0;
       try {
@@ -3073,11 +3010,10 @@
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw new RuntimeException(e.setUnfinishedMessage(this));
+        throw e.setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
-        throw new RuntimeException(
-            new com.google.protobuf.InvalidProtocolBufferException(
-                e.getMessage()).setUnfinishedMessage(this));
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
       } finally {
         makeExtensionsImmutable();
       }
@@ -3100,16 +3036,7 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        try {
-          return new StreamingInputCallRequest(input, extensionRegistry);
-        } catch (RuntimeException e) {
-          if (e.getCause() instanceof
-              com.google.protobuf.InvalidProtocolBufferException) {
-            throw (com.google.protobuf.InvalidProtocolBufferException)
-                e.getCause();
-          }
-          throw e;
-        }
+        return new StreamingInputCallRequest(input, extensionRegistry);
       }
     };
 
@@ -3163,6 +3090,7 @@
 
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
+      getSerializedSize();
       if (payload_ != null) {
         output.writeMessage(1, getPayload());
       }
@@ -3236,17 +3164,12 @@
       return PARSER.parseFrom(input, extensionRegistry);
     }
 
+    public static Builder newBuilder() { return new Builder(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return defaultInstance.toBuilder();
-    }
     public static Builder newBuilder(io.grpc.testing.integration.Messages.StreamingInputCallRequest prototype) {
-      return defaultInstance.toBuilder().mergeFrom(prototype);
+      return newBuilder().mergeFrom(prototype);
     }
-    public Builder toBuilder() {
-      return this == defaultInstance
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    public Builder toBuilder() { return newBuilder(this); }
 
     @java.lang.Override
     protected Builder newBuilderForType(
@@ -3537,8 +3460,7 @@
     }
 
     // @@protoc_insertion_point(class_scope:grpc.testing.StreamingInputCallRequest)
-    private static final io.grpc.testing.integration.Messages.StreamingInputCallRequest defaultInstance;
-    static {
+    private static final io.grpc.testing.integration.Messages.StreamingInputCallRequest defaultInstance;static {
       defaultInstance = new io.grpc.testing.integration.Messages.StreamingInputCallRequest();
     }
 
@@ -3550,8 +3472,6 @@
       return defaultInstance;
     }
 
-    static {
-    }
   }
 
   public interface StreamingInputCallResponseOrBuilder extends
@@ -3593,7 +3513,8 @@
     }
     private StreamingInputCallResponse(
         com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
       this();
       int mutable_bitField0_ = 0;
       try {
@@ -3618,11 +3539,10 @@
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw new RuntimeException(e.setUnfinishedMessage(this));
+        throw e.setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
-        throw new RuntimeException(
-            new com.google.protobuf.InvalidProtocolBufferException(
-                e.getMessage()).setUnfinishedMessage(this));
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
       } finally {
         makeExtensionsImmutable();
       }
@@ -3645,16 +3565,7 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        try {
-          return new StreamingInputCallResponse(input, extensionRegistry);
-        } catch (RuntimeException e) {
-          if (e.getCause() instanceof
-              com.google.protobuf.InvalidProtocolBufferException) {
-            throw (com.google.protobuf.InvalidProtocolBufferException)
-                e.getCause();
-          }
-          throw e;
-        }
+        return new StreamingInputCallResponse(input, extensionRegistry);
       }
     };
 
@@ -3688,6 +3599,7 @@
 
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
+      getSerializedSize();
       if (aggregatedPayloadSize_ != 0) {
         output.writeInt32(1, aggregatedPayloadSize_);
       }
@@ -3761,17 +3673,12 @@
       return PARSER.parseFrom(input, extensionRegistry);
     }
 
+    public static Builder newBuilder() { return new Builder(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return defaultInstance.toBuilder();
-    }
     public static Builder newBuilder(io.grpc.testing.integration.Messages.StreamingInputCallResponse prototype) {
-      return defaultInstance.toBuilder().mergeFrom(prototype);
+      return newBuilder().mergeFrom(prototype);
     }
-    public Builder toBuilder() {
-      return this == defaultInstance
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    public Builder toBuilder() { return newBuilder(this); }
 
     @java.lang.Override
     protected Builder newBuilderForType(
@@ -3939,8 +3846,7 @@
     }
 
     // @@protoc_insertion_point(class_scope:grpc.testing.StreamingInputCallResponse)
-    private static final io.grpc.testing.integration.Messages.StreamingInputCallResponse defaultInstance;
-    static {
+    private static final io.grpc.testing.integration.Messages.StreamingInputCallResponse defaultInstance;static {
       defaultInstance = new io.grpc.testing.integration.Messages.StreamingInputCallResponse();
     }
 
@@ -3952,8 +3858,6 @@
       return defaultInstance;
     }
 
-    static {
-    }
   }
 
   public interface ResponseParametersOrBuilder extends
@@ -4007,7 +3911,8 @@
     }
     private ResponseParameters(
         com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
       this();
       int mutable_bitField0_ = 0;
       try {
@@ -4037,11 +3942,10 @@
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw new RuntimeException(e.setUnfinishedMessage(this));
+        throw e.setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
-        throw new RuntimeException(
-            new com.google.protobuf.InvalidProtocolBufferException(
-                e.getMessage()).setUnfinishedMessage(this));
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
       } finally {
         makeExtensionsImmutable();
       }
@@ -4064,16 +3968,7 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        try {
-          return new ResponseParameters(input, extensionRegistry);
-        } catch (RuntimeException e) {
-          if (e.getCause() instanceof
-              com.google.protobuf.InvalidProtocolBufferException) {
-            throw (com.google.protobuf.InvalidProtocolBufferException)
-                e.getCause();
-          }
-          throw e;
-        }
+        return new ResponseParameters(input, extensionRegistry);
       }
     };
 
@@ -4122,6 +4017,7 @@
 
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
+      getSerializedSize();
       if (size_ != 0) {
         output.writeInt32(1, size_);
       }
@@ -4202,17 +4098,12 @@
       return PARSER.parseFrom(input, extensionRegistry);
     }
 
+    public static Builder newBuilder() { return new Builder(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return defaultInstance.toBuilder();
-    }
     public static Builder newBuilder(io.grpc.testing.integration.Messages.ResponseParameters prototype) {
-      return defaultInstance.toBuilder().mergeFrom(prototype);
+      return newBuilder().mergeFrom(prototype);
     }
-    public Builder toBuilder() {
-      return this == defaultInstance
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    public Builder toBuilder() { return newBuilder(this); }
 
     @java.lang.Override
     protected Builder newBuilderForType(
@@ -4430,8 +4321,7 @@
     }
 
     // @@protoc_insertion_point(class_scope:grpc.testing.ResponseParameters)
-    private static final io.grpc.testing.integration.Messages.ResponseParameters defaultInstance;
-    static {
+    private static final io.grpc.testing.integration.Messages.ResponseParameters defaultInstance;static {
       defaultInstance = new io.grpc.testing.integration.Messages.ResponseParameters();
     }
 
@@ -4443,8 +4333,6 @@
       return defaultInstance;
     }
 
-    static {
-    }
   }
 
   public interface StreamingOutputCallRequestOrBuilder extends
@@ -4570,7 +4458,8 @@
     }
     private StreamingOutputCallRequest(
         com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
       this();
       int mutable_bitField0_ = 0;
       try {
@@ -4617,11 +4506,10 @@
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw new RuntimeException(e.setUnfinishedMessage(this));
+        throw e.setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
-        throw new RuntimeException(
-            new com.google.protobuf.InvalidProtocolBufferException(
-                e.getMessage()).setUnfinishedMessage(this));
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
       } finally {
         if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
           responseParameters_ = java.util.Collections.unmodifiableList(responseParameters_);
@@ -4647,16 +4535,7 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        try {
-          return new StreamingOutputCallRequest(input, extensionRegistry);
-        } catch (RuntimeException e) {
-          if (e.getCause() instanceof
-              com.google.protobuf.InvalidProtocolBufferException) {
-            throw (com.google.protobuf.InvalidProtocolBufferException)
-                e.getCause();
-          }
-          throw e;
-        }
+        return new StreamingOutputCallRequest(input, extensionRegistry);
       }
     };
 
@@ -4796,6 +4675,7 @@
 
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
+      getSerializedSize();
       if (responseType_ != io.grpc.testing.integration.Messages.PayloadType.COMPRESSABLE.getNumber()) {
         output.writeEnum(1, responseType_);
       }
@@ -4883,17 +4763,12 @@
       return PARSER.parseFrom(input, extensionRegistry);
     }
 
+    public static Builder newBuilder() { return new Builder(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return defaultInstance.toBuilder();
-    }
     public static Builder newBuilder(io.grpc.testing.integration.Messages.StreamingOutputCallRequest prototype) {
-      return defaultInstance.toBuilder().mergeFrom(prototype);
+      return newBuilder().mergeFrom(prototype);
     }
-    public Builder toBuilder() {
-      return this == defaultInstance
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    public Builder toBuilder() { return newBuilder(this); }
 
     @java.lang.Override
     protected Builder newBuilderForType(
@@ -5627,8 +5502,7 @@
     }
 
     // @@protoc_insertion_point(class_scope:grpc.testing.StreamingOutputCallRequest)
-    private static final io.grpc.testing.integration.Messages.StreamingOutputCallRequest defaultInstance;
-    static {
+    private static final io.grpc.testing.integration.Messages.StreamingOutputCallRequest defaultInstance;static {
       defaultInstance = new io.grpc.testing.integration.Messages.StreamingOutputCallRequest();
     }
 
@@ -5640,8 +5514,6 @@
       return defaultInstance;
     }
 
-    static {
-    }
   }
 
   public interface StreamingOutputCallResponseOrBuilder extends
@@ -5698,7 +5570,8 @@
     }
     private StreamingOutputCallResponse(
         com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
       this();
       int mutable_bitField0_ = 0;
       try {
@@ -5731,11 +5604,10 @@
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw new RuntimeException(e.setUnfinishedMessage(this));
+        throw e.setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
-        throw new RuntimeException(
-            new com.google.protobuf.InvalidProtocolBufferException(
-                e.getMessage()).setUnfinishedMessage(this));
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
       } finally {
         makeExtensionsImmutable();
       }
@@ -5758,16 +5630,7 @@
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        try {
-          return new StreamingOutputCallResponse(input, extensionRegistry);
-        } catch (RuntimeException e) {
-          if (e.getCause() instanceof
-              com.google.protobuf.InvalidProtocolBufferException) {
-            throw (com.google.protobuf.InvalidProtocolBufferException)
-                e.getCause();
-          }
-          throw e;
-        }
+        return new StreamingOutputCallResponse(input, extensionRegistry);
       }
     };
 
@@ -5821,6 +5684,7 @@
 
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
+      getSerializedSize();
       if (payload_ != null) {
         output.writeMessage(1, getPayload());
       }
@@ -5894,17 +5758,12 @@
       return PARSER.parseFrom(input, extensionRegistry);
     }
 
+    public static Builder newBuilder() { return new Builder(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return defaultInstance.toBuilder();
-    }
     public static Builder newBuilder(io.grpc.testing.integration.Messages.StreamingOutputCallResponse prototype) {
-      return defaultInstance.toBuilder().mergeFrom(prototype);
+      return newBuilder().mergeFrom(prototype);
     }
-    public Builder toBuilder() {
-      return this == defaultInstance
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    public Builder toBuilder() { return newBuilder(this); }
 
     @java.lang.Override
     protected Builder newBuilderForType(
@@ -6195,8 +6054,7 @@
     }
 
     // @@protoc_insertion_point(class_scope:grpc.testing.StreamingOutputCallResponse)
-    private static final io.grpc.testing.integration.Messages.StreamingOutputCallResponse defaultInstance;
-    static {
+    private static final io.grpc.testing.integration.Messages.StreamingOutputCallResponse defaultInstance;static {
       defaultInstance = new io.grpc.testing.integration.Messages.StreamingOutputCallResponse();
     }
 
@@ -6208,8 +6066,6 @@
       return defaultInstance;
     }
 
-    static {
-    }
   }
 
   private static final com.google.protobuf.Descriptors.Descriptor