public final boolean isInitialized() {
   if (!hasAuthor) return false;
   if (!hasResultingVersion) return false;
   if (!hasApplicationTimestamp) return false;
   if (!getResultingVersion().isInitialized()) return false;
   for (org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation element :
       getOperationList()) {
     if (!element.isInitialized()) return false;
   }
   return true;
 }
 public Builder mergeFrom(
     com.google.protobuf.CodedInputStream input,
     com.google.protobuf.ExtensionRegistryLite extensionRegistry)
     throws java.io.IOException {
   com.google.protobuf.UnknownFieldSet.Builder unknownFields =
       com.google.protobuf.UnknownFieldSet.newBuilder(this.getUnknownFields());
   while (true) {
     int tag = input.readTag();
     switch (tag) {
       case 0:
         this.setUnknownFields(unknownFields.build());
         return this;
       default:
         {
           if (!parseUnknownField(
               input, unknownFields,
               extensionRegistry, tag)) {
             this.setUnknownFields(unknownFields.build());
             return this;
           }
           break;
         }
       case 10:
         {
           setAuthor(input.readString());
           break;
         }
       case 18:
         {
           org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.Builder subBuilder =
               org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.newBuilder();
           if (hasResultingVersion()) {
             subBuilder.mergeFrom(getResultingVersion());
           }
           input.readMessage(subBuilder, extensionRegistry);
           setResultingVersion(subBuilder.buildPartial());
           break;
         }
       case 24:
         {
           setApplicationTimestamp(input.readInt64());
           break;
         }
       case 34:
         {
           org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation.Builder subBuilder =
               org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation.newBuilder();
           input.readMessage(subBuilder, extensionRegistry);
           addOperation(subBuilder.buildPartial());
           break;
         }
     }
   }
 }