http://git-wip-us.apache.org/repos/asf/incubator-wave/blob/7d8609e7/proto_src/org/waveprotocol/wave/diff/Diff.java
----------------------------------------------------------------------
diff --git a/proto_src/org/waveprotocol/wave/diff/Diff.java 
b/proto_src/org/waveprotocol/wave/diff/Diff.java
deleted file mode 100644
index da9eafd..0000000
--- a/proto_src/org/waveprotocol/wave/diff/Diff.java
+++ /dev/null
@@ -1,7589 +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/diff/diff.proto
-
-package org.waveprotocol.wave.diff;
-
-public final class Diff {
-  private Diff() {}
-  public static void registerAllExtensions(
-      com.google.protobuf.ExtensionRegistry registry) {
-  }
-  public interface FetchDiffRequestOrBuilder
-      extends com.google.protobuf.MessageOrBuilder {
-
-    // required string waveId = 1;
-    /**
-     * <code>required string waveId = 1;</code>
-     *
-     * <pre>
-     * Wave to open, URI path format.
-     * </pre>
-     */
-    boolean hasWaveId();
-    /**
-     * <code>required string waveId = 1;</code>
-     *
-     * <pre>
-     * Wave to open, URI path format.
-     * </pre>
-     */
-    java.lang.String getWaveId();
-    /**
-     * <code>required string waveId = 1;</code>
-     *
-     * <pre>
-     * Wave to open, URI path format.
-     * </pre>
-     */
-    com.google.protobuf.ByteString
-        getWaveIdBytes();
-
-    // repeated .concurrencycontrol.WaveletVersion knownWavelet = 2;
-    /**
-     * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-     *
-     * <pre>
-     * Wavelet versions the client already knows.
-     * At most one version per wavelet.
-     * </pre>
-     */
-    
java.util.List<org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion>
 
-        getKnownWaveletList();
-    /**
-     * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-     *
-     * <pre>
-     * Wavelet versions the client already knows.
-     * At most one version per wavelet.
-     * </pre>
-     */
-    org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion 
getKnownWavelet(int index);
-    /**
-     * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-     *
-     * <pre>
-     * Wavelet versions the client already knows.
-     * At most one version per wavelet.
-     * </pre>
-     */
-    int getKnownWaveletCount();
-    /**
-     * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-     *
-     * <pre>
-     * Wavelet versions the client already knows.
-     * At most one version per wavelet.
-     * </pre>
-     */
-    java.util.List<? extends 
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersionOrBuilder> 
-        getKnownWaveletOrBuilderList();
-    /**
-     * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-     *
-     * <pre>
-     * Wavelet versions the client already knows.
-     * At most one version per wavelet.
-     * </pre>
-     */
-    
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersionOrBuilder 
getKnownWaveletOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code diff.FetchDiffRequest}
-   */
-  public static final class FetchDiffRequest extends
-      com.google.protobuf.GeneratedMessage
-      implements FetchDiffRequestOrBuilder {
-    // Use FetchDiffRequest.newBuilder() to construct.
-    private FetchDiffRequest(com.google.protobuf.GeneratedMessage.Builder<?> 
builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private FetchDiffRequest(boolean noInit) { this.unknownFields = 
com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final FetchDiffRequest defaultInstance;
-    public static FetchDiffRequest getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    public FetchDiffRequest getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
-      return this.unknownFields;
-    }
-    private FetchDiffRequest(
-        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: {
-              bitField0_ |= 0x00000001;
-              waveId_ = input.readBytes();
-              break;
-            }
-            case 18: {
-              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
-                knownWavelet_ = new 
java.util.ArrayList<org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              
knownWavelet_.add(input.readMessage(org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion.PARSER,
 extensionRegistry));
-              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_ & 0x00000002) == 0x00000002)) {
-          knownWavelet_ = 
java.util.Collections.unmodifiableList(knownWavelet_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return 
org.waveprotocol.wave.diff.Diff.internal_static_diff_FetchDiffRequest_descriptor;
-    }
-
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return 
org.waveprotocol.wave.diff.Diff.internal_static_diff_FetchDiffRequest_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              org.waveprotocol.wave.diff.Diff.FetchDiffRequest.class, 
org.waveprotocol.wave.diff.Diff.FetchDiffRequest.Builder.class);
-    }
-
-    public static com.google.protobuf.Parser<FetchDiffRequest> PARSER =
-        new com.google.protobuf.AbstractParser<FetchDiffRequest>() {
-      public FetchDiffRequest parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new FetchDiffRequest(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<FetchDiffRequest> getParserForType() {
-      return PARSER;
-    }
-
-    private int bitField0_;
-    // required string waveId = 1;
-    public static final int WAVEID_FIELD_NUMBER = 1;
-    private java.lang.Object waveId_;
-    /**
-     * <code>required string waveId = 1;</code>
-     *
-     * <pre>
-     * Wave to open, URI path format.
-     * </pre>
-     */
-    public boolean hasWaveId() {
-      return ((bitField0_ & 0x00000001) == 0x00000001);
-    }
-    /**
-     * <code>required string waveId = 1;</code>
-     *
-     * <pre>
-     * Wave to open, URI path format.
-     * </pre>
-     */
-    public java.lang.String getWaveId() {
-      java.lang.Object ref = waveId_;
-      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()) {
-          waveId_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>required string waveId = 1;</code>
-     *
-     * <pre>
-     * Wave to open, URI path format.
-     * </pre>
-     */
-    public com.google.protobuf.ByteString
-        getWaveIdBytes() {
-      java.lang.Object ref = waveId_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        waveId_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    // repeated .concurrencycontrol.WaveletVersion knownWavelet = 2;
-    public static final int KNOWNWAVELET_FIELD_NUMBER = 2;
-    private 
java.util.List<org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion>
 knownWavelet_;
-    /**
-     * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-     *
-     * <pre>
-     * Wavelet versions the client already knows.
-     * At most one version per wavelet.
-     * </pre>
-     */
-    public 
java.util.List<org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion>
 getKnownWaveletList() {
-      return knownWavelet_;
-    }
-    /**
-     * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-     *
-     * <pre>
-     * Wavelet versions the client already knows.
-     * At most one version per wavelet.
-     * </pre>
-     */
-    public java.util.List<? extends 
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersionOrBuilder> 
-        getKnownWaveletOrBuilderList() {
-      return knownWavelet_;
-    }
-    /**
-     * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-     *
-     * <pre>
-     * Wavelet versions the client already knows.
-     * At most one version per wavelet.
-     * </pre>
-     */
-    public int getKnownWaveletCount() {
-      return knownWavelet_.size();
-    }
-    /**
-     * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-     *
-     * <pre>
-     * Wavelet versions the client already knows.
-     * At most one version per wavelet.
-     * </pre>
-     */
-    public 
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion 
getKnownWavelet(int index) {
-      return knownWavelet_.get(index);
-    }
-    /**
-     * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-     *
-     * <pre>
-     * Wavelet versions the client already knows.
-     * At most one version per wavelet.
-     * </pre>
-     */
-    public 
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersionOrBuilder 
getKnownWaveletOrBuilder(
-        int index) {
-      return knownWavelet_.get(index);
-    }
-
-    private void initFields() {
-      waveId_ = "";
-      knownWavelet_ = java.util.Collections.emptyList();
-    }
-    private byte memoizedIsInitialized = -1;
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
-
-      if (!hasWaveId()) {
-        memoizedIsInitialized = 0;
-        return false;
-      }
-      for (int i = 0; i < getKnownWaveletCount(); i++) {
-        if (!getKnownWavelet(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.writeBytes(1, getWaveIdBytes());
-      }
-      for (int i = 0; i < knownWavelet_.size(); i++) {
-        output.writeMessage(2, knownWavelet_.get(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
-          .computeBytesSize(1, getWaveIdBytes());
-      }
-      for (int i = 0; i < knownWavelet_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, knownWavelet_.get(i));
-      }
-      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.diff.Diff.FetchDiffRequest parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.waveprotocol.wave.diff.Diff.FetchDiffRequest 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.diff.Diff.FetchDiffRequest 
parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.waveprotocol.wave.diff.Diff.FetchDiffRequest parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.waveprotocol.wave.diff.Diff.FetchDiffRequest 
parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.waveprotocol.wave.diff.Diff.FetchDiffRequest parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-    public static org.waveprotocol.wave.diff.Diff.FetchDiffRequest 
parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
-    }
-    public static org.waveprotocol.wave.diff.Diff.FetchDiffRequest 
parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
-    }
-    public static org.waveprotocol.wave.diff.Diff.FetchDiffRequest parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.waveprotocol.wave.diff.Diff.FetchDiffRequest 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.diff.Diff.FetchDiffRequest 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 diff.FetchDiffRequest}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder>
-       implements org.waveprotocol.wave.diff.Diff.FetchDiffRequestOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return 
org.waveprotocol.wave.diff.Diff.internal_static_diff_FetchDiffRequest_descriptor;
-      }
-
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return 
org.waveprotocol.wave.diff.Diff.internal_static_diff_FetchDiffRequest_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                org.waveprotocol.wave.diff.Diff.FetchDiffRequest.class, 
org.waveprotocol.wave.diff.Diff.FetchDiffRequest.Builder.class);
-      }
-
-      // Construct using 
org.waveprotocol.wave.diff.Diff.FetchDiffRequest.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
-          getKnownWaveletFieldBuilder();
-        }
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      public Builder clear() {
-        super.clear();
-        waveId_ = "";
-        bitField0_ = (bitField0_ & ~0x00000001);
-        if (knownWaveletBuilder_ == null) {
-          knownWavelet_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-        } else {
-          knownWaveletBuilder_.clear();
-        }
-        return this;
-      }
-
-      public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return 
org.waveprotocol.wave.diff.Diff.internal_static_diff_FetchDiffRequest_descriptor;
-      }
-
-      public org.waveprotocol.wave.diff.Diff.FetchDiffRequest 
getDefaultInstanceForType() {
-        return 
org.waveprotocol.wave.diff.Diff.FetchDiffRequest.getDefaultInstance();
-      }
-
-      public org.waveprotocol.wave.diff.Diff.FetchDiffRequest build() {
-        org.waveprotocol.wave.diff.Diff.FetchDiffRequest result = 
buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      public org.waveprotocol.wave.diff.Diff.FetchDiffRequest buildPartial() {
-        org.waveprotocol.wave.diff.Diff.FetchDiffRequest result = new 
org.waveprotocol.wave.diff.Diff.FetchDiffRequest(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.waveId_ = waveId_;
-        if (knownWaveletBuilder_ == null) {
-          if (((bitField0_ & 0x00000002) == 0x00000002)) {
-            knownWavelet_ = 
java.util.Collections.unmodifiableList(knownWavelet_);
-            bitField0_ = (bitField0_ & ~0x00000002);
-          }
-          result.knownWavelet_ = knownWavelet_;
-        } else {
-          result.knownWavelet_ = knownWaveletBuilder_.build();
-        }
-        result.bitField0_ = to_bitField0_;
-        onBuilt();
-        return result;
-      }
-
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof org.waveprotocol.wave.diff.Diff.FetchDiffRequest) 
{
-          return 
mergeFrom((org.waveprotocol.wave.diff.Diff.FetchDiffRequest)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder 
mergeFrom(org.waveprotocol.wave.diff.Diff.FetchDiffRequest other) {
-        if (other == 
org.waveprotocol.wave.diff.Diff.FetchDiffRequest.getDefaultInstance()) return 
this;
-        if (other.hasWaveId()) {
-          bitField0_ |= 0x00000001;
-          waveId_ = other.waveId_;
-          onChanged();
-        }
-        if (knownWaveletBuilder_ == null) {
-          if (!other.knownWavelet_.isEmpty()) {
-            if (knownWavelet_.isEmpty()) {
-              knownWavelet_ = other.knownWavelet_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-            } else {
-              ensureKnownWaveletIsMutable();
-              knownWavelet_.addAll(other.knownWavelet_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.knownWavelet_.isEmpty()) {
-            if (knownWaveletBuilder_.isEmpty()) {
-              knownWaveletBuilder_.dispose();
-              knownWaveletBuilder_ = null;
-              knownWavelet_ = other.knownWavelet_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-              knownWaveletBuilder_ = 
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
-                   getKnownWaveletFieldBuilder() : null;
-            } else {
-              knownWaveletBuilder_.addAllMessages(other.knownWavelet_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-
-      public final boolean isInitialized() {
-        if (!hasWaveId()) {
-          
-          return false;
-        }
-        for (int i = 0; i < getKnownWaveletCount(); i++) {
-          if (!getKnownWavelet(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.diff.Diff.FetchDiffRequest parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (org.waveprotocol.wave.diff.Diff.FetchDiffRequest) 
e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      // required string waveId = 1;
-      private java.lang.Object waveId_ = "";
-      /**
-       * <code>required string waveId = 1;</code>
-       *
-       * <pre>
-       * Wave to open, URI path format.
-       * </pre>
-       */
-      public boolean hasWaveId() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
-      }
-      /**
-       * <code>required string waveId = 1;</code>
-       *
-       * <pre>
-       * Wave to open, URI path format.
-       * </pre>
-       */
-      public java.lang.String getWaveId() {
-        java.lang.Object ref = waveId_;
-        if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          waveId_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>required string waveId = 1;</code>
-       *
-       * <pre>
-       * Wave to open, URI path format.
-       * </pre>
-       */
-      public com.google.protobuf.ByteString
-          getWaveIdBytes() {
-        java.lang.Object ref = waveId_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          waveId_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>required string waveId = 1;</code>
-       *
-       * <pre>
-       * Wave to open, URI path format.
-       * </pre>
-       */
-      public Builder setWaveId(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-        waveId_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>required string waveId = 1;</code>
-       *
-       * <pre>
-       * Wave to open, URI path format.
-       * </pre>
-       */
-      public Builder clearWaveId() {
-        bitField0_ = (bitField0_ & ~0x00000001);
-        waveId_ = getDefaultInstance().getWaveId();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>required string waveId = 1;</code>
-       *
-       * <pre>
-       * Wave to open, URI path format.
-       * </pre>
-       */
-      public Builder setWaveIdBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-        waveId_ = value;
-        onChanged();
-        return this;
-      }
-
-      // repeated .concurrencycontrol.WaveletVersion knownWavelet = 2;
-      private 
java.util.List<org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion>
 knownWavelet_ =
-        java.util.Collections.emptyList();
-      private void ensureKnownWaveletIsMutable() {
-        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
-          knownWavelet_ = new 
java.util.ArrayList<org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion>(knownWavelet_);
-          bitField0_ |= 0x00000002;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilder<
-          
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion, 
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion.Builder, 
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersionOrBuilder> 
knownWaveletBuilder_;
-
-      /**
-       * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-       *
-       * <pre>
-       * Wavelet versions the client already knows.
-       * At most one version per wavelet.
-       * </pre>
-       */
-      public 
java.util.List<org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion>
 getKnownWaveletList() {
-        if (knownWaveletBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(knownWavelet_);
-        } else {
-          return knownWaveletBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-       *
-       * <pre>
-       * Wavelet versions the client already knows.
-       * At most one version per wavelet.
-       * </pre>
-       */
-      public int getKnownWaveletCount() {
-        if (knownWaveletBuilder_ == null) {
-          return knownWavelet_.size();
-        } else {
-          return knownWaveletBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-       *
-       * <pre>
-       * Wavelet versions the client already knows.
-       * At most one version per wavelet.
-       * </pre>
-       */
-      public 
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion 
getKnownWavelet(int index) {
-        if (knownWaveletBuilder_ == null) {
-          return knownWavelet_.get(index);
-        } else {
-          return knownWaveletBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-       *
-       * <pre>
-       * Wavelet versions the client already knows.
-       * At most one version per wavelet.
-       * </pre>
-       */
-      public Builder setKnownWavelet(
-          int index, 
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion value) {
-        if (knownWaveletBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKnownWaveletIsMutable();
-          knownWavelet_.set(index, value);
-          onChanged();
-        } else {
-          knownWaveletBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-       *
-       * <pre>
-       * Wavelet versions the client already knows.
-       * At most one version per wavelet.
-       * </pre>
-       */
-      public Builder setKnownWavelet(
-          int index, 
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion.Builder 
builderForValue) {
-        if (knownWaveletBuilder_ == null) {
-          ensureKnownWaveletIsMutable();
-          knownWavelet_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          knownWaveletBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-       *
-       * <pre>
-       * Wavelet versions the client already knows.
-       * At most one version per wavelet.
-       * </pre>
-       */
-      public Builder 
addKnownWavelet(org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion
 value) {
-        if (knownWaveletBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKnownWaveletIsMutable();
-          knownWavelet_.add(value);
-          onChanged();
-        } else {
-          knownWaveletBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-       *
-       * <pre>
-       * Wavelet versions the client already knows.
-       * At most one version per wavelet.
-       * </pre>
-       */
-      public Builder addKnownWavelet(
-          int index, 
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion value) {
-        if (knownWaveletBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKnownWaveletIsMutable();
-          knownWavelet_.add(index, value);
-          onChanged();
-        } else {
-          knownWaveletBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-       *
-       * <pre>
-       * Wavelet versions the client already knows.
-       * At most one version per wavelet.
-       * </pre>
-       */
-      public Builder addKnownWavelet(
-          
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion.Builder 
builderForValue) {
-        if (knownWaveletBuilder_ == null) {
-          ensureKnownWaveletIsMutable();
-          knownWavelet_.add(builderForValue.build());
-          onChanged();
-        } else {
-          knownWaveletBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-       *
-       * <pre>
-       * Wavelet versions the client already knows.
-       * At most one version per wavelet.
-       * </pre>
-       */
-      public Builder addKnownWavelet(
-          int index, 
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion.Builder 
builderForValue) {
-        if (knownWaveletBuilder_ == null) {
-          ensureKnownWaveletIsMutable();
-          knownWavelet_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          knownWaveletBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-       *
-       * <pre>
-       * Wavelet versions the client already knows.
-       * At most one version per wavelet.
-       * </pre>
-       */
-      public Builder addAllKnownWavelet(
-          java.lang.Iterable<? extends 
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion> values) {
-        if (knownWaveletBuilder_ == null) {
-          ensureKnownWaveletIsMutable();
-          super.addAll(values, knownWavelet_);
-          onChanged();
-        } else {
-          knownWaveletBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-       *
-       * <pre>
-       * Wavelet versions the client already knows.
-       * At most one version per wavelet.
-       * </pre>
-       */
-      public Builder clearKnownWavelet() {
-        if (knownWaveletBuilder_ == null) {
-          knownWavelet_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-          onChanged();
-        } else {
-          knownWaveletBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-       *
-       * <pre>
-       * Wavelet versions the client already knows.
-       * At most one version per wavelet.
-       * </pre>
-       */
-      public Builder removeKnownWavelet(int index) {
-        if (knownWaveletBuilder_ == null) {
-          ensureKnownWaveletIsMutable();
-          knownWavelet_.remove(index);
-          onChanged();
-        } else {
-          knownWaveletBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-       *
-       * <pre>
-       * Wavelet versions the client already knows.
-       * At most one version per wavelet.
-       * </pre>
-       */
-      public 
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion.Builder 
getKnownWaveletBuilder(
-          int index) {
-        return getKnownWaveletFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-       *
-       * <pre>
-       * Wavelet versions the client already knows.
-       * At most one version per wavelet.
-       * </pre>
-       */
-      public 
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersionOrBuilder 
getKnownWaveletOrBuilder(
-          int index) {
-        if (knownWaveletBuilder_ == null) {
-          return knownWavelet_.get(index);  } else {
-          return knownWaveletBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-       *
-       * <pre>
-       * Wavelet versions the client already knows.
-       * At most one version per wavelet.
-       * </pre>
-       */
-      public java.util.List<? extends 
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersionOrBuilder> 
-           getKnownWaveletOrBuilderList() {
-        if (knownWaveletBuilder_ != null) {
-          return knownWaveletBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(knownWavelet_);
-        }
-      }
-      /**
-       * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-       *
-       * <pre>
-       * Wavelet versions the client already knows.
-       * At most one version per wavelet.
-       * </pre>
-       */
-      public 
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion.Builder 
addKnownWaveletBuilder() {
-        return getKnownWaveletFieldBuilder().addBuilder(
-            
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-       *
-       * <pre>
-       * Wavelet versions the client already knows.
-       * At most one version per wavelet.
-       * </pre>
-       */
-      public 
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion.Builder 
addKnownWaveletBuilder(
-          int index) {
-        return getKnownWaveletFieldBuilder().addBuilder(
-            index, 
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .concurrencycontrol.WaveletVersion knownWavelet = 
2;</code>
-       *
-       * <pre>
-       * Wavelet versions the client already knows.
-       * At most one version per wavelet.
-       * </pre>
-       */
-      public 
java.util.List<org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion.Builder>
 
-           getKnownWaveletBuilderList() {
-        return getKnownWaveletFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion, 
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion.Builder, 
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersionOrBuilder> 
-          getKnownWaveletFieldBuilder() {
-        if (knownWaveletBuilder_ == null) {
-          knownWaveletBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion, 
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersion.Builder, 
org.waveprotocol.wave.concurrencycontrol.ClientServer.WaveletVersionOrBuilder>(
-                  knownWavelet_,
-                  ((bitField0_ & 0x00000002) == 0x00000002),
-                  getParentForChildren(),
-                  isClean());
-          knownWavelet_ = null;
-        }
-        return knownWaveletBuilder_;
-      }
-
-      // @@protoc_insertion_point(builder_scope:diff.FetchDiffRequest)
-    }
-
-    static {
-      defaultInstance = new FetchDiffRequest(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:diff.FetchDiffRequest)
-  }
-
-  public interface FetchDiffResponseOrBuilder
-      extends com.google.protobuf.MessageOrBuilder {
-
-    // required .concurrencycontrol.ResponseStatus status = 1;
-    /**
-     * <code>required .concurrencycontrol.ResponseStatus status = 1;</code>
-     */
-    boolean hasStatus();
-    /**
-     * <code>required .concurrencycontrol.ResponseStatus status = 1;</code>
-     */
-    org.waveprotocol.wave.concurrencycontrol.ClientServer.ResponseStatus 
getStatus();
-    /**
-     * <code>required .concurrencycontrol.ResponseStatus status = 1;</code>
-     */
-    
org.waveprotocol.wave.concurrencycontrol.ClientServer.ResponseStatusOrBuilder 
getStatusOrBuilder();
-
-    // repeated .diff.FetchDiffResponse.WaveletDiff wavelet = 2;
-    /**
-     * <code>repeated .diff.FetchDiffResponse.WaveletDiff wavelet = 2;</code>
-     */
-    
java.util.List<org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff> 
-        getWaveletList();
-    /**
-     * <code>repeated .diff.FetchDiffResponse.WaveletDiff wavelet = 2;</code>
-     */
-    org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff 
getWavelet(int index);
-    /**
-     * <code>repeated .diff.FetchDiffResponse.WaveletDiff wavelet = 2;</code>
-     */
-    int getWaveletCount();
-    /**
-     * <code>repeated .diff.FetchDiffResponse.WaveletDiff wavelet = 2;</code>
-     */
-    java.util.List<? extends 
org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiffOrBuilder> 
-        getWaveletOrBuilderList();
-    /**
-     * <code>repeated .diff.FetchDiffResponse.WaveletDiff wavelet = 2;</code>
-     */
-    org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiffOrBuilder 
getWaveletOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code diff.FetchDiffResponse}
-   */
-  public static final class FetchDiffResponse extends
-      com.google.protobuf.GeneratedMessage
-      implements FetchDiffResponseOrBuilder {
-    // Use FetchDiffResponse.newBuilder() to construct.
-    private FetchDiffResponse(com.google.protobuf.GeneratedMessage.Builder<?> 
builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private FetchDiffResponse(boolean noInit) { this.unknownFields = 
com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final FetchDiffResponse defaultInstance;
-    public static FetchDiffResponse getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    public FetchDiffResponse getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
-      return this.unknownFields;
-    }
-    private FetchDiffResponse(
-        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.concurrencycontrol.ClientServer.ResponseStatus.Builder 
subBuilder = null;
-              if (((bitField0_ & 0x00000001) == 0x00000001)) {
-                subBuilder = status_.toBuilder();
-              }
-              status_ = 
input.readMessage(org.waveprotocol.wave.concurrencycontrol.ClientServer.ResponseStatus.PARSER,
 extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(status_);
-                status_ = subBuilder.buildPartial();
-              }
-              bitField0_ |= 0x00000001;
-              break;
-            }
-            case 18: {
-              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
-                wavelet_ = new 
java.util.ArrayList<org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              
wavelet_.add(input.readMessage(org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff.PARSER,
 extensionRegistry));
-              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_ & 0x00000002) == 0x00000002)) {
-          wavelet_ = java.util.Collections.unmodifiableList(wavelet_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return 
org.waveprotocol.wave.diff.Diff.internal_static_diff_FetchDiffResponse_descriptor;
-    }
-
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return 
org.waveprotocol.wave.diff.Diff.internal_static_diff_FetchDiffResponse_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              org.waveprotocol.wave.diff.Diff.FetchDiffResponse.class, 
org.waveprotocol.wave.diff.Diff.FetchDiffResponse.Builder.class);
-    }
-
-    public static com.google.protobuf.Parser<FetchDiffResponse> PARSER =
-        new com.google.protobuf.AbstractParser<FetchDiffResponse>() {
-      public FetchDiffResponse parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new FetchDiffResponse(input, extensionRegistry);
-      }
-    };
-
-    @java.lang.Override
-    public com.google.protobuf.Parser<FetchDiffResponse> getParserForType() {
-      return PARSER;
-    }
-
-    public interface WaveletDiffOrBuilder
-        extends com.google.protobuf.MessageOrBuilder {
-
-      // required string waveletId = 1;
-      /**
-       * <code>required string waveletId = 1;</code>
-       *
-       * <pre>
-       * The wavelet in view, URI path format.
-       * </pre>
-       */
-      boolean hasWaveletId();
-      /**
-       * <code>required string waveletId = 1;</code>
-       *
-       * <pre>
-       * The wavelet in view, URI path format.
-       * </pre>
-       */
-      java.lang.String getWaveletId();
-      /**
-       * <code>required string waveletId = 1;</code>
-       *
-       * <pre>
-       * The wavelet in view, URI path format.
-       * </pre>
-       */
-      com.google.protobuf.ByteString
-          getWaveletIdBytes();
-
-      // optional .diff.WaveletDiffSnapshot snapshot = 2;
-      /**
-       * <code>optional .diff.WaveletDiffSnapshot snapshot = 2;</code>
-       *
-       * <pre>
-       * Snapshot of the wavelet; omitted if the client already knew it.
-       * </pre>
-       */
-      boolean hasSnapshot();
-      /**
-       * <code>optional .diff.WaveletDiffSnapshot snapshot = 2;</code>
-       *
-       * <pre>
-       * Snapshot of the wavelet; omitted if the client already knew it.
-       * </pre>
-       */
-      org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot getSnapshot();
-      /**
-       * <code>optional .diff.WaveletDiffSnapshot snapshot = 2;</code>
-       *
-       * <pre>
-       * Snapshot of the wavelet; omitted if the client already knew it.
-       * </pre>
-       */
-      org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshotOrBuilder 
getSnapshotOrBuilder();
-    }
-    /**
-     * Protobuf type {@code diff.FetchDiffResponse.WaveletDiff}
-     */
-    public static final class WaveletDiff extends
-        com.google.protobuf.GeneratedMessage
-        implements WaveletDiffOrBuilder {
-      // Use WaveletDiff.newBuilder() to construct.
-      private WaveletDiff(com.google.protobuf.GeneratedMessage.Builder<?> 
builder) {
-        super(builder);
-        this.unknownFields = builder.getUnknownFields();
-      }
-      private WaveletDiff(boolean noInit) { this.unknownFields = 
com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-      private static final WaveletDiff defaultInstance;
-      public static WaveletDiff getDefaultInstance() {
-        return defaultInstance;
-      }
-
-      public WaveletDiff getDefaultInstanceForType() {
-        return defaultInstance;
-      }
-
-      private final com.google.protobuf.UnknownFieldSet unknownFields;
-      @java.lang.Override
-      public final com.google.protobuf.UnknownFieldSet
-          getUnknownFields() {
-        return this.unknownFields;
-      }
-      private WaveletDiff(
-          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: {
-                bitField0_ |= 0x00000001;
-                waveletId_ = input.readBytes();
-                break;
-              }
-              case 18: {
-                org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot.Builder 
subBuilder = null;
-                if (((bitField0_ & 0x00000002) == 0x00000002)) {
-                  subBuilder = snapshot_.toBuilder();
-                }
-                snapshot_ = 
input.readMessage(org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot.PARSER, 
extensionRegistry);
-                if (subBuilder != null) {
-                  subBuilder.mergeFrom(snapshot_);
-                  snapshot_ = subBuilder.buildPartial();
-                }
-                bitField0_ |= 0x00000002;
-                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.diff.Diff.internal_static_diff_FetchDiffResponse_WaveletDiff_descriptor;
-      }
-
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return 
org.waveprotocol.wave.diff.Diff.internal_static_diff_FetchDiffResponse_WaveletDiff_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                
org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff.class, 
org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff.Builder.class);
-      }
-
-      public static com.google.protobuf.Parser<WaveletDiff> PARSER =
-          new com.google.protobuf.AbstractParser<WaveletDiff>() {
-        public WaveletDiff parsePartialFrom(
-            com.google.protobuf.CodedInputStream input,
-            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-            throws com.google.protobuf.InvalidProtocolBufferException {
-          return new WaveletDiff(input, extensionRegistry);
-        }
-      };
-
-      @java.lang.Override
-      public com.google.protobuf.Parser<WaveletDiff> getParserForType() {
-        return PARSER;
-      }
-
-      private int bitField0_;
-      // required string waveletId = 1;
-      public static final int WAVELETID_FIELD_NUMBER = 1;
-      private java.lang.Object waveletId_;
-      /**
-       * <code>required string waveletId = 1;</code>
-       *
-       * <pre>
-       * The wavelet in view, URI path format.
-       * </pre>
-       */
-      public boolean hasWaveletId() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
-      }
-      /**
-       * <code>required string waveletId = 1;</code>
-       *
-       * <pre>
-       * The wavelet in view, URI path format.
-       * </pre>
-       */
-      public java.lang.String getWaveletId() {
-        java.lang.Object ref = waveletId_;
-        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()) {
-            waveletId_ = s;
-          }
-          return s;
-        }
-      }
-      /**
-       * <code>required string waveletId = 1;</code>
-       *
-       * <pre>
-       * The wavelet in view, URI path format.
-       * </pre>
-       */
-      public com.google.protobuf.ByteString
-          getWaveletIdBytes() {
-        java.lang.Object ref = waveletId_;
-        if (ref instanceof java.lang.String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          waveletId_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-
-      // optional .diff.WaveletDiffSnapshot snapshot = 2;
-      public static final int SNAPSHOT_FIELD_NUMBER = 2;
-      private org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot snapshot_;
-      /**
-       * <code>optional .diff.WaveletDiffSnapshot snapshot = 2;</code>
-       *
-       * <pre>
-       * Snapshot of the wavelet; omitted if the client already knew it.
-       * </pre>
-       */
-      public boolean hasSnapshot() {
-        return ((bitField0_ & 0x00000002) == 0x00000002);
-      }
-      /**
-       * <code>optional .diff.WaveletDiffSnapshot snapshot = 2;</code>
-       *
-       * <pre>
-       * Snapshot of the wavelet; omitted if the client already knew it.
-       * </pre>
-       */
-      public org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot getSnapshot() 
{
-        return snapshot_;
-      }
-      /**
-       * <code>optional .diff.WaveletDiffSnapshot snapshot = 2;</code>
-       *
-       * <pre>
-       * Snapshot of the wavelet; omitted if the client already knew it.
-       * </pre>
-       */
-      public org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshotOrBuilder 
getSnapshotOrBuilder() {
-        return snapshot_;
-      }
-
-      private void initFields() {
-        waveletId_ = "";
-        snapshot_ = 
org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot.getDefaultInstance();
-      }
-      private byte memoizedIsInitialized = -1;
-      public final boolean isInitialized() {
-        byte isInitialized = memoizedIsInitialized;
-        if (isInitialized != -1) return isInitialized == 1;
-
-        if (!hasWaveletId()) {
-          memoizedIsInitialized = 0;
-          return false;
-        }
-        if (hasSnapshot()) {
-          if (!getSnapshot().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.writeBytes(1, getWaveletIdBytes());
-        }
-        if (((bitField0_ & 0x00000002) == 0x00000002)) {
-          output.writeMessage(2, snapshot_);
-        }
-        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
-            .computeBytesSize(1, getWaveletIdBytes());
-        }
-        if (((bitField0_ & 0x00000002) == 0x00000002)) {
-          size += com.google.protobuf.CodedOutputStream
-            .computeMessageSize(2, snapshot_);
-        }
-        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.diff.Diff.FetchDiffResponse.WaveletDiff parseFrom(
-          com.google.protobuf.ByteString data)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return PARSER.parseFrom(data);
-      }
-      public static 
org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff 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.diff.Diff.FetchDiffResponse.WaveletDiff parseFrom(byte[] 
data)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return PARSER.parseFrom(data);
-      }
-      public static 
org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff parseFrom(
-          byte[] data,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return PARSER.parseFrom(data, extensionRegistry);
-      }
-      public static 
org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff 
parseFrom(java.io.InputStream input)
-          throws java.io.IOException {
-        return PARSER.parseFrom(input);
-      }
-      public static 
org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff parseFrom(
-          java.io.InputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        return PARSER.parseFrom(input, extensionRegistry);
-      }
-      public static 
org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff 
parseDelimitedFrom(java.io.InputStream input)
-          throws java.io.IOException {
-        return PARSER.parseDelimitedFrom(input);
-      }
-      public static 
org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff 
parseDelimitedFrom(
-          java.io.InputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        return PARSER.parseDelimitedFrom(input, extensionRegistry);
-      }
-      public static 
org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff parseFrom(
-          com.google.protobuf.CodedInputStream input)
-          throws java.io.IOException {
-        return PARSER.parseFrom(input);
-      }
-      public static 
org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff 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.diff.Diff.FetchDiffResponse.WaveletDiff 
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 diff.FetchDiffResponse.WaveletDiff}
-       */
-      public static final class Builder extends
-          com.google.protobuf.GeneratedMessage.Builder<Builder>
-         implements 
org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiffOrBuilder {
-        public static final com.google.protobuf.Descriptors.Descriptor
-            getDescriptor() {
-          return 
org.waveprotocol.wave.diff.Diff.internal_static_diff_FetchDiffResponse_WaveletDiff_descriptor;
-        }
-
-        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-            internalGetFieldAccessorTable() {
-          return 
org.waveprotocol.wave.diff.Diff.internal_static_diff_FetchDiffResponse_WaveletDiff_fieldAccessorTable
-              .ensureFieldAccessorsInitialized(
-                  
org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff.class, 
org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff.Builder.class);
-        }
-
-        // Construct using 
org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff.newBuilder()
-        private Builder() {
-          maybeForceBuilderInitialization();
-        }
-
-        private Builder(
-            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
-          super(parent);
-          maybeForceBuilderInitialization();
-        }
-        private void maybeForceBuilderInitialization() {
-          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
-            getSnapshotFieldBuilder();
-          }
-        }
-        private static Builder create() {
-          return new Builder();
-        }
-
-        public Builder clear() {
-          super.clear();
-          waveletId_ = "";
-          bitField0_ = (bitField0_ & ~0x00000001);
-          if (snapshotBuilder_ == null) {
-            snapshot_ = 
org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot.getDefaultInstance();
-          } else {
-            snapshotBuilder_.clear();
-          }
-          bitField0_ = (bitField0_ & ~0x00000002);
-          return this;
-        }
-
-        public Builder clone() {
-          return create().mergeFrom(buildPartial());
-        }
-
-        public com.google.protobuf.Descriptors.Descriptor
-            getDescriptorForType() {
-          return 
org.waveprotocol.wave.diff.Diff.internal_static_diff_FetchDiffResponse_WaveletDiff_descriptor;
-        }
-
-        public org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff 
getDefaultInstanceForType() {
-          return 
org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff.getDefaultInstance();
-        }
-
-        public org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff 
build() {
-          org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff result 
= buildPartial();
-          if (!result.isInitialized()) {
-            throw newUninitializedMessageException(result);
-          }
-          return result;
-        }
-
-        public org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff 
buildPartial() {
-          org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff result 
= new org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff(this);
-          int from_bitField0_ = bitField0_;
-          int to_bitField0_ = 0;
-          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-            to_bitField0_ |= 0x00000001;
-          }
-          result.waveletId_ = waveletId_;
-          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
-            to_bitField0_ |= 0x00000002;
-          }
-          if (snapshotBuilder_ == null) {
-            result.snapshot_ = snapshot_;
-          } else {
-            result.snapshot_ = snapshotBuilder_.build();
-          }
-          result.bitField0_ = to_bitField0_;
-          onBuilt();
-          return result;
-        }
-
-        public Builder mergeFrom(com.google.protobuf.Message other) {
-          if (other instanceof 
org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff) {
-            return 
mergeFrom((org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff)other);
-          } else {
-            super.mergeFrom(other);
-            return this;
-          }
-        }
-
-        public Builder 
mergeFrom(org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff other) {
-          if (other == 
org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff.getDefaultInstance())
 return this;
-          if (other.hasWaveletId()) {
-            bitField0_ |= 0x00000001;
-            waveletId_ = other.waveletId_;
-            onChanged();
-          }
-          if (other.hasSnapshot()) {
-            mergeSnapshot(other.getSnapshot());
-          }
-          this.mergeUnknownFields(other.getUnknownFields());
-          return this;
-        }
-
-        public final boolean isInitialized() {
-          if (!hasWaveletId()) {
-            
-            return false;
-          }
-          if (hasSnapshot()) {
-            if (!getSnapshot().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.diff.Diff.FetchDiffResponse.WaveletDiff 
parsedMessage = null;
-          try {
-            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-            parsedMessage = 
(org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff) 
e.getUnfinishedMessage();
-            throw e;
-          } finally {
-            if (parsedMessage != null) {
-              mergeFrom(parsedMessage);
-            }
-          }
-          return this;
-        }
-        private int bitField0_;
-
-        // required string waveletId = 1;
-        private java.lang.Object waveletId_ = "";
-        /**
-         * <code>required string waveletId = 1;</code>
-         *
-         * <pre>
-         * The wavelet in view, URI path format.
-         * </pre>
-         */
-        public boolean hasWaveletId() {
-          return ((bitField0_ & 0x00000001) == 0x00000001);
-        }
-        /**
-         * <code>required string waveletId = 1;</code>
-         *
-         * <pre>
-         * The wavelet in view, URI path format.
-         * </pre>
-         */
-        public java.lang.String getWaveletId() {
-          java.lang.Object ref = waveletId_;
-          if (!(ref instanceof java.lang.String)) {
-            java.lang.String s = ((com.google.protobuf.ByteString) ref)
-                .toStringUtf8();
-            waveletId_ = s;
-            return s;
-          } else {
-            return (java.lang.String) ref;
-          }
-        }
-        /**
-         * <code>required string waveletId = 1;</code>
-         *
-         * <pre>
-         * The wavelet in view, URI path format.
-         * </pre>
-         */
-        public com.google.protobuf.ByteString
-            getWaveletIdBytes() {
-          java.lang.Object ref = waveletId_;
-          if (ref instanceof String) {
-            com.google.protobuf.ByteString b = 
-                com.google.protobuf.ByteString.copyFromUtf8(
-                    (java.lang.String) ref);
-            waveletId_ = b;
-            return b;
-          } else {
-            return (com.google.protobuf.ByteString) ref;
-          }
-        }
-        /**
-         * <code>required string waveletId = 1;</code>
-         *
-         * <pre>
-         * The wavelet in view, URI path format.
-         * </pre>
-         */
-        public Builder setWaveletId(
-            java.lang.String value) {
-          if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-          waveletId_ = value;
-          onChanged();
-          return this;
-        }
-        /**
-         * <code>required string waveletId = 1;</code>
-         *
-         * <pre>
-         * The wavelet in view, URI path format.
-         * </pre>
-         */
-        public Builder clearWaveletId() {
-          bitField0_ = (bitField0_ & ~0x00000001);
-          waveletId_ = getDefaultInstance().getWaveletId();
-          onChanged();
-          return this;
-        }
-        /**
-         * <code>required string waveletId = 1;</code>
-         *
-         * <pre>
-         * The wavelet in view, URI path format.
-         * </pre>
-         */
-        public Builder setWaveletIdBytes(
-            com.google.protobuf.ByteString value) {
-          if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-          waveletId_ = value;
-          onChanged();
-          return this;
-        }
-
-        // optional .diff.WaveletDiffSnapshot snapshot = 2;
-        private org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot snapshot_ 
= org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot.getDefaultInstance();
-        private com.google.protobuf.SingleFieldBuilder<
-            org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot, 
org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot.Builder, 
org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshotOrBuilder> snapshotBuilder_;
-        /**
-         * <code>optional .diff.WaveletDiffSnapshot snapshot = 2;</code>
-         *
-         * <pre>
-         * Snapshot of the wavelet; omitted if the client already knew it.
-         * </pre>
-         */
-        public boolean hasSnapshot() {
-          return ((bitField0_ & 0x00000002) == 0x00000002);
-        }
-        /**
-         * <code>optional .diff.WaveletDiffSnapshot snapshot = 2;</code>
-         *
-         * <pre>
-         * Snapshot of the wavelet; omitted if the client already knew it.
-         * </pre>
-         */
-        public org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot 
getSnapshot() {
-          if (snapshotBuilder_ == null) {
-            return snapshot_;
-          } else {
-            return snapshotBuilder_.getMessage();
-          }
-        }
-        /**
-         * <code>optional .diff.WaveletDiffSnapshot snapshot = 2;</code>
-         *
-         * <pre>
-         * Snapshot of the wavelet; omitted if the client already knew it.
-         * </pre>
-         */
-        public Builder 
setSnapshot(org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot value) {
-          if (snapshotBuilder_ == null) {
-            if (value == null) {
-              throw new NullPointerException();
-            }
-            snapshot_ = value;
-            onChanged();
-          } else {
-            snapshotBuilder_.setMessage(value);
-          }
-          bitField0_ |= 0x00000002;
-          return this;
-        }
-        /**
-         * <code>optional .diff.WaveletDiffSnapshot snapshot = 2;</code>
-         *
-         * <pre>
-         * Snapshot of the wavelet; omitted if the client already knew it.
-         * </pre>
-         */
-        public Builder setSnapshot(
-            org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot.Builder 
builderForValue) {
-          if (snapshotBuilder_ == null) {
-            snapshot_ = builderForValue.build();
-            onChanged();
-          } else {
-            snapshotBuilder_.setMessage(builderForValue.build());
-          }
-          bitField0_ |= 0x00000002;
-          return this;
-        }
-        /**
-         * <code>optional .diff.WaveletDiffSnapshot snapshot = 2;</code>
-         *
-         * <pre>
-         * Snapshot of the wavelet; omitted if the client already knew it.
-         * </pre>
-         */
-        public Builder 
mergeSnapshot(org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot value) {
-          if (snapshotBuilder_ == null) {
-            if (((bitField0_ & 0x00000002) == 0x00000002) &&
-                snapshot_ != 
org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot.getDefaultInstance()) {
-              snapshot_ =
-                
org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot.newBuilder(snapshot_).mergeFrom(value).buildPartial();
-            } else {
-              snapshot_ = value;
-            }
-            onChanged();
-          } else {
-            snapshotBuilder_.mergeFrom(value);
-          }
-          bitField0_ |= 0x00000002;
-          return this;
-        }
-        /**
-         * <code>optional .diff.WaveletDiffSnapshot snapshot = 2;</code>
-         *
-         * <pre>
-         * Snapshot of the wavelet; omitted if the client already knew it.
-         * </pre>
-         */
-        public Builder clearSnapshot() {
-          if (snapshotBuilder_ == null) {
-            snapshot_ = 
org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot.getDefaultInstance();
-            onChanged();
-          } else {
-            snapshotBuilder_.clear();
-          }
-          bitField0_ = (bitField0_ & ~0x00000002);
-          return this;
-        }
-        /**
-         * <code>optional .diff.WaveletDiffSnapshot snapshot = 2;</code>
-         *
-         * <pre>
-         * Snapshot of the wavelet; omitted if the client already knew it.
-         * </pre>
-         */
-        public org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot.Builder 
getSnapshotBuilder() {
-          bitField0_ |= 0x00000002;
-          onChanged();
-          return getSnapshotFieldBuilder().getBuilder();
-        }
-        /**
-         * <code>optional .diff.WaveletDiffSnapshot snapshot = 2;</code>
-         *
-         * <pre>
-         * Snapshot of the wavelet; omitted if the client already knew it.
-         * </pre>
-         */
-        public org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshotOrBuilder 
getSnapshotOrBuilder() {
-          if (snapshotBuilder_ != null) {
-            return snapshotBuilder_.getMessageOrBuilder();
-          } else {
-            return snapshot_;
-          }
-        }
-        /**
-         * <code>optional .diff.WaveletDiffSnapshot snapshot = 2;</code>
-         *
-         * <pre>
-         * Snapshot of the wavelet; omitted if the client already knew it.
-         * </pre>
-         */
-        private com.google.protobuf.SingleFieldBuilder<
-            org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot, 
org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot.Builder, 
org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshotOrBuilder> 
-            getSnapshotFieldBuilder() {
-          if (snapshotBuilder_ == null) {
-            snapshotBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-                org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot, 
org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot.Builder, 
org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshotOrBuilder>(
-                    snapshot_,
-                    getParentForChildren(),
-                    isClean());
-            snapshot_ = null;
-          }
-          return snapshotBuilder_;
-        }
-
-        // 
@@protoc_insertion_point(builder_scope:diff.FetchDiffResponse.WaveletDiff)
-      }
-
-      static {
-        defaultInstance = new WaveletDiff(true);
-        defaultInstance.initFields();
-      }
-
-      // 
@@protoc_insertion_point(class_scope:diff.FetchDiffResponse.WaveletDiff)
-    }
-
-    private int bitField0_;
-    // required .concurrencycontrol.ResponseStatus status = 1;
-    public static final int STATUS_FIELD_NUMBER = 1;
-    private 
org.waveprotocol.wave.concurrencycontrol.ClientServer.ResponseStatus status_;
-    /**
-     * <code>required .concurrencycontrol.ResponseStatus status = 1;</code>
-     */
-    public boolean hasStatus() {
-      return ((bitField0_ & 0x00000001) == 0x00000001);
-    }
-    /**
-     * <code>required .concurrencycontrol.ResponseStatus status = 1;</code>
-     */
-    public 
org.waveprotocol.wave.concurrencycontrol.ClientServer.ResponseStatus 
getStatus() {
-      return status_;
-    }
-    /**
-     * <code>required .concurrencycontrol.ResponseStatus status = 1;</code>
-     */
-    public 
org.waveprotocol.wave.concurrencycontrol.ClientServer.ResponseStatusOrBuilder 
getStatusOrBuilder() {
-      return status_;
-    }
-
-    // repeated .diff.FetchDiffResponse.WaveletDiff wavelet = 2;
-    public static final int WAVELET_FIELD_NUMBER = 2;
-    private 
java.util.List<org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff> 
wavelet_;
-    /**
-     * <code>repeated .diff.FetchDiffResponse.WaveletDiff wavelet = 2;</code>
-     */
-    public 
java.util.List<org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff> 
getWaveletList() {
-      return wavelet_;
-    }
-    /**
-     * <code>repeated .diff.FetchDiffResponse.WaveletDiff wavelet = 2;</code>
-     */
-    public java.util.List<? extends 
org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiffOrBuilder> 
-        getWaveletOrBuilderList() {
-      return wavelet_;
-    }
-    /**
-     * <code>repeated .diff.FetchDiffResponse.WaveletDiff wavelet = 2;</code>
-     */
-    public int getWaveletCount() {
-      return wavelet_.size();
-    }
-    /**
-     * <code>repeated .diff.FetchDiffResponse.WaveletDiff wavelet = 2;</code>
-     */
-    public org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiff 
getWavelet(int index) {
-      return wavelet_.get(index);
-    }
-    /**
-     * <code>repeated .diff.FetchDiffResponse.WaveletDiff wavelet = 2;</code>
-     */
-    public 
org.waveprotocol.wave.diff.Diff.FetchDiffResponse.WaveletDiffOrBuilder 
getWaveletOrBuilder(
-        int index) {
-      return wavelet_.get(index);
-    }
-
-    private void initFields() {
-      status_ = 
org.waveprotocol.wave.concurrencycontrol.ClientServer.ResponseStatus.getDefaultInstance();
-      wavelet_ = java.util.Collections.emptyList();
-    }
-    private byte memoizedIsInitialized = -1;
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
-
-      if (!hasStatus()) {
-        memoizedIsInitialized = 0;
-        return false;
-      }
-      if (!getStatus().isInitialized()) {
-        memoizedIsInitialized = 0;
-        return false;
-      }
-      for (int i = 0; i < getWaveletCount(); i++) {
-        if (!getWavelet(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, status_);
-      }
-      for (int i = 0; i < wavelet_.size(); i++) {
-        output.writeMessage(2, wavelet_.get(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, status_);
-      }
-      for (int i = 0; i < wavelet_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, wavelet_.get(i));
-      }
-      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.diff.Diff.FetchDiffResponse parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.waveprotocol.wave.diff.Diff.FetchDiffResponse 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.diff.Diff.FetchDiffResponse 
parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.waveprotocol.wave.diff.Diff.FetchDiffResponse parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.waveprotocol.wave.diff.Diff.FetchDiffResponse 
parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.waveprotocol.wave.diff.Diff.FetchDiffResponse parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-    public static org.waveprotocol.wave.diff.Diff.FetchDiffResponse 
parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
-    }
-    public static org.waveprotocol.wave.diff.Diff.FetchDiffResponse 
parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
-    }
-    public static org.waveprotocol.wave.diff.Diff.FetchDiffResponse parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.waveprotocol.wave.diff.Diff.FetchDiffResponse 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.diff.Diff.FetchDiffResponse 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 diff.FetchDiffResponse}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder>
-       implements org.waveprotocol.wave.diff.Diff.FetchDiffResponseOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return 
org.waveprotocol.wave.diff.Diff.internal_static_diff_FetchDiffResponse_descriptor;
-      }
-
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return 
org.waveprotocol.wave.diff.Diff.internal_static_diff_FetchDiffResponse_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                org.waveprotocol.wave.diff.Diff.FetchDiffResponse.class, 
org.waveprotocol.wave.diff.Diff.FetchDiffResponse.Builder.class);
-      }
-
-      // Construct using 
org.waveprotocol.wave.diff.Diff.FetchDiffResponse.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
-          getStatusFieldBuilder();
-          getWaveletFieldBuilder();
-        }
-      }
-      private static Builder create() {
-        return new Builder();
-      }
-
-      public Builder clear() {
-        super.clear();
-        if (statusBuilder_ == null) {
-          status_ = 
org.waveprotocol.wave.concurrencycontrol.ClientServer.ResponseStatus.getDefaultInstance();
-        } else {
-          statusBuilder_.clear();
-        }
-        bitField0_ = (bitField0_ & ~0x00000001);
-        if (waveletBuilder_ == null) {
-          wavelet_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-        } else {
-          waveletBuilder_.clear();
-        }
-        return this;
-      }
-
-      public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
-
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return 
org.waveprotocol.wave.diff.Diff.internal_static_diff_FetchDiffResponse_descriptor;
-      }
-
-      public org.waveprotocol.wave.diff.Diff.FetchDiffResponse 
getDefaultInstanceForType() {
-        return 
org.waveprotocol.wave.diff.Diff.FetchDiffResponse.getDefaultInstance();
-      }
-
-      public org.waveprotocol.wave.diff.Diff.FetchDiffResponse build() {
-        org.waveprotocol.wave.diff.Diff.FetchDiffResponse result = 
buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      public org.waveprotocol.wave.diff.Diff.FetchDiffResponse buildPartial() {
-        org.waveprotocol.wave.diff.Diff.FetchDiffResponse result = new 
org.waveprotocol.wave.diff.Diff.FetchDiffResponse(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        if (statusBuilder_ == null) {
-          result.status_ = status_;
-        } else {
-          result.status_ = statusBuilder_.build();
-        }
-        if (waveletBuilder_ == null) {
-          if (((bitField0_ & 0x00000002) == 0x00000002)) {
-            wavelet_ = java.util.Collections.unmodifiableList(wavelet_);
-            bitField0_ = (bitField0_ & ~0x00000002);
-          }
-          result.wavelet_ = wavelet_;
-        } else {
-          result.wavelet_ = waveletBuilder_.build();
-        }
-        result.bitField0_ = to_bitField0_;
-        onBuilt();
-        return result;
-      }
-
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof 
org.waveprotocol.wave.diff.Diff.FetchDiffResponse) {
-          return 
mergeFrom((org.waveprotocol.wave.diff.Diff.FetchDiffResponse)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder 
mergeFrom(org.waveprotocol.wave.diff.Diff.FetchDiffResponse other) {
-        if (other == 
org.waveprotocol.wave.diff.Diff.FetchDiffResponse.getDefaultInstance()) return 
this;
-        if (other.hasStatus()) {
-          mergeStatus(other.getStatus());
-        }
-        if (waveletBuilder_ == null) {
-          if (!other.wavelet_.isEmpty()) {
-            if (wavelet_.isEmpty()) {
-              wavelet_ = other.wavelet_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-            } else {
-              ensureWaveletIsMutable();
-              wavelet_.addAll(other.wavelet_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.wavelet_.isEmpty()) {
-            if (waveletBuilder_.isEmpty()) {
-              waveletBuilder_.dispose();
-              waveletBuilder_ = null;
-              wavelet_ = other.wavelet_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-              waveletBuilder_ = 
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
-                   getWaveletFieldBuilder() : null;
-            } else {
-              waveletBuilder_.addAllMessages(other.wavelet_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
-
-      public final boolean isInitialized() {
-        if (!hasStatus()) {
-          
-          return false;
-        }
-        if (!getStatus().isInitialized()) {
-          
-          return false;
-        }
-        for (int i = 0; i < getWaveletCount(); i++) {
-          if (!getWavelet(i).isInitialized()) {
-      

<TRUNCATED>

Reply via email to