http://git-wip-us.apache.org/repos/asf/incubator-wave/blob/7d8609e7/proto_src/org/waveprotocol/wave/federation/Proto.java
----------------------------------------------------------------------
diff --git a/proto_src/org/waveprotocol/wave/federation/Proto.java 
b/proto_src/org/waveprotocol/wave/federation/Proto.java
deleted file mode 100644
index 49307f9..0000000
--- a/proto_src/org/waveprotocol/wave/federation/Proto.java
+++ /dev/null
@@ -1,16489 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: org/waveprotocol/wave/federation/federation.protodevel
-
-package org.waveprotocol.wave.federation;
-
-public final class Proto {
-  private Proto() {}
-  public static void registerAllExtensions(
-      com.google.protobuf.ExtensionRegistry registry) {
-  }
-  public interface ProtocolWaveletDeltaOrBuilder
-      extends com.google.protobuf.MessageOrBuilder {
-
-    // required .federation.ProtocolHashedVersion hashed_version = 1;
-    /**
-     * <code>required .federation.ProtocolHashedVersion hashed_version = 
1;</code>
-     *
-     * <pre>
-     * Wavelet version that the delta is intended to be applied to.
-     * </pre>
-     */
-    boolean hasHashedVersion();
-    /**
-     * <code>required .federation.ProtocolHashedVersion hashed_version = 
1;</code>
-     *
-     * <pre>
-     * Wavelet version that the delta is intended to be applied to.
-     * </pre>
-     */
-    org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion 
getHashedVersion();
-    /**
-     * <code>required .federation.ProtocolHashedVersion hashed_version = 
1;</code>
-     *
-     * <pre>
-     * Wavelet version that the delta is intended to be applied to.
-     * </pre>
-     */
-    org.waveprotocol.wave.federation.Proto.ProtocolHashedVersionOrBuilder 
getHashedVersionOrBuilder();
-
-    // required string author = 2;
-    /**
-     * <code>required string author = 2;</code>
-     *
-     * <pre>
-     * Wave address of the contributor. Must be an explicit wavelet 
participant,
-     * and may be different from the originator of this delta.
-     * </pre>
-     */
-    boolean hasAuthor();
-    /**
-     * <code>required string author = 2;</code>
-     *
-     * <pre>
-     * Wave address of the contributor. Must be an explicit wavelet 
participant,
-     * and may be different from the originator of this delta.
-     * </pre>
-     */
-    java.lang.String getAuthor();
-    /**
-     * <code>required string author = 2;</code>
-     *
-     * <pre>
-     * Wave address of the contributor. Must be an explicit wavelet 
participant,
-     * and may be different from the originator of this delta.
-     * </pre>
-     */
-    com.google.protobuf.ByteString
-        getAuthorBytes();
-
-    // repeated .federation.ProtocolWaveletOperation operation = 3;
-    /**
-     * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-     *
-     * <pre>
-     * Operations included in this delta.
-     * </pre>
-     */
-    
java.util.List<org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation> 
-        getOperationList();
-    /**
-     * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-     *
-     * <pre>
-     * Operations included in this delta.
-     * </pre>
-     */
-    org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation 
getOperation(int index);
-    /**
-     * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-     *
-     * <pre>
-     * Operations included in this delta.
-     * </pre>
-     */
-    int getOperationCount();
-    /**
-     * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-     *
-     * <pre>
-     * Operations included in this delta.
-     * </pre>
-     */
-    java.util.List<? extends 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperationOrBuilder> 
-        getOperationOrBuilderList();
-    /**
-     * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-     *
-     * <pre>
-     * Operations included in this delta.
-     * </pre>
-     */
-    org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperationOrBuilder 
getOperationOrBuilder(
-        int index);
-
-    // repeated string address_path = 4;
-    /**
-     * <code>repeated string address_path = 4;</code>
-     *
-     * <pre>
-     *
-     * The nodes on the "overt" path from the originator through the address
-     * access graph leading up to (but excluding) the author. The path excludes
-     * any initial segments of the complete path which come before a WRITE edge
-     * in the graph. This field is empty if the author is either the 
originator's
-     * entry point into the address graph or is accessed by a WRITE edge.
-     *
-     * For example, "[email protected]" may be the explicit 
participant of
-     * a wavelet, and is set as the author of a delta. However, this group is
-     * being asked to act on behalf of "[email protected]", who is a 
member
-     * of "wave-authors", which is in turn a member of "wave-discuss". In this
-     * example, the delta would be configured as such:
-     *  delta.author = "[email protected]"
-     *  delta.addressPath = ["[email protected]", 
"[email protected]"]
-     * </pre>
-     */
-    java.util.List<java.lang.String>
-    getAddressPathList();
-    /**
-     * <code>repeated string address_path = 4;</code>
-     *
-     * <pre>
-     *
-     * The nodes on the "overt" path from the originator through the address
-     * access graph leading up to (but excluding) the author. The path excludes
-     * any initial segments of the complete path which come before a WRITE edge
-     * in the graph. This field is empty if the author is either the 
originator's
-     * entry point into the address graph or is accessed by a WRITE edge.
-     *
-     * For example, "[email protected]" may be the explicit 
participant of
-     * a wavelet, and is set as the author of a delta. However, this group is
-     * being asked to act on behalf of "[email protected]", who is a 
member
-     * of "wave-authors", which is in turn a member of "wave-discuss". In this
-     * example, the delta would be configured as such:
-     *  delta.author = "[email protected]"
-     *  delta.addressPath = ["[email protected]", 
"[email protected]"]
-     * </pre>
-     */
-    int getAddressPathCount();
-    /**
-     * <code>repeated string address_path = 4;</code>
-     *
-     * <pre>
-     *
-     * The nodes on the "overt" path from the originator through the address
-     * access graph leading up to (but excluding) the author. The path excludes
-     * any initial segments of the complete path which come before a WRITE edge
-     * in the graph. This field is empty if the author is either the 
originator's
-     * entry point into the address graph or is accessed by a WRITE edge.
-     *
-     * For example, "[email protected]" may be the explicit 
participant of
-     * a wavelet, and is set as the author of a delta. However, this group is
-     * being asked to act on behalf of "[email protected]", who is a 
member
-     * of "wave-authors", which is in turn a member of "wave-discuss". In this
-     * example, the delta would be configured as such:
-     *  delta.author = "[email protected]"
-     *  delta.addressPath = ["[email protected]", 
"[email protected]"]
-     * </pre>
-     */
-    java.lang.String getAddressPath(int index);
-    /**
-     * <code>repeated string address_path = 4;</code>
-     *
-     * <pre>
-     *
-     * The nodes on the "overt" path from the originator through the address
-     * access graph leading up to (but excluding) the author. The path excludes
-     * any initial segments of the complete path which come before a WRITE edge
-     * in the graph. This field is empty if the author is either the 
originator's
-     * entry point into the address graph or is accessed by a WRITE edge.
-     *
-     * For example, "[email protected]" may be the explicit 
participant of
-     * a wavelet, and is set as the author of a delta. However, this group is
-     * being asked to act on behalf of "[email protected]", who is a 
member
-     * of "wave-authors", which is in turn a member of "wave-discuss". In this
-     * example, the delta would be configured as such:
-     *  delta.author = "[email protected]"
-     *  delta.addressPath = ["[email protected]", 
"[email protected]"]
-     * </pre>
-     */
-    com.google.protobuf.ByteString
-        getAddressPathBytes(int index);
-  }
-  /**
-   * Protobuf type {@code federation.ProtocolWaveletDelta}
-   *
-   * <pre>
-   **
-   * An immutable list of operations for contribution to a wavelet.
-   * Specifies the contributor and the wavelet version that the
-   * operations are intended to be applied to.  The host wave server
-   * may apply the operations to the wavelet at the specified wavelet version
-   * or it may accept them at a later version after operational transformation
-   * against the operations at the intermediate wavelet versions.
-   * </pre>
-   */
-  public static final class ProtocolWaveletDelta extends
-      com.google.protobuf.GeneratedMessage
-      implements ProtocolWaveletDeltaOrBuilder {
-    // Use ProtocolWaveletDelta.newBuilder() to construct.
-    private 
ProtocolWaveletDelta(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private ProtocolWaveletDelta(boolean noInit) { this.unknownFields = 
com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final ProtocolWaveletDelta defaultInstance;
-    public static ProtocolWaveletDelta getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    public ProtocolWaveletDelta getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ProtocolWaveletDelta(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-            case 10: {
-              
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.Builder subBuilder 
= null;
-              if (((bitField0_ & 0x00000001) == 0x00000001)) {
-                subBuilder = hashedVersion_.toBuilder();
-              }
-              hashedVersion_ = 
input.readMessage(org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.PARSER,
 extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(hashedVersion_);
-                hashedVersion_ = subBuilder.buildPartial();
-              }
-              bitField0_ |= 0x00000001;
-              break;
-            }
-            case 18: {
-              bitField0_ |= 0x00000002;
-              author_ = input.readBytes();
-              break;
-            }
-            case 26: {
-              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
-                operation_ = new 
java.util.ArrayList<org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation>();
-                mutable_bitField0_ |= 0x00000004;
-              }
-              
operation_.add(input.readMessage(org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation.PARSER,
 extensionRegistry));
-              break;
-            }
-            case 34: {
-              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
-                addressPath_ = new com.google.protobuf.LazyStringArrayList();
-                mutable_bitField0_ |= 0x00000008;
-              }
-              addressPath_.add(input.readBytes());
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
-          operation_ = java.util.Collections.unmodifiableList(operation_);
-        }
-        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
-          addressPath_ = new 
com.google.protobuf.UnmodifiableLazyStringList(addressPath_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return 
org.waveprotocol.wave.federation.Proto.internal_static_federation_ProtocolWaveletDelta_descriptor;
-    }
-
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return 
org.waveprotocol.wave.federation.Proto.internal_static_federation_ProtocolWaveletDelta_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              
org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta.class, 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta.Builder.class);
-    }
-
-    public static com.google.protobuf.Parser<ProtocolWaveletDelta> PARSER =
-        new com.google.protobuf.AbstractParser<ProtocolWaveletDelta>() {
-      public ProtocolWaveletDelta parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ProtocolWaveletDelta(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<ProtocolWaveletDelta> getParserForType() 
{
-      return PARSER;
-    }
-
-    private int bitField0_;
-    // required .federation.ProtocolHashedVersion hashed_version = 1;
-    public static final int HASHED_VERSION_FIELD_NUMBER = 1;
-    private org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion 
hashedVersion_;
-    /**
-     * <code>required .federation.ProtocolHashedVersion hashed_version = 
1;</code>
-     *
-     * <pre>
-     * Wavelet version that the delta is intended to be applied to.
-     * </pre>
-     */
-    public boolean hasHashedVersion() {
-      return ((bitField0_ & 0x00000001) == 0x00000001);
-    }
-    /**
-     * <code>required .federation.ProtocolHashedVersion hashed_version = 
1;</code>
-     *
-     * <pre>
-     * Wavelet version that the delta is intended to be applied to.
-     * </pre>
-     */
-    public org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion 
getHashedVersion() {
-      return hashedVersion_;
-    }
-    /**
-     * <code>required .federation.ProtocolHashedVersion hashed_version = 
1;</code>
-     *
-     * <pre>
-     * Wavelet version that the delta is intended to be applied to.
-     * </pre>
-     */
-    public 
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersionOrBuilder 
getHashedVersionOrBuilder() {
-      return hashedVersion_;
-    }
-
-    // required string author = 2;
-    public static final int AUTHOR_FIELD_NUMBER = 2;
-    private java.lang.Object author_;
-    /**
-     * <code>required string author = 2;</code>
-     *
-     * <pre>
-     * Wave address of the contributor. Must be an explicit wavelet 
participant,
-     * and may be different from the originator of this delta.
-     * </pre>
-     */
-    public boolean hasAuthor() {
-      return ((bitField0_ & 0x00000002) == 0x00000002);
-    }
-    /**
-     * <code>required string author = 2;</code>
-     *
-     * <pre>
-     * Wave address of the contributor. Must be an explicit wavelet 
participant,
-     * and may be different from the originator of this delta.
-     * </pre>
-     */
-    public java.lang.String getAuthor() {
-      java.lang.Object ref = author_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          author_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>required string author = 2;</code>
-     *
-     * <pre>
-     * Wave address of the contributor. Must be an explicit wavelet 
participant,
-     * and may be different from the originator of this delta.
-     * </pre>
-     */
-    public com.google.protobuf.ByteString
-        getAuthorBytes() {
-      java.lang.Object ref = author_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        author_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    // repeated .federation.ProtocolWaveletOperation operation = 3;
-    public static final int OPERATION_FIELD_NUMBER = 3;
-    private 
java.util.List<org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation> 
operation_;
-    /**
-     * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-     *
-     * <pre>
-     * Operations included in this delta.
-     * </pre>
-     */
-    public 
java.util.List<org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation> 
getOperationList() {
-      return operation_;
-    }
-    /**
-     * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-     *
-     * <pre>
-     * Operations included in this delta.
-     * </pre>
-     */
-    public java.util.List<? extends 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperationOrBuilder> 
-        getOperationOrBuilderList() {
-      return operation_;
-    }
-    /**
-     * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-     *
-     * <pre>
-     * Operations included in this delta.
-     * </pre>
-     */
-    public int getOperationCount() {
-      return operation_.size();
-    }
-    /**
-     * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-     *
-     * <pre>
-     * Operations included in this delta.
-     * </pre>
-     */
-    public org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation 
getOperation(int index) {
-      return operation_.get(index);
-    }
-    /**
-     * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-     *
-     * <pre>
-     * Operations included in this delta.
-     * </pre>
-     */
-    public 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperationOrBuilder 
getOperationOrBuilder(
-        int index) {
-      return operation_.get(index);
-    }
-
-    // repeated string address_path = 4;
-    public static final int ADDRESS_PATH_FIELD_NUMBER = 4;
-    private com.google.protobuf.LazyStringList addressPath_;
-    /**
-     * <code>repeated string address_path = 4;</code>
-     *
-     * <pre>
-     *
-     * The nodes on the "overt" path from the originator through the address
-     * access graph leading up to (but excluding) the author. The path excludes
-     * any initial segments of the complete path which come before a WRITE edge
-     * in the graph. This field is empty if the author is either the 
originator's
-     * entry point into the address graph or is accessed by a WRITE edge.
-     *
-     * For example, "[email protected]" may be the explicit 
participant of
-     * a wavelet, and is set as the author of a delta. However, this group is
-     * being asked to act on behalf of "[email protected]", who is a 
member
-     * of "wave-authors", which is in turn a member of "wave-discuss". In this
-     * example, the delta would be configured as such:
-     *  delta.author = "[email protected]"
-     *  delta.addressPath = ["[email protected]", 
"[email protected]"]
-     * </pre>
-     */
-    public java.util.List<java.lang.String>
-        getAddressPathList() {
-      return addressPath_;
-    }
-    /**
-     * <code>repeated string address_path = 4;</code>
-     *
-     * <pre>
-     *
-     * The nodes on the "overt" path from the originator through the address
-     * access graph leading up to (but excluding) the author. The path excludes
-     * any initial segments of the complete path which come before a WRITE edge
-     * in the graph. This field is empty if the author is either the 
originator's
-     * entry point into the address graph or is accessed by a WRITE edge.
-     *
-     * For example, "[email protected]" may be the explicit 
participant of
-     * a wavelet, and is set as the author of a delta. However, this group is
-     * being asked to act on behalf of "[email protected]", who is a 
member
-     * of "wave-authors", which is in turn a member of "wave-discuss". In this
-     * example, the delta would be configured as such:
-     *  delta.author = "[email protected]"
-     *  delta.addressPath = ["[email protected]", 
"[email protected]"]
-     * </pre>
-     */
-    public int getAddressPathCount() {
-      return addressPath_.size();
-    }
-    /**
-     * <code>repeated string address_path = 4;</code>
-     *
-     * <pre>
-     *
-     * The nodes on the "overt" path from the originator through the address
-     * access graph leading up to (but excluding) the author. The path excludes
-     * any initial segments of the complete path which come before a WRITE edge
-     * in the graph. This field is empty if the author is either the 
originator's
-     * entry point into the address graph or is accessed by a WRITE edge.
-     *
-     * For example, "[email protected]" may be the explicit 
participant of
-     * a wavelet, and is set as the author of a delta. However, this group is
-     * being asked to act on behalf of "[email protected]", who is a 
member
-     * of "wave-authors", which is in turn a member of "wave-discuss". In this
-     * example, the delta would be configured as such:
-     *  delta.author = "[email protected]"
-     *  delta.addressPath = ["[email protected]", 
"[email protected]"]
-     * </pre>
-     */
-    public java.lang.String getAddressPath(int index) {
-      return addressPath_.get(index);
-    }
-    /**
-     * <code>repeated string address_path = 4;</code>
-     *
-     * <pre>
-     *
-     * The nodes on the "overt" path from the originator through the address
-     * access graph leading up to (but excluding) the author. The path excludes
-     * any initial segments of the complete path which come before a WRITE edge
-     * in the graph. This field is empty if the author is either the 
originator's
-     * entry point into the address graph or is accessed by a WRITE edge.
-     *
-     * For example, "[email protected]" may be the explicit 
participant of
-     * a wavelet, and is set as the author of a delta. However, this group is
-     * being asked to act on behalf of "[email protected]", who is a 
member
-     * of "wave-authors", which is in turn a member of "wave-discuss". In this
-     * example, the delta would be configured as such:
-     *  delta.author = "[email protected]"
-     *  delta.addressPath = ["[email protected]", 
"[email protected]"]
-     * </pre>
-     */
-    public com.google.protobuf.ByteString
-        getAddressPathBytes(int index) {
-      return addressPath_.getByteString(index);
-    }
-
-    private void initFields() {
-      hashedVersion_ = 
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.getDefaultInstance();
-      author_ = "";
-      operation_ = java.util.Collections.emptyList();
-      addressPath_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-    }
-    private byte memoizedIsInitialized = -1;
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
-
-      if (!hasHashedVersion()) {
-        memoizedIsInitialized = 0;
-        return false;
-      }
-      if (!hasAuthor()) {
-        memoizedIsInitialized = 0;
-        return false;
-      }
-      if (!getHashedVersion().isInitialized()) {
-        memoizedIsInitialized = 0;
-        return false;
-      }
-      for (int i = 0; i < getOperationCount(); i++) {
-        if (!getOperation(i).isInitialized()) {
-          memoizedIsInitialized = 0;
-          return false;
-        }
-      }
-      memoizedIsInitialized = 1;
-      return true;
-    }
-
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      getSerializedSize();
-      if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        output.writeMessage(1, hashedVersion_);
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        output.writeBytes(2, getAuthorBytes());
-      }
-      for (int i = 0; i < operation_.size(); i++) {
-        output.writeMessage(3, operation_.get(i));
-      }
-      for (int i = 0; i < addressPath_.size(); i++) {
-        output.writeBytes(4, addressPath_.getByteString(i));
-      }
-      getUnknownFields().writeTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public int getSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, hashedVersion_);
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(2, getAuthorBytes());
-      }
-      for (int i = 0; i < operation_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, operation_.get(i));
-      }
-      {
-        int dataSize = 0;
-        for (int i = 0; i < addressPath_.size(); i++) {
-          dataSize += com.google.protobuf.CodedOutputStream
-            .computeBytesSizeNoTag(addressPath_.getByteString(i));
-        }
-        size += dataSize;
-        size += 1 * getAddressPathList().size();
-      }
-      size += getUnknownFields().getSerializedSize();
-      memoizedSerializedSize = size;
-      return size;
-    }
-
-    private static final long serialVersionUID = 0L;
-    @java.lang.Override
-    protected java.lang.Object writeReplace()
-        throws java.io.ObjectStreamException {
-      return super.writeReplace();
-    }
-
-    public static org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta 
parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta 
parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta 
parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta 
parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta 
parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta 
parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-    public static org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta 
parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
-    }
-    public static org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta 
parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
-    }
-    public static org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta 
parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta 
parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder 
newBuilder(org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta 
prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    public Builder toBuilder() { return newBuilder(this); }
-
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code federation.ProtocolWaveletDelta}
-     *
-     * <pre>
-     **
-     * An immutable list of operations for contribution to a wavelet.
-     * Specifies the contributor and the wavelet version that the
-     * operations are intended to be applied to.  The host wave server
-     * may apply the operations to the wavelet at the specified wavelet version
-     * or it may accept them at a later version after operational 
transformation
-     * against the operations at the intermediate wavelet versions.
-     * </pre>
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder>
-       implements 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletDeltaOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return 
org.waveprotocol.wave.federation.Proto.internal_static_federation_ProtocolWaveletDelta_descriptor;
-      }
-
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return 
org.waveprotocol.wave.federation.Proto.internal_static_federation_ProtocolWaveletDelta_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                
org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta.class, 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta.Builder.class);
-      }
-
-      // Construct using 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
-          getHashedVersionFieldBuilder();
-          getOperationFieldBuilder();
-        }
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      public Builder clear() {
-        super.clear();
-        if (hashedVersionBuilder_ == null) {
-          hashedVersion_ = 
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.getDefaultInstance();
-        } else {
-          hashedVersionBuilder_.clear();
-        }
-        bitField0_ = (bitField0_ & ~0x00000001);
-        author_ = "";
-        bitField0_ = (bitField0_ & ~0x00000002);
-        if (operationBuilder_ == null) {
-          operation_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000004);
-        } else {
-          operationBuilder_.clear();
-        }
-        addressPath_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00000008);
-        return this;
-      }
-
-      public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return 
org.waveprotocol.wave.federation.Proto.internal_static_federation_ProtocolWaveletDelta_descriptor;
-      }
-
-      public org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta 
getDefaultInstanceForType() {
-        return 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta.getDefaultInstance();
-      }
-
-      public org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta 
build() {
-        org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta result = 
buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      public org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta 
buildPartial() {
-        org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta result = 
new org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        if (hashedVersionBuilder_ == null) {
-          result.hashedVersion_ = hashedVersion_;
-        } else {
-          result.hashedVersion_ = hashedVersionBuilder_.build();
-        }
-        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
-          to_bitField0_ |= 0x00000002;
-        }
-        result.author_ = author_;
-        if (operationBuilder_ == null) {
-          if (((bitField0_ & 0x00000004) == 0x00000004)) {
-            operation_ = java.util.Collections.unmodifiableList(operation_);
-            bitField0_ = (bitField0_ & ~0x00000004);
-          }
-          result.operation_ = operation_;
-        } else {
-          result.operation_ = operationBuilder_.build();
-        }
-        if (((bitField0_ & 0x00000008) == 0x00000008)) {
-          addressPath_ = new com.google.protobuf.UnmodifiableLazyStringList(
-              addressPath_);
-          bitField0_ = (bitField0_ & ~0x00000008);
-        }
-        result.addressPath_ = addressPath_;
-        result.bitField0_ = to_bitField0_;
-        onBuilt();
-        return result;
-      }
-
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta) {
-          return 
mergeFrom((org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder 
mergeFrom(org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta other) {
-        if (other == 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta.getDefaultInstance())
 return this;
-        if (other.hasHashedVersion()) {
-          mergeHashedVersion(other.getHashedVersion());
-        }
-        if (other.hasAuthor()) {
-          bitField0_ |= 0x00000002;
-          author_ = other.author_;
-          onChanged();
-        }
-        if (operationBuilder_ == null) {
-          if (!other.operation_.isEmpty()) {
-            if (operation_.isEmpty()) {
-              operation_ = other.operation_;
-              bitField0_ = (bitField0_ & ~0x00000004);
-            } else {
-              ensureOperationIsMutable();
-              operation_.addAll(other.operation_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.operation_.isEmpty()) {
-            if (operationBuilder_.isEmpty()) {
-              operationBuilder_.dispose();
-              operationBuilder_ = null;
-              operation_ = other.operation_;
-              bitField0_ = (bitField0_ & ~0x00000004);
-              operationBuilder_ = 
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
-                   getOperationFieldBuilder() : null;
-            } else {
-              operationBuilder_.addAllMessages(other.operation_);
-            }
-          }
-        }
-        if (!other.addressPath_.isEmpty()) {
-          if (addressPath_.isEmpty()) {
-            addressPath_ = other.addressPath_;
-            bitField0_ = (bitField0_ & ~0x00000008);
-          } else {
-            ensureAddressPathIsMutable();
-            addressPath_.addAll(other.addressPath_);
-          }
-          onChanged();
-        }
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-
-      public final boolean isInitialized() {
-        if (!hasHashedVersion()) {
-          
-          return false;
-        }
-        if (!hasAuthor()) {
-          
-          return false;
-        }
-        if (!getHashedVersion().isInitialized()) {
-          
-          return false;
-        }
-        for (int i = 0; i < getOperationCount(); i++) {
-          if (!getOperation(i).isInitialized()) {
-            
-            return false;
-          }
-        }
-        return true;
-      }
-
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta 
parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = 
(org.waveprotocol.wave.federation.Proto.ProtocolWaveletDelta) 
e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      // required .federation.ProtocolHashedVersion hashed_version = 1;
-      private org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion 
hashedVersion_ = 
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.getDefaultInstance();
-      private com.google.protobuf.SingleFieldBuilder<
-          org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion, 
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.Builder, 
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersionOrBuilder> 
hashedVersionBuilder_;
-      /**
-       * <code>required .federation.ProtocolHashedVersion hashed_version = 
1;</code>
-       *
-       * <pre>
-       * Wavelet version that the delta is intended to be applied to.
-       * </pre>
-       */
-      public boolean hasHashedVersion() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
-      }
-      /**
-       * <code>required .federation.ProtocolHashedVersion hashed_version = 
1;</code>
-       *
-       * <pre>
-       * Wavelet version that the delta is intended to be applied to.
-       * </pre>
-       */
-      public org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion 
getHashedVersion() {
-        if (hashedVersionBuilder_ == null) {
-          return hashedVersion_;
-        } else {
-          return hashedVersionBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>required .federation.ProtocolHashedVersion hashed_version = 
1;</code>
-       *
-       * <pre>
-       * Wavelet version that the delta is intended to be applied to.
-       * </pre>
-       */
-      public Builder 
setHashedVersion(org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion 
value) {
-        if (hashedVersionBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          hashedVersion_ = value;
-          onChanged();
-        } else {
-          hashedVersionBuilder_.setMessage(value);
-        }
-        bitField0_ |= 0x00000001;
-        return this;
-      }
-      /**
-       * <code>required .federation.ProtocolHashedVersion hashed_version = 
1;</code>
-       *
-       * <pre>
-       * Wavelet version that the delta is intended to be applied to.
-       * </pre>
-       */
-      public Builder setHashedVersion(
-          org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.Builder 
builderForValue) {
-        if (hashedVersionBuilder_ == null) {
-          hashedVersion_ = builderForValue.build();
-          onChanged();
-        } else {
-          hashedVersionBuilder_.setMessage(builderForValue.build());
-        }
-        bitField0_ |= 0x00000001;
-        return this;
-      }
-      /**
-       * <code>required .federation.ProtocolHashedVersion hashed_version = 
1;</code>
-       *
-       * <pre>
-       * Wavelet version that the delta is intended to be applied to.
-       * </pre>
-       */
-      public Builder 
mergeHashedVersion(org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion 
value) {
-        if (hashedVersionBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) == 0x00000001) &&
-              hashedVersion_ != 
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.getDefaultInstance())
 {
-            hashedVersion_ =
-              
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.newBuilder(hashedVersion_).mergeFrom(value).buildPartial();
-          } else {
-            hashedVersion_ = value;
-          }
-          onChanged();
-        } else {
-          hashedVersionBuilder_.mergeFrom(value);
-        }
-        bitField0_ |= 0x00000001;
-        return this;
-      }
-      /**
-       * <code>required .federation.ProtocolHashedVersion hashed_version = 
1;</code>
-       *
-       * <pre>
-       * Wavelet version that the delta is intended to be applied to.
-       * </pre>
-       */
-      public Builder clearHashedVersion() {
-        if (hashedVersionBuilder_ == null) {
-          hashedVersion_ = 
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.getDefaultInstance();
-          onChanged();
-        } else {
-          hashedVersionBuilder_.clear();
-        }
-        bitField0_ = (bitField0_ & ~0x00000001);
-        return this;
-      }
-      /**
-       * <code>required .federation.ProtocolHashedVersion hashed_version = 
1;</code>
-       *
-       * <pre>
-       * Wavelet version that the delta is intended to be applied to.
-       * </pre>
-       */
-      public 
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.Builder 
getHashedVersionBuilder() {
-        bitField0_ |= 0x00000001;
-        onChanged();
-        return getHashedVersionFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>required .federation.ProtocolHashedVersion hashed_version = 
1;</code>
-       *
-       * <pre>
-       * Wavelet version that the delta is intended to be applied to.
-       * </pre>
-       */
-      public 
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersionOrBuilder 
getHashedVersionOrBuilder() {
-        if (hashedVersionBuilder_ != null) {
-          return hashedVersionBuilder_.getMessageOrBuilder();
-        } else {
-          return hashedVersion_;
-        }
-      }
-      /**
-       * <code>required .federation.ProtocolHashedVersion hashed_version = 
1;</code>
-       *
-       * <pre>
-       * Wavelet version that the delta is intended to be applied to.
-       * </pre>
-       */
-      private com.google.protobuf.SingleFieldBuilder<
-          org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion, 
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.Builder, 
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersionOrBuilder> 
-          getHashedVersionFieldBuilder() {
-        if (hashedVersionBuilder_ == null) {
-          hashedVersionBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-              org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion, 
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.Builder, 
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersionOrBuilder>(
-                  hashedVersion_,
-                  getParentForChildren(),
-                  isClean());
-          hashedVersion_ = null;
-        }
-        return hashedVersionBuilder_;
-      }
-
-      // required string author = 2;
-      private java.lang.Object author_ = "";
-      /**
-       * <code>required string author = 2;</code>
-       *
-       * <pre>
-       * Wave address of the contributor. Must be an explicit wavelet 
participant,
-       * and may be different from the originator of this delta.
-       * </pre>
-       */
-      public boolean hasAuthor() {
-        return ((bitField0_ & 0x00000002) == 0x00000002);
-      }
-      /**
-       * <code>required string author = 2;</code>
-       *
-       * <pre>
-       * Wave address of the contributor. Must be an explicit wavelet 
participant,
-       * and may be different from the originator of this delta.
-       * </pre>
-       */
-      public java.lang.String getAuthor() {
-        java.lang.Object ref = author_;
-        if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          author_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>required string author = 2;</code>
-       *
-       * <pre>
-       * Wave address of the contributor. Must be an explicit wavelet 
participant,
-       * and may be different from the originator of this delta.
-       * </pre>
-       */
-      public com.google.protobuf.ByteString
-          getAuthorBytes() {
-        java.lang.Object ref = author_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          author_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>required string author = 2;</code>
-       *
-       * <pre>
-       * Wave address of the contributor. Must be an explicit wavelet 
participant,
-       * and may be different from the originator of this delta.
-       * </pre>
-       */
-      public Builder setAuthor(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
-        author_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>required string author = 2;</code>
-       *
-       * <pre>
-       * Wave address of the contributor. Must be an explicit wavelet 
participant,
-       * and may be different from the originator of this delta.
-       * </pre>
-       */
-      public Builder clearAuthor() {
-        bitField0_ = (bitField0_ & ~0x00000002);
-        author_ = getDefaultInstance().getAuthor();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>required string author = 2;</code>
-       *
-       * <pre>
-       * Wave address of the contributor. Must be an explicit wavelet 
participant,
-       * and may be different from the originator of this delta.
-       * </pre>
-       */
-      public Builder setAuthorBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
-        author_ = value;
-        onChanged();
-        return this;
-      }
-
-      // repeated .federation.ProtocolWaveletOperation operation = 3;
-      private 
java.util.List<org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation> 
operation_ =
-        java.util.Collections.emptyList();
-      private void ensureOperationIsMutable() {
-        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
-          operation_ = new 
java.util.ArrayList<org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation>(operation_);
-          bitField0_ |= 0x00000004;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilder<
-          org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation, 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation.Builder, 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperationOrBuilder> 
operationBuilder_;
-
-      /**
-       * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-       *
-       * <pre>
-       * Operations included in this delta.
-       * </pre>
-       */
-      public 
java.util.List<org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation> 
getOperationList() {
-        if (operationBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(operation_);
-        } else {
-          return operationBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-       *
-       * <pre>
-       * Operations included in this delta.
-       * </pre>
-       */
-      public int getOperationCount() {
-        if (operationBuilder_ == null) {
-          return operation_.size();
-        } else {
-          return operationBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-       *
-       * <pre>
-       * Operations included in this delta.
-       * </pre>
-       */
-      public org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation 
getOperation(int index) {
-        if (operationBuilder_ == null) {
-          return operation_.get(index);
-        } else {
-          return operationBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-       *
-       * <pre>
-       * Operations included in this delta.
-       * </pre>
-       */
-      public Builder setOperation(
-          int index, 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation value) {
-        if (operationBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureOperationIsMutable();
-          operation_.set(index, value);
-          onChanged();
-        } else {
-          operationBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-       *
-       * <pre>
-       * Operations included in this delta.
-       * </pre>
-       */
-      public Builder setOperation(
-          int index, 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation.Builder 
builderForValue) {
-        if (operationBuilder_ == null) {
-          ensureOperationIsMutable();
-          operation_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          operationBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-       *
-       * <pre>
-       * Operations included in this delta.
-       * </pre>
-       */
-      public Builder 
addOperation(org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation 
value) {
-        if (operationBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureOperationIsMutable();
-          operation_.add(value);
-          onChanged();
-        } else {
-          operationBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-       *
-       * <pre>
-       * Operations included in this delta.
-       * </pre>
-       */
-      public Builder addOperation(
-          int index, 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation value) {
-        if (operationBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureOperationIsMutable();
-          operation_.add(index, value);
-          onChanged();
-        } else {
-          operationBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-       *
-       * <pre>
-       * Operations included in this delta.
-       * </pre>
-       */
-      public Builder addOperation(
-          
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation.Builder 
builderForValue) {
-        if (operationBuilder_ == null) {
-          ensureOperationIsMutable();
-          operation_.add(builderForValue.build());
-          onChanged();
-        } else {
-          operationBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-       *
-       * <pre>
-       * Operations included in this delta.
-       * </pre>
-       */
-      public Builder addOperation(
-          int index, 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation.Builder 
builderForValue) {
-        if (operationBuilder_ == null) {
-          ensureOperationIsMutable();
-          operation_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          operationBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-       *
-       * <pre>
-       * Operations included in this delta.
-       * </pre>
-       */
-      public Builder addAllOperation(
-          java.lang.Iterable<? extends 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation> values) {
-        if (operationBuilder_ == null) {
-          ensureOperationIsMutable();
-          super.addAll(values, operation_);
-          onChanged();
-        } else {
-          operationBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-       *
-       * <pre>
-       * Operations included in this delta.
-       * </pre>
-       */
-      public Builder clearOperation() {
-        if (operationBuilder_ == null) {
-          operation_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000004);
-          onChanged();
-        } else {
-          operationBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-       *
-       * <pre>
-       * Operations included in this delta.
-       * </pre>
-       */
-      public Builder removeOperation(int index) {
-        if (operationBuilder_ == null) {
-          ensureOperationIsMutable();
-          operation_.remove(index);
-          onChanged();
-        } else {
-          operationBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-       *
-       * <pre>
-       * Operations included in this delta.
-       * </pre>
-       */
-      public 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation.Builder 
getOperationBuilder(
-          int index) {
-        return getOperationFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-       *
-       * <pre>
-       * Operations included in this delta.
-       * </pre>
-       */
-      public 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperationOrBuilder 
getOperationOrBuilder(
-          int index) {
-        if (operationBuilder_ == null) {
-          return operation_.get(index);  } else {
-          return operationBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-       *
-       * <pre>
-       * Operations included in this delta.
-       * </pre>
-       */
-      public java.util.List<? extends 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperationOrBuilder> 
-           getOperationOrBuilderList() {
-        if (operationBuilder_ != null) {
-          return operationBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(operation_);
-        }
-      }
-      /**
-       * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-       *
-       * <pre>
-       * Operations included in this delta.
-       * </pre>
-       */
-      public 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation.Builder 
addOperationBuilder() {
-        return getOperationFieldBuilder().addBuilder(
-            
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-       *
-       * <pre>
-       * Operations included in this delta.
-       * </pre>
-       */
-      public 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation.Builder 
addOperationBuilder(
-          int index) {
-        return getOperationFieldBuilder().addBuilder(
-            index, 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .federation.ProtocolWaveletOperation operation = 
3;</code>
-       *
-       * <pre>
-       * Operations included in this delta.
-       * </pre>
-       */
-      public 
java.util.List<org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation.Builder>
 
-           getOperationBuilderList() {
-        return getOperationFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation, 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation.Builder, 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperationOrBuilder> 
-          getOperationFieldBuilder() {
-        if (operationBuilder_ == null) {
-          operationBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation, 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation.Builder, 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperationOrBuilder>(
-                  operation_,
-                  ((bitField0_ & 0x00000004) == 0x00000004),
-                  getParentForChildren(),
-                  isClean());
-          operation_ = null;
-        }
-        return operationBuilder_;
-      }
-
-      // repeated string address_path = 4;
-      private com.google.protobuf.LazyStringList addressPath_ = 
com.google.protobuf.LazyStringArrayList.EMPTY;
-      private void ensureAddressPathIsMutable() {
-        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
-          addressPath_ = new 
com.google.protobuf.LazyStringArrayList(addressPath_);
-          bitField0_ |= 0x00000008;
-         }
-      }
-      /**
-       * <code>repeated string address_path = 4;</code>
-       *
-       * <pre>
-       *
-       * The nodes on the "overt" path from the originator through the address
-       * access graph leading up to (but excluding) the author. The path 
excludes
-       * any initial segments of the complete path which come before a WRITE 
edge
-       * in the graph. This field is empty if the author is either the 
originator's
-       * entry point into the address graph or is accessed by a WRITE edge.
-       *
-       * For example, "[email protected]" may be the explicit 
participant of
-       * a wavelet, and is set as the author of a delta. However, this group is
-       * being asked to act on behalf of "[email protected]", who is a 
member
-       * of "wave-authors", which is in turn a member of "wave-discuss". In 
this
-       * example, the delta would be configured as such:
-       *  delta.author = "[email protected]"
-       *  delta.addressPath = ["[email protected]", 
"[email protected]"]
-       * </pre>
-       */
-      public java.util.List<java.lang.String>
-          getAddressPathList() {
-        return java.util.Collections.unmodifiableList(addressPath_);
-      }
-      /**
-       * <code>repeated string address_path = 4;</code>
-       *
-       * <pre>
-       *
-       * The nodes on the "overt" path from the originator through the address
-       * access graph leading up to (but excluding) the author. The path 
excludes
-       * any initial segments of the complete path which come before a WRITE 
edge
-       * in the graph. This field is empty if the author is either the 
originator's
-       * entry point into the address graph or is accessed by a WRITE edge.
-       *
-       * For example, "[email protected]" may be the explicit 
participant of
-       * a wavelet, and is set as the author of a delta. However, this group is
-       * being asked to act on behalf of "[email protected]", who is a 
member
-       * of "wave-authors", which is in turn a member of "wave-discuss". In 
this
-       * example, the delta would be configured as such:
-       *  delta.author = "[email protected]"
-       *  delta.addressPath = ["[email protected]", 
"[email protected]"]
-       * </pre>
-       */
-      public int getAddressPathCount() {
-        return addressPath_.size();
-      }
-      /**
-       * <code>repeated string address_path = 4;</code>
-       *
-       * <pre>
-       *
-       * The nodes on the "overt" path from the originator through the address
-       * access graph leading up to (but excluding) the author. The path 
excludes
-       * any initial segments of the complete path which come before a WRITE 
edge
-       * in the graph. This field is empty if the author is either the 
originator's
-       * entry point into the address graph or is accessed by a WRITE edge.
-       *
-       * For example, "[email protected]" may be the explicit 
participant of
-       * a wavelet, and is set as the author of a delta. However, this group is
-       * being asked to act on behalf of "[email protected]", who is a 
member
-       * of "wave-authors", which is in turn a member of "wave-discuss". In 
this
-       * example, the delta would be configured as such:
-       *  delta.author = "[email protected]"
-       *  delta.addressPath = ["[email protected]", 
"[email protected]"]
-       * </pre>
-       */
-      public java.lang.String getAddressPath(int index) {
-        return addressPath_.get(index);
-      }
-      /**
-       * <code>repeated string address_path = 4;</code>
-       *
-       * <pre>
-       *
-       * The nodes on the "overt" path from the originator through the address
-       * access graph leading up to (but excluding) the author. The path 
excludes
-       * any initial segments of the complete path which come before a WRITE 
edge
-       * in the graph. This field is empty if the author is either the 
originator's
-       * entry point into the address graph or is accessed by a WRITE edge.
-       *
-       * For example, "[email protected]" may be the explicit 
participant of
-       * a wavelet, and is set as the author of a delta. However, this group is
-       * being asked to act on behalf of "[email protected]", who is a 
member
-       * of "wave-authors", which is in turn a member of "wave-discuss". In 
this
-       * example, the delta would be configured as such:
-       *  delta.author = "[email protected]"
-       *  delta.addressPath = ["[email protected]", 
"[email protected]"]
-       * </pre>
-       */
-      public com.google.protobuf.ByteString
-          getAddressPathBytes(int index) {
-        return addressPath_.getByteString(index);
-      }
-      /**
-       * <code>repeated string address_path = 4;</code>
-       *
-       * <pre>
-       *
-       * The nodes on the "overt" path from the originator through the address
-       * access graph leading up to (but excluding) the author. The path 
excludes
-       * any initial segments of the complete path which come before a WRITE 
edge
-       * in the graph. This field is empty if the author is either the 
originator's
-       * entry point into the address graph or is accessed by a WRITE edge.
-       *
-       * For example, "[email protected]" may be the explicit 
participant of
-       * a wavelet, and is set as the author of a delta. However, this group is
-       * being asked to act on behalf of "[email protected]", who is a 
member
-       * of "wave-authors", which is in turn a member of "wave-discuss". In 
this
-       * example, the delta would be configured as such:
-       *  delta.author = "[email protected]"
-       *  delta.addressPath = ["[email protected]", 
"[email protected]"]
-       * </pre>
-       */
-      public Builder setAddressPath(
-          int index, java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  ensureAddressPathIsMutable();
-        addressPath_.set(index, value);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated string address_path = 4;</code>
-       *
-       * <pre>
-       *
-       * The nodes on the "overt" path from the originator through the address
-       * access graph leading up to (but excluding) the author. The path 
excludes
-       * any initial segments of the complete path which come before a WRITE 
edge
-       * in the graph. This field is empty if the author is either the 
originator's
-       * entry point into the address graph or is accessed by a WRITE edge.
-       *
-       * For example, "[email protected]" may be the explicit 
participant of
-       * a wavelet, and is set as the author of a delta. However, this group is
-       * being asked to act on behalf of "[email protected]", who is a 
member
-       * of "wave-authors", which is in turn a member of "wave-discuss". In 
this
-       * example, the delta would be configured as such:
-       *  delta.author = "[email protected]"
-       *  delta.addressPath = ["[email protected]", 
"[email protected]"]
-       * </pre>
-       */
-      public Builder addAddressPath(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  ensureAddressPathIsMutable();
-        addressPath_.add(value);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated string address_path = 4;</code>
-       *
-       * <pre>
-       *
-       * The nodes on the "overt" path from the originator through the address
-       * access graph leading up to (but excluding) the author. The path 
excludes
-       * any initial segments of the complete path which come before a WRITE 
edge
-       * in the graph. This field is empty if the author is either the 
originator's
-       * entry point into the address graph or is accessed by a WRITE edge.
-       *
-       * For example, "[email protected]" may be the explicit 
participant of
-       * a wavelet, and is set as the author of a delta. However, this group is
-       * being asked to act on behalf of "[email protected]", who is a 
member
-       * of "wave-authors", which is in turn a member of "wave-discuss". In 
this
-       * example, the delta would be configured as such:
-       *  delta.author = "[email protected]"
-       *  delta.addressPath = ["[email protected]", 
"[email protected]"]
-       * </pre>
-       */
-      public Builder addAllAddressPath(
-          java.lang.Iterable<java.lang.String> values) {
-        ensureAddressPathIsMutable();
-        super.addAll(values, addressPath_);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated string address_path = 4;</code>
-       *
-       * <pre>
-       *
-       * The nodes on the "overt" path from the originator through the address
-       * access graph leading up to (but excluding) the author. The path 
excludes
-       * any initial segments of the complete path which come before a WRITE 
edge
-       * in the graph. This field is empty if the author is either the 
originator's
-       * entry point into the address graph or is accessed by a WRITE edge.
-       *
-       * For example, "[email protected]" may be the explicit 
participant of
-       * a wavelet, and is set as the author of a delta. However, this group is
-       * being asked to act on behalf of "[email protected]", who is a 
member
-       * of "wave-authors", which is in turn a member of "wave-discuss". In 
this
-       * example, the delta would be configured as such:
-       *  delta.author = "[email protected]"
-       *  delta.addressPath = ["[email protected]", 
"[email protected]"]
-       * </pre>
-       */
-      public Builder clearAddressPath() {
-        addressPath_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00000008);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated string address_path = 4;</code>
-       *
-       * <pre>
-       *
-       * The nodes on the "overt" path from the originator through the address
-       * access graph leading up to (but excluding) the author. The path 
excludes
-       * any initial segments of the complete path which come before a WRITE 
edge
-       * in the graph. This field is empty if the author is either the 
originator's
-       * entry point into the address graph or is accessed by a WRITE edge.
-       *
-       * For example, "[email protected]" may be the explicit 
participant of
-       * a wavelet, and is set as the author of a delta. However, this group is
-       * being asked to act on behalf of "[email protected]", who is a 
member
-       * of "wave-authors", which is in turn a member of "wave-discuss". In 
this
-       * example, the delta would be configured as such:
-       *  delta.author = "[email protected]"
-       *  delta.addressPath = ["[email protected]", 
"[email protected]"]
-       * </pre>
-       */
-      public Builder addAddressPathBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  ensureAddressPathIsMutable();
-        addressPath_.add(value);
-        onChanged();
-        return this;
-      }
-
-      // 
@@protoc_insertion_point(builder_scope:federation.ProtocolWaveletDelta)
-    }
-
-    static {
-      defaultInstance = new ProtocolWaveletDelta(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:federation.ProtocolWaveletDelta)
-  }
-
-  public interface ProtocolHashedVersionOrBuilder
-      extends com.google.protobuf.MessageOrBuilder {
-
-    // required int64 version = 1;
-    /**
-     * <code>required int64 version = 1;</code>
-     */
-    boolean hasVersion();
-    /**
-     * <code>required int64 version = 1;</code>
-     */
-    long getVersion();
-
-    // required bytes history_hash = 2;
-    /**
-     * <code>required bytes history_hash = 2;</code>
-     */
-    boolean hasHistoryHash();
-    /**
-     * <code>required bytes history_hash = 2;</code>
-     */
-    com.google.protobuf.ByteString getHistoryHash();
-  }
-  /**
-   * Protobuf type {@code federation.ProtocolHashedVersion}
-   *
-   * <pre>
-   **
-   * Describes a wavelet version and the wavelet's history hash at that 
version.
-   * </pre>
-   */
-  public static final class ProtocolHashedVersion extends
-      com.google.protobuf.GeneratedMessage
-      implements ProtocolHashedVersionOrBuilder {
-    // Use ProtocolHashedVersion.newBuilder() to construct.
-    private 
ProtocolHashedVersion(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private ProtocolHashedVersion(boolean noInit) { this.unknownFields = 
com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final ProtocolHashedVersion defaultInstance;
-    public static ProtocolHashedVersion getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    public ProtocolHashedVersion getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ProtocolHashedVersion(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-            case 8: {
-              bitField0_ |= 0x00000001;
-              version_ = input.readInt64();
-              break;
-            }
-            case 18: {
-              bitField0_ |= 0x00000002;
-              historyHash_ = input.readBytes();
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e.getMessage()).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return 
org.waveprotocol.wave.federation.Proto.internal_static_federation_ProtocolHashedVersion_descriptor;
-    }
-
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return 
org.waveprotocol.wave.federation.Proto.internal_static_federation_ProtocolHashedVersion_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.class, 
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.Builder.class);
-    }
-
-    public static com.google.protobuf.Parser<ProtocolHashedVersion> PARSER =
-        new com.google.protobuf.AbstractParser<ProtocolHashedVersion>() {
-      public ProtocolHashedVersion parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ProtocolHashedVersion(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<ProtocolHashedVersion> 
getParserForType() {
-      return PARSER;
-    }
-
-    private int bitField0_;
-    // required int64 version = 1;
-    public static final int VERSION_FIELD_NUMBER = 1;
-    private long version_;
-    /**
-     * <code>required int64 version = 1;</code>
-     */
-    public boolean hasVersion() {
-      return ((bitField0_ & 0x00000001) == 0x00000001);
-    }
-    /**
-     * <code>required int64 version = 1;</code>
-     */
-    public long getVersion() {
-      return version_;
-    }
-
-    // required bytes history_hash = 2;
-    public static final int HISTORY_HASH_FIELD_NUMBER = 2;
-    private com.google.protobuf.ByteString historyHash_;
-    /**
-     * <code>required bytes history_hash = 2;</code>
-     */
-    public boolean hasHistoryHash() {
-      return ((bitField0_ & 0x00000002) == 0x00000002);
-    }
-    /**
-     * <code>required bytes history_hash = 2;</code>
-     */
-    public com.google.protobuf.ByteString getHistoryHash() {
-      return historyHash_;
-    }
-
-    private void initFields() {
-      version_ = 0L;
-      historyHash_ = com.google.protobuf.ByteString.EMPTY;
-    }
-    private byte memoizedIsInitialized = -1;
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
-
-      if (!hasVersion()) {
-        memoizedIsInitialized = 0;
-        return false;
-      }
-      if (!hasHistoryHash()) {
-        memoizedIsInitialized = 0;
-        return false;
-      }
-      memoizedIsInitialized = 1;
-      return true;
-    }
-
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      getSerializedSize();
-      if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        output.writeInt64(1, version_);
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        output.writeBytes(2, historyHash_);
-      }
-      getUnknownFields().writeTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public int getSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt64Size(1, version_);
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(2, historyHash_);
-      }
-      size += getUnknownFields().getSerializedSize();
-      memoizedSerializedSize = size;
-      return size;
-    }
-
-    private static final long serialVersionUID = 0L;
-    @java.lang.Override
-    protected java.lang.Object writeReplace()
-        throws java.io.ObjectStreamException {
-      return super.writeReplace();
-    }
-
-    public static org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion 
parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion 
parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion 
parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion 
parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion 
parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion 
parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-    public static org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion 
parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
-    }
-    public static org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion 
parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
-    }
-    public static org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion 
parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion 
parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-
-    public static Builder newBuilder() { return Builder.create(); }
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder 
newBuilder(org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion 
prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    public Builder toBuilder() { return newBuilder(this); }
-
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code federation.ProtocolHashedVersion}
-     *
-     * <pre>
-     **
-     * Describes a wavelet version and the wavelet's history hash at that 
version.
-     * </pre>
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder>
-       implements 
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersionOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return 
org.waveprotocol.wave.federation.Proto.internal_static_federation_ProtocolHashedVersion_descriptor;
-      }
-
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return 
org.waveprotocol.wave.federation.Proto.internal_static_federation_ProtocolHashedVersion_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.class, 
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.Builder.class);
-      }
-
-      // Construct using 
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
-        }
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      public Builder clear() {
-        super.clear();
-        version_ = 0L;
-        bitField0_ = (bitField0_ & ~0x00000001);
-        historyHash_ = com.google.protobuf.ByteString.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00000002);
-        return this;
-      }
-
-      public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return 
org.waveprotocol.wave.federation.Proto.internal_static_federation_ProtocolHashedVersion_descriptor;
-      }
-
-      public org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion 
getDefaultInstanceForType() {
-        return 
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.getDefaultInstance();
-      }
-
-      public org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion 
build() {
-        org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion result = 
buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      public org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion 
buildPartial() {
-        org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion result = 
new org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.version_ = version_;
-        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
-          to_bitField0_ |= 0x00000002;
-        }
-        result.historyHash_ = historyHash_;
-        result.bitField0_ = to_bitField0_;
-        onBuilt();
-        return result;
-      }
-
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof 
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion) {
-          return 
mergeFrom((org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder 
mergeFrom(org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion other) {
-        if (other == 
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.getDefaultInstance())
 return this;
-        if (other.hasVersion()) {
-          setVersion(other.getVersion());
-        }
-        if (other.hasHistoryHash()) {
-          setHistoryHash(other.getHistoryHash());
-        }
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-
-      public final boolean isInitialized() {
-        if (!hasVersion()) {
-          
-          return false;
-        }
-        if (!hasHistoryHash()) {
-          
-          return false;
-        }
-        return true;
-      }
-
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        org.waveprotocol.wave.federation.Proto.Pr

<TRUNCATED>

Reply via email to