Updated protobuf library to 2.5.0.

Change-Id: Ief9d57c13ae876bf431a0149c751874db86f6f33
diff --git a/dev/build.xml b/dev/build.xml
index 92fa976..a301c4e 100755
--- a/dev/build.xml
+++ b/dev/build.xml
@@ -64,7 +64,7 @@
           <include name="jscomp/20131014/compiler-rebased.jar" />
           <include name="jscomp/20131014/sourcemap-rebased.jar" />
           <include name="jsr305/jsr305.jar" />
-          <include name="protobuf/protobuf-2.2.0/protobuf-java-rebased-2.2.0.jar" />
+          <include name="protobuf/protobuf-2.5.0/protobuf-java-rebased-2.5.0.jar" />
           <!-- dependencies needed for JSP support in DevMode: BEGIN -->
           <include name="tomcat/commons-el-1.0.jar" />
           <include name="tomcat/jasper-compiler-1.0.jar" />
@@ -114,7 +114,7 @@
           <zipfileset src="${gwt.tools.lib}/jscomp/20131014/compiler-rebased.jar" />
           <zipfileset src="${gwt.tools.lib}/jscomp/20131014/sourcemap-rebased.jar" />
           <zipfileset src="${gwt.tools.lib}/jsr305/jsr305.jar" />
-          <zipfileset src="${gwt.tools.lib}/protobuf/protobuf-2.2.0/protobuf-java-rebased-2.2.0.jar" />
+          <zipfileset src="${gwt.tools.lib}/protobuf/protobuf-2.5.0/protobuf-java-rebased-2.5.0.jar" />
           <!-- dependencies needed for JSP support in DevMode: BEGIN -->
           <zipfileset src="${gwt.tools.lib}/tomcat/commons-el-1.0.jar" />
           <zipfileset src="${gwt.tools.lib}/tomcat/jasper-compiler-1.0.jar" />
@@ -189,6 +189,7 @@
           <pathelement location="${gwt.tools.lib}/jscomp/20131014/compiler-rebased.jar" />
           <pathelement location="${gwt.tools.lib}/jscomp/20131014/sourcemap-rebased.jar" />
           <pathelement location="${gwt.tools.lib}/jsr305/jsr305.jar" />
+          <pathelement location="${gwt.tools.lib}/protobuf/protobuf-2.5.0/protobuf-java-rebased-2.5.0.jar" />
       </classpath>
     </gwt.javac>
   </target>
diff --git a/dev/core/src/com/google/gwt/dev/shell/remoteui/MessageTransport.java b/dev/core/src/com/google/gwt/dev/shell/remoteui/MessageTransport.java
index 76fd9f4..9ca0209 100644
--- a/dev/core/src/com/google/gwt/dev/shell/remoteui/MessageTransport.java
+++ b/dev/core/src/com/google/gwt/dev/shell/remoteui/MessageTransport.java
@@ -1,12 +1,12 @@
 /*
  * Copyright 2009 Google Inc.
- * 
+ *
  * Licensed 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
@@ -50,13 +50,13 @@
 
     /**
      * Called when an exception occurs when attempting to send a response
-     * message. 
+     * message.
      */
     void onResponseException(Exception e);
 
     /**
      * Called when the transport terminates due to an exception.
-     * 
+     *
      * @param e The exception that led to the termination
      */
     void onTermination(Exception e);
@@ -73,7 +73,7 @@
     /**
      * Create a new instance with the given failure message. The exception's
      * message will be set to {@link Failure#getMessage()}.
-     * 
+     *
      * @param failureMessage The failure message returned by the server
      */
     public RequestException(Failure failureMessage) {
@@ -115,7 +115,7 @@
     /**
      * Sets the response that was received from the server, and signals the
      * thread that is waiting on the response.
-     * 
+     *
      * @param responseMessage the server's response
      * @throws InterruptedException
      */
@@ -212,7 +212,7 @@
 
   /**
    * Create a new instance using the given streams and request processor.
-   * 
+   *
    * @param inputStream an input stream for reading messages
    * @param outputStream an output stream for writing messages
    * @param requestProcessor a callback interface for handling remote client
@@ -231,9 +231,9 @@
 
   /**
    * Asynchronously executes the request on a remote server.
-   * 
+   *
    * @param requestMessage The request to execute
-   * 
+   *
    * @return a {@link Future} that can be used to access the server's response
    */
   public Future<Response> executeRequestAsync(Request requestMessage) {
@@ -282,7 +282,7 @@
    * generally be called by another thread. Memory consistency effects: actions
    * in a thread prior to calling this method happen-before the callback is
    * invoked.
-   * 
+   *
    * @param requestMessage The request to execute
    * @param callback The callback to invoke when the response is received
    */
@@ -303,7 +303,7 @@
    * Starts up the message transport. The message transport creates its own
    * threads, so it is not necessary to invoke this method from a separate
    * thread.
-   * 
+   *
    * Closing either stream will cause the termination of the transport.
    */
   public void start() {
@@ -312,12 +312,17 @@
       return;
     }
 
-    // This thread terminates on interruption or IO failure
+    // This thread terminates on interruption, IO failure or EOF
     Thread messageProcessingThread = new Thread(new Runnable() {
       public void run() {
         try {
           while (true) {
             Message message = Message.parseDelimitedFrom(inputStream);
+            if (message == null) {
+              // EOF detected. Throw an IOException to emulate old behaviour.
+              // TODO(rluble): hacky, maybe the server should terminate normally in this case.
+              throw new IOException("Attempt to read past EOF");
+            }
             // TODO: This is where we would do a protocol check
             processMessage(message);
           }
diff --git a/dev/core/src/com/google/gwt/dev/shell/remoteui/RemoteMessageProto.java b/dev/core/src/com/google/gwt/dev/shell/remoteui/RemoteMessageProto.java
index d3fd08e..861df2a 100644
--- a/dev/core/src/com/google/gwt/dev/shell/remoteui/RemoteMessageProto.java
+++ b/dev/core/src/com/google/gwt/dev/shell/remoteui/RemoteMessageProto.java
@@ -1,4 +1,5 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: remotemessage.proto
 
 package com.google.gwt.dev.shell.remoteui;
 
@@ -7,40 +8,294 @@
   public static void registerAllExtensions(
       com.google.gwt.dev.protobuf.ExtensionRegistry registry) {
   }
+  public interface MessageOrBuilder
+      extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+
+    // optional string protocolVersion = 1;
+    /**
+     * <code>optional string protocolVersion = 1;</code>
+     *
+     * <pre>
+     * In the first release, we'll ignore this field. In the future, 
+     * we can make use of it to detect protocol incompatibilities
+     * </pre>
+     */
+    boolean hasProtocolVersion();
+    /**
+     * <code>optional string protocolVersion = 1;</code>
+     *
+     * <pre>
+     * In the first release, we'll ignore this field. In the future, 
+     * we can make use of it to detect protocol incompatibilities
+     * </pre>
+     */
+    java.lang.String getProtocolVersion();
+    /**
+     * <code>optional string protocolVersion = 1;</code>
+     *
+     * <pre>
+     * In the first release, we'll ignore this field. In the future, 
+     * we can make use of it to detect protocol incompatibilities
+     * </pre>
+     */
+    com.google.gwt.dev.protobuf.ByteString
+        getProtocolVersionBytes();
+
+    // optional .com.google.gwt.dev.shell.remoteui.Message.MessageType messageType = 2;
+    /**
+     * <code>optional .com.google.gwt.dev.shell.remoteui.Message.MessageType messageType = 2;</code>
+     */
+    boolean hasMessageType();
+    /**
+     * <code>optional .com.google.gwt.dev.shell.remoteui.Message.MessageType messageType = 2;</code>
+     */
+    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.MessageType getMessageType();
+
+    // required uint32 messageId = 3;
+    /**
+     * <code>required uint32 messageId = 3;</code>
+     */
+    boolean hasMessageId();
+    /**
+     * <code>required uint32 messageId = 3;</code>
+     */
+    int getMessageId();
+
+    // optional .com.google.gwt.dev.shell.remoteui.Message.Request request = 4;
+    /**
+     * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request request = 4;</code>
+     */
+    boolean hasRequest();
+    /**
+     * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request request = 4;</code>
+     */
+    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request getRequest();
+    /**
+     * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request request = 4;</code>
+     */
+    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.RequestOrBuilder getRequestOrBuilder();
+
+    // optional .com.google.gwt.dev.shell.remoteui.Message.Response response = 5;
+    /**
+     * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response response = 5;</code>
+     */
+    boolean hasResponse();
+    /**
+     * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response response = 5;</code>
+     */
+    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response getResponse();
+    /**
+     * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response response = 5;</code>
+     */
+    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.ResponseOrBuilder getResponseOrBuilder();
+
+    // optional .com.google.gwt.dev.shell.remoteui.Message.Failure failure = 6;
+    /**
+     * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Failure failure = 6;</code>
+     */
+    boolean hasFailure();
+    /**
+     * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Failure failure = 6;</code>
+     */
+    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure getFailure();
+    /**
+     * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Failure failure = 6;</code>
+     */
+    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.FailureOrBuilder getFailureOrBuilder();
+  }
+  /**
+   * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message}
+   *
+   * <pre>
+   * Outer envelope for all messages
+   * </pre>
+   */
   public static final class Message extends
-      com.google.gwt.dev.protobuf.GeneratedMessage {
+      com.google.gwt.dev.protobuf.GeneratedMessage
+      implements MessageOrBuilder {
     // Use Message.newBuilder() to construct.
-    private Message() {}
-    
-    private static final Message defaultInstance = new Message();
+    private Message(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private Message(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final Message defaultInstance;
     public static Message getDefaultInstance() {
       return defaultInstance;
     }
-    
+
     public Message getDefaultInstanceForType() {
       return defaultInstance;
     }
-    
+
+    private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.gwt.dev.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Message(
+        com.google.gwt.dev.protobuf.CodedInputStream input,
+        com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.gwt.dev.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;
+              protocolVersion_ = input.readBytes();
+              break;
+            }
+            case 16: {
+              int rawValue = input.readEnum();
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.MessageType value = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.MessageType.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(2, rawValue);
+              } else {
+                bitField0_ |= 0x00000002;
+                messageType_ = value;
+              }
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              messageId_ = input.readUInt32();
+              break;
+            }
+            case 34: {
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                subBuilder = request_.toBuilder();
+              }
+              request_ = input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(request_);
+                request_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 42: {
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                subBuilder = response_.toBuilder();
+              }
+              response_ = input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(response_);
+                response_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+            case 50: {
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                subBuilder = failure_.toBuilder();
+              }
+              failure_ = input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(failure_);
+                failure_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000020;
+              break;
+            }
+          }
+        }
+      } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
     public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_descriptor;
     }
-    
+
     protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_fieldAccessorTable;
+      return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Builder.class);
     }
-    
+
+    public static com.google.gwt.dev.protobuf.Parser<Message> PARSER =
+        new com.google.gwt.dev.protobuf.AbstractParser<Message>() {
+      public Message parsePartialFrom(
+          com.google.gwt.dev.protobuf.CodedInputStream input,
+          com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+        return new Message(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.gwt.dev.protobuf.Parser<Message> getParserForType() {
+      return PARSER;
+    }
+
+    /**
+     * Protobuf enum {@code com.google.gwt.dev.shell.remoteui.Message.MessageType}
+     *
+     * <pre>
+     * Two types of messages - either a request, or a response
+     * </pre>
+     */
     public enum MessageType
         implements com.google.gwt.dev.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>REQUEST = 0;</code>
+       */
       REQUEST(0, 0),
+      /**
+       * <code>RESPONSE = 1;</code>
+       */
       RESPONSE(1, 1),
+      /**
+       * <code>FAILURE = 2;</code>
+       */
       FAILURE(2, 2),
       ;
-      
-      
+
+      /**
+       * <code>REQUEST = 0;</code>
+       */
+      public static final int REQUEST_VALUE = 0;
+      /**
+       * <code>RESPONSE = 1;</code>
+       */
+      public static final int RESPONSE_VALUE = 1;
+      /**
+       * <code>FAILURE = 2;</code>
+       */
+      public static final int FAILURE_VALUE = 2;
+
+
       public final int getNumber() { return value; }
-      
+
       public static MessageType valueOf(int value) {
         switch (value) {
           case 0: return REQUEST;
@@ -49,7 +304,7 @@
           default: return null;
         }
       }
-      
+
       public static com.google.gwt.dev.protobuf.Internal.EnumLiteMap<MessageType>
           internalGetValueMap() {
         return internalValueMap;
@@ -58,10 +313,10 @@
           internalValueMap =
             new com.google.gwt.dev.protobuf.Internal.EnumLiteMap<MessageType>() {
               public MessageType findValueByNumber(int number) {
-                return MessageType.valueOf(number)
-      ;        }
+                return MessageType.valueOf(number);
+              }
             };
-      
+
       public final com.google.gwt.dev.protobuf.Descriptors.EnumValueDescriptor
           getValueDescriptor() {
         return getDescriptor().getValues().get(index);
@@ -74,10 +329,9 @@
           getDescriptor() {
         return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.getDescriptor().getEnumTypes().get(0);
       }
-      
-      private static final MessageType[] VALUES = {
-        REQUEST, RESPONSE, FAILURE, 
-      };
+
+      private static final MessageType[] VALUES = values();
+
       public static MessageType valueOf(
           com.google.gwt.dev.protobuf.Descriptors.EnumValueDescriptor desc) {
         if (desc.getType() != getDescriptor()) {
@@ -86,51 +340,224 @@
         }
         return VALUES[desc.getIndex()];
       }
+
       private final int index;
       private final int value;
+
       private MessageType(int index, int value) {
         this.index = index;
         this.value = value;
       }
-      
-      static {
-        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
-      }
+
+      // @@protoc_insertion_point(enum_scope:com.google.gwt.dev.shell.remoteui.Message.MessageType)
     }
-    
+
+    public interface RequestOrBuilder
+        extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+
+      // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ServiceType serviceType = 1;
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ServiceType serviceType = 1;</code>
+       */
+      boolean hasServiceType();
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ServiceType serviceType = 1;</code>
+       */
+      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ServiceType getServiceType();
+
+      // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest viewerRequest = 2;
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest viewerRequest = 2;</code>
+       */
+      boolean hasViewerRequest();
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest viewerRequest = 2;</code>
+       */
+      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest getViewerRequest();
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest viewerRequest = 2;</code>
+       */
+      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequestOrBuilder getViewerRequestOrBuilder();
+
+      // optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest devModeRequest = 3;
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest devModeRequest = 3;</code>
+       */
+      boolean hasDevModeRequest();
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest devModeRequest = 3;</code>
+       */
+      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest getDevModeRequest();
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest devModeRequest = 3;</code>
+       */
+      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequestOrBuilder getDevModeRequestOrBuilder();
+    }
+    /**
+     * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request}
+     *
+     * <pre>
+     * A request message. This is the root type for all request messages
+     * </pre>
+     */
     public static final class Request extends
-        com.google.gwt.dev.protobuf.GeneratedMessage {
+        com.google.gwt.dev.protobuf.GeneratedMessage
+        implements RequestOrBuilder {
       // Use Request.newBuilder() to construct.
-      private Request() {}
-      
-      private static final Request defaultInstance = new Request();
+      private Request(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Request(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Request defaultInstance;
       public static Request getDefaultInstance() {
         return defaultInstance;
       }
-      
+
       public Request getDefaultInstanceForType() {
         return defaultInstance;
       }
-      
+
+      private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.gwt.dev.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Request(
+          com.google.gwt.dev.protobuf.CodedInputStream input,
+          com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.gwt.dev.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: {
+                int rawValue = input.readEnum();
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ServiceType value = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ServiceType.valueOf(rawValue);
+                if (value == null) {
+                  unknownFields.mergeVarintField(1, rawValue);
+                } else {
+                  bitField0_ |= 0x00000001;
+                  serviceType_ = value;
+                }
+                break;
+              }
+              case 18: {
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = viewerRequest_.toBuilder();
+                }
+                viewerRequest_ = input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(viewerRequest_);
+                  viewerRequest_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+              case 26: {
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                  subBuilder = devModeRequest_.toBuilder();
+                }
+                devModeRequest_ = input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(devModeRequest_);
+                  devModeRequest_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000004;
+                break;
+              }
+            }
+          }
+        } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
       public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
           getDescriptor() {
         return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_descriptor;
       }
-      
+
       protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_fieldAccessorTable;
+        return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.Builder.class);
       }
-      
+
+      public static com.google.gwt.dev.protobuf.Parser<Request> PARSER =
+          new com.google.gwt.dev.protobuf.AbstractParser<Request>() {
+        public Request parsePartialFrom(
+            com.google.gwt.dev.protobuf.CodedInputStream input,
+            com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+          return new Request(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.gwt.dev.protobuf.Parser<Request> getParserForType() {
+        return PARSER;
+      }
+
+      /**
+       * Protobuf enum {@code com.google.gwt.dev.shell.remoteui.Message.Request.ServiceType}
+       *
+       * <pre>
+       * Every request must be addressed to a service. The two types of 
+       * services are the ViewerService, and the DevModeService. The ViewerService
+       * accepts commands for a Viewer. The DevModeService accepts requests for
+       * the Development Mode Server.
+       * </pre>
+       */
       public enum ServiceType
           implements com.google.gwt.dev.protobuf.ProtocolMessageEnum {
+        /**
+         * <code>VIEWER = 0;</code>
+         */
         VIEWER(0, 0),
+        /**
+         * <code>DEV_MODE = 1;</code>
+         */
         DEV_MODE(1, 1),
         ;
-        
-        
+
+        /**
+         * <code>VIEWER = 0;</code>
+         */
+        public static final int VIEWER_VALUE = 0;
+        /**
+         * <code>DEV_MODE = 1;</code>
+         */
+        public static final int DEV_MODE_VALUE = 1;
+
+
         public final int getNumber() { return value; }
-        
+
         public static ServiceType valueOf(int value) {
           switch (value) {
             case 0: return VIEWER;
@@ -138,7 +565,7 @@
             default: return null;
           }
         }
-        
+
         public static com.google.gwt.dev.protobuf.Internal.EnumLiteMap<ServiceType>
             internalGetValueMap() {
           return internalValueMap;
@@ -147,10 +574,10 @@
             internalValueMap =
               new com.google.gwt.dev.protobuf.Internal.EnumLiteMap<ServiceType>() {
                 public ServiceType findValueByNumber(int number) {
-                  return ServiceType.valueOf(number)
-        ;        }
+                  return ServiceType.valueOf(number);
+                }
               };
-        
+
         public final com.google.gwt.dev.protobuf.Descriptors.EnumValueDescriptor
             getValueDescriptor() {
           return getDescriptor().getValues().get(index);
@@ -163,10 +590,9 @@
             getDescriptor() {
           return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.getDescriptor().getEnumTypes().get(0);
         }
-        
-        private static final ServiceType[] VALUES = {
-          VIEWER, DEV_MODE, 
-        };
+
+        private static final ServiceType[] VALUES = values();
+
         public static ServiceType valueOf(
             com.google.gwt.dev.protobuf.Descriptors.EnumValueDescriptor desc) {
           if (desc.getType() != getDescriptor()) {
@@ -175,55 +601,361 @@
           }
           return VALUES[desc.getIndex()];
         }
+
         private final int index;
         private final int value;
+
         private ServiceType(int index, int value) {
           this.index = index;
           this.value = value;
         }
-        
-        static {
-          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
-        }
+
+        // @@protoc_insertion_point(enum_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ServiceType)
       }
-      
+
+      public interface ViewerRequestOrBuilder
+          extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+
+        // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.RequestType requestType = 1;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.RequestType requestType = 1;</code>
+         */
+        boolean hasRequestType();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.RequestType requestType = 1;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType getRequestType();
+
+        // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.CapabilityExchange capabilityExchange = 2;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.CapabilityExchange capabilityExchange = 2;</code>
+         */
+        boolean hasCapabilityExchange();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.CapabilityExchange capabilityExchange = 2;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange getCapabilityExchange();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.CapabilityExchange capabilityExchange = 2;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchangeOrBuilder getCapabilityExchangeOrBuilder();
+
+        // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog addLog = 3;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog addLog = 3;</code>
+         */
+        boolean hasAddLog();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog addLog = 3;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog getAddLog();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog addLog = 3;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogOrBuilder getAddLogOrBuilder();
+
+        // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogBranch addLogBranch = 4;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogBranch addLogBranch = 4;</code>
+         */
+        boolean hasAddLogBranch();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogBranch addLogBranch = 4;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch getAddLogBranch();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogBranch addLogBranch = 4;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranchOrBuilder getAddLogBranchOrBuilder();
+
+        // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogEntry addLogEntry = 5;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogEntry addLogEntry = 5;</code>
+         */
+        boolean hasAddLogEntry();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogEntry addLogEntry = 5;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry getAddLogEntry();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogEntry addLogEntry = 5;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntryOrBuilder getAddLogEntryOrBuilder();
+
+        // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.DisconnectLog disconnectLog = 6;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.DisconnectLog disconnectLog = 6;</code>
+         */
+        boolean hasDisconnectLog();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.DisconnectLog disconnectLog = 6;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog getDisconnectLog();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.DisconnectLog disconnectLog = 6;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLogOrBuilder getDisconnectLogOrBuilder();
+
+        // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.Initialize initialize = 7;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.Initialize initialize = 7;</code>
+         */
+        boolean hasInitialize();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.Initialize initialize = 7;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize getInitialize();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.Initialize initialize = 7;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.InitializeOrBuilder getInitializeOrBuilder();
+      }
+      /**
+       * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest}
+       *
+       * <pre>
+       * The root type for all requests for the ViewerService
+       * </pre>
+       */
       public static final class ViewerRequest extends
-          com.google.gwt.dev.protobuf.GeneratedMessage {
+          com.google.gwt.dev.protobuf.GeneratedMessage
+          implements ViewerRequestOrBuilder {
         // Use ViewerRequest.newBuilder() to construct.
-        private ViewerRequest() {}
-        
-        private static final ViewerRequest defaultInstance = new ViewerRequest();
+        private ViewerRequest(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private ViewerRequest(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final ViewerRequest defaultInstance;
         public static ViewerRequest getDefaultInstance() {
           return defaultInstance;
         }
-        
+
         public ViewerRequest getDefaultInstanceForType() {
           return defaultInstance;
         }
-        
+
+        private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.gwt.dev.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private ViewerRequest(
+            com.google.gwt.dev.protobuf.CodedInputStream input,
+            com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.gwt.dev.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: {
+                  int rawValue = input.readEnum();
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType value = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType.valueOf(rawValue);
+                  if (value == null) {
+                    unknownFields.mergeVarintField(1, rawValue);
+                  } else {
+                    bitField0_ |= 0x00000001;
+                    requestType_ = value;
+                  }
+                  break;
+                }
+                case 18: {
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                    subBuilder = capabilityExchange_.toBuilder();
+                  }
+                  capabilityExchange_ = input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(capabilityExchange_);
+                    capabilityExchange_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000002;
+                  break;
+                }
+                case 26: {
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                    subBuilder = addLog_.toBuilder();
+                  }
+                  addLog_ = input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(addLog_);
+                    addLog_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000004;
+                  break;
+                }
+                case 34: {
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                    subBuilder = addLogBranch_.toBuilder();
+                  }
+                  addLogBranch_ = input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(addLogBranch_);
+                    addLogBranch_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000008;
+                  break;
+                }
+                case 42: {
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                    subBuilder = addLogEntry_.toBuilder();
+                  }
+                  addLogEntry_ = input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(addLogEntry_);
+                    addLogEntry_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000010;
+                  break;
+                }
+                case 50: {
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                    subBuilder = disconnectLog_.toBuilder();
+                  }
+                  disconnectLog_ = input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(disconnectLog_);
+                    disconnectLog_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000020;
+                  break;
+                }
+                case 58: {
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000040) == 0x00000040)) {
+                    subBuilder = initialize_.toBuilder();
+                  }
+                  initialize_ = input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(initialize_);
+                    initialize_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000040;
+                  break;
+                }
+              }
+            }
+          } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
         public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
             getDescriptor() {
           return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_descriptor;
         }
-        
+
         protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
             internalGetFieldAccessorTable() {
-          return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_fieldAccessorTable;
+          return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Builder.class);
         }
-        
+
+        public static com.google.gwt.dev.protobuf.Parser<ViewerRequest> PARSER =
+            new com.google.gwt.dev.protobuf.AbstractParser<ViewerRequest>() {
+          public ViewerRequest parsePartialFrom(
+              com.google.gwt.dev.protobuf.CodedInputStream input,
+              com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+            return new ViewerRequest(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.gwt.dev.protobuf.Parser<ViewerRequest> getParserForType() {
+          return PARSER;
+        }
+
+        /**
+         * Protobuf enum {@code com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.RequestType}
+         *
+         * <pre>
+         * The different types of requests for a ViewerService
+         * </pre>
+         */
         public enum RequestType
             implements com.google.gwt.dev.protobuf.ProtocolMessageEnum {
+          /**
+           * <code>CAPABILITY_EXCHANGE = 0;</code>
+           */
           CAPABILITY_EXCHANGE(0, 0),
+          /**
+           * <code>ADD_LOG = 1;</code>
+           */
           ADD_LOG(1, 1),
+          /**
+           * <code>ADD_LOG_BRANCH = 2;</code>
+           */
           ADD_LOG_BRANCH(2, 2),
+          /**
+           * <code>ADD_LOG_ENTRY = 3;</code>
+           */
           ADD_LOG_ENTRY(3, 3),
+          /**
+           * <code>DISCONNECT_LOG = 4;</code>
+           */
           DISCONNECT_LOG(4, 4),
+          /**
+           * <code>INITIALIZE = 5;</code>
+           */
           INITIALIZE(5, 5),
           ;
-          
-          
+
+          /**
+           * <code>CAPABILITY_EXCHANGE = 0;</code>
+           */
+          public static final int CAPABILITY_EXCHANGE_VALUE = 0;
+          /**
+           * <code>ADD_LOG = 1;</code>
+           */
+          public static final int ADD_LOG_VALUE = 1;
+          /**
+           * <code>ADD_LOG_BRANCH = 2;</code>
+           */
+          public static final int ADD_LOG_BRANCH_VALUE = 2;
+          /**
+           * <code>ADD_LOG_ENTRY = 3;</code>
+           */
+          public static final int ADD_LOG_ENTRY_VALUE = 3;
+          /**
+           * <code>DISCONNECT_LOG = 4;</code>
+           */
+          public static final int DISCONNECT_LOG_VALUE = 4;
+          /**
+           * <code>INITIALIZE = 5;</code>
+           */
+          public static final int INITIALIZE_VALUE = 5;
+
+
           public final int getNumber() { return value; }
-          
+
           public static RequestType valueOf(int value) {
             switch (value) {
               case 0: return CAPABILITY_EXCHANGE;
@@ -235,7 +967,7 @@
               default: return null;
             }
           }
-          
+
           public static com.google.gwt.dev.protobuf.Internal.EnumLiteMap<RequestType>
               internalGetValueMap() {
             return internalValueMap;
@@ -244,10 +976,10 @@
               internalValueMap =
                 new com.google.gwt.dev.protobuf.Internal.EnumLiteMap<RequestType>() {
                   public RequestType findValueByNumber(int number) {
-                    return RequestType.valueOf(number)
-          ;        }
+                    return RequestType.valueOf(number);
+                  }
                 };
-          
+
           public final com.google.gwt.dev.protobuf.Descriptors.EnumValueDescriptor
               getValueDescriptor() {
             return getDescriptor().getValues().get(index);
@@ -260,10 +992,9 @@
               getDescriptor() {
             return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.getDescriptor().getEnumTypes().get(0);
           }
-          
-          private static final RequestType[] VALUES = {
-            CAPABILITY_EXCHANGE, ADD_LOG, ADD_LOG_BRANCH, ADD_LOG_ENTRY, DISCONNECT_LOG, INITIALIZE, 
-          };
+
+          private static final RequestType[] VALUES = values();
+
           public static RequestType valueOf(
               com.google.gwt.dev.protobuf.Descriptors.EnumValueDescriptor desc) {
             if (desc.getType() != getDescriptor()) {
@@ -272,195 +1003,289 @@
             }
             return VALUES[desc.getIndex()];
           }
+
           private final int index;
           private final int value;
+
           private RequestType(int index, int value) {
             this.index = index;
             this.value = value;
           }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
-          }
+
+          // @@protoc_insertion_point(enum_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.RequestType)
         }
-        
+
+        public interface CapabilityExchangeOrBuilder
+            extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+        }
+        /**
+         * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.CapabilityExchange}
+         *
+         * <pre>
+         * Request the capabilities of the ViewerService. No additional
+         * information is needed at this time.
+         * </pre>
+         */
         public static final class CapabilityExchange extends
-            com.google.gwt.dev.protobuf.GeneratedMessage {
+            com.google.gwt.dev.protobuf.GeneratedMessage
+            implements CapabilityExchangeOrBuilder {
           // Use CapabilityExchange.newBuilder() to construct.
-          private CapabilityExchange() {}
-          
-          private static final CapabilityExchange defaultInstance = new CapabilityExchange();
+          private CapabilityExchange(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+            super(builder);
+            this.unknownFields = builder.getUnknownFields();
+          }
+          private CapabilityExchange(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+          private static final CapabilityExchange defaultInstance;
           public static CapabilityExchange getDefaultInstance() {
             return defaultInstance;
           }
-          
+
           public CapabilityExchange getDefaultInstanceForType() {
             return defaultInstance;
           }
-          
+
+          private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+          @java.lang.Override
+          public final com.google.gwt.dev.protobuf.UnknownFieldSet
+              getUnknownFields() {
+            return this.unknownFields;
+          }
+          private CapabilityExchange(
+              com.google.gwt.dev.protobuf.CodedInputStream input,
+              com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+            initFields();
+            com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+                com.google.gwt.dev.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;
+                  }
+                }
+              }
+            } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+              throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+              throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+                  e.getMessage()).setUnfinishedMessage(this);
+            } finally {
+              this.unknownFields = unknownFields.build();
+              makeExtensionsImmutable();
+            }
+          }
           public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
               getDescriptor() {
             return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_CapabilityExchange_descriptor;
           }
-          
+
           protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
               internalGetFieldAccessorTable() {
-            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_CapabilityExchange_fieldAccessorTable;
+            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_CapabilityExchange_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.Builder.class);
           }
-          
+
+          public static com.google.gwt.dev.protobuf.Parser<CapabilityExchange> PARSER =
+              new com.google.gwt.dev.protobuf.AbstractParser<CapabilityExchange>() {
+            public CapabilityExchange parsePartialFrom(
+                com.google.gwt.dev.protobuf.CodedInputStream input,
+                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              return new CapabilityExchange(input, extensionRegistry);
+            }
+          };
+
+          @java.lang.Override
+          public com.google.gwt.dev.protobuf.Parser<CapabilityExchange> getParserForType() {
+            return PARSER;
+          }
+
+          private void initFields() {
+          }
+          private byte memoizedIsInitialized = -1;
           public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized != -1) return isInitialized == 1;
+
+            memoizedIsInitialized = 1;
             return true;
           }
-          
+
           public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
                               throws java.io.IOException {
+            getSerializedSize();
             getUnknownFields().writeTo(output);
           }
-          
+
           private int memoizedSerializedSize = -1;
           public int getSerializedSize() {
             int size = memoizedSerializedSize;
             if (size != -1) return size;
-          
+
             size = 0;
             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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange parseFrom(
               com.google.gwt.dev.protobuf.ByteString data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange parseFrom(
               com.google.gwt.dev.protobuf.ByteString data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange parseFrom(byte[] data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange parseFrom(
               byte[] data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange parseFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange parseFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange parseDelimitedFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input).buildParsed();
+            return PARSER.parseDelimitedFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange parseDelimitedFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseDelimitedFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
-          
+
           public static Builder newBuilder() { return Builder.create(); }
           public Builder newBuilderForType() { return newBuilder(); }
           public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange prototype) {
             return newBuilder().mergeFrom(prototype);
           }
           public Builder toBuilder() { return newBuilder(this); }
-          
+
+          @java.lang.Override
+          protected Builder newBuilderForType(
+              com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+          }
+          /**
+           * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.CapabilityExchange}
+           *
+           * <pre>
+           * Request the capabilities of the ViewerService. No additional
+           * information is needed at this time.
+           * </pre>
+           */
           public static final class Builder extends
-              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange result;
-            
+              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+             implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchangeOrBuilder {
+            public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+                getDescriptor() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_CapabilityExchange_descriptor;
+            }
+
+            protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+                internalGetFieldAccessorTable() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_CapabilityExchange_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.Builder.class);
+            }
+
             // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.newBuilder()
-            private Builder() {}
-            
-            private static Builder create() {
-              Builder builder = new Builder();
-              builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange();
-              return builder;
+            private Builder() {
+              maybeForceBuilderInitialization();
             }
-            
-            protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange internalGetResult() {
-              return result;
+
+            private Builder(
+                com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+              super(parent);
+              maybeForceBuilderInitialization();
             }
-            
-            public Builder clear() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "Cannot call clear() after build().");
+            private void maybeForceBuilderInitialization() {
+              if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
               }
-              result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange();
+            }
+            private static Builder create() {
+              return new Builder();
+            }
+
+            public Builder clear() {
+              super.clear();
               return this;
             }
-            
+
             public Builder clone() {
-              return create().mergeFrom(result);
+              return create().mergeFrom(buildPartial());
             }
-            
+
             public com.google.gwt.dev.protobuf.Descriptors.Descriptor
                 getDescriptorForType() {
-              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.getDescriptor();
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_CapabilityExchange_descriptor;
             }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange getDefaultInstanceForType() {
               return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.getDefaultInstance();
             }
-            
-            public boolean isInitialized() {
-              return result.isInitialized();
-            }
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange build() {
-              if (result != null && !isInitialized()) {
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange result = buildPartial();
+              if (!result.isInitialized()) {
                 throw newUninitializedMessageException(result);
               }
-              return buildPartial();
+              return result;
             }
-            
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange buildParsed()
-                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              if (!isInitialized()) {
-                throw newUninitializedMessageException(
-                  result).asInvalidProtocolBufferException();
-              }
-              return buildPartial();
-            }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange buildPartial() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "build() has already been called on this Builder.");
-              }
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange returnMe = result;
-              result = null;
-              return returnMe;
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange(this);
+              onBuilt();
+              return result;
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
               if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange) {
                 return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange)other);
@@ -469,83 +1294,285 @@
                 return this;
               }
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange other) {
               if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.getDefaultInstance()) return this;
               this.mergeUnknownFields(other.getUnknownFields());
               return this;
             }
-            
+
+            public final boolean isInitialized() {
+              return true;
+            }
+
             public Builder mergeFrom(
                 com.google.gwt.dev.protobuf.CodedInputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws java.io.IOException {
-              com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-                com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-                  this.getUnknownFields());
-              while (true) {
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange parsedMessage = null;
+              try {
+                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+              } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+                parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange) e.getUnfinishedMessage();
+                throw e;
+              } finally {
+                if (parsedMessage != null) {
+                  mergeFrom(parsedMessage);
+                }
+              }
+              return this;
+            }
+
+            // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.CapabilityExchange)
+          }
+
+          static {
+            defaultInstance = new CapabilityExchange(true);
+            defaultInstance.initFields();
+          }
+
+          // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.CapabilityExchange)
+        }
+
+        public interface AddLogOrBuilder
+            extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+
+          // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.LogType type = 1;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.LogType type = 1;</code>
+           */
+          boolean hasType();
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.LogType type = 1;</code>
+           */
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.LogType getType();
+
+          // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ModuleLog moduleLog = 2;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ModuleLog moduleLog = 2;</code>
+           */
+          boolean hasModuleLog();
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ModuleLog moduleLog = 2;</code>
+           */
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog getModuleLog();
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ModuleLog moduleLog = 2;</code>
+           */
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLogOrBuilder getModuleLogOrBuilder();
+
+          // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ServerLog serverLog = 3;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ServerLog serverLog = 3;</code>
+           */
+          boolean hasServerLog();
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ServerLog serverLog = 3;</code>
+           */
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog getServerLog();
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ServerLog serverLog = 3;</code>
+           */
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLogOrBuilder getServerLogOrBuilder();
+
+          // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.MainLog mainLog = 4;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.MainLog mainLog = 4;</code>
+           */
+          boolean hasMainLog();
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.MainLog mainLog = 4;</code>
+           */
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog getMainLog();
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.MainLog mainLog = 4;</code>
+           */
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLogOrBuilder getMainLogOrBuilder();
+        }
+        /**
+         * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog}
+         *
+         * <pre>
+         * Add a log message to the view
+         * </pre>
+         */
+        public static final class AddLog extends
+            com.google.gwt.dev.protobuf.GeneratedMessage
+            implements AddLogOrBuilder {
+          // Use AddLog.newBuilder() to construct.
+          private AddLog(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+            super(builder);
+            this.unknownFields = builder.getUnknownFields();
+          }
+          private AddLog(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+          private static final AddLog defaultInstance;
+          public static AddLog getDefaultInstance() {
+            return defaultInstance;
+          }
+
+          public AddLog getDefaultInstanceForType() {
+            return defaultInstance;
+          }
+
+          private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+          @java.lang.Override
+          public final com.google.gwt.dev.protobuf.UnknownFieldSet
+              getUnknownFields() {
+            return this.unknownFields;
+          }
+          private AddLog(
+              com.google.gwt.dev.protobuf.CodedInputStream input,
+              com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+            initFields();
+            int mutable_bitField0_ = 0;
+            com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+                com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder();
+            try {
+              boolean done = false;
+              while (!done) {
                 int tag = input.readTag();
                 switch (tag) {
                   case 0:
-                    this.setUnknownFields(unknownFields.build());
-                    return this;
+                    done = true;
+                    break;
                   default: {
                     if (!parseUnknownField(input, unknownFields,
                                            extensionRegistry, tag)) {
-                      this.setUnknownFields(unknownFields.build());
-                      return this;
+                      done = true;
                     }
                     break;
                   }
+                  case 8: {
+                    int rawValue = input.readEnum();
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.LogType value = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.LogType.valueOf(rawValue);
+                    if (value == null) {
+                      unknownFields.mergeVarintField(1, rawValue);
+                    } else {
+                      bitField0_ |= 0x00000001;
+                      type_ = value;
+                    }
+                    break;
+                  }
+                  case 18: {
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.Builder subBuilder = null;
+                    if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                      subBuilder = moduleLog_.toBuilder();
+                    }
+                    moduleLog_ = input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.PARSER, extensionRegistry);
+                    if (subBuilder != null) {
+                      subBuilder.mergeFrom(moduleLog_);
+                      moduleLog_ = subBuilder.buildPartial();
+                    }
+                    bitField0_ |= 0x00000002;
+                    break;
+                  }
+                  case 26: {
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.Builder subBuilder = null;
+                    if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                      subBuilder = serverLog_.toBuilder();
+                    }
+                    serverLog_ = input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.PARSER, extensionRegistry);
+                    if (subBuilder != null) {
+                      subBuilder.mergeFrom(serverLog_);
+                      serverLog_ = subBuilder.buildPartial();
+                    }
+                    bitField0_ |= 0x00000004;
+                    break;
+                  }
+                  case 34: {
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.Builder subBuilder = null;
+                    if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                      subBuilder = mainLog_.toBuilder();
+                    }
+                    mainLog_ = input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.PARSER, extensionRegistry);
+                    if (subBuilder != null) {
+                      subBuilder.mergeFrom(mainLog_);
+                      mainLog_ = subBuilder.buildPartial();
+                    }
+                    bitField0_ |= 0x00000008;
+                    break;
+                  }
                 }
               }
+            } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+              throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+              throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+                  e.getMessage()).setUnfinishedMessage(this);
+            } finally {
+              this.unknownFields = unknownFields.build();
+              makeExtensionsImmutable();
             }
-            
           }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
-          }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-          }
-        }
-        
-        public static final class AddLog extends
-            com.google.gwt.dev.protobuf.GeneratedMessage {
-          // Use AddLog.newBuilder() to construct.
-          private AddLog() {}
-          
-          private static final AddLog defaultInstance = new AddLog();
-          public static AddLog getDefaultInstance() {
-            return defaultInstance;
-          }
-          
-          public AddLog getDefaultInstanceForType() {
-            return defaultInstance;
-          }
-          
           public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
               getDescriptor() {
             return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_descriptor;
           }
-          
+
           protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
               internalGetFieldAccessorTable() {
-            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_fieldAccessorTable;
+            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.Builder.class);
           }
-          
+
+          public static com.google.gwt.dev.protobuf.Parser<AddLog> PARSER =
+              new com.google.gwt.dev.protobuf.AbstractParser<AddLog>() {
+            public AddLog parsePartialFrom(
+                com.google.gwt.dev.protobuf.CodedInputStream input,
+                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              return new AddLog(input, extensionRegistry);
+            }
+          };
+
+          @java.lang.Override
+          public com.google.gwt.dev.protobuf.Parser<AddLog> getParserForType() {
+            return PARSER;
+          }
+
+          /**
+           * Protobuf enum {@code com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.LogType}
+           *
+           * <pre>
+           * The type of log - either a web server log, a module log, or 
+           * the main log      
+           * </pre>
+           */
           public enum LogType
               implements com.google.gwt.dev.protobuf.ProtocolMessageEnum {
+            /**
+             * <code>MAIN = 0;</code>
+             */
             MAIN(0, 0),
+            /**
+             * <code>MODULE = 1;</code>
+             */
             MODULE(1, 1),
+            /**
+             * <code>WEB_SERVER = 2;</code>
+             */
             WEB_SERVER(2, 2),
             ;
-            
-            
+
+            /**
+             * <code>MAIN = 0;</code>
+             */
+            public static final int MAIN_VALUE = 0;
+            /**
+             * <code>MODULE = 1;</code>
+             */
+            public static final int MODULE_VALUE = 1;
+            /**
+             * <code>WEB_SERVER = 2;</code>
+             */
+            public static final int WEB_SERVER_VALUE = 2;
+
+
             public final int getNumber() { return value; }
-            
+
             public static LogType valueOf(int value) {
               switch (value) {
                 case 0: return MAIN;
@@ -554,7 +1581,7 @@
                 default: return null;
               }
             }
-            
+
             public static com.google.gwt.dev.protobuf.Internal.EnumLiteMap<LogType>
                 internalGetValueMap() {
               return internalValueMap;
@@ -563,10 +1590,10 @@
                 internalValueMap =
                   new com.google.gwt.dev.protobuf.Internal.EnumLiteMap<LogType>() {
                     public LogType findValueByNumber(int number) {
-                      return LogType.valueOf(number)
-            ;        }
+                      return LogType.valueOf(number);
+                    }
                   };
-            
+
             public final com.google.gwt.dev.protobuf.Descriptors.EnumValueDescriptor
                 getValueDescriptor() {
               return getDescriptor().getValues().get(index);
@@ -579,10 +1606,9 @@
                 getDescriptor() {
               return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.getDescriptor().getEnumTypes().get(0);
             }
-            
-            private static final LogType[] VALUES = {
-              MAIN, MODULE, WEB_SERVER, 
-            };
+
+            private static final LogType[] VALUES = values();
+
             public static LogType valueOf(
                 com.google.gwt.dev.protobuf.Descriptors.EnumValueDescriptor desc) {
               if (desc.getType() != getDescriptor()) {
@@ -591,294 +1617,803 @@
               }
               return VALUES[desc.getIndex()];
             }
+
             private final int index;
             private final int value;
+
             private LogType(int index, int value) {
               this.index = index;
               this.value = value;
             }
-            
-            static {
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
-            }
+
+            // @@protoc_insertion_point(enum_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.LogType)
           }
-          
+
+          public interface ModuleLogOrBuilder
+              extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+
+            // required string name = 1;
+            /**
+             * <code>required string name = 1;</code>
+             */
+            boolean hasName();
+            /**
+             * <code>required string name = 1;</code>
+             */
+            java.lang.String getName();
+            /**
+             * <code>required string name = 1;</code>
+             */
+            com.google.gwt.dev.protobuf.ByteString
+                getNameBytes();
+
+            // optional bytes icon = 2;
+            /**
+             * <code>optional bytes icon = 2;</code>
+             */
+            boolean hasIcon();
+            /**
+             * <code>optional bytes icon = 2;</code>
+             */
+            com.google.gwt.dev.protobuf.ByteString getIcon();
+
+            // optional string sessionKey = 3;
+            /**
+             * <code>optional string sessionKey = 3;</code>
+             */
+            boolean hasSessionKey();
+            /**
+             * <code>optional string sessionKey = 3;</code>
+             */
+            java.lang.String getSessionKey();
+            /**
+             * <code>optional string sessionKey = 3;</code>
+             */
+            com.google.gwt.dev.protobuf.ByteString
+                getSessionKeyBytes();
+
+            // optional string userAgent = 4;
+            /**
+             * <code>optional string userAgent = 4;</code>
+             */
+            boolean hasUserAgent();
+            /**
+             * <code>optional string userAgent = 4;</code>
+             */
+            java.lang.String getUserAgent();
+            /**
+             * <code>optional string userAgent = 4;</code>
+             */
+            com.google.gwt.dev.protobuf.ByteString
+                getUserAgentBytes();
+
+            // optional string url = 5;
+            /**
+             * <code>optional string url = 5;</code>
+             */
+            boolean hasUrl();
+            /**
+             * <code>optional string url = 5;</code>
+             */
+            java.lang.String getUrl();
+            /**
+             * <code>optional string url = 5;</code>
+             */
+            com.google.gwt.dev.protobuf.ByteString
+                getUrlBytes();
+
+            // optional string tabKey = 6;
+            /**
+             * <code>optional string tabKey = 6;</code>
+             */
+            boolean hasTabKey();
+            /**
+             * <code>optional string tabKey = 6;</code>
+             */
+            java.lang.String getTabKey();
+            /**
+             * <code>optional string tabKey = 6;</code>
+             */
+            com.google.gwt.dev.protobuf.ByteString
+                getTabKeyBytes();
+
+            // optional string remoteHost = 7;
+            /**
+             * <code>optional string remoteHost = 7;</code>
+             */
+            boolean hasRemoteHost();
+            /**
+             * <code>optional string remoteHost = 7;</code>
+             */
+            java.lang.String getRemoteHost();
+            /**
+             * <code>optional string remoteHost = 7;</code>
+             */
+            com.google.gwt.dev.protobuf.ByteString
+                getRemoteHostBytes();
+          }
+          /**
+           * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ModuleLog}
+           *
+           * <pre>
+           * Information needed for creating a Module Log
+           * </pre>
+           */
           public static final class ModuleLog extends
-              com.google.gwt.dev.protobuf.GeneratedMessage {
+              com.google.gwt.dev.protobuf.GeneratedMessage
+              implements ModuleLogOrBuilder {
             // Use ModuleLog.newBuilder() to construct.
-            private ModuleLog() {}
-            
-            private static final ModuleLog defaultInstance = new ModuleLog();
+            private ModuleLog(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+              super(builder);
+              this.unknownFields = builder.getUnknownFields();
+            }
+            private ModuleLog(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+            private static final ModuleLog defaultInstance;
             public static ModuleLog getDefaultInstance() {
               return defaultInstance;
             }
-            
+
             public ModuleLog getDefaultInstanceForType() {
               return defaultInstance;
             }
-            
+
+            private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+            @java.lang.Override
+            public final com.google.gwt.dev.protobuf.UnknownFieldSet
+                getUnknownFields() {
+              return this.unknownFields;
+            }
+            private ModuleLog(
+                com.google.gwt.dev.protobuf.CodedInputStream input,
+                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              initFields();
+              int mutable_bitField0_ = 0;
+              com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+                  com.google.gwt.dev.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;
+                      name_ = input.readBytes();
+                      break;
+                    }
+                    case 18: {
+                      bitField0_ |= 0x00000002;
+                      icon_ = input.readBytes();
+                      break;
+                    }
+                    case 26: {
+                      bitField0_ |= 0x00000004;
+                      sessionKey_ = input.readBytes();
+                      break;
+                    }
+                    case 34: {
+                      bitField0_ |= 0x00000008;
+                      userAgent_ = input.readBytes();
+                      break;
+                    }
+                    case 42: {
+                      bitField0_ |= 0x00000010;
+                      url_ = input.readBytes();
+                      break;
+                    }
+                    case 50: {
+                      bitField0_ |= 0x00000020;
+                      tabKey_ = input.readBytes();
+                      break;
+                    }
+                    case 58: {
+                      bitField0_ |= 0x00000040;
+                      remoteHost_ = input.readBytes();
+                      break;
+                    }
+                  }
+                }
+              } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+              } catch (java.io.IOException e) {
+                throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+                    e.getMessage()).setUnfinishedMessage(this);
+              } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+              }
+            }
             public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
                 getDescriptor() {
               return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_ModuleLog_descriptor;
             }
-            
+
             protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
                 internalGetFieldAccessorTable() {
-              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_ModuleLog_fieldAccessorTable;
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_ModuleLog_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.Builder.class);
             }
-            
+
+            public static com.google.gwt.dev.protobuf.Parser<ModuleLog> PARSER =
+                new com.google.gwt.dev.protobuf.AbstractParser<ModuleLog>() {
+              public ModuleLog parsePartialFrom(
+                  com.google.gwt.dev.protobuf.CodedInputStream input,
+                  com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                  throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+                return new ModuleLog(input, extensionRegistry);
+              }
+            };
+
+            @java.lang.Override
+            public com.google.gwt.dev.protobuf.Parser<ModuleLog> getParserForType() {
+              return PARSER;
+            }
+
+            private int bitField0_;
             // required string name = 1;
             public static final int NAME_FIELD_NUMBER = 1;
-            private boolean hasName;
-            private java.lang.String name_ = "";
-            public boolean hasName() { return hasName; }
-            public java.lang.String getName() { return name_; }
-            
+            private java.lang.Object name_;
+            /**
+             * <code>required string name = 1;</code>
+             */
+            public boolean hasName() {
+              return ((bitField0_ & 0x00000001) == 0x00000001);
+            }
+            /**
+             * <code>required string name = 1;</code>
+             */
+            public java.lang.String getName() {
+              java.lang.Object ref = name_;
+              if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+              } else {
+                com.google.gwt.dev.protobuf.ByteString bs = 
+                    (com.google.gwt.dev.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                if (bs.isValidUtf8()) {
+                  name_ = s;
+                }
+                return s;
+              }
+            }
+            /**
+             * <code>required string name = 1;</code>
+             */
+            public com.google.gwt.dev.protobuf.ByteString
+                getNameBytes() {
+              java.lang.Object ref = name_;
+              if (ref instanceof java.lang.String) {
+                com.google.gwt.dev.protobuf.ByteString b = 
+                    com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                        (java.lang.String) ref);
+                name_ = b;
+                return b;
+              } else {
+                return (com.google.gwt.dev.protobuf.ByteString) ref;
+              }
+            }
+
             // optional bytes icon = 2;
             public static final int ICON_FIELD_NUMBER = 2;
-            private boolean hasIcon;
-            private com.google.gwt.dev.protobuf.ByteString icon_ = com.google.gwt.dev.protobuf.ByteString.EMPTY;
-            public boolean hasIcon() { return hasIcon; }
-            public com.google.gwt.dev.protobuf.ByteString getIcon() { return icon_; }
-            
+            private com.google.gwt.dev.protobuf.ByteString icon_;
+            /**
+             * <code>optional bytes icon = 2;</code>
+             */
+            public boolean hasIcon() {
+              return ((bitField0_ & 0x00000002) == 0x00000002);
+            }
+            /**
+             * <code>optional bytes icon = 2;</code>
+             */
+            public com.google.gwt.dev.protobuf.ByteString getIcon() {
+              return icon_;
+            }
+
             // optional string sessionKey = 3;
             public static final int SESSIONKEY_FIELD_NUMBER = 3;
-            private boolean hasSessionKey;
-            private java.lang.String sessionKey_ = "";
-            public boolean hasSessionKey() { return hasSessionKey; }
-            public java.lang.String getSessionKey() { return sessionKey_; }
-            
+            private java.lang.Object sessionKey_;
+            /**
+             * <code>optional string sessionKey = 3;</code>
+             */
+            public boolean hasSessionKey() {
+              return ((bitField0_ & 0x00000004) == 0x00000004);
+            }
+            /**
+             * <code>optional string sessionKey = 3;</code>
+             */
+            public java.lang.String getSessionKey() {
+              java.lang.Object ref = sessionKey_;
+              if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+              } else {
+                com.google.gwt.dev.protobuf.ByteString bs = 
+                    (com.google.gwt.dev.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                if (bs.isValidUtf8()) {
+                  sessionKey_ = s;
+                }
+                return s;
+              }
+            }
+            /**
+             * <code>optional string sessionKey = 3;</code>
+             */
+            public com.google.gwt.dev.protobuf.ByteString
+                getSessionKeyBytes() {
+              java.lang.Object ref = sessionKey_;
+              if (ref instanceof java.lang.String) {
+                com.google.gwt.dev.protobuf.ByteString b = 
+                    com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                        (java.lang.String) ref);
+                sessionKey_ = b;
+                return b;
+              } else {
+                return (com.google.gwt.dev.protobuf.ByteString) ref;
+              }
+            }
+
             // optional string userAgent = 4;
             public static final int USERAGENT_FIELD_NUMBER = 4;
-            private boolean hasUserAgent;
-            private java.lang.String userAgent_ = "";
-            public boolean hasUserAgent() { return hasUserAgent; }
-            public java.lang.String getUserAgent() { return userAgent_; }
-            
+            private java.lang.Object userAgent_;
+            /**
+             * <code>optional string userAgent = 4;</code>
+             */
+            public boolean hasUserAgent() {
+              return ((bitField0_ & 0x00000008) == 0x00000008);
+            }
+            /**
+             * <code>optional string userAgent = 4;</code>
+             */
+            public java.lang.String getUserAgent() {
+              java.lang.Object ref = userAgent_;
+              if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+              } else {
+                com.google.gwt.dev.protobuf.ByteString bs = 
+                    (com.google.gwt.dev.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                if (bs.isValidUtf8()) {
+                  userAgent_ = s;
+                }
+                return s;
+              }
+            }
+            /**
+             * <code>optional string userAgent = 4;</code>
+             */
+            public com.google.gwt.dev.protobuf.ByteString
+                getUserAgentBytes() {
+              java.lang.Object ref = userAgent_;
+              if (ref instanceof java.lang.String) {
+                com.google.gwt.dev.protobuf.ByteString b = 
+                    com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                        (java.lang.String) ref);
+                userAgent_ = b;
+                return b;
+              } else {
+                return (com.google.gwt.dev.protobuf.ByteString) ref;
+              }
+            }
+
             // optional string url = 5;
             public static final int URL_FIELD_NUMBER = 5;
-            private boolean hasUrl;
-            private java.lang.String url_ = "";
-            public boolean hasUrl() { return hasUrl; }
-            public java.lang.String getUrl() { return url_; }
-            
+            private java.lang.Object url_;
+            /**
+             * <code>optional string url = 5;</code>
+             */
+            public boolean hasUrl() {
+              return ((bitField0_ & 0x00000010) == 0x00000010);
+            }
+            /**
+             * <code>optional string url = 5;</code>
+             */
+            public java.lang.String getUrl() {
+              java.lang.Object ref = url_;
+              if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+              } else {
+                com.google.gwt.dev.protobuf.ByteString bs = 
+                    (com.google.gwt.dev.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                if (bs.isValidUtf8()) {
+                  url_ = s;
+                }
+                return s;
+              }
+            }
+            /**
+             * <code>optional string url = 5;</code>
+             */
+            public com.google.gwt.dev.protobuf.ByteString
+                getUrlBytes() {
+              java.lang.Object ref = url_;
+              if (ref instanceof java.lang.String) {
+                com.google.gwt.dev.protobuf.ByteString b = 
+                    com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                        (java.lang.String) ref);
+                url_ = b;
+                return b;
+              } else {
+                return (com.google.gwt.dev.protobuf.ByteString) ref;
+              }
+            }
+
             // optional string tabKey = 6;
             public static final int TABKEY_FIELD_NUMBER = 6;
-            private boolean hasTabKey;
-            private java.lang.String tabKey_ = "";
-            public boolean hasTabKey() { return hasTabKey; }
-            public java.lang.String getTabKey() { return tabKey_; }
-            
+            private java.lang.Object tabKey_;
+            /**
+             * <code>optional string tabKey = 6;</code>
+             */
+            public boolean hasTabKey() {
+              return ((bitField0_ & 0x00000020) == 0x00000020);
+            }
+            /**
+             * <code>optional string tabKey = 6;</code>
+             */
+            public java.lang.String getTabKey() {
+              java.lang.Object ref = tabKey_;
+              if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+              } else {
+                com.google.gwt.dev.protobuf.ByteString bs = 
+                    (com.google.gwt.dev.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                if (bs.isValidUtf8()) {
+                  tabKey_ = s;
+                }
+                return s;
+              }
+            }
+            /**
+             * <code>optional string tabKey = 6;</code>
+             */
+            public com.google.gwt.dev.protobuf.ByteString
+                getTabKeyBytes() {
+              java.lang.Object ref = tabKey_;
+              if (ref instanceof java.lang.String) {
+                com.google.gwt.dev.protobuf.ByteString b = 
+                    com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                        (java.lang.String) ref);
+                tabKey_ = b;
+                return b;
+              } else {
+                return (com.google.gwt.dev.protobuf.ByteString) ref;
+              }
+            }
+
             // optional string remoteHost = 7;
             public static final int REMOTEHOST_FIELD_NUMBER = 7;
-            private boolean hasRemoteHost;
-            private java.lang.String remoteHost_ = "";
-            public boolean hasRemoteHost() { return hasRemoteHost; }
-            public java.lang.String getRemoteHost() { return remoteHost_; }
-            
+            private java.lang.Object remoteHost_;
+            /**
+             * <code>optional string remoteHost = 7;</code>
+             */
+            public boolean hasRemoteHost() {
+              return ((bitField0_ & 0x00000040) == 0x00000040);
+            }
+            /**
+             * <code>optional string remoteHost = 7;</code>
+             */
+            public java.lang.String getRemoteHost() {
+              java.lang.Object ref = remoteHost_;
+              if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+              } else {
+                com.google.gwt.dev.protobuf.ByteString bs = 
+                    (com.google.gwt.dev.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                if (bs.isValidUtf8()) {
+                  remoteHost_ = s;
+                }
+                return s;
+              }
+            }
+            /**
+             * <code>optional string remoteHost = 7;</code>
+             */
+            public com.google.gwt.dev.protobuf.ByteString
+                getRemoteHostBytes() {
+              java.lang.Object ref = remoteHost_;
+              if (ref instanceof java.lang.String) {
+                com.google.gwt.dev.protobuf.ByteString b = 
+                    com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                        (java.lang.String) ref);
+                remoteHost_ = b;
+                return b;
+              } else {
+                return (com.google.gwt.dev.protobuf.ByteString) ref;
+              }
+            }
+
+            private void initFields() {
+              name_ = "";
+              icon_ = com.google.gwt.dev.protobuf.ByteString.EMPTY;
+              sessionKey_ = "";
+              userAgent_ = "";
+              url_ = "";
+              tabKey_ = "";
+              remoteHost_ = "";
+            }
+            private byte memoizedIsInitialized = -1;
             public final boolean isInitialized() {
-              if (!hasName) return false;
+              byte isInitialized = memoizedIsInitialized;
+              if (isInitialized != -1) return isInitialized == 1;
+
+              if (!hasName()) {
+                memoizedIsInitialized = 0;
+                return false;
+              }
+              memoizedIsInitialized = 1;
               return true;
             }
-            
+
             public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
                                 throws java.io.IOException {
-              if (hasName()) {
-                output.writeString(1, getName());
+              getSerializedSize();
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                output.writeBytes(1, getNameBytes());
               }
-              if (hasIcon()) {
-                output.writeBytes(2, getIcon());
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                output.writeBytes(2, icon_);
               }
-              if (hasSessionKey()) {
-                output.writeString(3, getSessionKey());
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                output.writeBytes(3, getSessionKeyBytes());
               }
-              if (hasUserAgent()) {
-                output.writeString(4, getUserAgent());
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                output.writeBytes(4, getUserAgentBytes());
               }
-              if (hasUrl()) {
-                output.writeString(5, getUrl());
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                output.writeBytes(5, getUrlBytes());
               }
-              if (hasTabKey()) {
-                output.writeString(6, getTabKey());
+              if (((bitField0_ & 0x00000020) == 0x00000020)) {
+                output.writeBytes(6, getTabKeyBytes());
               }
-              if (hasRemoteHost()) {
-                output.writeString(7, getRemoteHost());
+              if (((bitField0_ & 0x00000040) == 0x00000040)) {
+                output.writeBytes(7, getRemoteHostBytes());
               }
               getUnknownFields().writeTo(output);
             }
-            
+
             private int memoizedSerializedSize = -1;
             public int getSerializedSize() {
               int size = memoizedSerializedSize;
               if (size != -1) return size;
-            
+
               size = 0;
-              if (hasName()) {
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                 size += com.google.gwt.dev.protobuf.CodedOutputStream
-                  .computeStringSize(1, getName());
+                  .computeBytesSize(1, getNameBytes());
               }
-              if (hasIcon()) {
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                 size += com.google.gwt.dev.protobuf.CodedOutputStream
-                  .computeBytesSize(2, getIcon());
+                  .computeBytesSize(2, icon_);
               }
-              if (hasSessionKey()) {
+              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                 size += com.google.gwt.dev.protobuf.CodedOutputStream
-                  .computeStringSize(3, getSessionKey());
+                  .computeBytesSize(3, getSessionKeyBytes());
               }
-              if (hasUserAgent()) {
+              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                 size += com.google.gwt.dev.protobuf.CodedOutputStream
-                  .computeStringSize(4, getUserAgent());
+                  .computeBytesSize(4, getUserAgentBytes());
               }
-              if (hasUrl()) {
+              if (((bitField0_ & 0x00000010) == 0x00000010)) {
                 size += com.google.gwt.dev.protobuf.CodedOutputStream
-                  .computeStringSize(5, getUrl());
+                  .computeBytesSize(5, getUrlBytes());
               }
-              if (hasTabKey()) {
+              if (((bitField0_ & 0x00000020) == 0x00000020)) {
                 size += com.google.gwt.dev.protobuf.CodedOutputStream
-                  .computeStringSize(6, getTabKey());
+                  .computeBytesSize(6, getTabKeyBytes());
               }
-              if (hasRemoteHost()) {
+              if (((bitField0_ & 0x00000040) == 0x00000040)) {
                 size += com.google.gwt.dev.protobuf.CodedOutputStream
-                  .computeStringSize(7, getRemoteHost());
+                  .computeBytesSize(7, getRemoteHostBytes());
               }
               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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog parseFrom(
                 com.google.gwt.dev.protobuf.ByteString data)
                 throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              return newBuilder().mergeFrom(data).buildParsed();
+              return PARSER.parseFrom(data);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog parseFrom(
                 com.google.gwt.dev.protobuf.ByteString data,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              return newBuilder().mergeFrom(data, extensionRegistry)
-                       .buildParsed();
+              return PARSER.parseFrom(data, extensionRegistry);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog parseFrom(byte[] data)
                 throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              return newBuilder().mergeFrom(data).buildParsed();
+              return PARSER.parseFrom(data);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog parseFrom(
                 byte[] data,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              return newBuilder().mergeFrom(data, extensionRegistry)
-                       .buildParsed();
+              return PARSER.parseFrom(data, extensionRegistry);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog parseFrom(java.io.InputStream input)
                 throws java.io.IOException {
-              return newBuilder().mergeFrom(input).buildParsed();
+              return PARSER.parseFrom(input);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog parseFrom(
                 java.io.InputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws java.io.IOException {
-              return newBuilder().mergeFrom(input, extensionRegistry)
-                       .buildParsed();
+              return PARSER.parseFrom(input, extensionRegistry);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog parseDelimitedFrom(java.io.InputStream input)
                 throws java.io.IOException {
-              return newBuilder().mergeDelimitedFrom(input).buildParsed();
+              return PARSER.parseDelimitedFrom(input);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog parseDelimitedFrom(
                 java.io.InputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws java.io.IOException {
-              return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                       .buildParsed();
+              return PARSER.parseDelimitedFrom(input, extensionRegistry);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog parseFrom(
                 com.google.gwt.dev.protobuf.CodedInputStream input)
                 throws java.io.IOException {
-              return newBuilder().mergeFrom(input).buildParsed();
+              return PARSER.parseFrom(input);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog parseFrom(
                 com.google.gwt.dev.protobuf.CodedInputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws java.io.IOException {
-              return newBuilder().mergeFrom(input, extensionRegistry)
-                       .buildParsed();
+              return PARSER.parseFrom(input, extensionRegistry);
             }
-            
+
             public static Builder newBuilder() { return Builder.create(); }
             public Builder newBuilderForType() { return newBuilder(); }
             public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog prototype) {
               return newBuilder().mergeFrom(prototype);
             }
             public Builder toBuilder() { return newBuilder(this); }
-            
+
+            @java.lang.Override
+            protected Builder newBuilderForType(
+                com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+              Builder builder = new Builder(parent);
+              return builder;
+            }
+            /**
+             * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ModuleLog}
+             *
+             * <pre>
+             * Information needed for creating a Module Log
+             * </pre>
+             */
             public static final class Builder extends
-                com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-              private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog result;
-              
+                com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+               implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLogOrBuilder {
+              public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+                  getDescriptor() {
+                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_ModuleLog_descriptor;
+              }
+
+              protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+                  internalGetFieldAccessorTable() {
+                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_ModuleLog_fieldAccessorTable
+                    .ensureFieldAccessorsInitialized(
+                        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.Builder.class);
+              }
+
               // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.newBuilder()
-              private Builder() {}
-              
-              private static Builder create() {
-                Builder builder = new Builder();
-                builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog();
-                return builder;
+              private Builder() {
+                maybeForceBuilderInitialization();
               }
-              
-              protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog internalGetResult() {
-                return result;
+
+              private Builder(
+                  com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+                super(parent);
+                maybeForceBuilderInitialization();
               }
-              
-              public Builder clear() {
-                if (result == null) {
-                  throw new IllegalStateException(
-                    "Cannot call clear() after build().");
+              private void maybeForceBuilderInitialization() {
+                if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
                 }
-                result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog();
+              }
+              private static Builder create() {
+                return new Builder();
+              }
+
+              public Builder clear() {
+                super.clear();
+                name_ = "";
+                bitField0_ = (bitField0_ & ~0x00000001);
+                icon_ = com.google.gwt.dev.protobuf.ByteString.EMPTY;
+                bitField0_ = (bitField0_ & ~0x00000002);
+                sessionKey_ = "";
+                bitField0_ = (bitField0_ & ~0x00000004);
+                userAgent_ = "";
+                bitField0_ = (bitField0_ & ~0x00000008);
+                url_ = "";
+                bitField0_ = (bitField0_ & ~0x00000010);
+                tabKey_ = "";
+                bitField0_ = (bitField0_ & ~0x00000020);
+                remoteHost_ = "";
+                bitField0_ = (bitField0_ & ~0x00000040);
                 return this;
               }
-              
+
               public Builder clone() {
-                return create().mergeFrom(result);
+                return create().mergeFrom(buildPartial());
               }
-              
+
               public com.google.gwt.dev.protobuf.Descriptors.Descriptor
                   getDescriptorForType() {
-                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.getDescriptor();
+                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_ModuleLog_descriptor;
               }
-              
+
               public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog getDefaultInstanceForType() {
                 return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.getDefaultInstance();
               }
-              
-              public boolean isInitialized() {
-                return result.isInitialized();
-              }
+
               public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog build() {
-                if (result != null && !isInitialized()) {
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog result = buildPartial();
+                if (!result.isInitialized()) {
                   throw newUninitializedMessageException(result);
                 }
-                return buildPartial();
+                return result;
               }
-              
-              private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog buildParsed()
-                  throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-                if (!isInitialized()) {
-                  throw newUninitializedMessageException(
-                    result).asInvalidProtocolBufferException();
-                }
-                return buildPartial();
-              }
-              
+
               public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog buildPartial() {
-                if (result == null) {
-                  throw new IllegalStateException(
-                    "build() has already been called on this Builder.");
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog(this);
+                int from_bitField0_ = bitField0_;
+                int to_bitField0_ = 0;
+                if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+                  to_bitField0_ |= 0x00000001;
                 }
-                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog returnMe = result;
-                result = null;
-                return returnMe;
+                result.name_ = name_;
+                if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+                  to_bitField0_ |= 0x00000002;
+                }
+                result.icon_ = icon_;
+                if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+                  to_bitField0_ |= 0x00000004;
+                }
+                result.sessionKey_ = sessionKey_;
+                if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+                  to_bitField0_ |= 0x00000008;
+                }
+                result.userAgent_ = userAgent_;
+                if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+                  to_bitField0_ |= 0x00000010;
+                }
+                result.url_ = url_;
+                if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+                  to_bitField0_ |= 0x00000020;
+                }
+                result.tabKey_ = tabKey_;
+                if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+                  to_bitField0_ |= 0x00000040;
+                }
+                result.remoteHost_ = remoteHost_;
+                result.bitField0_ = to_bitField0_;
+                onBuilt();
+                return result;
               }
-              
+
               public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
                 if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog) {
                   return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog)other);
@@ -887,451 +2422,964 @@
                   return this;
                 }
               }
-              
+
               public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog other) {
                 if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.getDefaultInstance()) return this;
                 if (other.hasName()) {
-                  setName(other.getName());
+                  bitField0_ |= 0x00000001;
+                  name_ = other.name_;
+                  onChanged();
                 }
                 if (other.hasIcon()) {
                   setIcon(other.getIcon());
                 }
                 if (other.hasSessionKey()) {
-                  setSessionKey(other.getSessionKey());
+                  bitField0_ |= 0x00000004;
+                  sessionKey_ = other.sessionKey_;
+                  onChanged();
                 }
                 if (other.hasUserAgent()) {
-                  setUserAgent(other.getUserAgent());
+                  bitField0_ |= 0x00000008;
+                  userAgent_ = other.userAgent_;
+                  onChanged();
                 }
                 if (other.hasUrl()) {
-                  setUrl(other.getUrl());
+                  bitField0_ |= 0x00000010;
+                  url_ = other.url_;
+                  onChanged();
                 }
                 if (other.hasTabKey()) {
-                  setTabKey(other.getTabKey());
+                  bitField0_ |= 0x00000020;
+                  tabKey_ = other.tabKey_;
+                  onChanged();
                 }
                 if (other.hasRemoteHost()) {
-                  setRemoteHost(other.getRemoteHost());
+                  bitField0_ |= 0x00000040;
+                  remoteHost_ = other.remoteHost_;
+                  onChanged();
                 }
                 this.mergeUnknownFields(other.getUnknownFields());
                 return this;
               }
-              
+
+              public final boolean isInitialized() {
+                if (!hasName()) {
+                  
+                  return false;
+                }
+                return true;
+              }
+
               public Builder mergeFrom(
                   com.google.gwt.dev.protobuf.CodedInputStream input,
                   com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                   throws java.io.IOException {
-                com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-                  com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-                    this.getUnknownFields());
-                while (true) {
-                  int tag = input.readTag();
-                  switch (tag) {
-                    case 0:
-                      this.setUnknownFields(unknownFields.build());
-                      return this;
-                    default: {
-                      if (!parseUnknownField(input, unknownFields,
-                                             extensionRegistry, tag)) {
-                        this.setUnknownFields(unknownFields.build());
-                        return this;
-                      }
-                      break;
-                    }
-                    case 10: {
-                      setName(input.readString());
-                      break;
-                    }
-                    case 18: {
-                      setIcon(input.readBytes());
-                      break;
-                    }
-                    case 26: {
-                      setSessionKey(input.readString());
-                      break;
-                    }
-                    case 34: {
-                      setUserAgent(input.readString());
-                      break;
-                    }
-                    case 42: {
-                      setUrl(input.readString());
-                      break;
-                    }
-                    case 50: {
-                      setTabKey(input.readString());
-                      break;
-                    }
-                    case 58: {
-                      setRemoteHost(input.readString());
-                      break;
-                    }
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog parsedMessage = null;
+                try {
+                  parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+                  parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog) e.getUnfinishedMessage();
+                  throw e;
+                } finally {
+                  if (parsedMessage != null) {
+                    mergeFrom(parsedMessage);
                   }
                 }
+                return this;
               }
-              
-              
+              private int bitField0_;
+
               // required string name = 1;
+              private java.lang.Object name_ = "";
+              /**
+               * <code>required string name = 1;</code>
+               */
               public boolean hasName() {
-                return result.hasName();
+                return ((bitField0_ & 0x00000001) == 0x00000001);
               }
+              /**
+               * <code>required string name = 1;</code>
+               */
               public java.lang.String getName() {
-                return result.getName();
+                java.lang.Object ref = name_;
+                if (!(ref instanceof java.lang.String)) {
+                  java.lang.String s = ((com.google.gwt.dev.protobuf.ByteString) ref)
+                      .toStringUtf8();
+                  name_ = s;
+                  return s;
+                } else {
+                  return (java.lang.String) ref;
+                }
               }
-              public Builder setName(java.lang.String value) {
+              /**
+               * <code>required string name = 1;</code>
+               */
+              public com.google.gwt.dev.protobuf.ByteString
+                  getNameBytes() {
+                java.lang.Object ref = name_;
+                if (ref instanceof String) {
+                  com.google.gwt.dev.protobuf.ByteString b = 
+                      com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                          (java.lang.String) ref);
+                  name_ = b;
+                  return b;
+                } else {
+                  return (com.google.gwt.dev.protobuf.ByteString) ref;
+                }
+              }
+              /**
+               * <code>required string name = 1;</code>
+               */
+              public Builder setName(
+                  java.lang.String value) {
                 if (value == null) {
     throw new NullPointerException();
   }
-  result.hasName = true;
-                result.name_ = value;
+  bitField0_ |= 0x00000001;
+                name_ = value;
+                onChanged();
                 return this;
               }
+              /**
+               * <code>required string name = 1;</code>
+               */
               public Builder clearName() {
-                result.hasName = false;
-                result.name_ = getDefaultInstance().getName();
+                bitField0_ = (bitField0_ & ~0x00000001);
+                name_ = getDefaultInstance().getName();
+                onChanged();
                 return this;
               }
-              
+              /**
+               * <code>required string name = 1;</code>
+               */
+              public Builder setNameBytes(
+                  com.google.gwt.dev.protobuf.ByteString value) {
+                if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+                name_ = value;
+                onChanged();
+                return this;
+              }
+
               // optional bytes icon = 2;
+              private com.google.gwt.dev.protobuf.ByteString icon_ = com.google.gwt.dev.protobuf.ByteString.EMPTY;
+              /**
+               * <code>optional bytes icon = 2;</code>
+               */
               public boolean hasIcon() {
-                return result.hasIcon();
+                return ((bitField0_ & 0x00000002) == 0x00000002);
               }
+              /**
+               * <code>optional bytes icon = 2;</code>
+               */
               public com.google.gwt.dev.protobuf.ByteString getIcon() {
-                return result.getIcon();
+                return icon_;
               }
+              /**
+               * <code>optional bytes icon = 2;</code>
+               */
               public Builder setIcon(com.google.gwt.dev.protobuf.ByteString value) {
                 if (value == null) {
     throw new NullPointerException();
   }
-  result.hasIcon = true;
-                result.icon_ = value;
+  bitField0_ |= 0x00000002;
+                icon_ = value;
+                onChanged();
                 return this;
               }
+              /**
+               * <code>optional bytes icon = 2;</code>
+               */
               public Builder clearIcon() {
-                result.hasIcon = false;
-                result.icon_ = getDefaultInstance().getIcon();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                icon_ = getDefaultInstance().getIcon();
+                onChanged();
                 return this;
               }
-              
+
               // optional string sessionKey = 3;
+              private java.lang.Object sessionKey_ = "";
+              /**
+               * <code>optional string sessionKey = 3;</code>
+               */
               public boolean hasSessionKey() {
-                return result.hasSessionKey();
+                return ((bitField0_ & 0x00000004) == 0x00000004);
               }
+              /**
+               * <code>optional string sessionKey = 3;</code>
+               */
               public java.lang.String getSessionKey() {
-                return result.getSessionKey();
+                java.lang.Object ref = sessionKey_;
+                if (!(ref instanceof java.lang.String)) {
+                  java.lang.String s = ((com.google.gwt.dev.protobuf.ByteString) ref)
+                      .toStringUtf8();
+                  sessionKey_ = s;
+                  return s;
+                } else {
+                  return (java.lang.String) ref;
+                }
               }
-              public Builder setSessionKey(java.lang.String value) {
+              /**
+               * <code>optional string sessionKey = 3;</code>
+               */
+              public com.google.gwt.dev.protobuf.ByteString
+                  getSessionKeyBytes() {
+                java.lang.Object ref = sessionKey_;
+                if (ref instanceof String) {
+                  com.google.gwt.dev.protobuf.ByteString b = 
+                      com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                          (java.lang.String) ref);
+                  sessionKey_ = b;
+                  return b;
+                } else {
+                  return (com.google.gwt.dev.protobuf.ByteString) ref;
+                }
+              }
+              /**
+               * <code>optional string sessionKey = 3;</code>
+               */
+              public Builder setSessionKey(
+                  java.lang.String value) {
                 if (value == null) {
     throw new NullPointerException();
   }
-  result.hasSessionKey = true;
-                result.sessionKey_ = value;
+  bitField0_ |= 0x00000004;
+                sessionKey_ = value;
+                onChanged();
                 return this;
               }
+              /**
+               * <code>optional string sessionKey = 3;</code>
+               */
               public Builder clearSessionKey() {
-                result.hasSessionKey = false;
-                result.sessionKey_ = getDefaultInstance().getSessionKey();
+                bitField0_ = (bitField0_ & ~0x00000004);
+                sessionKey_ = getDefaultInstance().getSessionKey();
+                onChanged();
                 return this;
               }
-              
+              /**
+               * <code>optional string sessionKey = 3;</code>
+               */
+              public Builder setSessionKeyBytes(
+                  com.google.gwt.dev.protobuf.ByteString value) {
+                if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+                sessionKey_ = value;
+                onChanged();
+                return this;
+              }
+
               // optional string userAgent = 4;
+              private java.lang.Object userAgent_ = "";
+              /**
+               * <code>optional string userAgent = 4;</code>
+               */
               public boolean hasUserAgent() {
-                return result.hasUserAgent();
+                return ((bitField0_ & 0x00000008) == 0x00000008);
               }
+              /**
+               * <code>optional string userAgent = 4;</code>
+               */
               public java.lang.String getUserAgent() {
-                return result.getUserAgent();
+                java.lang.Object ref = userAgent_;
+                if (!(ref instanceof java.lang.String)) {
+                  java.lang.String s = ((com.google.gwt.dev.protobuf.ByteString) ref)
+                      .toStringUtf8();
+                  userAgent_ = s;
+                  return s;
+                } else {
+                  return (java.lang.String) ref;
+                }
               }
-              public Builder setUserAgent(java.lang.String value) {
+              /**
+               * <code>optional string userAgent = 4;</code>
+               */
+              public com.google.gwt.dev.protobuf.ByteString
+                  getUserAgentBytes() {
+                java.lang.Object ref = userAgent_;
+                if (ref instanceof String) {
+                  com.google.gwt.dev.protobuf.ByteString b = 
+                      com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                          (java.lang.String) ref);
+                  userAgent_ = b;
+                  return b;
+                } else {
+                  return (com.google.gwt.dev.protobuf.ByteString) ref;
+                }
+              }
+              /**
+               * <code>optional string userAgent = 4;</code>
+               */
+              public Builder setUserAgent(
+                  java.lang.String value) {
                 if (value == null) {
     throw new NullPointerException();
   }
-  result.hasUserAgent = true;
-                result.userAgent_ = value;
+  bitField0_ |= 0x00000008;
+                userAgent_ = value;
+                onChanged();
                 return this;
               }
+              /**
+               * <code>optional string userAgent = 4;</code>
+               */
               public Builder clearUserAgent() {
-                result.hasUserAgent = false;
-                result.userAgent_ = getDefaultInstance().getUserAgent();
+                bitField0_ = (bitField0_ & ~0x00000008);
+                userAgent_ = getDefaultInstance().getUserAgent();
+                onChanged();
                 return this;
               }
-              
+              /**
+               * <code>optional string userAgent = 4;</code>
+               */
+              public Builder setUserAgentBytes(
+                  com.google.gwt.dev.protobuf.ByteString value) {
+                if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+                userAgent_ = value;
+                onChanged();
+                return this;
+              }
+
               // optional string url = 5;
+              private java.lang.Object url_ = "";
+              /**
+               * <code>optional string url = 5;</code>
+               */
               public boolean hasUrl() {
-                return result.hasUrl();
+                return ((bitField0_ & 0x00000010) == 0x00000010);
               }
+              /**
+               * <code>optional string url = 5;</code>
+               */
               public java.lang.String getUrl() {
-                return result.getUrl();
+                java.lang.Object ref = url_;
+                if (!(ref instanceof java.lang.String)) {
+                  java.lang.String s = ((com.google.gwt.dev.protobuf.ByteString) ref)
+                      .toStringUtf8();
+                  url_ = s;
+                  return s;
+                } else {
+                  return (java.lang.String) ref;
+                }
               }
-              public Builder setUrl(java.lang.String value) {
+              /**
+               * <code>optional string url = 5;</code>
+               */
+              public com.google.gwt.dev.protobuf.ByteString
+                  getUrlBytes() {
+                java.lang.Object ref = url_;
+                if (ref instanceof String) {
+                  com.google.gwt.dev.protobuf.ByteString b = 
+                      com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                          (java.lang.String) ref);
+                  url_ = b;
+                  return b;
+                } else {
+                  return (com.google.gwt.dev.protobuf.ByteString) ref;
+                }
+              }
+              /**
+               * <code>optional string url = 5;</code>
+               */
+              public Builder setUrl(
+                  java.lang.String value) {
                 if (value == null) {
     throw new NullPointerException();
   }
-  result.hasUrl = true;
-                result.url_ = value;
+  bitField0_ |= 0x00000010;
+                url_ = value;
+                onChanged();
                 return this;
               }
+              /**
+               * <code>optional string url = 5;</code>
+               */
               public Builder clearUrl() {
-                result.hasUrl = false;
-                result.url_ = getDefaultInstance().getUrl();
+                bitField0_ = (bitField0_ & ~0x00000010);
+                url_ = getDefaultInstance().getUrl();
+                onChanged();
                 return this;
               }
-              
+              /**
+               * <code>optional string url = 5;</code>
+               */
+              public Builder setUrlBytes(
+                  com.google.gwt.dev.protobuf.ByteString value) {
+                if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+                url_ = value;
+                onChanged();
+                return this;
+              }
+
               // optional string tabKey = 6;
+              private java.lang.Object tabKey_ = "";
+              /**
+               * <code>optional string tabKey = 6;</code>
+               */
               public boolean hasTabKey() {
-                return result.hasTabKey();
+                return ((bitField0_ & 0x00000020) == 0x00000020);
               }
+              /**
+               * <code>optional string tabKey = 6;</code>
+               */
               public java.lang.String getTabKey() {
-                return result.getTabKey();
+                java.lang.Object ref = tabKey_;
+                if (!(ref instanceof java.lang.String)) {
+                  java.lang.String s = ((com.google.gwt.dev.protobuf.ByteString) ref)
+                      .toStringUtf8();
+                  tabKey_ = s;
+                  return s;
+                } else {
+                  return (java.lang.String) ref;
+                }
               }
-              public Builder setTabKey(java.lang.String value) {
+              /**
+               * <code>optional string tabKey = 6;</code>
+               */
+              public com.google.gwt.dev.protobuf.ByteString
+                  getTabKeyBytes() {
+                java.lang.Object ref = tabKey_;
+                if (ref instanceof String) {
+                  com.google.gwt.dev.protobuf.ByteString b = 
+                      com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                          (java.lang.String) ref);
+                  tabKey_ = b;
+                  return b;
+                } else {
+                  return (com.google.gwt.dev.protobuf.ByteString) ref;
+                }
+              }
+              /**
+               * <code>optional string tabKey = 6;</code>
+               */
+              public Builder setTabKey(
+                  java.lang.String value) {
                 if (value == null) {
     throw new NullPointerException();
   }
-  result.hasTabKey = true;
-                result.tabKey_ = value;
+  bitField0_ |= 0x00000020;
+                tabKey_ = value;
+                onChanged();
                 return this;
               }
+              /**
+               * <code>optional string tabKey = 6;</code>
+               */
               public Builder clearTabKey() {
-                result.hasTabKey = false;
-                result.tabKey_ = getDefaultInstance().getTabKey();
+                bitField0_ = (bitField0_ & ~0x00000020);
+                tabKey_ = getDefaultInstance().getTabKey();
+                onChanged();
                 return this;
               }
-              
-              // optional string remoteHost = 7;
-              public boolean hasRemoteHost() {
-                return result.hasRemoteHost();
-              }
-              public java.lang.String getRemoteHost() {
-                return result.getRemoteHost();
-              }
-              public Builder setRemoteHost(java.lang.String value) {
+              /**
+               * <code>optional string tabKey = 6;</code>
+               */
+              public Builder setTabKeyBytes(
+                  com.google.gwt.dev.protobuf.ByteString value) {
                 if (value == null) {
     throw new NullPointerException();
   }
-  result.hasRemoteHost = true;
-                result.remoteHost_ = value;
+  bitField0_ |= 0x00000020;
+                tabKey_ = value;
+                onChanged();
                 return this;
               }
+
+              // optional string remoteHost = 7;
+              private java.lang.Object remoteHost_ = "";
+              /**
+               * <code>optional string remoteHost = 7;</code>
+               */
+              public boolean hasRemoteHost() {
+                return ((bitField0_ & 0x00000040) == 0x00000040);
+              }
+              /**
+               * <code>optional string remoteHost = 7;</code>
+               */
+              public java.lang.String getRemoteHost() {
+                java.lang.Object ref = remoteHost_;
+                if (!(ref instanceof java.lang.String)) {
+                  java.lang.String s = ((com.google.gwt.dev.protobuf.ByteString) ref)
+                      .toStringUtf8();
+                  remoteHost_ = s;
+                  return s;
+                } else {
+                  return (java.lang.String) ref;
+                }
+              }
+              /**
+               * <code>optional string remoteHost = 7;</code>
+               */
+              public com.google.gwt.dev.protobuf.ByteString
+                  getRemoteHostBytes() {
+                java.lang.Object ref = remoteHost_;
+                if (ref instanceof String) {
+                  com.google.gwt.dev.protobuf.ByteString b = 
+                      com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                          (java.lang.String) ref);
+                  remoteHost_ = b;
+                  return b;
+                } else {
+                  return (com.google.gwt.dev.protobuf.ByteString) ref;
+                }
+              }
+              /**
+               * <code>optional string remoteHost = 7;</code>
+               */
+              public Builder setRemoteHost(
+                  java.lang.String value) {
+                if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000040;
+                remoteHost_ = value;
+                onChanged();
+                return this;
+              }
+              /**
+               * <code>optional string remoteHost = 7;</code>
+               */
               public Builder clearRemoteHost() {
-                result.hasRemoteHost = false;
-                result.remoteHost_ = getDefaultInstance().getRemoteHost();
+                bitField0_ = (bitField0_ & ~0x00000040);
+                remoteHost_ = getDefaultInstance().getRemoteHost();
+                onChanged();
                 return this;
               }
+              /**
+               * <code>optional string remoteHost = 7;</code>
+               */
+              public Builder setRemoteHostBytes(
+                  com.google.gwt.dev.protobuf.ByteString value) {
+                if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000040;
+                remoteHost_ = value;
+                onChanged();
+                return this;
+              }
+
+              // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ModuleLog)
             }
-            
+
             static {
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
+              defaultInstance = new ModuleLog(true);
+              defaultInstance.initFields();
             }
-            
-            static {
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-            }
+
+            // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ModuleLog)
           }
-          
+
+          public interface ServerLogOrBuilder
+              extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+
+            // required string name = 1;
+            /**
+             * <code>required string name = 1;</code>
+             */
+            boolean hasName();
+            /**
+             * <code>required string name = 1;</code>
+             */
+            java.lang.String getName();
+            /**
+             * <code>required string name = 1;</code>
+             */
+            com.google.gwt.dev.protobuf.ByteString
+                getNameBytes();
+
+            // optional bytes icon = 2;
+            /**
+             * <code>optional bytes icon = 2;</code>
+             */
+            boolean hasIcon();
+            /**
+             * <code>optional bytes icon = 2;</code>
+             */
+            com.google.gwt.dev.protobuf.ByteString getIcon();
+          }
+          /**
+           * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ServerLog}
+           *
+           * <pre>
+           * Information needed for creating a Server Log
+           * </pre>
+           */
           public static final class ServerLog extends
-              com.google.gwt.dev.protobuf.GeneratedMessage {
+              com.google.gwt.dev.protobuf.GeneratedMessage
+              implements ServerLogOrBuilder {
             // Use ServerLog.newBuilder() to construct.
-            private ServerLog() {}
-            
-            private static final ServerLog defaultInstance = new ServerLog();
+            private ServerLog(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+              super(builder);
+              this.unknownFields = builder.getUnknownFields();
+            }
+            private ServerLog(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+            private static final ServerLog defaultInstance;
             public static ServerLog getDefaultInstance() {
               return defaultInstance;
             }
-            
+
             public ServerLog getDefaultInstanceForType() {
               return defaultInstance;
             }
-            
+
+            private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+            @java.lang.Override
+            public final com.google.gwt.dev.protobuf.UnknownFieldSet
+                getUnknownFields() {
+              return this.unknownFields;
+            }
+            private ServerLog(
+                com.google.gwt.dev.protobuf.CodedInputStream input,
+                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              initFields();
+              int mutable_bitField0_ = 0;
+              com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+                  com.google.gwt.dev.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;
+                      name_ = input.readBytes();
+                      break;
+                    }
+                    case 18: {
+                      bitField0_ |= 0x00000002;
+                      icon_ = input.readBytes();
+                      break;
+                    }
+                  }
+                }
+              } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+              } catch (java.io.IOException e) {
+                throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+                    e.getMessage()).setUnfinishedMessage(this);
+              } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+              }
+            }
             public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
                 getDescriptor() {
               return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_ServerLog_descriptor;
             }
-            
+
             protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
                 internalGetFieldAccessorTable() {
-              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_ServerLog_fieldAccessorTable;
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_ServerLog_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.Builder.class);
             }
-            
+
+            public static com.google.gwt.dev.protobuf.Parser<ServerLog> PARSER =
+                new com.google.gwt.dev.protobuf.AbstractParser<ServerLog>() {
+              public ServerLog parsePartialFrom(
+                  com.google.gwt.dev.protobuf.CodedInputStream input,
+                  com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                  throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+                return new ServerLog(input, extensionRegistry);
+              }
+            };
+
+            @java.lang.Override
+            public com.google.gwt.dev.protobuf.Parser<ServerLog> getParserForType() {
+              return PARSER;
+            }
+
+            private int bitField0_;
             // required string name = 1;
             public static final int NAME_FIELD_NUMBER = 1;
-            private boolean hasName;
-            private java.lang.String name_ = "";
-            public boolean hasName() { return hasName; }
-            public java.lang.String getName() { return name_; }
-            
+            private java.lang.Object name_;
+            /**
+             * <code>required string name = 1;</code>
+             */
+            public boolean hasName() {
+              return ((bitField0_ & 0x00000001) == 0x00000001);
+            }
+            /**
+             * <code>required string name = 1;</code>
+             */
+            public java.lang.String getName() {
+              java.lang.Object ref = name_;
+              if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+              } else {
+                com.google.gwt.dev.protobuf.ByteString bs = 
+                    (com.google.gwt.dev.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                if (bs.isValidUtf8()) {
+                  name_ = s;
+                }
+                return s;
+              }
+            }
+            /**
+             * <code>required string name = 1;</code>
+             */
+            public com.google.gwt.dev.protobuf.ByteString
+                getNameBytes() {
+              java.lang.Object ref = name_;
+              if (ref instanceof java.lang.String) {
+                com.google.gwt.dev.protobuf.ByteString b = 
+                    com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                        (java.lang.String) ref);
+                name_ = b;
+                return b;
+              } else {
+                return (com.google.gwt.dev.protobuf.ByteString) ref;
+              }
+            }
+
             // optional bytes icon = 2;
             public static final int ICON_FIELD_NUMBER = 2;
-            private boolean hasIcon;
-            private com.google.gwt.dev.protobuf.ByteString icon_ = com.google.gwt.dev.protobuf.ByteString.EMPTY;
-            public boolean hasIcon() { return hasIcon; }
-            public com.google.gwt.dev.protobuf.ByteString getIcon() { return icon_; }
-            
+            private com.google.gwt.dev.protobuf.ByteString icon_;
+            /**
+             * <code>optional bytes icon = 2;</code>
+             */
+            public boolean hasIcon() {
+              return ((bitField0_ & 0x00000002) == 0x00000002);
+            }
+            /**
+             * <code>optional bytes icon = 2;</code>
+             */
+            public com.google.gwt.dev.protobuf.ByteString getIcon() {
+              return icon_;
+            }
+
+            private void initFields() {
+              name_ = "";
+              icon_ = com.google.gwt.dev.protobuf.ByteString.EMPTY;
+            }
+            private byte memoizedIsInitialized = -1;
             public final boolean isInitialized() {
-              if (!hasName) return false;
+              byte isInitialized = memoizedIsInitialized;
+              if (isInitialized != -1) return isInitialized == 1;
+
+              if (!hasName()) {
+                memoizedIsInitialized = 0;
+                return false;
+              }
+              memoizedIsInitialized = 1;
               return true;
             }
-            
+
             public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
                                 throws java.io.IOException {
-              if (hasName()) {
-                output.writeString(1, getName());
+              getSerializedSize();
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                output.writeBytes(1, getNameBytes());
               }
-              if (hasIcon()) {
-                output.writeBytes(2, getIcon());
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                output.writeBytes(2, icon_);
               }
               getUnknownFields().writeTo(output);
             }
-            
+
             private int memoizedSerializedSize = -1;
             public int getSerializedSize() {
               int size = memoizedSerializedSize;
               if (size != -1) return size;
-            
+
               size = 0;
-              if (hasName()) {
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                 size += com.google.gwt.dev.protobuf.CodedOutputStream
-                  .computeStringSize(1, getName());
+                  .computeBytesSize(1, getNameBytes());
               }
-              if (hasIcon()) {
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                 size += com.google.gwt.dev.protobuf.CodedOutputStream
-                  .computeBytesSize(2, getIcon());
+                  .computeBytesSize(2, icon_);
               }
               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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog parseFrom(
                 com.google.gwt.dev.protobuf.ByteString data)
                 throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              return newBuilder().mergeFrom(data).buildParsed();
+              return PARSER.parseFrom(data);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog parseFrom(
                 com.google.gwt.dev.protobuf.ByteString data,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              return newBuilder().mergeFrom(data, extensionRegistry)
-                       .buildParsed();
+              return PARSER.parseFrom(data, extensionRegistry);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog parseFrom(byte[] data)
                 throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              return newBuilder().mergeFrom(data).buildParsed();
+              return PARSER.parseFrom(data);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog parseFrom(
                 byte[] data,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              return newBuilder().mergeFrom(data, extensionRegistry)
-                       .buildParsed();
+              return PARSER.parseFrom(data, extensionRegistry);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog parseFrom(java.io.InputStream input)
                 throws java.io.IOException {
-              return newBuilder().mergeFrom(input).buildParsed();
+              return PARSER.parseFrom(input);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog parseFrom(
                 java.io.InputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws java.io.IOException {
-              return newBuilder().mergeFrom(input, extensionRegistry)
-                       .buildParsed();
+              return PARSER.parseFrom(input, extensionRegistry);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog parseDelimitedFrom(java.io.InputStream input)
                 throws java.io.IOException {
-              return newBuilder().mergeDelimitedFrom(input).buildParsed();
+              return PARSER.parseDelimitedFrom(input);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog parseDelimitedFrom(
                 java.io.InputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws java.io.IOException {
-              return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                       .buildParsed();
+              return PARSER.parseDelimitedFrom(input, extensionRegistry);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog parseFrom(
                 com.google.gwt.dev.protobuf.CodedInputStream input)
                 throws java.io.IOException {
-              return newBuilder().mergeFrom(input).buildParsed();
+              return PARSER.parseFrom(input);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog parseFrom(
                 com.google.gwt.dev.protobuf.CodedInputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws java.io.IOException {
-              return newBuilder().mergeFrom(input, extensionRegistry)
-                       .buildParsed();
+              return PARSER.parseFrom(input, extensionRegistry);
             }
-            
+
             public static Builder newBuilder() { return Builder.create(); }
             public Builder newBuilderForType() { return newBuilder(); }
             public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog prototype) {
               return newBuilder().mergeFrom(prototype);
             }
             public Builder toBuilder() { return newBuilder(this); }
-            
+
+            @java.lang.Override
+            protected Builder newBuilderForType(
+                com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+              Builder builder = new Builder(parent);
+              return builder;
+            }
+            /**
+             * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ServerLog}
+             *
+             * <pre>
+             * Information needed for creating a Server Log
+             * </pre>
+             */
             public static final class Builder extends
-                com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-              private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog result;
-              
+                com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+               implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLogOrBuilder {
+              public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+                  getDescriptor() {
+                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_ServerLog_descriptor;
+              }
+
+              protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+                  internalGetFieldAccessorTable() {
+                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_ServerLog_fieldAccessorTable
+                    .ensureFieldAccessorsInitialized(
+                        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.Builder.class);
+              }
+
               // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.newBuilder()
-              private Builder() {}
-              
-              private static Builder create() {
-                Builder builder = new Builder();
-                builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog();
-                return builder;
+              private Builder() {
+                maybeForceBuilderInitialization();
               }
-              
-              protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog internalGetResult() {
-                return result;
+
+              private Builder(
+                  com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+                super(parent);
+                maybeForceBuilderInitialization();
               }
-              
-              public Builder clear() {
-                if (result == null) {
-                  throw new IllegalStateException(
-                    "Cannot call clear() after build().");
+              private void maybeForceBuilderInitialization() {
+                if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
                 }
-                result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog();
+              }
+              private static Builder create() {
+                return new Builder();
+              }
+
+              public Builder clear() {
+                super.clear();
+                name_ = "";
+                bitField0_ = (bitField0_ & ~0x00000001);
+                icon_ = com.google.gwt.dev.protobuf.ByteString.EMPTY;
+                bitField0_ = (bitField0_ & ~0x00000002);
                 return this;
               }
-              
+
               public Builder clone() {
-                return create().mergeFrom(result);
+                return create().mergeFrom(buildPartial());
               }
-              
+
               public com.google.gwt.dev.protobuf.Descriptors.Descriptor
                   getDescriptorForType() {
-                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.getDescriptor();
+                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_ServerLog_descriptor;
               }
-              
+
               public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog getDefaultInstanceForType() {
                 return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.getDefaultInstance();
               }
-              
-              public boolean isInitialized() {
-                return result.isInitialized();
-              }
+
               public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog build() {
-                if (result != null && !isInitialized()) {
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog result = buildPartial();
+                if (!result.isInitialized()) {
                   throw newUninitializedMessageException(result);
                 }
-                return buildPartial();
+                return result;
               }
-              
-              private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog buildParsed()
-                  throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-                if (!isInitialized()) {
-                  throw newUninitializedMessageException(
-                    result).asInvalidProtocolBufferException();
-                }
-                return buildPartial();
-              }
-              
+
               public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog buildPartial() {
-                if (result == null) {
-                  throw new IllegalStateException(
-                    "build() has already been called on this Builder.");
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog(this);
+                int from_bitField0_ = bitField0_;
+                int to_bitField0_ = 0;
+                if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+                  to_bitField0_ |= 0x00000001;
                 }
-                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog returnMe = result;
-                result = null;
-                return returnMe;
+                result.name_ = name_;
+                if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+                  to_bitField0_ |= 0x00000002;
+                }
+                result.icon_ = icon_;
+                result.bitField0_ = to_bitField0_;
+                onBuilt();
+                return result;
               }
-              
+
               public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
                 if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog) {
                   return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog)other);
@@ -1340,11 +3388,13 @@
                   return this;
                 }
               }
-              
+
               public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog other) {
                 if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.getDefaultInstance()) return this;
                 if (other.hasName()) {
-                  setName(other.getName());
+                  bitField0_ |= 0x00000001;
+                  name_ = other.name_;
+                  onChanged();
                 }
                 if (other.hasIcon()) {
                   setIcon(other.getIcon());
@@ -1352,270 +3402,426 @@
                 this.mergeUnknownFields(other.getUnknownFields());
                 return this;
               }
-              
+
+              public final boolean isInitialized() {
+                if (!hasName()) {
+                  
+                  return false;
+                }
+                return true;
+              }
+
               public Builder mergeFrom(
                   com.google.gwt.dev.protobuf.CodedInputStream input,
                   com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                   throws java.io.IOException {
-                com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-                  com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-                    this.getUnknownFields());
-                while (true) {
-                  int tag = input.readTag();
-                  switch (tag) {
-                    case 0:
-                      this.setUnknownFields(unknownFields.build());
-                      return this;
-                    default: {
-                      if (!parseUnknownField(input, unknownFields,
-                                             extensionRegistry, tag)) {
-                        this.setUnknownFields(unknownFields.build());
-                        return this;
-                      }
-                      break;
-                    }
-                    case 10: {
-                      setName(input.readString());
-                      break;
-                    }
-                    case 18: {
-                      setIcon(input.readBytes());
-                      break;
-                    }
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog parsedMessage = null;
+                try {
+                  parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+                  parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog) e.getUnfinishedMessage();
+                  throw e;
+                } finally {
+                  if (parsedMessage != null) {
+                    mergeFrom(parsedMessage);
                   }
                 }
+                return this;
               }
-              
-              
+              private int bitField0_;
+
               // required string name = 1;
+              private java.lang.Object name_ = "";
+              /**
+               * <code>required string name = 1;</code>
+               */
               public boolean hasName() {
-                return result.hasName();
+                return ((bitField0_ & 0x00000001) == 0x00000001);
               }
+              /**
+               * <code>required string name = 1;</code>
+               */
               public java.lang.String getName() {
-                return result.getName();
+                java.lang.Object ref = name_;
+                if (!(ref instanceof java.lang.String)) {
+                  java.lang.String s = ((com.google.gwt.dev.protobuf.ByteString) ref)
+                      .toStringUtf8();
+                  name_ = s;
+                  return s;
+                } else {
+                  return (java.lang.String) ref;
+                }
               }
-              public Builder setName(java.lang.String value) {
+              /**
+               * <code>required string name = 1;</code>
+               */
+              public com.google.gwt.dev.protobuf.ByteString
+                  getNameBytes() {
+                java.lang.Object ref = name_;
+                if (ref instanceof String) {
+                  com.google.gwt.dev.protobuf.ByteString b = 
+                      com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                          (java.lang.String) ref);
+                  name_ = b;
+                  return b;
+                } else {
+                  return (com.google.gwt.dev.protobuf.ByteString) ref;
+                }
+              }
+              /**
+               * <code>required string name = 1;</code>
+               */
+              public Builder setName(
+                  java.lang.String value) {
                 if (value == null) {
     throw new NullPointerException();
   }
-  result.hasName = true;
-                result.name_ = value;
+  bitField0_ |= 0x00000001;
+                name_ = value;
+                onChanged();
                 return this;
               }
+              /**
+               * <code>required string name = 1;</code>
+               */
               public Builder clearName() {
-                result.hasName = false;
-                result.name_ = getDefaultInstance().getName();
+                bitField0_ = (bitField0_ & ~0x00000001);
+                name_ = getDefaultInstance().getName();
+                onChanged();
                 return this;
               }
-              
+              /**
+               * <code>required string name = 1;</code>
+               */
+              public Builder setNameBytes(
+                  com.google.gwt.dev.protobuf.ByteString value) {
+                if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+                name_ = value;
+                onChanged();
+                return this;
+              }
+
               // optional bytes icon = 2;
+              private com.google.gwt.dev.protobuf.ByteString icon_ = com.google.gwt.dev.protobuf.ByteString.EMPTY;
+              /**
+               * <code>optional bytes icon = 2;</code>
+               */
               public boolean hasIcon() {
-                return result.hasIcon();
+                return ((bitField0_ & 0x00000002) == 0x00000002);
               }
+              /**
+               * <code>optional bytes icon = 2;</code>
+               */
               public com.google.gwt.dev.protobuf.ByteString getIcon() {
-                return result.getIcon();
+                return icon_;
               }
+              /**
+               * <code>optional bytes icon = 2;</code>
+               */
               public Builder setIcon(com.google.gwt.dev.protobuf.ByteString value) {
                 if (value == null) {
     throw new NullPointerException();
   }
-  result.hasIcon = true;
-                result.icon_ = value;
+  bitField0_ |= 0x00000002;
+                icon_ = value;
+                onChanged();
                 return this;
               }
+              /**
+               * <code>optional bytes icon = 2;</code>
+               */
               public Builder clearIcon() {
-                result.hasIcon = false;
-                result.icon_ = getDefaultInstance().getIcon();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                icon_ = getDefaultInstance().getIcon();
+                onChanged();
                 return this;
               }
+
+              // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ServerLog)
             }
-            
+
             static {
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
+              defaultInstance = new ServerLog(true);
+              defaultInstance.initFields();
             }
-            
-            static {
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-            }
+
+            // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ServerLog)
           }
-          
+
+          public interface MainLogOrBuilder
+              extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+          }
+          /**
+           * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.MainLog}
+           *
+           * <pre>
+           * Information needed for creating the Main Log. At this time, no
+           * additional information is needed.
+           * </pre>
+           */
           public static final class MainLog extends
-              com.google.gwt.dev.protobuf.GeneratedMessage {
+              com.google.gwt.dev.protobuf.GeneratedMessage
+              implements MainLogOrBuilder {
             // Use MainLog.newBuilder() to construct.
-            private MainLog() {}
-            
-            private static final MainLog defaultInstance = new MainLog();
+            private MainLog(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+              super(builder);
+              this.unknownFields = builder.getUnknownFields();
+            }
+            private MainLog(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+            private static final MainLog defaultInstance;
             public static MainLog getDefaultInstance() {
               return defaultInstance;
             }
-            
+
             public MainLog getDefaultInstanceForType() {
               return defaultInstance;
             }
-            
+
+            private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+            @java.lang.Override
+            public final com.google.gwt.dev.protobuf.UnknownFieldSet
+                getUnknownFields() {
+              return this.unknownFields;
+            }
+            private MainLog(
+                com.google.gwt.dev.protobuf.CodedInputStream input,
+                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              initFields();
+              com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+                  com.google.gwt.dev.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;
+                    }
+                  }
+                }
+              } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+              } catch (java.io.IOException e) {
+                throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+                    e.getMessage()).setUnfinishedMessage(this);
+              } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+              }
+            }
             public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
                 getDescriptor() {
               return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_MainLog_descriptor;
             }
-            
+
             protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
                 internalGetFieldAccessorTable() {
-              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_MainLog_fieldAccessorTable;
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_MainLog_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.Builder.class);
             }
-            
+
+            public static com.google.gwt.dev.protobuf.Parser<MainLog> PARSER =
+                new com.google.gwt.dev.protobuf.AbstractParser<MainLog>() {
+              public MainLog parsePartialFrom(
+                  com.google.gwt.dev.protobuf.CodedInputStream input,
+                  com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                  throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+                return new MainLog(input, extensionRegistry);
+              }
+            };
+
+            @java.lang.Override
+            public com.google.gwt.dev.protobuf.Parser<MainLog> getParserForType() {
+              return PARSER;
+            }
+
+            private void initFields() {
+            }
+            private byte memoizedIsInitialized = -1;
             public final boolean isInitialized() {
+              byte isInitialized = memoizedIsInitialized;
+              if (isInitialized != -1) return isInitialized == 1;
+
+              memoizedIsInitialized = 1;
               return true;
             }
-            
+
             public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
                                 throws java.io.IOException {
+              getSerializedSize();
               getUnknownFields().writeTo(output);
             }
-            
+
             private int memoizedSerializedSize = -1;
             public int getSerializedSize() {
               int size = memoizedSerializedSize;
               if (size != -1) return size;
-            
+
               size = 0;
               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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog parseFrom(
                 com.google.gwt.dev.protobuf.ByteString data)
                 throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              return newBuilder().mergeFrom(data).buildParsed();
+              return PARSER.parseFrom(data);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog parseFrom(
                 com.google.gwt.dev.protobuf.ByteString data,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              return newBuilder().mergeFrom(data, extensionRegistry)
-                       .buildParsed();
+              return PARSER.parseFrom(data, extensionRegistry);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog parseFrom(byte[] data)
                 throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              return newBuilder().mergeFrom(data).buildParsed();
+              return PARSER.parseFrom(data);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog parseFrom(
                 byte[] data,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              return newBuilder().mergeFrom(data, extensionRegistry)
-                       .buildParsed();
+              return PARSER.parseFrom(data, extensionRegistry);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog parseFrom(java.io.InputStream input)
                 throws java.io.IOException {
-              return newBuilder().mergeFrom(input).buildParsed();
+              return PARSER.parseFrom(input);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog parseFrom(
                 java.io.InputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws java.io.IOException {
-              return newBuilder().mergeFrom(input, extensionRegistry)
-                       .buildParsed();
+              return PARSER.parseFrom(input, extensionRegistry);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog parseDelimitedFrom(java.io.InputStream input)
                 throws java.io.IOException {
-              return newBuilder().mergeDelimitedFrom(input).buildParsed();
+              return PARSER.parseDelimitedFrom(input);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog parseDelimitedFrom(
                 java.io.InputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws java.io.IOException {
-              return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                       .buildParsed();
+              return PARSER.parseDelimitedFrom(input, extensionRegistry);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog parseFrom(
                 com.google.gwt.dev.protobuf.CodedInputStream input)
                 throws java.io.IOException {
-              return newBuilder().mergeFrom(input).buildParsed();
+              return PARSER.parseFrom(input);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog parseFrom(
                 com.google.gwt.dev.protobuf.CodedInputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws java.io.IOException {
-              return newBuilder().mergeFrom(input, extensionRegistry)
-                       .buildParsed();
+              return PARSER.parseFrom(input, extensionRegistry);
             }
-            
+
             public static Builder newBuilder() { return Builder.create(); }
             public Builder newBuilderForType() { return newBuilder(); }
             public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog prototype) {
               return newBuilder().mergeFrom(prototype);
             }
             public Builder toBuilder() { return newBuilder(this); }
-            
+
+            @java.lang.Override
+            protected Builder newBuilderForType(
+                com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+              Builder builder = new Builder(parent);
+              return builder;
+            }
+            /**
+             * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.MainLog}
+             *
+             * <pre>
+             * Information needed for creating the Main Log. At this time, no
+             * additional information is needed.
+             * </pre>
+             */
             public static final class Builder extends
-                com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-              private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog result;
-              
+                com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+               implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLogOrBuilder {
+              public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+                  getDescriptor() {
+                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_MainLog_descriptor;
+              }
+
+              protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+                  internalGetFieldAccessorTable() {
+                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_MainLog_fieldAccessorTable
+                    .ensureFieldAccessorsInitialized(
+                        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.Builder.class);
+              }
+
               // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.newBuilder()
-              private Builder() {}
-              
-              private static Builder create() {
-                Builder builder = new Builder();
-                builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog();
-                return builder;
+              private Builder() {
+                maybeForceBuilderInitialization();
               }
-              
-              protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog internalGetResult() {
-                return result;
+
+              private Builder(
+                  com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+                super(parent);
+                maybeForceBuilderInitialization();
               }
-              
-              public Builder clear() {
-                if (result == null) {
-                  throw new IllegalStateException(
-                    "Cannot call clear() after build().");
+              private void maybeForceBuilderInitialization() {
+                if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
                 }
-                result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog();
+              }
+              private static Builder create() {
+                return new Builder();
+              }
+
+              public Builder clear() {
+                super.clear();
                 return this;
               }
-              
+
               public Builder clone() {
-                return create().mergeFrom(result);
+                return create().mergeFrom(buildPartial());
               }
-              
+
               public com.google.gwt.dev.protobuf.Descriptors.Descriptor
                   getDescriptorForType() {
-                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.getDescriptor();
+                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_MainLog_descriptor;
               }
-              
+
               public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog getDefaultInstanceForType() {
                 return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.getDefaultInstance();
               }
-              
-              public boolean isInitialized() {
-                return result.isInitialized();
-              }
+
               public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog build() {
-                if (result != null && !isInitialized()) {
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog result = buildPartial();
+                if (!result.isInitialized()) {
                   throw newUninitializedMessageException(result);
                 }
-                return buildPartial();
+                return result;
               }
-              
-              private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog buildParsed()
-                  throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-                if (!isInitialized()) {
-                  throw newUninitializedMessageException(
-                    result).asInvalidProtocolBufferException();
-                }
-                return buildPartial();
-              }
-              
+
               public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog buildPartial() {
-                if (result == null) {
-                  throw new IllegalStateException(
-                    "build() has already been called on this Builder.");
-                }
-                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog returnMe = result;
-                result = null;
-                return returnMe;
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog(this);
+                onBuilt();
+                return result;
               }
-              
+
               public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
                 if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog) {
                   return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog)other);
@@ -1624,264 +3830,400 @@
                   return this;
                 }
               }
-              
+
               public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog other) {
                 if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.getDefaultInstance()) return this;
                 this.mergeUnknownFields(other.getUnknownFields());
                 return this;
               }
-              
+
+              public final boolean isInitialized() {
+                return true;
+              }
+
               public Builder mergeFrom(
                   com.google.gwt.dev.protobuf.CodedInputStream input,
                   com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                   throws java.io.IOException {
-                com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-                  com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-                    this.getUnknownFields());
-                while (true) {
-                  int tag = input.readTag();
-                  switch (tag) {
-                    case 0:
-                      this.setUnknownFields(unknownFields.build());
-                      return this;
-                    default: {
-                      if (!parseUnknownField(input, unknownFields,
-                                             extensionRegistry, tag)) {
-                        this.setUnknownFields(unknownFields.build());
-                        return this;
-                      }
-                      break;
-                    }
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog parsedMessage = null;
+                try {
+                  parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+                  parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog) e.getUnfinishedMessage();
+                  throw e;
+                } finally {
+                  if (parsedMessage != null) {
+                    mergeFrom(parsedMessage);
                   }
                 }
+                return this;
               }
-              
+
+              // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.MainLog)
             }
-            
+
             static {
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
+              defaultInstance = new MainLog(true);
+              defaultInstance.initFields();
             }
-            
-            static {
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-            }
+
+            // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.MainLog)
           }
-          
+
+          private int bitField0_;
           // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.LogType type = 1;
           public static final int TYPE_FIELD_NUMBER = 1;
-          private boolean hasType;
-          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.LogType type_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.LogType.MAIN;
-          public boolean hasType() { return hasType; }
-          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.LogType getType() { return type_; }
-          
+          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.LogType type_;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.LogType type = 1;</code>
+           */
+          public boolean hasType() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.LogType type = 1;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.LogType getType() {
+            return type_;
+          }
+
           // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ModuleLog moduleLog = 2;
           public static final int MODULELOG_FIELD_NUMBER = 2;
-          private boolean hasModuleLog;
-          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog moduleLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.getDefaultInstance();
-          public boolean hasModuleLog() { return hasModuleLog; }
-          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog getModuleLog() { return moduleLog_; }
-          
+          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog moduleLog_;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ModuleLog moduleLog = 2;</code>
+           */
+          public boolean hasModuleLog() {
+            return ((bitField0_ & 0x00000002) == 0x00000002);
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ModuleLog moduleLog = 2;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog getModuleLog() {
+            return moduleLog_;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ModuleLog moduleLog = 2;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLogOrBuilder getModuleLogOrBuilder() {
+            return moduleLog_;
+          }
+
           // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ServerLog serverLog = 3;
           public static final int SERVERLOG_FIELD_NUMBER = 3;
-          private boolean hasServerLog;
-          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog serverLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.getDefaultInstance();
-          public boolean hasServerLog() { return hasServerLog; }
-          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog getServerLog() { return serverLog_; }
-          
+          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog serverLog_;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ServerLog serverLog = 3;</code>
+           */
+          public boolean hasServerLog() {
+            return ((bitField0_ & 0x00000004) == 0x00000004);
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ServerLog serverLog = 3;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog getServerLog() {
+            return serverLog_;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ServerLog serverLog = 3;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLogOrBuilder getServerLogOrBuilder() {
+            return serverLog_;
+          }
+
           // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.MainLog mainLog = 4;
           public static final int MAINLOG_FIELD_NUMBER = 4;
-          private boolean hasMainLog;
-          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog mainLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.getDefaultInstance();
-          public boolean hasMainLog() { return hasMainLog; }
-          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog getMainLog() { return mainLog_; }
-          
+          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog mainLog_;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.MainLog mainLog = 4;</code>
+           */
+          public boolean hasMainLog() {
+            return ((bitField0_ & 0x00000008) == 0x00000008);
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.MainLog mainLog = 4;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog getMainLog() {
+            return mainLog_;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.MainLog mainLog = 4;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLogOrBuilder getMainLogOrBuilder() {
+            return mainLog_;
+          }
+
+          private void initFields() {
+            type_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.LogType.MAIN;
+            moduleLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.getDefaultInstance();
+            serverLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.getDefaultInstance();
+            mainLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.getDefaultInstance();
+          }
+          private byte memoizedIsInitialized = -1;
           public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized != -1) return isInitialized == 1;
+
             if (hasModuleLog()) {
-              if (!getModuleLog().isInitialized()) return false;
+              if (!getModuleLog().isInitialized()) {
+                memoizedIsInitialized = 0;
+                return false;
+              }
             }
             if (hasServerLog()) {
-              if (!getServerLog().isInitialized()) return false;
+              if (!getServerLog().isInitialized()) {
+                memoizedIsInitialized = 0;
+                return false;
+              }
             }
+            memoizedIsInitialized = 1;
             return true;
           }
-          
+
           public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
                               throws java.io.IOException {
-            if (hasType()) {
-              output.writeEnum(1, getType().getNumber());
+            getSerializedSize();
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              output.writeEnum(1, type_.getNumber());
             }
-            if (hasModuleLog()) {
-              output.writeMessage(2, getModuleLog());
+            if (((bitField0_ & 0x00000002) == 0x00000002)) {
+              output.writeMessage(2, moduleLog_);
             }
-            if (hasServerLog()) {
-              output.writeMessage(3, getServerLog());
+            if (((bitField0_ & 0x00000004) == 0x00000004)) {
+              output.writeMessage(3, serverLog_);
             }
-            if (hasMainLog()) {
-              output.writeMessage(4, getMainLog());
+            if (((bitField0_ & 0x00000008) == 0x00000008)) {
+              output.writeMessage(4, mainLog_);
             }
             getUnknownFields().writeTo(output);
           }
-          
+
           private int memoizedSerializedSize = -1;
           public int getSerializedSize() {
             int size = memoizedSerializedSize;
             if (size != -1) return size;
-          
+
             size = 0;
-            if (hasType()) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
               size += com.google.gwt.dev.protobuf.CodedOutputStream
-                .computeEnumSize(1, getType().getNumber());
+                .computeEnumSize(1, type_.getNumber());
             }
-            if (hasModuleLog()) {
+            if (((bitField0_ & 0x00000002) == 0x00000002)) {
               size += com.google.gwt.dev.protobuf.CodedOutputStream
-                .computeMessageSize(2, getModuleLog());
+                .computeMessageSize(2, moduleLog_);
             }
-            if (hasServerLog()) {
+            if (((bitField0_ & 0x00000004) == 0x00000004)) {
               size += com.google.gwt.dev.protobuf.CodedOutputStream
-                .computeMessageSize(3, getServerLog());
+                .computeMessageSize(3, serverLog_);
             }
-            if (hasMainLog()) {
+            if (((bitField0_ & 0x00000008) == 0x00000008)) {
               size += com.google.gwt.dev.protobuf.CodedOutputStream
-                .computeMessageSize(4, getMainLog());
+                .computeMessageSize(4, mainLog_);
             }
             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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog parseFrom(
               com.google.gwt.dev.protobuf.ByteString data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog parseFrom(
               com.google.gwt.dev.protobuf.ByteString data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog parseFrom(byte[] data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog parseFrom(
               byte[] data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog parseFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog parseFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog parseDelimitedFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input).buildParsed();
+            return PARSER.parseDelimitedFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog parseDelimitedFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseDelimitedFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
-          
+
           public static Builder newBuilder() { return Builder.create(); }
           public Builder newBuilderForType() { return newBuilder(); }
           public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog prototype) {
             return newBuilder().mergeFrom(prototype);
           }
           public Builder toBuilder() { return newBuilder(this); }
-          
+
+          @java.lang.Override
+          protected Builder newBuilderForType(
+              com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+          }
+          /**
+           * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog}
+           *
+           * <pre>
+           * Add a log message to the view
+           * </pre>
+           */
           public static final class Builder extends
-              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog result;
-            
+              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+             implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogOrBuilder {
+            public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+                getDescriptor() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_descriptor;
+            }
+
+            protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+                internalGetFieldAccessorTable() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.Builder.class);
+            }
+
             // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.newBuilder()
-            private Builder() {}
-            
-            private static Builder create() {
-              Builder builder = new Builder();
-              builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog();
-              return builder;
+            private Builder() {
+              maybeForceBuilderInitialization();
             }
-            
-            protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog internalGetResult() {
-              return result;
+
+            private Builder(
+                com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+              super(parent);
+              maybeForceBuilderInitialization();
             }
-            
-            public Builder clear() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "Cannot call clear() after build().");
+            private void maybeForceBuilderInitialization() {
+              if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+                getModuleLogFieldBuilder();
+                getServerLogFieldBuilder();
+                getMainLogFieldBuilder();
               }
-              result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog();
+            }
+            private static Builder create() {
+              return new Builder();
+            }
+
+            public Builder clear() {
+              super.clear();
+              type_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.LogType.MAIN;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              if (moduleLogBuilder_ == null) {
+                moduleLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.getDefaultInstance();
+              } else {
+                moduleLogBuilder_.clear();
+              }
+              bitField0_ = (bitField0_ & ~0x00000002);
+              if (serverLogBuilder_ == null) {
+                serverLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.getDefaultInstance();
+              } else {
+                serverLogBuilder_.clear();
+              }
+              bitField0_ = (bitField0_ & ~0x00000004);
+              if (mainLogBuilder_ == null) {
+                mainLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.getDefaultInstance();
+              } else {
+                mainLogBuilder_.clear();
+              }
+              bitField0_ = (bitField0_ & ~0x00000008);
               return this;
             }
-            
+
             public Builder clone() {
-              return create().mergeFrom(result);
+              return create().mergeFrom(buildPartial());
             }
-            
+
             public com.google.gwt.dev.protobuf.Descriptors.Descriptor
                 getDescriptorForType() {
-              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.getDescriptor();
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_descriptor;
             }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog getDefaultInstanceForType() {
               return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.getDefaultInstance();
             }
-            
-            public boolean isInitialized() {
-              return result.isInitialized();
-            }
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog build() {
-              if (result != null && !isInitialized()) {
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog result = buildPartial();
+              if (!result.isInitialized()) {
                 throw newUninitializedMessageException(result);
               }
-              return buildPartial();
+              return result;
             }
-            
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog buildParsed()
-                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              if (!isInitialized()) {
-                throw newUninitializedMessageException(
-                  result).asInvalidProtocolBufferException();
-              }
-              return buildPartial();
-            }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog buildPartial() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "build() has already been called on this Builder.");
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog(this);
+              int from_bitField0_ = bitField0_;
+              int to_bitField0_ = 0;
+              if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+                to_bitField0_ |= 0x00000001;
               }
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog returnMe = result;
-              result = null;
-              return returnMe;
+              result.type_ = type_;
+              if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+                to_bitField0_ |= 0x00000002;
+              }
+              if (moduleLogBuilder_ == null) {
+                result.moduleLog_ = moduleLog_;
+              } else {
+                result.moduleLog_ = moduleLogBuilder_.build();
+              }
+              if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+                to_bitField0_ |= 0x00000004;
+              }
+              if (serverLogBuilder_ == null) {
+                result.serverLog_ = serverLog_;
+              } else {
+                result.serverLog_ = serverLogBuilder_.build();
+              }
+              if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+                to_bitField0_ |= 0x00000008;
+              }
+              if (mainLogBuilder_ == null) {
+                result.mainLog_ = mainLog_;
+              } else {
+                result.mainLog_ = mainLogBuilder_.build();
+              }
+              result.bitField0_ = to_bitField0_;
+              onBuilt();
+              return result;
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
               if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog) {
                 return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog)other);
@@ -1890,7 +4232,7 @@
                 return this;
               }
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog other) {
               if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.getDefaultInstance()) return this;
               if (other.hasType()) {
@@ -1908,441 +4250,1067 @@
               this.mergeUnknownFields(other.getUnknownFields());
               return this;
             }
-            
+
+            public final boolean isInitialized() {
+              if (hasModuleLog()) {
+                if (!getModuleLog().isInitialized()) {
+                  
+                  return false;
+                }
+              }
+              if (hasServerLog()) {
+                if (!getServerLog().isInitialized()) {
+                  
+                  return false;
+                }
+              }
+              return true;
+            }
+
             public Builder mergeFrom(
                 com.google.gwt.dev.protobuf.CodedInputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws java.io.IOException {
-              com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-                com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-                  this.getUnknownFields());
-              while (true) {
-                int tag = input.readTag();
-                switch (tag) {
-                  case 0:
-                    this.setUnknownFields(unknownFields.build());
-                    return this;
-                  default: {
-                    if (!parseUnknownField(input, unknownFields,
-                                           extensionRegistry, tag)) {
-                      this.setUnknownFields(unknownFields.build());
-                      return this;
-                    }
-                    break;
-                  }
-                  case 8: {
-                    int rawValue = input.readEnum();
-                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.LogType value = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.LogType.valueOf(rawValue);
-                    if (value == null) {
-                      unknownFields.mergeVarintField(1, rawValue);
-                    } else {
-                      setType(value);
-                    }
-                    break;
-                  }
-                  case 18: {
-                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.newBuilder();
-                    if (hasModuleLog()) {
-                      subBuilder.mergeFrom(getModuleLog());
-                    }
-                    input.readMessage(subBuilder, extensionRegistry);
-                    setModuleLog(subBuilder.buildPartial());
-                    break;
-                  }
-                  case 26: {
-                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.newBuilder();
-                    if (hasServerLog()) {
-                      subBuilder.mergeFrom(getServerLog());
-                    }
-                    input.readMessage(subBuilder, extensionRegistry);
-                    setServerLog(subBuilder.buildPartial());
-                    break;
-                  }
-                  case 34: {
-                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.newBuilder();
-                    if (hasMainLog()) {
-                      subBuilder.mergeFrom(getMainLog());
-                    }
-                    input.readMessage(subBuilder, extensionRegistry);
-                    setMainLog(subBuilder.buildPartial());
-                    break;
-                  }
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog parsedMessage = null;
+              try {
+                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+              } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+                parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog) e.getUnfinishedMessage();
+                throw e;
+              } finally {
+                if (parsedMessage != null) {
+                  mergeFrom(parsedMessage);
                 }
               }
+              return this;
             }
-            
-            
+            private int bitField0_;
+
             // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.LogType type = 1;
+            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.LogType type_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.LogType.MAIN;
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.LogType type = 1;</code>
+             */
             public boolean hasType() {
-              return result.hasType();
+              return ((bitField0_ & 0x00000001) == 0x00000001);
             }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.LogType type = 1;</code>
+             */
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.LogType getType() {
-              return result.getType();
+              return type_;
             }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.LogType type = 1;</code>
+             */
             public Builder setType(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.LogType value) {
               if (value == null) {
                 throw new NullPointerException();
               }
-              result.hasType = true;
-              result.type_ = value;
+              bitField0_ |= 0x00000001;
+              type_ = value;
+              onChanged();
               return this;
             }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.LogType type = 1;</code>
+             */
             public Builder clearType() {
-              result.hasType = false;
-              result.type_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.LogType.MAIN;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              type_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.LogType.MAIN;
+              onChanged();
               return this;
             }
-            
+
             // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ModuleLog moduleLog = 2;
+            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog moduleLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.getDefaultInstance();
+            private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLogOrBuilder> moduleLogBuilder_;
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ModuleLog moduleLog = 2;</code>
+             */
             public boolean hasModuleLog() {
-              return result.hasModuleLog();
+              return ((bitField0_ & 0x00000002) == 0x00000002);
             }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ModuleLog moduleLog = 2;</code>
+             */
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog getModuleLog() {
-              return result.getModuleLog();
+              if (moduleLogBuilder_ == null) {
+                return moduleLog_;
+              } else {
+                return moduleLogBuilder_.getMessage();
+              }
             }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ModuleLog moduleLog = 2;</code>
+             */
             public Builder setModuleLog(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog value) {
-              if (value == null) {
-                throw new NullPointerException();
+              if (moduleLogBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                moduleLog_ = value;
+                onChanged();
+              } else {
+                moduleLogBuilder_.setMessage(value);
               }
-              result.hasModuleLog = true;
-              result.moduleLog_ = value;
+              bitField0_ |= 0x00000002;
               return this;
             }
-            public Builder setModuleLog(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.Builder builderForValue) {
-              result.hasModuleLog = true;
-              result.moduleLog_ = builderForValue.build();
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ModuleLog moduleLog = 2;</code>
+             */
+            public Builder setModuleLog(
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.Builder builderForValue) {
+              if (moduleLogBuilder_ == null) {
+                moduleLog_ = builderForValue.build();
+                onChanged();
+              } else {
+                moduleLogBuilder_.setMessage(builderForValue.build());
+              }
+              bitField0_ |= 0x00000002;
               return this;
             }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ModuleLog moduleLog = 2;</code>
+             */
             public Builder mergeModuleLog(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog value) {
-              if (result.hasModuleLog() &&
-                  result.moduleLog_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.getDefaultInstance()) {
-                result.moduleLog_ =
-                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.newBuilder(result.moduleLog_).mergeFrom(value).buildPartial();
+              if (moduleLogBuilder_ == null) {
+                if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                    moduleLog_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.getDefaultInstance()) {
+                  moduleLog_ =
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.newBuilder(moduleLog_).mergeFrom(value).buildPartial();
+                } else {
+                  moduleLog_ = value;
+                }
+                onChanged();
               } else {
-                result.moduleLog_ = value;
+                moduleLogBuilder_.mergeFrom(value);
               }
-              result.hasModuleLog = true;
+              bitField0_ |= 0x00000002;
               return this;
             }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ModuleLog moduleLog = 2;</code>
+             */
             public Builder clearModuleLog() {
-              result.hasModuleLog = false;
-              result.moduleLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.getDefaultInstance();
+              if (moduleLogBuilder_ == null) {
+                moduleLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.getDefaultInstance();
+                onChanged();
+              } else {
+                moduleLogBuilder_.clear();
+              }
+              bitField0_ = (bitField0_ & ~0x00000002);
               return this;
             }
-            
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ModuleLog moduleLog = 2;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.Builder getModuleLogBuilder() {
+              bitField0_ |= 0x00000002;
+              onChanged();
+              return getModuleLogFieldBuilder().getBuilder();
+            }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ModuleLog moduleLog = 2;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLogOrBuilder getModuleLogOrBuilder() {
+              if (moduleLogBuilder_ != null) {
+                return moduleLogBuilder_.getMessageOrBuilder();
+              } else {
+                return moduleLog_;
+              }
+            }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ModuleLog moduleLog = 2;</code>
+             */
+            private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLogOrBuilder> 
+                getModuleLogFieldBuilder() {
+              if (moduleLogBuilder_ == null) {
+                moduleLogBuilder_ = new com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLogOrBuilder>(
+                        moduleLog_,
+                        getParentForChildren(),
+                        isClean());
+                moduleLog_ = null;
+              }
+              return moduleLogBuilder_;
+            }
+
             // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ServerLog serverLog = 3;
+            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog serverLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.getDefaultInstance();
+            private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLogOrBuilder> serverLogBuilder_;
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ServerLog serverLog = 3;</code>
+             */
             public boolean hasServerLog() {
-              return result.hasServerLog();
+              return ((bitField0_ & 0x00000004) == 0x00000004);
             }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ServerLog serverLog = 3;</code>
+             */
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog getServerLog() {
-              return result.getServerLog();
+              if (serverLogBuilder_ == null) {
+                return serverLog_;
+              } else {
+                return serverLogBuilder_.getMessage();
+              }
             }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ServerLog serverLog = 3;</code>
+             */
             public Builder setServerLog(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog value) {
-              if (value == null) {
-                throw new NullPointerException();
+              if (serverLogBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                serverLog_ = value;
+                onChanged();
+              } else {
+                serverLogBuilder_.setMessage(value);
               }
-              result.hasServerLog = true;
-              result.serverLog_ = value;
+              bitField0_ |= 0x00000004;
               return this;
             }
-            public Builder setServerLog(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.Builder builderForValue) {
-              result.hasServerLog = true;
-              result.serverLog_ = builderForValue.build();
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ServerLog serverLog = 3;</code>
+             */
+            public Builder setServerLog(
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.Builder builderForValue) {
+              if (serverLogBuilder_ == null) {
+                serverLog_ = builderForValue.build();
+                onChanged();
+              } else {
+                serverLogBuilder_.setMessage(builderForValue.build());
+              }
+              bitField0_ |= 0x00000004;
               return this;
             }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ServerLog serverLog = 3;</code>
+             */
             public Builder mergeServerLog(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog value) {
-              if (result.hasServerLog() &&
-                  result.serverLog_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.getDefaultInstance()) {
-                result.serverLog_ =
-                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.newBuilder(result.serverLog_).mergeFrom(value).buildPartial();
+              if (serverLogBuilder_ == null) {
+                if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                    serverLog_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.getDefaultInstance()) {
+                  serverLog_ =
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.newBuilder(serverLog_).mergeFrom(value).buildPartial();
+                } else {
+                  serverLog_ = value;
+                }
+                onChanged();
               } else {
-                result.serverLog_ = value;
+                serverLogBuilder_.mergeFrom(value);
               }
-              result.hasServerLog = true;
+              bitField0_ |= 0x00000004;
               return this;
             }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ServerLog serverLog = 3;</code>
+             */
             public Builder clearServerLog() {
-              result.hasServerLog = false;
-              result.serverLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.getDefaultInstance();
-              return this;
-            }
-            
-            // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.MainLog mainLog = 4;
-            public boolean hasMainLog() {
-              return result.hasMainLog();
-            }
-            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog getMainLog() {
-              return result.getMainLog();
-            }
-            public Builder setMainLog(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog value) {
-              if (value == null) {
-                throw new NullPointerException();
-              }
-              result.hasMainLog = true;
-              result.mainLog_ = value;
-              return this;
-            }
-            public Builder setMainLog(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.Builder builderForValue) {
-              result.hasMainLog = true;
-              result.mainLog_ = builderForValue.build();
-              return this;
-            }
-            public Builder mergeMainLog(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog value) {
-              if (result.hasMainLog() &&
-                  result.mainLog_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.getDefaultInstance()) {
-                result.mainLog_ =
-                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.newBuilder(result.mainLog_).mergeFrom(value).buildPartial();
+              if (serverLogBuilder_ == null) {
+                serverLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.getDefaultInstance();
+                onChanged();
               } else {
-                result.mainLog_ = value;
+                serverLogBuilder_.clear();
               }
-              result.hasMainLog = true;
+              bitField0_ = (bitField0_ & ~0x00000004);
               return this;
             }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ServerLog serverLog = 3;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.Builder getServerLogBuilder() {
+              bitField0_ |= 0x00000004;
+              onChanged();
+              return getServerLogFieldBuilder().getBuilder();
+            }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ServerLog serverLog = 3;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLogOrBuilder getServerLogOrBuilder() {
+              if (serverLogBuilder_ != null) {
+                return serverLogBuilder_.getMessageOrBuilder();
+              } else {
+                return serverLog_;
+              }
+            }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.ServerLog serverLog = 3;</code>
+             */
+            private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLogOrBuilder> 
+                getServerLogFieldBuilder() {
+              if (serverLogBuilder_ == null) {
+                serverLogBuilder_ = new com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLogOrBuilder>(
+                        serverLog_,
+                        getParentForChildren(),
+                        isClean());
+                serverLog_ = null;
+              }
+              return serverLogBuilder_;
+            }
+
+            // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.MainLog mainLog = 4;
+            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog mainLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.getDefaultInstance();
+            private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLogOrBuilder> mainLogBuilder_;
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.MainLog mainLog = 4;</code>
+             */
+            public boolean hasMainLog() {
+              return ((bitField0_ & 0x00000008) == 0x00000008);
+            }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.MainLog mainLog = 4;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog getMainLog() {
+              if (mainLogBuilder_ == null) {
+                return mainLog_;
+              } else {
+                return mainLogBuilder_.getMessage();
+              }
+            }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.MainLog mainLog = 4;</code>
+             */
+            public Builder setMainLog(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog value) {
+              if (mainLogBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                mainLog_ = value;
+                onChanged();
+              } else {
+                mainLogBuilder_.setMessage(value);
+              }
+              bitField0_ |= 0x00000008;
+              return this;
+            }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.MainLog mainLog = 4;</code>
+             */
+            public Builder setMainLog(
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.Builder builderForValue) {
+              if (mainLogBuilder_ == null) {
+                mainLog_ = builderForValue.build();
+                onChanged();
+              } else {
+                mainLogBuilder_.setMessage(builderForValue.build());
+              }
+              bitField0_ |= 0x00000008;
+              return this;
+            }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.MainLog mainLog = 4;</code>
+             */
+            public Builder mergeMainLog(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog value) {
+              if (mainLogBuilder_ == null) {
+                if (((bitField0_ & 0x00000008) == 0x00000008) &&
+                    mainLog_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.getDefaultInstance()) {
+                  mainLog_ =
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.newBuilder(mainLog_).mergeFrom(value).buildPartial();
+                } else {
+                  mainLog_ = value;
+                }
+                onChanged();
+              } else {
+                mainLogBuilder_.mergeFrom(value);
+              }
+              bitField0_ |= 0x00000008;
+              return this;
+            }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.MainLog mainLog = 4;</code>
+             */
             public Builder clearMainLog() {
-              result.hasMainLog = false;
-              result.mainLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.getDefaultInstance();
+              if (mainLogBuilder_ == null) {
+                mainLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.getDefaultInstance();
+                onChanged();
+              } else {
+                mainLogBuilder_.clear();
+              }
+              bitField0_ = (bitField0_ & ~0x00000008);
               return this;
             }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.MainLog mainLog = 4;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.Builder getMainLogBuilder() {
+              bitField0_ |= 0x00000008;
+              onChanged();
+              return getMainLogFieldBuilder().getBuilder();
+            }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.MainLog mainLog = 4;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLogOrBuilder getMainLogOrBuilder() {
+              if (mainLogBuilder_ != null) {
+                return mainLogBuilder_.getMessageOrBuilder();
+              } else {
+                return mainLog_;
+              }
+            }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog.MainLog mainLog = 4;</code>
+             */
+            private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLogOrBuilder> 
+                getMainLogFieldBuilder() {
+              if (mainLogBuilder_ == null) {
+                mainLogBuilder_ = new com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLogOrBuilder>(
+                        mainLog_,
+                        getParentForChildren(),
+                        isClean());
+                mainLog_ = null;
+              }
+              return mainLogBuilder_;
+            }
+
+            // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog)
           }
-          
+
           static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
+            defaultInstance = new AddLog(true);
+            defaultInstance.initFields();
           }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-          }
+
+          // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog)
         }
-        
+
+        public interface LogDataOrBuilder
+            extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+
+          // required string summary = 1;
+          /**
+           * <code>required string summary = 1;</code>
+           */
+          boolean hasSummary();
+          /**
+           * <code>required string summary = 1;</code>
+           */
+          java.lang.String getSummary();
+          /**
+           * <code>required string summary = 1;</code>
+           */
+          com.google.gwt.dev.protobuf.ByteString
+              getSummaryBytes();
+
+          // optional string level = 2;
+          /**
+           * <code>optional string level = 2;</code>
+           */
+          boolean hasLevel();
+          /**
+           * <code>optional string level = 2;</code>
+           */
+          java.lang.String getLevel();
+          /**
+           * <code>optional string level = 2;</code>
+           */
+          com.google.gwt.dev.protobuf.ByteString
+              getLevelBytes();
+
+          // optional bool needsAttention = 3;
+          /**
+           * <code>optional bool needsAttention = 3;</code>
+           */
+          boolean hasNeedsAttention();
+          /**
+           * <code>optional bool needsAttention = 3;</code>
+           */
+          boolean getNeedsAttention();
+
+          // optional string details = 4;
+          /**
+           * <code>optional string details = 4;</code>
+           */
+          boolean hasDetails();
+          /**
+           * <code>optional string details = 4;</code>
+           */
+          java.lang.String getDetails();
+          /**
+           * <code>optional string details = 4;</code>
+           */
+          com.google.gwt.dev.protobuf.ByteString
+              getDetailsBytes();
+
+          // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData.HelpInfo helpInfo = 5;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData.HelpInfo helpInfo = 5;</code>
+           */
+          boolean hasHelpInfo();
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData.HelpInfo helpInfo = 5;</code>
+           */
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo getHelpInfo();
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData.HelpInfo helpInfo = 5;</code>
+           */
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfoOrBuilder getHelpInfoOrBuilder();
+        }
+        /**
+         * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData}
+         *
+         * <pre>
+         * The data for a log entry
+         * </pre>
+         */
         public static final class LogData extends
-            com.google.gwt.dev.protobuf.GeneratedMessage {
+            com.google.gwt.dev.protobuf.GeneratedMessage
+            implements LogDataOrBuilder {
           // Use LogData.newBuilder() to construct.
-          private LogData() {}
-          
-          private static final LogData defaultInstance = new LogData();
+          private LogData(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+            super(builder);
+            this.unknownFields = builder.getUnknownFields();
+          }
+          private LogData(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+          private static final LogData defaultInstance;
           public static LogData getDefaultInstance() {
             return defaultInstance;
           }
-          
+
           public LogData getDefaultInstanceForType() {
             return defaultInstance;
           }
-          
+
+          private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+          @java.lang.Override
+          public final com.google.gwt.dev.protobuf.UnknownFieldSet
+              getUnknownFields() {
+            return this.unknownFields;
+          }
+          private LogData(
+              com.google.gwt.dev.protobuf.CodedInputStream input,
+              com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+            initFields();
+            int mutable_bitField0_ = 0;
+            com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+                com.google.gwt.dev.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;
+                    summary_ = input.readBytes();
+                    break;
+                  }
+                  case 18: {
+                    bitField0_ |= 0x00000002;
+                    level_ = input.readBytes();
+                    break;
+                  }
+                  case 24: {
+                    bitField0_ |= 0x00000004;
+                    needsAttention_ = input.readBool();
+                    break;
+                  }
+                  case 34: {
+                    bitField0_ |= 0x00000008;
+                    details_ = input.readBytes();
+                    break;
+                  }
+                  case 42: {
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.Builder subBuilder = null;
+                    if (((bitField0_ & 0x00000010) == 0x00000010)) {
+                      subBuilder = helpInfo_.toBuilder();
+                    }
+                    helpInfo_ = input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.PARSER, extensionRegistry);
+                    if (subBuilder != null) {
+                      subBuilder.mergeFrom(helpInfo_);
+                      helpInfo_ = subBuilder.buildPartial();
+                    }
+                    bitField0_ |= 0x00000010;
+                    break;
+                  }
+                }
+              }
+            } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+              throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+              throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+                  e.getMessage()).setUnfinishedMessage(this);
+            } finally {
+              this.unknownFields = unknownFields.build();
+              makeExtensionsImmutable();
+            }
+          }
           public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
               getDescriptor() {
             return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_LogData_descriptor;
           }
-          
+
           protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
               internalGetFieldAccessorTable() {
-            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_LogData_fieldAccessorTable;
+            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_LogData_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.Builder.class);
           }
-          
+
+          public static com.google.gwt.dev.protobuf.Parser<LogData> PARSER =
+              new com.google.gwt.dev.protobuf.AbstractParser<LogData>() {
+            public LogData parsePartialFrom(
+                com.google.gwt.dev.protobuf.CodedInputStream input,
+                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              return new LogData(input, extensionRegistry);
+            }
+          };
+
+          @java.lang.Override
+          public com.google.gwt.dev.protobuf.Parser<LogData> getParserForType() {
+            return PARSER;
+          }
+
+          public interface HelpInfoOrBuilder
+              extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+
+            // optional string url = 1;
+            /**
+             * <code>optional string url = 1;</code>
+             */
+            boolean hasUrl();
+            /**
+             * <code>optional string url = 1;</code>
+             */
+            java.lang.String getUrl();
+            /**
+             * <code>optional string url = 1;</code>
+             */
+            com.google.gwt.dev.protobuf.ByteString
+                getUrlBytes();
+
+            // optional string text = 2;
+            /**
+             * <code>optional string text = 2;</code>
+             */
+            boolean hasText();
+            /**
+             * <code>optional string text = 2;</code>
+             */
+            java.lang.String getText();
+            /**
+             * <code>optional string text = 2;</code>
+             */
+            com.google.gwt.dev.protobuf.ByteString
+                getTextBytes();
+          }
+          /**
+           * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData.HelpInfo}
+           *
+           * <pre>
+           * The HelpInfo portion of the log entry       
+           * </pre>
+           */
           public static final class HelpInfo extends
-              com.google.gwt.dev.protobuf.GeneratedMessage {
+              com.google.gwt.dev.protobuf.GeneratedMessage
+              implements HelpInfoOrBuilder {
             // Use HelpInfo.newBuilder() to construct.
-            private HelpInfo() {}
-            
-            private static final HelpInfo defaultInstance = new HelpInfo();
+            private HelpInfo(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+              super(builder);
+              this.unknownFields = builder.getUnknownFields();
+            }
+            private HelpInfo(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+            private static final HelpInfo defaultInstance;
             public static HelpInfo getDefaultInstance() {
               return defaultInstance;
             }
-            
+
             public HelpInfo getDefaultInstanceForType() {
               return defaultInstance;
             }
-            
+
+            private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+            @java.lang.Override
+            public final com.google.gwt.dev.protobuf.UnknownFieldSet
+                getUnknownFields() {
+              return this.unknownFields;
+            }
+            private HelpInfo(
+                com.google.gwt.dev.protobuf.CodedInputStream input,
+                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              initFields();
+              int mutable_bitField0_ = 0;
+              com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+                  com.google.gwt.dev.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;
+                      url_ = input.readBytes();
+                      break;
+                    }
+                    case 18: {
+                      bitField0_ |= 0x00000002;
+                      text_ = input.readBytes();
+                      break;
+                    }
+                  }
+                }
+              } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+              } catch (java.io.IOException e) {
+                throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+                    e.getMessage()).setUnfinishedMessage(this);
+              } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
+              }
+            }
             public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
                 getDescriptor() {
               return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_LogData_HelpInfo_descriptor;
             }
-            
+
             protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
                 internalGetFieldAccessorTable() {
-              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_LogData_HelpInfo_fieldAccessorTable;
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_LogData_HelpInfo_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.Builder.class);
             }
-            
+
+            public static com.google.gwt.dev.protobuf.Parser<HelpInfo> PARSER =
+                new com.google.gwt.dev.protobuf.AbstractParser<HelpInfo>() {
+              public HelpInfo parsePartialFrom(
+                  com.google.gwt.dev.protobuf.CodedInputStream input,
+                  com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                  throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+                return new HelpInfo(input, extensionRegistry);
+              }
+            };
+
+            @java.lang.Override
+            public com.google.gwt.dev.protobuf.Parser<HelpInfo> getParserForType() {
+              return PARSER;
+            }
+
+            private int bitField0_;
             // optional string url = 1;
             public static final int URL_FIELD_NUMBER = 1;
-            private boolean hasUrl;
-            private java.lang.String url_ = "";
-            public boolean hasUrl() { return hasUrl; }
-            public java.lang.String getUrl() { return url_; }
-            
+            private java.lang.Object url_;
+            /**
+             * <code>optional string url = 1;</code>
+             */
+            public boolean hasUrl() {
+              return ((bitField0_ & 0x00000001) == 0x00000001);
+            }
+            /**
+             * <code>optional string url = 1;</code>
+             */
+            public java.lang.String getUrl() {
+              java.lang.Object ref = url_;
+              if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+              } else {
+                com.google.gwt.dev.protobuf.ByteString bs = 
+                    (com.google.gwt.dev.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                if (bs.isValidUtf8()) {
+                  url_ = s;
+                }
+                return s;
+              }
+            }
+            /**
+             * <code>optional string url = 1;</code>
+             */
+            public com.google.gwt.dev.protobuf.ByteString
+                getUrlBytes() {
+              java.lang.Object ref = url_;
+              if (ref instanceof java.lang.String) {
+                com.google.gwt.dev.protobuf.ByteString b = 
+                    com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                        (java.lang.String) ref);
+                url_ = b;
+                return b;
+              } else {
+                return (com.google.gwt.dev.protobuf.ByteString) ref;
+              }
+            }
+
             // optional string text = 2;
             public static final int TEXT_FIELD_NUMBER = 2;
-            private boolean hasText;
-            private java.lang.String text_ = "";
-            public boolean hasText() { return hasText; }
-            public java.lang.String getText() { return text_; }
-            
+            private java.lang.Object text_;
+            /**
+             * <code>optional string text = 2;</code>
+             */
+            public boolean hasText() {
+              return ((bitField0_ & 0x00000002) == 0x00000002);
+            }
+            /**
+             * <code>optional string text = 2;</code>
+             */
+            public java.lang.String getText() {
+              java.lang.Object ref = text_;
+              if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
+              } else {
+                com.google.gwt.dev.protobuf.ByteString bs = 
+                    (com.google.gwt.dev.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                if (bs.isValidUtf8()) {
+                  text_ = s;
+                }
+                return s;
+              }
+            }
+            /**
+             * <code>optional string text = 2;</code>
+             */
+            public com.google.gwt.dev.protobuf.ByteString
+                getTextBytes() {
+              java.lang.Object ref = text_;
+              if (ref instanceof java.lang.String) {
+                com.google.gwt.dev.protobuf.ByteString b = 
+                    com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                        (java.lang.String) ref);
+                text_ = b;
+                return b;
+              } else {
+                return (com.google.gwt.dev.protobuf.ByteString) ref;
+              }
+            }
+
+            private void initFields() {
+              url_ = "";
+              text_ = "";
+            }
+            private byte memoizedIsInitialized = -1;
             public final boolean isInitialized() {
+              byte isInitialized = memoizedIsInitialized;
+              if (isInitialized != -1) return isInitialized == 1;
+
+              memoizedIsInitialized = 1;
               return true;
             }
-            
+
             public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
                                 throws java.io.IOException {
-              if (hasUrl()) {
-                output.writeString(1, getUrl());
+              getSerializedSize();
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                output.writeBytes(1, getUrlBytes());
               }
-              if (hasText()) {
-                output.writeString(2, getText());
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                output.writeBytes(2, getTextBytes());
               }
               getUnknownFields().writeTo(output);
             }
-            
+
             private int memoizedSerializedSize = -1;
             public int getSerializedSize() {
               int size = memoizedSerializedSize;
               if (size != -1) return size;
-            
+
               size = 0;
-              if (hasUrl()) {
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                 size += com.google.gwt.dev.protobuf.CodedOutputStream
-                  .computeStringSize(1, getUrl());
+                  .computeBytesSize(1, getUrlBytes());
               }
-              if (hasText()) {
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                 size += com.google.gwt.dev.protobuf.CodedOutputStream
-                  .computeStringSize(2, getText());
+                  .computeBytesSize(2, getTextBytes());
               }
               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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo parseFrom(
                 com.google.gwt.dev.protobuf.ByteString data)
                 throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              return newBuilder().mergeFrom(data).buildParsed();
+              return PARSER.parseFrom(data);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo parseFrom(
                 com.google.gwt.dev.protobuf.ByteString data,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              return newBuilder().mergeFrom(data, extensionRegistry)
-                       .buildParsed();
+              return PARSER.parseFrom(data, extensionRegistry);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo parseFrom(byte[] data)
                 throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              return newBuilder().mergeFrom(data).buildParsed();
+              return PARSER.parseFrom(data);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo parseFrom(
                 byte[] data,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              return newBuilder().mergeFrom(data, extensionRegistry)
-                       .buildParsed();
+              return PARSER.parseFrom(data, extensionRegistry);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo parseFrom(java.io.InputStream input)
                 throws java.io.IOException {
-              return newBuilder().mergeFrom(input).buildParsed();
+              return PARSER.parseFrom(input);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo parseFrom(
                 java.io.InputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws java.io.IOException {
-              return newBuilder().mergeFrom(input, extensionRegistry)
-                       .buildParsed();
+              return PARSER.parseFrom(input, extensionRegistry);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo parseDelimitedFrom(java.io.InputStream input)
                 throws java.io.IOException {
-              return newBuilder().mergeDelimitedFrom(input).buildParsed();
+              return PARSER.parseDelimitedFrom(input);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo parseDelimitedFrom(
                 java.io.InputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws java.io.IOException {
-              return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                       .buildParsed();
+              return PARSER.parseDelimitedFrom(input, extensionRegistry);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo parseFrom(
                 com.google.gwt.dev.protobuf.CodedInputStream input)
                 throws java.io.IOException {
-              return newBuilder().mergeFrom(input).buildParsed();
+              return PARSER.parseFrom(input);
             }
             public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo parseFrom(
                 com.google.gwt.dev.protobuf.CodedInputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws java.io.IOException {
-              return newBuilder().mergeFrom(input, extensionRegistry)
-                       .buildParsed();
+              return PARSER.parseFrom(input, extensionRegistry);
             }
-            
+
             public static Builder newBuilder() { return Builder.create(); }
             public Builder newBuilderForType() { return newBuilder(); }
             public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo prototype) {
               return newBuilder().mergeFrom(prototype);
             }
             public Builder toBuilder() { return newBuilder(this); }
-            
+
+            @java.lang.Override
+            protected Builder newBuilderForType(
+                com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+              Builder builder = new Builder(parent);
+              return builder;
+            }
+            /**
+             * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData.HelpInfo}
+             *
+             * <pre>
+             * The HelpInfo portion of the log entry       
+             * </pre>
+             */
             public static final class Builder extends
-                com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-              private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo result;
-              
+                com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+               implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfoOrBuilder {
+              public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+                  getDescriptor() {
+                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_LogData_HelpInfo_descriptor;
+              }
+
+              protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+                  internalGetFieldAccessorTable() {
+                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_LogData_HelpInfo_fieldAccessorTable
+                    .ensureFieldAccessorsInitialized(
+                        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.Builder.class);
+              }
+
               // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.newBuilder()
-              private Builder() {}
-              
-              private static Builder create() {
-                Builder builder = new Builder();
-                builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo();
-                return builder;
+              private Builder() {
+                maybeForceBuilderInitialization();
               }
-              
-              protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo internalGetResult() {
-                return result;
+
+              private Builder(
+                  com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+                super(parent);
+                maybeForceBuilderInitialization();
               }
-              
-              public Builder clear() {
-                if (result == null) {
-                  throw new IllegalStateException(
-                    "Cannot call clear() after build().");
+              private void maybeForceBuilderInitialization() {
+                if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
                 }
-                result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo();
+              }
+              private static Builder create() {
+                return new Builder();
+              }
+
+              public Builder clear() {
+                super.clear();
+                url_ = "";
+                bitField0_ = (bitField0_ & ~0x00000001);
+                text_ = "";
+                bitField0_ = (bitField0_ & ~0x00000002);
                 return this;
               }
-              
+
               public Builder clone() {
-                return create().mergeFrom(result);
+                return create().mergeFrom(buildPartial());
               }
-              
+
               public com.google.gwt.dev.protobuf.Descriptors.Descriptor
                   getDescriptorForType() {
-                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.getDescriptor();
+                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_LogData_HelpInfo_descriptor;
               }
-              
+
               public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo getDefaultInstanceForType() {
                 return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.getDefaultInstance();
               }
-              
-              public boolean isInitialized() {
-                return result.isInitialized();
-              }
+
               public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo build() {
-                if (result != null && !isInitialized()) {
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo result = buildPartial();
+                if (!result.isInitialized()) {
                   throw newUninitializedMessageException(result);
                 }
-                return buildPartial();
+                return result;
               }
-              
-              private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo buildParsed()
-                  throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-                if (!isInitialized()) {
-                  throw newUninitializedMessageException(
-                    result).asInvalidProtocolBufferException();
-                }
-                return buildPartial();
-              }
-              
+
               public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo buildPartial() {
-                if (result == null) {
-                  throw new IllegalStateException(
-                    "build() has already been called on this Builder.");
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo(this);
+                int from_bitField0_ = bitField0_;
+                int to_bitField0_ = 0;
+                if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+                  to_bitField0_ |= 0x00000001;
                 }
-                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo returnMe = result;
-                result = null;
-                return returnMe;
+                result.url_ = url_;
+                if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+                  to_bitField0_ |= 0x00000002;
+                }
+                result.text_ = text_;
+                result.bitField0_ = to_bitField0_;
+                onBuilt();
+                return result;
               }
-              
+
               public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
                 if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo) {
                   return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo)other);
@@ -2351,329 +5319,632 @@
                   return this;
                 }
               }
-              
+
               public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo other) {
                 if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.getDefaultInstance()) return this;
                 if (other.hasUrl()) {
-                  setUrl(other.getUrl());
+                  bitField0_ |= 0x00000001;
+                  url_ = other.url_;
+                  onChanged();
                 }
                 if (other.hasText()) {
-                  setText(other.getText());
+                  bitField0_ |= 0x00000002;
+                  text_ = other.text_;
+                  onChanged();
                 }
                 this.mergeUnknownFields(other.getUnknownFields());
                 return this;
               }
-              
+
+              public final boolean isInitialized() {
+                return true;
+              }
+
               public Builder mergeFrom(
                   com.google.gwt.dev.protobuf.CodedInputStream input,
                   com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                   throws java.io.IOException {
-                com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-                  com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-                    this.getUnknownFields());
-                while (true) {
-                  int tag = input.readTag();
-                  switch (tag) {
-                    case 0:
-                      this.setUnknownFields(unknownFields.build());
-                      return this;
-                    default: {
-                      if (!parseUnknownField(input, unknownFields,
-                                             extensionRegistry, tag)) {
-                        this.setUnknownFields(unknownFields.build());
-                        return this;
-                      }
-                      break;
-                    }
-                    case 10: {
-                      setUrl(input.readString());
-                      break;
-                    }
-                    case 18: {
-                      setText(input.readString());
-                      break;
-                    }
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo parsedMessage = null;
+                try {
+                  parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+                  parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo) e.getUnfinishedMessage();
+                  throw e;
+                } finally {
+                  if (parsedMessage != null) {
+                    mergeFrom(parsedMessage);
                   }
                 }
+                return this;
               }
-              
-              
+              private int bitField0_;
+
               // optional string url = 1;
+              private java.lang.Object url_ = "";
+              /**
+               * <code>optional string url = 1;</code>
+               */
               public boolean hasUrl() {
-                return result.hasUrl();
+                return ((bitField0_ & 0x00000001) == 0x00000001);
               }
+              /**
+               * <code>optional string url = 1;</code>
+               */
               public java.lang.String getUrl() {
-                return result.getUrl();
+                java.lang.Object ref = url_;
+                if (!(ref instanceof java.lang.String)) {
+                  java.lang.String s = ((com.google.gwt.dev.protobuf.ByteString) ref)
+                      .toStringUtf8();
+                  url_ = s;
+                  return s;
+                } else {
+                  return (java.lang.String) ref;
+                }
               }
-              public Builder setUrl(java.lang.String value) {
+              /**
+               * <code>optional string url = 1;</code>
+               */
+              public com.google.gwt.dev.protobuf.ByteString
+                  getUrlBytes() {
+                java.lang.Object ref = url_;
+                if (ref instanceof String) {
+                  com.google.gwt.dev.protobuf.ByteString b = 
+                      com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                          (java.lang.String) ref);
+                  url_ = b;
+                  return b;
+                } else {
+                  return (com.google.gwt.dev.protobuf.ByteString) ref;
+                }
+              }
+              /**
+               * <code>optional string url = 1;</code>
+               */
+              public Builder setUrl(
+                  java.lang.String value) {
                 if (value == null) {
     throw new NullPointerException();
   }
-  result.hasUrl = true;
-                result.url_ = value;
+  bitField0_ |= 0x00000001;
+                url_ = value;
+                onChanged();
                 return this;
               }
+              /**
+               * <code>optional string url = 1;</code>
+               */
               public Builder clearUrl() {
-                result.hasUrl = false;
-                result.url_ = getDefaultInstance().getUrl();
+                bitField0_ = (bitField0_ & ~0x00000001);
+                url_ = getDefaultInstance().getUrl();
+                onChanged();
                 return this;
               }
-              
-              // optional string text = 2;
-              public boolean hasText() {
-                return result.hasText();
-              }
-              public java.lang.String getText() {
-                return result.getText();
-              }
-              public Builder setText(java.lang.String value) {
+              /**
+               * <code>optional string url = 1;</code>
+               */
+              public Builder setUrlBytes(
+                  com.google.gwt.dev.protobuf.ByteString value) {
                 if (value == null) {
     throw new NullPointerException();
   }
-  result.hasText = true;
-                result.text_ = value;
+  bitField0_ |= 0x00000001;
+                url_ = value;
+                onChanged();
                 return this;
               }
+
+              // optional string text = 2;
+              private java.lang.Object text_ = "";
+              /**
+               * <code>optional string text = 2;</code>
+               */
+              public boolean hasText() {
+                return ((bitField0_ & 0x00000002) == 0x00000002);
+              }
+              /**
+               * <code>optional string text = 2;</code>
+               */
+              public java.lang.String getText() {
+                java.lang.Object ref = text_;
+                if (!(ref instanceof java.lang.String)) {
+                  java.lang.String s = ((com.google.gwt.dev.protobuf.ByteString) ref)
+                      .toStringUtf8();
+                  text_ = s;
+                  return s;
+                } else {
+                  return (java.lang.String) ref;
+                }
+              }
+              /**
+               * <code>optional string text = 2;</code>
+               */
+              public com.google.gwt.dev.protobuf.ByteString
+                  getTextBytes() {
+                java.lang.Object ref = text_;
+                if (ref instanceof String) {
+                  com.google.gwt.dev.protobuf.ByteString b = 
+                      com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                          (java.lang.String) ref);
+                  text_ = b;
+                  return b;
+                } else {
+                  return (com.google.gwt.dev.protobuf.ByteString) ref;
+                }
+              }
+              /**
+               * <code>optional string text = 2;</code>
+               */
+              public Builder setText(
+                  java.lang.String value) {
+                if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+                text_ = value;
+                onChanged();
+                return this;
+              }
+              /**
+               * <code>optional string text = 2;</code>
+               */
               public Builder clearText() {
-                result.hasText = false;
-                result.text_ = getDefaultInstance().getText();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                text_ = getDefaultInstance().getText();
+                onChanged();
                 return this;
               }
+              /**
+               * <code>optional string text = 2;</code>
+               */
+              public Builder setTextBytes(
+                  com.google.gwt.dev.protobuf.ByteString value) {
+                if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+                text_ = value;
+                onChanged();
+                return this;
+              }
+
+              // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData.HelpInfo)
             }
-            
+
             static {
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
+              defaultInstance = new HelpInfo(true);
+              defaultInstance.initFields();
             }
-            
-            static {
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-            }
+
+            // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData.HelpInfo)
           }
-          
+
+          private int bitField0_;
           // required string summary = 1;
           public static final int SUMMARY_FIELD_NUMBER = 1;
-          private boolean hasSummary;
-          private java.lang.String summary_ = "";
-          public boolean hasSummary() { return hasSummary; }
-          public java.lang.String getSummary() { return summary_; }
-          
+          private java.lang.Object summary_;
+          /**
+           * <code>required string summary = 1;</code>
+           */
+          public boolean hasSummary() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>required string summary = 1;</code>
+           */
+          public java.lang.String getSummary() {
+            java.lang.Object ref = summary_;
+            if (ref instanceof java.lang.String) {
+              return (java.lang.String) ref;
+            } else {
+              com.google.gwt.dev.protobuf.ByteString bs = 
+                  (com.google.gwt.dev.protobuf.ByteString) ref;
+              java.lang.String s = bs.toStringUtf8();
+              if (bs.isValidUtf8()) {
+                summary_ = s;
+              }
+              return s;
+            }
+          }
+          /**
+           * <code>required string summary = 1;</code>
+           */
+          public com.google.gwt.dev.protobuf.ByteString
+              getSummaryBytes() {
+            java.lang.Object ref = summary_;
+            if (ref instanceof java.lang.String) {
+              com.google.gwt.dev.protobuf.ByteString b = 
+                  com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                      (java.lang.String) ref);
+              summary_ = b;
+              return b;
+            } else {
+              return (com.google.gwt.dev.protobuf.ByteString) ref;
+            }
+          }
+
           // optional string level = 2;
           public static final int LEVEL_FIELD_NUMBER = 2;
-          private boolean hasLevel;
-          private java.lang.String level_ = "";
-          public boolean hasLevel() { return hasLevel; }
-          public java.lang.String getLevel() { return level_; }
-          
+          private java.lang.Object level_;
+          /**
+           * <code>optional string level = 2;</code>
+           */
+          public boolean hasLevel() {
+            return ((bitField0_ & 0x00000002) == 0x00000002);
+          }
+          /**
+           * <code>optional string level = 2;</code>
+           */
+          public java.lang.String getLevel() {
+            java.lang.Object ref = level_;
+            if (ref instanceof java.lang.String) {
+              return (java.lang.String) ref;
+            } else {
+              com.google.gwt.dev.protobuf.ByteString bs = 
+                  (com.google.gwt.dev.protobuf.ByteString) ref;
+              java.lang.String s = bs.toStringUtf8();
+              if (bs.isValidUtf8()) {
+                level_ = s;
+              }
+              return s;
+            }
+          }
+          /**
+           * <code>optional string level = 2;</code>
+           */
+          public com.google.gwt.dev.protobuf.ByteString
+              getLevelBytes() {
+            java.lang.Object ref = level_;
+            if (ref instanceof java.lang.String) {
+              com.google.gwt.dev.protobuf.ByteString b = 
+                  com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                      (java.lang.String) ref);
+              level_ = b;
+              return b;
+            } else {
+              return (com.google.gwt.dev.protobuf.ByteString) ref;
+            }
+          }
+
           // optional bool needsAttention = 3;
           public static final int NEEDSATTENTION_FIELD_NUMBER = 3;
-          private boolean hasNeedsAttention;
-          private boolean needsAttention_ = false;
-          public boolean hasNeedsAttention() { return hasNeedsAttention; }
-          public boolean getNeedsAttention() { return needsAttention_; }
-          
+          private boolean needsAttention_;
+          /**
+           * <code>optional bool needsAttention = 3;</code>
+           */
+          public boolean hasNeedsAttention() {
+            return ((bitField0_ & 0x00000004) == 0x00000004);
+          }
+          /**
+           * <code>optional bool needsAttention = 3;</code>
+           */
+          public boolean getNeedsAttention() {
+            return needsAttention_;
+          }
+
           // optional string details = 4;
           public static final int DETAILS_FIELD_NUMBER = 4;
-          private boolean hasDetails;
-          private java.lang.String details_ = "";
-          public boolean hasDetails() { return hasDetails; }
-          public java.lang.String getDetails() { return details_; }
-          
+          private java.lang.Object details_;
+          /**
+           * <code>optional string details = 4;</code>
+           */
+          public boolean hasDetails() {
+            return ((bitField0_ & 0x00000008) == 0x00000008);
+          }
+          /**
+           * <code>optional string details = 4;</code>
+           */
+          public java.lang.String getDetails() {
+            java.lang.Object ref = details_;
+            if (ref instanceof java.lang.String) {
+              return (java.lang.String) ref;
+            } else {
+              com.google.gwt.dev.protobuf.ByteString bs = 
+                  (com.google.gwt.dev.protobuf.ByteString) ref;
+              java.lang.String s = bs.toStringUtf8();
+              if (bs.isValidUtf8()) {
+                details_ = s;
+              }
+              return s;
+            }
+          }
+          /**
+           * <code>optional string details = 4;</code>
+           */
+          public com.google.gwt.dev.protobuf.ByteString
+              getDetailsBytes() {
+            java.lang.Object ref = details_;
+            if (ref instanceof java.lang.String) {
+              com.google.gwt.dev.protobuf.ByteString b = 
+                  com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                      (java.lang.String) ref);
+              details_ = b;
+              return b;
+            } else {
+              return (com.google.gwt.dev.protobuf.ByteString) ref;
+            }
+          }
+
           // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData.HelpInfo helpInfo = 5;
           public static final int HELPINFO_FIELD_NUMBER = 5;
-          private boolean hasHelpInfo;
-          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo helpInfo_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.getDefaultInstance();
-          public boolean hasHelpInfo() { return hasHelpInfo; }
-          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo getHelpInfo() { return helpInfo_; }
-          
+          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo helpInfo_;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData.HelpInfo helpInfo = 5;</code>
+           */
+          public boolean hasHelpInfo() {
+            return ((bitField0_ & 0x00000010) == 0x00000010);
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData.HelpInfo helpInfo = 5;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo getHelpInfo() {
+            return helpInfo_;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData.HelpInfo helpInfo = 5;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfoOrBuilder getHelpInfoOrBuilder() {
+            return helpInfo_;
+          }
+
+          private void initFields() {
+            summary_ = "";
+            level_ = "";
+            needsAttention_ = false;
+            details_ = "";
+            helpInfo_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.getDefaultInstance();
+          }
+          private byte memoizedIsInitialized = -1;
           public final boolean isInitialized() {
-            if (!hasSummary) return false;
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized != -1) return isInitialized == 1;
+
+            if (!hasSummary()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+            memoizedIsInitialized = 1;
             return true;
           }
-          
+
           public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
                               throws java.io.IOException {
-            if (hasSummary()) {
-              output.writeString(1, getSummary());
+            getSerializedSize();
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              output.writeBytes(1, getSummaryBytes());
             }
-            if (hasLevel()) {
-              output.writeString(2, getLevel());
+            if (((bitField0_ & 0x00000002) == 0x00000002)) {
+              output.writeBytes(2, getLevelBytes());
             }
-            if (hasNeedsAttention()) {
-              output.writeBool(3, getNeedsAttention());
+            if (((bitField0_ & 0x00000004) == 0x00000004)) {
+              output.writeBool(3, needsAttention_);
             }
-            if (hasDetails()) {
-              output.writeString(4, getDetails());
+            if (((bitField0_ & 0x00000008) == 0x00000008)) {
+              output.writeBytes(4, getDetailsBytes());
             }
-            if (hasHelpInfo()) {
-              output.writeMessage(5, getHelpInfo());
+            if (((bitField0_ & 0x00000010) == 0x00000010)) {
+              output.writeMessage(5, helpInfo_);
             }
             getUnknownFields().writeTo(output);
           }
-          
+
           private int memoizedSerializedSize = -1;
           public int getSerializedSize() {
             int size = memoizedSerializedSize;
             if (size != -1) return size;
-          
+
             size = 0;
-            if (hasSummary()) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
               size += com.google.gwt.dev.protobuf.CodedOutputStream
-                .computeStringSize(1, getSummary());
+                .computeBytesSize(1, getSummaryBytes());
             }
-            if (hasLevel()) {
+            if (((bitField0_ & 0x00000002) == 0x00000002)) {
               size += com.google.gwt.dev.protobuf.CodedOutputStream
-                .computeStringSize(2, getLevel());
+                .computeBytesSize(2, getLevelBytes());
             }
-            if (hasNeedsAttention()) {
+            if (((bitField0_ & 0x00000004) == 0x00000004)) {
               size += com.google.gwt.dev.protobuf.CodedOutputStream
-                .computeBoolSize(3, getNeedsAttention());
+                .computeBoolSize(3, needsAttention_);
             }
-            if (hasDetails()) {
+            if (((bitField0_ & 0x00000008) == 0x00000008)) {
               size += com.google.gwt.dev.protobuf.CodedOutputStream
-                .computeStringSize(4, getDetails());
+                .computeBytesSize(4, getDetailsBytes());
             }
-            if (hasHelpInfo()) {
+            if (((bitField0_ & 0x00000010) == 0x00000010)) {
               size += com.google.gwt.dev.protobuf.CodedOutputStream
-                .computeMessageSize(5, getHelpInfo());
+                .computeMessageSize(5, helpInfo_);
             }
             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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData parseFrom(
               com.google.gwt.dev.protobuf.ByteString data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData parseFrom(
               com.google.gwt.dev.protobuf.ByteString data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData parseFrom(byte[] data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData parseFrom(
               byte[] data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData parseFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData parseFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData parseDelimitedFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input).buildParsed();
+            return PARSER.parseDelimitedFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData parseDelimitedFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseDelimitedFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
-          
+
           public static Builder newBuilder() { return Builder.create(); }
           public Builder newBuilderForType() { return newBuilder(); }
           public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData prototype) {
             return newBuilder().mergeFrom(prototype);
           }
           public Builder toBuilder() { return newBuilder(this); }
-          
+
+          @java.lang.Override
+          protected Builder newBuilderForType(
+              com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+          }
+          /**
+           * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData}
+           *
+           * <pre>
+           * The data for a log entry
+           * </pre>
+           */
           public static final class Builder extends
-              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData result;
-            
+              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+             implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogDataOrBuilder {
+            public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+                getDescriptor() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_LogData_descriptor;
+            }
+
+            protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+                internalGetFieldAccessorTable() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_LogData_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.Builder.class);
+            }
+
             // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.newBuilder()
-            private Builder() {}
-            
-            private static Builder create() {
-              Builder builder = new Builder();
-              builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData();
-              return builder;
+            private Builder() {
+              maybeForceBuilderInitialization();
             }
-            
-            protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData internalGetResult() {
-              return result;
+
+            private Builder(
+                com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+              super(parent);
+              maybeForceBuilderInitialization();
             }
-            
-            public Builder clear() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "Cannot call clear() after build().");
+            private void maybeForceBuilderInitialization() {
+              if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+                getHelpInfoFieldBuilder();
               }
-              result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData();
+            }
+            private static Builder create() {
+              return new Builder();
+            }
+
+            public Builder clear() {
+              super.clear();
+              summary_ = "";
+              bitField0_ = (bitField0_ & ~0x00000001);
+              level_ = "";
+              bitField0_ = (bitField0_ & ~0x00000002);
+              needsAttention_ = false;
+              bitField0_ = (bitField0_ & ~0x00000004);
+              details_ = "";
+              bitField0_ = (bitField0_ & ~0x00000008);
+              if (helpInfoBuilder_ == null) {
+                helpInfo_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.getDefaultInstance();
+              } else {
+                helpInfoBuilder_.clear();
+              }
+              bitField0_ = (bitField0_ & ~0x00000010);
               return this;
             }
-            
+
             public Builder clone() {
-              return create().mergeFrom(result);
+              return create().mergeFrom(buildPartial());
             }
-            
+
             public com.google.gwt.dev.protobuf.Descriptors.Descriptor
                 getDescriptorForType() {
-              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.getDescriptor();
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_LogData_descriptor;
             }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData getDefaultInstanceForType() {
               return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.getDefaultInstance();
             }
-            
-            public boolean isInitialized() {
-              return result.isInitialized();
-            }
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData build() {
-              if (result != null && !isInitialized()) {
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData result = buildPartial();
+              if (!result.isInitialized()) {
                 throw newUninitializedMessageException(result);
               }
-              return buildPartial();
+              return result;
             }
-            
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData buildParsed()
-                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              if (!isInitialized()) {
-                throw newUninitializedMessageException(
-                  result).asInvalidProtocolBufferException();
-              }
-              return buildPartial();
-            }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData buildPartial() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "build() has already been called on this Builder.");
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData(this);
+              int from_bitField0_ = bitField0_;
+              int to_bitField0_ = 0;
+              if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+                to_bitField0_ |= 0x00000001;
               }
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData returnMe = result;
-              result = null;
-              return returnMe;
+              result.summary_ = summary_;
+              if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+                to_bitField0_ |= 0x00000002;
+              }
+              result.level_ = level_;
+              if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+                to_bitField0_ |= 0x00000004;
+              }
+              result.needsAttention_ = needsAttention_;
+              if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+                to_bitField0_ |= 0x00000008;
+              }
+              result.details_ = details_;
+              if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+                to_bitField0_ |= 0x00000010;
+              }
+              if (helpInfoBuilder_ == null) {
+                result.helpInfo_ = helpInfo_;
+              } else {
+                result.helpInfo_ = helpInfoBuilder_.build();
+              }
+              result.bitField0_ = to_bitField0_;
+              onBuilt();
+              return result;
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
               if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData) {
                 return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData)other);
@@ -2682,20 +5953,26 @@
                 return this;
               }
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData other) {
               if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.getDefaultInstance()) return this;
               if (other.hasSummary()) {
-                setSummary(other.getSummary());
+                bitField0_ |= 0x00000001;
+                summary_ = other.summary_;
+                onChanged();
               }
               if (other.hasLevel()) {
-                setLevel(other.getLevel());
+                bitField0_ |= 0x00000002;
+                level_ = other.level_;
+                onChanged();
               }
               if (other.hasNeedsAttention()) {
                 setNeedsAttention(other.getNeedsAttention());
               }
               if (other.hasDetails()) {
-                setDetails(other.getDetails());
+                bitField0_ |= 0x00000008;
+                details_ = other.details_;
+                onChanged();
               }
               if (other.hasHelpInfo()) {
                 mergeHelpInfo(other.getHelpInfo());
@@ -2703,409 +5980,869 @@
               this.mergeUnknownFields(other.getUnknownFields());
               return this;
             }
-            
+
+            public final boolean isInitialized() {
+              if (!hasSummary()) {
+                
+                return false;
+              }
+              return true;
+            }
+
             public Builder mergeFrom(
                 com.google.gwt.dev.protobuf.CodedInputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws java.io.IOException {
-              com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-                com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-                  this.getUnknownFields());
-              while (true) {
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData parsedMessage = null;
+              try {
+                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+              } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+                parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData) e.getUnfinishedMessage();
+                throw e;
+              } finally {
+                if (parsedMessage != null) {
+                  mergeFrom(parsedMessage);
+                }
+              }
+              return this;
+            }
+            private int bitField0_;
+
+            // required string summary = 1;
+            private java.lang.Object summary_ = "";
+            /**
+             * <code>required string summary = 1;</code>
+             */
+            public boolean hasSummary() {
+              return ((bitField0_ & 0x00000001) == 0x00000001);
+            }
+            /**
+             * <code>required string summary = 1;</code>
+             */
+            public java.lang.String getSummary() {
+              java.lang.Object ref = summary_;
+              if (!(ref instanceof java.lang.String)) {
+                java.lang.String s = ((com.google.gwt.dev.protobuf.ByteString) ref)
+                    .toStringUtf8();
+                summary_ = s;
+                return s;
+              } else {
+                return (java.lang.String) ref;
+              }
+            }
+            /**
+             * <code>required string summary = 1;</code>
+             */
+            public com.google.gwt.dev.protobuf.ByteString
+                getSummaryBytes() {
+              java.lang.Object ref = summary_;
+              if (ref instanceof String) {
+                com.google.gwt.dev.protobuf.ByteString b = 
+                    com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                        (java.lang.String) ref);
+                summary_ = b;
+                return b;
+              } else {
+                return (com.google.gwt.dev.protobuf.ByteString) ref;
+              }
+            }
+            /**
+             * <code>required string summary = 1;</code>
+             */
+            public Builder setSummary(
+                java.lang.String value) {
+              if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+              summary_ = value;
+              onChanged();
+              return this;
+            }
+            /**
+             * <code>required string summary = 1;</code>
+             */
+            public Builder clearSummary() {
+              bitField0_ = (bitField0_ & ~0x00000001);
+              summary_ = getDefaultInstance().getSummary();
+              onChanged();
+              return this;
+            }
+            /**
+             * <code>required string summary = 1;</code>
+             */
+            public Builder setSummaryBytes(
+                com.google.gwt.dev.protobuf.ByteString value) {
+              if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+              summary_ = value;
+              onChanged();
+              return this;
+            }
+
+            // optional string level = 2;
+            private java.lang.Object level_ = "";
+            /**
+             * <code>optional string level = 2;</code>
+             */
+            public boolean hasLevel() {
+              return ((bitField0_ & 0x00000002) == 0x00000002);
+            }
+            /**
+             * <code>optional string level = 2;</code>
+             */
+            public java.lang.String getLevel() {
+              java.lang.Object ref = level_;
+              if (!(ref instanceof java.lang.String)) {
+                java.lang.String s = ((com.google.gwt.dev.protobuf.ByteString) ref)
+                    .toStringUtf8();
+                level_ = s;
+                return s;
+              } else {
+                return (java.lang.String) ref;
+              }
+            }
+            /**
+             * <code>optional string level = 2;</code>
+             */
+            public com.google.gwt.dev.protobuf.ByteString
+                getLevelBytes() {
+              java.lang.Object ref = level_;
+              if (ref instanceof String) {
+                com.google.gwt.dev.protobuf.ByteString b = 
+                    com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                        (java.lang.String) ref);
+                level_ = b;
+                return b;
+              } else {
+                return (com.google.gwt.dev.protobuf.ByteString) ref;
+              }
+            }
+            /**
+             * <code>optional string level = 2;</code>
+             */
+            public Builder setLevel(
+                java.lang.String value) {
+              if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+              level_ = value;
+              onChanged();
+              return this;
+            }
+            /**
+             * <code>optional string level = 2;</code>
+             */
+            public Builder clearLevel() {
+              bitField0_ = (bitField0_ & ~0x00000002);
+              level_ = getDefaultInstance().getLevel();
+              onChanged();
+              return this;
+            }
+            /**
+             * <code>optional string level = 2;</code>
+             */
+            public Builder setLevelBytes(
+                com.google.gwt.dev.protobuf.ByteString value) {
+              if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+              level_ = value;
+              onChanged();
+              return this;
+            }
+
+            // optional bool needsAttention = 3;
+            private boolean needsAttention_ ;
+            /**
+             * <code>optional bool needsAttention = 3;</code>
+             */
+            public boolean hasNeedsAttention() {
+              return ((bitField0_ & 0x00000004) == 0x00000004);
+            }
+            /**
+             * <code>optional bool needsAttention = 3;</code>
+             */
+            public boolean getNeedsAttention() {
+              return needsAttention_;
+            }
+            /**
+             * <code>optional bool needsAttention = 3;</code>
+             */
+            public Builder setNeedsAttention(boolean value) {
+              bitField0_ |= 0x00000004;
+              needsAttention_ = value;
+              onChanged();
+              return this;
+            }
+            /**
+             * <code>optional bool needsAttention = 3;</code>
+             */
+            public Builder clearNeedsAttention() {
+              bitField0_ = (bitField0_ & ~0x00000004);
+              needsAttention_ = false;
+              onChanged();
+              return this;
+            }
+
+            // optional string details = 4;
+            private java.lang.Object details_ = "";
+            /**
+             * <code>optional string details = 4;</code>
+             */
+            public boolean hasDetails() {
+              return ((bitField0_ & 0x00000008) == 0x00000008);
+            }
+            /**
+             * <code>optional string details = 4;</code>
+             */
+            public java.lang.String getDetails() {
+              java.lang.Object ref = details_;
+              if (!(ref instanceof java.lang.String)) {
+                java.lang.String s = ((com.google.gwt.dev.protobuf.ByteString) ref)
+                    .toStringUtf8();
+                details_ = s;
+                return s;
+              } else {
+                return (java.lang.String) ref;
+              }
+            }
+            /**
+             * <code>optional string details = 4;</code>
+             */
+            public com.google.gwt.dev.protobuf.ByteString
+                getDetailsBytes() {
+              java.lang.Object ref = details_;
+              if (ref instanceof String) {
+                com.google.gwt.dev.protobuf.ByteString b = 
+                    com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                        (java.lang.String) ref);
+                details_ = b;
+                return b;
+              } else {
+                return (com.google.gwt.dev.protobuf.ByteString) ref;
+              }
+            }
+            /**
+             * <code>optional string details = 4;</code>
+             */
+            public Builder setDetails(
+                java.lang.String value) {
+              if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+              details_ = value;
+              onChanged();
+              return this;
+            }
+            /**
+             * <code>optional string details = 4;</code>
+             */
+            public Builder clearDetails() {
+              bitField0_ = (bitField0_ & ~0x00000008);
+              details_ = getDefaultInstance().getDetails();
+              onChanged();
+              return this;
+            }
+            /**
+             * <code>optional string details = 4;</code>
+             */
+            public Builder setDetailsBytes(
+                com.google.gwt.dev.protobuf.ByteString value) {
+              if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+              details_ = value;
+              onChanged();
+              return this;
+            }
+
+            // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData.HelpInfo helpInfo = 5;
+            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo helpInfo_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.getDefaultInstance();
+            private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfoOrBuilder> helpInfoBuilder_;
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData.HelpInfo helpInfo = 5;</code>
+             */
+            public boolean hasHelpInfo() {
+              return ((bitField0_ & 0x00000010) == 0x00000010);
+            }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData.HelpInfo helpInfo = 5;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo getHelpInfo() {
+              if (helpInfoBuilder_ == null) {
+                return helpInfo_;
+              } else {
+                return helpInfoBuilder_.getMessage();
+              }
+            }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData.HelpInfo helpInfo = 5;</code>
+             */
+            public Builder setHelpInfo(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo value) {
+              if (helpInfoBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                helpInfo_ = value;
+                onChanged();
+              } else {
+                helpInfoBuilder_.setMessage(value);
+              }
+              bitField0_ |= 0x00000010;
+              return this;
+            }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData.HelpInfo helpInfo = 5;</code>
+             */
+            public Builder setHelpInfo(
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.Builder builderForValue) {
+              if (helpInfoBuilder_ == null) {
+                helpInfo_ = builderForValue.build();
+                onChanged();
+              } else {
+                helpInfoBuilder_.setMessage(builderForValue.build());
+              }
+              bitField0_ |= 0x00000010;
+              return this;
+            }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData.HelpInfo helpInfo = 5;</code>
+             */
+            public Builder mergeHelpInfo(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo value) {
+              if (helpInfoBuilder_ == null) {
+                if (((bitField0_ & 0x00000010) == 0x00000010) &&
+                    helpInfo_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.getDefaultInstance()) {
+                  helpInfo_ =
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.newBuilder(helpInfo_).mergeFrom(value).buildPartial();
+                } else {
+                  helpInfo_ = value;
+                }
+                onChanged();
+              } else {
+                helpInfoBuilder_.mergeFrom(value);
+              }
+              bitField0_ |= 0x00000010;
+              return this;
+            }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData.HelpInfo helpInfo = 5;</code>
+             */
+            public Builder clearHelpInfo() {
+              if (helpInfoBuilder_ == null) {
+                helpInfo_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.getDefaultInstance();
+                onChanged();
+              } else {
+                helpInfoBuilder_.clear();
+              }
+              bitField0_ = (bitField0_ & ~0x00000010);
+              return this;
+            }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData.HelpInfo helpInfo = 5;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.Builder getHelpInfoBuilder() {
+              bitField0_ |= 0x00000010;
+              onChanged();
+              return getHelpInfoFieldBuilder().getBuilder();
+            }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData.HelpInfo helpInfo = 5;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfoOrBuilder getHelpInfoOrBuilder() {
+              if (helpInfoBuilder_ != null) {
+                return helpInfoBuilder_.getMessageOrBuilder();
+              } else {
+                return helpInfo_;
+              }
+            }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData.HelpInfo helpInfo = 5;</code>
+             */
+            private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfoOrBuilder> 
+                getHelpInfoFieldBuilder() {
+              if (helpInfoBuilder_ == null) {
+                helpInfoBuilder_ = new com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfoOrBuilder>(
+                        helpInfo_,
+                        getParentForChildren(),
+                        isClean());
+                helpInfo_ = null;
+              }
+              return helpInfoBuilder_;
+            }
+
+            // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData)
+          }
+
+          static {
+            defaultInstance = new LogData(true);
+            defaultInstance.initFields();
+          }
+
+          // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData)
+        }
+
+        public interface AddLogBranchOrBuilder
+            extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+
+          // required uint32 parentLogHandle = 1;
+          /**
+           * <code>required uint32 parentLogHandle = 1;</code>
+           */
+          boolean hasParentLogHandle();
+          /**
+           * <code>required uint32 parentLogHandle = 1;</code>
+           */
+          int getParentLogHandle();
+
+          // required uint32 indexInParent = 2;
+          /**
+           * <code>required uint32 indexInParent = 2;</code>
+           */
+          boolean hasIndexInParent();
+          /**
+           * <code>required uint32 indexInParent = 2;</code>
+           */
+          int getIndexInParent();
+
+          // required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;
+          /**
+           * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+           */
+          boolean hasLogData();
+          /**
+           * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+           */
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData getLogData();
+          /**
+           * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+           */
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogDataOrBuilder getLogDataOrBuilder();
+        }
+        /**
+         * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogBranch}
+         *
+         * <pre>
+         * Add a new log branch to an existing log
+         * </pre>
+         */
+        public static final class AddLogBranch extends
+            com.google.gwt.dev.protobuf.GeneratedMessage
+            implements AddLogBranchOrBuilder {
+          // Use AddLogBranch.newBuilder() to construct.
+          private AddLogBranch(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+            super(builder);
+            this.unknownFields = builder.getUnknownFields();
+          }
+          private AddLogBranch(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+          private static final AddLogBranch defaultInstance;
+          public static AddLogBranch getDefaultInstance() {
+            return defaultInstance;
+          }
+
+          public AddLogBranch getDefaultInstanceForType() {
+            return defaultInstance;
+          }
+
+          private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+          @java.lang.Override
+          public final com.google.gwt.dev.protobuf.UnknownFieldSet
+              getUnknownFields() {
+            return this.unknownFields;
+          }
+          private AddLogBranch(
+              com.google.gwt.dev.protobuf.CodedInputStream input,
+              com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+            initFields();
+            int mutable_bitField0_ = 0;
+            com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+                com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder();
+            try {
+              boolean done = false;
+              while (!done) {
                 int tag = input.readTag();
                 switch (tag) {
                   case 0:
-                    this.setUnknownFields(unknownFields.build());
-                    return this;
+                    done = true;
+                    break;
                   default: {
                     if (!parseUnknownField(input, unknownFields,
                                            extensionRegistry, tag)) {
-                      this.setUnknownFields(unknownFields.build());
-                      return this;
+                      done = true;
                     }
                     break;
                   }
-                  case 10: {
-                    setSummary(input.readString());
+                  case 8: {
+                    bitField0_ |= 0x00000001;
+                    parentLogHandle_ = input.readUInt32();
                     break;
                   }
-                  case 18: {
-                    setLevel(input.readString());
+                  case 16: {
+                    bitField0_ |= 0x00000002;
+                    indexInParent_ = input.readUInt32();
                     break;
                   }
-                  case 24: {
-                    setNeedsAttention(input.readBool());
-                    break;
-                  }
-                  case 34: {
-                    setDetails(input.readString());
-                    break;
-                  }
-                  case 42: {
-                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.newBuilder();
-                    if (hasHelpInfo()) {
-                      subBuilder.mergeFrom(getHelpInfo());
+                  case 26: {
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.Builder subBuilder = null;
+                    if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                      subBuilder = logData_.toBuilder();
                     }
-                    input.readMessage(subBuilder, extensionRegistry);
-                    setHelpInfo(subBuilder.buildPartial());
+                    logData_ = input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.PARSER, extensionRegistry);
+                    if (subBuilder != null) {
+                      subBuilder.mergeFrom(logData_);
+                      logData_ = subBuilder.buildPartial();
+                    }
+                    bitField0_ |= 0x00000004;
                     break;
                   }
                 }
               }
-            }
-            
-            
-            // required string summary = 1;
-            public boolean hasSummary() {
-              return result.hasSummary();
-            }
-            public java.lang.String getSummary() {
-              return result.getSummary();
-            }
-            public Builder setSummary(java.lang.String value) {
-              if (value == null) {
-    throw new NullPointerException();
-  }
-  result.hasSummary = true;
-              result.summary_ = value;
-              return this;
-            }
-            public Builder clearSummary() {
-              result.hasSummary = false;
-              result.summary_ = getDefaultInstance().getSummary();
-              return this;
-            }
-            
-            // optional string level = 2;
-            public boolean hasLevel() {
-              return result.hasLevel();
-            }
-            public java.lang.String getLevel() {
-              return result.getLevel();
-            }
-            public Builder setLevel(java.lang.String value) {
-              if (value == null) {
-    throw new NullPointerException();
-  }
-  result.hasLevel = true;
-              result.level_ = value;
-              return this;
-            }
-            public Builder clearLevel() {
-              result.hasLevel = false;
-              result.level_ = getDefaultInstance().getLevel();
-              return this;
-            }
-            
-            // optional bool needsAttention = 3;
-            public boolean hasNeedsAttention() {
-              return result.hasNeedsAttention();
-            }
-            public boolean getNeedsAttention() {
-              return result.getNeedsAttention();
-            }
-            public Builder setNeedsAttention(boolean value) {
-              result.hasNeedsAttention = true;
-              result.needsAttention_ = value;
-              return this;
-            }
-            public Builder clearNeedsAttention() {
-              result.hasNeedsAttention = false;
-              result.needsAttention_ = false;
-              return this;
-            }
-            
-            // optional string details = 4;
-            public boolean hasDetails() {
-              return result.hasDetails();
-            }
-            public java.lang.String getDetails() {
-              return result.getDetails();
-            }
-            public Builder setDetails(java.lang.String value) {
-              if (value == null) {
-    throw new NullPointerException();
-  }
-  result.hasDetails = true;
-              result.details_ = value;
-              return this;
-            }
-            public Builder clearDetails() {
-              result.hasDetails = false;
-              result.details_ = getDefaultInstance().getDetails();
-              return this;
-            }
-            
-            // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData.HelpInfo helpInfo = 5;
-            public boolean hasHelpInfo() {
-              return result.hasHelpInfo();
-            }
-            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo getHelpInfo() {
-              return result.getHelpInfo();
-            }
-            public Builder setHelpInfo(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo value) {
-              if (value == null) {
-                throw new NullPointerException();
-              }
-              result.hasHelpInfo = true;
-              result.helpInfo_ = value;
-              return this;
-            }
-            public Builder setHelpInfo(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.Builder builderForValue) {
-              result.hasHelpInfo = true;
-              result.helpInfo_ = builderForValue.build();
-              return this;
-            }
-            public Builder mergeHelpInfo(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo value) {
-              if (result.hasHelpInfo() &&
-                  result.helpInfo_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.getDefaultInstance()) {
-                result.helpInfo_ =
-                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.newBuilder(result.helpInfo_).mergeFrom(value).buildPartial();
-              } else {
-                result.helpInfo_ = value;
-              }
-              result.hasHelpInfo = true;
-              return this;
-            }
-            public Builder clearHelpInfo() {
-              result.hasHelpInfo = false;
-              result.helpInfo_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.getDefaultInstance();
-              return this;
+            } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+              throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+              throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+                  e.getMessage()).setUnfinishedMessage(this);
+            } finally {
+              this.unknownFields = unknownFields.build();
+              makeExtensionsImmutable();
             }
           }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
-          }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-          }
-        }
-        
-        public static final class AddLogBranch extends
-            com.google.gwt.dev.protobuf.GeneratedMessage {
-          // Use AddLogBranch.newBuilder() to construct.
-          private AddLogBranch() {}
-          
-          private static final AddLogBranch defaultInstance = new AddLogBranch();
-          public static AddLogBranch getDefaultInstance() {
-            return defaultInstance;
-          }
-          
-          public AddLogBranch getDefaultInstanceForType() {
-            return defaultInstance;
-          }
-          
           public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
               getDescriptor() {
             return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLogBranch_descriptor;
           }
-          
+
           protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
               internalGetFieldAccessorTable() {
-            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLogBranch_fieldAccessorTable;
+            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLogBranch_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.Builder.class);
           }
-          
+
+          public static com.google.gwt.dev.protobuf.Parser<AddLogBranch> PARSER =
+              new com.google.gwt.dev.protobuf.AbstractParser<AddLogBranch>() {
+            public AddLogBranch parsePartialFrom(
+                com.google.gwt.dev.protobuf.CodedInputStream input,
+                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              return new AddLogBranch(input, extensionRegistry);
+            }
+          };
+
+          @java.lang.Override
+          public com.google.gwt.dev.protobuf.Parser<AddLogBranch> getParserForType() {
+            return PARSER;
+          }
+
+          private int bitField0_;
           // required uint32 parentLogHandle = 1;
           public static final int PARENTLOGHANDLE_FIELD_NUMBER = 1;
-          private boolean hasParentLogHandle;
-          private int parentLogHandle_ = 0;
-          public boolean hasParentLogHandle() { return hasParentLogHandle; }
-          public int getParentLogHandle() { return parentLogHandle_; }
-          
+          private int parentLogHandle_;
+          /**
+           * <code>required uint32 parentLogHandle = 1;</code>
+           */
+          public boolean hasParentLogHandle() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>required uint32 parentLogHandle = 1;</code>
+           */
+          public int getParentLogHandle() {
+            return parentLogHandle_;
+          }
+
           // required uint32 indexInParent = 2;
           public static final int INDEXINPARENT_FIELD_NUMBER = 2;
-          private boolean hasIndexInParent;
-          private int indexInParent_ = 0;
-          public boolean hasIndexInParent() { return hasIndexInParent; }
-          public int getIndexInParent() { return indexInParent_; }
-          
+          private int indexInParent_;
+          /**
+           * <code>required uint32 indexInParent = 2;</code>
+           */
+          public boolean hasIndexInParent() {
+            return ((bitField0_ & 0x00000002) == 0x00000002);
+          }
+          /**
+           * <code>required uint32 indexInParent = 2;</code>
+           */
+          public int getIndexInParent() {
+            return indexInParent_;
+          }
+
           // required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;
           public static final int LOGDATA_FIELD_NUMBER = 3;
-          private boolean hasLogData;
-          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData logData_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.getDefaultInstance();
-          public boolean hasLogData() { return hasLogData; }
-          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData getLogData() { return logData_; }
-          
+          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData logData_;
+          /**
+           * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+           */
+          public boolean hasLogData() {
+            return ((bitField0_ & 0x00000004) == 0x00000004);
+          }
+          /**
+           * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData getLogData() {
+            return logData_;
+          }
+          /**
+           * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogDataOrBuilder getLogDataOrBuilder() {
+            return logData_;
+          }
+
+          private void initFields() {
+            parentLogHandle_ = 0;
+            indexInParent_ = 0;
+            logData_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.getDefaultInstance();
+          }
+          private byte memoizedIsInitialized = -1;
           public final boolean isInitialized() {
-            if (!hasParentLogHandle) return false;
-            if (!hasIndexInParent) return false;
-            if (!hasLogData) return false;
-            if (!getLogData().isInitialized()) return false;
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized != -1) return isInitialized == 1;
+
+            if (!hasParentLogHandle()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+            if (!hasIndexInParent()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+            if (!hasLogData()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+            if (!getLogData().isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+            memoizedIsInitialized = 1;
             return true;
           }
-          
+
           public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
                               throws java.io.IOException {
-            if (hasParentLogHandle()) {
-              output.writeUInt32(1, getParentLogHandle());
+            getSerializedSize();
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              output.writeUInt32(1, parentLogHandle_);
             }
-            if (hasIndexInParent()) {
-              output.writeUInt32(2, getIndexInParent());
+            if (((bitField0_ & 0x00000002) == 0x00000002)) {
+              output.writeUInt32(2, indexInParent_);
             }
-            if (hasLogData()) {
-              output.writeMessage(3, getLogData());
+            if (((bitField0_ & 0x00000004) == 0x00000004)) {
+              output.writeMessage(3, logData_);
             }
             getUnknownFields().writeTo(output);
           }
-          
+
           private int memoizedSerializedSize = -1;
           public int getSerializedSize() {
             int size = memoizedSerializedSize;
             if (size != -1) return size;
-          
+
             size = 0;
-            if (hasParentLogHandle()) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
               size += com.google.gwt.dev.protobuf.CodedOutputStream
-                .computeUInt32Size(1, getParentLogHandle());
+                .computeUInt32Size(1, parentLogHandle_);
             }
-            if (hasIndexInParent()) {
+            if (((bitField0_ & 0x00000002) == 0x00000002)) {
               size += com.google.gwt.dev.protobuf.CodedOutputStream
-                .computeUInt32Size(2, getIndexInParent());
+                .computeUInt32Size(2, indexInParent_);
             }
-            if (hasLogData()) {
+            if (((bitField0_ & 0x00000004) == 0x00000004)) {
               size += com.google.gwt.dev.protobuf.CodedOutputStream
-                .computeMessageSize(3, getLogData());
+                .computeMessageSize(3, logData_);
             }
             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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch parseFrom(
               com.google.gwt.dev.protobuf.ByteString data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch parseFrom(
               com.google.gwt.dev.protobuf.ByteString data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch parseFrom(byte[] data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch parseFrom(
               byte[] data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch parseFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch parseFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch parseDelimitedFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input).buildParsed();
+            return PARSER.parseDelimitedFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch parseDelimitedFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseDelimitedFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
-          
+
           public static Builder newBuilder() { return Builder.create(); }
           public Builder newBuilderForType() { return newBuilder(); }
           public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch prototype) {
             return newBuilder().mergeFrom(prototype);
           }
           public Builder toBuilder() { return newBuilder(this); }
-          
+
+          @java.lang.Override
+          protected Builder newBuilderForType(
+              com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+          }
+          /**
+           * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogBranch}
+           *
+           * <pre>
+           * Add a new log branch to an existing log
+           * </pre>
+           */
           public static final class Builder extends
-              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch result;
-            
+              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+             implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranchOrBuilder {
+            public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+                getDescriptor() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLogBranch_descriptor;
+            }
+
+            protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+                internalGetFieldAccessorTable() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLogBranch_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.Builder.class);
+            }
+
             // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.newBuilder()
-            private Builder() {}
-            
-            private static Builder create() {
-              Builder builder = new Builder();
-              builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch();
-              return builder;
+            private Builder() {
+              maybeForceBuilderInitialization();
             }
-            
-            protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch internalGetResult() {
-              return result;
+
+            private Builder(
+                com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+              super(parent);
+              maybeForceBuilderInitialization();
             }
-            
-            public Builder clear() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "Cannot call clear() after build().");
+            private void maybeForceBuilderInitialization() {
+              if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+                getLogDataFieldBuilder();
               }
-              result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch();
+            }
+            private static Builder create() {
+              return new Builder();
+            }
+
+            public Builder clear() {
+              super.clear();
+              parentLogHandle_ = 0;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              indexInParent_ = 0;
+              bitField0_ = (bitField0_ & ~0x00000002);
+              if (logDataBuilder_ == null) {
+                logData_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.getDefaultInstance();
+              } else {
+                logDataBuilder_.clear();
+              }
+              bitField0_ = (bitField0_ & ~0x00000004);
               return this;
             }
-            
+
             public Builder clone() {
-              return create().mergeFrom(result);
+              return create().mergeFrom(buildPartial());
             }
-            
+
             public com.google.gwt.dev.protobuf.Descriptors.Descriptor
                 getDescriptorForType() {
-              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.getDescriptor();
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLogBranch_descriptor;
             }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch getDefaultInstanceForType() {
               return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.getDefaultInstance();
             }
-            
-            public boolean isInitialized() {
-              return result.isInitialized();
-            }
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch build() {
-              if (result != null && !isInitialized()) {
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch result = buildPartial();
+              if (!result.isInitialized()) {
                 throw newUninitializedMessageException(result);
               }
-              return buildPartial();
+              return result;
             }
-            
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch buildParsed()
-                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              if (!isInitialized()) {
-                throw newUninitializedMessageException(
-                  result).asInvalidProtocolBufferException();
-              }
-              return buildPartial();
-            }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch buildPartial() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "build() has already been called on this Builder.");
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch(this);
+              int from_bitField0_ = bitField0_;
+              int to_bitField0_ = 0;
+              if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+                to_bitField0_ |= 0x00000001;
               }
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch returnMe = result;
-              result = null;
-              return returnMe;
+              result.parentLogHandle_ = parentLogHandle_;
+              if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+                to_bitField0_ |= 0x00000002;
+              }
+              result.indexInParent_ = indexInParent_;
+              if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+                to_bitField0_ |= 0x00000004;
+              }
+              if (logDataBuilder_ == null) {
+                result.logData_ = logData_;
+              } else {
+                result.logData_ = logDataBuilder_.build();
+              }
+              result.bitField0_ = to_bitField0_;
+              onBuilt();
+              return result;
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
               if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch) {
                 return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch)other);
@@ -3114,7 +6851,7 @@
                 return this;
               }
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch other) {
               if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.getDefaultInstance()) return this;
               if (other.hasParentLogHandle()) {
@@ -3129,356 +6866,692 @@
               this.mergeUnknownFields(other.getUnknownFields());
               return this;
             }
-            
+
+            public final boolean isInitialized() {
+              if (!hasParentLogHandle()) {
+                
+                return false;
+              }
+              if (!hasIndexInParent()) {
+                
+                return false;
+              }
+              if (!hasLogData()) {
+                
+                return false;
+              }
+              if (!getLogData().isInitialized()) {
+                
+                return false;
+              }
+              return true;
+            }
+
             public Builder mergeFrom(
                 com.google.gwt.dev.protobuf.CodedInputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws java.io.IOException {
-              com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-                com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-                  this.getUnknownFields());
-              while (true) {
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch parsedMessage = null;
+              try {
+                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+              } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+                parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch) e.getUnfinishedMessage();
+                throw e;
+              } finally {
+                if (parsedMessage != null) {
+                  mergeFrom(parsedMessage);
+                }
+              }
+              return this;
+            }
+            private int bitField0_;
+
+            // required uint32 parentLogHandle = 1;
+            private int parentLogHandle_ ;
+            /**
+             * <code>required uint32 parentLogHandle = 1;</code>
+             */
+            public boolean hasParentLogHandle() {
+              return ((bitField0_ & 0x00000001) == 0x00000001);
+            }
+            /**
+             * <code>required uint32 parentLogHandle = 1;</code>
+             */
+            public int getParentLogHandle() {
+              return parentLogHandle_;
+            }
+            /**
+             * <code>required uint32 parentLogHandle = 1;</code>
+             */
+            public Builder setParentLogHandle(int value) {
+              bitField0_ |= 0x00000001;
+              parentLogHandle_ = value;
+              onChanged();
+              return this;
+            }
+            /**
+             * <code>required uint32 parentLogHandle = 1;</code>
+             */
+            public Builder clearParentLogHandle() {
+              bitField0_ = (bitField0_ & ~0x00000001);
+              parentLogHandle_ = 0;
+              onChanged();
+              return this;
+            }
+
+            // required uint32 indexInParent = 2;
+            private int indexInParent_ ;
+            /**
+             * <code>required uint32 indexInParent = 2;</code>
+             */
+            public boolean hasIndexInParent() {
+              return ((bitField0_ & 0x00000002) == 0x00000002);
+            }
+            /**
+             * <code>required uint32 indexInParent = 2;</code>
+             */
+            public int getIndexInParent() {
+              return indexInParent_;
+            }
+            /**
+             * <code>required uint32 indexInParent = 2;</code>
+             */
+            public Builder setIndexInParent(int value) {
+              bitField0_ |= 0x00000002;
+              indexInParent_ = value;
+              onChanged();
+              return this;
+            }
+            /**
+             * <code>required uint32 indexInParent = 2;</code>
+             */
+            public Builder clearIndexInParent() {
+              bitField0_ = (bitField0_ & ~0x00000002);
+              indexInParent_ = 0;
+              onChanged();
+              return this;
+            }
+
+            // required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;
+            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData logData_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.getDefaultInstance();
+            private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogDataOrBuilder> logDataBuilder_;
+            /**
+             * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+             */
+            public boolean hasLogData() {
+              return ((bitField0_ & 0x00000004) == 0x00000004);
+            }
+            /**
+             * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData getLogData() {
+              if (logDataBuilder_ == null) {
+                return logData_;
+              } else {
+                return logDataBuilder_.getMessage();
+              }
+            }
+            /**
+             * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+             */
+            public Builder setLogData(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData value) {
+              if (logDataBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                logData_ = value;
+                onChanged();
+              } else {
+                logDataBuilder_.setMessage(value);
+              }
+              bitField0_ |= 0x00000004;
+              return this;
+            }
+            /**
+             * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+             */
+            public Builder setLogData(
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.Builder builderForValue) {
+              if (logDataBuilder_ == null) {
+                logData_ = builderForValue.build();
+                onChanged();
+              } else {
+                logDataBuilder_.setMessage(builderForValue.build());
+              }
+              bitField0_ |= 0x00000004;
+              return this;
+            }
+            /**
+             * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+             */
+            public Builder mergeLogData(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData value) {
+              if (logDataBuilder_ == null) {
+                if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                    logData_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.getDefaultInstance()) {
+                  logData_ =
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.newBuilder(logData_).mergeFrom(value).buildPartial();
+                } else {
+                  logData_ = value;
+                }
+                onChanged();
+              } else {
+                logDataBuilder_.mergeFrom(value);
+              }
+              bitField0_ |= 0x00000004;
+              return this;
+            }
+            /**
+             * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+             */
+            public Builder clearLogData() {
+              if (logDataBuilder_ == null) {
+                logData_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.getDefaultInstance();
+                onChanged();
+              } else {
+                logDataBuilder_.clear();
+              }
+              bitField0_ = (bitField0_ & ~0x00000004);
+              return this;
+            }
+            /**
+             * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.Builder getLogDataBuilder() {
+              bitField0_ |= 0x00000004;
+              onChanged();
+              return getLogDataFieldBuilder().getBuilder();
+            }
+            /**
+             * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogDataOrBuilder getLogDataOrBuilder() {
+              if (logDataBuilder_ != null) {
+                return logDataBuilder_.getMessageOrBuilder();
+              } else {
+                return logData_;
+              }
+            }
+            /**
+             * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+             */
+            private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogDataOrBuilder> 
+                getLogDataFieldBuilder() {
+              if (logDataBuilder_ == null) {
+                logDataBuilder_ = new com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogDataOrBuilder>(
+                        logData_,
+                        getParentForChildren(),
+                        isClean());
+                logData_ = null;
+              }
+              return logDataBuilder_;
+            }
+
+            // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogBranch)
+          }
+
+          static {
+            defaultInstance = new AddLogBranch(true);
+            defaultInstance.initFields();
+          }
+
+          // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogBranch)
+        }
+
+        public interface AddLogEntryOrBuilder
+            extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+
+          // required uint32 logHandle = 1;
+          /**
+           * <code>required uint32 logHandle = 1;</code>
+           */
+          boolean hasLogHandle();
+          /**
+           * <code>required uint32 logHandle = 1;</code>
+           */
+          int getLogHandle();
+
+          // required uint32 indexInLog = 2;
+          /**
+           * <code>required uint32 indexInLog = 2;</code>
+           */
+          boolean hasIndexInLog();
+          /**
+           * <code>required uint32 indexInLog = 2;</code>
+           */
+          int getIndexInLog();
+
+          // required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;
+          /**
+           * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+           */
+          boolean hasLogData();
+          /**
+           * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+           */
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData getLogData();
+          /**
+           * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+           */
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogDataOrBuilder getLogDataOrBuilder();
+        }
+        /**
+         * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogEntry}
+         *
+         * <pre>
+         * Add a log entry to a log
+         * </pre>
+         */
+        public static final class AddLogEntry extends
+            com.google.gwt.dev.protobuf.GeneratedMessage
+            implements AddLogEntryOrBuilder {
+          // Use AddLogEntry.newBuilder() to construct.
+          private AddLogEntry(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+            super(builder);
+            this.unknownFields = builder.getUnknownFields();
+          }
+          private AddLogEntry(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+          private static final AddLogEntry defaultInstance;
+          public static AddLogEntry getDefaultInstance() {
+            return defaultInstance;
+          }
+
+          public AddLogEntry getDefaultInstanceForType() {
+            return defaultInstance;
+          }
+
+          private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+          @java.lang.Override
+          public final com.google.gwt.dev.protobuf.UnknownFieldSet
+              getUnknownFields() {
+            return this.unknownFields;
+          }
+          private AddLogEntry(
+              com.google.gwt.dev.protobuf.CodedInputStream input,
+              com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+            initFields();
+            int mutable_bitField0_ = 0;
+            com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+                com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder();
+            try {
+              boolean done = false;
+              while (!done) {
                 int tag = input.readTag();
                 switch (tag) {
                   case 0:
-                    this.setUnknownFields(unknownFields.build());
-                    return this;
+                    done = true;
+                    break;
                   default: {
                     if (!parseUnknownField(input, unknownFields,
                                            extensionRegistry, tag)) {
-                      this.setUnknownFields(unknownFields.build());
-                      return this;
+                      done = true;
                     }
                     break;
                   }
                   case 8: {
-                    setParentLogHandle(input.readUInt32());
+                    bitField0_ |= 0x00000001;
+                    logHandle_ = input.readUInt32();
                     break;
                   }
                   case 16: {
-                    setIndexInParent(input.readUInt32());
+                    bitField0_ |= 0x00000002;
+                    indexInLog_ = input.readUInt32();
                     break;
                   }
                   case 26: {
-                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.newBuilder();
-                    if (hasLogData()) {
-                      subBuilder.mergeFrom(getLogData());
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.Builder subBuilder = null;
+                    if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                      subBuilder = logData_.toBuilder();
                     }
-                    input.readMessage(subBuilder, extensionRegistry);
-                    setLogData(subBuilder.buildPartial());
+                    logData_ = input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.PARSER, extensionRegistry);
+                    if (subBuilder != null) {
+                      subBuilder.mergeFrom(logData_);
+                      logData_ = subBuilder.buildPartial();
+                    }
+                    bitField0_ |= 0x00000004;
                     break;
                   }
                 }
               }
-            }
-            
-            
-            // required uint32 parentLogHandle = 1;
-            public boolean hasParentLogHandle() {
-              return result.hasParentLogHandle();
-            }
-            public int getParentLogHandle() {
-              return result.getParentLogHandle();
-            }
-            public Builder setParentLogHandle(int value) {
-              result.hasParentLogHandle = true;
-              result.parentLogHandle_ = value;
-              return this;
-            }
-            public Builder clearParentLogHandle() {
-              result.hasParentLogHandle = false;
-              result.parentLogHandle_ = 0;
-              return this;
-            }
-            
-            // required uint32 indexInParent = 2;
-            public boolean hasIndexInParent() {
-              return result.hasIndexInParent();
-            }
-            public int getIndexInParent() {
-              return result.getIndexInParent();
-            }
-            public Builder setIndexInParent(int value) {
-              result.hasIndexInParent = true;
-              result.indexInParent_ = value;
-              return this;
-            }
-            public Builder clearIndexInParent() {
-              result.hasIndexInParent = false;
-              result.indexInParent_ = 0;
-              return this;
-            }
-            
-            // required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;
-            public boolean hasLogData() {
-              return result.hasLogData();
-            }
-            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData getLogData() {
-              return result.getLogData();
-            }
-            public Builder setLogData(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData value) {
-              if (value == null) {
-                throw new NullPointerException();
-              }
-              result.hasLogData = true;
-              result.logData_ = value;
-              return this;
-            }
-            public Builder setLogData(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.Builder builderForValue) {
-              result.hasLogData = true;
-              result.logData_ = builderForValue.build();
-              return this;
-            }
-            public Builder mergeLogData(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData value) {
-              if (result.hasLogData() &&
-                  result.logData_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.getDefaultInstance()) {
-                result.logData_ =
-                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.newBuilder(result.logData_).mergeFrom(value).buildPartial();
-              } else {
-                result.logData_ = value;
-              }
-              result.hasLogData = true;
-              return this;
-            }
-            public Builder clearLogData() {
-              result.hasLogData = false;
-              result.logData_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.getDefaultInstance();
-              return this;
+            } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+              throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+              throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+                  e.getMessage()).setUnfinishedMessage(this);
+            } finally {
+              this.unknownFields = unknownFields.build();
+              makeExtensionsImmutable();
             }
           }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
-          }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-          }
-        }
-        
-        public static final class AddLogEntry extends
-            com.google.gwt.dev.protobuf.GeneratedMessage {
-          // Use AddLogEntry.newBuilder() to construct.
-          private AddLogEntry() {}
-          
-          private static final AddLogEntry defaultInstance = new AddLogEntry();
-          public static AddLogEntry getDefaultInstance() {
-            return defaultInstance;
-          }
-          
-          public AddLogEntry getDefaultInstanceForType() {
-            return defaultInstance;
-          }
-          
           public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
               getDescriptor() {
             return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLogEntry_descriptor;
           }
-          
+
           protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
               internalGetFieldAccessorTable() {
-            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLogEntry_fieldAccessorTable;
+            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLogEntry_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.Builder.class);
           }
-          
+
+          public static com.google.gwt.dev.protobuf.Parser<AddLogEntry> PARSER =
+              new com.google.gwt.dev.protobuf.AbstractParser<AddLogEntry>() {
+            public AddLogEntry parsePartialFrom(
+                com.google.gwt.dev.protobuf.CodedInputStream input,
+                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              return new AddLogEntry(input, extensionRegistry);
+            }
+          };
+
+          @java.lang.Override
+          public com.google.gwt.dev.protobuf.Parser<AddLogEntry> getParserForType() {
+            return PARSER;
+          }
+
+          private int bitField0_;
           // required uint32 logHandle = 1;
           public static final int LOGHANDLE_FIELD_NUMBER = 1;
-          private boolean hasLogHandle;
-          private int logHandle_ = 0;
-          public boolean hasLogHandle() { return hasLogHandle; }
-          public int getLogHandle() { return logHandle_; }
-          
+          private int logHandle_;
+          /**
+           * <code>required uint32 logHandle = 1;</code>
+           */
+          public boolean hasLogHandle() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>required uint32 logHandle = 1;</code>
+           */
+          public int getLogHandle() {
+            return logHandle_;
+          }
+
           // required uint32 indexInLog = 2;
           public static final int INDEXINLOG_FIELD_NUMBER = 2;
-          private boolean hasIndexInLog;
-          private int indexInLog_ = 0;
-          public boolean hasIndexInLog() { return hasIndexInLog; }
-          public int getIndexInLog() { return indexInLog_; }
-          
+          private int indexInLog_;
+          /**
+           * <code>required uint32 indexInLog = 2;</code>
+           */
+          public boolean hasIndexInLog() {
+            return ((bitField0_ & 0x00000002) == 0x00000002);
+          }
+          /**
+           * <code>required uint32 indexInLog = 2;</code>
+           */
+          public int getIndexInLog() {
+            return indexInLog_;
+          }
+
           // required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;
           public static final int LOGDATA_FIELD_NUMBER = 3;
-          private boolean hasLogData;
-          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData logData_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.getDefaultInstance();
-          public boolean hasLogData() { return hasLogData; }
-          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData getLogData() { return logData_; }
-          
+          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData logData_;
+          /**
+           * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+           */
+          public boolean hasLogData() {
+            return ((bitField0_ & 0x00000004) == 0x00000004);
+          }
+          /**
+           * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData getLogData() {
+            return logData_;
+          }
+          /**
+           * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogDataOrBuilder getLogDataOrBuilder() {
+            return logData_;
+          }
+
+          private void initFields() {
+            logHandle_ = 0;
+            indexInLog_ = 0;
+            logData_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.getDefaultInstance();
+          }
+          private byte memoizedIsInitialized = -1;
           public final boolean isInitialized() {
-            if (!hasLogHandle) return false;
-            if (!hasIndexInLog) return false;
-            if (!hasLogData) return false;
-            if (!getLogData().isInitialized()) return false;
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized != -1) return isInitialized == 1;
+
+            if (!hasLogHandle()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+            if (!hasIndexInLog()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+            if (!hasLogData()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+            if (!getLogData().isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+            memoizedIsInitialized = 1;
             return true;
           }
-          
+
           public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
                               throws java.io.IOException {
-            if (hasLogHandle()) {
-              output.writeUInt32(1, getLogHandle());
+            getSerializedSize();
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              output.writeUInt32(1, logHandle_);
             }
-            if (hasIndexInLog()) {
-              output.writeUInt32(2, getIndexInLog());
+            if (((bitField0_ & 0x00000002) == 0x00000002)) {
+              output.writeUInt32(2, indexInLog_);
             }
-            if (hasLogData()) {
-              output.writeMessage(3, getLogData());
+            if (((bitField0_ & 0x00000004) == 0x00000004)) {
+              output.writeMessage(3, logData_);
             }
             getUnknownFields().writeTo(output);
           }
-          
+
           private int memoizedSerializedSize = -1;
           public int getSerializedSize() {
             int size = memoizedSerializedSize;
             if (size != -1) return size;
-          
+
             size = 0;
-            if (hasLogHandle()) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
               size += com.google.gwt.dev.protobuf.CodedOutputStream
-                .computeUInt32Size(1, getLogHandle());
+                .computeUInt32Size(1, logHandle_);
             }
-            if (hasIndexInLog()) {
+            if (((bitField0_ & 0x00000002) == 0x00000002)) {
               size += com.google.gwt.dev.protobuf.CodedOutputStream
-                .computeUInt32Size(2, getIndexInLog());
+                .computeUInt32Size(2, indexInLog_);
             }
-            if (hasLogData()) {
+            if (((bitField0_ & 0x00000004) == 0x00000004)) {
               size += com.google.gwt.dev.protobuf.CodedOutputStream
-                .computeMessageSize(3, getLogData());
+                .computeMessageSize(3, logData_);
             }
             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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry parseFrom(
               com.google.gwt.dev.protobuf.ByteString data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry parseFrom(
               com.google.gwt.dev.protobuf.ByteString data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry parseFrom(byte[] data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry parseFrom(
               byte[] data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry parseFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry parseFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry parseDelimitedFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input).buildParsed();
+            return PARSER.parseDelimitedFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry parseDelimitedFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseDelimitedFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
-          
+
           public static Builder newBuilder() { return Builder.create(); }
           public Builder newBuilderForType() { return newBuilder(); }
           public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry prototype) {
             return newBuilder().mergeFrom(prototype);
           }
           public Builder toBuilder() { return newBuilder(this); }
-          
+
+          @java.lang.Override
+          protected Builder newBuilderForType(
+              com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+          }
+          /**
+           * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogEntry}
+           *
+           * <pre>
+           * Add a log entry to a log
+           * </pre>
+           */
           public static final class Builder extends
-              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry result;
-            
+              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+             implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntryOrBuilder {
+            public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+                getDescriptor() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLogEntry_descriptor;
+            }
+
+            protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+                internalGetFieldAccessorTable() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLogEntry_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.Builder.class);
+            }
+
             // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.newBuilder()
-            private Builder() {}
-            
-            private static Builder create() {
-              Builder builder = new Builder();
-              builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry();
-              return builder;
+            private Builder() {
+              maybeForceBuilderInitialization();
             }
-            
-            protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry internalGetResult() {
-              return result;
+
+            private Builder(
+                com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+              super(parent);
+              maybeForceBuilderInitialization();
             }
-            
-            public Builder clear() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "Cannot call clear() after build().");
+            private void maybeForceBuilderInitialization() {
+              if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+                getLogDataFieldBuilder();
               }
-              result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry();
+            }
+            private static Builder create() {
+              return new Builder();
+            }
+
+            public Builder clear() {
+              super.clear();
+              logHandle_ = 0;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              indexInLog_ = 0;
+              bitField0_ = (bitField0_ & ~0x00000002);
+              if (logDataBuilder_ == null) {
+                logData_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.getDefaultInstance();
+              } else {
+                logDataBuilder_.clear();
+              }
+              bitField0_ = (bitField0_ & ~0x00000004);
               return this;
             }
-            
+
             public Builder clone() {
-              return create().mergeFrom(result);
+              return create().mergeFrom(buildPartial());
             }
-            
+
             public com.google.gwt.dev.protobuf.Descriptors.Descriptor
                 getDescriptorForType() {
-              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.getDescriptor();
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLogEntry_descriptor;
             }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry getDefaultInstanceForType() {
               return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.getDefaultInstance();
             }
-            
-            public boolean isInitialized() {
-              return result.isInitialized();
-            }
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry build() {
-              if (result != null && !isInitialized()) {
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry result = buildPartial();
+              if (!result.isInitialized()) {
                 throw newUninitializedMessageException(result);
               }
-              return buildPartial();
+              return result;
             }
-            
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry buildParsed()
-                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              if (!isInitialized()) {
-                throw newUninitializedMessageException(
-                  result).asInvalidProtocolBufferException();
-              }
-              return buildPartial();
-            }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry buildPartial() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "build() has already been called on this Builder.");
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry(this);
+              int from_bitField0_ = bitField0_;
+              int to_bitField0_ = 0;
+              if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+                to_bitField0_ |= 0x00000001;
               }
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry returnMe = result;
-              result = null;
-              return returnMe;
+              result.logHandle_ = logHandle_;
+              if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+                to_bitField0_ |= 0x00000002;
+              }
+              result.indexInLog_ = indexInLog_;
+              if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+                to_bitField0_ |= 0x00000004;
+              }
+              if (logDataBuilder_ == null) {
+                result.logData_ = logData_;
+              } else {
+                result.logData_ = logDataBuilder_.build();
+              }
+              result.bitField0_ = to_bitField0_;
+              onBuilt();
+              return result;
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
               if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry) {
                 return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry)other);
@@ -3487,7 +7560,7 @@
                 return this;
               }
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry other) {
               if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.getDefaultInstance()) return this;
               if (other.hasLogHandle()) {
@@ -3502,325 +7575,565 @@
               this.mergeUnknownFields(other.getUnknownFields());
               return this;
             }
-            
+
+            public final boolean isInitialized() {
+              if (!hasLogHandle()) {
+                
+                return false;
+              }
+              if (!hasIndexInLog()) {
+                
+                return false;
+              }
+              if (!hasLogData()) {
+                
+                return false;
+              }
+              if (!getLogData().isInitialized()) {
+                
+                return false;
+              }
+              return true;
+            }
+
             public Builder mergeFrom(
                 com.google.gwt.dev.protobuf.CodedInputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws java.io.IOException {
-              com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-                com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-                  this.getUnknownFields());
-              while (true) {
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry parsedMessage = null;
+              try {
+                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+              } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+                parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry) e.getUnfinishedMessage();
+                throw e;
+              } finally {
+                if (parsedMessage != null) {
+                  mergeFrom(parsedMessage);
+                }
+              }
+              return this;
+            }
+            private int bitField0_;
+
+            // required uint32 logHandle = 1;
+            private int logHandle_ ;
+            /**
+             * <code>required uint32 logHandle = 1;</code>
+             */
+            public boolean hasLogHandle() {
+              return ((bitField0_ & 0x00000001) == 0x00000001);
+            }
+            /**
+             * <code>required uint32 logHandle = 1;</code>
+             */
+            public int getLogHandle() {
+              return logHandle_;
+            }
+            /**
+             * <code>required uint32 logHandle = 1;</code>
+             */
+            public Builder setLogHandle(int value) {
+              bitField0_ |= 0x00000001;
+              logHandle_ = value;
+              onChanged();
+              return this;
+            }
+            /**
+             * <code>required uint32 logHandle = 1;</code>
+             */
+            public Builder clearLogHandle() {
+              bitField0_ = (bitField0_ & ~0x00000001);
+              logHandle_ = 0;
+              onChanged();
+              return this;
+            }
+
+            // required uint32 indexInLog = 2;
+            private int indexInLog_ ;
+            /**
+             * <code>required uint32 indexInLog = 2;</code>
+             */
+            public boolean hasIndexInLog() {
+              return ((bitField0_ & 0x00000002) == 0x00000002);
+            }
+            /**
+             * <code>required uint32 indexInLog = 2;</code>
+             */
+            public int getIndexInLog() {
+              return indexInLog_;
+            }
+            /**
+             * <code>required uint32 indexInLog = 2;</code>
+             */
+            public Builder setIndexInLog(int value) {
+              bitField0_ |= 0x00000002;
+              indexInLog_ = value;
+              onChanged();
+              return this;
+            }
+            /**
+             * <code>required uint32 indexInLog = 2;</code>
+             */
+            public Builder clearIndexInLog() {
+              bitField0_ = (bitField0_ & ~0x00000002);
+              indexInLog_ = 0;
+              onChanged();
+              return this;
+            }
+
+            // required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;
+            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData logData_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.getDefaultInstance();
+            private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogDataOrBuilder> logDataBuilder_;
+            /**
+             * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+             */
+            public boolean hasLogData() {
+              return ((bitField0_ & 0x00000004) == 0x00000004);
+            }
+            /**
+             * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData getLogData() {
+              if (logDataBuilder_ == null) {
+                return logData_;
+              } else {
+                return logDataBuilder_.getMessage();
+              }
+            }
+            /**
+             * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+             */
+            public Builder setLogData(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData value) {
+              if (logDataBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                logData_ = value;
+                onChanged();
+              } else {
+                logDataBuilder_.setMessage(value);
+              }
+              bitField0_ |= 0x00000004;
+              return this;
+            }
+            /**
+             * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+             */
+            public Builder setLogData(
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.Builder builderForValue) {
+              if (logDataBuilder_ == null) {
+                logData_ = builderForValue.build();
+                onChanged();
+              } else {
+                logDataBuilder_.setMessage(builderForValue.build());
+              }
+              bitField0_ |= 0x00000004;
+              return this;
+            }
+            /**
+             * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+             */
+            public Builder mergeLogData(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData value) {
+              if (logDataBuilder_ == null) {
+                if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                    logData_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.getDefaultInstance()) {
+                  logData_ =
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.newBuilder(logData_).mergeFrom(value).buildPartial();
+                } else {
+                  logData_ = value;
+                }
+                onChanged();
+              } else {
+                logDataBuilder_.mergeFrom(value);
+              }
+              bitField0_ |= 0x00000004;
+              return this;
+            }
+            /**
+             * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+             */
+            public Builder clearLogData() {
+              if (logDataBuilder_ == null) {
+                logData_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.getDefaultInstance();
+                onChanged();
+              } else {
+                logDataBuilder_.clear();
+              }
+              bitField0_ = (bitField0_ & ~0x00000004);
+              return this;
+            }
+            /**
+             * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.Builder getLogDataBuilder() {
+              bitField0_ |= 0x00000004;
+              onChanged();
+              return getLogDataFieldBuilder().getBuilder();
+            }
+            /**
+             * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogDataOrBuilder getLogDataOrBuilder() {
+              if (logDataBuilder_ != null) {
+                return logDataBuilder_.getMessageOrBuilder();
+              } else {
+                return logData_;
+              }
+            }
+            /**
+             * <code>required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;</code>
+             */
+            private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogDataOrBuilder> 
+                getLogDataFieldBuilder() {
+              if (logDataBuilder_ == null) {
+                logDataBuilder_ = new com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogDataOrBuilder>(
+                        logData_,
+                        getParentForChildren(),
+                        isClean());
+                logData_ = null;
+              }
+              return logDataBuilder_;
+            }
+
+            // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogEntry)
+          }
+
+          static {
+            defaultInstance = new AddLogEntry(true);
+            defaultInstance.initFields();
+          }
+
+          // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogEntry)
+        }
+
+        public interface DisconnectLogOrBuilder
+            extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+
+          // required uint32 logHandle = 1;
+          /**
+           * <code>required uint32 logHandle = 1;</code>
+           */
+          boolean hasLogHandle();
+          /**
+           * <code>required uint32 logHandle = 1;</code>
+           */
+          int getLogHandle();
+        }
+        /**
+         * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.DisconnectLog}
+         *
+         * <pre>
+         * Disconnect the given log (i.e. process for which information was
+         * being logged is dead)
+         * </pre>
+         */
+        public static final class DisconnectLog extends
+            com.google.gwt.dev.protobuf.GeneratedMessage
+            implements DisconnectLogOrBuilder {
+          // Use DisconnectLog.newBuilder() to construct.
+          private DisconnectLog(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+            super(builder);
+            this.unknownFields = builder.getUnknownFields();
+          }
+          private DisconnectLog(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+          private static final DisconnectLog defaultInstance;
+          public static DisconnectLog getDefaultInstance() {
+            return defaultInstance;
+          }
+
+          public DisconnectLog getDefaultInstanceForType() {
+            return defaultInstance;
+          }
+
+          private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+          @java.lang.Override
+          public final com.google.gwt.dev.protobuf.UnknownFieldSet
+              getUnknownFields() {
+            return this.unknownFields;
+          }
+          private DisconnectLog(
+              com.google.gwt.dev.protobuf.CodedInputStream input,
+              com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+            initFields();
+            int mutable_bitField0_ = 0;
+            com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+                com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder();
+            try {
+              boolean done = false;
+              while (!done) {
                 int tag = input.readTag();
                 switch (tag) {
                   case 0:
-                    this.setUnknownFields(unknownFields.build());
-                    return this;
+                    done = true;
+                    break;
                   default: {
                     if (!parseUnknownField(input, unknownFields,
                                            extensionRegistry, tag)) {
-                      this.setUnknownFields(unknownFields.build());
-                      return this;
+                      done = true;
                     }
                     break;
                   }
                   case 8: {
-                    setLogHandle(input.readUInt32());
-                    break;
-                  }
-                  case 16: {
-                    setIndexInLog(input.readUInt32());
-                    break;
-                  }
-                  case 26: {
-                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.newBuilder();
-                    if (hasLogData()) {
-                      subBuilder.mergeFrom(getLogData());
-                    }
-                    input.readMessage(subBuilder, extensionRegistry);
-                    setLogData(subBuilder.buildPartial());
+                    bitField0_ |= 0x00000001;
+                    logHandle_ = input.readUInt32();
                     break;
                   }
                 }
               }
-            }
-            
-            
-            // required uint32 logHandle = 1;
-            public boolean hasLogHandle() {
-              return result.hasLogHandle();
-            }
-            public int getLogHandle() {
-              return result.getLogHandle();
-            }
-            public Builder setLogHandle(int value) {
-              result.hasLogHandle = true;
-              result.logHandle_ = value;
-              return this;
-            }
-            public Builder clearLogHandle() {
-              result.hasLogHandle = false;
-              result.logHandle_ = 0;
-              return this;
-            }
-            
-            // required uint32 indexInLog = 2;
-            public boolean hasIndexInLog() {
-              return result.hasIndexInLog();
-            }
-            public int getIndexInLog() {
-              return result.getIndexInLog();
-            }
-            public Builder setIndexInLog(int value) {
-              result.hasIndexInLog = true;
-              result.indexInLog_ = value;
-              return this;
-            }
-            public Builder clearIndexInLog() {
-              result.hasIndexInLog = false;
-              result.indexInLog_ = 0;
-              return this;
-            }
-            
-            // required .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.LogData logData = 3;
-            public boolean hasLogData() {
-              return result.hasLogData();
-            }
-            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData getLogData() {
-              return result.getLogData();
-            }
-            public Builder setLogData(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData value) {
-              if (value == null) {
-                throw new NullPointerException();
-              }
-              result.hasLogData = true;
-              result.logData_ = value;
-              return this;
-            }
-            public Builder setLogData(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.Builder builderForValue) {
-              result.hasLogData = true;
-              result.logData_ = builderForValue.build();
-              return this;
-            }
-            public Builder mergeLogData(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData value) {
-              if (result.hasLogData() &&
-                  result.logData_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.getDefaultInstance()) {
-                result.logData_ =
-                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.newBuilder(result.logData_).mergeFrom(value).buildPartial();
-              } else {
-                result.logData_ = value;
-              }
-              result.hasLogData = true;
-              return this;
-            }
-            public Builder clearLogData() {
-              result.hasLogData = false;
-              result.logData_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.getDefaultInstance();
-              return this;
+            } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+              throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+              throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+                  e.getMessage()).setUnfinishedMessage(this);
+            } finally {
+              this.unknownFields = unknownFields.build();
+              makeExtensionsImmutable();
             }
           }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
-          }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-          }
-        }
-        
-        public static final class DisconnectLog extends
-            com.google.gwt.dev.protobuf.GeneratedMessage {
-          // Use DisconnectLog.newBuilder() to construct.
-          private DisconnectLog() {}
-          
-          private static final DisconnectLog defaultInstance = new DisconnectLog();
-          public static DisconnectLog getDefaultInstance() {
-            return defaultInstance;
-          }
-          
-          public DisconnectLog getDefaultInstanceForType() {
-            return defaultInstance;
-          }
-          
           public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
               getDescriptor() {
             return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_DisconnectLog_descriptor;
           }
-          
+
           protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
               internalGetFieldAccessorTable() {
-            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_DisconnectLog_fieldAccessorTable;
+            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_DisconnectLog_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.Builder.class);
           }
-          
+
+          public static com.google.gwt.dev.protobuf.Parser<DisconnectLog> PARSER =
+              new com.google.gwt.dev.protobuf.AbstractParser<DisconnectLog>() {
+            public DisconnectLog parsePartialFrom(
+                com.google.gwt.dev.protobuf.CodedInputStream input,
+                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              return new DisconnectLog(input, extensionRegistry);
+            }
+          };
+
+          @java.lang.Override
+          public com.google.gwt.dev.protobuf.Parser<DisconnectLog> getParserForType() {
+            return PARSER;
+          }
+
+          private int bitField0_;
           // required uint32 logHandle = 1;
           public static final int LOGHANDLE_FIELD_NUMBER = 1;
-          private boolean hasLogHandle;
-          private int logHandle_ = 0;
-          public boolean hasLogHandle() { return hasLogHandle; }
-          public int getLogHandle() { return logHandle_; }
-          
+          private int logHandle_;
+          /**
+           * <code>required uint32 logHandle = 1;</code>
+           */
+          public boolean hasLogHandle() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>required uint32 logHandle = 1;</code>
+           */
+          public int getLogHandle() {
+            return logHandle_;
+          }
+
+          private void initFields() {
+            logHandle_ = 0;
+          }
+          private byte memoizedIsInitialized = -1;
           public final boolean isInitialized() {
-            if (!hasLogHandle) return false;
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized != -1) return isInitialized == 1;
+
+            if (!hasLogHandle()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+            memoizedIsInitialized = 1;
             return true;
           }
-          
+
           public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
                               throws java.io.IOException {
-            if (hasLogHandle()) {
-              output.writeUInt32(1, getLogHandle());
+            getSerializedSize();
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              output.writeUInt32(1, logHandle_);
             }
             getUnknownFields().writeTo(output);
           }
-          
+
           private int memoizedSerializedSize = -1;
           public int getSerializedSize() {
             int size = memoizedSerializedSize;
             if (size != -1) return size;
-          
+
             size = 0;
-            if (hasLogHandle()) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
               size += com.google.gwt.dev.protobuf.CodedOutputStream
-                .computeUInt32Size(1, getLogHandle());
+                .computeUInt32Size(1, logHandle_);
             }
             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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog parseFrom(
               com.google.gwt.dev.protobuf.ByteString data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog parseFrom(
               com.google.gwt.dev.protobuf.ByteString data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog parseFrom(byte[] data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog parseFrom(
               byte[] data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog parseFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog parseFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog parseDelimitedFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input).buildParsed();
+            return PARSER.parseDelimitedFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog parseDelimitedFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseDelimitedFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
-          
+
           public static Builder newBuilder() { return Builder.create(); }
           public Builder newBuilderForType() { return newBuilder(); }
           public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog prototype) {
             return newBuilder().mergeFrom(prototype);
           }
           public Builder toBuilder() { return newBuilder(this); }
-          
+
+          @java.lang.Override
+          protected Builder newBuilderForType(
+              com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+          }
+          /**
+           * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.DisconnectLog}
+           *
+           * <pre>
+           * Disconnect the given log (i.e. process for which information was
+           * being logged is dead)
+           * </pre>
+           */
           public static final class Builder extends
-              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog result;
-            
+              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+             implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLogOrBuilder {
+            public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+                getDescriptor() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_DisconnectLog_descriptor;
+            }
+
+            protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+                internalGetFieldAccessorTable() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_DisconnectLog_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.Builder.class);
+            }
+
             // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.newBuilder()
-            private Builder() {}
-            
-            private static Builder create() {
-              Builder builder = new Builder();
-              builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog();
-              return builder;
+            private Builder() {
+              maybeForceBuilderInitialization();
             }
-            
-            protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog internalGetResult() {
-              return result;
+
+            private Builder(
+                com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+              super(parent);
+              maybeForceBuilderInitialization();
             }
-            
-            public Builder clear() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "Cannot call clear() after build().");
+            private void maybeForceBuilderInitialization() {
+              if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
               }
-              result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog();
+            }
+            private static Builder create() {
+              return new Builder();
+            }
+
+            public Builder clear() {
+              super.clear();
+              logHandle_ = 0;
+              bitField0_ = (bitField0_ & ~0x00000001);
               return this;
             }
-            
+
             public Builder clone() {
-              return create().mergeFrom(result);
+              return create().mergeFrom(buildPartial());
             }
-            
+
             public com.google.gwt.dev.protobuf.Descriptors.Descriptor
                 getDescriptorForType() {
-              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.getDescriptor();
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_DisconnectLog_descriptor;
             }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog getDefaultInstanceForType() {
               return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.getDefaultInstance();
             }
-            
-            public boolean isInitialized() {
-              return result.isInitialized();
-            }
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog build() {
-              if (result != null && !isInitialized()) {
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog result = buildPartial();
+              if (!result.isInitialized()) {
                 throw newUninitializedMessageException(result);
               }
-              return buildPartial();
+              return result;
             }
-            
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog buildParsed()
-                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              if (!isInitialized()) {
-                throw newUninitializedMessageException(
-                  result).asInvalidProtocolBufferException();
-              }
-              return buildPartial();
-            }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog buildPartial() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "build() has already been called on this Builder.");
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog(this);
+              int from_bitField0_ = bitField0_;
+              int to_bitField0_ = 0;
+              if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+                to_bitField0_ |= 0x00000001;
               }
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog returnMe = result;
-              result = null;
-              return returnMe;
+              result.logHandle_ = logHandle_;
+              result.bitField0_ = to_bitField0_;
+              onBuilt();
+              return result;
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
               if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog) {
                 return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog)other);
@@ -3829,7 +8142,7 @@
                 return this;
               }
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog other) {
               if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.getDefaultInstance()) return this;
               if (other.hasLogHandle()) {
@@ -3838,138 +8151,336 @@
               this.mergeUnknownFields(other.getUnknownFields());
               return this;
             }
-            
+
+            public final boolean isInitialized() {
+              if (!hasLogHandle()) {
+                
+                return false;
+              }
+              return true;
+            }
+
             public Builder mergeFrom(
                 com.google.gwt.dev.protobuf.CodedInputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws java.io.IOException {
-              com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-                com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-                  this.getUnknownFields());
-              while (true) {
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog parsedMessage = null;
+              try {
+                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+              } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+                parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog) e.getUnfinishedMessage();
+                throw e;
+              } finally {
+                if (parsedMessage != null) {
+                  mergeFrom(parsedMessage);
+                }
+              }
+              return this;
+            }
+            private int bitField0_;
+
+            // required uint32 logHandle = 1;
+            private int logHandle_ ;
+            /**
+             * <code>required uint32 logHandle = 1;</code>
+             */
+            public boolean hasLogHandle() {
+              return ((bitField0_ & 0x00000001) == 0x00000001);
+            }
+            /**
+             * <code>required uint32 logHandle = 1;</code>
+             */
+            public int getLogHandle() {
+              return logHandle_;
+            }
+            /**
+             * <code>required uint32 logHandle = 1;</code>
+             */
+            public Builder setLogHandle(int value) {
+              bitField0_ |= 0x00000001;
+              logHandle_ = value;
+              onChanged();
+              return this;
+            }
+            /**
+             * <code>required uint32 logHandle = 1;</code>
+             */
+            public Builder clearLogHandle() {
+              bitField0_ = (bitField0_ & ~0x00000001);
+              logHandle_ = 0;
+              onChanged();
+              return this;
+            }
+
+            // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.DisconnectLog)
+          }
+
+          static {
+            defaultInstance = new DisconnectLog(true);
+            defaultInstance.initFields();
+          }
+
+          // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.DisconnectLog)
+        }
+
+        public interface InitializeOrBuilder
+            extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+
+          // optional string clientId = 1;
+          /**
+           * <code>optional string clientId = 1;</code>
+           */
+          boolean hasClientId();
+          /**
+           * <code>optional string clientId = 1;</code>
+           */
+          java.lang.String getClientId();
+          /**
+           * <code>optional string clientId = 1;</code>
+           */
+          com.google.gwt.dev.protobuf.ByteString
+              getClientIdBytes();
+
+          // repeated string startupURLs = 2;
+          /**
+           * <code>repeated string startupURLs = 2;</code>
+           */
+          java.util.List<java.lang.String>
+          getStartupURLsList();
+          /**
+           * <code>repeated string startupURLs = 2;</code>
+           */
+          int getStartupURLsCount();
+          /**
+           * <code>repeated string startupURLs = 2;</code>
+           */
+          java.lang.String getStartupURLs(int index);
+          /**
+           * <code>repeated string startupURLs = 2;</code>
+           */
+          com.google.gwt.dev.protobuf.ByteString
+              getStartupURLsBytes(int index);
+        }
+        /**
+         * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.Initialize}
+         */
+        public static final class Initialize extends
+            com.google.gwt.dev.protobuf.GeneratedMessage
+            implements InitializeOrBuilder {
+          // Use Initialize.newBuilder() to construct.
+          private Initialize(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+            super(builder);
+            this.unknownFields = builder.getUnknownFields();
+          }
+          private Initialize(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+          private static final Initialize defaultInstance;
+          public static Initialize getDefaultInstance() {
+            return defaultInstance;
+          }
+
+          public Initialize getDefaultInstanceForType() {
+            return defaultInstance;
+          }
+
+          private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+          @java.lang.Override
+          public final com.google.gwt.dev.protobuf.UnknownFieldSet
+              getUnknownFields() {
+            return this.unknownFields;
+          }
+          private Initialize(
+              com.google.gwt.dev.protobuf.CodedInputStream input,
+              com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+            initFields();
+            int mutable_bitField0_ = 0;
+            com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+                com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder();
+            try {
+              boolean done = false;
+              while (!done) {
                 int tag = input.readTag();
                 switch (tag) {
                   case 0:
-                    this.setUnknownFields(unknownFields.build());
-                    return this;
+                    done = true;
+                    break;
                   default: {
                     if (!parseUnknownField(input, unknownFields,
                                            extensionRegistry, tag)) {
-                      this.setUnknownFields(unknownFields.build());
-                      return this;
+                      done = true;
                     }
                     break;
                   }
-                  case 8: {
-                    setLogHandle(input.readUInt32());
+                  case 10: {
+                    bitField0_ |= 0x00000001;
+                    clientId_ = input.readBytes();
+                    break;
+                  }
+                  case 18: {
+                    if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                      startupURLs_ = new com.google.gwt.dev.protobuf.LazyStringArrayList();
+                      mutable_bitField0_ |= 0x00000002;
+                    }
+                    startupURLs_.add(input.readBytes());
                     break;
                   }
                 }
               }
-            }
-            
-            
-            // required uint32 logHandle = 1;
-            public boolean hasLogHandle() {
-              return result.hasLogHandle();
-            }
-            public int getLogHandle() {
-              return result.getLogHandle();
-            }
-            public Builder setLogHandle(int value) {
-              result.hasLogHandle = true;
-              result.logHandle_ = value;
-              return this;
-            }
-            public Builder clearLogHandle() {
-              result.hasLogHandle = false;
-              result.logHandle_ = 0;
-              return this;
+            } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+              throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+              throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+                  e.getMessage()).setUnfinishedMessage(this);
+            } finally {
+              if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                startupURLs_ = new com.google.gwt.dev.protobuf.UnmodifiableLazyStringList(startupURLs_);
+              }
+              this.unknownFields = unknownFields.build();
+              makeExtensionsImmutable();
             }
           }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
-          }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-          }
-        }
-        
-        public static final class Initialize extends
-            com.google.gwt.dev.protobuf.GeneratedMessage {
-          // Use Initialize.newBuilder() to construct.
-          private Initialize() {}
-          
-          private static final Initialize defaultInstance = new Initialize();
-          public static Initialize getDefaultInstance() {
-            return defaultInstance;
-          }
-          
-          public Initialize getDefaultInstanceForType() {
-            return defaultInstance;
-          }
-          
           public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
               getDescriptor() {
             return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_Initialize_descriptor;
           }
-          
+
           protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
               internalGetFieldAccessorTable() {
-            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_Initialize_fieldAccessorTable;
+            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_Initialize_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.Builder.class);
           }
-          
+
+          public static com.google.gwt.dev.protobuf.Parser<Initialize> PARSER =
+              new com.google.gwt.dev.protobuf.AbstractParser<Initialize>() {
+            public Initialize parsePartialFrom(
+                com.google.gwt.dev.protobuf.CodedInputStream input,
+                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              return new Initialize(input, extensionRegistry);
+            }
+          };
+
+          @java.lang.Override
+          public com.google.gwt.dev.protobuf.Parser<Initialize> getParserForType() {
+            return PARSER;
+          }
+
+          private int bitField0_;
           // optional string clientId = 1;
           public static final int CLIENTID_FIELD_NUMBER = 1;
-          private boolean hasClientId;
-          private java.lang.String clientId_ = "";
-          public boolean hasClientId() { return hasClientId; }
-          public java.lang.String getClientId() { return clientId_; }
-          
+          private java.lang.Object clientId_;
+          /**
+           * <code>optional string clientId = 1;</code>
+           */
+          public boolean hasClientId() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>optional string clientId = 1;</code>
+           */
+          public java.lang.String getClientId() {
+            java.lang.Object ref = clientId_;
+            if (ref instanceof java.lang.String) {
+              return (java.lang.String) ref;
+            } else {
+              com.google.gwt.dev.protobuf.ByteString bs = 
+                  (com.google.gwt.dev.protobuf.ByteString) ref;
+              java.lang.String s = bs.toStringUtf8();
+              if (bs.isValidUtf8()) {
+                clientId_ = s;
+              }
+              return s;
+            }
+          }
+          /**
+           * <code>optional string clientId = 1;</code>
+           */
+          public com.google.gwt.dev.protobuf.ByteString
+              getClientIdBytes() {
+            java.lang.Object ref = clientId_;
+            if (ref instanceof java.lang.String) {
+              com.google.gwt.dev.protobuf.ByteString b = 
+                  com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                      (java.lang.String) ref);
+              clientId_ = b;
+              return b;
+            } else {
+              return (com.google.gwt.dev.protobuf.ByteString) ref;
+            }
+          }
+
           // repeated string startupURLs = 2;
           public static final int STARTUPURLS_FIELD_NUMBER = 2;
-          private java.util.List<java.lang.String> startupURLs_ =
-            java.util.Collections.emptyList();
-          public java.util.List<java.lang.String> getStartupURLsList() {
+          private com.google.gwt.dev.protobuf.LazyStringList startupURLs_;
+          /**
+           * <code>repeated string startupURLs = 2;</code>
+           */
+          public java.util.List<java.lang.String>
+              getStartupURLsList() {
             return startupURLs_;
           }
-          public int getStartupURLsCount() { return startupURLs_.size(); }
+          /**
+           * <code>repeated string startupURLs = 2;</code>
+           */
+          public int getStartupURLsCount() {
+            return startupURLs_.size();
+          }
+          /**
+           * <code>repeated string startupURLs = 2;</code>
+           */
           public java.lang.String getStartupURLs(int index) {
             return startupURLs_.get(index);
           }
-          
+          /**
+           * <code>repeated string startupURLs = 2;</code>
+           */
+          public com.google.gwt.dev.protobuf.ByteString
+              getStartupURLsBytes(int index) {
+            return startupURLs_.getByteString(index);
+          }
+
+          private void initFields() {
+            clientId_ = "";
+            startupURLs_ = com.google.gwt.dev.protobuf.LazyStringArrayList.EMPTY;
+          }
+          private byte memoizedIsInitialized = -1;
           public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized != -1) return isInitialized == 1;
+
+            memoizedIsInitialized = 1;
             return true;
           }
-          
+
           public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
                               throws java.io.IOException {
-            if (hasClientId()) {
-              output.writeString(1, getClientId());
+            getSerializedSize();
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              output.writeBytes(1, getClientIdBytes());
             }
-            for (java.lang.String element : getStartupURLsList()) {
-              output.writeString(2, element);
+            for (int i = 0; i < startupURLs_.size(); i++) {
+              output.writeBytes(2, startupURLs_.getByteString(i));
             }
             getUnknownFields().writeTo(output);
           }
-          
+
           private int memoizedSerializedSize = -1;
           public int getSerializedSize() {
             int size = memoizedSerializedSize;
             if (size != -1) return size;
-          
+
             size = 0;
-            if (hasClientId()) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
               size += com.google.gwt.dev.protobuf.CodedOutputStream
-                .computeStringSize(1, getClientId());
+                .computeBytesSize(1, getClientIdBytes());
             }
             {
               int dataSize = 0;
-              for (java.lang.String element : getStartupURLsList()) {
+              for (int i = 0; i < startupURLs_.size(); i++) {
                 dataSize += com.google.gwt.dev.protobuf.CodedOutputStream
-                  .computeStringSizeNoTag(element);
+                  .computeBytesSizeNoTag(startupURLs_.getByteString(i));
               }
               size += dataSize;
               size += 1 * getStartupURLsList().size();
@@ -3978,144 +8489,165 @@
             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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize parseFrom(
               com.google.gwt.dev.protobuf.ByteString data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize parseFrom(
               com.google.gwt.dev.protobuf.ByteString data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize parseFrom(byte[] data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize parseFrom(
               byte[] data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize parseFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize parseFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize parseDelimitedFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input).buildParsed();
+            return PARSER.parseDelimitedFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize parseDelimitedFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseDelimitedFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
-          
+
           public static Builder newBuilder() { return Builder.create(); }
           public Builder newBuilderForType() { return newBuilder(); }
           public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize prototype) {
             return newBuilder().mergeFrom(prototype);
           }
           public Builder toBuilder() { return newBuilder(this); }
-          
+
+          @java.lang.Override
+          protected Builder newBuilderForType(
+              com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+          }
+          /**
+           * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.Initialize}
+           */
           public static final class Builder extends
-              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize result;
-            
+              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+             implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.InitializeOrBuilder {
+            public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+                getDescriptor() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_Initialize_descriptor;
+            }
+
+            protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+                internalGetFieldAccessorTable() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_Initialize_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.Builder.class);
+            }
+
             // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.newBuilder()
-            private Builder() {}
-            
-            private static Builder create() {
-              Builder builder = new Builder();
-              builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize();
-              return builder;
+            private Builder() {
+              maybeForceBuilderInitialization();
             }
-            
-            protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize internalGetResult() {
-              return result;
+
+            private Builder(
+                com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+              super(parent);
+              maybeForceBuilderInitialization();
             }
-            
-            public Builder clear() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "Cannot call clear() after build().");
+            private void maybeForceBuilderInitialization() {
+              if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
               }
-              result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize();
+            }
+            private static Builder create() {
+              return new Builder();
+            }
+
+            public Builder clear() {
+              super.clear();
+              clientId_ = "";
+              bitField0_ = (bitField0_ & ~0x00000001);
+              startupURLs_ = com.google.gwt.dev.protobuf.LazyStringArrayList.EMPTY;
+              bitField0_ = (bitField0_ & ~0x00000002);
               return this;
             }
-            
+
             public Builder clone() {
-              return create().mergeFrom(result);
+              return create().mergeFrom(buildPartial());
             }
-            
+
             public com.google.gwt.dev.protobuf.Descriptors.Descriptor
                 getDescriptorForType() {
-              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.getDescriptor();
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_Initialize_descriptor;
             }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize getDefaultInstanceForType() {
               return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.getDefaultInstance();
             }
-            
-            public boolean isInitialized() {
-              return result.isInitialized();
-            }
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize build() {
-              if (result != null && !isInitialized()) {
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize result = buildPartial();
+              if (!result.isInitialized()) {
                 throw newUninitializedMessageException(result);
               }
-              return buildPartial();
+              return result;
             }
-            
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize buildParsed()
-                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              if (!isInitialized()) {
-                throw newUninitializedMessageException(
-                  result).asInvalidProtocolBufferException();
-              }
-              return buildPartial();
-            }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize buildPartial() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "build() has already been called on this Builder.");
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize(this);
+              int from_bitField0_ = bitField0_;
+              int to_bitField0_ = 0;
+              if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+                to_bitField0_ |= 0x00000001;
               }
-              if (result.startupURLs_ != java.util.Collections.EMPTY_LIST) {
-                result.startupURLs_ =
-                  java.util.Collections.unmodifiableList(result.startupURLs_);
+              result.clientId_ = clientId_;
+              if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                startupURLs_ = new com.google.gwt.dev.protobuf.UnmodifiableLazyStringList(
+                    startupURLs_);
+                bitField0_ = (bitField0_ & ~0x00000002);
               }
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize returnMe = result;
-              result = null;
-              return returnMe;
+              result.startupURLs_ = startupURLs_;
+              result.bitField0_ = to_bitField0_;
+              onBuilt();
+              return result;
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
               if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize) {
                 return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize)other);
@@ -4124,390 +8656,730 @@
                 return this;
               }
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize other) {
               if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.getDefaultInstance()) return this;
               if (other.hasClientId()) {
-                setClientId(other.getClientId());
+                bitField0_ |= 0x00000001;
+                clientId_ = other.clientId_;
+                onChanged();
               }
               if (!other.startupURLs_.isEmpty()) {
-                if (result.startupURLs_.isEmpty()) {
-                  result.startupURLs_ = new java.util.ArrayList<java.lang.String>();
+                if (startupURLs_.isEmpty()) {
+                  startupURLs_ = other.startupURLs_;
+                  bitField0_ = (bitField0_ & ~0x00000002);
+                } else {
+                  ensureStartupURLsIsMutable();
+                  startupURLs_.addAll(other.startupURLs_);
                 }
-                result.startupURLs_.addAll(other.startupURLs_);
+                onChanged();
               }
               this.mergeUnknownFields(other.getUnknownFields());
               return this;
             }
-            
+
+            public final boolean isInitialized() {
+              return true;
+            }
+
             public Builder mergeFrom(
                 com.google.gwt.dev.protobuf.CodedInputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws java.io.IOException {
-              com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-                com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-                  this.getUnknownFields());
-              while (true) {
-                int tag = input.readTag();
-                switch (tag) {
-                  case 0:
-                    this.setUnknownFields(unknownFields.build());
-                    return this;
-                  default: {
-                    if (!parseUnknownField(input, unknownFields,
-                                           extensionRegistry, tag)) {
-                      this.setUnknownFields(unknownFields.build());
-                      return this;
-                    }
-                    break;
-                  }
-                  case 10: {
-                    setClientId(input.readString());
-                    break;
-                  }
-                  case 18: {
-                    addStartupURLs(input.readString());
-                    break;
-                  }
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize parsedMessage = null;
+              try {
+                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+              } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+                parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize) e.getUnfinishedMessage();
+                throw e;
+              } finally {
+                if (parsedMessage != null) {
+                  mergeFrom(parsedMessage);
                 }
               }
+              return this;
             }
-            
-            
+            private int bitField0_;
+
             // optional string clientId = 1;
+            private java.lang.Object clientId_ = "";
+            /**
+             * <code>optional string clientId = 1;</code>
+             */
             public boolean hasClientId() {
-              return result.hasClientId();
+              return ((bitField0_ & 0x00000001) == 0x00000001);
             }
+            /**
+             * <code>optional string clientId = 1;</code>
+             */
             public java.lang.String getClientId() {
-              return result.getClientId();
+              java.lang.Object ref = clientId_;
+              if (!(ref instanceof java.lang.String)) {
+                java.lang.String s = ((com.google.gwt.dev.protobuf.ByteString) ref)
+                    .toStringUtf8();
+                clientId_ = s;
+                return s;
+              } else {
+                return (java.lang.String) ref;
+              }
             }
-            public Builder setClientId(java.lang.String value) {
+            /**
+             * <code>optional string clientId = 1;</code>
+             */
+            public com.google.gwt.dev.protobuf.ByteString
+                getClientIdBytes() {
+              java.lang.Object ref = clientId_;
+              if (ref instanceof String) {
+                com.google.gwt.dev.protobuf.ByteString b = 
+                    com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                        (java.lang.String) ref);
+                clientId_ = b;
+                return b;
+              } else {
+                return (com.google.gwt.dev.protobuf.ByteString) ref;
+              }
+            }
+            /**
+             * <code>optional string clientId = 1;</code>
+             */
+            public Builder setClientId(
+                java.lang.String value) {
               if (value == null) {
     throw new NullPointerException();
   }
-  result.hasClientId = true;
-              result.clientId_ = value;
+  bitField0_ |= 0x00000001;
+              clientId_ = value;
+              onChanged();
               return this;
             }
+            /**
+             * <code>optional string clientId = 1;</code>
+             */
             public Builder clearClientId() {
-              result.hasClientId = false;
-              result.clientId_ = getDefaultInstance().getClientId();
+              bitField0_ = (bitField0_ & ~0x00000001);
+              clientId_ = getDefaultInstance().getClientId();
+              onChanged();
               return this;
             }
-            
+            /**
+             * <code>optional string clientId = 1;</code>
+             */
+            public Builder setClientIdBytes(
+                com.google.gwt.dev.protobuf.ByteString value) {
+              if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+              clientId_ = value;
+              onChanged();
+              return this;
+            }
+
             // repeated string startupURLs = 2;
-            public java.util.List<java.lang.String> getStartupURLsList() {
-              return java.util.Collections.unmodifiableList(result.startupURLs_);
+            private com.google.gwt.dev.protobuf.LazyStringList startupURLs_ = com.google.gwt.dev.protobuf.LazyStringArrayList.EMPTY;
+            private void ensureStartupURLsIsMutable() {
+              if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+                startupURLs_ = new com.google.gwt.dev.protobuf.LazyStringArrayList(startupURLs_);
+                bitField0_ |= 0x00000002;
+               }
             }
+            /**
+             * <code>repeated string startupURLs = 2;</code>
+             */
+            public java.util.List<java.lang.String>
+                getStartupURLsList() {
+              return java.util.Collections.unmodifiableList(startupURLs_);
+            }
+            /**
+             * <code>repeated string startupURLs = 2;</code>
+             */
             public int getStartupURLsCount() {
-              return result.getStartupURLsCount();
+              return startupURLs_.size();
             }
+            /**
+             * <code>repeated string startupURLs = 2;</code>
+             */
             public java.lang.String getStartupURLs(int index) {
-              return result.getStartupURLs(index);
+              return startupURLs_.get(index);
             }
-            public Builder setStartupURLs(int index, java.lang.String value) {
+            /**
+             * <code>repeated string startupURLs = 2;</code>
+             */
+            public com.google.gwt.dev.protobuf.ByteString
+                getStartupURLsBytes(int index) {
+              return startupURLs_.getByteString(index);
+            }
+            /**
+             * <code>repeated string startupURLs = 2;</code>
+             */
+            public Builder setStartupURLs(
+                int index, java.lang.String value) {
               if (value == null) {
     throw new NullPointerException();
   }
-  result.startupURLs_.set(index, value);
+  ensureStartupURLsIsMutable();
+              startupURLs_.set(index, value);
+              onChanged();
               return this;
             }
-            public Builder addStartupURLs(java.lang.String value) {
+            /**
+             * <code>repeated string startupURLs = 2;</code>
+             */
+            public Builder addStartupURLs(
+                java.lang.String value) {
               if (value == null) {
     throw new NullPointerException();
   }
-  if (result.startupURLs_.isEmpty()) {
-                result.startupURLs_ = new java.util.ArrayList<java.lang.String>();
-              }
-              result.startupURLs_.add(value);
+  ensureStartupURLsIsMutable();
+              startupURLs_.add(value);
+              onChanged();
               return this;
             }
+            /**
+             * <code>repeated string startupURLs = 2;</code>
+             */
             public Builder addAllStartupURLs(
-                java.lang.Iterable<? extends java.lang.String> values) {
-              if (result.startupURLs_.isEmpty()) {
-                result.startupURLs_ = new java.util.ArrayList<java.lang.String>();
-              }
-              super.addAll(values, result.startupURLs_);
+                java.lang.Iterable<java.lang.String> values) {
+              ensureStartupURLsIsMutable();
+              super.addAll(values, startupURLs_);
+              onChanged();
               return this;
             }
+            /**
+             * <code>repeated string startupURLs = 2;</code>
+             */
             public Builder clearStartupURLs() {
-              result.startupURLs_ = java.util.Collections.emptyList();
+              startupURLs_ = com.google.gwt.dev.protobuf.LazyStringArrayList.EMPTY;
+              bitField0_ = (bitField0_ & ~0x00000002);
+              onChanged();
               return this;
             }
+            /**
+             * <code>repeated string startupURLs = 2;</code>
+             */
+            public Builder addStartupURLsBytes(
+                com.google.gwt.dev.protobuf.ByteString value) {
+              if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureStartupURLsIsMutable();
+              startupURLs_.add(value);
+              onChanged();
+              return this;
+            }
+
+            // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.Initialize)
           }
-          
+
           static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
+            defaultInstance = new Initialize(true);
+            defaultInstance.initFields();
           }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-          }
+
+          // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.Initialize)
         }
-        
+
+        private int bitField0_;
         // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.RequestType requestType = 1;
         public static final int REQUESTTYPE_FIELD_NUMBER = 1;
-        private boolean hasRequestType;
-        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType requestType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType.CAPABILITY_EXCHANGE;
-        public boolean hasRequestType() { return hasRequestType; }
-        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType getRequestType() { return requestType_; }
-        
+        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType requestType_;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.RequestType requestType = 1;</code>
+         */
+        public boolean hasRequestType() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.RequestType requestType = 1;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType getRequestType() {
+          return requestType_;
+        }
+
         // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.CapabilityExchange capabilityExchange = 2;
         public static final int CAPABILITYEXCHANGE_FIELD_NUMBER = 2;
-        private boolean hasCapabilityExchange;
-        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange capabilityExchange_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.getDefaultInstance();
-        public boolean hasCapabilityExchange() { return hasCapabilityExchange; }
-        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange getCapabilityExchange() { return capabilityExchange_; }
-        
+        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange capabilityExchange_;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.CapabilityExchange capabilityExchange = 2;</code>
+         */
+        public boolean hasCapabilityExchange() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.CapabilityExchange capabilityExchange = 2;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange getCapabilityExchange() {
+          return capabilityExchange_;
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.CapabilityExchange capabilityExchange = 2;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchangeOrBuilder getCapabilityExchangeOrBuilder() {
+          return capabilityExchange_;
+        }
+
         // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog addLog = 3;
         public static final int ADDLOG_FIELD_NUMBER = 3;
-        private boolean hasAddLog;
-        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog addLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.getDefaultInstance();
-        public boolean hasAddLog() { return hasAddLog; }
-        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog getAddLog() { return addLog_; }
-        
+        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog addLog_;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog addLog = 3;</code>
+         */
+        public boolean hasAddLog() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog addLog = 3;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog getAddLog() {
+          return addLog_;
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog addLog = 3;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogOrBuilder getAddLogOrBuilder() {
+          return addLog_;
+        }
+
         // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogBranch addLogBranch = 4;
         public static final int ADDLOGBRANCH_FIELD_NUMBER = 4;
-        private boolean hasAddLogBranch;
-        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch addLogBranch_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.getDefaultInstance();
-        public boolean hasAddLogBranch() { return hasAddLogBranch; }
-        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch getAddLogBranch() { return addLogBranch_; }
-        
+        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch addLogBranch_;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogBranch addLogBranch = 4;</code>
+         */
+        public boolean hasAddLogBranch() {
+          return ((bitField0_ & 0x00000008) == 0x00000008);
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogBranch addLogBranch = 4;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch getAddLogBranch() {
+          return addLogBranch_;
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogBranch addLogBranch = 4;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranchOrBuilder getAddLogBranchOrBuilder() {
+          return addLogBranch_;
+        }
+
         // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogEntry addLogEntry = 5;
         public static final int ADDLOGENTRY_FIELD_NUMBER = 5;
-        private boolean hasAddLogEntry;
-        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry addLogEntry_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.getDefaultInstance();
-        public boolean hasAddLogEntry() { return hasAddLogEntry; }
-        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry getAddLogEntry() { return addLogEntry_; }
-        
+        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry addLogEntry_;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogEntry addLogEntry = 5;</code>
+         */
+        public boolean hasAddLogEntry() {
+          return ((bitField0_ & 0x00000010) == 0x00000010);
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogEntry addLogEntry = 5;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry getAddLogEntry() {
+          return addLogEntry_;
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogEntry addLogEntry = 5;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntryOrBuilder getAddLogEntryOrBuilder() {
+          return addLogEntry_;
+        }
+
         // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.DisconnectLog disconnectLog = 6;
         public static final int DISCONNECTLOG_FIELD_NUMBER = 6;
-        private boolean hasDisconnectLog;
-        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog disconnectLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.getDefaultInstance();
-        public boolean hasDisconnectLog() { return hasDisconnectLog; }
-        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog getDisconnectLog() { return disconnectLog_; }
-        
+        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog disconnectLog_;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.DisconnectLog disconnectLog = 6;</code>
+         */
+        public boolean hasDisconnectLog() {
+          return ((bitField0_ & 0x00000020) == 0x00000020);
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.DisconnectLog disconnectLog = 6;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog getDisconnectLog() {
+          return disconnectLog_;
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.DisconnectLog disconnectLog = 6;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLogOrBuilder getDisconnectLogOrBuilder() {
+          return disconnectLog_;
+        }
+
         // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.Initialize initialize = 7;
         public static final int INITIALIZE_FIELD_NUMBER = 7;
-        private boolean hasInitialize;
-        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize initialize_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.getDefaultInstance();
-        public boolean hasInitialize() { return hasInitialize; }
-        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize getInitialize() { return initialize_; }
-        
+        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize initialize_;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.Initialize initialize = 7;</code>
+         */
+        public boolean hasInitialize() {
+          return ((bitField0_ & 0x00000040) == 0x00000040);
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.Initialize initialize = 7;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize getInitialize() {
+          return initialize_;
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.Initialize initialize = 7;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.InitializeOrBuilder getInitializeOrBuilder() {
+          return initialize_;
+        }
+
+        private void initFields() {
+          requestType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType.CAPABILITY_EXCHANGE;
+          capabilityExchange_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.getDefaultInstance();
+          addLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.getDefaultInstance();
+          addLogBranch_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.getDefaultInstance();
+          addLogEntry_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.getDefaultInstance();
+          disconnectLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.getDefaultInstance();
+          initialize_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.getDefaultInstance();
+        }
+        private byte memoizedIsInitialized = -1;
         public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
           if (hasAddLog()) {
-            if (!getAddLog().isInitialized()) return false;
+            if (!getAddLog().isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
           }
           if (hasAddLogBranch()) {
-            if (!getAddLogBranch().isInitialized()) return false;
+            if (!getAddLogBranch().isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
           }
           if (hasAddLogEntry()) {
-            if (!getAddLogEntry().isInitialized()) return false;
+            if (!getAddLogEntry().isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
           }
           if (hasDisconnectLog()) {
-            if (!getDisconnectLog().isInitialized()) return false;
+            if (!getDisconnectLog().isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
           }
+          memoizedIsInitialized = 1;
           return true;
         }
-        
+
         public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
                             throws java.io.IOException {
-          if (hasRequestType()) {
-            output.writeEnum(1, getRequestType().getNumber());
+          getSerializedSize();
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            output.writeEnum(1, requestType_.getNumber());
           }
-          if (hasCapabilityExchange()) {
-            output.writeMessage(2, getCapabilityExchange());
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            output.writeMessage(2, capabilityExchange_);
           }
-          if (hasAddLog()) {
-            output.writeMessage(3, getAddLog());
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+            output.writeMessage(3, addLog_);
           }
-          if (hasAddLogBranch()) {
-            output.writeMessage(4, getAddLogBranch());
+          if (((bitField0_ & 0x00000008) == 0x00000008)) {
+            output.writeMessage(4, addLogBranch_);
           }
-          if (hasAddLogEntry()) {
-            output.writeMessage(5, getAddLogEntry());
+          if (((bitField0_ & 0x00000010) == 0x00000010)) {
+            output.writeMessage(5, addLogEntry_);
           }
-          if (hasDisconnectLog()) {
-            output.writeMessage(6, getDisconnectLog());
+          if (((bitField0_ & 0x00000020) == 0x00000020)) {
+            output.writeMessage(6, disconnectLog_);
           }
-          if (hasInitialize()) {
-            output.writeMessage(7, getInitialize());
+          if (((bitField0_ & 0x00000040) == 0x00000040)) {
+            output.writeMessage(7, initialize_);
           }
           getUnknownFields().writeTo(output);
         }
-        
+
         private int memoizedSerializedSize = -1;
         public int getSerializedSize() {
           int size = memoizedSerializedSize;
           if (size != -1) return size;
-        
+
           size = 0;
-          if (hasRequestType()) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
             size += com.google.gwt.dev.protobuf.CodedOutputStream
-              .computeEnumSize(1, getRequestType().getNumber());
+              .computeEnumSize(1, requestType_.getNumber());
           }
-          if (hasCapabilityExchange()) {
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
             size += com.google.gwt.dev.protobuf.CodedOutputStream
-              .computeMessageSize(2, getCapabilityExchange());
+              .computeMessageSize(2, capabilityExchange_);
           }
-          if (hasAddLog()) {
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
             size += com.google.gwt.dev.protobuf.CodedOutputStream
-              .computeMessageSize(3, getAddLog());
+              .computeMessageSize(3, addLog_);
           }
-          if (hasAddLogBranch()) {
+          if (((bitField0_ & 0x00000008) == 0x00000008)) {
             size += com.google.gwt.dev.protobuf.CodedOutputStream
-              .computeMessageSize(4, getAddLogBranch());
+              .computeMessageSize(4, addLogBranch_);
           }
-          if (hasAddLogEntry()) {
+          if (((bitField0_ & 0x00000010) == 0x00000010)) {
             size += com.google.gwt.dev.protobuf.CodedOutputStream
-              .computeMessageSize(5, getAddLogEntry());
+              .computeMessageSize(5, addLogEntry_);
           }
-          if (hasDisconnectLog()) {
+          if (((bitField0_ & 0x00000020) == 0x00000020)) {
             size += com.google.gwt.dev.protobuf.CodedOutputStream
-              .computeMessageSize(6, getDisconnectLog());
+              .computeMessageSize(6, disconnectLog_);
           }
-          if (hasInitialize()) {
+          if (((bitField0_ & 0x00000040) == 0x00000040)) {
             size += com.google.gwt.dev.protobuf.CodedOutputStream
-              .computeMessageSize(7, getInitialize());
+              .computeMessageSize(7, initialize_);
           }
           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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest parseFrom(
             com.google.gwt.dev.protobuf.ByteString data)
             throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-          return newBuilder().mergeFrom(data).buildParsed();
+          return PARSER.parseFrom(data);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest parseFrom(
             com.google.gwt.dev.protobuf.ByteString data,
             com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
             throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-          return newBuilder().mergeFrom(data, extensionRegistry)
-                   .buildParsed();
+          return PARSER.parseFrom(data, extensionRegistry);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest parseFrom(byte[] data)
             throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-          return newBuilder().mergeFrom(data).buildParsed();
+          return PARSER.parseFrom(data);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest parseFrom(
             byte[] data,
             com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
             throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-          return newBuilder().mergeFrom(data, extensionRegistry)
-                   .buildParsed();
+          return PARSER.parseFrom(data, extensionRegistry);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest parseFrom(java.io.InputStream input)
             throws java.io.IOException {
-          return newBuilder().mergeFrom(input).buildParsed();
+          return PARSER.parseFrom(input);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest parseFrom(
             java.io.InputStream input,
             com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
             throws java.io.IOException {
-          return newBuilder().mergeFrom(input, extensionRegistry)
-                   .buildParsed();
+          return PARSER.parseFrom(input, extensionRegistry);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest parseDelimitedFrom(java.io.InputStream input)
             throws java.io.IOException {
-          return newBuilder().mergeDelimitedFrom(input).buildParsed();
+          return PARSER.parseDelimitedFrom(input);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest parseDelimitedFrom(
             java.io.InputStream input,
             com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
             throws java.io.IOException {
-          return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                   .buildParsed();
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest parseFrom(
             com.google.gwt.dev.protobuf.CodedInputStream input)
             throws java.io.IOException {
-          return newBuilder().mergeFrom(input).buildParsed();
+          return PARSER.parseFrom(input);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest parseFrom(
             com.google.gwt.dev.protobuf.CodedInputStream input,
             com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
             throws java.io.IOException {
-          return newBuilder().mergeFrom(input, extensionRegistry)
-                   .buildParsed();
+          return PARSER.parseFrom(input, extensionRegistry);
         }
-        
+
         public static Builder newBuilder() { return Builder.create(); }
         public Builder newBuilderForType() { return newBuilder(); }
         public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest prototype) {
           return newBuilder().mergeFrom(prototype);
         }
         public Builder toBuilder() { return newBuilder(this); }
-        
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest}
+         *
+         * <pre>
+         * The root type for all requests for the ViewerService
+         * </pre>
+         */
         public static final class Builder extends
-            com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest result;
-          
+            com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+           implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequestOrBuilder {
+          public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_descriptor;
+          }
+
+          protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Builder.class);
+          }
+
           // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.newBuilder()
-          private Builder() {}
-          
-          private static Builder create() {
-            Builder builder = new Builder();
-            builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest();
-            return builder;
+          private Builder() {
+            maybeForceBuilderInitialization();
           }
-          
-          protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest internalGetResult() {
-            return result;
+
+          private Builder(
+              com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
           }
-          
-          public Builder clear() {
-            if (result == null) {
-              throw new IllegalStateException(
-                "Cannot call clear() after build().");
+          private void maybeForceBuilderInitialization() {
+            if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              getCapabilityExchangeFieldBuilder();
+              getAddLogFieldBuilder();
+              getAddLogBranchFieldBuilder();
+              getAddLogEntryFieldBuilder();
+              getDisconnectLogFieldBuilder();
+              getInitializeFieldBuilder();
             }
-            result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest();
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            requestType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType.CAPABILITY_EXCHANGE;
+            bitField0_ = (bitField0_ & ~0x00000001);
+            if (capabilityExchangeBuilder_ == null) {
+              capabilityExchange_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.getDefaultInstance();
+            } else {
+              capabilityExchangeBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000002);
+            if (addLogBuilder_ == null) {
+              addLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.getDefaultInstance();
+            } else {
+              addLogBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000004);
+            if (addLogBranchBuilder_ == null) {
+              addLogBranch_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.getDefaultInstance();
+            } else {
+              addLogBranchBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000008);
+            if (addLogEntryBuilder_ == null) {
+              addLogEntry_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.getDefaultInstance();
+            } else {
+              addLogEntryBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000010);
+            if (disconnectLogBuilder_ == null) {
+              disconnectLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.getDefaultInstance();
+            } else {
+              disconnectLogBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000020);
+            if (initializeBuilder_ == null) {
+              initialize_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.getDefaultInstance();
+            } else {
+              initializeBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000040);
             return this;
           }
-          
+
           public Builder clone() {
-            return create().mergeFrom(result);
+            return create().mergeFrom(buildPartial());
           }
-          
+
           public com.google.gwt.dev.protobuf.Descriptors.Descriptor
               getDescriptorForType() {
-            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.getDescriptor();
+            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_descriptor;
           }
-          
+
           public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest getDefaultInstanceForType() {
             return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.getDefaultInstance();
           }
-          
-          public boolean isInitialized() {
-            return result.isInitialized();
-          }
+
           public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest build() {
-            if (result != null && !isInitialized()) {
+            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest result = buildPartial();
+            if (!result.isInitialized()) {
               throw newUninitializedMessageException(result);
             }
-            return buildPartial();
+            return result;
           }
-          
-          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest buildParsed()
-              throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            if (!isInitialized()) {
-              throw newUninitializedMessageException(
-                result).asInvalidProtocolBufferException();
-            }
-            return buildPartial();
-          }
-          
+
           public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest buildPartial() {
-            if (result == null) {
-              throw new IllegalStateException(
-                "build() has already been called on this Builder.");
+            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest(this);
+            int from_bitField0_ = bitField0_;
+            int to_bitField0_ = 0;
+            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+              to_bitField0_ |= 0x00000001;
             }
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest returnMe = result;
-            result = null;
-            return returnMe;
+            result.requestType_ = requestType_;
+            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+              to_bitField0_ |= 0x00000002;
+            }
+            if (capabilityExchangeBuilder_ == null) {
+              result.capabilityExchange_ = capabilityExchange_;
+            } else {
+              result.capabilityExchange_ = capabilityExchangeBuilder_.build();
+            }
+            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+              to_bitField0_ |= 0x00000004;
+            }
+            if (addLogBuilder_ == null) {
+              result.addLog_ = addLog_;
+            } else {
+              result.addLog_ = addLogBuilder_.build();
+            }
+            if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+              to_bitField0_ |= 0x00000008;
+            }
+            if (addLogBranchBuilder_ == null) {
+              result.addLogBranch_ = addLogBranch_;
+            } else {
+              result.addLogBranch_ = addLogBranchBuilder_.build();
+            }
+            if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+              to_bitField0_ |= 0x00000010;
+            }
+            if (addLogEntryBuilder_ == null) {
+              result.addLogEntry_ = addLogEntry_;
+            } else {
+              result.addLogEntry_ = addLogEntryBuilder_.build();
+            }
+            if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+              to_bitField0_ |= 0x00000020;
+            }
+            if (disconnectLogBuilder_ == null) {
+              result.disconnectLog_ = disconnectLog_;
+            } else {
+              result.disconnectLog_ = disconnectLogBuilder_.build();
+            }
+            if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+              to_bitField0_ |= 0x00000040;
+            }
+            if (initializeBuilder_ == null) {
+              result.initialize_ = initialize_;
+            } else {
+              result.initialize_ = initializeBuilder_.build();
+            }
+            result.bitField0_ = to_bitField0_;
+            onBuilt();
+            return result;
           }
-          
+
           public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
             if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest) {
               return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest)other);
@@ -4516,7 +9388,7 @@
               return this;
             }
           }
-          
+
           public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest other) {
             if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.getDefaultInstance()) return this;
             if (other.hasRequestType()) {
@@ -4543,383 +9415,1006 @@
             this.mergeUnknownFields(other.getUnknownFields());
             return this;
           }
-          
+
+          public final boolean isInitialized() {
+            if (hasAddLog()) {
+              if (!getAddLog().isInitialized()) {
+                
+                return false;
+              }
+            }
+            if (hasAddLogBranch()) {
+              if (!getAddLogBranch().isInitialized()) {
+                
+                return false;
+              }
+            }
+            if (hasAddLogEntry()) {
+              if (!getAddLogEntry().isInitialized()) {
+                
+                return false;
+              }
+            }
+            if (hasDisconnectLog()) {
+              if (!getDisconnectLog().isInitialized()) {
+                
+                return false;
+              }
+            }
+            return true;
+          }
+
           public Builder mergeFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-              com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-                this.getUnknownFields());
-            while (true) {
+            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.RequestType requestType = 1;
+          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType requestType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType.CAPABILITY_EXCHANGE;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.RequestType requestType = 1;</code>
+           */
+          public boolean hasRequestType() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.RequestType requestType = 1;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType getRequestType() {
+            return requestType_;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.RequestType requestType = 1;</code>
+           */
+          public Builder setRequestType(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType value) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            bitField0_ |= 0x00000001;
+            requestType_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.RequestType requestType = 1;</code>
+           */
+          public Builder clearRequestType() {
+            bitField0_ = (bitField0_ & ~0x00000001);
+            requestType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType.CAPABILITY_EXCHANGE;
+            onChanged();
+            return this;
+          }
+
+          // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.CapabilityExchange capabilityExchange = 2;
+          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange capabilityExchange_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.getDefaultInstance();
+          private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchangeOrBuilder> capabilityExchangeBuilder_;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.CapabilityExchange capabilityExchange = 2;</code>
+           */
+          public boolean hasCapabilityExchange() {
+            return ((bitField0_ & 0x00000002) == 0x00000002);
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.CapabilityExchange capabilityExchange = 2;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange getCapabilityExchange() {
+            if (capabilityExchangeBuilder_ == null) {
+              return capabilityExchange_;
+            } else {
+              return capabilityExchangeBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.CapabilityExchange capabilityExchange = 2;</code>
+           */
+          public Builder setCapabilityExchange(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange value) {
+            if (capabilityExchangeBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              capabilityExchange_ = value;
+              onChanged();
+            } else {
+              capabilityExchangeBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.CapabilityExchange capabilityExchange = 2;</code>
+           */
+          public Builder setCapabilityExchange(
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.Builder builderForValue) {
+            if (capabilityExchangeBuilder_ == null) {
+              capabilityExchange_ = builderForValue.build();
+              onChanged();
+            } else {
+              capabilityExchangeBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.CapabilityExchange capabilityExchange = 2;</code>
+           */
+          public Builder mergeCapabilityExchange(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange value) {
+            if (capabilityExchangeBuilder_ == null) {
+              if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                  capabilityExchange_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.getDefaultInstance()) {
+                capabilityExchange_ =
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.newBuilder(capabilityExchange_).mergeFrom(value).buildPartial();
+              } else {
+                capabilityExchange_ = value;
+              }
+              onChanged();
+            } else {
+              capabilityExchangeBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.CapabilityExchange capabilityExchange = 2;</code>
+           */
+          public Builder clearCapabilityExchange() {
+            if (capabilityExchangeBuilder_ == null) {
+              capabilityExchange_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.getDefaultInstance();
+              onChanged();
+            } else {
+              capabilityExchangeBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000002);
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.CapabilityExchange capabilityExchange = 2;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.Builder getCapabilityExchangeBuilder() {
+            bitField0_ |= 0x00000002;
+            onChanged();
+            return getCapabilityExchangeFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.CapabilityExchange capabilityExchange = 2;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchangeOrBuilder getCapabilityExchangeOrBuilder() {
+            if (capabilityExchangeBuilder_ != null) {
+              return capabilityExchangeBuilder_.getMessageOrBuilder();
+            } else {
+              return capabilityExchange_;
+            }
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.CapabilityExchange capabilityExchange = 2;</code>
+           */
+          private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchangeOrBuilder> 
+              getCapabilityExchangeFieldBuilder() {
+            if (capabilityExchangeBuilder_ == null) {
+              capabilityExchangeBuilder_ = new com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchangeOrBuilder>(
+                      capabilityExchange_,
+                      getParentForChildren(),
+                      isClean());
+              capabilityExchange_ = null;
+            }
+            return capabilityExchangeBuilder_;
+          }
+
+          // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog addLog = 3;
+          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog addLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.getDefaultInstance();
+          private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogOrBuilder> addLogBuilder_;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog addLog = 3;</code>
+           */
+          public boolean hasAddLog() {
+            return ((bitField0_ & 0x00000004) == 0x00000004);
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog addLog = 3;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog getAddLog() {
+            if (addLogBuilder_ == null) {
+              return addLog_;
+            } else {
+              return addLogBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog addLog = 3;</code>
+           */
+          public Builder setAddLog(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog value) {
+            if (addLogBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              addLog_ = value;
+              onChanged();
+            } else {
+              addLogBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000004;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog addLog = 3;</code>
+           */
+          public Builder setAddLog(
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.Builder builderForValue) {
+            if (addLogBuilder_ == null) {
+              addLog_ = builderForValue.build();
+              onChanged();
+            } else {
+              addLogBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000004;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog addLog = 3;</code>
+           */
+          public Builder mergeAddLog(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog value) {
+            if (addLogBuilder_ == null) {
+              if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                  addLog_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.getDefaultInstance()) {
+                addLog_ =
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.newBuilder(addLog_).mergeFrom(value).buildPartial();
+              } else {
+                addLog_ = value;
+              }
+              onChanged();
+            } else {
+              addLogBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000004;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog addLog = 3;</code>
+           */
+          public Builder clearAddLog() {
+            if (addLogBuilder_ == null) {
+              addLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.getDefaultInstance();
+              onChanged();
+            } else {
+              addLogBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000004);
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog addLog = 3;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.Builder getAddLogBuilder() {
+            bitField0_ |= 0x00000004;
+            onChanged();
+            return getAddLogFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog addLog = 3;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogOrBuilder getAddLogOrBuilder() {
+            if (addLogBuilder_ != null) {
+              return addLogBuilder_.getMessageOrBuilder();
+            } else {
+              return addLog_;
+            }
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog addLog = 3;</code>
+           */
+          private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogOrBuilder> 
+              getAddLogFieldBuilder() {
+            if (addLogBuilder_ == null) {
+              addLogBuilder_ = new com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogOrBuilder>(
+                      addLog_,
+                      getParentForChildren(),
+                      isClean());
+              addLog_ = null;
+            }
+            return addLogBuilder_;
+          }
+
+          // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogBranch addLogBranch = 4;
+          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch addLogBranch_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.getDefaultInstance();
+          private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranchOrBuilder> addLogBranchBuilder_;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogBranch addLogBranch = 4;</code>
+           */
+          public boolean hasAddLogBranch() {
+            return ((bitField0_ & 0x00000008) == 0x00000008);
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogBranch addLogBranch = 4;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch getAddLogBranch() {
+            if (addLogBranchBuilder_ == null) {
+              return addLogBranch_;
+            } else {
+              return addLogBranchBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogBranch addLogBranch = 4;</code>
+           */
+          public Builder setAddLogBranch(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch value) {
+            if (addLogBranchBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              addLogBranch_ = value;
+              onChanged();
+            } else {
+              addLogBranchBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000008;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogBranch addLogBranch = 4;</code>
+           */
+          public Builder setAddLogBranch(
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.Builder builderForValue) {
+            if (addLogBranchBuilder_ == null) {
+              addLogBranch_ = builderForValue.build();
+              onChanged();
+            } else {
+              addLogBranchBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000008;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogBranch addLogBranch = 4;</code>
+           */
+          public Builder mergeAddLogBranch(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch value) {
+            if (addLogBranchBuilder_ == null) {
+              if (((bitField0_ & 0x00000008) == 0x00000008) &&
+                  addLogBranch_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.getDefaultInstance()) {
+                addLogBranch_ =
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.newBuilder(addLogBranch_).mergeFrom(value).buildPartial();
+              } else {
+                addLogBranch_ = value;
+              }
+              onChanged();
+            } else {
+              addLogBranchBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000008;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogBranch addLogBranch = 4;</code>
+           */
+          public Builder clearAddLogBranch() {
+            if (addLogBranchBuilder_ == null) {
+              addLogBranch_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.getDefaultInstance();
+              onChanged();
+            } else {
+              addLogBranchBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000008);
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogBranch addLogBranch = 4;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.Builder getAddLogBranchBuilder() {
+            bitField0_ |= 0x00000008;
+            onChanged();
+            return getAddLogBranchFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogBranch addLogBranch = 4;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranchOrBuilder getAddLogBranchOrBuilder() {
+            if (addLogBranchBuilder_ != null) {
+              return addLogBranchBuilder_.getMessageOrBuilder();
+            } else {
+              return addLogBranch_;
+            }
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogBranch addLogBranch = 4;</code>
+           */
+          private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranchOrBuilder> 
+              getAddLogBranchFieldBuilder() {
+            if (addLogBranchBuilder_ == null) {
+              addLogBranchBuilder_ = new com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranchOrBuilder>(
+                      addLogBranch_,
+                      getParentForChildren(),
+                      isClean());
+              addLogBranch_ = null;
+            }
+            return addLogBranchBuilder_;
+          }
+
+          // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogEntry addLogEntry = 5;
+          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry addLogEntry_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.getDefaultInstance();
+          private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntryOrBuilder> addLogEntryBuilder_;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogEntry addLogEntry = 5;</code>
+           */
+          public boolean hasAddLogEntry() {
+            return ((bitField0_ & 0x00000010) == 0x00000010);
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogEntry addLogEntry = 5;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry getAddLogEntry() {
+            if (addLogEntryBuilder_ == null) {
+              return addLogEntry_;
+            } else {
+              return addLogEntryBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogEntry addLogEntry = 5;</code>
+           */
+          public Builder setAddLogEntry(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry value) {
+            if (addLogEntryBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              addLogEntry_ = value;
+              onChanged();
+            } else {
+              addLogEntryBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000010;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogEntry addLogEntry = 5;</code>
+           */
+          public Builder setAddLogEntry(
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.Builder builderForValue) {
+            if (addLogEntryBuilder_ == null) {
+              addLogEntry_ = builderForValue.build();
+              onChanged();
+            } else {
+              addLogEntryBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000010;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogEntry addLogEntry = 5;</code>
+           */
+          public Builder mergeAddLogEntry(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry value) {
+            if (addLogEntryBuilder_ == null) {
+              if (((bitField0_ & 0x00000010) == 0x00000010) &&
+                  addLogEntry_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.getDefaultInstance()) {
+                addLogEntry_ =
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.newBuilder(addLogEntry_).mergeFrom(value).buildPartial();
+              } else {
+                addLogEntry_ = value;
+              }
+              onChanged();
+            } else {
+              addLogEntryBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000010;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogEntry addLogEntry = 5;</code>
+           */
+          public Builder clearAddLogEntry() {
+            if (addLogEntryBuilder_ == null) {
+              addLogEntry_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.getDefaultInstance();
+              onChanged();
+            } else {
+              addLogEntryBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000010);
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogEntry addLogEntry = 5;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.Builder getAddLogEntryBuilder() {
+            bitField0_ |= 0x00000010;
+            onChanged();
+            return getAddLogEntryFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogEntry addLogEntry = 5;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntryOrBuilder getAddLogEntryOrBuilder() {
+            if (addLogEntryBuilder_ != null) {
+              return addLogEntryBuilder_.getMessageOrBuilder();
+            } else {
+              return addLogEntry_;
+            }
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogEntry addLogEntry = 5;</code>
+           */
+          private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntryOrBuilder> 
+              getAddLogEntryFieldBuilder() {
+            if (addLogEntryBuilder_ == null) {
+              addLogEntryBuilder_ = new com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntryOrBuilder>(
+                      addLogEntry_,
+                      getParentForChildren(),
+                      isClean());
+              addLogEntry_ = null;
+            }
+            return addLogEntryBuilder_;
+          }
+
+          // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.DisconnectLog disconnectLog = 6;
+          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog disconnectLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.getDefaultInstance();
+          private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLogOrBuilder> disconnectLogBuilder_;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.DisconnectLog disconnectLog = 6;</code>
+           */
+          public boolean hasDisconnectLog() {
+            return ((bitField0_ & 0x00000020) == 0x00000020);
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.DisconnectLog disconnectLog = 6;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog getDisconnectLog() {
+            if (disconnectLogBuilder_ == null) {
+              return disconnectLog_;
+            } else {
+              return disconnectLogBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.DisconnectLog disconnectLog = 6;</code>
+           */
+          public Builder setDisconnectLog(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog value) {
+            if (disconnectLogBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              disconnectLog_ = value;
+              onChanged();
+            } else {
+              disconnectLogBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000020;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.DisconnectLog disconnectLog = 6;</code>
+           */
+          public Builder setDisconnectLog(
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.Builder builderForValue) {
+            if (disconnectLogBuilder_ == null) {
+              disconnectLog_ = builderForValue.build();
+              onChanged();
+            } else {
+              disconnectLogBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000020;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.DisconnectLog disconnectLog = 6;</code>
+           */
+          public Builder mergeDisconnectLog(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog value) {
+            if (disconnectLogBuilder_ == null) {
+              if (((bitField0_ & 0x00000020) == 0x00000020) &&
+                  disconnectLog_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.getDefaultInstance()) {
+                disconnectLog_ =
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.newBuilder(disconnectLog_).mergeFrom(value).buildPartial();
+              } else {
+                disconnectLog_ = value;
+              }
+              onChanged();
+            } else {
+              disconnectLogBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000020;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.DisconnectLog disconnectLog = 6;</code>
+           */
+          public Builder clearDisconnectLog() {
+            if (disconnectLogBuilder_ == null) {
+              disconnectLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.getDefaultInstance();
+              onChanged();
+            } else {
+              disconnectLogBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000020);
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.DisconnectLog disconnectLog = 6;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.Builder getDisconnectLogBuilder() {
+            bitField0_ |= 0x00000020;
+            onChanged();
+            return getDisconnectLogFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.DisconnectLog disconnectLog = 6;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLogOrBuilder getDisconnectLogOrBuilder() {
+            if (disconnectLogBuilder_ != null) {
+              return disconnectLogBuilder_.getMessageOrBuilder();
+            } else {
+              return disconnectLog_;
+            }
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.DisconnectLog disconnectLog = 6;</code>
+           */
+          private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLogOrBuilder> 
+              getDisconnectLogFieldBuilder() {
+            if (disconnectLogBuilder_ == null) {
+              disconnectLogBuilder_ = new com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLogOrBuilder>(
+                      disconnectLog_,
+                      getParentForChildren(),
+                      isClean());
+              disconnectLog_ = null;
+            }
+            return disconnectLogBuilder_;
+          }
+
+          // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.Initialize initialize = 7;
+          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize initialize_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.getDefaultInstance();
+          private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.InitializeOrBuilder> initializeBuilder_;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.Initialize initialize = 7;</code>
+           */
+          public boolean hasInitialize() {
+            return ((bitField0_ & 0x00000040) == 0x00000040);
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.Initialize initialize = 7;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize getInitialize() {
+            if (initializeBuilder_ == null) {
+              return initialize_;
+            } else {
+              return initializeBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.Initialize initialize = 7;</code>
+           */
+          public Builder setInitialize(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize value) {
+            if (initializeBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              initialize_ = value;
+              onChanged();
+            } else {
+              initializeBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000040;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.Initialize initialize = 7;</code>
+           */
+          public Builder setInitialize(
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.Builder builderForValue) {
+            if (initializeBuilder_ == null) {
+              initialize_ = builderForValue.build();
+              onChanged();
+            } else {
+              initializeBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000040;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.Initialize initialize = 7;</code>
+           */
+          public Builder mergeInitialize(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize value) {
+            if (initializeBuilder_ == null) {
+              if (((bitField0_ & 0x00000040) == 0x00000040) &&
+                  initialize_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.getDefaultInstance()) {
+                initialize_ =
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.newBuilder(initialize_).mergeFrom(value).buildPartial();
+              } else {
+                initialize_ = value;
+              }
+              onChanged();
+            } else {
+              initializeBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000040;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.Initialize initialize = 7;</code>
+           */
+          public Builder clearInitialize() {
+            if (initializeBuilder_ == null) {
+              initialize_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.getDefaultInstance();
+              onChanged();
+            } else {
+              initializeBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000040);
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.Initialize initialize = 7;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.Builder getInitializeBuilder() {
+            bitField0_ |= 0x00000040;
+            onChanged();
+            return getInitializeFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.Initialize initialize = 7;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.InitializeOrBuilder getInitializeOrBuilder() {
+            if (initializeBuilder_ != null) {
+              return initializeBuilder_.getMessageOrBuilder();
+            } else {
+              return initialize_;
+            }
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.Initialize initialize = 7;</code>
+           */
+          private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.InitializeOrBuilder> 
+              getInitializeFieldBuilder() {
+            if (initializeBuilder_ == null) {
+              initializeBuilder_ = new com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.InitializeOrBuilder>(
+                      initialize_,
+                      getParentForChildren(),
+                      isClean());
+              initialize_ = null;
+            }
+            return initializeBuilder_;
+          }
+
+          // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest)
+        }
+
+        static {
+          defaultInstance = new ViewerRequest(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest)
+      }
+
+      public interface DevModeRequestOrBuilder
+          extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+
+        // optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RequestType requestType = 1;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RequestType requestType = 1;</code>
+         */
+        boolean hasRequestType();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RequestType requestType = 1;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType getRequestType();
+
+        // optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.CapabilityExchange capabilityExchange = 2;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.CapabilityExchange capabilityExchange = 2;</code>
+         */
+        boolean hasCapabilityExchange();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.CapabilityExchange capabilityExchange = 2;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange getCapabilityExchange();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.CapabilityExchange capabilityExchange = 2;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchangeOrBuilder getCapabilityExchangeOrBuilder();
+
+        // optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RestartWebServer restartWebServer = 3;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RestartWebServer restartWebServer = 3;</code>
+         */
+        boolean hasRestartWebServer();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RestartWebServer restartWebServer = 3;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer getRestartWebServer();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RestartWebServer restartWebServer = 3;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServerOrBuilder getRestartWebServerOrBuilder();
+      }
+      /**
+       * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest}
+       *
+       * <pre>
+       * The root type for all requests for the DevModeService
+       * </pre>
+       */
+      public static final class DevModeRequest extends
+          com.google.gwt.dev.protobuf.GeneratedMessage
+          implements DevModeRequestOrBuilder {
+        // Use DevModeRequest.newBuilder() to construct.
+        private DevModeRequest(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private DevModeRequest(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final DevModeRequest defaultInstance;
+        public static DevModeRequest getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public DevModeRequest getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.gwt.dev.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private DevModeRequest(
+            com.google.gwt.dev.protobuf.CodedInputStream input,
+            com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
               int tag = input.readTag();
               switch (tag) {
                 case 0:
-                  this.setUnknownFields(unknownFields.build());
-                  return this;
+                  done = true;
+                  break;
                 default: {
                   if (!parseUnknownField(input, unknownFields,
                                          extensionRegistry, tag)) {
-                    this.setUnknownFields(unknownFields.build());
-                    return this;
+                    done = true;
                   }
                   break;
                 }
                 case 8: {
                   int rawValue = input.readEnum();
-                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType value = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType.valueOf(rawValue);
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType value = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType.valueOf(rawValue);
                   if (value == null) {
                     unknownFields.mergeVarintField(1, rawValue);
                   } else {
-                    setRequestType(value);
+                    bitField0_ |= 0x00000001;
+                    requestType_ = value;
                   }
                   break;
                 }
                 case 18: {
-                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.newBuilder();
-                  if (hasCapabilityExchange()) {
-                    subBuilder.mergeFrom(getCapabilityExchange());
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                    subBuilder = capabilityExchange_.toBuilder();
                   }
-                  input.readMessage(subBuilder, extensionRegistry);
-                  setCapabilityExchange(subBuilder.buildPartial());
+                  capabilityExchange_ = input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(capabilityExchange_);
+                    capabilityExchange_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000002;
                   break;
                 }
                 case 26: {
-                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.newBuilder();
-                  if (hasAddLog()) {
-                    subBuilder.mergeFrom(getAddLog());
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                    subBuilder = restartWebServer_.toBuilder();
                   }
-                  input.readMessage(subBuilder, extensionRegistry);
-                  setAddLog(subBuilder.buildPartial());
-                  break;
-                }
-                case 34: {
-                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.newBuilder();
-                  if (hasAddLogBranch()) {
-                    subBuilder.mergeFrom(getAddLogBranch());
+                  restartWebServer_ = input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(restartWebServer_);
+                    restartWebServer_ = subBuilder.buildPartial();
                   }
-                  input.readMessage(subBuilder, extensionRegistry);
-                  setAddLogBranch(subBuilder.buildPartial());
-                  break;
-                }
-                case 42: {
-                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.newBuilder();
-                  if (hasAddLogEntry()) {
-                    subBuilder.mergeFrom(getAddLogEntry());
-                  }
-                  input.readMessage(subBuilder, extensionRegistry);
-                  setAddLogEntry(subBuilder.buildPartial());
-                  break;
-                }
-                case 50: {
-                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.newBuilder();
-                  if (hasDisconnectLog()) {
-                    subBuilder.mergeFrom(getDisconnectLog());
-                  }
-                  input.readMessage(subBuilder, extensionRegistry);
-                  setDisconnectLog(subBuilder.buildPartial());
-                  break;
-                }
-                case 58: {
-                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.newBuilder();
-                  if (hasInitialize()) {
-                    subBuilder.mergeFrom(getInitialize());
-                  }
-                  input.readMessage(subBuilder, extensionRegistry);
-                  setInitialize(subBuilder.buildPartial());
+                  bitField0_ |= 0x00000004;
                   break;
                 }
               }
             }
-          }
-          
-          
-          // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.RequestType requestType = 1;
-          public boolean hasRequestType() {
-            return result.hasRequestType();
-          }
-          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType getRequestType() {
-            return result.getRequestType();
-          }
-          public Builder setRequestType(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType value) {
-            if (value == null) {
-              throw new NullPointerException();
-            }
-            result.hasRequestType = true;
-            result.requestType_ = value;
-            return this;
-          }
-          public Builder clearRequestType() {
-            result.hasRequestType = false;
-            result.requestType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType.CAPABILITY_EXCHANGE;
-            return this;
-          }
-          
-          // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.CapabilityExchange capabilityExchange = 2;
-          public boolean hasCapabilityExchange() {
-            return result.hasCapabilityExchange();
-          }
-          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange getCapabilityExchange() {
-            return result.getCapabilityExchange();
-          }
-          public Builder setCapabilityExchange(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange value) {
-            if (value == null) {
-              throw new NullPointerException();
-            }
-            result.hasCapabilityExchange = true;
-            result.capabilityExchange_ = value;
-            return this;
-          }
-          public Builder setCapabilityExchange(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.Builder builderForValue) {
-            result.hasCapabilityExchange = true;
-            result.capabilityExchange_ = builderForValue.build();
-            return this;
-          }
-          public Builder mergeCapabilityExchange(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange value) {
-            if (result.hasCapabilityExchange() &&
-                result.capabilityExchange_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.getDefaultInstance()) {
-              result.capabilityExchange_ =
-                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.newBuilder(result.capabilityExchange_).mergeFrom(value).buildPartial();
-            } else {
-              result.capabilityExchange_ = value;
-            }
-            result.hasCapabilityExchange = true;
-            return this;
-          }
-          public Builder clearCapabilityExchange() {
-            result.hasCapabilityExchange = false;
-            result.capabilityExchange_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.getDefaultInstance();
-            return this;
-          }
-          
-          // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLog addLog = 3;
-          public boolean hasAddLog() {
-            return result.hasAddLog();
-          }
-          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog getAddLog() {
-            return result.getAddLog();
-          }
-          public Builder setAddLog(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog value) {
-            if (value == null) {
-              throw new NullPointerException();
-            }
-            result.hasAddLog = true;
-            result.addLog_ = value;
-            return this;
-          }
-          public Builder setAddLog(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.Builder builderForValue) {
-            result.hasAddLog = true;
-            result.addLog_ = builderForValue.build();
-            return this;
-          }
-          public Builder mergeAddLog(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog value) {
-            if (result.hasAddLog() &&
-                result.addLog_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.getDefaultInstance()) {
-              result.addLog_ =
-                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.newBuilder(result.addLog_).mergeFrom(value).buildPartial();
-            } else {
-              result.addLog_ = value;
-            }
-            result.hasAddLog = true;
-            return this;
-          }
-          public Builder clearAddLog() {
-            result.hasAddLog = false;
-            result.addLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.getDefaultInstance();
-            return this;
-          }
-          
-          // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogBranch addLogBranch = 4;
-          public boolean hasAddLogBranch() {
-            return result.hasAddLogBranch();
-          }
-          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch getAddLogBranch() {
-            return result.getAddLogBranch();
-          }
-          public Builder setAddLogBranch(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch value) {
-            if (value == null) {
-              throw new NullPointerException();
-            }
-            result.hasAddLogBranch = true;
-            result.addLogBranch_ = value;
-            return this;
-          }
-          public Builder setAddLogBranch(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.Builder builderForValue) {
-            result.hasAddLogBranch = true;
-            result.addLogBranch_ = builderForValue.build();
-            return this;
-          }
-          public Builder mergeAddLogBranch(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch value) {
-            if (result.hasAddLogBranch() &&
-                result.addLogBranch_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.getDefaultInstance()) {
-              result.addLogBranch_ =
-                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.newBuilder(result.addLogBranch_).mergeFrom(value).buildPartial();
-            } else {
-              result.addLogBranch_ = value;
-            }
-            result.hasAddLogBranch = true;
-            return this;
-          }
-          public Builder clearAddLogBranch() {
-            result.hasAddLogBranch = false;
-            result.addLogBranch_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.getDefaultInstance();
-            return this;
-          }
-          
-          // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.AddLogEntry addLogEntry = 5;
-          public boolean hasAddLogEntry() {
-            return result.hasAddLogEntry();
-          }
-          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry getAddLogEntry() {
-            return result.getAddLogEntry();
-          }
-          public Builder setAddLogEntry(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry value) {
-            if (value == null) {
-              throw new NullPointerException();
-            }
-            result.hasAddLogEntry = true;
-            result.addLogEntry_ = value;
-            return this;
-          }
-          public Builder setAddLogEntry(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.Builder builderForValue) {
-            result.hasAddLogEntry = true;
-            result.addLogEntry_ = builderForValue.build();
-            return this;
-          }
-          public Builder mergeAddLogEntry(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry value) {
-            if (result.hasAddLogEntry() &&
-                result.addLogEntry_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.getDefaultInstance()) {
-              result.addLogEntry_ =
-                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.newBuilder(result.addLogEntry_).mergeFrom(value).buildPartial();
-            } else {
-              result.addLogEntry_ = value;
-            }
-            result.hasAddLogEntry = true;
-            return this;
-          }
-          public Builder clearAddLogEntry() {
-            result.hasAddLogEntry = false;
-            result.addLogEntry_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.getDefaultInstance();
-            return this;
-          }
-          
-          // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.DisconnectLog disconnectLog = 6;
-          public boolean hasDisconnectLog() {
-            return result.hasDisconnectLog();
-          }
-          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog getDisconnectLog() {
-            return result.getDisconnectLog();
-          }
-          public Builder setDisconnectLog(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog value) {
-            if (value == null) {
-              throw new NullPointerException();
-            }
-            result.hasDisconnectLog = true;
-            result.disconnectLog_ = value;
-            return this;
-          }
-          public Builder setDisconnectLog(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.Builder builderForValue) {
-            result.hasDisconnectLog = true;
-            result.disconnectLog_ = builderForValue.build();
-            return this;
-          }
-          public Builder mergeDisconnectLog(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog value) {
-            if (result.hasDisconnectLog() &&
-                result.disconnectLog_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.getDefaultInstance()) {
-              result.disconnectLog_ =
-                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.newBuilder(result.disconnectLog_).mergeFrom(value).buildPartial();
-            } else {
-              result.disconnectLog_ = value;
-            }
-            result.hasDisconnectLog = true;
-            return this;
-          }
-          public Builder clearDisconnectLog() {
-            result.hasDisconnectLog = false;
-            result.disconnectLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.getDefaultInstance();
-            return this;
-          }
-          
-          // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.Initialize initialize = 7;
-          public boolean hasInitialize() {
-            return result.hasInitialize();
-          }
-          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize getInitialize() {
-            return result.getInitialize();
-          }
-          public Builder setInitialize(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize value) {
-            if (value == null) {
-              throw new NullPointerException();
-            }
-            result.hasInitialize = true;
-            result.initialize_ = value;
-            return this;
-          }
-          public Builder setInitialize(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.Builder builderForValue) {
-            result.hasInitialize = true;
-            result.initialize_ = builderForValue.build();
-            return this;
-          }
-          public Builder mergeInitialize(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize value) {
-            if (result.hasInitialize() &&
-                result.initialize_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.getDefaultInstance()) {
-              result.initialize_ =
-                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.newBuilder(result.initialize_).mergeFrom(value).buildPartial();
-            } else {
-              result.initialize_ = value;
-            }
-            result.hasInitialize = true;
-            return this;
-          }
-          public Builder clearInitialize() {
-            result.hasInitialize = false;
-            result.initialize_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.getDefaultInstance();
-            return this;
+          } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
           }
         }
-        
-        static {
-          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
-        }
-        
-        static {
-          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-        }
-      }
-      
-      public static final class DevModeRequest extends
-          com.google.gwt.dev.protobuf.GeneratedMessage {
-        // Use DevModeRequest.newBuilder() to construct.
-        private DevModeRequest() {}
-        
-        private static final DevModeRequest defaultInstance = new DevModeRequest();
-        public static DevModeRequest getDefaultInstance() {
-          return defaultInstance;
-        }
-        
-        public DevModeRequest getDefaultInstanceForType() {
-          return defaultInstance;
-        }
-        
         public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
             getDescriptor() {
           return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_descriptor;
         }
-        
+
         protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
             internalGetFieldAccessorTable() {
-          return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_fieldAccessorTable;
+          return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.Builder.class);
         }
-        
+
+        public static com.google.gwt.dev.protobuf.Parser<DevModeRequest> PARSER =
+            new com.google.gwt.dev.protobuf.AbstractParser<DevModeRequest>() {
+          public DevModeRequest parsePartialFrom(
+              com.google.gwt.dev.protobuf.CodedInputStream input,
+              com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+            return new DevModeRequest(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.gwt.dev.protobuf.Parser<DevModeRequest> getParserForType() {
+          return PARSER;
+        }
+
+        /**
+         * Protobuf enum {@code com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RequestType}
+         *
+         * <pre>
+         * The different types of requests for the DevModeService
+         * </pre>
+         */
         public enum RequestType
             implements com.google.gwt.dev.protobuf.ProtocolMessageEnum {
+          /**
+           * <code>CAPABILITY_EXCHANGE = 0;</code>
+           */
           CAPABILITY_EXCHANGE(0, 0),
+          /**
+           * <code>RESTART_WEB_SERVER = 1;</code>
+           */
           RESTART_WEB_SERVER(1, 1),
           ;
-          
-          
+
+          /**
+           * <code>CAPABILITY_EXCHANGE = 0;</code>
+           */
+          public static final int CAPABILITY_EXCHANGE_VALUE = 0;
+          /**
+           * <code>RESTART_WEB_SERVER = 1;</code>
+           */
+          public static final int RESTART_WEB_SERVER_VALUE = 1;
+
+
           public final int getNumber() { return value; }
-          
+
           public static RequestType valueOf(int value) {
             switch (value) {
               case 0: return CAPABILITY_EXCHANGE;
@@ -4927,7 +10422,7 @@
               default: return null;
             }
           }
-          
+
           public static com.google.gwt.dev.protobuf.Internal.EnumLiteMap<RequestType>
               internalGetValueMap() {
             return internalValueMap;
@@ -4936,10 +10431,10 @@
               internalValueMap =
                 new com.google.gwt.dev.protobuf.Internal.EnumLiteMap<RequestType>() {
                   public RequestType findValueByNumber(int number) {
-                    return RequestType.valueOf(number)
-          ;        }
+                    return RequestType.valueOf(number);
+                  }
                 };
-          
+
           public final com.google.gwt.dev.protobuf.Descriptors.EnumValueDescriptor
               getValueDescriptor() {
             return getDescriptor().getValues().get(index);
@@ -4952,10 +10447,9 @@
               getDescriptor() {
             return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.getDescriptor().getEnumTypes().get(0);
           }
-          
-          private static final RequestType[] VALUES = {
-            CAPABILITY_EXCHANGE, RESTART_WEB_SERVER, 
-          };
+
+          private static final RequestType[] VALUES = values();
+
           public static RequestType valueOf(
               com.google.gwt.dev.protobuf.Descriptors.EnumValueDescriptor desc) {
             if (desc.getType() != getDescriptor()) {
@@ -4964,195 +10458,289 @@
             }
             return VALUES[desc.getIndex()];
           }
+
           private final int index;
           private final int value;
+
           private RequestType(int index, int value) {
             this.index = index;
             this.value = value;
           }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
-          }
+
+          // @@protoc_insertion_point(enum_scope:com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RequestType)
         }
-        
+
+        public interface CapabilityExchangeOrBuilder
+            extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+        }
+        /**
+         * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.CapabilityExchange}
+         *
+         * <pre>
+         * Request the capabilities of the DevModeService. No additional
+         * information is needed at this time.
+         * </pre>
+         */
         public static final class CapabilityExchange extends
-            com.google.gwt.dev.protobuf.GeneratedMessage {
+            com.google.gwt.dev.protobuf.GeneratedMessage
+            implements CapabilityExchangeOrBuilder {
           // Use CapabilityExchange.newBuilder() to construct.
-          private CapabilityExchange() {}
-          
-          private static final CapabilityExchange defaultInstance = new CapabilityExchange();
+          private CapabilityExchange(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+            super(builder);
+            this.unknownFields = builder.getUnknownFields();
+          }
+          private CapabilityExchange(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+          private static final CapabilityExchange defaultInstance;
           public static CapabilityExchange getDefaultInstance() {
             return defaultInstance;
           }
-          
+
           public CapabilityExchange getDefaultInstanceForType() {
             return defaultInstance;
           }
-          
+
+          private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+          @java.lang.Override
+          public final com.google.gwt.dev.protobuf.UnknownFieldSet
+              getUnknownFields() {
+            return this.unknownFields;
+          }
+          private CapabilityExchange(
+              com.google.gwt.dev.protobuf.CodedInputStream input,
+              com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+            initFields();
+            com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+                com.google.gwt.dev.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;
+                  }
+                }
+              }
+            } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+              throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+              throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+                  e.getMessage()).setUnfinishedMessage(this);
+            } finally {
+              this.unknownFields = unknownFields.build();
+              makeExtensionsImmutable();
+            }
+          }
           public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
               getDescriptor() {
             return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_CapabilityExchange_descriptor;
           }
-          
+
           protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
               internalGetFieldAccessorTable() {
-            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_CapabilityExchange_fieldAccessorTable;
+            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_CapabilityExchange_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.Builder.class);
           }
-          
+
+          public static com.google.gwt.dev.protobuf.Parser<CapabilityExchange> PARSER =
+              new com.google.gwt.dev.protobuf.AbstractParser<CapabilityExchange>() {
+            public CapabilityExchange parsePartialFrom(
+                com.google.gwt.dev.protobuf.CodedInputStream input,
+                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              return new CapabilityExchange(input, extensionRegistry);
+            }
+          };
+
+          @java.lang.Override
+          public com.google.gwt.dev.protobuf.Parser<CapabilityExchange> getParserForType() {
+            return PARSER;
+          }
+
+          private void initFields() {
+          }
+          private byte memoizedIsInitialized = -1;
           public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized != -1) return isInitialized == 1;
+
+            memoizedIsInitialized = 1;
             return true;
           }
-          
+
           public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
                               throws java.io.IOException {
+            getSerializedSize();
             getUnknownFields().writeTo(output);
           }
-          
+
           private int memoizedSerializedSize = -1;
           public int getSerializedSize() {
             int size = memoizedSerializedSize;
             if (size != -1) return size;
-          
+
             size = 0;
             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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange parseFrom(
               com.google.gwt.dev.protobuf.ByteString data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange parseFrom(
               com.google.gwt.dev.protobuf.ByteString data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange parseFrom(byte[] data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange parseFrom(
               byte[] data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange parseFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange parseFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange parseDelimitedFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input).buildParsed();
+            return PARSER.parseDelimitedFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange parseDelimitedFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseDelimitedFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
-          
+
           public static Builder newBuilder() { return Builder.create(); }
           public Builder newBuilderForType() { return newBuilder(); }
           public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange prototype) {
             return newBuilder().mergeFrom(prototype);
           }
           public Builder toBuilder() { return newBuilder(this); }
-          
+
+          @java.lang.Override
+          protected Builder newBuilderForType(
+              com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+          }
+          /**
+           * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.CapabilityExchange}
+           *
+           * <pre>
+           * Request the capabilities of the DevModeService. No additional
+           * information is needed at this time.
+           * </pre>
+           */
           public static final class Builder extends
-              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange result;
-            
+              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+             implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchangeOrBuilder {
+            public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+                getDescriptor() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_CapabilityExchange_descriptor;
+            }
+
+            protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+                internalGetFieldAccessorTable() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_CapabilityExchange_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.Builder.class);
+            }
+
             // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.newBuilder()
-            private Builder() {}
-            
-            private static Builder create() {
-              Builder builder = new Builder();
-              builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange();
-              return builder;
+            private Builder() {
+              maybeForceBuilderInitialization();
             }
-            
-            protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange internalGetResult() {
-              return result;
+
+            private Builder(
+                com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+              super(parent);
+              maybeForceBuilderInitialization();
             }
-            
-            public Builder clear() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "Cannot call clear() after build().");
+            private void maybeForceBuilderInitialization() {
+              if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
               }
-              result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange();
+            }
+            private static Builder create() {
+              return new Builder();
+            }
+
+            public Builder clear() {
+              super.clear();
               return this;
             }
-            
+
             public Builder clone() {
-              return create().mergeFrom(result);
+              return create().mergeFrom(buildPartial());
             }
-            
+
             public com.google.gwt.dev.protobuf.Descriptors.Descriptor
                 getDescriptorForType() {
-              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.getDescriptor();
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_CapabilityExchange_descriptor;
             }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange getDefaultInstanceForType() {
               return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.getDefaultInstance();
             }
-            
-            public boolean isInitialized() {
-              return result.isInitialized();
-            }
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange build() {
-              if (result != null && !isInitialized()) {
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange result = buildPartial();
+              if (!result.isInitialized()) {
                 throw newUninitializedMessageException(result);
               }
-              return buildPartial();
+              return result;
             }
-            
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange buildParsed()
-                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              if (!isInitialized()) {
-                throw newUninitializedMessageException(
-                  result).asInvalidProtocolBufferException();
-              }
-              return buildPartial();
-            }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange buildPartial() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "build() has already been called on this Builder.");
-              }
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange returnMe = result;
-              result = null;
-              return returnMe;
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange(this);
+              onBuilt();
+              return result;
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
               if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange) {
                 return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange)other);
@@ -5161,226 +10749,315 @@
                 return this;
               }
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange other) {
               if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.getDefaultInstance()) return this;
               this.mergeUnknownFields(other.getUnknownFields());
               return this;
             }
-            
+
+            public final boolean isInitialized() {
+              return true;
+            }
+
             public Builder mergeFrom(
                 com.google.gwt.dev.protobuf.CodedInputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws java.io.IOException {
-              com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-                com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-                  this.getUnknownFields());
-              while (true) {
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange parsedMessage = null;
+              try {
+                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+              } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+                parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange) e.getUnfinishedMessage();
+                throw e;
+              } finally {
+                if (parsedMessage != null) {
+                  mergeFrom(parsedMessage);
+                }
+              }
+              return this;
+            }
+
+            // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.CapabilityExchange)
+          }
+
+          static {
+            defaultInstance = new CapabilityExchange(true);
+            defaultInstance.initFields();
+          }
+
+          // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.CapabilityExchange)
+        }
+
+        public interface RestartWebServerOrBuilder
+            extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+        }
+        /**
+         * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RestartWebServer}
+         *
+         * <pre>
+         * Restart the web server. No additional information is needed at this time.
+         * </pre>
+         */
+        public static final class RestartWebServer extends
+            com.google.gwt.dev.protobuf.GeneratedMessage
+            implements RestartWebServerOrBuilder {
+          // Use RestartWebServer.newBuilder() to construct.
+          private RestartWebServer(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+            super(builder);
+            this.unknownFields = builder.getUnknownFields();
+          }
+          private RestartWebServer(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+          private static final RestartWebServer defaultInstance;
+          public static RestartWebServer getDefaultInstance() {
+            return defaultInstance;
+          }
+
+          public RestartWebServer getDefaultInstanceForType() {
+            return defaultInstance;
+          }
+
+          private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+          @java.lang.Override
+          public final com.google.gwt.dev.protobuf.UnknownFieldSet
+              getUnknownFields() {
+            return this.unknownFields;
+          }
+          private RestartWebServer(
+              com.google.gwt.dev.protobuf.CodedInputStream input,
+              com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+            initFields();
+            com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+                com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder();
+            try {
+              boolean done = false;
+              while (!done) {
                 int tag = input.readTag();
                 switch (tag) {
                   case 0:
-                    this.setUnknownFields(unknownFields.build());
-                    return this;
+                    done = true;
+                    break;
                   default: {
                     if (!parseUnknownField(input, unknownFields,
                                            extensionRegistry, tag)) {
-                      this.setUnknownFields(unknownFields.build());
-                      return this;
+                      done = true;
                     }
                     break;
                   }
                 }
               }
+            } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+              throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+              throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+                  e.getMessage()).setUnfinishedMessage(this);
+            } finally {
+              this.unknownFields = unknownFields.build();
+              makeExtensionsImmutable();
             }
-            
           }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
-          }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-          }
-        }
-        
-        public static final class RestartWebServer extends
-            com.google.gwt.dev.protobuf.GeneratedMessage {
-          // Use RestartWebServer.newBuilder() to construct.
-          private RestartWebServer() {}
-          
-          private static final RestartWebServer defaultInstance = new RestartWebServer();
-          public static RestartWebServer getDefaultInstance() {
-            return defaultInstance;
-          }
-          
-          public RestartWebServer getDefaultInstanceForType() {
-            return defaultInstance;
-          }
-          
           public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
               getDescriptor() {
             return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_RestartWebServer_descriptor;
           }
-          
+
           protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
               internalGetFieldAccessorTable() {
-            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_RestartWebServer_fieldAccessorTable;
+            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_RestartWebServer_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.Builder.class);
           }
-          
+
+          public static com.google.gwt.dev.protobuf.Parser<RestartWebServer> PARSER =
+              new com.google.gwt.dev.protobuf.AbstractParser<RestartWebServer>() {
+            public RestartWebServer parsePartialFrom(
+                com.google.gwt.dev.protobuf.CodedInputStream input,
+                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              return new RestartWebServer(input, extensionRegistry);
+            }
+          };
+
+          @java.lang.Override
+          public com.google.gwt.dev.protobuf.Parser<RestartWebServer> getParserForType() {
+            return PARSER;
+          }
+
+          private void initFields() {
+          }
+          private byte memoizedIsInitialized = -1;
           public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized != -1) return isInitialized == 1;
+
+            memoizedIsInitialized = 1;
             return true;
           }
-          
+
           public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
                               throws java.io.IOException {
+            getSerializedSize();
             getUnknownFields().writeTo(output);
           }
-          
+
           private int memoizedSerializedSize = -1;
           public int getSerializedSize() {
             int size = memoizedSerializedSize;
             if (size != -1) return size;
-          
+
             size = 0;
             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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer parseFrom(
               com.google.gwt.dev.protobuf.ByteString data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer parseFrom(
               com.google.gwt.dev.protobuf.ByteString data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer parseFrom(byte[] data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer parseFrom(
               byte[] data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer parseFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer parseFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer parseDelimitedFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input).buildParsed();
+            return PARSER.parseDelimitedFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer parseDelimitedFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseDelimitedFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
-          
+
           public static Builder newBuilder() { return Builder.create(); }
           public Builder newBuilderForType() { return newBuilder(); }
           public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer prototype) {
             return newBuilder().mergeFrom(prototype);
           }
           public Builder toBuilder() { return newBuilder(this); }
-          
+
+          @java.lang.Override
+          protected Builder newBuilderForType(
+              com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+          }
+          /**
+           * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RestartWebServer}
+           *
+           * <pre>
+           * Restart the web server. No additional information is needed at this time.
+           * </pre>
+           */
           public static final class Builder extends
-              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer result;
-            
+              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+             implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServerOrBuilder {
+            public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+                getDescriptor() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_RestartWebServer_descriptor;
+            }
+
+            protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+                internalGetFieldAccessorTable() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_RestartWebServer_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.Builder.class);
+            }
+
             // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.newBuilder()
-            private Builder() {}
-            
-            private static Builder create() {
-              Builder builder = new Builder();
-              builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer();
-              return builder;
+            private Builder() {
+              maybeForceBuilderInitialization();
             }
-            
-            protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer internalGetResult() {
-              return result;
+
+            private Builder(
+                com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+              super(parent);
+              maybeForceBuilderInitialization();
             }
-            
-            public Builder clear() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "Cannot call clear() after build().");
+            private void maybeForceBuilderInitialization() {
+              if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
               }
-              result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer();
+            }
+            private static Builder create() {
+              return new Builder();
+            }
+
+            public Builder clear() {
+              super.clear();
               return this;
             }
-            
+
             public Builder clone() {
-              return create().mergeFrom(result);
+              return create().mergeFrom(buildPartial());
             }
-            
+
             public com.google.gwt.dev.protobuf.Descriptors.Descriptor
                 getDescriptorForType() {
-              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.getDescriptor();
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_RestartWebServer_descriptor;
             }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer getDefaultInstanceForType() {
               return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.getDefaultInstance();
             }
-            
-            public boolean isInitialized() {
-              return result.isInitialized();
-            }
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer build() {
-              if (result != null && !isInitialized()) {
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer result = buildPartial();
+              if (!result.isInitialized()) {
                 throw newUninitializedMessageException(result);
               }
-              return buildPartial();
+              return result;
             }
-            
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer buildParsed()
-                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              if (!isInitialized()) {
-                throw newUninitializedMessageException(
-                  result).asInvalidProtocolBufferException();
-              }
-              return buildPartial();
-            }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer buildPartial() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "build() has already been called on this Builder.");
-              }
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer returnMe = result;
-              result = null;
-              return returnMe;
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer(this);
+              onBuilt();
+              return result;
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
               if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer) {
                 return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer)other);
@@ -5389,244 +11066,343 @@
                 return this;
               }
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer other) {
               if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.getDefaultInstance()) return this;
               this.mergeUnknownFields(other.getUnknownFields());
               return this;
             }
-            
+
+            public final boolean isInitialized() {
+              return true;
+            }
+
             public Builder mergeFrom(
                 com.google.gwt.dev.protobuf.CodedInputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws java.io.IOException {
-              com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-                com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-                  this.getUnknownFields());
-              while (true) {
-                int tag = input.readTag();
-                switch (tag) {
-                  case 0:
-                    this.setUnknownFields(unknownFields.build());
-                    return this;
-                  default: {
-                    if (!parseUnknownField(input, unknownFields,
-                                           extensionRegistry, tag)) {
-                      this.setUnknownFields(unknownFields.build());
-                      return this;
-                    }
-                    break;
-                  }
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer parsedMessage = null;
+              try {
+                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+              } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+                parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer) e.getUnfinishedMessage();
+                throw e;
+              } finally {
+                if (parsedMessage != null) {
+                  mergeFrom(parsedMessage);
                 }
               }
+              return this;
             }
-            
+
+            // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RestartWebServer)
           }
-          
+
           static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
+            defaultInstance = new RestartWebServer(true);
+            defaultInstance.initFields();
           }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-          }
+
+          // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RestartWebServer)
         }
-        
+
+        private int bitField0_;
         // optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RequestType requestType = 1;
         public static final int REQUESTTYPE_FIELD_NUMBER = 1;
-        private boolean hasRequestType;
-        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType requestType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType.CAPABILITY_EXCHANGE;
-        public boolean hasRequestType() { return hasRequestType; }
-        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType getRequestType() { return requestType_; }
-        
+        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType requestType_;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RequestType requestType = 1;</code>
+         */
+        public boolean hasRequestType() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RequestType requestType = 1;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType getRequestType() {
+          return requestType_;
+        }
+
         // optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.CapabilityExchange capabilityExchange = 2;
         public static final int CAPABILITYEXCHANGE_FIELD_NUMBER = 2;
-        private boolean hasCapabilityExchange;
-        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange capabilityExchange_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.getDefaultInstance();
-        public boolean hasCapabilityExchange() { return hasCapabilityExchange; }
-        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange getCapabilityExchange() { return capabilityExchange_; }
-        
+        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange capabilityExchange_;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.CapabilityExchange capabilityExchange = 2;</code>
+         */
+        public boolean hasCapabilityExchange() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.CapabilityExchange capabilityExchange = 2;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange getCapabilityExchange() {
+          return capabilityExchange_;
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.CapabilityExchange capabilityExchange = 2;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchangeOrBuilder getCapabilityExchangeOrBuilder() {
+          return capabilityExchange_;
+        }
+
         // optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RestartWebServer restartWebServer = 3;
         public static final int RESTARTWEBSERVER_FIELD_NUMBER = 3;
-        private boolean hasRestartWebServer;
-        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer restartWebServer_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.getDefaultInstance();
-        public boolean hasRestartWebServer() { return hasRestartWebServer; }
-        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer getRestartWebServer() { return restartWebServer_; }
-        
+        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer restartWebServer_;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RestartWebServer restartWebServer = 3;</code>
+         */
+        public boolean hasRestartWebServer() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RestartWebServer restartWebServer = 3;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer getRestartWebServer() {
+          return restartWebServer_;
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RestartWebServer restartWebServer = 3;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServerOrBuilder getRestartWebServerOrBuilder() {
+          return restartWebServer_;
+        }
+
+        private void initFields() {
+          requestType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType.CAPABILITY_EXCHANGE;
+          capabilityExchange_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.getDefaultInstance();
+          restartWebServer_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.getDefaultInstance();
+        }
+        private byte memoizedIsInitialized = -1;
         public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          memoizedIsInitialized = 1;
           return true;
         }
-        
+
         public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
                             throws java.io.IOException {
-          if (hasRequestType()) {
-            output.writeEnum(1, getRequestType().getNumber());
+          getSerializedSize();
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            output.writeEnum(1, requestType_.getNumber());
           }
-          if (hasCapabilityExchange()) {
-            output.writeMessage(2, getCapabilityExchange());
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            output.writeMessage(2, capabilityExchange_);
           }
-          if (hasRestartWebServer()) {
-            output.writeMessage(3, getRestartWebServer());
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+            output.writeMessage(3, restartWebServer_);
           }
           getUnknownFields().writeTo(output);
         }
-        
+
         private int memoizedSerializedSize = -1;
         public int getSerializedSize() {
           int size = memoizedSerializedSize;
           if (size != -1) return size;
-        
+
           size = 0;
-          if (hasRequestType()) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
             size += com.google.gwt.dev.protobuf.CodedOutputStream
-              .computeEnumSize(1, getRequestType().getNumber());
+              .computeEnumSize(1, requestType_.getNumber());
           }
-          if (hasCapabilityExchange()) {
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
             size += com.google.gwt.dev.protobuf.CodedOutputStream
-              .computeMessageSize(2, getCapabilityExchange());
+              .computeMessageSize(2, capabilityExchange_);
           }
-          if (hasRestartWebServer()) {
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
             size += com.google.gwt.dev.protobuf.CodedOutputStream
-              .computeMessageSize(3, getRestartWebServer());
+              .computeMessageSize(3, restartWebServer_);
           }
           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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest parseFrom(
             com.google.gwt.dev.protobuf.ByteString data)
             throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-          return newBuilder().mergeFrom(data).buildParsed();
+          return PARSER.parseFrom(data);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest parseFrom(
             com.google.gwt.dev.protobuf.ByteString data,
             com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
             throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-          return newBuilder().mergeFrom(data, extensionRegistry)
-                   .buildParsed();
+          return PARSER.parseFrom(data, extensionRegistry);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest parseFrom(byte[] data)
             throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-          return newBuilder().mergeFrom(data).buildParsed();
+          return PARSER.parseFrom(data);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest parseFrom(
             byte[] data,
             com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
             throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-          return newBuilder().mergeFrom(data, extensionRegistry)
-                   .buildParsed();
+          return PARSER.parseFrom(data, extensionRegistry);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest parseFrom(java.io.InputStream input)
             throws java.io.IOException {
-          return newBuilder().mergeFrom(input).buildParsed();
+          return PARSER.parseFrom(input);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest parseFrom(
             java.io.InputStream input,
             com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
             throws java.io.IOException {
-          return newBuilder().mergeFrom(input, extensionRegistry)
-                   .buildParsed();
+          return PARSER.parseFrom(input, extensionRegistry);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest parseDelimitedFrom(java.io.InputStream input)
             throws java.io.IOException {
-          return newBuilder().mergeDelimitedFrom(input).buildParsed();
+          return PARSER.parseDelimitedFrom(input);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest parseDelimitedFrom(
             java.io.InputStream input,
             com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
             throws java.io.IOException {
-          return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                   .buildParsed();
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest parseFrom(
             com.google.gwt.dev.protobuf.CodedInputStream input)
             throws java.io.IOException {
-          return newBuilder().mergeFrom(input).buildParsed();
+          return PARSER.parseFrom(input);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest parseFrom(
             com.google.gwt.dev.protobuf.CodedInputStream input,
             com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
             throws java.io.IOException {
-          return newBuilder().mergeFrom(input, extensionRegistry)
-                   .buildParsed();
+          return PARSER.parseFrom(input, extensionRegistry);
         }
-        
+
         public static Builder newBuilder() { return Builder.create(); }
         public Builder newBuilderForType() { return newBuilder(); }
         public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest prototype) {
           return newBuilder().mergeFrom(prototype);
         }
         public Builder toBuilder() { return newBuilder(this); }
-        
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest}
+         *
+         * <pre>
+         * The root type for all requests for the DevModeService
+         * </pre>
+         */
         public static final class Builder extends
-            com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest result;
-          
+            com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+           implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequestOrBuilder {
+          public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_descriptor;
+          }
+
+          protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.Builder.class);
+          }
+
           // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.newBuilder()
-          private Builder() {}
-          
-          private static Builder create() {
-            Builder builder = new Builder();
-            builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest();
-            return builder;
+          private Builder() {
+            maybeForceBuilderInitialization();
           }
-          
-          protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest internalGetResult() {
-            return result;
+
+          private Builder(
+              com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
           }
-          
-          public Builder clear() {
-            if (result == null) {
-              throw new IllegalStateException(
-                "Cannot call clear() after build().");
+          private void maybeForceBuilderInitialization() {
+            if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              getCapabilityExchangeFieldBuilder();
+              getRestartWebServerFieldBuilder();
             }
-            result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest();
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            requestType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType.CAPABILITY_EXCHANGE;
+            bitField0_ = (bitField0_ & ~0x00000001);
+            if (capabilityExchangeBuilder_ == null) {
+              capabilityExchange_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.getDefaultInstance();
+            } else {
+              capabilityExchangeBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000002);
+            if (restartWebServerBuilder_ == null) {
+              restartWebServer_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.getDefaultInstance();
+            } else {
+              restartWebServerBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000004);
             return this;
           }
-          
+
           public Builder clone() {
-            return create().mergeFrom(result);
+            return create().mergeFrom(buildPartial());
           }
-          
+
           public com.google.gwt.dev.protobuf.Descriptors.Descriptor
               getDescriptorForType() {
-            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.getDescriptor();
+            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_descriptor;
           }
-          
+
           public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest getDefaultInstanceForType() {
             return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.getDefaultInstance();
           }
-          
-          public boolean isInitialized() {
-            return result.isInitialized();
-          }
+
           public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest build() {
-            if (result != null && !isInitialized()) {
+            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest result = buildPartial();
+            if (!result.isInitialized()) {
               throw newUninitializedMessageException(result);
             }
-            return buildPartial();
+            return result;
           }
-          
-          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest buildParsed()
-              throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            if (!isInitialized()) {
-              throw newUninitializedMessageException(
-                result).asInvalidProtocolBufferException();
-            }
-            return buildPartial();
-          }
-          
+
           public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest buildPartial() {
-            if (result == null) {
-              throw new IllegalStateException(
-                "build() has already been called on this Builder.");
+            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest(this);
+            int from_bitField0_ = bitField0_;
+            int to_bitField0_ = 0;
+            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+              to_bitField0_ |= 0x00000001;
             }
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest returnMe = result;
-            result = null;
-            return returnMe;
+            result.requestType_ = requestType_;
+            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+              to_bitField0_ |= 0x00000002;
+            }
+            if (capabilityExchangeBuilder_ == null) {
+              result.capabilityExchange_ = capabilityExchange_;
+            } else {
+              result.capabilityExchange_ = capabilityExchangeBuilder_.build();
+            }
+            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+              to_bitField0_ |= 0x00000004;
+            }
+            if (restartWebServerBuilder_ == null) {
+              result.restartWebServer_ = restartWebServer_;
+            } else {
+              result.restartWebServer_ = restartWebServerBuilder_.build();
+            }
+            result.bitField0_ = to_bitField0_;
+            onBuilt();
+            return result;
           }
-          
+
           public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
             if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest) {
               return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest)other);
@@ -5635,7 +11411,7 @@
               return this;
             }
           }
-          
+
           public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest other) {
             if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.getDefaultInstance()) return this;
             if (other.hasRequestType()) {
@@ -5650,364 +11426,614 @@
             this.mergeUnknownFields(other.getUnknownFields());
             return this;
           }
-          
+
+          public final boolean isInitialized() {
+            return true;
+          }
+
           public Builder mergeFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-              com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-                this.getUnknownFields());
-            while (true) {
-              int tag = input.readTag();
-              switch (tag) {
-                case 0:
-                  this.setUnknownFields(unknownFields.build());
-                  return this;
-                default: {
-                  if (!parseUnknownField(input, unknownFields,
-                                         extensionRegistry, tag)) {
-                    this.setUnknownFields(unknownFields.build());
-                    return this;
-                  }
-                  break;
-                }
-                case 8: {
-                  int rawValue = input.readEnum();
-                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType value = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType.valueOf(rawValue);
-                  if (value == null) {
-                    unknownFields.mergeVarintField(1, rawValue);
-                  } else {
-                    setRequestType(value);
-                  }
-                  break;
-                }
-                case 18: {
-                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.newBuilder();
-                  if (hasCapabilityExchange()) {
-                    subBuilder.mergeFrom(getCapabilityExchange());
-                  }
-                  input.readMessage(subBuilder, extensionRegistry);
-                  setCapabilityExchange(subBuilder.buildPartial());
-                  break;
-                }
-                case 26: {
-                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.newBuilder();
-                  if (hasRestartWebServer()) {
-                    subBuilder.mergeFrom(getRestartWebServer());
-                  }
-                  input.readMessage(subBuilder, extensionRegistry);
-                  setRestartWebServer(subBuilder.buildPartial());
-                  break;
-                }
+            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
               }
             }
+            return this;
           }
-          
-          
+          private int bitField0_;
+
           // optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RequestType requestType = 1;
+          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType requestType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType.CAPABILITY_EXCHANGE;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RequestType requestType = 1;</code>
+           */
           public boolean hasRequestType() {
-            return result.hasRequestType();
+            return ((bitField0_ & 0x00000001) == 0x00000001);
           }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RequestType requestType = 1;</code>
+           */
           public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType getRequestType() {
-            return result.getRequestType();
+            return requestType_;
           }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RequestType requestType = 1;</code>
+           */
           public Builder setRequestType(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType value) {
             if (value == null) {
               throw new NullPointerException();
             }
-            result.hasRequestType = true;
-            result.requestType_ = value;
+            bitField0_ |= 0x00000001;
+            requestType_ = value;
+            onChanged();
             return this;
           }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RequestType requestType = 1;</code>
+           */
           public Builder clearRequestType() {
-            result.hasRequestType = false;
-            result.requestType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType.CAPABILITY_EXCHANGE;
+            bitField0_ = (bitField0_ & ~0x00000001);
+            requestType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType.CAPABILITY_EXCHANGE;
+            onChanged();
             return this;
           }
-          
+
           // optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.CapabilityExchange capabilityExchange = 2;
+          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange capabilityExchange_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.getDefaultInstance();
+          private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchangeOrBuilder> capabilityExchangeBuilder_;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.CapabilityExchange capabilityExchange = 2;</code>
+           */
           public boolean hasCapabilityExchange() {
-            return result.hasCapabilityExchange();
+            return ((bitField0_ & 0x00000002) == 0x00000002);
           }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.CapabilityExchange capabilityExchange = 2;</code>
+           */
           public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange getCapabilityExchange() {
-            return result.getCapabilityExchange();
+            if (capabilityExchangeBuilder_ == null) {
+              return capabilityExchange_;
+            } else {
+              return capabilityExchangeBuilder_.getMessage();
+            }
           }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.CapabilityExchange capabilityExchange = 2;</code>
+           */
           public Builder setCapabilityExchange(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange value) {
-            if (value == null) {
-              throw new NullPointerException();
+            if (capabilityExchangeBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              capabilityExchange_ = value;
+              onChanged();
+            } else {
+              capabilityExchangeBuilder_.setMessage(value);
             }
-            result.hasCapabilityExchange = true;
-            result.capabilityExchange_ = value;
+            bitField0_ |= 0x00000002;
             return this;
           }
-          public Builder setCapabilityExchange(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.Builder builderForValue) {
-            result.hasCapabilityExchange = true;
-            result.capabilityExchange_ = builderForValue.build();
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.CapabilityExchange capabilityExchange = 2;</code>
+           */
+          public Builder setCapabilityExchange(
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.Builder builderForValue) {
+            if (capabilityExchangeBuilder_ == null) {
+              capabilityExchange_ = builderForValue.build();
+              onChanged();
+            } else {
+              capabilityExchangeBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000002;
             return this;
           }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.CapabilityExchange capabilityExchange = 2;</code>
+           */
           public Builder mergeCapabilityExchange(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange value) {
-            if (result.hasCapabilityExchange() &&
-                result.capabilityExchange_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.getDefaultInstance()) {
-              result.capabilityExchange_ =
-                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.newBuilder(result.capabilityExchange_).mergeFrom(value).buildPartial();
+            if (capabilityExchangeBuilder_ == null) {
+              if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                  capabilityExchange_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.getDefaultInstance()) {
+                capabilityExchange_ =
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.newBuilder(capabilityExchange_).mergeFrom(value).buildPartial();
+              } else {
+                capabilityExchange_ = value;
+              }
+              onChanged();
             } else {
-              result.capabilityExchange_ = value;
+              capabilityExchangeBuilder_.mergeFrom(value);
             }
-            result.hasCapabilityExchange = true;
+            bitField0_ |= 0x00000002;
             return this;
           }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.CapabilityExchange capabilityExchange = 2;</code>
+           */
           public Builder clearCapabilityExchange() {
-            result.hasCapabilityExchange = false;
-            result.capabilityExchange_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.getDefaultInstance();
-            return this;
-          }
-          
-          // optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RestartWebServer restartWebServer = 3;
-          public boolean hasRestartWebServer() {
-            return result.hasRestartWebServer();
-          }
-          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer getRestartWebServer() {
-            return result.getRestartWebServer();
-          }
-          public Builder setRestartWebServer(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer value) {
-            if (value == null) {
-              throw new NullPointerException();
-            }
-            result.hasRestartWebServer = true;
-            result.restartWebServer_ = value;
-            return this;
-          }
-          public Builder setRestartWebServer(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.Builder builderForValue) {
-            result.hasRestartWebServer = true;
-            result.restartWebServer_ = builderForValue.build();
-            return this;
-          }
-          public Builder mergeRestartWebServer(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer value) {
-            if (result.hasRestartWebServer() &&
-                result.restartWebServer_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.getDefaultInstance()) {
-              result.restartWebServer_ =
-                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.newBuilder(result.restartWebServer_).mergeFrom(value).buildPartial();
+            if (capabilityExchangeBuilder_ == null) {
+              capabilityExchange_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.getDefaultInstance();
+              onChanged();
             } else {
-              result.restartWebServer_ = value;
+              capabilityExchangeBuilder_.clear();
             }
-            result.hasRestartWebServer = true;
+            bitField0_ = (bitField0_ & ~0x00000002);
             return this;
           }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.CapabilityExchange capabilityExchange = 2;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.Builder getCapabilityExchangeBuilder() {
+            bitField0_ |= 0x00000002;
+            onChanged();
+            return getCapabilityExchangeFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.CapabilityExchange capabilityExchange = 2;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchangeOrBuilder getCapabilityExchangeOrBuilder() {
+            if (capabilityExchangeBuilder_ != null) {
+              return capabilityExchangeBuilder_.getMessageOrBuilder();
+            } else {
+              return capabilityExchange_;
+            }
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.CapabilityExchange capabilityExchange = 2;</code>
+           */
+          private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchangeOrBuilder> 
+              getCapabilityExchangeFieldBuilder() {
+            if (capabilityExchangeBuilder_ == null) {
+              capabilityExchangeBuilder_ = new com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchangeOrBuilder>(
+                      capabilityExchange_,
+                      getParentForChildren(),
+                      isClean());
+              capabilityExchange_ = null;
+            }
+            return capabilityExchangeBuilder_;
+          }
+
+          // optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RestartWebServer restartWebServer = 3;
+          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer restartWebServer_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.getDefaultInstance();
+          private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServerOrBuilder> restartWebServerBuilder_;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RestartWebServer restartWebServer = 3;</code>
+           */
+          public boolean hasRestartWebServer() {
+            return ((bitField0_ & 0x00000004) == 0x00000004);
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RestartWebServer restartWebServer = 3;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer getRestartWebServer() {
+            if (restartWebServerBuilder_ == null) {
+              return restartWebServer_;
+            } else {
+              return restartWebServerBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RestartWebServer restartWebServer = 3;</code>
+           */
+          public Builder setRestartWebServer(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer value) {
+            if (restartWebServerBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              restartWebServer_ = value;
+              onChanged();
+            } else {
+              restartWebServerBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000004;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RestartWebServer restartWebServer = 3;</code>
+           */
+          public Builder setRestartWebServer(
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.Builder builderForValue) {
+            if (restartWebServerBuilder_ == null) {
+              restartWebServer_ = builderForValue.build();
+              onChanged();
+            } else {
+              restartWebServerBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000004;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RestartWebServer restartWebServer = 3;</code>
+           */
+          public Builder mergeRestartWebServer(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer value) {
+            if (restartWebServerBuilder_ == null) {
+              if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                  restartWebServer_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.getDefaultInstance()) {
+                restartWebServer_ =
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.newBuilder(restartWebServer_).mergeFrom(value).buildPartial();
+              } else {
+                restartWebServer_ = value;
+              }
+              onChanged();
+            } else {
+              restartWebServerBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000004;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RestartWebServer restartWebServer = 3;</code>
+           */
           public Builder clearRestartWebServer() {
-            result.hasRestartWebServer = false;
-            result.restartWebServer_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.getDefaultInstance();
+            if (restartWebServerBuilder_ == null) {
+              restartWebServer_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.getDefaultInstance();
+              onChanged();
+            } else {
+              restartWebServerBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000004);
             return this;
           }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RestartWebServer restartWebServer = 3;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.Builder getRestartWebServerBuilder() {
+            bitField0_ |= 0x00000004;
+            onChanged();
+            return getRestartWebServerFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RestartWebServer restartWebServer = 3;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServerOrBuilder getRestartWebServerOrBuilder() {
+            if (restartWebServerBuilder_ != null) {
+              return restartWebServerBuilder_.getMessageOrBuilder();
+            } else {
+              return restartWebServer_;
+            }
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RestartWebServer restartWebServer = 3;</code>
+           */
+          private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServerOrBuilder> 
+              getRestartWebServerFieldBuilder() {
+            if (restartWebServerBuilder_ == null) {
+              restartWebServerBuilder_ = new com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServerOrBuilder>(
+                      restartWebServer_,
+                      getParentForChildren(),
+                      isClean());
+              restartWebServer_ = null;
+            }
+            return restartWebServerBuilder_;
+          }
+
+          // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest)
         }
-        
+
         static {
-          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
+          defaultInstance = new DevModeRequest(true);
+          defaultInstance.initFields();
         }
-        
-        static {
-          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-        }
+
+        // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest)
       }
-      
+
+      private int bitField0_;
       // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ServiceType serviceType = 1;
       public static final int SERVICETYPE_FIELD_NUMBER = 1;
-      private boolean hasServiceType;
-      private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ServiceType serviceType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ServiceType.VIEWER;
-      public boolean hasServiceType() { return hasServiceType; }
-      public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ServiceType getServiceType() { return serviceType_; }
-      
+      private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ServiceType serviceType_;
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ServiceType serviceType = 1;</code>
+       */
+      public boolean hasServiceType() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ServiceType serviceType = 1;</code>
+       */
+      public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ServiceType getServiceType() {
+        return serviceType_;
+      }
+
       // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest viewerRequest = 2;
       public static final int VIEWERREQUEST_FIELD_NUMBER = 2;
-      private boolean hasViewerRequest;
-      private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest viewerRequest_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.getDefaultInstance();
-      public boolean hasViewerRequest() { return hasViewerRequest; }
-      public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest getViewerRequest() { return viewerRequest_; }
-      
+      private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest viewerRequest_;
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest viewerRequest = 2;</code>
+       */
+      public boolean hasViewerRequest() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest viewerRequest = 2;</code>
+       */
+      public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest getViewerRequest() {
+        return viewerRequest_;
+      }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest viewerRequest = 2;</code>
+       */
+      public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequestOrBuilder getViewerRequestOrBuilder() {
+        return viewerRequest_;
+      }
+
       // optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest devModeRequest = 3;
       public static final int DEVMODEREQUEST_FIELD_NUMBER = 3;
-      private boolean hasDevModeRequest;
-      private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest devModeRequest_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.getDefaultInstance();
-      public boolean hasDevModeRequest() { return hasDevModeRequest; }
-      public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest getDevModeRequest() { return devModeRequest_; }
-      
+      private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest devModeRequest_;
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest devModeRequest = 3;</code>
+       */
+      public boolean hasDevModeRequest() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest devModeRequest = 3;</code>
+       */
+      public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest getDevModeRequest() {
+        return devModeRequest_;
+      }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest devModeRequest = 3;</code>
+       */
+      public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequestOrBuilder getDevModeRequestOrBuilder() {
+        return devModeRequest_;
+      }
+
+      private void initFields() {
+        serviceType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ServiceType.VIEWER;
+        viewerRequest_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.getDefaultInstance();
+        devModeRequest_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
       public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
         if (hasViewerRequest()) {
-          if (!getViewerRequest().isInitialized()) return false;
+          if (!getViewerRequest().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
         }
+        memoizedIsInitialized = 1;
         return true;
       }
-      
+
       public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
                           throws java.io.IOException {
-        if (hasServiceType()) {
-          output.writeEnum(1, getServiceType().getNumber());
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeEnum(1, serviceType_.getNumber());
         }
-        if (hasViewerRequest()) {
-          output.writeMessage(2, getViewerRequest());
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, viewerRequest_);
         }
-        if (hasDevModeRequest()) {
-          output.writeMessage(3, getDevModeRequest());
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
+          output.writeMessage(3, devModeRequest_);
         }
         getUnknownFields().writeTo(output);
       }
-      
+
       private int memoizedSerializedSize = -1;
       public int getSerializedSize() {
         int size = memoizedSerializedSize;
         if (size != -1) return size;
-      
+
         size = 0;
-        if (hasServiceType()) {
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
           size += com.google.gwt.dev.protobuf.CodedOutputStream
-            .computeEnumSize(1, getServiceType().getNumber());
+            .computeEnumSize(1, serviceType_.getNumber());
         }
-        if (hasViewerRequest()) {
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
           size += com.google.gwt.dev.protobuf.CodedOutputStream
-            .computeMessageSize(2, getViewerRequest());
+            .computeMessageSize(2, viewerRequest_);
         }
-        if (hasDevModeRequest()) {
+        if (((bitField0_ & 0x00000004) == 0x00000004)) {
           size += com.google.gwt.dev.protobuf.CodedOutputStream
-            .computeMessageSize(3, getDevModeRequest());
+            .computeMessageSize(3, devModeRequest_);
         }
         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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request parseFrom(
           com.google.gwt.dev.protobuf.ByteString data)
           throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data).buildParsed();
+        return PARSER.parseFrom(data);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request parseFrom(
           com.google.gwt.dev.protobuf.ByteString data,
           com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(data, extensionRegistry);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request parseFrom(byte[] data)
           throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data).buildParsed();
+        return PARSER.parseFrom(data);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request parseFrom(
           byte[] data,
           com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(data, extensionRegistry);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request parseFrom(java.io.InputStream input)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input).buildParsed();
+        return PARSER.parseFrom(input);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request parseFrom(
           java.io.InputStream input,
           com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(input, extensionRegistry);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request parseDelimitedFrom(java.io.InputStream input)
           throws java.io.IOException {
-        return newBuilder().mergeDelimitedFrom(input).buildParsed();
+        return PARSER.parseDelimitedFrom(input);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request parseDelimitedFrom(
           java.io.InputStream input,
           com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request parseFrom(
           com.google.gwt.dev.protobuf.CodedInputStream input)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input).buildParsed();
+        return PARSER.parseFrom(input);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request parseFrom(
           com.google.gwt.dev.protobuf.CodedInputStream input,
           com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(input, extensionRegistry);
       }
-      
+
       public static Builder newBuilder() { return Builder.create(); }
       public Builder newBuilderForType() { return newBuilder(); }
       public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request prototype) {
         return newBuilder().mergeFrom(prototype);
       }
       public Builder toBuilder() { return newBuilder(this); }
-      
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Request}
+       *
+       * <pre>
+       * A request message. This is the root type for all request messages
+       * </pre>
+       */
       public static final class Builder extends
-          com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request result;
-        
+          com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+         implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.RequestOrBuilder {
+        public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_descriptor;
+        }
+
+        protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.Builder.class);
+        }
+
         // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.newBuilder()
-        private Builder() {}
-        
-        private static Builder create() {
-          Builder builder = new Builder();
-          builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request();
-          return builder;
+        private Builder() {
+          maybeForceBuilderInitialization();
         }
-        
-        protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request internalGetResult() {
-          return result;
+
+        private Builder(
+            com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
         }
-        
-        public Builder clear() {
-          if (result == null) {
-            throw new IllegalStateException(
-              "Cannot call clear() after build().");
+        private void maybeForceBuilderInitialization() {
+          if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getViewerRequestFieldBuilder();
+            getDevModeRequestFieldBuilder();
           }
-          result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request();
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          serviceType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ServiceType.VIEWER;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (viewerRequestBuilder_ == null) {
+            viewerRequest_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.getDefaultInstance();
+          } else {
+            viewerRequestBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          if (devModeRequestBuilder_ == null) {
+            devModeRequest_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.getDefaultInstance();
+          } else {
+            devModeRequestBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
           return this;
         }
-        
+
         public Builder clone() {
-          return create().mergeFrom(result);
+          return create().mergeFrom(buildPartial());
         }
-        
+
         public com.google.gwt.dev.protobuf.Descriptors.Descriptor
             getDescriptorForType() {
-          return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.getDescriptor();
+          return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_descriptor;
         }
-        
+
         public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request getDefaultInstanceForType() {
           return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.getDefaultInstance();
         }
-        
-        public boolean isInitialized() {
-          return result.isInitialized();
-        }
+
         public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request build() {
-          if (result != null && !isInitialized()) {
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request result = buildPartial();
+          if (!result.isInitialized()) {
             throw newUninitializedMessageException(result);
           }
-          return buildPartial();
+          return result;
         }
-        
-        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request buildParsed()
-            throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-          if (!isInitialized()) {
-            throw newUninitializedMessageException(
-              result).asInvalidProtocolBufferException();
-          }
-          return buildPartial();
-        }
-        
+
         public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request buildPartial() {
-          if (result == null) {
-            throw new IllegalStateException(
-              "build() has already been called on this Builder.");
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
           }
-          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request returnMe = result;
-          result = null;
-          return returnMe;
+          result.serviceType_ = serviceType_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (viewerRequestBuilder_ == null) {
+            result.viewerRequest_ = viewerRequest_;
+          } else {
+            result.viewerRequest_ = viewerRequestBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+            to_bitField0_ |= 0x00000004;
+          }
+          if (devModeRequestBuilder_ == null) {
+            result.devModeRequest_ = devModeRequest_;
+          } else {
+            result.devModeRequest_ = devModeRequestBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
         }
-        
+
         public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
           if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request) {
             return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request)other);
@@ -6016,7 +12042,7 @@
             return this;
           }
         }
-        
+
         public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request other) {
           if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.getDefaultInstance()) return this;
           if (other.hasServiceType()) {
@@ -6031,224 +12057,708 @@
           this.mergeUnknownFields(other.getUnknownFields());
           return this;
         }
-        
+
+        public final boolean isInitialized() {
+          if (hasViewerRequest()) {
+            if (!getViewerRequest().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
         public Builder mergeFrom(
             com.google.gwt.dev.protobuf.CodedInputStream input,
             com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
             throws java.io.IOException {
-          com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-            com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-              this.getUnknownFields());
-          while (true) {
-            int tag = input.readTag();
-            switch (tag) {
-              case 0:
-                this.setUnknownFields(unknownFields.build());
-                return this;
-              default: {
-                if (!parseUnknownField(input, unknownFields,
-                                       extensionRegistry, tag)) {
-                  this.setUnknownFields(unknownFields.build());
-                  return this;
-                }
-                break;
-              }
-              case 8: {
-                int rawValue = input.readEnum();
-                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ServiceType value = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ServiceType.valueOf(rawValue);
-                if (value == null) {
-                  unknownFields.mergeVarintField(1, rawValue);
-                } else {
-                  setServiceType(value);
-                }
-                break;
-              }
-              case 18: {
-                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.newBuilder();
-                if (hasViewerRequest()) {
-                  subBuilder.mergeFrom(getViewerRequest());
-                }
-                input.readMessage(subBuilder, extensionRegistry);
-                setViewerRequest(subBuilder.buildPartial());
-                break;
-              }
-              case 26: {
-                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.newBuilder();
-                if (hasDevModeRequest()) {
-                  subBuilder.mergeFrom(getDevModeRequest());
-                }
-                input.readMessage(subBuilder, extensionRegistry);
-                setDevModeRequest(subBuilder.buildPartial());
-                break;
-              }
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
             }
           }
+          return this;
         }
-        
-        
+        private int bitField0_;
+
         // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ServiceType serviceType = 1;
+        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ServiceType serviceType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ServiceType.VIEWER;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ServiceType serviceType = 1;</code>
+         */
         public boolean hasServiceType() {
-          return result.hasServiceType();
+          return ((bitField0_ & 0x00000001) == 0x00000001);
         }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ServiceType serviceType = 1;</code>
+         */
         public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ServiceType getServiceType() {
-          return result.getServiceType();
+          return serviceType_;
         }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ServiceType serviceType = 1;</code>
+         */
         public Builder setServiceType(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ServiceType value) {
           if (value == null) {
             throw new NullPointerException();
           }
-          result.hasServiceType = true;
-          result.serviceType_ = value;
+          bitField0_ |= 0x00000001;
+          serviceType_ = value;
+          onChanged();
           return this;
         }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ServiceType serviceType = 1;</code>
+         */
         public Builder clearServiceType() {
-          result.hasServiceType = false;
-          result.serviceType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ServiceType.VIEWER;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          serviceType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ServiceType.VIEWER;
+          onChanged();
           return this;
         }
-        
+
         // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest viewerRequest = 2;
+        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest viewerRequest_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.getDefaultInstance();
+        private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequestOrBuilder> viewerRequestBuilder_;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest viewerRequest = 2;</code>
+         */
         public boolean hasViewerRequest() {
-          return result.hasViewerRequest();
+          return ((bitField0_ & 0x00000002) == 0x00000002);
         }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest viewerRequest = 2;</code>
+         */
         public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest getViewerRequest() {
-          return result.getViewerRequest();
+          if (viewerRequestBuilder_ == null) {
+            return viewerRequest_;
+          } else {
+            return viewerRequestBuilder_.getMessage();
+          }
         }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest viewerRequest = 2;</code>
+         */
         public Builder setViewerRequest(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest value) {
-          if (value == null) {
-            throw new NullPointerException();
+          if (viewerRequestBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            viewerRequest_ = value;
+            onChanged();
+          } else {
+            viewerRequestBuilder_.setMessage(value);
           }
-          result.hasViewerRequest = true;
-          result.viewerRequest_ = value;
+          bitField0_ |= 0x00000002;
           return this;
         }
-        public Builder setViewerRequest(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Builder builderForValue) {
-          result.hasViewerRequest = true;
-          result.viewerRequest_ = builderForValue.build();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest viewerRequest = 2;</code>
+         */
+        public Builder setViewerRequest(
+            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Builder builderForValue) {
+          if (viewerRequestBuilder_ == null) {
+            viewerRequest_ = builderForValue.build();
+            onChanged();
+          } else {
+            viewerRequestBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
           return this;
         }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest viewerRequest = 2;</code>
+         */
         public Builder mergeViewerRequest(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest value) {
-          if (result.hasViewerRequest() &&
-              result.viewerRequest_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.getDefaultInstance()) {
-            result.viewerRequest_ =
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.newBuilder(result.viewerRequest_).mergeFrom(value).buildPartial();
+          if (viewerRequestBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                viewerRequest_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.getDefaultInstance()) {
+              viewerRequest_ =
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.newBuilder(viewerRequest_).mergeFrom(value).buildPartial();
+            } else {
+              viewerRequest_ = value;
+            }
+            onChanged();
           } else {
-            result.viewerRequest_ = value;
+            viewerRequestBuilder_.mergeFrom(value);
           }
-          result.hasViewerRequest = true;
+          bitField0_ |= 0x00000002;
           return this;
         }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest viewerRequest = 2;</code>
+         */
         public Builder clearViewerRequest() {
-          result.hasViewerRequest = false;
-          result.viewerRequest_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.getDefaultInstance();
-          return this;
-        }
-        
-        // optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest devModeRequest = 3;
-        public boolean hasDevModeRequest() {
-          return result.hasDevModeRequest();
-        }
-        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest getDevModeRequest() {
-          return result.getDevModeRequest();
-        }
-        public Builder setDevModeRequest(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest value) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          result.hasDevModeRequest = true;
-          result.devModeRequest_ = value;
-          return this;
-        }
-        public Builder setDevModeRequest(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.Builder builderForValue) {
-          result.hasDevModeRequest = true;
-          result.devModeRequest_ = builderForValue.build();
-          return this;
-        }
-        public Builder mergeDevModeRequest(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest value) {
-          if (result.hasDevModeRequest() &&
-              result.devModeRequest_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.getDefaultInstance()) {
-            result.devModeRequest_ =
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.newBuilder(result.devModeRequest_).mergeFrom(value).buildPartial();
+          if (viewerRequestBuilder_ == null) {
+            viewerRequest_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.getDefaultInstance();
+            onChanged();
           } else {
-            result.devModeRequest_ = value;
+            viewerRequestBuilder_.clear();
           }
-          result.hasDevModeRequest = true;
+          bitField0_ = (bitField0_ & ~0x00000002);
           return this;
         }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest viewerRequest = 2;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Builder getViewerRequestBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getViewerRequestFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest viewerRequest = 2;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequestOrBuilder getViewerRequestOrBuilder() {
+          if (viewerRequestBuilder_ != null) {
+            return viewerRequestBuilder_.getMessageOrBuilder();
+          } else {
+            return viewerRequest_;
+          }
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest viewerRequest = 2;</code>
+         */
+        private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequestOrBuilder> 
+            getViewerRequestFieldBuilder() {
+          if (viewerRequestBuilder_ == null) {
+            viewerRequestBuilder_ = new com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequestOrBuilder>(
+                    viewerRequest_,
+                    getParentForChildren(),
+                    isClean());
+            viewerRequest_ = null;
+          }
+          return viewerRequestBuilder_;
+        }
+
+        // optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest devModeRequest = 3;
+        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest devModeRequest_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.getDefaultInstance();
+        private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequestOrBuilder> devModeRequestBuilder_;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest devModeRequest = 3;</code>
+         */
+        public boolean hasDevModeRequest() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest devModeRequest = 3;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest getDevModeRequest() {
+          if (devModeRequestBuilder_ == null) {
+            return devModeRequest_;
+          } else {
+            return devModeRequestBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest devModeRequest = 3;</code>
+         */
+        public Builder setDevModeRequest(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest value) {
+          if (devModeRequestBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            devModeRequest_ = value;
+            onChanged();
+          } else {
+            devModeRequestBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest devModeRequest = 3;</code>
+         */
+        public Builder setDevModeRequest(
+            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.Builder builderForValue) {
+          if (devModeRequestBuilder_ == null) {
+            devModeRequest_ = builderForValue.build();
+            onChanged();
+          } else {
+            devModeRequestBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest devModeRequest = 3;</code>
+         */
+        public Builder mergeDevModeRequest(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest value) {
+          if (devModeRequestBuilder_ == null) {
+            if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                devModeRequest_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.getDefaultInstance()) {
+              devModeRequest_ =
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.newBuilder(devModeRequest_).mergeFrom(value).buildPartial();
+            } else {
+              devModeRequest_ = value;
+            }
+            onChanged();
+          } else {
+            devModeRequestBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000004;
+          return this;
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest devModeRequest = 3;</code>
+         */
         public Builder clearDevModeRequest() {
-          result.hasDevModeRequest = false;
-          result.devModeRequest_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.getDefaultInstance();
+          if (devModeRequestBuilder_ == null) {
+            devModeRequest_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.getDefaultInstance();
+            onChanged();
+          } else {
+            devModeRequestBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000004);
           return this;
         }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest devModeRequest = 3;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.Builder getDevModeRequestBuilder() {
+          bitField0_ |= 0x00000004;
+          onChanged();
+          return getDevModeRequestFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest devModeRequest = 3;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequestOrBuilder getDevModeRequestOrBuilder() {
+          if (devModeRequestBuilder_ != null) {
+            return devModeRequestBuilder_.getMessageOrBuilder();
+          } else {
+            return devModeRequest_;
+          }
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest devModeRequest = 3;</code>
+         */
+        private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequestOrBuilder> 
+            getDevModeRequestFieldBuilder() {
+          if (devModeRequestBuilder_ == null) {
+            devModeRequestBuilder_ = new com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequestOrBuilder>(
+                    devModeRequest_,
+                    getParentForChildren(),
+                    isClean());
+            devModeRequest_ = null;
+          }
+          return devModeRequestBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Request)
       }
-      
+
       static {
-        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
+        defaultInstance = new Request(true);
+        defaultInstance.initFields();
       }
-      
-      static {
-        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-      }
+
+      // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Request)
     }
-    
+
+    public interface ResponseOrBuilder
+        extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+
+      // optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse viewerResponse = 1;
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse viewerResponse = 1;</code>
+       */
+      boolean hasViewerResponse();
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse viewerResponse = 1;</code>
+       */
+      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse getViewerResponse();
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse viewerResponse = 1;</code>
+       */
+      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponseOrBuilder getViewerResponseOrBuilder();
+
+      // optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse devModeResponse = 2;
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse devModeResponse = 2;</code>
+       */
+      boolean hasDevModeResponse();
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse devModeResponse = 2;</code>
+       */
+      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse getDevModeResponse();
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse devModeResponse = 2;</code>
+       */
+      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponseOrBuilder getDevModeResponseOrBuilder();
+    }
+    /**
+     * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Response}
+     *
+     * <pre>
+     * A response message for a request. This is the root type for all response 
+     * messages. 
+     * </pre>
+     */
     public static final class Response extends
-        com.google.gwt.dev.protobuf.GeneratedMessage {
+        com.google.gwt.dev.protobuf.GeneratedMessage
+        implements ResponseOrBuilder {
       // Use Response.newBuilder() to construct.
-      private Response() {}
-      
-      private static final Response defaultInstance = new Response();
+      private Response(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Response(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Response defaultInstance;
       public static Response getDefaultInstance() {
         return defaultInstance;
       }
-      
+
       public Response getDefaultInstanceForType() {
         return defaultInstance;
       }
-      
+
+      private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.gwt.dev.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Response(
+          com.google.gwt.dev.protobuf.CodedInputStream input,
+          com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.gwt.dev.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: {
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  subBuilder = viewerResponse_.toBuilder();
+                }
+                viewerResponse_ = input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(viewerResponse_);
+                  viewerResponse_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000001;
+                break;
+              }
+              case 18: {
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.Builder subBuilder = null;
+                if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                  subBuilder = devModeResponse_.toBuilder();
+                }
+                devModeResponse_ = input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.PARSER, extensionRegistry);
+                if (subBuilder != null) {
+                  subBuilder.mergeFrom(devModeResponse_);
+                  devModeResponse_ = subBuilder.buildPartial();
+                }
+                bitField0_ |= 0x00000002;
+                break;
+              }
+            }
+          }
+        } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
       public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
           getDescriptor() {
         return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_descriptor;
       }
-      
+
       protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_fieldAccessorTable;
+        return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.Builder.class);
       }
-      
+
+      public static com.google.gwt.dev.protobuf.Parser<Response> PARSER =
+          new com.google.gwt.dev.protobuf.AbstractParser<Response>() {
+        public Response parsePartialFrom(
+            com.google.gwt.dev.protobuf.CodedInputStream input,
+            com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+          return new Response(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.gwt.dev.protobuf.Parser<Response> getParserForType() {
+        return PARSER;
+      }
+
+      public interface ViewerResponseOrBuilder
+          extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+
+        // optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.ResponseType responseType = 1;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.ResponseType responseType = 1;</code>
+         */
+        boolean hasResponseType();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.ResponseType responseType = 1;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.ResponseType getResponseType();
+
+        // optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange capabilityExchange = 2;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange capabilityExchange = 2;</code>
+         */
+        boolean hasCapabilityExchange();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange capabilityExchange = 2;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange getCapabilityExchange();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange capabilityExchange = 2;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchangeOrBuilder getCapabilityExchangeOrBuilder();
+
+        // optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLog addLog = 3;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLog addLog = 3;</code>
+         */
+        boolean hasAddLog();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLog addLog = 3;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog getAddLog();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLog addLog = 3;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogOrBuilder getAddLogOrBuilder();
+
+        // optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLogBranch addLogBranch = 4;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLogBranch addLogBranch = 4;</code>
+         */
+        boolean hasAddLogBranch();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLogBranch addLogBranch = 4;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch getAddLogBranch();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLogBranch addLogBranch = 4;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranchOrBuilder getAddLogBranchOrBuilder();
+      }
+      /**
+       * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse}
+       *
+       * <pre>
+       * The root type for all response messages from the ViewerService
+       * </pre>
+       */
       public static final class ViewerResponse extends
-          com.google.gwt.dev.protobuf.GeneratedMessage {
+          com.google.gwt.dev.protobuf.GeneratedMessage
+          implements ViewerResponseOrBuilder {
         // Use ViewerResponse.newBuilder() to construct.
-        private ViewerResponse() {}
-        
-        private static final ViewerResponse defaultInstance = new ViewerResponse();
+        private ViewerResponse(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private ViewerResponse(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final ViewerResponse defaultInstance;
         public static ViewerResponse getDefaultInstance() {
           return defaultInstance;
         }
-        
+
         public ViewerResponse getDefaultInstanceForType() {
           return defaultInstance;
         }
-        
+
+        private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.gwt.dev.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private ViewerResponse(
+            com.google.gwt.dev.protobuf.CodedInputStream input,
+            com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.gwt.dev.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: {
+                  int rawValue = input.readEnum();
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.ResponseType value = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.ResponseType.valueOf(rawValue);
+                  if (value == null) {
+                    unknownFields.mergeVarintField(1, rawValue);
+                  } else {
+                    bitField0_ |= 0x00000001;
+                    responseType_ = value;
+                  }
+                  break;
+                }
+                case 18: {
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                    subBuilder = capabilityExchange_.toBuilder();
+                  }
+                  capabilityExchange_ = input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(capabilityExchange_);
+                    capabilityExchange_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000002;
+                  break;
+                }
+                case 26: {
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                    subBuilder = addLog_.toBuilder();
+                  }
+                  addLog_ = input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(addLog_);
+                    addLog_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000004;
+                  break;
+                }
+                case 34: {
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000008) == 0x00000008)) {
+                    subBuilder = addLogBranch_.toBuilder();
+                  }
+                  addLogBranch_ = input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(addLogBranch_);
+                    addLogBranch_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000008;
+                  break;
+                }
+              }
+            }
+          } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
+          }
+        }
         public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
             getDescriptor() {
           return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_descriptor;
         }
-        
+
         protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
             internalGetFieldAccessorTable() {
-          return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_fieldAccessorTable;
+          return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.Builder.class);
         }
-        
+
+        public static com.google.gwt.dev.protobuf.Parser<ViewerResponse> PARSER =
+            new com.google.gwt.dev.protobuf.AbstractParser<ViewerResponse>() {
+          public ViewerResponse parsePartialFrom(
+              com.google.gwt.dev.protobuf.CodedInputStream input,
+              com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+            return new ViewerResponse(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.gwt.dev.protobuf.Parser<ViewerResponse> getParserForType() {
+          return PARSER;
+        }
+
+        /**
+         * Protobuf enum {@code com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.ResponseType}
+         *
+         * <pre>
+         * The different types of response messages that can come from the
+         * ViewerService
+         * </pre>
+         */
         public enum ResponseType
             implements com.google.gwt.dev.protobuf.ProtocolMessageEnum {
+          /**
+           * <code>CAPABILITY_EXCHANGE = 0;</code>
+           */
           CAPABILITY_EXCHANGE(0, 0),
+          /**
+           * <code>ADD_LOG = 1;</code>
+           */
           ADD_LOG(1, 1),
+          /**
+           * <code>ADD_LOG_BRANCH = 2;</code>
+           */
           ADD_LOG_BRANCH(2, 2),
           ;
-          
-          
+
+          /**
+           * <code>CAPABILITY_EXCHANGE = 0;</code>
+           */
+          public static final int CAPABILITY_EXCHANGE_VALUE = 0;
+          /**
+           * <code>ADD_LOG = 1;</code>
+           */
+          public static final int ADD_LOG_VALUE = 1;
+          /**
+           * <code>ADD_LOG_BRANCH = 2;</code>
+           */
+          public static final int ADD_LOG_BRANCH_VALUE = 2;
+
+
           public final int getNumber() { return value; }
-          
+
           public static ResponseType valueOf(int value) {
             switch (value) {
               case 0: return CAPABILITY_EXCHANGE;
@@ -6257,7 +12767,7 @@
               default: return null;
             }
           }
-          
+
           public static com.google.gwt.dev.protobuf.Internal.EnumLiteMap<ResponseType>
               internalGetValueMap() {
             return internalValueMap;
@@ -6266,10 +12776,10 @@
               internalValueMap =
                 new com.google.gwt.dev.protobuf.Internal.EnumLiteMap<ResponseType>() {
                   public ResponseType findValueByNumber(int number) {
-                    return ResponseType.valueOf(number)
-          ;        }
+                    return ResponseType.valueOf(number);
+                  }
                 };
-          
+
           public final com.google.gwt.dev.protobuf.Descriptors.EnumValueDescriptor
               getValueDescriptor() {
             return getDescriptor().getValues().get(index);
@@ -6282,10 +12792,9 @@
               getDescriptor() {
             return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.getDescriptor().getEnumTypes().get(0);
           }
-          
-          private static final ResponseType[] VALUES = {
-            CAPABILITY_EXCHANGE, ADD_LOG, ADD_LOG_BRANCH, 
-          };
+
+          private static final ResponseType[] VALUES = values();
+
           public static ResponseType valueOf(
               com.google.gwt.dev.protobuf.Descriptors.EnumValueDescriptor desc) {
             if (desc.getType() != getDescriptor()) {
@@ -6294,269 +12803,212 @@
             }
             return VALUES[desc.getIndex()];
           }
+
           private final int index;
           private final int value;
+
           private ResponseType(int index, int value) {
             this.index = index;
             this.value = value;
           }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
-          }
+
+          // @@protoc_insertion_point(enum_scope:com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.ResponseType)
         }
-        
+
+        public interface CapabilityExchangeOrBuilder
+            extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+
+          // repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;
+          /**
+           * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+           */
+          java.util.List<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability> 
+              getCapabilitiesList();
+          /**
+           * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+           */
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability getCapabilities(int index);
+          /**
+           * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+           */
+          int getCapabilitiesCount();
+          /**
+           * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+           */
+          java.util.List<? extends com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.CapabilityOrBuilder> 
+              getCapabilitiesOrBuilderList();
+          /**
+           * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+           */
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.CapabilityOrBuilder getCapabilitiesOrBuilder(
+              int index);
+        }
+        /**
+         * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange}
+         *
+         * <pre>
+         * Response for the capabilities of the ViewerService
+         * </pre>
+         */
         public static final class CapabilityExchange extends
-            com.google.gwt.dev.protobuf.GeneratedMessage {
+            com.google.gwt.dev.protobuf.GeneratedMessage
+            implements CapabilityExchangeOrBuilder {
           // Use CapabilityExchange.newBuilder() to construct.
-          private CapabilityExchange() {}
-          
-          private static final CapabilityExchange defaultInstance = new CapabilityExchange();
+          private CapabilityExchange(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+            super(builder);
+            this.unknownFields = builder.getUnknownFields();
+          }
+          private CapabilityExchange(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+          private static final CapabilityExchange defaultInstance;
           public static CapabilityExchange getDefaultInstance() {
             return defaultInstance;
           }
-          
+
           public CapabilityExchange getDefaultInstanceForType() {
             return defaultInstance;
           }
-          
+
+          private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+          @java.lang.Override
+          public final com.google.gwt.dev.protobuf.UnknownFieldSet
+              getUnknownFields() {
+            return this.unknownFields;
+          }
+          private CapabilityExchange(
+              com.google.gwt.dev.protobuf.CodedInputStream input,
+              com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+            initFields();
+            int mutable_bitField0_ = 0;
+            com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+                com.google.gwt.dev.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 18: {
+                    if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                      capabilities_ = new java.util.ArrayList<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability>();
+                      mutable_bitField0_ |= 0x00000001;
+                    }
+                    capabilities_.add(input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.PARSER, extensionRegistry));
+                    break;
+                  }
+                }
+              }
+            } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+              throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+              throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+                  e.getMessage()).setUnfinishedMessage(this);
+            } finally {
+              if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                capabilities_ = java.util.Collections.unmodifiableList(capabilities_);
+              }
+              this.unknownFields = unknownFields.build();
+              makeExtensionsImmutable();
+            }
+          }
           public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
               getDescriptor() {
             return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_CapabilityExchange_descriptor;
           }
-          
+
           protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
               internalGetFieldAccessorTable() {
-            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_CapabilityExchange_fieldAccessorTable;
+            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_CapabilityExchange_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Builder.class);
           }
-          
+
+          public static com.google.gwt.dev.protobuf.Parser<CapabilityExchange> PARSER =
+              new com.google.gwt.dev.protobuf.AbstractParser<CapabilityExchange>() {
+            public CapabilityExchange parsePartialFrom(
+                com.google.gwt.dev.protobuf.CodedInputStream input,
+                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              return new CapabilityExchange(input, extensionRegistry);
+            }
+          };
+
+          @java.lang.Override
+          public com.google.gwt.dev.protobuf.Parser<CapabilityExchange> getParserForType() {
+            return PARSER;
+          }
+
+          public interface CapabilityOrBuilder
+              extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+
+            // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.RequestType capability = 1;
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.RequestType capability = 1;</code>
+             */
+            boolean hasCapability();
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.RequestType capability = 1;</code>
+             */
+            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType getCapability();
+          }
+          /**
+           * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability}
+           */
           public static final class Capability extends
-              com.google.gwt.dev.protobuf.GeneratedMessage {
+              com.google.gwt.dev.protobuf.GeneratedMessage
+              implements CapabilityOrBuilder {
             // Use Capability.newBuilder() to construct.
-            private Capability() {}
-            
-            private static final Capability defaultInstance = new Capability();
+            private Capability(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+              super(builder);
+              this.unknownFields = builder.getUnknownFields();
+            }
+            private Capability(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+            private static final Capability defaultInstance;
             public static Capability getDefaultInstance() {
               return defaultInstance;
             }
-            
+
             public Capability getDefaultInstanceForType() {
               return defaultInstance;
             }
-            
-            public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
-                getDescriptor() {
-              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_CapabilityExchange_Capability_descriptor;
+
+            private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+            @java.lang.Override
+            public final com.google.gwt.dev.protobuf.UnknownFieldSet
+                getUnknownFields() {
+              return this.unknownFields;
             }
-            
-            protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
-                internalGetFieldAccessorTable() {
-              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_CapabilityExchange_Capability_fieldAccessorTable;
-            }
-            
-            // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.RequestType capability = 1;
-            public static final int CAPABILITY_FIELD_NUMBER = 1;
-            private boolean hasCapability;
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType capability_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType.CAPABILITY_EXCHANGE;
-            public boolean hasCapability() { return hasCapability; }
-            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType getCapability() { return capability_; }
-            
-            public final boolean isInitialized() {
-              return true;
-            }
-            
-            public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
-                                throws java.io.IOException {
-              if (hasCapability()) {
-                output.writeEnum(1, getCapability().getNumber());
-              }
-              getUnknownFields().writeTo(output);
-            }
-            
-            private int memoizedSerializedSize = -1;
-            public int getSerializedSize() {
-              int size = memoizedSerializedSize;
-              if (size != -1) return size;
-            
-              size = 0;
-              if (hasCapability()) {
-                size += com.google.gwt.dev.protobuf.CodedOutputStream
-                  .computeEnumSize(1, getCapability().getNumber());
-              }
-              size += getUnknownFields().getSerializedSize();
-              memoizedSerializedSize = size;
-              return size;
-            }
-            
-            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability parseFrom(
-                com.google.gwt.dev.protobuf.ByteString data)
-                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              return newBuilder().mergeFrom(data).buildParsed();
-            }
-            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability parseFrom(
-                com.google.gwt.dev.protobuf.ByteString data,
-                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
-                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              return newBuilder().mergeFrom(data, extensionRegistry)
-                       .buildParsed();
-            }
-            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability parseFrom(byte[] data)
-                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              return newBuilder().mergeFrom(data).buildParsed();
-            }
-            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability parseFrom(
-                byte[] data,
-                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
-                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              return newBuilder().mergeFrom(data, extensionRegistry)
-                       .buildParsed();
-            }
-            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability parseFrom(java.io.InputStream input)
-                throws java.io.IOException {
-              return newBuilder().mergeFrom(input).buildParsed();
-            }
-            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability parseFrom(
-                java.io.InputStream input,
-                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
-                throws java.io.IOException {
-              return newBuilder().mergeFrom(input, extensionRegistry)
-                       .buildParsed();
-            }
-            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability parseDelimitedFrom(java.io.InputStream input)
-                throws java.io.IOException {
-              return newBuilder().mergeDelimitedFrom(input).buildParsed();
-            }
-            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability parseDelimitedFrom(
-                java.io.InputStream input,
-                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
-                throws java.io.IOException {
-              return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                       .buildParsed();
-            }
-            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability parseFrom(
-                com.google.gwt.dev.protobuf.CodedInputStream input)
-                throws java.io.IOException {
-              return newBuilder().mergeFrom(input).buildParsed();
-            }
-            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability parseFrom(
+            private Capability(
                 com.google.gwt.dev.protobuf.CodedInputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
-                throws java.io.IOException {
-              return newBuilder().mergeFrom(input, extensionRegistry)
-                       .buildParsed();
-            }
-            
-            public static Builder newBuilder() { return Builder.create(); }
-            public Builder newBuilderForType() { return newBuilder(); }
-            public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability prototype) {
-              return newBuilder().mergeFrom(prototype);
-            }
-            public Builder toBuilder() { return newBuilder(this); }
-            
-            public static final class Builder extends
-                com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-              private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability result;
-              
-              // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.newBuilder()
-              private Builder() {}
-              
-              private static Builder create() {
-                Builder builder = new Builder();
-                builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability();
-                return builder;
-              }
-              
-              protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability internalGetResult() {
-                return result;
-              }
-              
-              public Builder clear() {
-                if (result == null) {
-                  throw new IllegalStateException(
-                    "Cannot call clear() after build().");
-                }
-                result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability();
-                return this;
-              }
-              
-              public Builder clone() {
-                return create().mergeFrom(result);
-              }
-              
-              public com.google.gwt.dev.protobuf.Descriptors.Descriptor
-                  getDescriptorForType() {
-                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.getDescriptor();
-              }
-              
-              public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability getDefaultInstanceForType() {
-                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.getDefaultInstance();
-              }
-              
-              public boolean isInitialized() {
-                return result.isInitialized();
-              }
-              public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability build() {
-                if (result != null && !isInitialized()) {
-                  throw newUninitializedMessageException(result);
-                }
-                return buildPartial();
-              }
-              
-              private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability buildParsed()
-                  throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-                if (!isInitialized()) {
-                  throw newUninitializedMessageException(
-                    result).asInvalidProtocolBufferException();
-                }
-                return buildPartial();
-              }
-              
-              public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability buildPartial() {
-                if (result == null) {
-                  throw new IllegalStateException(
-                    "build() has already been called on this Builder.");
-                }
-                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability returnMe = result;
-                result = null;
-                return returnMe;
-              }
-              
-              public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
-                if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability) {
-                  return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability)other);
-                } else {
-                  super.mergeFrom(other);
-                  return this;
-                }
-              }
-              
-              public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability other) {
-                if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.getDefaultInstance()) return this;
-                if (other.hasCapability()) {
-                  setCapability(other.getCapability());
-                }
-                this.mergeUnknownFields(other.getUnknownFields());
-                return this;
-              }
-              
-              public Builder mergeFrom(
-                  com.google.gwt.dev.protobuf.CodedInputStream input,
-                  com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
-                  throws java.io.IOException {
-                com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-                  com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-                    this.getUnknownFields());
-                while (true) {
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              initFields();
+              int mutable_bitField0_ = 0;
+              com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+                  com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder();
+              try {
+                boolean done = false;
+                while (!done) {
                   int tag = input.readTag();
                   switch (tag) {
                     case 0:
-                      this.setUnknownFields(unknownFields.build());
-                      return this;
+                      done = true;
+                      break;
                     default: {
                       if (!parseUnknownField(input, unknownFields,
                                              extensionRegistry, tag)) {
-                        this.setUnknownFields(unknownFields.build());
-                        return this;
+                        done = true;
                       }
                       break;
                     }
@@ -6566,222 +13018,575 @@
                       if (value == null) {
                         unknownFields.mergeVarintField(1, rawValue);
                       } else {
-                        setCapability(value);
+                        bitField0_ |= 0x00000001;
+                        capability_ = value;
                       }
                       break;
                     }
                   }
                 }
+              } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+              } catch (java.io.IOException e) {
+                throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+                    e.getMessage()).setUnfinishedMessage(this);
+              } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
               }
-              
-              
+            }
+            public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+                getDescriptor() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_CapabilityExchange_Capability_descriptor;
+            }
+
+            protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+                internalGetFieldAccessorTable() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_CapabilityExchange_Capability_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.Builder.class);
+            }
+
+            public static com.google.gwt.dev.protobuf.Parser<Capability> PARSER =
+                new com.google.gwt.dev.protobuf.AbstractParser<Capability>() {
+              public Capability parsePartialFrom(
+                  com.google.gwt.dev.protobuf.CodedInputStream input,
+                  com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                  throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+                return new Capability(input, extensionRegistry);
+              }
+            };
+
+            @java.lang.Override
+            public com.google.gwt.dev.protobuf.Parser<Capability> getParserForType() {
+              return PARSER;
+            }
+
+            private int bitField0_;
+            // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.RequestType capability = 1;
+            public static final int CAPABILITY_FIELD_NUMBER = 1;
+            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType capability_;
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.RequestType capability = 1;</code>
+             */
+            public boolean hasCapability() {
+              return ((bitField0_ & 0x00000001) == 0x00000001);
+            }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.RequestType capability = 1;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType getCapability() {
+              return capability_;
+            }
+
+            private void initFields() {
+              capability_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType.CAPABILITY_EXCHANGE;
+            }
+            private byte memoizedIsInitialized = -1;
+            public final boolean isInitialized() {
+              byte isInitialized = memoizedIsInitialized;
+              if (isInitialized != -1) return isInitialized == 1;
+
+              memoizedIsInitialized = 1;
+              return true;
+            }
+
+            public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
+                                throws java.io.IOException {
+              getSerializedSize();
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                output.writeEnum(1, capability_.getNumber());
+              }
+              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.gwt.dev.protobuf.CodedOutputStream
+                  .computeEnumSize(1, capability_.getNumber());
+              }
+              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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability parseFrom(
+                com.google.gwt.dev.protobuf.ByteString data)
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              return PARSER.parseFrom(data);
+            }
+            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability parseFrom(
+                com.google.gwt.dev.protobuf.ByteString data,
+                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              return PARSER.parseFrom(data, extensionRegistry);
+            }
+            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability parseFrom(byte[] data)
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              return PARSER.parseFrom(data);
+            }
+            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability parseFrom(
+                byte[] data,
+                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              return PARSER.parseFrom(data, extensionRegistry);
+            }
+            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability parseFrom(java.io.InputStream input)
+                throws java.io.IOException {
+              return PARSER.parseFrom(input);
+            }
+            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability parseFrom(
+                java.io.InputStream input,
+                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws java.io.IOException {
+              return PARSER.parseFrom(input, extensionRegistry);
+            }
+            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability parseDelimitedFrom(java.io.InputStream input)
+                throws java.io.IOException {
+              return PARSER.parseDelimitedFrom(input);
+            }
+            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability parseDelimitedFrom(
+                java.io.InputStream input,
+                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws java.io.IOException {
+              return PARSER.parseDelimitedFrom(input, extensionRegistry);
+            }
+            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability parseFrom(
+                com.google.gwt.dev.protobuf.CodedInputStream input)
+                throws java.io.IOException {
+              return PARSER.parseFrom(input);
+            }
+            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability parseFrom(
+                com.google.gwt.dev.protobuf.CodedInputStream input,
+                com.google.gwt.dev.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(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability prototype) {
+              return newBuilder().mergeFrom(prototype);
+            }
+            public Builder toBuilder() { return newBuilder(this); }
+
+            @java.lang.Override
+            protected Builder newBuilderForType(
+                com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+              Builder builder = new Builder(parent);
+              return builder;
+            }
+            /**
+             * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability}
+             */
+            public static final class Builder extends
+                com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+               implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.CapabilityOrBuilder {
+              public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+                  getDescriptor() {
+                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_CapabilityExchange_Capability_descriptor;
+              }
+
+              protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+                  internalGetFieldAccessorTable() {
+                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_CapabilityExchange_Capability_fieldAccessorTable
+                    .ensureFieldAccessorsInitialized(
+                        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.Builder.class);
+              }
+
+              // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.newBuilder()
+              private Builder() {
+                maybeForceBuilderInitialization();
+              }
+
+              private Builder(
+                  com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+                super(parent);
+                maybeForceBuilderInitialization();
+              }
+              private void maybeForceBuilderInitialization() {
+                if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+                }
+              }
+              private static Builder create() {
+                return new Builder();
+              }
+
+              public Builder clear() {
+                super.clear();
+                capability_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType.CAPABILITY_EXCHANGE;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+              }
+
+              public Builder clone() {
+                return create().mergeFrom(buildPartial());
+              }
+
+              public com.google.gwt.dev.protobuf.Descriptors.Descriptor
+                  getDescriptorForType() {
+                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_CapabilityExchange_Capability_descriptor;
+              }
+
+              public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability getDefaultInstanceForType() {
+                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.getDefaultInstance();
+              }
+
+              public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability build() {
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability result = buildPartial();
+                if (!result.isInitialized()) {
+                  throw newUninitializedMessageException(result);
+                }
+                return result;
+              }
+
+              public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability buildPartial() {
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability(this);
+                int from_bitField0_ = bitField0_;
+                int to_bitField0_ = 0;
+                if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+                  to_bitField0_ |= 0x00000001;
+                }
+                result.capability_ = capability_;
+                result.bitField0_ = to_bitField0_;
+                onBuilt();
+                return result;
+              }
+
+              public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
+                if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability) {
+                  return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability)other);
+                } else {
+                  super.mergeFrom(other);
+                  return this;
+                }
+              }
+
+              public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability other) {
+                if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.getDefaultInstance()) return this;
+                if (other.hasCapability()) {
+                  setCapability(other.getCapability());
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                return this;
+              }
+
+              public final boolean isInitialized() {
+                return true;
+              }
+
+              public Builder mergeFrom(
+                  com.google.gwt.dev.protobuf.CodedInputStream input,
+                  com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                  throws java.io.IOException {
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability parsedMessage = null;
+                try {
+                  parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+                  parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability) e.getUnfinishedMessage();
+                  throw e;
+                } finally {
+                  if (parsedMessage != null) {
+                    mergeFrom(parsedMessage);
+                  }
+                }
+                return this;
+              }
+              private int bitField0_;
+
               // optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.RequestType capability = 1;
+              private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType capability_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType.CAPABILITY_EXCHANGE;
+              /**
+               * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.RequestType capability = 1;</code>
+               */
               public boolean hasCapability() {
-                return result.hasCapability();
+                return ((bitField0_ & 0x00000001) == 0x00000001);
               }
+              /**
+               * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.RequestType capability = 1;</code>
+               */
               public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType getCapability() {
-                return result.getCapability();
+                return capability_;
               }
+              /**
+               * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.RequestType capability = 1;</code>
+               */
               public Builder setCapability(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType value) {
                 if (value == null) {
                   throw new NullPointerException();
                 }
-                result.hasCapability = true;
-                result.capability_ = value;
+                bitField0_ |= 0x00000001;
+                capability_ = value;
+                onChanged();
                 return this;
               }
+              /**
+               * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.ViewerRequest.RequestType capability = 1;</code>
+               */
               public Builder clearCapability() {
-                result.hasCapability = false;
-                result.capability_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType.CAPABILITY_EXCHANGE;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                capability_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.RequestType.CAPABILITY_EXCHANGE;
+                onChanged();
                 return this;
               }
+
+              // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability)
             }
-            
+
             static {
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
+              defaultInstance = new Capability(true);
+              defaultInstance.initFields();
             }
-            
-            static {
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-            }
+
+            // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability)
           }
-          
+
           // repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;
           public static final int CAPABILITIES_FIELD_NUMBER = 2;
-          private java.util.List<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability> capabilities_ =
-            java.util.Collections.emptyList();
+          private java.util.List<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability> capabilities_;
+          /**
+           * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+           */
           public java.util.List<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability> getCapabilitiesList() {
             return capabilities_;
           }
-          public int getCapabilitiesCount() { return capabilities_.size(); }
+          /**
+           * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+           */
+          public java.util.List<? extends com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.CapabilityOrBuilder> 
+              getCapabilitiesOrBuilderList() {
+            return capabilities_;
+          }
+          /**
+           * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+           */
+          public int getCapabilitiesCount() {
+            return capabilities_.size();
+          }
+          /**
+           * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+           */
           public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability getCapabilities(int index) {
             return capabilities_.get(index);
           }
-          
+          /**
+           * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.CapabilityOrBuilder getCapabilitiesOrBuilder(
+              int index) {
+            return capabilities_.get(index);
+          }
+
+          private void initFields() {
+            capabilities_ = java.util.Collections.emptyList();
+          }
+          private byte memoizedIsInitialized = -1;
           public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized != -1) return isInitialized == 1;
+
+            memoizedIsInitialized = 1;
             return true;
           }
-          
+
           public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
                               throws java.io.IOException {
-            for (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability element : getCapabilitiesList()) {
-              output.writeMessage(2, element);
+            getSerializedSize();
+            for (int i = 0; i < capabilities_.size(); i++) {
+              output.writeMessage(2, capabilities_.get(i));
             }
             getUnknownFields().writeTo(output);
           }
-          
+
           private int memoizedSerializedSize = -1;
           public int getSerializedSize() {
             int size = memoizedSerializedSize;
             if (size != -1) return size;
-          
+
             size = 0;
-            for (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability element : getCapabilitiesList()) {
+            for (int i = 0; i < capabilities_.size(); i++) {
               size += com.google.gwt.dev.protobuf.CodedOutputStream
-                .computeMessageSize(2, element);
+                .computeMessageSize(2, capabilities_.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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange parseFrom(
               com.google.gwt.dev.protobuf.ByteString data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange parseFrom(
               com.google.gwt.dev.protobuf.ByteString data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange parseFrom(byte[] data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange parseFrom(
               byte[] data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange parseFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange parseFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange parseDelimitedFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input).buildParsed();
+            return PARSER.parseDelimitedFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange parseDelimitedFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseDelimitedFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
-          
+
           public static Builder newBuilder() { return Builder.create(); }
           public Builder newBuilderForType() { return newBuilder(); }
           public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange prototype) {
             return newBuilder().mergeFrom(prototype);
           }
           public Builder toBuilder() { return newBuilder(this); }
-          
+
+          @java.lang.Override
+          protected Builder newBuilderForType(
+              com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+          }
+          /**
+           * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange}
+           *
+           * <pre>
+           * Response for the capabilities of the ViewerService
+           * </pre>
+           */
           public static final class Builder extends
-              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange result;
-            
+              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+             implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchangeOrBuilder {
+            public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+                getDescriptor() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_CapabilityExchange_descriptor;
+            }
+
+            protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+                internalGetFieldAccessorTable() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_CapabilityExchange_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Builder.class);
+            }
+
             // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.newBuilder()
-            private Builder() {}
-            
-            private static Builder create() {
-              Builder builder = new Builder();
-              builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange();
-              return builder;
+            private Builder() {
+              maybeForceBuilderInitialization();
             }
-            
-            protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange internalGetResult() {
-              return result;
+
+            private Builder(
+                com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+              super(parent);
+              maybeForceBuilderInitialization();
             }
-            
-            public Builder clear() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "Cannot call clear() after build().");
+            private void maybeForceBuilderInitialization() {
+              if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+                getCapabilitiesFieldBuilder();
               }
-              result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange();
+            }
+            private static Builder create() {
+              return new Builder();
+            }
+
+            public Builder clear() {
+              super.clear();
+              if (capabilitiesBuilder_ == null) {
+                capabilities_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000001);
+              } else {
+                capabilitiesBuilder_.clear();
+              }
               return this;
             }
-            
+
             public Builder clone() {
-              return create().mergeFrom(result);
+              return create().mergeFrom(buildPartial());
             }
-            
+
             public com.google.gwt.dev.protobuf.Descriptors.Descriptor
                 getDescriptorForType() {
-              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.getDescriptor();
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_CapabilityExchange_descriptor;
             }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange getDefaultInstanceForType() {
               return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.getDefaultInstance();
             }
-            
-            public boolean isInitialized() {
-              return result.isInitialized();
-            }
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange build() {
-              if (result != null && !isInitialized()) {
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange result = buildPartial();
+              if (!result.isInitialized()) {
                 throw newUninitializedMessageException(result);
               }
-              return buildPartial();
+              return result;
             }
-            
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange buildParsed()
-                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              if (!isInitialized()) {
-                throw newUninitializedMessageException(
-                  result).asInvalidProtocolBufferException();
-              }
-              return buildPartial();
-            }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange buildPartial() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "build() has already been called on this Builder.");
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange(this);
+              int from_bitField0_ = bitField0_;
+              if (capabilitiesBuilder_ == null) {
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  capabilities_ = java.util.Collections.unmodifiableList(capabilities_);
+                  bitField0_ = (bitField0_ & ~0x00000001);
+                }
+                result.capabilities_ = capabilities_;
+              } else {
+                result.capabilities_ = capabilitiesBuilder_.build();
               }
-              if (result.capabilities_ != java.util.Collections.EMPTY_LIST) {
-                result.capabilities_ =
-                  java.util.Collections.unmodifiableList(result.capabilities_);
-              }
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange returnMe = result;
-              result = null;
-              return returnMe;
+              onBuilt();
+              return result;
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
               if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange) {
                 return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange)other);
@@ -6790,304 +13595,636 @@
                 return this;
               }
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange other) {
               if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.getDefaultInstance()) return this;
-              if (!other.capabilities_.isEmpty()) {
-                if (result.capabilities_.isEmpty()) {
-                  result.capabilities_ = new java.util.ArrayList<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability>();
+              if (capabilitiesBuilder_ == null) {
+                if (!other.capabilities_.isEmpty()) {
+                  if (capabilities_.isEmpty()) {
+                    capabilities_ = other.capabilities_;
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                  } else {
+                    ensureCapabilitiesIsMutable();
+                    capabilities_.addAll(other.capabilities_);
+                  }
+                  onChanged();
                 }
-                result.capabilities_.addAll(other.capabilities_);
+              } else {
+                if (!other.capabilities_.isEmpty()) {
+                  if (capabilitiesBuilder_.isEmpty()) {
+                    capabilitiesBuilder_.dispose();
+                    capabilitiesBuilder_ = null;
+                    capabilities_ = other.capabilities_;
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    capabilitiesBuilder_ = 
+                      com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                         getCapabilitiesFieldBuilder() : null;
+                  } else {
+                    capabilitiesBuilder_.addAllMessages(other.capabilities_);
+                  }
+                }
               }
               this.mergeUnknownFields(other.getUnknownFields());
               return this;
             }
-            
+
+            public final boolean isInitialized() {
+              return true;
+            }
+
             public Builder mergeFrom(
                 com.google.gwt.dev.protobuf.CodedInputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws java.io.IOException {
-              com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-                com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-                  this.getUnknownFields());
-              while (true) {
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange parsedMessage = null;
+              try {
+                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+              } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+                parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange) e.getUnfinishedMessage();
+                throw e;
+              } finally {
+                if (parsedMessage != null) {
+                  mergeFrom(parsedMessage);
+                }
+              }
+              return this;
+            }
+            private int bitField0_;
+
+            // repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;
+            private java.util.List<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability> capabilities_ =
+              java.util.Collections.emptyList();
+            private void ensureCapabilitiesIsMutable() {
+              if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+                capabilities_ = new java.util.ArrayList<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability>(capabilities_);
+                bitField0_ |= 0x00000001;
+               }
+            }
+
+            private com.google.gwt.dev.protobuf.RepeatedFieldBuilder<
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.CapabilityOrBuilder> capabilitiesBuilder_;
+
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public java.util.List<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability> getCapabilitiesList() {
+              if (capabilitiesBuilder_ == null) {
+                return java.util.Collections.unmodifiableList(capabilities_);
+              } else {
+                return capabilitiesBuilder_.getMessageList();
+              }
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public int getCapabilitiesCount() {
+              if (capabilitiesBuilder_ == null) {
+                return capabilities_.size();
+              } else {
+                return capabilitiesBuilder_.getCount();
+              }
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability getCapabilities(int index) {
+              if (capabilitiesBuilder_ == null) {
+                return capabilities_.get(index);
+              } else {
+                return capabilitiesBuilder_.getMessage(index);
+              }
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public Builder setCapabilities(
+                int index, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability value) {
+              if (capabilitiesBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureCapabilitiesIsMutable();
+                capabilities_.set(index, value);
+                onChanged();
+              } else {
+                capabilitiesBuilder_.setMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public Builder setCapabilities(
+                int index, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.Builder builderForValue) {
+              if (capabilitiesBuilder_ == null) {
+                ensureCapabilitiesIsMutable();
+                capabilities_.set(index, builderForValue.build());
+                onChanged();
+              } else {
+                capabilitiesBuilder_.setMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public Builder addCapabilities(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability value) {
+              if (capabilitiesBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureCapabilitiesIsMutable();
+                capabilities_.add(value);
+                onChanged();
+              } else {
+                capabilitiesBuilder_.addMessage(value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public Builder addCapabilities(
+                int index, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability value) {
+              if (capabilitiesBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureCapabilitiesIsMutable();
+                capabilities_.add(index, value);
+                onChanged();
+              } else {
+                capabilitiesBuilder_.addMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public Builder addCapabilities(
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.Builder builderForValue) {
+              if (capabilitiesBuilder_ == null) {
+                ensureCapabilitiesIsMutable();
+                capabilities_.add(builderForValue.build());
+                onChanged();
+              } else {
+                capabilitiesBuilder_.addMessage(builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public Builder addCapabilities(
+                int index, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.Builder builderForValue) {
+              if (capabilitiesBuilder_ == null) {
+                ensureCapabilitiesIsMutable();
+                capabilities_.add(index, builderForValue.build());
+                onChanged();
+              } else {
+                capabilitiesBuilder_.addMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public Builder addAllCapabilities(
+                java.lang.Iterable<? extends com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability> values) {
+              if (capabilitiesBuilder_ == null) {
+                ensureCapabilitiesIsMutable();
+                super.addAll(values, capabilities_);
+                onChanged();
+              } else {
+                capabilitiesBuilder_.addAllMessages(values);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public Builder clearCapabilities() {
+              if (capabilitiesBuilder_ == null) {
+                capabilities_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000001);
+                onChanged();
+              } else {
+                capabilitiesBuilder_.clear();
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public Builder removeCapabilities(int index) {
+              if (capabilitiesBuilder_ == null) {
+                ensureCapabilitiesIsMutable();
+                capabilities_.remove(index);
+                onChanged();
+              } else {
+                capabilitiesBuilder_.remove(index);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.Builder getCapabilitiesBuilder(
+                int index) {
+              return getCapabilitiesFieldBuilder().getBuilder(index);
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.CapabilityOrBuilder getCapabilitiesOrBuilder(
+                int index) {
+              if (capabilitiesBuilder_ == null) {
+                return capabilities_.get(index);  } else {
+                return capabilitiesBuilder_.getMessageOrBuilder(index);
+              }
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public java.util.List<? extends com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.CapabilityOrBuilder> 
+                 getCapabilitiesOrBuilderList() {
+              if (capabilitiesBuilder_ != null) {
+                return capabilitiesBuilder_.getMessageOrBuilderList();
+              } else {
+                return java.util.Collections.unmodifiableList(capabilities_);
+              }
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.Builder addCapabilitiesBuilder() {
+              return getCapabilitiesFieldBuilder().addBuilder(
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.Builder addCapabilitiesBuilder(
+                int index) {
+              return getCapabilitiesFieldBuilder().addBuilder(
+                  index, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public java.util.List<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.Builder> 
+                 getCapabilitiesBuilderList() {
+              return getCapabilitiesFieldBuilder().getBuilderList();
+            }
+            private com.google.gwt.dev.protobuf.RepeatedFieldBuilder<
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.CapabilityOrBuilder> 
+                getCapabilitiesFieldBuilder() {
+              if (capabilitiesBuilder_ == null) {
+                capabilitiesBuilder_ = new com.google.gwt.dev.protobuf.RepeatedFieldBuilder<
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.CapabilityOrBuilder>(
+                        capabilities_,
+                        ((bitField0_ & 0x00000001) == 0x00000001),
+                        getParentForChildren(),
+                        isClean());
+                capabilities_ = null;
+              }
+              return capabilitiesBuilder_;
+            }
+
+            // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange)
+          }
+
+          static {
+            defaultInstance = new CapabilityExchange(true);
+            defaultInstance.initFields();
+          }
+
+          // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange)
+        }
+
+        public interface AddLogOrBuilder
+            extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+
+          // required uint32 logHandle = 1;
+          /**
+           * <code>required uint32 logHandle = 1;</code>
+           */
+          boolean hasLogHandle();
+          /**
+           * <code>required uint32 logHandle = 1;</code>
+           */
+          int getLogHandle();
+        }
+        /**
+         * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLog}
+         *
+         * <pre>
+         * Response to an AddLog request
+         * </pre>
+         */
+        public static final class AddLog extends
+            com.google.gwt.dev.protobuf.GeneratedMessage
+            implements AddLogOrBuilder {
+          // Use AddLog.newBuilder() to construct.
+          private AddLog(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+            super(builder);
+            this.unknownFields = builder.getUnknownFields();
+          }
+          private AddLog(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+          private static final AddLog defaultInstance;
+          public static AddLog getDefaultInstance() {
+            return defaultInstance;
+          }
+
+          public AddLog getDefaultInstanceForType() {
+            return defaultInstance;
+          }
+
+          private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+          @java.lang.Override
+          public final com.google.gwt.dev.protobuf.UnknownFieldSet
+              getUnknownFields() {
+            return this.unknownFields;
+          }
+          private AddLog(
+              com.google.gwt.dev.protobuf.CodedInputStream input,
+              com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+            initFields();
+            int mutable_bitField0_ = 0;
+            com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+                com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder();
+            try {
+              boolean done = false;
+              while (!done) {
                 int tag = input.readTag();
                 switch (tag) {
                   case 0:
-                    this.setUnknownFields(unknownFields.build());
-                    return this;
+                    done = true;
+                    break;
                   default: {
                     if (!parseUnknownField(input, unknownFields,
                                            extensionRegistry, tag)) {
-                      this.setUnknownFields(unknownFields.build());
-                      return this;
+                      done = true;
                     }
                     break;
                   }
-                  case 18: {
-                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.newBuilder();
-                    input.readMessage(subBuilder, extensionRegistry);
-                    addCapabilities(subBuilder.buildPartial());
+                  case 8: {
+                    bitField0_ |= 0x00000001;
+                    logHandle_ = input.readUInt32();
                     break;
                   }
                 }
               }
-            }
-            
-            
-            // repeated .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange.Capability capabilities = 2;
-            public java.util.List<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability> getCapabilitiesList() {
-              return java.util.Collections.unmodifiableList(result.capabilities_);
-            }
-            public int getCapabilitiesCount() {
-              return result.getCapabilitiesCount();
-            }
-            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability getCapabilities(int index) {
-              return result.getCapabilities(index);
-            }
-            public Builder setCapabilities(int index, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability value) {
-              if (value == null) {
-                throw new NullPointerException();
-              }
-              result.capabilities_.set(index, value);
-              return this;
-            }
-            public Builder setCapabilities(int index, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.Builder builderForValue) {
-              result.capabilities_.set(index, builderForValue.build());
-              return this;
-            }
-            public Builder addCapabilities(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability value) {
-              if (value == null) {
-                throw new NullPointerException();
-              }
-              if (result.capabilities_.isEmpty()) {
-                result.capabilities_ = new java.util.ArrayList<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability>();
-              }
-              result.capabilities_.add(value);
-              return this;
-            }
-            public Builder addCapabilities(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.Builder builderForValue) {
-              if (result.capabilities_.isEmpty()) {
-                result.capabilities_ = new java.util.ArrayList<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability>();
-              }
-              result.capabilities_.add(builderForValue.build());
-              return this;
-            }
-            public Builder addAllCapabilities(
-                java.lang.Iterable<? extends com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability> values) {
-              if (result.capabilities_.isEmpty()) {
-                result.capabilities_ = new java.util.ArrayList<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability>();
-              }
-              super.addAll(values, result.capabilities_);
-              return this;
-            }
-            public Builder clearCapabilities() {
-              result.capabilities_ = java.util.Collections.emptyList();
-              return this;
+            } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+              throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+              throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+                  e.getMessage()).setUnfinishedMessage(this);
+            } finally {
+              this.unknownFields = unknownFields.build();
+              makeExtensionsImmutable();
             }
           }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
-          }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-          }
-        }
-        
-        public static final class AddLog extends
-            com.google.gwt.dev.protobuf.GeneratedMessage {
-          // Use AddLog.newBuilder() to construct.
-          private AddLog() {}
-          
-          private static final AddLog defaultInstance = new AddLog();
-          public static AddLog getDefaultInstance() {
-            return defaultInstance;
-          }
-          
-          public AddLog getDefaultInstanceForType() {
-            return defaultInstance;
-          }
-          
           public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
               getDescriptor() {
             return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_AddLog_descriptor;
           }
-          
+
           protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
               internalGetFieldAccessorTable() {
-            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_AddLog_fieldAccessorTable;
+            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_AddLog_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.Builder.class);
           }
-          
+
+          public static com.google.gwt.dev.protobuf.Parser<AddLog> PARSER =
+              new com.google.gwt.dev.protobuf.AbstractParser<AddLog>() {
+            public AddLog parsePartialFrom(
+                com.google.gwt.dev.protobuf.CodedInputStream input,
+                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              return new AddLog(input, extensionRegistry);
+            }
+          };
+
+          @java.lang.Override
+          public com.google.gwt.dev.protobuf.Parser<AddLog> getParserForType() {
+            return PARSER;
+          }
+
+          private int bitField0_;
           // required uint32 logHandle = 1;
           public static final int LOGHANDLE_FIELD_NUMBER = 1;
-          private boolean hasLogHandle;
-          private int logHandle_ = 0;
-          public boolean hasLogHandle() { return hasLogHandle; }
-          public int getLogHandle() { return logHandle_; }
-          
+          private int logHandle_;
+          /**
+           * <code>required uint32 logHandle = 1;</code>
+           */
+          public boolean hasLogHandle() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>required uint32 logHandle = 1;</code>
+           */
+          public int getLogHandle() {
+            return logHandle_;
+          }
+
+          private void initFields() {
+            logHandle_ = 0;
+          }
+          private byte memoizedIsInitialized = -1;
           public final boolean isInitialized() {
-            if (!hasLogHandle) return false;
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized != -1) return isInitialized == 1;
+
+            if (!hasLogHandle()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+            memoizedIsInitialized = 1;
             return true;
           }
-          
+
           public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
                               throws java.io.IOException {
-            if (hasLogHandle()) {
-              output.writeUInt32(1, getLogHandle());
+            getSerializedSize();
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              output.writeUInt32(1, logHandle_);
             }
             getUnknownFields().writeTo(output);
           }
-          
+
           private int memoizedSerializedSize = -1;
           public int getSerializedSize() {
             int size = memoizedSerializedSize;
             if (size != -1) return size;
-          
+
             size = 0;
-            if (hasLogHandle()) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
               size += com.google.gwt.dev.protobuf.CodedOutputStream
-                .computeUInt32Size(1, getLogHandle());
+                .computeUInt32Size(1, logHandle_);
             }
             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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog parseFrom(
               com.google.gwt.dev.protobuf.ByteString data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog parseFrom(
               com.google.gwt.dev.protobuf.ByteString data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog parseFrom(byte[] data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog parseFrom(
               byte[] data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog parseFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog parseFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog parseDelimitedFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input).buildParsed();
+            return PARSER.parseDelimitedFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog parseDelimitedFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseDelimitedFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
-          
+
           public static Builder newBuilder() { return Builder.create(); }
           public Builder newBuilderForType() { return newBuilder(); }
           public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog prototype) {
             return newBuilder().mergeFrom(prototype);
           }
           public Builder toBuilder() { return newBuilder(this); }
-          
+
+          @java.lang.Override
+          protected Builder newBuilderForType(
+              com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+          }
+          /**
+           * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLog}
+           *
+           * <pre>
+           * Response to an AddLog request
+           * </pre>
+           */
           public static final class Builder extends
-              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog result;
-            
+              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+             implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogOrBuilder {
+            public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+                getDescriptor() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_AddLog_descriptor;
+            }
+
+            protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+                internalGetFieldAccessorTable() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_AddLog_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.Builder.class);
+            }
+
             // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.newBuilder()
-            private Builder() {}
-            
-            private static Builder create() {
-              Builder builder = new Builder();
-              builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog();
-              return builder;
+            private Builder() {
+              maybeForceBuilderInitialization();
             }
-            
-            protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog internalGetResult() {
-              return result;
+
+            private Builder(
+                com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+              super(parent);
+              maybeForceBuilderInitialization();
             }
-            
-            public Builder clear() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "Cannot call clear() after build().");
+            private void maybeForceBuilderInitialization() {
+              if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
               }
-              result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog();
+            }
+            private static Builder create() {
+              return new Builder();
+            }
+
+            public Builder clear() {
+              super.clear();
+              logHandle_ = 0;
+              bitField0_ = (bitField0_ & ~0x00000001);
               return this;
             }
-            
+
             public Builder clone() {
-              return create().mergeFrom(result);
+              return create().mergeFrom(buildPartial());
             }
-            
+
             public com.google.gwt.dev.protobuf.Descriptors.Descriptor
                 getDescriptorForType() {
-              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.getDescriptor();
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_AddLog_descriptor;
             }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog getDefaultInstanceForType() {
               return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.getDefaultInstance();
             }
-            
-            public boolean isInitialized() {
-              return result.isInitialized();
-            }
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog build() {
-              if (result != null && !isInitialized()) {
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog result = buildPartial();
+              if (!result.isInitialized()) {
                 throw newUninitializedMessageException(result);
               }
-              return buildPartial();
+              return result;
             }
-            
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog buildParsed()
-                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              if (!isInitialized()) {
-                throw newUninitializedMessageException(
-                  result).asInvalidProtocolBufferException();
-              }
-              return buildPartial();
-            }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog buildPartial() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "build() has already been called on this Builder.");
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog(this);
+              int from_bitField0_ = bitField0_;
+              int to_bitField0_ = 0;
+              if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+                to_bitField0_ |= 0x00000001;
               }
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog returnMe = result;
-              result = null;
-              return returnMe;
+              result.logHandle_ = logHandle_;
+              result.bitField0_ = to_bitField0_;
+              onBuilt();
+              return result;
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
               if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog) {
                 return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog)other);
@@ -7096,7 +14233,7 @@
                 return this;
               }
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog other) {
               if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.getDefaultInstance()) return this;
               if (other.hasLogHandle()) {
@@ -7105,257 +14242,401 @@
               this.mergeUnknownFields(other.getUnknownFields());
               return this;
             }
-            
+
+            public final boolean isInitialized() {
+              if (!hasLogHandle()) {
+                
+                return false;
+              }
+              return true;
+            }
+
             public Builder mergeFrom(
                 com.google.gwt.dev.protobuf.CodedInputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws java.io.IOException {
-              com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-                com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-                  this.getUnknownFields());
-              while (true) {
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog parsedMessage = null;
+              try {
+                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+              } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+                parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog) e.getUnfinishedMessage();
+                throw e;
+              } finally {
+                if (parsedMessage != null) {
+                  mergeFrom(parsedMessage);
+                }
+              }
+              return this;
+            }
+            private int bitField0_;
+
+            // required uint32 logHandle = 1;
+            private int logHandle_ ;
+            /**
+             * <code>required uint32 logHandle = 1;</code>
+             */
+            public boolean hasLogHandle() {
+              return ((bitField0_ & 0x00000001) == 0x00000001);
+            }
+            /**
+             * <code>required uint32 logHandle = 1;</code>
+             */
+            public int getLogHandle() {
+              return logHandle_;
+            }
+            /**
+             * <code>required uint32 logHandle = 1;</code>
+             */
+            public Builder setLogHandle(int value) {
+              bitField0_ |= 0x00000001;
+              logHandle_ = value;
+              onChanged();
+              return this;
+            }
+            /**
+             * <code>required uint32 logHandle = 1;</code>
+             */
+            public Builder clearLogHandle() {
+              bitField0_ = (bitField0_ & ~0x00000001);
+              logHandle_ = 0;
+              onChanged();
+              return this;
+            }
+
+            // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLog)
+          }
+
+          static {
+            defaultInstance = new AddLog(true);
+            defaultInstance.initFields();
+          }
+
+          // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLog)
+        }
+
+        public interface AddLogBranchOrBuilder
+            extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+
+          // required uint32 logHandle = 1;
+          /**
+           * <code>required uint32 logHandle = 1;</code>
+           */
+          boolean hasLogHandle();
+          /**
+           * <code>required uint32 logHandle = 1;</code>
+           */
+          int getLogHandle();
+        }
+        /**
+         * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLogBranch}
+         *
+         * <pre>
+         * Response to an AddLogBranch request
+         * </pre>
+         */
+        public static final class AddLogBranch extends
+            com.google.gwt.dev.protobuf.GeneratedMessage
+            implements AddLogBranchOrBuilder {
+          // Use AddLogBranch.newBuilder() to construct.
+          private AddLogBranch(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+            super(builder);
+            this.unknownFields = builder.getUnknownFields();
+          }
+          private AddLogBranch(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+          private static final AddLogBranch defaultInstance;
+          public static AddLogBranch getDefaultInstance() {
+            return defaultInstance;
+          }
+
+          public AddLogBranch getDefaultInstanceForType() {
+            return defaultInstance;
+          }
+
+          private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+          @java.lang.Override
+          public final com.google.gwt.dev.protobuf.UnknownFieldSet
+              getUnknownFields() {
+            return this.unknownFields;
+          }
+          private AddLogBranch(
+              com.google.gwt.dev.protobuf.CodedInputStream input,
+              com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+            initFields();
+            int mutable_bitField0_ = 0;
+            com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+                com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder();
+            try {
+              boolean done = false;
+              while (!done) {
                 int tag = input.readTag();
                 switch (tag) {
                   case 0:
-                    this.setUnknownFields(unknownFields.build());
-                    return this;
+                    done = true;
+                    break;
                   default: {
                     if (!parseUnknownField(input, unknownFields,
                                            extensionRegistry, tag)) {
-                      this.setUnknownFields(unknownFields.build());
-                      return this;
+                      done = true;
                     }
                     break;
                   }
                   case 8: {
-                    setLogHandle(input.readUInt32());
+                    bitField0_ |= 0x00000001;
+                    logHandle_ = input.readUInt32();
                     break;
                   }
                 }
               }
-            }
-            
-            
-            // required uint32 logHandle = 1;
-            public boolean hasLogHandle() {
-              return result.hasLogHandle();
-            }
-            public int getLogHandle() {
-              return result.getLogHandle();
-            }
-            public Builder setLogHandle(int value) {
-              result.hasLogHandle = true;
-              result.logHandle_ = value;
-              return this;
-            }
-            public Builder clearLogHandle() {
-              result.hasLogHandle = false;
-              result.logHandle_ = 0;
-              return this;
+            } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+              throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+              throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+                  e.getMessage()).setUnfinishedMessage(this);
+            } finally {
+              this.unknownFields = unknownFields.build();
+              makeExtensionsImmutable();
             }
           }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
-          }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-          }
-        }
-        
-        public static final class AddLogBranch extends
-            com.google.gwt.dev.protobuf.GeneratedMessage {
-          // Use AddLogBranch.newBuilder() to construct.
-          private AddLogBranch() {}
-          
-          private static final AddLogBranch defaultInstance = new AddLogBranch();
-          public static AddLogBranch getDefaultInstance() {
-            return defaultInstance;
-          }
-          
-          public AddLogBranch getDefaultInstanceForType() {
-            return defaultInstance;
-          }
-          
           public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
               getDescriptor() {
             return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_AddLogBranch_descriptor;
           }
-          
+
           protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
               internalGetFieldAccessorTable() {
-            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_AddLogBranch_fieldAccessorTable;
+            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_AddLogBranch_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.Builder.class);
           }
-          
+
+          public static com.google.gwt.dev.protobuf.Parser<AddLogBranch> PARSER =
+              new com.google.gwt.dev.protobuf.AbstractParser<AddLogBranch>() {
+            public AddLogBranch parsePartialFrom(
+                com.google.gwt.dev.protobuf.CodedInputStream input,
+                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              return new AddLogBranch(input, extensionRegistry);
+            }
+          };
+
+          @java.lang.Override
+          public com.google.gwt.dev.protobuf.Parser<AddLogBranch> getParserForType() {
+            return PARSER;
+          }
+
+          private int bitField0_;
           // required uint32 logHandle = 1;
           public static final int LOGHANDLE_FIELD_NUMBER = 1;
-          private boolean hasLogHandle;
-          private int logHandle_ = 0;
-          public boolean hasLogHandle() { return hasLogHandle; }
-          public int getLogHandle() { return logHandle_; }
-          
+          private int logHandle_;
+          /**
+           * <code>required uint32 logHandle = 1;</code>
+           */
+          public boolean hasLogHandle() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>required uint32 logHandle = 1;</code>
+           */
+          public int getLogHandle() {
+            return logHandle_;
+          }
+
+          private void initFields() {
+            logHandle_ = 0;
+          }
+          private byte memoizedIsInitialized = -1;
           public final boolean isInitialized() {
-            if (!hasLogHandle) return false;
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized != -1) return isInitialized == 1;
+
+            if (!hasLogHandle()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
+            memoizedIsInitialized = 1;
             return true;
           }
-          
+
           public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
                               throws java.io.IOException {
-            if (hasLogHandle()) {
-              output.writeUInt32(1, getLogHandle());
+            getSerializedSize();
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
+              output.writeUInt32(1, logHandle_);
             }
             getUnknownFields().writeTo(output);
           }
-          
+
           private int memoizedSerializedSize = -1;
           public int getSerializedSize() {
             int size = memoizedSerializedSize;
             if (size != -1) return size;
-          
+
             size = 0;
-            if (hasLogHandle()) {
+            if (((bitField0_ & 0x00000001) == 0x00000001)) {
               size += com.google.gwt.dev.protobuf.CodedOutputStream
-                .computeUInt32Size(1, getLogHandle());
+                .computeUInt32Size(1, logHandle_);
             }
             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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch parseFrom(
               com.google.gwt.dev.protobuf.ByteString data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch parseFrom(
               com.google.gwt.dev.protobuf.ByteString data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch parseFrom(byte[] data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch parseFrom(
               byte[] data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch parseFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch parseFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch parseDelimitedFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input).buildParsed();
+            return PARSER.parseDelimitedFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch parseDelimitedFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseDelimitedFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
-          
+
           public static Builder newBuilder() { return Builder.create(); }
           public Builder newBuilderForType() { return newBuilder(); }
           public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch prototype) {
             return newBuilder().mergeFrom(prototype);
           }
           public Builder toBuilder() { return newBuilder(this); }
-          
+
+          @java.lang.Override
+          protected Builder newBuilderForType(
+              com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+          }
+          /**
+           * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLogBranch}
+           *
+           * <pre>
+           * Response to an AddLogBranch request
+           * </pre>
+           */
           public static final class Builder extends
-              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch result;
-            
+              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+             implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranchOrBuilder {
+            public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+                getDescriptor() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_AddLogBranch_descriptor;
+            }
+
+            protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+                internalGetFieldAccessorTable() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_AddLogBranch_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.Builder.class);
+            }
+
             // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.newBuilder()
-            private Builder() {}
-            
-            private static Builder create() {
-              Builder builder = new Builder();
-              builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch();
-              return builder;
+            private Builder() {
+              maybeForceBuilderInitialization();
             }
-            
-            protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch internalGetResult() {
-              return result;
+
+            private Builder(
+                com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+              super(parent);
+              maybeForceBuilderInitialization();
             }
-            
-            public Builder clear() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "Cannot call clear() after build().");
+            private void maybeForceBuilderInitialization() {
+              if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
               }
-              result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch();
+            }
+            private static Builder create() {
+              return new Builder();
+            }
+
+            public Builder clear() {
+              super.clear();
+              logHandle_ = 0;
+              bitField0_ = (bitField0_ & ~0x00000001);
               return this;
             }
-            
+
             public Builder clone() {
-              return create().mergeFrom(result);
+              return create().mergeFrom(buildPartial());
             }
-            
+
             public com.google.gwt.dev.protobuf.Descriptors.Descriptor
                 getDescriptorForType() {
-              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.getDescriptor();
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_AddLogBranch_descriptor;
             }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch getDefaultInstanceForType() {
               return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.getDefaultInstance();
             }
-            
-            public boolean isInitialized() {
-              return result.isInitialized();
-            }
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch build() {
-              if (result != null && !isInitialized()) {
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch result = buildPartial();
+              if (!result.isInitialized()) {
                 throw newUninitializedMessageException(result);
               }
-              return buildPartial();
+              return result;
             }
-            
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch buildParsed()
-                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              if (!isInitialized()) {
-                throw newUninitializedMessageException(
-                  result).asInvalidProtocolBufferException();
-              }
-              return buildPartial();
-            }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch buildPartial() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "build() has already been called on this Builder.");
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch(this);
+              int from_bitField0_ = bitField0_;
+              int to_bitField0_ = 0;
+              if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+                to_bitField0_ |= 0x00000001;
               }
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch returnMe = result;
-              result = null;
-              return returnMe;
+              result.logHandle_ = logHandle_;
+              result.bitField0_ = to_bitField0_;
+              onBuilt();
+              return result;
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
               if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch) {
                 return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch)other);
@@ -7364,7 +14645,7 @@
                 return this;
               }
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch other) {
               if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.getDefaultInstance()) return this;
               if (other.hasLogHandle()) {
@@ -7373,280 +14654,432 @@
               this.mergeUnknownFields(other.getUnknownFields());
               return this;
             }
-            
+
+            public final boolean isInitialized() {
+              if (!hasLogHandle()) {
+                
+                return false;
+              }
+              return true;
+            }
+
             public Builder mergeFrom(
                 com.google.gwt.dev.protobuf.CodedInputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws java.io.IOException {
-              com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-                com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-                  this.getUnknownFields());
-              while (true) {
-                int tag = input.readTag();
-                switch (tag) {
-                  case 0:
-                    this.setUnknownFields(unknownFields.build());
-                    return this;
-                  default: {
-                    if (!parseUnknownField(input, unknownFields,
-                                           extensionRegistry, tag)) {
-                      this.setUnknownFields(unknownFields.build());
-                      return this;
-                    }
-                    break;
-                  }
-                  case 8: {
-                    setLogHandle(input.readUInt32());
-                    break;
-                  }
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch parsedMessage = null;
+              try {
+                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+              } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+                parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch) e.getUnfinishedMessage();
+                throw e;
+              } finally {
+                if (parsedMessage != null) {
+                  mergeFrom(parsedMessage);
                 }
               }
+              return this;
             }
-            
-            
+            private int bitField0_;
+
             // required uint32 logHandle = 1;
+            private int logHandle_ ;
+            /**
+             * <code>required uint32 logHandle = 1;</code>
+             */
             public boolean hasLogHandle() {
-              return result.hasLogHandle();
+              return ((bitField0_ & 0x00000001) == 0x00000001);
             }
+            /**
+             * <code>required uint32 logHandle = 1;</code>
+             */
             public int getLogHandle() {
-              return result.getLogHandle();
+              return logHandle_;
             }
+            /**
+             * <code>required uint32 logHandle = 1;</code>
+             */
             public Builder setLogHandle(int value) {
-              result.hasLogHandle = true;
-              result.logHandle_ = value;
+              bitField0_ |= 0x00000001;
+              logHandle_ = value;
+              onChanged();
               return this;
             }
+            /**
+             * <code>required uint32 logHandle = 1;</code>
+             */
             public Builder clearLogHandle() {
-              result.hasLogHandle = false;
-              result.logHandle_ = 0;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              logHandle_ = 0;
+              onChanged();
               return this;
             }
+
+            // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLogBranch)
           }
-          
+
           static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
+            defaultInstance = new AddLogBranch(true);
+            defaultInstance.initFields();
           }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-          }
+
+          // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLogBranch)
         }
-        
+
+        private int bitField0_;
         // optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.ResponseType responseType = 1;
         public static final int RESPONSETYPE_FIELD_NUMBER = 1;
-        private boolean hasResponseType;
-        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.ResponseType responseType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.ResponseType.CAPABILITY_EXCHANGE;
-        public boolean hasResponseType() { return hasResponseType; }
-        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.ResponseType getResponseType() { return responseType_; }
-        
+        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.ResponseType responseType_;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.ResponseType responseType = 1;</code>
+         */
+        public boolean hasResponseType() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.ResponseType responseType = 1;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.ResponseType getResponseType() {
+          return responseType_;
+        }
+
         // optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange capabilityExchange = 2;
         public static final int CAPABILITYEXCHANGE_FIELD_NUMBER = 2;
-        private boolean hasCapabilityExchange;
-        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange capabilityExchange_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.getDefaultInstance();
-        public boolean hasCapabilityExchange() { return hasCapabilityExchange; }
-        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange getCapabilityExchange() { return capabilityExchange_; }
-        
+        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange capabilityExchange_;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange capabilityExchange = 2;</code>
+         */
+        public boolean hasCapabilityExchange() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange capabilityExchange = 2;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange getCapabilityExchange() {
+          return capabilityExchange_;
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange capabilityExchange = 2;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchangeOrBuilder getCapabilityExchangeOrBuilder() {
+          return capabilityExchange_;
+        }
+
         // optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLog addLog = 3;
         public static final int ADDLOG_FIELD_NUMBER = 3;
-        private boolean hasAddLog;
-        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog addLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.getDefaultInstance();
-        public boolean hasAddLog() { return hasAddLog; }
-        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog getAddLog() { return addLog_; }
-        
+        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog addLog_;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLog addLog = 3;</code>
+         */
+        public boolean hasAddLog() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLog addLog = 3;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog getAddLog() {
+          return addLog_;
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLog addLog = 3;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogOrBuilder getAddLogOrBuilder() {
+          return addLog_;
+        }
+
         // optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLogBranch addLogBranch = 4;
         public static final int ADDLOGBRANCH_FIELD_NUMBER = 4;
-        private boolean hasAddLogBranch;
-        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch addLogBranch_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.getDefaultInstance();
-        public boolean hasAddLogBranch() { return hasAddLogBranch; }
-        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch getAddLogBranch() { return addLogBranch_; }
-        
+        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch addLogBranch_;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLogBranch addLogBranch = 4;</code>
+         */
+        public boolean hasAddLogBranch() {
+          return ((bitField0_ & 0x00000008) == 0x00000008);
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLogBranch addLogBranch = 4;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch getAddLogBranch() {
+          return addLogBranch_;
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLogBranch addLogBranch = 4;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranchOrBuilder getAddLogBranchOrBuilder() {
+          return addLogBranch_;
+        }
+
+        private void initFields() {
+          responseType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.ResponseType.CAPABILITY_EXCHANGE;
+          capabilityExchange_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.getDefaultInstance();
+          addLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.getDefaultInstance();
+          addLogBranch_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.getDefaultInstance();
+        }
+        private byte memoizedIsInitialized = -1;
         public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
           if (hasAddLog()) {
-            if (!getAddLog().isInitialized()) return false;
+            if (!getAddLog().isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
           }
           if (hasAddLogBranch()) {
-            if (!getAddLogBranch().isInitialized()) return false;
+            if (!getAddLogBranch().isInitialized()) {
+              memoizedIsInitialized = 0;
+              return false;
+            }
           }
+          memoizedIsInitialized = 1;
           return true;
         }
-        
+
         public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
                             throws java.io.IOException {
-          if (hasResponseType()) {
-            output.writeEnum(1, getResponseType().getNumber());
+          getSerializedSize();
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            output.writeEnum(1, responseType_.getNumber());
           }
-          if (hasCapabilityExchange()) {
-            output.writeMessage(2, getCapabilityExchange());
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            output.writeMessage(2, capabilityExchange_);
           }
-          if (hasAddLog()) {
-            output.writeMessage(3, getAddLog());
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+            output.writeMessage(3, addLog_);
           }
-          if (hasAddLogBranch()) {
-            output.writeMessage(4, getAddLogBranch());
+          if (((bitField0_ & 0x00000008) == 0x00000008)) {
+            output.writeMessage(4, addLogBranch_);
           }
           getUnknownFields().writeTo(output);
         }
-        
+
         private int memoizedSerializedSize = -1;
         public int getSerializedSize() {
           int size = memoizedSerializedSize;
           if (size != -1) return size;
-        
+
           size = 0;
-          if (hasResponseType()) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
             size += com.google.gwt.dev.protobuf.CodedOutputStream
-              .computeEnumSize(1, getResponseType().getNumber());
+              .computeEnumSize(1, responseType_.getNumber());
           }
-          if (hasCapabilityExchange()) {
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
             size += com.google.gwt.dev.protobuf.CodedOutputStream
-              .computeMessageSize(2, getCapabilityExchange());
+              .computeMessageSize(2, capabilityExchange_);
           }
-          if (hasAddLog()) {
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
             size += com.google.gwt.dev.protobuf.CodedOutputStream
-              .computeMessageSize(3, getAddLog());
+              .computeMessageSize(3, addLog_);
           }
-          if (hasAddLogBranch()) {
+          if (((bitField0_ & 0x00000008) == 0x00000008)) {
             size += com.google.gwt.dev.protobuf.CodedOutputStream
-              .computeMessageSize(4, getAddLogBranch());
+              .computeMessageSize(4, addLogBranch_);
           }
           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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse parseFrom(
             com.google.gwt.dev.protobuf.ByteString data)
             throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-          return newBuilder().mergeFrom(data).buildParsed();
+          return PARSER.parseFrom(data);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse parseFrom(
             com.google.gwt.dev.protobuf.ByteString data,
             com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
             throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-          return newBuilder().mergeFrom(data, extensionRegistry)
-                   .buildParsed();
+          return PARSER.parseFrom(data, extensionRegistry);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse parseFrom(byte[] data)
             throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-          return newBuilder().mergeFrom(data).buildParsed();
+          return PARSER.parseFrom(data);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse parseFrom(
             byte[] data,
             com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
             throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-          return newBuilder().mergeFrom(data, extensionRegistry)
-                   .buildParsed();
+          return PARSER.parseFrom(data, extensionRegistry);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse parseFrom(java.io.InputStream input)
             throws java.io.IOException {
-          return newBuilder().mergeFrom(input).buildParsed();
+          return PARSER.parseFrom(input);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse parseFrom(
             java.io.InputStream input,
             com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
             throws java.io.IOException {
-          return newBuilder().mergeFrom(input, extensionRegistry)
-                   .buildParsed();
+          return PARSER.parseFrom(input, extensionRegistry);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse parseDelimitedFrom(java.io.InputStream input)
             throws java.io.IOException {
-          return newBuilder().mergeDelimitedFrom(input).buildParsed();
+          return PARSER.parseDelimitedFrom(input);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse parseDelimitedFrom(
             java.io.InputStream input,
             com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
             throws java.io.IOException {
-          return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                   .buildParsed();
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse parseFrom(
             com.google.gwt.dev.protobuf.CodedInputStream input)
             throws java.io.IOException {
-          return newBuilder().mergeFrom(input).buildParsed();
+          return PARSER.parseFrom(input);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse parseFrom(
             com.google.gwt.dev.protobuf.CodedInputStream input,
             com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
             throws java.io.IOException {
-          return newBuilder().mergeFrom(input, extensionRegistry)
-                   .buildParsed();
+          return PARSER.parseFrom(input, extensionRegistry);
         }
-        
+
         public static Builder newBuilder() { return Builder.create(); }
         public Builder newBuilderForType() { return newBuilder(); }
         public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse prototype) {
           return newBuilder().mergeFrom(prototype);
         }
         public Builder toBuilder() { return newBuilder(this); }
-        
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse}
+         *
+         * <pre>
+         * The root type for all response messages from the ViewerService
+         * </pre>
+         */
         public static final class Builder extends
-            com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse result;
-          
+            com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+           implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponseOrBuilder {
+          public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_descriptor;
+          }
+
+          protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.Builder.class);
+          }
+
           // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.newBuilder()
-          private Builder() {}
-          
-          private static Builder create() {
-            Builder builder = new Builder();
-            builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse();
-            return builder;
+          private Builder() {
+            maybeForceBuilderInitialization();
           }
-          
-          protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse internalGetResult() {
-            return result;
+
+          private Builder(
+              com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
           }
-          
-          public Builder clear() {
-            if (result == null) {
-              throw new IllegalStateException(
-                "Cannot call clear() after build().");
+          private void maybeForceBuilderInitialization() {
+            if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              getCapabilityExchangeFieldBuilder();
+              getAddLogFieldBuilder();
+              getAddLogBranchFieldBuilder();
             }
-            result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse();
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            responseType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.ResponseType.CAPABILITY_EXCHANGE;
+            bitField0_ = (bitField0_ & ~0x00000001);
+            if (capabilityExchangeBuilder_ == null) {
+              capabilityExchange_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.getDefaultInstance();
+            } else {
+              capabilityExchangeBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000002);
+            if (addLogBuilder_ == null) {
+              addLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.getDefaultInstance();
+            } else {
+              addLogBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000004);
+            if (addLogBranchBuilder_ == null) {
+              addLogBranch_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.getDefaultInstance();
+            } else {
+              addLogBranchBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000008);
             return this;
           }
-          
+
           public Builder clone() {
-            return create().mergeFrom(result);
+            return create().mergeFrom(buildPartial());
           }
-          
+
           public com.google.gwt.dev.protobuf.Descriptors.Descriptor
               getDescriptorForType() {
-            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.getDescriptor();
+            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_descriptor;
           }
-          
+
           public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse getDefaultInstanceForType() {
             return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.getDefaultInstance();
           }
-          
-          public boolean isInitialized() {
-            return result.isInitialized();
-          }
+
           public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse build() {
-            if (result != null && !isInitialized()) {
+            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse result = buildPartial();
+            if (!result.isInitialized()) {
               throw newUninitializedMessageException(result);
             }
-            return buildPartial();
+            return result;
           }
-          
-          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse buildParsed()
-              throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            if (!isInitialized()) {
-              throw newUninitializedMessageException(
-                result).asInvalidProtocolBufferException();
-            }
-            return buildPartial();
-          }
-          
+
           public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse buildPartial() {
-            if (result == null) {
-              throw new IllegalStateException(
-                "build() has already been called on this Builder.");
+            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse(this);
+            int from_bitField0_ = bitField0_;
+            int to_bitField0_ = 0;
+            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+              to_bitField0_ |= 0x00000001;
             }
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse returnMe = result;
-            result = null;
-            return returnMe;
+            result.responseType_ = responseType_;
+            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+              to_bitField0_ |= 0x00000002;
+            }
+            if (capabilityExchangeBuilder_ == null) {
+              result.capabilityExchange_ = capabilityExchange_;
+            } else {
+              result.capabilityExchange_ = capabilityExchangeBuilder_.build();
+            }
+            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+              to_bitField0_ |= 0x00000004;
+            }
+            if (addLogBuilder_ == null) {
+              result.addLog_ = addLog_;
+            } else {
+              result.addLog_ = addLogBuilder_.build();
+            }
+            if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+              to_bitField0_ |= 0x00000008;
+            }
+            if (addLogBranchBuilder_ == null) {
+              result.addLogBranch_ = addLogBranch_;
+            } else {
+              result.addLogBranch_ = addLogBranchBuilder_.build();
+            }
+            result.bitField0_ = to_bitField0_;
+            onBuilt();
+            return result;
           }
-          
+
           public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
             if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse) {
               return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse)other);
@@ -7655,7 +15088,7 @@
               return this;
             }
           }
-          
+
           public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse other) {
             if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.getDefaultInstance()) return this;
             if (other.hasResponseType()) {
@@ -7673,245 +15106,643 @@
             this.mergeUnknownFields(other.getUnknownFields());
             return this;
           }
-          
+
+          public final boolean isInitialized() {
+            if (hasAddLog()) {
+              if (!getAddLog().isInitialized()) {
+                
+                return false;
+              }
+            }
+            if (hasAddLogBranch()) {
+              if (!getAddLogBranch().isInitialized()) {
+                
+                return false;
+              }
+            }
+            return true;
+          }
+
           public Builder mergeFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-              com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-                this.getUnknownFields());
-            while (true) {
+            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
+              }
+            }
+            return this;
+          }
+          private int bitField0_;
+
+          // optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.ResponseType responseType = 1;
+          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.ResponseType responseType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.ResponseType.CAPABILITY_EXCHANGE;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.ResponseType responseType = 1;</code>
+           */
+          public boolean hasResponseType() {
+            return ((bitField0_ & 0x00000001) == 0x00000001);
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.ResponseType responseType = 1;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.ResponseType getResponseType() {
+            return responseType_;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.ResponseType responseType = 1;</code>
+           */
+          public Builder setResponseType(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.ResponseType value) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            bitField0_ |= 0x00000001;
+            responseType_ = value;
+            onChanged();
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.ResponseType responseType = 1;</code>
+           */
+          public Builder clearResponseType() {
+            bitField0_ = (bitField0_ & ~0x00000001);
+            responseType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.ResponseType.CAPABILITY_EXCHANGE;
+            onChanged();
+            return this;
+          }
+
+          // optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange capabilityExchange = 2;
+          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange capabilityExchange_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.getDefaultInstance();
+          private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchangeOrBuilder> capabilityExchangeBuilder_;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange capabilityExchange = 2;</code>
+           */
+          public boolean hasCapabilityExchange() {
+            return ((bitField0_ & 0x00000002) == 0x00000002);
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange capabilityExchange = 2;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange getCapabilityExchange() {
+            if (capabilityExchangeBuilder_ == null) {
+              return capabilityExchange_;
+            } else {
+              return capabilityExchangeBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange capabilityExchange = 2;</code>
+           */
+          public Builder setCapabilityExchange(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange value) {
+            if (capabilityExchangeBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              capabilityExchange_ = value;
+              onChanged();
+            } else {
+              capabilityExchangeBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange capabilityExchange = 2;</code>
+           */
+          public Builder setCapabilityExchange(
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Builder builderForValue) {
+            if (capabilityExchangeBuilder_ == null) {
+              capabilityExchange_ = builderForValue.build();
+              onChanged();
+            } else {
+              capabilityExchangeBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange capabilityExchange = 2;</code>
+           */
+          public Builder mergeCapabilityExchange(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange value) {
+            if (capabilityExchangeBuilder_ == null) {
+              if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                  capabilityExchange_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.getDefaultInstance()) {
+                capabilityExchange_ =
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.newBuilder(capabilityExchange_).mergeFrom(value).buildPartial();
+              } else {
+                capabilityExchange_ = value;
+              }
+              onChanged();
+            } else {
+              capabilityExchangeBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000002;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange capabilityExchange = 2;</code>
+           */
+          public Builder clearCapabilityExchange() {
+            if (capabilityExchangeBuilder_ == null) {
+              capabilityExchange_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.getDefaultInstance();
+              onChanged();
+            } else {
+              capabilityExchangeBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000002);
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange capabilityExchange = 2;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Builder getCapabilityExchangeBuilder() {
+            bitField0_ |= 0x00000002;
+            onChanged();
+            return getCapabilityExchangeFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange capabilityExchange = 2;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchangeOrBuilder getCapabilityExchangeOrBuilder() {
+            if (capabilityExchangeBuilder_ != null) {
+              return capabilityExchangeBuilder_.getMessageOrBuilder();
+            } else {
+              return capabilityExchange_;
+            }
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange capabilityExchange = 2;</code>
+           */
+          private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchangeOrBuilder> 
+              getCapabilityExchangeFieldBuilder() {
+            if (capabilityExchangeBuilder_ == null) {
+              capabilityExchangeBuilder_ = new com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchangeOrBuilder>(
+                      capabilityExchange_,
+                      getParentForChildren(),
+                      isClean());
+              capabilityExchange_ = null;
+            }
+            return capabilityExchangeBuilder_;
+          }
+
+          // optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLog addLog = 3;
+          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog addLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.getDefaultInstance();
+          private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogOrBuilder> addLogBuilder_;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLog addLog = 3;</code>
+           */
+          public boolean hasAddLog() {
+            return ((bitField0_ & 0x00000004) == 0x00000004);
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLog addLog = 3;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog getAddLog() {
+            if (addLogBuilder_ == null) {
+              return addLog_;
+            } else {
+              return addLogBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLog addLog = 3;</code>
+           */
+          public Builder setAddLog(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog value) {
+            if (addLogBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              addLog_ = value;
+              onChanged();
+            } else {
+              addLogBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000004;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLog addLog = 3;</code>
+           */
+          public Builder setAddLog(
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.Builder builderForValue) {
+            if (addLogBuilder_ == null) {
+              addLog_ = builderForValue.build();
+              onChanged();
+            } else {
+              addLogBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000004;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLog addLog = 3;</code>
+           */
+          public Builder mergeAddLog(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog value) {
+            if (addLogBuilder_ == null) {
+              if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                  addLog_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.getDefaultInstance()) {
+                addLog_ =
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.newBuilder(addLog_).mergeFrom(value).buildPartial();
+              } else {
+                addLog_ = value;
+              }
+              onChanged();
+            } else {
+              addLogBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000004;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLog addLog = 3;</code>
+           */
+          public Builder clearAddLog() {
+            if (addLogBuilder_ == null) {
+              addLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.getDefaultInstance();
+              onChanged();
+            } else {
+              addLogBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000004);
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLog addLog = 3;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.Builder getAddLogBuilder() {
+            bitField0_ |= 0x00000004;
+            onChanged();
+            return getAddLogFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLog addLog = 3;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogOrBuilder getAddLogOrBuilder() {
+            if (addLogBuilder_ != null) {
+              return addLogBuilder_.getMessageOrBuilder();
+            } else {
+              return addLog_;
+            }
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLog addLog = 3;</code>
+           */
+          private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogOrBuilder> 
+              getAddLogFieldBuilder() {
+            if (addLogBuilder_ == null) {
+              addLogBuilder_ = new com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogOrBuilder>(
+                      addLog_,
+                      getParentForChildren(),
+                      isClean());
+              addLog_ = null;
+            }
+            return addLogBuilder_;
+          }
+
+          // optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLogBranch addLogBranch = 4;
+          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch addLogBranch_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.getDefaultInstance();
+          private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranchOrBuilder> addLogBranchBuilder_;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLogBranch addLogBranch = 4;</code>
+           */
+          public boolean hasAddLogBranch() {
+            return ((bitField0_ & 0x00000008) == 0x00000008);
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLogBranch addLogBranch = 4;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch getAddLogBranch() {
+            if (addLogBranchBuilder_ == null) {
+              return addLogBranch_;
+            } else {
+              return addLogBranchBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLogBranch addLogBranch = 4;</code>
+           */
+          public Builder setAddLogBranch(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch value) {
+            if (addLogBranchBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              addLogBranch_ = value;
+              onChanged();
+            } else {
+              addLogBranchBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000008;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLogBranch addLogBranch = 4;</code>
+           */
+          public Builder setAddLogBranch(
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.Builder builderForValue) {
+            if (addLogBranchBuilder_ == null) {
+              addLogBranch_ = builderForValue.build();
+              onChanged();
+            } else {
+              addLogBranchBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000008;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLogBranch addLogBranch = 4;</code>
+           */
+          public Builder mergeAddLogBranch(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch value) {
+            if (addLogBranchBuilder_ == null) {
+              if (((bitField0_ & 0x00000008) == 0x00000008) &&
+                  addLogBranch_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.getDefaultInstance()) {
+                addLogBranch_ =
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.newBuilder(addLogBranch_).mergeFrom(value).buildPartial();
+              } else {
+                addLogBranch_ = value;
+              }
+              onChanged();
+            } else {
+              addLogBranchBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000008;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLogBranch addLogBranch = 4;</code>
+           */
+          public Builder clearAddLogBranch() {
+            if (addLogBranchBuilder_ == null) {
+              addLogBranch_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.getDefaultInstance();
+              onChanged();
+            } else {
+              addLogBranchBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000008);
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLogBranch addLogBranch = 4;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.Builder getAddLogBranchBuilder() {
+            bitField0_ |= 0x00000008;
+            onChanged();
+            return getAddLogBranchFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLogBranch addLogBranch = 4;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranchOrBuilder getAddLogBranchOrBuilder() {
+            if (addLogBranchBuilder_ != null) {
+              return addLogBranchBuilder_.getMessageOrBuilder();
+            } else {
+              return addLogBranch_;
+            }
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLogBranch addLogBranch = 4;</code>
+           */
+          private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranchOrBuilder> 
+              getAddLogBranchFieldBuilder() {
+            if (addLogBranchBuilder_ == null) {
+              addLogBranchBuilder_ = new com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranchOrBuilder>(
+                      addLogBranch_,
+                      getParentForChildren(),
+                      isClean());
+              addLogBranch_ = null;
+            }
+            return addLogBranchBuilder_;
+          }
+
+          // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse)
+        }
+
+        static {
+          defaultInstance = new ViewerResponse(true);
+          defaultInstance.initFields();
+        }
+
+        // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse)
+      }
+
+      public interface DevModeResponseOrBuilder
+          extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+
+        // optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.ResponseType responseType = 1;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.ResponseType responseType = 1;</code>
+         */
+        boolean hasResponseType();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.ResponseType responseType = 1;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.ResponseType getResponseType();
+
+        // optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange capabilityExchange = 2;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange capabilityExchange = 2;</code>
+         */
+        boolean hasCapabilityExchange();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange capabilityExchange = 2;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange getCapabilityExchange();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange capabilityExchange = 2;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchangeOrBuilder getCapabilityExchangeOrBuilder();
+
+        // optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.RestartWebServer restartWebServer = 3;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.RestartWebServer restartWebServer = 3;</code>
+         */
+        boolean hasRestartWebServer();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.RestartWebServer restartWebServer = 3;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer getRestartWebServer();
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.RestartWebServer restartWebServer = 3;</code>
+         */
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServerOrBuilder getRestartWebServerOrBuilder();
+      }
+      /**
+       * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse}
+       *
+       * <pre>
+       * The root type for all response messages from the DevModeService
+       * </pre>
+       */
+      public static final class DevModeResponse extends
+          com.google.gwt.dev.protobuf.GeneratedMessage
+          implements DevModeResponseOrBuilder {
+        // Use DevModeResponse.newBuilder() to construct.
+        private DevModeResponse(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+          super(builder);
+          this.unknownFields = builder.getUnknownFields();
+        }
+        private DevModeResponse(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+        private static final DevModeResponse defaultInstance;
+        public static DevModeResponse getDefaultInstance() {
+          return defaultInstance;
+        }
+
+        public DevModeResponse getDefaultInstanceForType() {
+          return defaultInstance;
+        }
+
+        private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+        @java.lang.Override
+        public final com.google.gwt.dev.protobuf.UnknownFieldSet
+            getUnknownFields() {
+          return this.unknownFields;
+        }
+        private DevModeResponse(
+            com.google.gwt.dev.protobuf.CodedInputStream input,
+            com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+          initFields();
+          int mutable_bitField0_ = 0;
+          com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+              com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder();
+          try {
+            boolean done = false;
+            while (!done) {
               int tag = input.readTag();
               switch (tag) {
                 case 0:
-                  this.setUnknownFields(unknownFields.build());
-                  return this;
+                  done = true;
+                  break;
                 default: {
                   if (!parseUnknownField(input, unknownFields,
                                          extensionRegistry, tag)) {
-                    this.setUnknownFields(unknownFields.build());
-                    return this;
+                    done = true;
                   }
                   break;
                 }
                 case 8: {
                   int rawValue = input.readEnum();
-                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.ResponseType value = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.ResponseType.valueOf(rawValue);
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.ResponseType value = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.ResponseType.valueOf(rawValue);
                   if (value == null) {
                     unknownFields.mergeVarintField(1, rawValue);
                   } else {
-                    setResponseType(value);
+                    bitField0_ |= 0x00000001;
+                    responseType_ = value;
                   }
                   break;
                 }
                 case 18: {
-                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.newBuilder();
-                  if (hasCapabilityExchange()) {
-                    subBuilder.mergeFrom(getCapabilityExchange());
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000002) == 0x00000002)) {
+                    subBuilder = capabilityExchange_.toBuilder();
                   }
-                  input.readMessage(subBuilder, extensionRegistry);
-                  setCapabilityExchange(subBuilder.buildPartial());
+                  capabilityExchange_ = input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(capabilityExchange_);
+                    capabilityExchange_ = subBuilder.buildPartial();
+                  }
+                  bitField0_ |= 0x00000002;
                   break;
                 }
                 case 26: {
-                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.newBuilder();
-                  if (hasAddLog()) {
-                    subBuilder.mergeFrom(getAddLog());
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.Builder subBuilder = null;
+                  if (((bitField0_ & 0x00000004) == 0x00000004)) {
+                    subBuilder = restartWebServer_.toBuilder();
                   }
-                  input.readMessage(subBuilder, extensionRegistry);
-                  setAddLog(subBuilder.buildPartial());
-                  break;
-                }
-                case 34: {
-                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.newBuilder();
-                  if (hasAddLogBranch()) {
-                    subBuilder.mergeFrom(getAddLogBranch());
+                  restartWebServer_ = input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.PARSER, extensionRegistry);
+                  if (subBuilder != null) {
+                    subBuilder.mergeFrom(restartWebServer_);
+                    restartWebServer_ = subBuilder.buildPartial();
                   }
-                  input.readMessage(subBuilder, extensionRegistry);
-                  setAddLogBranch(subBuilder.buildPartial());
+                  bitField0_ |= 0x00000004;
                   break;
                 }
               }
             }
-          }
-          
-          
-          // optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.ResponseType responseType = 1;
-          public boolean hasResponseType() {
-            return result.hasResponseType();
-          }
-          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.ResponseType getResponseType() {
-            return result.getResponseType();
-          }
-          public Builder setResponseType(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.ResponseType value) {
-            if (value == null) {
-              throw new NullPointerException();
-            }
-            result.hasResponseType = true;
-            result.responseType_ = value;
-            return this;
-          }
-          public Builder clearResponseType() {
-            result.hasResponseType = false;
-            result.responseType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.ResponseType.CAPABILITY_EXCHANGE;
-            return this;
-          }
-          
-          // optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.CapabilityExchange capabilityExchange = 2;
-          public boolean hasCapabilityExchange() {
-            return result.hasCapabilityExchange();
-          }
-          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange getCapabilityExchange() {
-            return result.getCapabilityExchange();
-          }
-          public Builder setCapabilityExchange(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange value) {
-            if (value == null) {
-              throw new NullPointerException();
-            }
-            result.hasCapabilityExchange = true;
-            result.capabilityExchange_ = value;
-            return this;
-          }
-          public Builder setCapabilityExchange(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Builder builderForValue) {
-            result.hasCapabilityExchange = true;
-            result.capabilityExchange_ = builderForValue.build();
-            return this;
-          }
-          public Builder mergeCapabilityExchange(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange value) {
-            if (result.hasCapabilityExchange() &&
-                result.capabilityExchange_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.getDefaultInstance()) {
-              result.capabilityExchange_ =
-                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.newBuilder(result.capabilityExchange_).mergeFrom(value).buildPartial();
-            } else {
-              result.capabilityExchange_ = value;
-            }
-            result.hasCapabilityExchange = true;
-            return this;
-          }
-          public Builder clearCapabilityExchange() {
-            result.hasCapabilityExchange = false;
-            result.capabilityExchange_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.getDefaultInstance();
-            return this;
-          }
-          
-          // optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLog addLog = 3;
-          public boolean hasAddLog() {
-            return result.hasAddLog();
-          }
-          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog getAddLog() {
-            return result.getAddLog();
-          }
-          public Builder setAddLog(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog value) {
-            if (value == null) {
-              throw new NullPointerException();
-            }
-            result.hasAddLog = true;
-            result.addLog_ = value;
-            return this;
-          }
-          public Builder setAddLog(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.Builder builderForValue) {
-            result.hasAddLog = true;
-            result.addLog_ = builderForValue.build();
-            return this;
-          }
-          public Builder mergeAddLog(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog value) {
-            if (result.hasAddLog() &&
-                result.addLog_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.getDefaultInstance()) {
-              result.addLog_ =
-                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.newBuilder(result.addLog_).mergeFrom(value).buildPartial();
-            } else {
-              result.addLog_ = value;
-            }
-            result.hasAddLog = true;
-            return this;
-          }
-          public Builder clearAddLog() {
-            result.hasAddLog = false;
-            result.addLog_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.getDefaultInstance();
-            return this;
-          }
-          
-          // optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse.AddLogBranch addLogBranch = 4;
-          public boolean hasAddLogBranch() {
-            return result.hasAddLogBranch();
-          }
-          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch getAddLogBranch() {
-            return result.getAddLogBranch();
-          }
-          public Builder setAddLogBranch(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch value) {
-            if (value == null) {
-              throw new NullPointerException();
-            }
-            result.hasAddLogBranch = true;
-            result.addLogBranch_ = value;
-            return this;
-          }
-          public Builder setAddLogBranch(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.Builder builderForValue) {
-            result.hasAddLogBranch = true;
-            result.addLogBranch_ = builderForValue.build();
-            return this;
-          }
-          public Builder mergeAddLogBranch(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch value) {
-            if (result.hasAddLogBranch() &&
-                result.addLogBranch_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.getDefaultInstance()) {
-              result.addLogBranch_ =
-                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.newBuilder(result.addLogBranch_).mergeFrom(value).buildPartial();
-            } else {
-              result.addLogBranch_ = value;
-            }
-            result.hasAddLogBranch = true;
-            return this;
-          }
-          public Builder clearAddLogBranch() {
-            result.hasAddLogBranch = false;
-            result.addLogBranch_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.getDefaultInstance();
-            return this;
+          } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+            throw e.setUnfinishedMessage(this);
+          } catch (java.io.IOException e) {
+            throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+                e.getMessage()).setUnfinishedMessage(this);
+          } finally {
+            this.unknownFields = unknownFields.build();
+            makeExtensionsImmutable();
           }
         }
-        
-        static {
-          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
-        }
-        
-        static {
-          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-        }
-      }
-      
-      public static final class DevModeResponse extends
-          com.google.gwt.dev.protobuf.GeneratedMessage {
-        // Use DevModeResponse.newBuilder() to construct.
-        private DevModeResponse() {}
-        
-        private static final DevModeResponse defaultInstance = new DevModeResponse();
-        public static DevModeResponse getDefaultInstance() {
-          return defaultInstance;
-        }
-        
-        public DevModeResponse getDefaultInstanceForType() {
-          return defaultInstance;
-        }
-        
         public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
             getDescriptor() {
           return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_descriptor;
         }
-        
+
         protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
             internalGetFieldAccessorTable() {
-          return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_fieldAccessorTable;
+          return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.Builder.class);
         }
-        
+
+        public static com.google.gwt.dev.protobuf.Parser<DevModeResponse> PARSER =
+            new com.google.gwt.dev.protobuf.AbstractParser<DevModeResponse>() {
+          public DevModeResponse parsePartialFrom(
+              com.google.gwt.dev.protobuf.CodedInputStream input,
+              com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+            return new DevModeResponse(input, extensionRegistry);
+          }
+        };
+
+        @java.lang.Override
+        public com.google.gwt.dev.protobuf.Parser<DevModeResponse> getParserForType() {
+          return PARSER;
+        }
+
+        /**
+         * Protobuf enum {@code com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.ResponseType}
+         *
+         * <pre>
+         * The different types of response messages from the DevModeService
+         * </pre>
+         */
         public enum ResponseType
             implements com.google.gwt.dev.protobuf.ProtocolMessageEnum {
+          /**
+           * <code>CAPABILITY_EXCHANGE = 0;</code>
+           */
           CAPABILITY_EXCHANGE(0, 0),
+          /**
+           * <code>RESTART_WEB_SERVER = 1;</code>
+           */
           RESTART_WEB_SERVER(1, 1),
           ;
-          
-          
+
+          /**
+           * <code>CAPABILITY_EXCHANGE = 0;</code>
+           */
+          public static final int CAPABILITY_EXCHANGE_VALUE = 0;
+          /**
+           * <code>RESTART_WEB_SERVER = 1;</code>
+           */
+          public static final int RESTART_WEB_SERVER_VALUE = 1;
+
+
           public final int getNumber() { return value; }
-          
+
           public static ResponseType valueOf(int value) {
             switch (value) {
               case 0: return CAPABILITY_EXCHANGE;
@@ -7919,7 +15750,7 @@
               default: return null;
             }
           }
-          
+
           public static com.google.gwt.dev.protobuf.Internal.EnumLiteMap<ResponseType>
               internalGetValueMap() {
             return internalValueMap;
@@ -7928,10 +15759,10 @@
               internalValueMap =
                 new com.google.gwt.dev.protobuf.Internal.EnumLiteMap<ResponseType>() {
                   public ResponseType findValueByNumber(int number) {
-                    return ResponseType.valueOf(number)
-          ;        }
+                    return ResponseType.valueOf(number);
+                  }
                 };
-          
+
           public final com.google.gwt.dev.protobuf.Descriptors.EnumValueDescriptor
               getValueDescriptor() {
             return getDescriptor().getValues().get(index);
@@ -7944,10 +15775,9 @@
               getDescriptor() {
             return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.getDescriptor().getEnumTypes().get(0);
           }
-          
-          private static final ResponseType[] VALUES = {
-            CAPABILITY_EXCHANGE, RESTART_WEB_SERVER, 
-          };
+
+          private static final ResponseType[] VALUES = values();
+
           public static ResponseType valueOf(
               com.google.gwt.dev.protobuf.Descriptors.EnumValueDescriptor desc) {
             if (desc.getType() != getDescriptor()) {
@@ -7956,269 +15786,212 @@
             }
             return VALUES[desc.getIndex()];
           }
+
           private final int index;
           private final int value;
+
           private ResponseType(int index, int value) {
             this.index = index;
             this.value = value;
           }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
-          }
+
+          // @@protoc_insertion_point(enum_scope:com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.ResponseType)
         }
-        
+
+        public interface CapabilityExchangeOrBuilder
+            extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+
+          // repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;
+          /**
+           * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+           */
+          java.util.List<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability> 
+              getCapabilitiesList();
+          /**
+           * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+           */
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability getCapabilities(int index);
+          /**
+           * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+           */
+          int getCapabilitiesCount();
+          /**
+           * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+           */
+          java.util.List<? extends com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.CapabilityOrBuilder> 
+              getCapabilitiesOrBuilderList();
+          /**
+           * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+           */
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.CapabilityOrBuilder getCapabilitiesOrBuilder(
+              int index);
+        }
+        /**
+         * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange}
+         *
+         * <pre>
+         * Response for the capabilities of the DevModeService
+         * </pre>
+         */
         public static final class CapabilityExchange extends
-            com.google.gwt.dev.protobuf.GeneratedMessage {
+            com.google.gwt.dev.protobuf.GeneratedMessage
+            implements CapabilityExchangeOrBuilder {
           // Use CapabilityExchange.newBuilder() to construct.
-          private CapabilityExchange() {}
-          
-          private static final CapabilityExchange defaultInstance = new CapabilityExchange();
+          private CapabilityExchange(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+            super(builder);
+            this.unknownFields = builder.getUnknownFields();
+          }
+          private CapabilityExchange(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+          private static final CapabilityExchange defaultInstance;
           public static CapabilityExchange getDefaultInstance() {
             return defaultInstance;
           }
-          
+
           public CapabilityExchange getDefaultInstanceForType() {
             return defaultInstance;
           }
-          
+
+          private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+          @java.lang.Override
+          public final com.google.gwt.dev.protobuf.UnknownFieldSet
+              getUnknownFields() {
+            return this.unknownFields;
+          }
+          private CapabilityExchange(
+              com.google.gwt.dev.protobuf.CodedInputStream input,
+              com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+            initFields();
+            int mutable_bitField0_ = 0;
+            com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+                com.google.gwt.dev.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 18: {
+                    if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                      capabilities_ = new java.util.ArrayList<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability>();
+                      mutable_bitField0_ |= 0x00000001;
+                    }
+                    capabilities_.add(input.readMessage(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.PARSER, extensionRegistry));
+                    break;
+                  }
+                }
+              }
+            } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+              throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+              throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+                  e.getMessage()).setUnfinishedMessage(this);
+            } finally {
+              if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                capabilities_ = java.util.Collections.unmodifiableList(capabilities_);
+              }
+              this.unknownFields = unknownFields.build();
+              makeExtensionsImmutable();
+            }
+          }
           public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
               getDescriptor() {
             return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_CapabilityExchange_descriptor;
           }
-          
+
           protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
               internalGetFieldAccessorTable() {
-            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_CapabilityExchange_fieldAccessorTable;
+            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_CapabilityExchange_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Builder.class);
           }
-          
+
+          public static com.google.gwt.dev.protobuf.Parser<CapabilityExchange> PARSER =
+              new com.google.gwt.dev.protobuf.AbstractParser<CapabilityExchange>() {
+            public CapabilityExchange parsePartialFrom(
+                com.google.gwt.dev.protobuf.CodedInputStream input,
+                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              return new CapabilityExchange(input, extensionRegistry);
+            }
+          };
+
+          @java.lang.Override
+          public com.google.gwt.dev.protobuf.Parser<CapabilityExchange> getParserForType() {
+            return PARSER;
+          }
+
+          public interface CapabilityOrBuilder
+              extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+
+            // optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RequestType capability = 1;
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RequestType capability = 1;</code>
+             */
+            boolean hasCapability();
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RequestType capability = 1;</code>
+             */
+            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType getCapability();
+          }
+          /**
+           * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability}
+           */
           public static final class Capability extends
-              com.google.gwt.dev.protobuf.GeneratedMessage {
+              com.google.gwt.dev.protobuf.GeneratedMessage
+              implements CapabilityOrBuilder {
             // Use Capability.newBuilder() to construct.
-            private Capability() {}
-            
-            private static final Capability defaultInstance = new Capability();
+            private Capability(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+              super(builder);
+              this.unknownFields = builder.getUnknownFields();
+            }
+            private Capability(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+            private static final Capability defaultInstance;
             public static Capability getDefaultInstance() {
               return defaultInstance;
             }
-            
+
             public Capability getDefaultInstanceForType() {
               return defaultInstance;
             }
-            
-            public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
-                getDescriptor() {
-              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_CapabilityExchange_Capability_descriptor;
+
+            private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+            @java.lang.Override
+            public final com.google.gwt.dev.protobuf.UnknownFieldSet
+                getUnknownFields() {
+              return this.unknownFields;
             }
-            
-            protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
-                internalGetFieldAccessorTable() {
-              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_CapabilityExchange_Capability_fieldAccessorTable;
-            }
-            
-            // optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RequestType capability = 1;
-            public static final int CAPABILITY_FIELD_NUMBER = 1;
-            private boolean hasCapability;
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType capability_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType.CAPABILITY_EXCHANGE;
-            public boolean hasCapability() { return hasCapability; }
-            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType getCapability() { return capability_; }
-            
-            public final boolean isInitialized() {
-              return true;
-            }
-            
-            public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
-                                throws java.io.IOException {
-              if (hasCapability()) {
-                output.writeEnum(1, getCapability().getNumber());
-              }
-              getUnknownFields().writeTo(output);
-            }
-            
-            private int memoizedSerializedSize = -1;
-            public int getSerializedSize() {
-              int size = memoizedSerializedSize;
-              if (size != -1) return size;
-            
-              size = 0;
-              if (hasCapability()) {
-                size += com.google.gwt.dev.protobuf.CodedOutputStream
-                  .computeEnumSize(1, getCapability().getNumber());
-              }
-              size += getUnknownFields().getSerializedSize();
-              memoizedSerializedSize = size;
-              return size;
-            }
-            
-            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability parseFrom(
-                com.google.gwt.dev.protobuf.ByteString data)
-                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              return newBuilder().mergeFrom(data).buildParsed();
-            }
-            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability parseFrom(
-                com.google.gwt.dev.protobuf.ByteString data,
-                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
-                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              return newBuilder().mergeFrom(data, extensionRegistry)
-                       .buildParsed();
-            }
-            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability parseFrom(byte[] data)
-                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              return newBuilder().mergeFrom(data).buildParsed();
-            }
-            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability parseFrom(
-                byte[] data,
-                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
-                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              return newBuilder().mergeFrom(data, extensionRegistry)
-                       .buildParsed();
-            }
-            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability parseFrom(java.io.InputStream input)
-                throws java.io.IOException {
-              return newBuilder().mergeFrom(input).buildParsed();
-            }
-            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability parseFrom(
-                java.io.InputStream input,
-                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
-                throws java.io.IOException {
-              return newBuilder().mergeFrom(input, extensionRegistry)
-                       .buildParsed();
-            }
-            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability parseDelimitedFrom(java.io.InputStream input)
-                throws java.io.IOException {
-              return newBuilder().mergeDelimitedFrom(input).buildParsed();
-            }
-            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability parseDelimitedFrom(
-                java.io.InputStream input,
-                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
-                throws java.io.IOException {
-              return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                       .buildParsed();
-            }
-            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability parseFrom(
-                com.google.gwt.dev.protobuf.CodedInputStream input)
-                throws java.io.IOException {
-              return newBuilder().mergeFrom(input).buildParsed();
-            }
-            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability parseFrom(
+            private Capability(
                 com.google.gwt.dev.protobuf.CodedInputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
-                throws java.io.IOException {
-              return newBuilder().mergeFrom(input, extensionRegistry)
-                       .buildParsed();
-            }
-            
-            public static Builder newBuilder() { return Builder.create(); }
-            public Builder newBuilderForType() { return newBuilder(); }
-            public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability prototype) {
-              return newBuilder().mergeFrom(prototype);
-            }
-            public Builder toBuilder() { return newBuilder(this); }
-            
-            public static final class Builder extends
-                com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-              private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability result;
-              
-              // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.newBuilder()
-              private Builder() {}
-              
-              private static Builder create() {
-                Builder builder = new Builder();
-                builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability();
-                return builder;
-              }
-              
-              protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability internalGetResult() {
-                return result;
-              }
-              
-              public Builder clear() {
-                if (result == null) {
-                  throw new IllegalStateException(
-                    "Cannot call clear() after build().");
-                }
-                result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability();
-                return this;
-              }
-              
-              public Builder clone() {
-                return create().mergeFrom(result);
-              }
-              
-              public com.google.gwt.dev.protobuf.Descriptors.Descriptor
-                  getDescriptorForType() {
-                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.getDescriptor();
-              }
-              
-              public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability getDefaultInstanceForType() {
-                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.getDefaultInstance();
-              }
-              
-              public boolean isInitialized() {
-                return result.isInitialized();
-              }
-              public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability build() {
-                if (result != null && !isInitialized()) {
-                  throw newUninitializedMessageException(result);
-                }
-                return buildPartial();
-              }
-              
-              private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability buildParsed()
-                  throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-                if (!isInitialized()) {
-                  throw newUninitializedMessageException(
-                    result).asInvalidProtocolBufferException();
-                }
-                return buildPartial();
-              }
-              
-              public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability buildPartial() {
-                if (result == null) {
-                  throw new IllegalStateException(
-                    "build() has already been called on this Builder.");
-                }
-                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability returnMe = result;
-                result = null;
-                return returnMe;
-              }
-              
-              public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
-                if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability) {
-                  return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability)other);
-                } else {
-                  super.mergeFrom(other);
-                  return this;
-                }
-              }
-              
-              public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability other) {
-                if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.getDefaultInstance()) return this;
-                if (other.hasCapability()) {
-                  setCapability(other.getCapability());
-                }
-                this.mergeUnknownFields(other.getUnknownFields());
-                return this;
-              }
-              
-              public Builder mergeFrom(
-                  com.google.gwt.dev.protobuf.CodedInputStream input,
-                  com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
-                  throws java.io.IOException {
-                com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-                  com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-                    this.getUnknownFields());
-                while (true) {
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              initFields();
+              int mutable_bitField0_ = 0;
+              com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+                  com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder();
+              try {
+                boolean done = false;
+                while (!done) {
                   int tag = input.readTag();
                   switch (tag) {
                     case 0:
-                      this.setUnknownFields(unknownFields.build());
-                      return this;
+                      done = true;
+                      break;
                     default: {
                       if (!parseUnknownField(input, unknownFields,
                                              extensionRegistry, tag)) {
-                        this.setUnknownFields(unknownFields.build());
-                        return this;
+                        done = true;
                       }
                       break;
                     }
@@ -8228,222 +16001,575 @@
                       if (value == null) {
                         unknownFields.mergeVarintField(1, rawValue);
                       } else {
-                        setCapability(value);
+                        bitField0_ |= 0x00000001;
+                        capability_ = value;
                       }
                       break;
                     }
                   }
                 }
+              } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+                throw e.setUnfinishedMessage(this);
+              } catch (java.io.IOException e) {
+                throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+                    e.getMessage()).setUnfinishedMessage(this);
+              } finally {
+                this.unknownFields = unknownFields.build();
+                makeExtensionsImmutable();
               }
-              
-              
+            }
+            public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+                getDescriptor() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_CapabilityExchange_Capability_descriptor;
+            }
+
+            protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+                internalGetFieldAccessorTable() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_CapabilityExchange_Capability_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.Builder.class);
+            }
+
+            public static com.google.gwt.dev.protobuf.Parser<Capability> PARSER =
+                new com.google.gwt.dev.protobuf.AbstractParser<Capability>() {
+              public Capability parsePartialFrom(
+                  com.google.gwt.dev.protobuf.CodedInputStream input,
+                  com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                  throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+                return new Capability(input, extensionRegistry);
+              }
+            };
+
+            @java.lang.Override
+            public com.google.gwt.dev.protobuf.Parser<Capability> getParserForType() {
+              return PARSER;
+            }
+
+            private int bitField0_;
+            // optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RequestType capability = 1;
+            public static final int CAPABILITY_FIELD_NUMBER = 1;
+            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType capability_;
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RequestType capability = 1;</code>
+             */
+            public boolean hasCapability() {
+              return ((bitField0_ & 0x00000001) == 0x00000001);
+            }
+            /**
+             * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RequestType capability = 1;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType getCapability() {
+              return capability_;
+            }
+
+            private void initFields() {
+              capability_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType.CAPABILITY_EXCHANGE;
+            }
+            private byte memoizedIsInitialized = -1;
+            public final boolean isInitialized() {
+              byte isInitialized = memoizedIsInitialized;
+              if (isInitialized != -1) return isInitialized == 1;
+
+              memoizedIsInitialized = 1;
+              return true;
+            }
+
+            public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
+                                throws java.io.IOException {
+              getSerializedSize();
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                output.writeEnum(1, capability_.getNumber());
+              }
+              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.gwt.dev.protobuf.CodedOutputStream
+                  .computeEnumSize(1, capability_.getNumber());
+              }
+              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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability parseFrom(
+                com.google.gwt.dev.protobuf.ByteString data)
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              return PARSER.parseFrom(data);
+            }
+            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability parseFrom(
+                com.google.gwt.dev.protobuf.ByteString data,
+                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              return PARSER.parseFrom(data, extensionRegistry);
+            }
+            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability parseFrom(byte[] data)
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              return PARSER.parseFrom(data);
+            }
+            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability parseFrom(
+                byte[] data,
+                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              return PARSER.parseFrom(data, extensionRegistry);
+            }
+            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability parseFrom(java.io.InputStream input)
+                throws java.io.IOException {
+              return PARSER.parseFrom(input);
+            }
+            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability parseFrom(
+                java.io.InputStream input,
+                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws java.io.IOException {
+              return PARSER.parseFrom(input, extensionRegistry);
+            }
+            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability parseDelimitedFrom(java.io.InputStream input)
+                throws java.io.IOException {
+              return PARSER.parseDelimitedFrom(input);
+            }
+            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability parseDelimitedFrom(
+                java.io.InputStream input,
+                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws java.io.IOException {
+              return PARSER.parseDelimitedFrom(input, extensionRegistry);
+            }
+            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability parseFrom(
+                com.google.gwt.dev.protobuf.CodedInputStream input)
+                throws java.io.IOException {
+              return PARSER.parseFrom(input);
+            }
+            public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability parseFrom(
+                com.google.gwt.dev.protobuf.CodedInputStream input,
+                com.google.gwt.dev.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(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability prototype) {
+              return newBuilder().mergeFrom(prototype);
+            }
+            public Builder toBuilder() { return newBuilder(this); }
+
+            @java.lang.Override
+            protected Builder newBuilderForType(
+                com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+              Builder builder = new Builder(parent);
+              return builder;
+            }
+            /**
+             * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability}
+             */
+            public static final class Builder extends
+                com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+               implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.CapabilityOrBuilder {
+              public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+                  getDescriptor() {
+                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_CapabilityExchange_Capability_descriptor;
+              }
+
+              protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+                  internalGetFieldAccessorTable() {
+                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_CapabilityExchange_Capability_fieldAccessorTable
+                    .ensureFieldAccessorsInitialized(
+                        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.Builder.class);
+              }
+
+              // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.newBuilder()
+              private Builder() {
+                maybeForceBuilderInitialization();
+              }
+
+              private Builder(
+                  com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+                super(parent);
+                maybeForceBuilderInitialization();
+              }
+              private void maybeForceBuilderInitialization() {
+                if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+                }
+              }
+              private static Builder create() {
+                return new Builder();
+              }
+
+              public Builder clear() {
+                super.clear();
+                capability_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType.CAPABILITY_EXCHANGE;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+              }
+
+              public Builder clone() {
+                return create().mergeFrom(buildPartial());
+              }
+
+              public com.google.gwt.dev.protobuf.Descriptors.Descriptor
+                  getDescriptorForType() {
+                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_CapabilityExchange_Capability_descriptor;
+              }
+
+              public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability getDefaultInstanceForType() {
+                return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.getDefaultInstance();
+              }
+
+              public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability build() {
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability result = buildPartial();
+                if (!result.isInitialized()) {
+                  throw newUninitializedMessageException(result);
+                }
+                return result;
+              }
+
+              public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability buildPartial() {
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability(this);
+                int from_bitField0_ = bitField0_;
+                int to_bitField0_ = 0;
+                if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+                  to_bitField0_ |= 0x00000001;
+                }
+                result.capability_ = capability_;
+                result.bitField0_ = to_bitField0_;
+                onBuilt();
+                return result;
+              }
+
+              public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
+                if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability) {
+                  return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability)other);
+                } else {
+                  super.mergeFrom(other);
+                  return this;
+                }
+              }
+
+              public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability other) {
+                if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.getDefaultInstance()) return this;
+                if (other.hasCapability()) {
+                  setCapability(other.getCapability());
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                return this;
+              }
+
+              public final boolean isInitialized() {
+                return true;
+              }
+
+              public Builder mergeFrom(
+                  com.google.gwt.dev.protobuf.CodedInputStream input,
+                  com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                  throws java.io.IOException {
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability parsedMessage = null;
+                try {
+                  parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+                } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+                  parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability) e.getUnfinishedMessage();
+                  throw e;
+                } finally {
+                  if (parsedMessage != null) {
+                    mergeFrom(parsedMessage);
+                  }
+                }
+                return this;
+              }
+              private int bitField0_;
+
               // optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RequestType capability = 1;
+              private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType capability_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType.CAPABILITY_EXCHANGE;
+              /**
+               * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RequestType capability = 1;</code>
+               */
               public boolean hasCapability() {
-                return result.hasCapability();
+                return ((bitField0_ & 0x00000001) == 0x00000001);
               }
+              /**
+               * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RequestType capability = 1;</code>
+               */
               public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType getCapability() {
-                return result.getCapability();
+                return capability_;
               }
+              /**
+               * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RequestType capability = 1;</code>
+               */
               public Builder setCapability(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType value) {
                 if (value == null) {
                   throw new NullPointerException();
                 }
-                result.hasCapability = true;
-                result.capability_ = value;
+                bitField0_ |= 0x00000001;
+                capability_ = value;
+                onChanged();
                 return this;
               }
+              /**
+               * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request.DevModeRequest.RequestType capability = 1;</code>
+               */
               public Builder clearCapability() {
-                result.hasCapability = false;
-                result.capability_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType.CAPABILITY_EXCHANGE;
+                bitField0_ = (bitField0_ & ~0x00000001);
+                capability_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RequestType.CAPABILITY_EXCHANGE;
+                onChanged();
                 return this;
               }
+
+              // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability)
             }
-            
+
             static {
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
+              defaultInstance = new Capability(true);
+              defaultInstance.initFields();
             }
-            
-            static {
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-            }
+
+            // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability)
           }
-          
+
           // repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;
           public static final int CAPABILITIES_FIELD_NUMBER = 2;
-          private java.util.List<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability> capabilities_ =
-            java.util.Collections.emptyList();
+          private java.util.List<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability> capabilities_;
+          /**
+           * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+           */
           public java.util.List<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability> getCapabilitiesList() {
             return capabilities_;
           }
-          public int getCapabilitiesCount() { return capabilities_.size(); }
+          /**
+           * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+           */
+          public java.util.List<? extends com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.CapabilityOrBuilder> 
+              getCapabilitiesOrBuilderList() {
+            return capabilities_;
+          }
+          /**
+           * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+           */
+          public int getCapabilitiesCount() {
+            return capabilities_.size();
+          }
+          /**
+           * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+           */
           public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability getCapabilities(int index) {
             return capabilities_.get(index);
           }
-          
+          /**
+           * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.CapabilityOrBuilder getCapabilitiesOrBuilder(
+              int index) {
+            return capabilities_.get(index);
+          }
+
+          private void initFields() {
+            capabilities_ = java.util.Collections.emptyList();
+          }
+          private byte memoizedIsInitialized = -1;
           public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized != -1) return isInitialized == 1;
+
+            memoizedIsInitialized = 1;
             return true;
           }
-          
+
           public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
                               throws java.io.IOException {
-            for (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability element : getCapabilitiesList()) {
-              output.writeMessage(2, element);
+            getSerializedSize();
+            for (int i = 0; i < capabilities_.size(); i++) {
+              output.writeMessage(2, capabilities_.get(i));
             }
             getUnknownFields().writeTo(output);
           }
-          
+
           private int memoizedSerializedSize = -1;
           public int getSerializedSize() {
             int size = memoizedSerializedSize;
             if (size != -1) return size;
-          
+
             size = 0;
-            for (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability element : getCapabilitiesList()) {
+            for (int i = 0; i < capabilities_.size(); i++) {
               size += com.google.gwt.dev.protobuf.CodedOutputStream
-                .computeMessageSize(2, element);
+                .computeMessageSize(2, capabilities_.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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange parseFrom(
               com.google.gwt.dev.protobuf.ByteString data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange parseFrom(
               com.google.gwt.dev.protobuf.ByteString data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange parseFrom(byte[] data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange parseFrom(
               byte[] data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange parseFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange parseFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange parseDelimitedFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input).buildParsed();
+            return PARSER.parseDelimitedFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange parseDelimitedFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseDelimitedFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
-          
+
           public static Builder newBuilder() { return Builder.create(); }
           public Builder newBuilderForType() { return newBuilder(); }
           public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange prototype) {
             return newBuilder().mergeFrom(prototype);
           }
           public Builder toBuilder() { return newBuilder(this); }
-          
+
+          @java.lang.Override
+          protected Builder newBuilderForType(
+              com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+          }
+          /**
+           * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange}
+           *
+           * <pre>
+           * Response for the capabilities of the DevModeService
+           * </pre>
+           */
           public static final class Builder extends
-              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange result;
-            
+              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+             implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchangeOrBuilder {
+            public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+                getDescriptor() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_CapabilityExchange_descriptor;
+            }
+
+            protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+                internalGetFieldAccessorTable() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_CapabilityExchange_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Builder.class);
+            }
+
             // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.newBuilder()
-            private Builder() {}
-            
-            private static Builder create() {
-              Builder builder = new Builder();
-              builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange();
-              return builder;
+            private Builder() {
+              maybeForceBuilderInitialization();
             }
-            
-            protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange internalGetResult() {
-              return result;
+
+            private Builder(
+                com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+              super(parent);
+              maybeForceBuilderInitialization();
             }
-            
-            public Builder clear() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "Cannot call clear() after build().");
+            private void maybeForceBuilderInitialization() {
+              if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+                getCapabilitiesFieldBuilder();
               }
-              result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange();
+            }
+            private static Builder create() {
+              return new Builder();
+            }
+
+            public Builder clear() {
+              super.clear();
+              if (capabilitiesBuilder_ == null) {
+                capabilities_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000001);
+              } else {
+                capabilitiesBuilder_.clear();
+              }
               return this;
             }
-            
+
             public Builder clone() {
-              return create().mergeFrom(result);
+              return create().mergeFrom(buildPartial());
             }
-            
+
             public com.google.gwt.dev.protobuf.Descriptors.Descriptor
                 getDescriptorForType() {
-              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.getDescriptor();
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_CapabilityExchange_descriptor;
             }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange getDefaultInstanceForType() {
               return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.getDefaultInstance();
             }
-            
-            public boolean isInitialized() {
-              return result.isInitialized();
-            }
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange build() {
-              if (result != null && !isInitialized()) {
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange result = buildPartial();
+              if (!result.isInitialized()) {
                 throw newUninitializedMessageException(result);
               }
-              return buildPartial();
+              return result;
             }
-            
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange buildParsed()
-                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              if (!isInitialized()) {
-                throw newUninitializedMessageException(
-                  result).asInvalidProtocolBufferException();
-              }
-              return buildPartial();
-            }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange buildPartial() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "build() has already been called on this Builder.");
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange(this);
+              int from_bitField0_ = bitField0_;
+              if (capabilitiesBuilder_ == null) {
+                if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                  capabilities_ = java.util.Collections.unmodifiableList(capabilities_);
+                  bitField0_ = (bitField0_ & ~0x00000001);
+                }
+                result.capabilities_ = capabilities_;
+              } else {
+                result.capabilities_ = capabilitiesBuilder_.build();
               }
-              if (result.capabilities_ != java.util.Collections.EMPTY_LIST) {
-                result.capabilities_ =
-                  java.util.Collections.unmodifiableList(result.capabilities_);
-              }
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange returnMe = result;
-              result = null;
-              return returnMe;
+              onBuilt();
+              return result;
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
               if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange) {
                 return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange)other);
@@ -8452,289 +16578,584 @@
                 return this;
               }
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange other) {
               if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.getDefaultInstance()) return this;
-              if (!other.capabilities_.isEmpty()) {
-                if (result.capabilities_.isEmpty()) {
-                  result.capabilities_ = new java.util.ArrayList<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability>();
+              if (capabilitiesBuilder_ == null) {
+                if (!other.capabilities_.isEmpty()) {
+                  if (capabilities_.isEmpty()) {
+                    capabilities_ = other.capabilities_;
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                  } else {
+                    ensureCapabilitiesIsMutable();
+                    capabilities_.addAll(other.capabilities_);
+                  }
+                  onChanged();
                 }
-                result.capabilities_.addAll(other.capabilities_);
+              } else {
+                if (!other.capabilities_.isEmpty()) {
+                  if (capabilitiesBuilder_.isEmpty()) {
+                    capabilitiesBuilder_.dispose();
+                    capabilitiesBuilder_ = null;
+                    capabilities_ = other.capabilities_;
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    capabilitiesBuilder_ = 
+                      com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                         getCapabilitiesFieldBuilder() : null;
+                  } else {
+                    capabilitiesBuilder_.addAllMessages(other.capabilities_);
+                  }
+                }
               }
               this.mergeUnknownFields(other.getUnknownFields());
               return this;
             }
-            
+
+            public final boolean isInitialized() {
+              return true;
+            }
+
             public Builder mergeFrom(
                 com.google.gwt.dev.protobuf.CodedInputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws java.io.IOException {
-              com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-                com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-                  this.getUnknownFields());
-              while (true) {
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange parsedMessage = null;
+              try {
+                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+              } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+                parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange) e.getUnfinishedMessage();
+                throw e;
+              } finally {
+                if (parsedMessage != null) {
+                  mergeFrom(parsedMessage);
+                }
+              }
+              return this;
+            }
+            private int bitField0_;
+
+            // repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;
+            private java.util.List<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability> capabilities_ =
+              java.util.Collections.emptyList();
+            private void ensureCapabilitiesIsMutable() {
+              if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+                capabilities_ = new java.util.ArrayList<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability>(capabilities_);
+                bitField0_ |= 0x00000001;
+               }
+            }
+
+            private com.google.gwt.dev.protobuf.RepeatedFieldBuilder<
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.CapabilityOrBuilder> capabilitiesBuilder_;
+
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public java.util.List<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability> getCapabilitiesList() {
+              if (capabilitiesBuilder_ == null) {
+                return java.util.Collections.unmodifiableList(capabilities_);
+              } else {
+                return capabilitiesBuilder_.getMessageList();
+              }
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public int getCapabilitiesCount() {
+              if (capabilitiesBuilder_ == null) {
+                return capabilities_.size();
+              } else {
+                return capabilitiesBuilder_.getCount();
+              }
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability getCapabilities(int index) {
+              if (capabilitiesBuilder_ == null) {
+                return capabilities_.get(index);
+              } else {
+                return capabilitiesBuilder_.getMessage(index);
+              }
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public Builder setCapabilities(
+                int index, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability value) {
+              if (capabilitiesBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureCapabilitiesIsMutable();
+                capabilities_.set(index, value);
+                onChanged();
+              } else {
+                capabilitiesBuilder_.setMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public Builder setCapabilities(
+                int index, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.Builder builderForValue) {
+              if (capabilitiesBuilder_ == null) {
+                ensureCapabilitiesIsMutable();
+                capabilities_.set(index, builderForValue.build());
+                onChanged();
+              } else {
+                capabilitiesBuilder_.setMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public Builder addCapabilities(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability value) {
+              if (capabilitiesBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureCapabilitiesIsMutable();
+                capabilities_.add(value);
+                onChanged();
+              } else {
+                capabilitiesBuilder_.addMessage(value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public Builder addCapabilities(
+                int index, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability value) {
+              if (capabilitiesBuilder_ == null) {
+                if (value == null) {
+                  throw new NullPointerException();
+                }
+                ensureCapabilitiesIsMutable();
+                capabilities_.add(index, value);
+                onChanged();
+              } else {
+                capabilitiesBuilder_.addMessage(index, value);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public Builder addCapabilities(
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.Builder builderForValue) {
+              if (capabilitiesBuilder_ == null) {
+                ensureCapabilitiesIsMutable();
+                capabilities_.add(builderForValue.build());
+                onChanged();
+              } else {
+                capabilitiesBuilder_.addMessage(builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public Builder addCapabilities(
+                int index, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.Builder builderForValue) {
+              if (capabilitiesBuilder_ == null) {
+                ensureCapabilitiesIsMutable();
+                capabilities_.add(index, builderForValue.build());
+                onChanged();
+              } else {
+                capabilitiesBuilder_.addMessage(index, builderForValue.build());
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public Builder addAllCapabilities(
+                java.lang.Iterable<? extends com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability> values) {
+              if (capabilitiesBuilder_ == null) {
+                ensureCapabilitiesIsMutable();
+                super.addAll(values, capabilities_);
+                onChanged();
+              } else {
+                capabilitiesBuilder_.addAllMessages(values);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public Builder clearCapabilities() {
+              if (capabilitiesBuilder_ == null) {
+                capabilities_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000001);
+                onChanged();
+              } else {
+                capabilitiesBuilder_.clear();
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public Builder removeCapabilities(int index) {
+              if (capabilitiesBuilder_ == null) {
+                ensureCapabilitiesIsMutable();
+                capabilities_.remove(index);
+                onChanged();
+              } else {
+                capabilitiesBuilder_.remove(index);
+              }
+              return this;
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.Builder getCapabilitiesBuilder(
+                int index) {
+              return getCapabilitiesFieldBuilder().getBuilder(index);
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.CapabilityOrBuilder getCapabilitiesOrBuilder(
+                int index) {
+              if (capabilitiesBuilder_ == null) {
+                return capabilities_.get(index);  } else {
+                return capabilitiesBuilder_.getMessageOrBuilder(index);
+              }
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public java.util.List<? extends com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.CapabilityOrBuilder> 
+                 getCapabilitiesOrBuilderList() {
+              if (capabilitiesBuilder_ != null) {
+                return capabilitiesBuilder_.getMessageOrBuilderList();
+              } else {
+                return java.util.Collections.unmodifiableList(capabilities_);
+              }
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.Builder addCapabilitiesBuilder() {
+              return getCapabilitiesFieldBuilder().addBuilder(
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.Builder addCapabilitiesBuilder(
+                int index) {
+              return getCapabilitiesFieldBuilder().addBuilder(
+                  index, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.getDefaultInstance());
+            }
+            /**
+             * <code>repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;</code>
+             */
+            public java.util.List<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.Builder> 
+                 getCapabilitiesBuilderList() {
+              return getCapabilitiesFieldBuilder().getBuilderList();
+            }
+            private com.google.gwt.dev.protobuf.RepeatedFieldBuilder<
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.CapabilityOrBuilder> 
+                getCapabilitiesFieldBuilder() {
+              if (capabilitiesBuilder_ == null) {
+                capabilitiesBuilder_ = new com.google.gwt.dev.protobuf.RepeatedFieldBuilder<
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.CapabilityOrBuilder>(
+                        capabilities_,
+                        ((bitField0_ & 0x00000001) == 0x00000001),
+                        getParentForChildren(),
+                        isClean());
+                capabilities_ = null;
+              }
+              return capabilitiesBuilder_;
+            }
+
+            // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange)
+          }
+
+          static {
+            defaultInstance = new CapabilityExchange(true);
+            defaultInstance.initFields();
+          }
+
+          // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange)
+        }
+
+        public interface RestartWebServerOrBuilder
+            extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+        }
+        /**
+         * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.RestartWebServer}
+         *
+         * <pre>
+         * Response to a RestartWebServer request. Right now, there is no information
+         * that needs to be passed back
+         * </pre>
+         */
+        public static final class RestartWebServer extends
+            com.google.gwt.dev.protobuf.GeneratedMessage
+            implements RestartWebServerOrBuilder {
+          // Use RestartWebServer.newBuilder() to construct.
+          private RestartWebServer(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+            super(builder);
+            this.unknownFields = builder.getUnknownFields();
+          }
+          private RestartWebServer(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+          private static final RestartWebServer defaultInstance;
+          public static RestartWebServer getDefaultInstance() {
+            return defaultInstance;
+          }
+
+          public RestartWebServer getDefaultInstanceForType() {
+            return defaultInstance;
+          }
+
+          private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+          @java.lang.Override
+          public final com.google.gwt.dev.protobuf.UnknownFieldSet
+              getUnknownFields() {
+            return this.unknownFields;
+          }
+          private RestartWebServer(
+              com.google.gwt.dev.protobuf.CodedInputStream input,
+              com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+            initFields();
+            com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+                com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder();
+            try {
+              boolean done = false;
+              while (!done) {
                 int tag = input.readTag();
                 switch (tag) {
                   case 0:
-                    this.setUnknownFields(unknownFields.build());
-                    return this;
+                    done = true;
+                    break;
                   default: {
                     if (!parseUnknownField(input, unknownFields,
                                            extensionRegistry, tag)) {
-                      this.setUnknownFields(unknownFields.build());
-                      return this;
+                      done = true;
                     }
                     break;
                   }
-                  case 18: {
-                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.newBuilder();
-                    input.readMessage(subBuilder, extensionRegistry);
-                    addCapabilities(subBuilder.buildPartial());
-                    break;
-                  }
                 }
               }
-            }
-            
-            
-            // repeated .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange.Capability capabilities = 2;
-            public java.util.List<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability> getCapabilitiesList() {
-              return java.util.Collections.unmodifiableList(result.capabilities_);
-            }
-            public int getCapabilitiesCount() {
-              return result.getCapabilitiesCount();
-            }
-            public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability getCapabilities(int index) {
-              return result.getCapabilities(index);
-            }
-            public Builder setCapabilities(int index, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability value) {
-              if (value == null) {
-                throw new NullPointerException();
-              }
-              result.capabilities_.set(index, value);
-              return this;
-            }
-            public Builder setCapabilities(int index, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.Builder builderForValue) {
-              result.capabilities_.set(index, builderForValue.build());
-              return this;
-            }
-            public Builder addCapabilities(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability value) {
-              if (value == null) {
-                throw new NullPointerException();
-              }
-              if (result.capabilities_.isEmpty()) {
-                result.capabilities_ = new java.util.ArrayList<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability>();
-              }
-              result.capabilities_.add(value);
-              return this;
-            }
-            public Builder addCapabilities(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.Builder builderForValue) {
-              if (result.capabilities_.isEmpty()) {
-                result.capabilities_ = new java.util.ArrayList<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability>();
-              }
-              result.capabilities_.add(builderForValue.build());
-              return this;
-            }
-            public Builder addAllCapabilities(
-                java.lang.Iterable<? extends com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability> values) {
-              if (result.capabilities_.isEmpty()) {
-                result.capabilities_ = new java.util.ArrayList<com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability>();
-              }
-              super.addAll(values, result.capabilities_);
-              return this;
-            }
-            public Builder clearCapabilities() {
-              result.capabilities_ = java.util.Collections.emptyList();
-              return this;
+            } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+              throw e.setUnfinishedMessage(this);
+            } catch (java.io.IOException e) {
+              throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+                  e.getMessage()).setUnfinishedMessage(this);
+            } finally {
+              this.unknownFields = unknownFields.build();
+              makeExtensionsImmutable();
             }
           }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
-          }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-          }
-        }
-        
-        public static final class RestartWebServer extends
-            com.google.gwt.dev.protobuf.GeneratedMessage {
-          // Use RestartWebServer.newBuilder() to construct.
-          private RestartWebServer() {}
-          
-          private static final RestartWebServer defaultInstance = new RestartWebServer();
-          public static RestartWebServer getDefaultInstance() {
-            return defaultInstance;
-          }
-          
-          public RestartWebServer getDefaultInstanceForType() {
-            return defaultInstance;
-          }
-          
           public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
               getDescriptor() {
             return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_RestartWebServer_descriptor;
           }
-          
+
           protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
               internalGetFieldAccessorTable() {
-            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_RestartWebServer_fieldAccessorTable;
+            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_RestartWebServer_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.Builder.class);
           }
-          
+
+          public static com.google.gwt.dev.protobuf.Parser<RestartWebServer> PARSER =
+              new com.google.gwt.dev.protobuf.AbstractParser<RestartWebServer>() {
+            public RestartWebServer parsePartialFrom(
+                com.google.gwt.dev.protobuf.CodedInputStream input,
+                com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+              return new RestartWebServer(input, extensionRegistry);
+            }
+          };
+
+          @java.lang.Override
+          public com.google.gwt.dev.protobuf.Parser<RestartWebServer> getParserForType() {
+            return PARSER;
+          }
+
+          private void initFields() {
+          }
+          private byte memoizedIsInitialized = -1;
           public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized != -1) return isInitialized == 1;
+
+            memoizedIsInitialized = 1;
             return true;
           }
-          
+
           public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
                               throws java.io.IOException {
+            getSerializedSize();
             getUnknownFields().writeTo(output);
           }
-          
+
           private int memoizedSerializedSize = -1;
           public int getSerializedSize() {
             int size = memoizedSerializedSize;
             if (size != -1) return size;
-          
+
             size = 0;
             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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer parseFrom(
               com.google.gwt.dev.protobuf.ByteString data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer parseFrom(
               com.google.gwt.dev.protobuf.ByteString data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer parseFrom(byte[] data)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data).buildParsed();
+            return PARSER.parseFrom(data);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer parseFrom(
               byte[] data,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            return newBuilder().mergeFrom(data, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(data, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer parseFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer parseFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer parseDelimitedFrom(java.io.InputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input).buildParsed();
+            return PARSER.parseDelimitedFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer parseDelimitedFrom(
               java.io.InputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseDelimitedFrom(input, extensionRegistry);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input).buildParsed();
+            return PARSER.parseFrom(input);
           }
           public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer parseFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            return newBuilder().mergeFrom(input, extensionRegistry)
-                     .buildParsed();
+            return PARSER.parseFrom(input, extensionRegistry);
           }
-          
+
           public static Builder newBuilder() { return Builder.create(); }
           public Builder newBuilderForType() { return newBuilder(); }
           public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer prototype) {
             return newBuilder().mergeFrom(prototype);
           }
           public Builder toBuilder() { return newBuilder(this); }
-          
+
+          @java.lang.Override
+          protected Builder newBuilderForType(
+              com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+          }
+          /**
+           * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.RestartWebServer}
+           *
+           * <pre>
+           * Response to a RestartWebServer request. Right now, there is no information
+           * that needs to be passed back
+           * </pre>
+           */
           public static final class Builder extends
-              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer result;
-            
+              com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+             implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServerOrBuilder {
+            public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+                getDescriptor() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_RestartWebServer_descriptor;
+            }
+
+            protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+                internalGetFieldAccessorTable() {
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_RestartWebServer_fieldAccessorTable
+                  .ensureFieldAccessorsInitialized(
+                      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.Builder.class);
+            }
+
             // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.newBuilder()
-            private Builder() {}
-            
-            private static Builder create() {
-              Builder builder = new Builder();
-              builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer();
-              return builder;
+            private Builder() {
+              maybeForceBuilderInitialization();
             }
-            
-            protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer internalGetResult() {
-              return result;
+
+            private Builder(
+                com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+              super(parent);
+              maybeForceBuilderInitialization();
             }
-            
-            public Builder clear() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "Cannot call clear() after build().");
+            private void maybeForceBuilderInitialization() {
+              if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
               }
-              result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer();
+            }
+            private static Builder create() {
+              return new Builder();
+            }
+
+            public Builder clear() {
+              super.clear();
               return this;
             }
-            
+
             public Builder clone() {
-              return create().mergeFrom(result);
+              return create().mergeFrom(buildPartial());
             }
-            
+
             public com.google.gwt.dev.protobuf.Descriptors.Descriptor
                 getDescriptorForType() {
-              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.getDescriptor();
+              return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_RestartWebServer_descriptor;
             }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer getDefaultInstanceForType() {
               return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.getDefaultInstance();
             }
-            
-            public boolean isInitialized() {
-              return result.isInitialized();
-            }
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer build() {
-              if (result != null && !isInitialized()) {
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer result = buildPartial();
+              if (!result.isInitialized()) {
                 throw newUninitializedMessageException(result);
               }
-              return buildPartial();
+              return result;
             }
-            
-            private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer buildParsed()
-                throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-              if (!isInitialized()) {
-                throw newUninitializedMessageException(
-                  result).asInvalidProtocolBufferException();
-              }
-              return buildPartial();
-            }
-            
+
             public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer buildPartial() {
-              if (result == null) {
-                throw new IllegalStateException(
-                  "build() has already been called on this Builder.");
-              }
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer returnMe = result;
-              result = null;
-              return returnMe;
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer(this);
+              onBuilt();
+              return result;
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
               if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer) {
                 return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer)other);
@@ -8743,244 +17164,343 @@
                 return this;
               }
             }
-            
+
             public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer other) {
               if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.getDefaultInstance()) return this;
               this.mergeUnknownFields(other.getUnknownFields());
               return this;
             }
-            
+
+            public final boolean isInitialized() {
+              return true;
+            }
+
             public Builder mergeFrom(
                 com.google.gwt.dev.protobuf.CodedInputStream input,
                 com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
                 throws java.io.IOException {
-              com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-                com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-                  this.getUnknownFields());
-              while (true) {
-                int tag = input.readTag();
-                switch (tag) {
-                  case 0:
-                    this.setUnknownFields(unknownFields.build());
-                    return this;
-                  default: {
-                    if (!parseUnknownField(input, unknownFields,
-                                           extensionRegistry, tag)) {
-                      this.setUnknownFields(unknownFields.build());
-                      return this;
-                    }
-                    break;
-                  }
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer parsedMessage = null;
+              try {
+                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+              } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+                parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer) e.getUnfinishedMessage();
+                throw e;
+              } finally {
+                if (parsedMessage != null) {
+                  mergeFrom(parsedMessage);
                 }
               }
+              return this;
             }
-            
+
+            // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.RestartWebServer)
           }
-          
+
           static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
+            defaultInstance = new RestartWebServer(true);
+            defaultInstance.initFields();
           }
-          
-          static {
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-          }
+
+          // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.RestartWebServer)
         }
-        
+
+        private int bitField0_;
         // optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.ResponseType responseType = 1;
         public static final int RESPONSETYPE_FIELD_NUMBER = 1;
-        private boolean hasResponseType;
-        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.ResponseType responseType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.ResponseType.CAPABILITY_EXCHANGE;
-        public boolean hasResponseType() { return hasResponseType; }
-        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.ResponseType getResponseType() { return responseType_; }
-        
+        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.ResponseType responseType_;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.ResponseType responseType = 1;</code>
+         */
+        public boolean hasResponseType() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.ResponseType responseType = 1;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.ResponseType getResponseType() {
+          return responseType_;
+        }
+
         // optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange capabilityExchange = 2;
         public static final int CAPABILITYEXCHANGE_FIELD_NUMBER = 2;
-        private boolean hasCapabilityExchange;
-        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange capabilityExchange_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.getDefaultInstance();
-        public boolean hasCapabilityExchange() { return hasCapabilityExchange; }
-        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange getCapabilityExchange() { return capabilityExchange_; }
-        
+        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange capabilityExchange_;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange capabilityExchange = 2;</code>
+         */
+        public boolean hasCapabilityExchange() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange capabilityExchange = 2;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange getCapabilityExchange() {
+          return capabilityExchange_;
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange capabilityExchange = 2;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchangeOrBuilder getCapabilityExchangeOrBuilder() {
+          return capabilityExchange_;
+        }
+
         // optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.RestartWebServer restartWebServer = 3;
         public static final int RESTARTWEBSERVER_FIELD_NUMBER = 3;
-        private boolean hasRestartWebServer;
-        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer restartWebServer_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.getDefaultInstance();
-        public boolean hasRestartWebServer() { return hasRestartWebServer; }
-        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer getRestartWebServer() { return restartWebServer_; }
-        
+        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer restartWebServer_;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.RestartWebServer restartWebServer = 3;</code>
+         */
+        public boolean hasRestartWebServer() {
+          return ((bitField0_ & 0x00000004) == 0x00000004);
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.RestartWebServer restartWebServer = 3;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer getRestartWebServer() {
+          return restartWebServer_;
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.RestartWebServer restartWebServer = 3;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServerOrBuilder getRestartWebServerOrBuilder() {
+          return restartWebServer_;
+        }
+
+        private void initFields() {
+          responseType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.ResponseType.CAPABILITY_EXCHANGE;
+          capabilityExchange_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.getDefaultInstance();
+          restartWebServer_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.getDefaultInstance();
+        }
+        private byte memoizedIsInitialized = -1;
         public final boolean isInitialized() {
+          byte isInitialized = memoizedIsInitialized;
+          if (isInitialized != -1) return isInitialized == 1;
+
+          memoizedIsInitialized = 1;
           return true;
         }
-        
+
         public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
                             throws java.io.IOException {
-          if (hasResponseType()) {
-            output.writeEnum(1, getResponseType().getNumber());
+          getSerializedSize();
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
+            output.writeEnum(1, responseType_.getNumber());
           }
-          if (hasCapabilityExchange()) {
-            output.writeMessage(2, getCapabilityExchange());
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
+            output.writeMessage(2, capabilityExchange_);
           }
-          if (hasRestartWebServer()) {
-            output.writeMessage(3, getRestartWebServer());
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
+            output.writeMessage(3, restartWebServer_);
           }
           getUnknownFields().writeTo(output);
         }
-        
+
         private int memoizedSerializedSize = -1;
         public int getSerializedSize() {
           int size = memoizedSerializedSize;
           if (size != -1) return size;
-        
+
           size = 0;
-          if (hasResponseType()) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
             size += com.google.gwt.dev.protobuf.CodedOutputStream
-              .computeEnumSize(1, getResponseType().getNumber());
+              .computeEnumSize(1, responseType_.getNumber());
           }
-          if (hasCapabilityExchange()) {
+          if (((bitField0_ & 0x00000002) == 0x00000002)) {
             size += com.google.gwt.dev.protobuf.CodedOutputStream
-              .computeMessageSize(2, getCapabilityExchange());
+              .computeMessageSize(2, capabilityExchange_);
           }
-          if (hasRestartWebServer()) {
+          if (((bitField0_ & 0x00000004) == 0x00000004)) {
             size += com.google.gwt.dev.protobuf.CodedOutputStream
-              .computeMessageSize(3, getRestartWebServer());
+              .computeMessageSize(3, restartWebServer_);
           }
           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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse parseFrom(
             com.google.gwt.dev.protobuf.ByteString data)
             throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-          return newBuilder().mergeFrom(data).buildParsed();
+          return PARSER.parseFrom(data);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse parseFrom(
             com.google.gwt.dev.protobuf.ByteString data,
             com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
             throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-          return newBuilder().mergeFrom(data, extensionRegistry)
-                   .buildParsed();
+          return PARSER.parseFrom(data, extensionRegistry);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse parseFrom(byte[] data)
             throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-          return newBuilder().mergeFrom(data).buildParsed();
+          return PARSER.parseFrom(data);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse parseFrom(
             byte[] data,
             com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
             throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-          return newBuilder().mergeFrom(data, extensionRegistry)
-                   .buildParsed();
+          return PARSER.parseFrom(data, extensionRegistry);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse parseFrom(java.io.InputStream input)
             throws java.io.IOException {
-          return newBuilder().mergeFrom(input).buildParsed();
+          return PARSER.parseFrom(input);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse parseFrom(
             java.io.InputStream input,
             com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
             throws java.io.IOException {
-          return newBuilder().mergeFrom(input, extensionRegistry)
-                   .buildParsed();
+          return PARSER.parseFrom(input, extensionRegistry);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse parseDelimitedFrom(java.io.InputStream input)
             throws java.io.IOException {
-          return newBuilder().mergeDelimitedFrom(input).buildParsed();
+          return PARSER.parseDelimitedFrom(input);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse parseDelimitedFrom(
             java.io.InputStream input,
             com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
             throws java.io.IOException {
-          return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                   .buildParsed();
+          return PARSER.parseDelimitedFrom(input, extensionRegistry);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse parseFrom(
             com.google.gwt.dev.protobuf.CodedInputStream input)
             throws java.io.IOException {
-          return newBuilder().mergeFrom(input).buildParsed();
+          return PARSER.parseFrom(input);
         }
         public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse parseFrom(
             com.google.gwt.dev.protobuf.CodedInputStream input,
             com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
             throws java.io.IOException {
-          return newBuilder().mergeFrom(input, extensionRegistry)
-                   .buildParsed();
+          return PARSER.parseFrom(input, extensionRegistry);
         }
-        
+
         public static Builder newBuilder() { return Builder.create(); }
         public Builder newBuilderForType() { return newBuilder(); }
         public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse prototype) {
           return newBuilder().mergeFrom(prototype);
         }
         public Builder toBuilder() { return newBuilder(this); }
-        
+
+        @java.lang.Override
+        protected Builder newBuilderForType(
+            com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+          Builder builder = new Builder(parent);
+          return builder;
+        }
+        /**
+         * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse}
+         *
+         * <pre>
+         * The root type for all response messages from the DevModeService
+         * </pre>
+         */
         public static final class Builder extends
-            com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse result;
-          
+            com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+           implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponseOrBuilder {
+          public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+              getDescriptor() {
+            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_descriptor;
+          }
+
+          protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+              internalGetFieldAccessorTable() {
+            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_fieldAccessorTable
+                .ensureFieldAccessorsInitialized(
+                    com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.Builder.class);
+          }
+
           // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.newBuilder()
-          private Builder() {}
-          
-          private static Builder create() {
-            Builder builder = new Builder();
-            builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse();
-            return builder;
+          private Builder() {
+            maybeForceBuilderInitialization();
           }
-          
-          protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse internalGetResult() {
-            return result;
+
+          private Builder(
+              com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+            super(parent);
+            maybeForceBuilderInitialization();
           }
-          
-          public Builder clear() {
-            if (result == null) {
-              throw new IllegalStateException(
-                "Cannot call clear() after build().");
+          private void maybeForceBuilderInitialization() {
+            if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+              getCapabilityExchangeFieldBuilder();
+              getRestartWebServerFieldBuilder();
             }
-            result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse();
+          }
+          private static Builder create() {
+            return new Builder();
+          }
+
+          public Builder clear() {
+            super.clear();
+            responseType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.ResponseType.CAPABILITY_EXCHANGE;
+            bitField0_ = (bitField0_ & ~0x00000001);
+            if (capabilityExchangeBuilder_ == null) {
+              capabilityExchange_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.getDefaultInstance();
+            } else {
+              capabilityExchangeBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000002);
+            if (restartWebServerBuilder_ == null) {
+              restartWebServer_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.getDefaultInstance();
+            } else {
+              restartWebServerBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000004);
             return this;
           }
-          
+
           public Builder clone() {
-            return create().mergeFrom(result);
+            return create().mergeFrom(buildPartial());
           }
-          
+
           public com.google.gwt.dev.protobuf.Descriptors.Descriptor
               getDescriptorForType() {
-            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.getDescriptor();
+            return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_descriptor;
           }
-          
+
           public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse getDefaultInstanceForType() {
             return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.getDefaultInstance();
           }
-          
-          public boolean isInitialized() {
-            return result.isInitialized();
-          }
+
           public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse build() {
-            if (result != null && !isInitialized()) {
+            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse result = buildPartial();
+            if (!result.isInitialized()) {
               throw newUninitializedMessageException(result);
             }
-            return buildPartial();
+            return result;
           }
-          
-          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse buildParsed()
-              throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-            if (!isInitialized()) {
-              throw newUninitializedMessageException(
-                result).asInvalidProtocolBufferException();
-            }
-            return buildPartial();
-          }
-          
+
           public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse buildPartial() {
-            if (result == null) {
-              throw new IllegalStateException(
-                "build() has already been called on this Builder.");
+            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse(this);
+            int from_bitField0_ = bitField0_;
+            int to_bitField0_ = 0;
+            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+              to_bitField0_ |= 0x00000001;
             }
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse returnMe = result;
-            result = null;
-            return returnMe;
+            result.responseType_ = responseType_;
+            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+              to_bitField0_ |= 0x00000002;
+            }
+            if (capabilityExchangeBuilder_ == null) {
+              result.capabilityExchange_ = capabilityExchange_;
+            } else {
+              result.capabilityExchange_ = capabilityExchangeBuilder_.build();
+            }
+            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+              to_bitField0_ |= 0x00000004;
+            }
+            if (restartWebServerBuilder_ == null) {
+              result.restartWebServer_ = restartWebServer_;
+            } else {
+              result.restartWebServer_ = restartWebServerBuilder_.build();
+            }
+            result.bitField0_ = to_bitField0_;
+            onBuilt();
+            return result;
           }
-          
+
           public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
             if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse) {
               return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse)other);
@@ -8989,7 +17509,7 @@
               return this;
             }
           }
-          
+
           public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse other) {
             if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.getDefaultInstance()) return this;
             if (other.hasResponseType()) {
@@ -9004,350 +17524,585 @@
             this.mergeUnknownFields(other.getUnknownFields());
             return this;
           }
-          
+
+          public final boolean isInitialized() {
+            return true;
+          }
+
           public Builder mergeFrom(
               com.google.gwt.dev.protobuf.CodedInputStream input,
               com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
               throws java.io.IOException {
-            com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-              com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-                this.getUnknownFields());
-            while (true) {
-              int tag = input.readTag();
-              switch (tag) {
-                case 0:
-                  this.setUnknownFields(unknownFields.build());
-                  return this;
-                default: {
-                  if (!parseUnknownField(input, unknownFields,
-                                         extensionRegistry, tag)) {
-                    this.setUnknownFields(unknownFields.build());
-                    return this;
-                  }
-                  break;
-                }
-                case 8: {
-                  int rawValue = input.readEnum();
-                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.ResponseType value = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.ResponseType.valueOf(rawValue);
-                  if (value == null) {
-                    unknownFields.mergeVarintField(1, rawValue);
-                  } else {
-                    setResponseType(value);
-                  }
-                  break;
-                }
-                case 18: {
-                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.newBuilder();
-                  if (hasCapabilityExchange()) {
-                    subBuilder.mergeFrom(getCapabilityExchange());
-                  }
-                  input.readMessage(subBuilder, extensionRegistry);
-                  setCapabilityExchange(subBuilder.buildPartial());
-                  break;
-                }
-                case 26: {
-                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.newBuilder();
-                  if (hasRestartWebServer()) {
-                    subBuilder.mergeFrom(getRestartWebServer());
-                  }
-                  input.readMessage(subBuilder, extensionRegistry);
-                  setRestartWebServer(subBuilder.buildPartial());
-                  break;
-                }
+            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse parsedMessage = null;
+            try {
+              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+            } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+              parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse) e.getUnfinishedMessage();
+              throw e;
+            } finally {
+              if (parsedMessage != null) {
+                mergeFrom(parsedMessage);
               }
             }
+            return this;
           }
-          
-          
+          private int bitField0_;
+
           // optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.ResponseType responseType = 1;
+          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.ResponseType responseType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.ResponseType.CAPABILITY_EXCHANGE;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.ResponseType responseType = 1;</code>
+           */
           public boolean hasResponseType() {
-            return result.hasResponseType();
+            return ((bitField0_ & 0x00000001) == 0x00000001);
           }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.ResponseType responseType = 1;</code>
+           */
           public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.ResponseType getResponseType() {
-            return result.getResponseType();
+            return responseType_;
           }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.ResponseType responseType = 1;</code>
+           */
           public Builder setResponseType(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.ResponseType value) {
             if (value == null) {
               throw new NullPointerException();
             }
-            result.hasResponseType = true;
-            result.responseType_ = value;
+            bitField0_ |= 0x00000001;
+            responseType_ = value;
+            onChanged();
             return this;
           }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.ResponseType responseType = 1;</code>
+           */
           public Builder clearResponseType() {
-            result.hasResponseType = false;
-            result.responseType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.ResponseType.CAPABILITY_EXCHANGE;
+            bitField0_ = (bitField0_ & ~0x00000001);
+            responseType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.ResponseType.CAPABILITY_EXCHANGE;
+            onChanged();
             return this;
           }
-          
+
           // optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange capabilityExchange = 2;
+          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange capabilityExchange_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.getDefaultInstance();
+          private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchangeOrBuilder> capabilityExchangeBuilder_;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange capabilityExchange = 2;</code>
+           */
           public boolean hasCapabilityExchange() {
-            return result.hasCapabilityExchange();
+            return ((bitField0_ & 0x00000002) == 0x00000002);
           }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange capabilityExchange = 2;</code>
+           */
           public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange getCapabilityExchange() {
-            return result.getCapabilityExchange();
+            if (capabilityExchangeBuilder_ == null) {
+              return capabilityExchange_;
+            } else {
+              return capabilityExchangeBuilder_.getMessage();
+            }
           }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange capabilityExchange = 2;</code>
+           */
           public Builder setCapabilityExchange(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange value) {
-            if (value == null) {
-              throw new NullPointerException();
+            if (capabilityExchangeBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              capabilityExchange_ = value;
+              onChanged();
+            } else {
+              capabilityExchangeBuilder_.setMessage(value);
             }
-            result.hasCapabilityExchange = true;
-            result.capabilityExchange_ = value;
+            bitField0_ |= 0x00000002;
             return this;
           }
-          public Builder setCapabilityExchange(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Builder builderForValue) {
-            result.hasCapabilityExchange = true;
-            result.capabilityExchange_ = builderForValue.build();
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange capabilityExchange = 2;</code>
+           */
+          public Builder setCapabilityExchange(
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Builder builderForValue) {
+            if (capabilityExchangeBuilder_ == null) {
+              capabilityExchange_ = builderForValue.build();
+              onChanged();
+            } else {
+              capabilityExchangeBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000002;
             return this;
           }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange capabilityExchange = 2;</code>
+           */
           public Builder mergeCapabilityExchange(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange value) {
-            if (result.hasCapabilityExchange() &&
-                result.capabilityExchange_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.getDefaultInstance()) {
-              result.capabilityExchange_ =
-                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.newBuilder(result.capabilityExchange_).mergeFrom(value).buildPartial();
+            if (capabilityExchangeBuilder_ == null) {
+              if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                  capabilityExchange_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.getDefaultInstance()) {
+                capabilityExchange_ =
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.newBuilder(capabilityExchange_).mergeFrom(value).buildPartial();
+              } else {
+                capabilityExchange_ = value;
+              }
+              onChanged();
             } else {
-              result.capabilityExchange_ = value;
+              capabilityExchangeBuilder_.mergeFrom(value);
             }
-            result.hasCapabilityExchange = true;
+            bitField0_ |= 0x00000002;
             return this;
           }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange capabilityExchange = 2;</code>
+           */
           public Builder clearCapabilityExchange() {
-            result.hasCapabilityExchange = false;
-            result.capabilityExchange_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.getDefaultInstance();
-            return this;
-          }
-          
-          // optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.RestartWebServer restartWebServer = 3;
-          public boolean hasRestartWebServer() {
-            return result.hasRestartWebServer();
-          }
-          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer getRestartWebServer() {
-            return result.getRestartWebServer();
-          }
-          public Builder setRestartWebServer(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer value) {
-            if (value == null) {
-              throw new NullPointerException();
-            }
-            result.hasRestartWebServer = true;
-            result.restartWebServer_ = value;
-            return this;
-          }
-          public Builder setRestartWebServer(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.Builder builderForValue) {
-            result.hasRestartWebServer = true;
-            result.restartWebServer_ = builderForValue.build();
-            return this;
-          }
-          public Builder mergeRestartWebServer(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer value) {
-            if (result.hasRestartWebServer() &&
-                result.restartWebServer_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.getDefaultInstance()) {
-              result.restartWebServer_ =
-                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.newBuilder(result.restartWebServer_).mergeFrom(value).buildPartial();
+            if (capabilityExchangeBuilder_ == null) {
+              capabilityExchange_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.getDefaultInstance();
+              onChanged();
             } else {
-              result.restartWebServer_ = value;
+              capabilityExchangeBuilder_.clear();
             }
-            result.hasRestartWebServer = true;
+            bitField0_ = (bitField0_ & ~0x00000002);
             return this;
           }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange capabilityExchange = 2;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Builder getCapabilityExchangeBuilder() {
+            bitField0_ |= 0x00000002;
+            onChanged();
+            return getCapabilityExchangeFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange capabilityExchange = 2;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchangeOrBuilder getCapabilityExchangeOrBuilder() {
+            if (capabilityExchangeBuilder_ != null) {
+              return capabilityExchangeBuilder_.getMessageOrBuilder();
+            } else {
+              return capabilityExchange_;
+            }
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.CapabilityExchange capabilityExchange = 2;</code>
+           */
+          private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchangeOrBuilder> 
+              getCapabilityExchangeFieldBuilder() {
+            if (capabilityExchangeBuilder_ == null) {
+              capabilityExchangeBuilder_ = new com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchangeOrBuilder>(
+                      capabilityExchange_,
+                      getParentForChildren(),
+                      isClean());
+              capabilityExchange_ = null;
+            }
+            return capabilityExchangeBuilder_;
+          }
+
+          // optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.RestartWebServer restartWebServer = 3;
+          private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer restartWebServer_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.getDefaultInstance();
+          private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServerOrBuilder> restartWebServerBuilder_;
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.RestartWebServer restartWebServer = 3;</code>
+           */
+          public boolean hasRestartWebServer() {
+            return ((bitField0_ & 0x00000004) == 0x00000004);
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.RestartWebServer restartWebServer = 3;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer getRestartWebServer() {
+            if (restartWebServerBuilder_ == null) {
+              return restartWebServer_;
+            } else {
+              return restartWebServerBuilder_.getMessage();
+            }
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.RestartWebServer restartWebServer = 3;</code>
+           */
+          public Builder setRestartWebServer(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer value) {
+            if (restartWebServerBuilder_ == null) {
+              if (value == null) {
+                throw new NullPointerException();
+              }
+              restartWebServer_ = value;
+              onChanged();
+            } else {
+              restartWebServerBuilder_.setMessage(value);
+            }
+            bitField0_ |= 0x00000004;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.RestartWebServer restartWebServer = 3;</code>
+           */
+          public Builder setRestartWebServer(
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.Builder builderForValue) {
+            if (restartWebServerBuilder_ == null) {
+              restartWebServer_ = builderForValue.build();
+              onChanged();
+            } else {
+              restartWebServerBuilder_.setMessage(builderForValue.build());
+            }
+            bitField0_ |= 0x00000004;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.RestartWebServer restartWebServer = 3;</code>
+           */
+          public Builder mergeRestartWebServer(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer value) {
+            if (restartWebServerBuilder_ == null) {
+              if (((bitField0_ & 0x00000004) == 0x00000004) &&
+                  restartWebServer_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.getDefaultInstance()) {
+                restartWebServer_ =
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.newBuilder(restartWebServer_).mergeFrom(value).buildPartial();
+              } else {
+                restartWebServer_ = value;
+              }
+              onChanged();
+            } else {
+              restartWebServerBuilder_.mergeFrom(value);
+            }
+            bitField0_ |= 0x00000004;
+            return this;
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.RestartWebServer restartWebServer = 3;</code>
+           */
           public Builder clearRestartWebServer() {
-            result.hasRestartWebServer = false;
-            result.restartWebServer_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.getDefaultInstance();
+            if (restartWebServerBuilder_ == null) {
+              restartWebServer_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.getDefaultInstance();
+              onChanged();
+            } else {
+              restartWebServerBuilder_.clear();
+            }
+            bitField0_ = (bitField0_ & ~0x00000004);
             return this;
           }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.RestartWebServer restartWebServer = 3;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.Builder getRestartWebServerBuilder() {
+            bitField0_ |= 0x00000004;
+            onChanged();
+            return getRestartWebServerFieldBuilder().getBuilder();
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.RestartWebServer restartWebServer = 3;</code>
+           */
+          public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServerOrBuilder getRestartWebServerOrBuilder() {
+            if (restartWebServerBuilder_ != null) {
+              return restartWebServerBuilder_.getMessageOrBuilder();
+            } else {
+              return restartWebServer_;
+            }
+          }
+          /**
+           * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse.RestartWebServer restartWebServer = 3;</code>
+           */
+          private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServerOrBuilder> 
+              getRestartWebServerFieldBuilder() {
+            if (restartWebServerBuilder_ == null) {
+              restartWebServerBuilder_ = new com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServerOrBuilder>(
+                      restartWebServer_,
+                      getParentForChildren(),
+                      isClean());
+              restartWebServer_ = null;
+            }
+            return restartWebServerBuilder_;
+          }
+
+          // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse)
         }
-        
+
         static {
-          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
+          defaultInstance = new DevModeResponse(true);
+          defaultInstance.initFields();
         }
-        
-        static {
-          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-        }
+
+        // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse)
       }
-      
+
+      private int bitField0_;
       // optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse viewerResponse = 1;
       public static final int VIEWERRESPONSE_FIELD_NUMBER = 1;
-      private boolean hasViewerResponse;
-      private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse viewerResponse_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.getDefaultInstance();
-      public boolean hasViewerResponse() { return hasViewerResponse; }
-      public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse getViewerResponse() { return viewerResponse_; }
-      
+      private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse viewerResponse_;
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse viewerResponse = 1;</code>
+       */
+      public boolean hasViewerResponse() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse viewerResponse = 1;</code>
+       */
+      public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse getViewerResponse() {
+        return viewerResponse_;
+      }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse viewerResponse = 1;</code>
+       */
+      public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponseOrBuilder getViewerResponseOrBuilder() {
+        return viewerResponse_;
+      }
+
       // optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse devModeResponse = 2;
       public static final int DEVMODERESPONSE_FIELD_NUMBER = 2;
-      private boolean hasDevModeResponse;
-      private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse devModeResponse_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.getDefaultInstance();
-      public boolean hasDevModeResponse() { return hasDevModeResponse; }
-      public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse getDevModeResponse() { return devModeResponse_; }
-      
+      private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse devModeResponse_;
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse devModeResponse = 2;</code>
+       */
+      public boolean hasDevModeResponse() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse devModeResponse = 2;</code>
+       */
+      public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse getDevModeResponse() {
+        return devModeResponse_;
+      }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse devModeResponse = 2;</code>
+       */
+      public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponseOrBuilder getDevModeResponseOrBuilder() {
+        return devModeResponse_;
+      }
+
+      private void initFields() {
+        viewerResponse_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.getDefaultInstance();
+        devModeResponse_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.getDefaultInstance();
+      }
+      private byte memoizedIsInitialized = -1;
       public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
         if (hasViewerResponse()) {
-          if (!getViewerResponse().isInitialized()) return false;
+          if (!getViewerResponse().isInitialized()) {
+            memoizedIsInitialized = 0;
+            return false;
+          }
         }
+        memoizedIsInitialized = 1;
         return true;
       }
-      
+
       public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
                           throws java.io.IOException {
-        if (hasViewerResponse()) {
-          output.writeMessage(1, getViewerResponse());
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeMessage(1, viewerResponse_);
         }
-        if (hasDevModeResponse()) {
-          output.writeMessage(2, getDevModeResponse());
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeMessage(2, devModeResponse_);
         }
         getUnknownFields().writeTo(output);
       }
-      
+
       private int memoizedSerializedSize = -1;
       public int getSerializedSize() {
         int size = memoizedSerializedSize;
         if (size != -1) return size;
-      
+
         size = 0;
-        if (hasViewerResponse()) {
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
           size += com.google.gwt.dev.protobuf.CodedOutputStream
-            .computeMessageSize(1, getViewerResponse());
+            .computeMessageSize(1, viewerResponse_);
         }
-        if (hasDevModeResponse()) {
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
           size += com.google.gwt.dev.protobuf.CodedOutputStream
-            .computeMessageSize(2, getDevModeResponse());
+            .computeMessageSize(2, devModeResponse_);
         }
         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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response parseFrom(
           com.google.gwt.dev.protobuf.ByteString data)
           throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data).buildParsed();
+        return PARSER.parseFrom(data);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response parseFrom(
           com.google.gwt.dev.protobuf.ByteString data,
           com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(data, extensionRegistry);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response parseFrom(byte[] data)
           throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data).buildParsed();
+        return PARSER.parseFrom(data);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response parseFrom(
           byte[] data,
           com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(data, extensionRegistry);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response parseFrom(java.io.InputStream input)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input).buildParsed();
+        return PARSER.parseFrom(input);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response parseFrom(
           java.io.InputStream input,
           com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(input, extensionRegistry);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response parseDelimitedFrom(java.io.InputStream input)
           throws java.io.IOException {
-        return newBuilder().mergeDelimitedFrom(input).buildParsed();
+        return PARSER.parseDelimitedFrom(input);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response parseDelimitedFrom(
           java.io.InputStream input,
           com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response parseFrom(
           com.google.gwt.dev.protobuf.CodedInputStream input)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input).buildParsed();
+        return PARSER.parseFrom(input);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response parseFrom(
           com.google.gwt.dev.protobuf.CodedInputStream input,
           com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(input, extensionRegistry);
       }
-      
+
       public static Builder newBuilder() { return Builder.create(); }
       public Builder newBuilderForType() { return newBuilder(); }
       public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response prototype) {
         return newBuilder().mergeFrom(prototype);
       }
       public Builder toBuilder() { return newBuilder(this); }
-      
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Response}
+       *
+       * <pre>
+       * A response message for a request. This is the root type for all response 
+       * messages. 
+       * </pre>
+       */
       public static final class Builder extends
-          com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response result;
-        
+          com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+         implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.ResponseOrBuilder {
+        public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_descriptor;
+        }
+
+        protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.Builder.class);
+        }
+
         // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.newBuilder()
-        private Builder() {}
-        
-        private static Builder create() {
-          Builder builder = new Builder();
-          builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response();
-          return builder;
+        private Builder() {
+          maybeForceBuilderInitialization();
         }
-        
-        protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response internalGetResult() {
-          return result;
+
+        private Builder(
+            com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
         }
-        
-        public Builder clear() {
-          if (result == null) {
-            throw new IllegalStateException(
-              "Cannot call clear() after build().");
+        private void maybeForceBuilderInitialization() {
+          if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+            getViewerResponseFieldBuilder();
+            getDevModeResponseFieldBuilder();
           }
-          result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response();
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          if (viewerResponseBuilder_ == null) {
+            viewerResponse_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.getDefaultInstance();
+          } else {
+            viewerResponseBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          if (devModeResponseBuilder_ == null) {
+            devModeResponse_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.getDefaultInstance();
+          } else {
+            devModeResponseBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
           return this;
         }
-        
+
         public Builder clone() {
-          return create().mergeFrom(result);
+          return create().mergeFrom(buildPartial());
         }
-        
+
         public com.google.gwt.dev.protobuf.Descriptors.Descriptor
             getDescriptorForType() {
-          return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.getDescriptor();
+          return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_descriptor;
         }
-        
+
         public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response getDefaultInstanceForType() {
           return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.getDefaultInstance();
         }
-        
-        public boolean isInitialized() {
-          return result.isInitialized();
-        }
+
         public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response build() {
-          if (result != null && !isInitialized()) {
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response result = buildPartial();
+          if (!result.isInitialized()) {
             throw newUninitializedMessageException(result);
           }
-          return buildPartial();
+          return result;
         }
-        
-        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response buildParsed()
-            throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-          if (!isInitialized()) {
-            throw newUninitializedMessageException(
-              result).asInvalidProtocolBufferException();
-          }
-          return buildPartial();
-        }
-        
+
         public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response buildPartial() {
-          if (result == null) {
-            throw new IllegalStateException(
-              "build() has already been called on this Builder.");
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
           }
-          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response returnMe = result;
-          result = null;
-          return returnMe;
+          if (viewerResponseBuilder_ == null) {
+            result.viewerResponse_ = viewerResponse_;
+          } else {
+            result.viewerResponse_ = viewerResponseBuilder_.build();
+          }
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          if (devModeResponseBuilder_ == null) {
+            result.devModeResponse_ = devModeResponse_;
+          } else {
+            result.devModeResponse_ = devModeResponseBuilder_.build();
+          }
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
         }
-        
+
         public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
           if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response) {
             return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response)other);
@@ -9356,7 +18111,7 @@
             return this;
           }
         }
-        
+
         public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response other) {
           if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.getDefaultInstance()) return this;
           if (other.hasViewerResponse()) {
@@ -9368,340 +18123,701 @@
           this.mergeUnknownFields(other.getUnknownFields());
           return this;
         }
-        
+
+        public final boolean isInitialized() {
+          if (hasViewerResponse()) {
+            if (!getViewerResponse().isInitialized()) {
+              
+              return false;
+            }
+          }
+          return true;
+        }
+
         public Builder mergeFrom(
             com.google.gwt.dev.protobuf.CodedInputStream input,
             com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
             throws java.io.IOException {
-          com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-            com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-              this.getUnknownFields());
-          while (true) {
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+        private int bitField0_;
+
+        // optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse viewerResponse = 1;
+        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse viewerResponse_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.getDefaultInstance();
+        private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponseOrBuilder> viewerResponseBuilder_;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse viewerResponse = 1;</code>
+         */
+        public boolean hasViewerResponse() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse viewerResponse = 1;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse getViewerResponse() {
+          if (viewerResponseBuilder_ == null) {
+            return viewerResponse_;
+          } else {
+            return viewerResponseBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse viewerResponse = 1;</code>
+         */
+        public Builder setViewerResponse(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse value) {
+          if (viewerResponseBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            viewerResponse_ = value;
+            onChanged();
+          } else {
+            viewerResponseBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse viewerResponse = 1;</code>
+         */
+        public Builder setViewerResponse(
+            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.Builder builderForValue) {
+          if (viewerResponseBuilder_ == null) {
+            viewerResponse_ = builderForValue.build();
+            onChanged();
+          } else {
+            viewerResponseBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse viewerResponse = 1;</code>
+         */
+        public Builder mergeViewerResponse(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse value) {
+          if (viewerResponseBuilder_ == null) {
+            if (((bitField0_ & 0x00000001) == 0x00000001) &&
+                viewerResponse_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.getDefaultInstance()) {
+              viewerResponse_ =
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.newBuilder(viewerResponse_).mergeFrom(value).buildPartial();
+            } else {
+              viewerResponse_ = value;
+            }
+            onChanged();
+          } else {
+            viewerResponseBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000001;
+          return this;
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse viewerResponse = 1;</code>
+         */
+        public Builder clearViewerResponse() {
+          if (viewerResponseBuilder_ == null) {
+            viewerResponse_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.getDefaultInstance();
+            onChanged();
+          } else {
+            viewerResponseBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse viewerResponse = 1;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.Builder getViewerResponseBuilder() {
+          bitField0_ |= 0x00000001;
+          onChanged();
+          return getViewerResponseFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse viewerResponse = 1;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponseOrBuilder getViewerResponseOrBuilder() {
+          if (viewerResponseBuilder_ != null) {
+            return viewerResponseBuilder_.getMessageOrBuilder();
+          } else {
+            return viewerResponse_;
+          }
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse viewerResponse = 1;</code>
+         */
+        private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponseOrBuilder> 
+            getViewerResponseFieldBuilder() {
+          if (viewerResponseBuilder_ == null) {
+            viewerResponseBuilder_ = new com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponseOrBuilder>(
+                    viewerResponse_,
+                    getParentForChildren(),
+                    isClean());
+            viewerResponse_ = null;
+          }
+          return viewerResponseBuilder_;
+        }
+
+        // optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse devModeResponse = 2;
+        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse devModeResponse_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.getDefaultInstance();
+        private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponseOrBuilder> devModeResponseBuilder_;
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse devModeResponse = 2;</code>
+         */
+        public boolean hasDevModeResponse() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse devModeResponse = 2;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse getDevModeResponse() {
+          if (devModeResponseBuilder_ == null) {
+            return devModeResponse_;
+          } else {
+            return devModeResponseBuilder_.getMessage();
+          }
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse devModeResponse = 2;</code>
+         */
+        public Builder setDevModeResponse(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse value) {
+          if (devModeResponseBuilder_ == null) {
+            if (value == null) {
+              throw new NullPointerException();
+            }
+            devModeResponse_ = value;
+            onChanged();
+          } else {
+            devModeResponseBuilder_.setMessage(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse devModeResponse = 2;</code>
+         */
+        public Builder setDevModeResponse(
+            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.Builder builderForValue) {
+          if (devModeResponseBuilder_ == null) {
+            devModeResponse_ = builderForValue.build();
+            onChanged();
+          } else {
+            devModeResponseBuilder_.setMessage(builderForValue.build());
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse devModeResponse = 2;</code>
+         */
+        public Builder mergeDevModeResponse(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse value) {
+          if (devModeResponseBuilder_ == null) {
+            if (((bitField0_ & 0x00000002) == 0x00000002) &&
+                devModeResponse_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.getDefaultInstance()) {
+              devModeResponse_ =
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.newBuilder(devModeResponse_).mergeFrom(value).buildPartial();
+            } else {
+              devModeResponse_ = value;
+            }
+            onChanged();
+          } else {
+            devModeResponseBuilder_.mergeFrom(value);
+          }
+          bitField0_ |= 0x00000002;
+          return this;
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse devModeResponse = 2;</code>
+         */
+        public Builder clearDevModeResponse() {
+          if (devModeResponseBuilder_ == null) {
+            devModeResponse_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.getDefaultInstance();
+            onChanged();
+          } else {
+            devModeResponseBuilder_.clear();
+          }
+          bitField0_ = (bitField0_ & ~0x00000002);
+          return this;
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse devModeResponse = 2;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.Builder getDevModeResponseBuilder() {
+          bitField0_ |= 0x00000002;
+          onChanged();
+          return getDevModeResponseFieldBuilder().getBuilder();
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse devModeResponse = 2;</code>
+         */
+        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponseOrBuilder getDevModeResponseOrBuilder() {
+          if (devModeResponseBuilder_ != null) {
+            return devModeResponseBuilder_.getMessageOrBuilder();
+          } else {
+            return devModeResponse_;
+          }
+        }
+        /**
+         * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse devModeResponse = 2;</code>
+         */
+        private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponseOrBuilder> 
+            getDevModeResponseFieldBuilder() {
+          if (devModeResponseBuilder_ == null) {
+            devModeResponseBuilder_ = new com.google.gwt.dev.protobuf.SingleFieldBuilder<
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponseOrBuilder>(
+                    devModeResponse_,
+                    getParentForChildren(),
+                    isClean());
+            devModeResponse_ = null;
+          }
+          return devModeResponseBuilder_;
+        }
+
+        // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Response)
+      }
+
+      static {
+        defaultInstance = new Response(true);
+        defaultInstance.initFields();
+      }
+
+      // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Response)
+    }
+
+    public interface FailureOrBuilder
+        extends com.google.gwt.dev.protobuf.MessageOrBuilder {
+
+      // optional string message = 1;
+      /**
+       * <code>optional string message = 1;</code>
+       */
+      boolean hasMessage();
+      /**
+       * <code>optional string message = 1;</code>
+       */
+      java.lang.String getMessage();
+      /**
+       * <code>optional string message = 1;</code>
+       */
+      com.google.gwt.dev.protobuf.ByteString
+          getMessageBytes();
+
+      // optional string stackTrace = 2;
+      /**
+       * <code>optional string stackTrace = 2;</code>
+       */
+      boolean hasStackTrace();
+      /**
+       * <code>optional string stackTrace = 2;</code>
+       */
+      java.lang.String getStackTrace();
+      /**
+       * <code>optional string stackTrace = 2;</code>
+       */
+      com.google.gwt.dev.protobuf.ByteString
+          getStackTraceBytes();
+    }
+    /**
+     * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Failure}
+     */
+    public static final class Failure extends
+        com.google.gwt.dev.protobuf.GeneratedMessage
+        implements FailureOrBuilder {
+      // Use Failure.newBuilder() to construct.
+      private Failure(com.google.gwt.dev.protobuf.GeneratedMessage.Builder<?> builder) {
+        super(builder);
+        this.unknownFields = builder.getUnknownFields();
+      }
+      private Failure(boolean noInit) { this.unknownFields = com.google.gwt.dev.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+      private static final Failure defaultInstance;
+      public static Failure getDefaultInstance() {
+        return defaultInstance;
+      }
+
+      public Failure getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+
+      private final com.google.gwt.dev.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.gwt.dev.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Failure(
+          com.google.gwt.dev.protobuf.CodedInputStream input,
+          com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+        initFields();
+        int mutable_bitField0_ = 0;
+        com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
             int tag = input.readTag();
             switch (tag) {
               case 0:
-                this.setUnknownFields(unknownFields.build());
-                return this;
+                done = true;
+                break;
               default: {
                 if (!parseUnknownField(input, unknownFields,
                                        extensionRegistry, tag)) {
-                  this.setUnknownFields(unknownFields.build());
-                  return this;
+                  done = true;
                 }
                 break;
               }
               case 10: {
-                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.newBuilder();
-                if (hasViewerResponse()) {
-                  subBuilder.mergeFrom(getViewerResponse());
-                }
-                input.readMessage(subBuilder, extensionRegistry);
-                setViewerResponse(subBuilder.buildPartial());
+                bitField0_ |= 0x00000001;
+                message_ = input.readBytes();
                 break;
               }
               case 18: {
-                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.newBuilder();
-                if (hasDevModeResponse()) {
-                  subBuilder.mergeFrom(getDevModeResponse());
-                }
-                input.readMessage(subBuilder, extensionRegistry);
-                setDevModeResponse(subBuilder.buildPartial());
+                bitField0_ |= 0x00000002;
+                stackTrace_ = input.readBytes();
                 break;
               }
             }
           }
-        }
-        
-        
-        // optional .com.google.gwt.dev.shell.remoteui.Message.Response.ViewerResponse viewerResponse = 1;
-        public boolean hasViewerResponse() {
-          return result.hasViewerResponse();
-        }
-        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse getViewerResponse() {
-          return result.getViewerResponse();
-        }
-        public Builder setViewerResponse(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse value) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          result.hasViewerResponse = true;
-          result.viewerResponse_ = value;
-          return this;
-        }
-        public Builder setViewerResponse(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.Builder builderForValue) {
-          result.hasViewerResponse = true;
-          result.viewerResponse_ = builderForValue.build();
-          return this;
-        }
-        public Builder mergeViewerResponse(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse value) {
-          if (result.hasViewerResponse() &&
-              result.viewerResponse_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.getDefaultInstance()) {
-            result.viewerResponse_ =
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.newBuilder(result.viewerResponse_).mergeFrom(value).buildPartial();
-          } else {
-            result.viewerResponse_ = value;
-          }
-          result.hasViewerResponse = true;
-          return this;
-        }
-        public Builder clearViewerResponse() {
-          result.hasViewerResponse = false;
-          result.viewerResponse_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.getDefaultInstance();
-          return this;
-        }
-        
-        // optional .com.google.gwt.dev.shell.remoteui.Message.Response.DevModeResponse devModeResponse = 2;
-        public boolean hasDevModeResponse() {
-          return result.hasDevModeResponse();
-        }
-        public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse getDevModeResponse() {
-          return result.getDevModeResponse();
-        }
-        public Builder setDevModeResponse(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse value) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          result.hasDevModeResponse = true;
-          result.devModeResponse_ = value;
-          return this;
-        }
-        public Builder setDevModeResponse(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.Builder builderForValue) {
-          result.hasDevModeResponse = true;
-          result.devModeResponse_ = builderForValue.build();
-          return this;
-        }
-        public Builder mergeDevModeResponse(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse value) {
-          if (result.hasDevModeResponse() &&
-              result.devModeResponse_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.getDefaultInstance()) {
-            result.devModeResponse_ =
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.newBuilder(result.devModeResponse_).mergeFrom(value).buildPartial();
-          } else {
-            result.devModeResponse_ = value;
-          }
-          result.hasDevModeResponse = true;
-          return this;
-        }
-        public Builder clearDevModeResponse() {
-          result.hasDevModeResponse = false;
-          result.devModeResponse_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.getDefaultInstance();
-          return this;
+        } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.gwt.dev.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
         }
       }
-      
-      static {
-        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
-      }
-      
-      static {
-        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-      }
-    }
-    
-    public static final class Failure extends
-        com.google.gwt.dev.protobuf.GeneratedMessage {
-      // Use Failure.newBuilder() to construct.
-      private Failure() {}
-      
-      private static final Failure defaultInstance = new Failure();
-      public static Failure getDefaultInstance() {
-        return defaultInstance;
-      }
-      
-      public Failure getDefaultInstanceForType() {
-        return defaultInstance;
-      }
-      
       public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
           getDescriptor() {
         return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Failure_descriptor;
       }
-      
+
       protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Failure_fieldAccessorTable;
+        return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Failure_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.Builder.class);
       }
-      
+
+      public static com.google.gwt.dev.protobuf.Parser<Failure> PARSER =
+          new com.google.gwt.dev.protobuf.AbstractParser<Failure>() {
+        public Failure parsePartialFrom(
+            com.google.gwt.dev.protobuf.CodedInputStream input,
+            com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
+          return new Failure(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.gwt.dev.protobuf.Parser<Failure> getParserForType() {
+        return PARSER;
+      }
+
+      private int bitField0_;
       // optional string message = 1;
       public static final int MESSAGE_FIELD_NUMBER = 1;
-      private boolean hasMessage;
-      private java.lang.String message_ = "";
-      public boolean hasMessage() { return hasMessage; }
-      public java.lang.String getMessage() { return message_; }
-      
+      private java.lang.Object message_;
+      /**
+       * <code>optional string message = 1;</code>
+       */
+      public boolean hasMessage() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional string message = 1;</code>
+       */
+      public java.lang.String getMessage() {
+        java.lang.Object ref = message_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.gwt.dev.protobuf.ByteString bs = 
+              (com.google.gwt.dev.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            message_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string message = 1;</code>
+       */
+      public com.google.gwt.dev.protobuf.ByteString
+          getMessageBytes() {
+        java.lang.Object ref = message_;
+        if (ref instanceof java.lang.String) {
+          com.google.gwt.dev.protobuf.ByteString b = 
+              com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          message_ = b;
+          return b;
+        } else {
+          return (com.google.gwt.dev.protobuf.ByteString) ref;
+        }
+      }
+
       // optional string stackTrace = 2;
       public static final int STACKTRACE_FIELD_NUMBER = 2;
-      private boolean hasStackTrace;
-      private java.lang.String stackTrace_ = "";
-      public boolean hasStackTrace() { return hasStackTrace; }
-      public java.lang.String getStackTrace() { return stackTrace_; }
-      
+      private java.lang.Object stackTrace_;
+      /**
+       * <code>optional string stackTrace = 2;</code>
+       */
+      public boolean hasStackTrace() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>optional string stackTrace = 2;</code>
+       */
+      public java.lang.String getStackTrace() {
+        java.lang.Object ref = stackTrace_;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.gwt.dev.protobuf.ByteString bs = 
+              (com.google.gwt.dev.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            stackTrace_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       * <code>optional string stackTrace = 2;</code>
+       */
+      public com.google.gwt.dev.protobuf.ByteString
+          getStackTraceBytes() {
+        java.lang.Object ref = stackTrace_;
+        if (ref instanceof java.lang.String) {
+          com.google.gwt.dev.protobuf.ByteString b = 
+              com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          stackTrace_ = b;
+          return b;
+        } else {
+          return (com.google.gwt.dev.protobuf.ByteString) ref;
+        }
+      }
+
+      private void initFields() {
+        message_ = "";
+        stackTrace_ = "";
+      }
+      private byte memoizedIsInitialized = -1;
       public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized != -1) return isInitialized == 1;
+
+        memoizedIsInitialized = 1;
         return true;
       }
-      
+
       public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
                           throws java.io.IOException {
-        if (hasMessage()) {
-          output.writeString(1, getMessage());
+        getSerializedSize();
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeBytes(1, getMessageBytes());
         }
-        if (hasStackTrace()) {
-          output.writeString(2, getStackTrace());
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          output.writeBytes(2, getStackTraceBytes());
         }
         getUnknownFields().writeTo(output);
       }
-      
+
       private int memoizedSerializedSize = -1;
       public int getSerializedSize() {
         int size = memoizedSerializedSize;
         if (size != -1) return size;
-      
+
         size = 0;
-        if (hasMessage()) {
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
           size += com.google.gwt.dev.protobuf.CodedOutputStream
-            .computeStringSize(1, getMessage());
+            .computeBytesSize(1, getMessageBytes());
         }
-        if (hasStackTrace()) {
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
           size += com.google.gwt.dev.protobuf.CodedOutputStream
-            .computeStringSize(2, getStackTrace());
+            .computeBytesSize(2, getStackTraceBytes());
         }
         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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure parseFrom(
           com.google.gwt.dev.protobuf.ByteString data)
           throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data).buildParsed();
+        return PARSER.parseFrom(data);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure parseFrom(
           com.google.gwt.dev.protobuf.ByteString data,
           com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(data, extensionRegistry);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure parseFrom(byte[] data)
           throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data).buildParsed();
+        return PARSER.parseFrom(data);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure parseFrom(
           byte[] data,
           com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(data, extensionRegistry);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure parseFrom(java.io.InputStream input)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input).buildParsed();
+        return PARSER.parseFrom(input);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure parseFrom(
           java.io.InputStream input,
           com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(input, extensionRegistry);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure parseDelimitedFrom(java.io.InputStream input)
           throws java.io.IOException {
-        return newBuilder().mergeDelimitedFrom(input).buildParsed();
+        return PARSER.parseDelimitedFrom(input);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure parseDelimitedFrom(
           java.io.InputStream input,
           com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure parseFrom(
           com.google.gwt.dev.protobuf.CodedInputStream input)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input).buildParsed();
+        return PARSER.parseFrom(input);
       }
       public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure parseFrom(
           com.google.gwt.dev.protobuf.CodedInputStream input,
           com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(input, extensionRegistry);
       }
-      
+
       public static Builder newBuilder() { return Builder.create(); }
       public Builder newBuilderForType() { return newBuilder(); }
       public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure prototype) {
         return newBuilder().mergeFrom(prototype);
       }
       public Builder toBuilder() { return newBuilder(this); }
-      
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message.Failure}
+       */
       public static final class Builder extends
-          com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure result;
-        
+          com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+         implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.FailureOrBuilder {
+        public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Failure_descriptor;
+        }
+
+        protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Failure_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.Builder.class);
+        }
+
         // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.newBuilder()
-        private Builder() {}
-        
-        private static Builder create() {
-          Builder builder = new Builder();
-          builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure();
-          return builder;
+        private Builder() {
+          maybeForceBuilderInitialization();
         }
-        
-        protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure internalGetResult() {
-          return result;
+
+        private Builder(
+            com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
         }
-        
-        public Builder clear() {
-          if (result == null) {
-            throw new IllegalStateException(
-              "Cannot call clear() after build().");
+        private void maybeForceBuilderInitialization() {
+          if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
           }
-          result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure();
+        }
+        private static Builder create() {
+          return new Builder();
+        }
+
+        public Builder clear() {
+          super.clear();
+          message_ = "";
+          bitField0_ = (bitField0_ & ~0x00000001);
+          stackTrace_ = "";
+          bitField0_ = (bitField0_ & ~0x00000002);
           return this;
         }
-        
+
         public Builder clone() {
-          return create().mergeFrom(result);
+          return create().mergeFrom(buildPartial());
         }
-        
+
         public com.google.gwt.dev.protobuf.Descriptors.Descriptor
             getDescriptorForType() {
-          return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.getDescriptor();
+          return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_Failure_descriptor;
         }
-        
+
         public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure getDefaultInstanceForType() {
           return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.getDefaultInstance();
         }
-        
-        public boolean isInitialized() {
-          return result.isInitialized();
-        }
+
         public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure build() {
-          if (result != null && !isInitialized()) {
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure result = buildPartial();
+          if (!result.isInitialized()) {
             throw newUninitializedMessageException(result);
           }
-          return buildPartial();
+          return result;
         }
-        
-        private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure buildParsed()
-            throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-          if (!isInitialized()) {
-            throw newUninitializedMessageException(
-              result).asInvalidProtocolBufferException();
-          }
-          return buildPartial();
-        }
-        
+
         public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure buildPartial() {
-          if (result == null) {
-            throw new IllegalStateException(
-              "build() has already been called on this Builder.");
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure(this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
           }
-          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure returnMe = result;
-          result = null;
-          return returnMe;
+          result.message_ = message_;
+          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+            to_bitField0_ |= 0x00000002;
+          }
+          result.stackTrace_ = stackTrace_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
         }
-        
+
         public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
           if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure) {
             return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure)other);
@@ -9710,349 +18826,665 @@
             return this;
           }
         }
-        
+
         public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure other) {
           if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.getDefaultInstance()) return this;
           if (other.hasMessage()) {
-            setMessage(other.getMessage());
+            bitField0_ |= 0x00000001;
+            message_ = other.message_;
+            onChanged();
           }
           if (other.hasStackTrace()) {
-            setStackTrace(other.getStackTrace());
+            bitField0_ |= 0x00000002;
+            stackTrace_ = other.stackTrace_;
+            onChanged();
           }
           this.mergeUnknownFields(other.getUnknownFields());
           return this;
         }
-        
+
+        public final boolean isInitialized() {
+          return true;
+        }
+
         public Builder mergeFrom(
             com.google.gwt.dev.protobuf.CodedInputStream input,
             com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
             throws java.io.IOException {
-          com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-            com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-              this.getUnknownFields());
-          while (true) {
-            int tag = input.readTag();
-            switch (tag) {
-              case 0:
-                this.setUnknownFields(unknownFields.build());
-                return this;
-              default: {
-                if (!parseUnknownField(input, unknownFields,
-                                       extensionRegistry, tag)) {
-                  this.setUnknownFields(unknownFields.build());
-                  return this;
-                }
-                break;
-              }
-              case 10: {
-                setMessage(input.readString());
-                break;
-              }
-              case 18: {
-                setStackTrace(input.readString());
-                break;
-              }
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
             }
           }
+          return this;
         }
-        
-        
+        private int bitField0_;
+
         // optional string message = 1;
+        private java.lang.Object message_ = "";
+        /**
+         * <code>optional string message = 1;</code>
+         */
         public boolean hasMessage() {
-          return result.hasMessage();
+          return ((bitField0_ & 0x00000001) == 0x00000001);
         }
+        /**
+         * <code>optional string message = 1;</code>
+         */
         public java.lang.String getMessage() {
-          return result.getMessage();
+          java.lang.Object ref = message_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.gwt.dev.protobuf.ByteString) ref)
+                .toStringUtf8();
+            message_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
         }
-        public Builder setMessage(java.lang.String value) {
+        /**
+         * <code>optional string message = 1;</code>
+         */
+        public com.google.gwt.dev.protobuf.ByteString
+            getMessageBytes() {
+          java.lang.Object ref = message_;
+          if (ref instanceof String) {
+            com.google.gwt.dev.protobuf.ByteString b = 
+                com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            message_ = b;
+            return b;
+          } else {
+            return (com.google.gwt.dev.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string message = 1;</code>
+         */
+        public Builder setMessage(
+            java.lang.String value) {
           if (value == null) {
     throw new NullPointerException();
   }
-  result.hasMessage = true;
-          result.message_ = value;
+  bitField0_ |= 0x00000001;
+          message_ = value;
+          onChanged();
           return this;
         }
+        /**
+         * <code>optional string message = 1;</code>
+         */
         public Builder clearMessage() {
-          result.hasMessage = false;
-          result.message_ = getDefaultInstance().getMessage();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          message_ = getDefaultInstance().getMessage();
+          onChanged();
           return this;
         }
-        
-        // optional string stackTrace = 2;
-        public boolean hasStackTrace() {
-          return result.hasStackTrace();
-        }
-        public java.lang.String getStackTrace() {
-          return result.getStackTrace();
-        }
-        public Builder setStackTrace(java.lang.String value) {
+        /**
+         * <code>optional string message = 1;</code>
+         */
+        public Builder setMessageBytes(
+            com.google.gwt.dev.protobuf.ByteString value) {
           if (value == null) {
     throw new NullPointerException();
   }
-  result.hasStackTrace = true;
-          result.stackTrace_ = value;
+  bitField0_ |= 0x00000001;
+          message_ = value;
+          onChanged();
           return this;
         }
+
+        // optional string stackTrace = 2;
+        private java.lang.Object stackTrace_ = "";
+        /**
+         * <code>optional string stackTrace = 2;</code>
+         */
+        public boolean hasStackTrace() {
+          return ((bitField0_ & 0x00000002) == 0x00000002);
+        }
+        /**
+         * <code>optional string stackTrace = 2;</code>
+         */
+        public java.lang.String getStackTrace() {
+          java.lang.Object ref = stackTrace_;
+          if (!(ref instanceof java.lang.String)) {
+            java.lang.String s = ((com.google.gwt.dev.protobuf.ByteString) ref)
+                .toStringUtf8();
+            stackTrace_ = s;
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string stackTrace = 2;</code>
+         */
+        public com.google.gwt.dev.protobuf.ByteString
+            getStackTraceBytes() {
+          java.lang.Object ref = stackTrace_;
+          if (ref instanceof String) {
+            com.google.gwt.dev.protobuf.ByteString b = 
+                com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                    (java.lang.String) ref);
+            stackTrace_ = b;
+            return b;
+          } else {
+            return (com.google.gwt.dev.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         * <code>optional string stackTrace = 2;</code>
+         */
+        public Builder setStackTrace(
+            java.lang.String value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          stackTrace_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>optional string stackTrace = 2;</code>
+         */
         public Builder clearStackTrace() {
-          result.hasStackTrace = false;
-          result.stackTrace_ = getDefaultInstance().getStackTrace();
+          bitField0_ = (bitField0_ & ~0x00000002);
+          stackTrace_ = getDefaultInstance().getStackTrace();
+          onChanged();
           return this;
         }
+        /**
+         * <code>optional string stackTrace = 2;</code>
+         */
+        public Builder setStackTraceBytes(
+            com.google.gwt.dev.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+          stackTrace_ = value;
+          onChanged();
+          return this;
+        }
+
+        // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message.Failure)
       }
-      
+
       static {
-        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
+        defaultInstance = new Failure(true);
+        defaultInstance.initFields();
       }
-      
-      static {
-        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-      }
+
+      // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message.Failure)
     }
-    
+
+    private int bitField0_;
     // optional string protocolVersion = 1;
     public static final int PROTOCOLVERSION_FIELD_NUMBER = 1;
-    private boolean hasProtocolVersion;
-    private java.lang.String protocolVersion_ = "";
-    public boolean hasProtocolVersion() { return hasProtocolVersion; }
-    public java.lang.String getProtocolVersion() { return protocolVersion_; }
-    
+    private java.lang.Object protocolVersion_;
+    /**
+     * <code>optional string protocolVersion = 1;</code>
+     *
+     * <pre>
+     * In the first release, we'll ignore this field. In the future, 
+     * we can make use of it to detect protocol incompatibilities
+     * </pre>
+     */
+    public boolean hasProtocolVersion() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>optional string protocolVersion = 1;</code>
+     *
+     * <pre>
+     * In the first release, we'll ignore this field. In the future, 
+     * we can make use of it to detect protocol incompatibilities
+     * </pre>
+     */
+    public java.lang.String getProtocolVersion() {
+      java.lang.Object ref = protocolVersion_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.gwt.dev.protobuf.ByteString bs = 
+            (com.google.gwt.dev.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          protocolVersion_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string protocolVersion = 1;</code>
+     *
+     * <pre>
+     * In the first release, we'll ignore this field. In the future, 
+     * we can make use of it to detect protocol incompatibilities
+     * </pre>
+     */
+    public com.google.gwt.dev.protobuf.ByteString
+        getProtocolVersionBytes() {
+      java.lang.Object ref = protocolVersion_;
+      if (ref instanceof java.lang.String) {
+        com.google.gwt.dev.protobuf.ByteString b = 
+            com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        protocolVersion_ = b;
+        return b;
+      } else {
+        return (com.google.gwt.dev.protobuf.ByteString) ref;
+      }
+    }
+
     // optional .com.google.gwt.dev.shell.remoteui.Message.MessageType messageType = 2;
     public static final int MESSAGETYPE_FIELD_NUMBER = 2;
-    private boolean hasMessageType;
-    private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.MessageType messageType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.MessageType.REQUEST;
-    public boolean hasMessageType() { return hasMessageType; }
-    public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.MessageType getMessageType() { return messageType_; }
-    
+    private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.MessageType messageType_;
+    /**
+     * <code>optional .com.google.gwt.dev.shell.remoteui.Message.MessageType messageType = 2;</code>
+     */
+    public boolean hasMessageType() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional .com.google.gwt.dev.shell.remoteui.Message.MessageType messageType = 2;</code>
+     */
+    public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.MessageType getMessageType() {
+      return messageType_;
+    }
+
     // required uint32 messageId = 3;
     public static final int MESSAGEID_FIELD_NUMBER = 3;
-    private boolean hasMessageId;
-    private int messageId_ = 0;
-    public boolean hasMessageId() { return hasMessageId; }
-    public int getMessageId() { return messageId_; }
-    
+    private int messageId_;
+    /**
+     * <code>required uint32 messageId = 3;</code>
+     */
+    public boolean hasMessageId() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>required uint32 messageId = 3;</code>
+     */
+    public int getMessageId() {
+      return messageId_;
+    }
+
     // optional .com.google.gwt.dev.shell.remoteui.Message.Request request = 4;
     public static final int REQUEST_FIELD_NUMBER = 4;
-    private boolean hasRequest;
-    private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request request_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.getDefaultInstance();
-    public boolean hasRequest() { return hasRequest; }
-    public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request getRequest() { return request_; }
-    
+    private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request request_;
+    /**
+     * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request request = 4;</code>
+     */
+    public boolean hasRequest() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request request = 4;</code>
+     */
+    public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request getRequest() {
+      return request_;
+    }
+    /**
+     * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request request = 4;</code>
+     */
+    public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.RequestOrBuilder getRequestOrBuilder() {
+      return request_;
+    }
+
     // optional .com.google.gwt.dev.shell.remoteui.Message.Response response = 5;
     public static final int RESPONSE_FIELD_NUMBER = 5;
-    private boolean hasResponse;
-    private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response response_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.getDefaultInstance();
-    public boolean hasResponse() { return hasResponse; }
-    public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response getResponse() { return response_; }
-    
+    private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response response_;
+    /**
+     * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response response = 5;</code>
+     */
+    public boolean hasResponse() {
+      return ((bitField0_ & 0x00000010) == 0x00000010);
+    }
+    /**
+     * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response response = 5;</code>
+     */
+    public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response getResponse() {
+      return response_;
+    }
+    /**
+     * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response response = 5;</code>
+     */
+    public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.ResponseOrBuilder getResponseOrBuilder() {
+      return response_;
+    }
+
     // optional .com.google.gwt.dev.shell.remoteui.Message.Failure failure = 6;
     public static final int FAILURE_FIELD_NUMBER = 6;
-    private boolean hasFailure;
-    private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure failure_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.getDefaultInstance();
-    public boolean hasFailure() { return hasFailure; }
-    public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure getFailure() { return failure_; }
-    
+    private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure failure_;
+    /**
+     * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Failure failure = 6;</code>
+     */
+    public boolean hasFailure() {
+      return ((bitField0_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Failure failure = 6;</code>
+     */
+    public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure getFailure() {
+      return failure_;
+    }
+    /**
+     * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Failure failure = 6;</code>
+     */
+    public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.FailureOrBuilder getFailureOrBuilder() {
+      return failure_;
+    }
+
+    private void initFields() {
+      protocolVersion_ = "";
+      messageType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.MessageType.REQUEST;
+      messageId_ = 0;
+      request_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.getDefaultInstance();
+      response_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.getDefaultInstance();
+      failure_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.getDefaultInstance();
+    }
+    private byte memoizedIsInitialized = -1;
     public final boolean isInitialized() {
-      if (!hasMessageId) return false;
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasMessageId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
       if (hasRequest()) {
-        if (!getRequest().isInitialized()) return false;
+        if (!getRequest().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
       }
       if (hasResponse()) {
-        if (!getResponse().isInitialized()) return false;
+        if (!getResponse().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
       }
+      memoizedIsInitialized = 1;
       return true;
     }
-    
+
     public void writeTo(com.google.gwt.dev.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (hasProtocolVersion()) {
-        output.writeString(1, getProtocolVersion());
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getProtocolVersionBytes());
       }
-      if (hasMessageType()) {
-        output.writeEnum(2, getMessageType().getNumber());
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeEnum(2, messageType_.getNumber());
       }
-      if (hasMessageId()) {
-        output.writeUInt32(3, getMessageId());
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeUInt32(3, messageId_);
       }
-      if (hasRequest()) {
-        output.writeMessage(4, getRequest());
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeMessage(4, request_);
       }
-      if (hasResponse()) {
-        output.writeMessage(5, getResponse());
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
+        output.writeMessage(5, response_);
       }
-      if (hasFailure()) {
-        output.writeMessage(6, getFailure());
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
+        output.writeMessage(6, failure_);
       }
       getUnknownFields().writeTo(output);
     }
-    
+
     private int memoizedSerializedSize = -1;
     public int getSerializedSize() {
       int size = memoizedSerializedSize;
       if (size != -1) return size;
-    
+
       size = 0;
-      if (hasProtocolVersion()) {
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
         size += com.google.gwt.dev.protobuf.CodedOutputStream
-          .computeStringSize(1, getProtocolVersion());
+          .computeBytesSize(1, getProtocolVersionBytes());
       }
-      if (hasMessageType()) {
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
         size += com.google.gwt.dev.protobuf.CodedOutputStream
-          .computeEnumSize(2, getMessageType().getNumber());
+          .computeEnumSize(2, messageType_.getNumber());
       }
-      if (hasMessageId()) {
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
         size += com.google.gwt.dev.protobuf.CodedOutputStream
-          .computeUInt32Size(3, getMessageId());
+          .computeUInt32Size(3, messageId_);
       }
-      if (hasRequest()) {
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
         size += com.google.gwt.dev.protobuf.CodedOutputStream
-          .computeMessageSize(4, getRequest());
+          .computeMessageSize(4, request_);
       }
-      if (hasResponse()) {
+      if (((bitField0_ & 0x00000010) == 0x00000010)) {
         size += com.google.gwt.dev.protobuf.CodedOutputStream
-          .computeMessageSize(5, getResponse());
+          .computeMessageSize(5, response_);
       }
-      if (hasFailure()) {
+      if (((bitField0_ & 0x00000020) == 0x00000020)) {
         size += com.google.gwt.dev.protobuf.CodedOutputStream
-          .computeMessageSize(6, getFailure());
+          .computeMessageSize(6, failure_);
       }
       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 com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message parseFrom(
         com.google.gwt.dev.protobuf.ByteString data)
         throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data).buildParsed();
+      return PARSER.parseFrom(data);
     }
     public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message parseFrom(
         com.google.gwt.dev.protobuf.ByteString data,
         com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data, extensionRegistry)
-               .buildParsed();
+      return PARSER.parseFrom(data, extensionRegistry);
     }
     public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message parseFrom(byte[] data)
         throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data).buildParsed();
+      return PARSER.parseFrom(data);
     }
     public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message parseFrom(
         byte[] data,
         com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data, extensionRegistry)
-               .buildParsed();
+      return PARSER.parseFrom(data, extensionRegistry);
     }
     public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return newBuilder().mergeFrom(input).buildParsed();
+      return PARSER.parseFrom(input);
     }
     public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message parseFrom(
         java.io.InputStream input,
         com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return newBuilder().mergeFrom(input, extensionRegistry)
-               .buildParsed();
+      return PARSER.parseFrom(input, extensionRegistry);
     }
     public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return newBuilder().mergeDelimitedFrom(input).buildParsed();
+      return PARSER.parseDelimitedFrom(input);
     }
     public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message parseDelimitedFrom(
         java.io.InputStream input,
         com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
-               .buildParsed();
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
     }
     public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message parseFrom(
         com.google.gwt.dev.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return newBuilder().mergeFrom(input).buildParsed();
+      return PARSER.parseFrom(input);
     }
     public static com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message parseFrom(
         com.google.gwt.dev.protobuf.CodedInputStream input,
         com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return newBuilder().mergeFrom(input, extensionRegistry)
-               .buildParsed();
+      return PARSER.parseFrom(input, extensionRegistry);
     }
-    
+
     public static Builder newBuilder() { return Builder.create(); }
     public Builder newBuilderForType() { return newBuilder(); }
     public static Builder newBuilder(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message prototype) {
       return newBuilder().mergeFrom(prototype);
     }
     public Builder toBuilder() { return newBuilder(this); }
-    
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code com.google.gwt.dev.shell.remoteui.Message}
+     *
+     * <pre>
+     * Outer envelope for all messages
+     * </pre>
+     */
     public static final class Builder extends
-        com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder> {
-      private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message result;
-      
+        com.google.gwt.dev.protobuf.GeneratedMessage.Builder<Builder>
+       implements com.google.gwt.dev.shell.remoteui.RemoteMessageProto.MessageOrBuilder {
+      public static final com.google.gwt.dev.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_descriptor;
+      }
+
+      protected com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.class, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Builder.class);
+      }
+
       // Construct using com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.newBuilder()
-      private Builder() {}
-      
-      private static Builder create() {
-        Builder builder = new Builder();
-        builder.result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message();
-        return builder;
+      private Builder() {
+        maybeForceBuilderInitialization();
       }
-      
-      protected com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message internalGetResult() {
-        return result;
+
+      private Builder(
+          com.google.gwt.dev.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
       }
-      
-      public Builder clear() {
-        if (result == null) {
-          throw new IllegalStateException(
-            "Cannot call clear() after build().");
+      private void maybeForceBuilderInitialization() {
+        if (com.google.gwt.dev.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getRequestFieldBuilder();
+          getResponseFieldBuilder();
+          getFailureFieldBuilder();
         }
-        result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message();
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        protocolVersion_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        messageType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.MessageType.REQUEST;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        messageId_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (requestBuilder_ == null) {
+          request_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.getDefaultInstance();
+        } else {
+          requestBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (responseBuilder_ == null) {
+          response_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.getDefaultInstance();
+        } else {
+          responseBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (failureBuilder_ == null) {
+          failure_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.getDefaultInstance();
+        } else {
+          failureBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
         return this;
       }
-      
+
       public Builder clone() {
-        return create().mergeFrom(result);
+        return create().mergeFrom(buildPartial());
       }
-      
+
       public com.google.gwt.dev.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.getDescriptor();
+        return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internal_static_com_google_gwt_dev_shell_remoteui_Message_descriptor;
       }
-      
+
       public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message getDefaultInstanceForType() {
         return com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.getDefaultInstance();
       }
-      
-      public boolean isInitialized() {
-        return result.isInitialized();
-      }
+
       public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message build() {
-        if (result != null && !isInitialized()) {
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message result = buildPartial();
+        if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
-        return buildPartial();
+        return result;
       }
-      
-      private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message buildParsed()
-          throws com.google.gwt.dev.protobuf.InvalidProtocolBufferException {
-        if (!isInitialized()) {
-          throw newUninitializedMessageException(
-            result).asInvalidProtocolBufferException();
-        }
-        return buildPartial();
-      }
-      
+
       public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message buildPartial() {
-        if (result == null) {
-          throw new IllegalStateException(
-            "build() has already been called on this Builder.");
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message result = new com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
         }
-        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message returnMe = result;
-        result = null;
-        return returnMe;
+        result.protocolVersion_ = protocolVersion_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.messageType_ = messageType_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.messageId_ = messageId_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        if (requestBuilder_ == null) {
+          result.request_ = request_;
+        } else {
+          result.request_ = requestBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        if (responseBuilder_ == null) {
+          result.response_ = response_;
+        } else {
+          result.response_ = responseBuilder_.build();
+        }
+        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+          to_bitField0_ |= 0x00000020;
+        }
+        if (failureBuilder_ == null) {
+          result.failure_ = failure_;
+        } else {
+          result.failure_ = failureBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
       }
-      
+
       public Builder mergeFrom(com.google.gwt.dev.protobuf.Message other) {
         if (other instanceof com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message) {
           return mergeFrom((com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message)other);
@@ -10061,11 +19493,13 @@
           return this;
         }
       }
-      
+
       public Builder mergeFrom(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message other) {
         if (other == com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.getDefaultInstance()) return this;
         if (other.hasProtocolVersion()) {
-          setProtocolVersion(other.getProtocolVersion());
+          bitField0_ |= 0x00000001;
+          protocolVersion_ = other.protocolVersion_;
+          onChanged();
         }
         if (other.hasMessageType()) {
           setMessageType(other.getMessageType());
@@ -10085,259 +19519,581 @@
         this.mergeUnknownFields(other.getUnknownFields());
         return this;
       }
-      
+
+      public final boolean isInitialized() {
+        if (!hasMessageId()) {
+          
+          return false;
+        }
+        if (hasRequest()) {
+          if (!getRequest().isInitialized()) {
+            
+            return false;
+          }
+        }
+        if (hasResponse()) {
+          if (!getResponse().isInitialized()) {
+            
+            return false;
+          }
+        }
+        return true;
+      }
+
       public Builder mergeFrom(
           com.google.gwt.dev.protobuf.CodedInputStream input,
           com.google.gwt.dev.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        com.google.gwt.dev.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.gwt.dev.protobuf.UnknownFieldSet.newBuilder(
-            this.getUnknownFields());
-        while (true) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              this.setUnknownFields(unknownFields.build());
-              return this;
-            default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
-                this.setUnknownFields(unknownFields.build());
-                return this;
-              }
-              break;
-            }
-            case 10: {
-              setProtocolVersion(input.readString());
-              break;
-            }
-            case 16: {
-              int rawValue = input.readEnum();
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.MessageType value = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.MessageType.valueOf(rawValue);
-              if (value == null) {
-                unknownFields.mergeVarintField(2, rawValue);
-              } else {
-                setMessageType(value);
-              }
-              break;
-            }
-            case 24: {
-              setMessageId(input.readUInt32());
-              break;
-            }
-            case 34: {
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.newBuilder();
-              if (hasRequest()) {
-                subBuilder.mergeFrom(getRequest());
-              }
-              input.readMessage(subBuilder, extensionRegistry);
-              setRequest(subBuilder.buildPartial());
-              break;
-            }
-            case 42: {
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.newBuilder();
-              if (hasResponse()) {
-                subBuilder.mergeFrom(getResponse());
-              }
-              input.readMessage(subBuilder, extensionRegistry);
-              setResponse(subBuilder.buildPartial());
-              break;
-            }
-            case 50: {
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.Builder subBuilder = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.newBuilder();
-              if (hasFailure()) {
-                subBuilder.mergeFrom(getFailure());
-              }
-              input.readMessage(subBuilder, extensionRegistry);
-              setFailure(subBuilder.buildPartial());
-              break;
-            }
+        com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.gwt.dev.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
           }
         }
+        return this;
       }
-      
-      
+      private int bitField0_;
+
       // optional string protocolVersion = 1;
+      private java.lang.Object protocolVersion_ = "";
+      /**
+       * <code>optional string protocolVersion = 1;</code>
+       *
+       * <pre>
+       * In the first release, we'll ignore this field. In the future, 
+       * we can make use of it to detect protocol incompatibilities
+       * </pre>
+       */
       public boolean hasProtocolVersion() {
-        return result.hasProtocolVersion();
+        return ((bitField0_ & 0x00000001) == 0x00000001);
       }
+      /**
+       * <code>optional string protocolVersion = 1;</code>
+       *
+       * <pre>
+       * In the first release, we'll ignore this field. In the future, 
+       * we can make use of it to detect protocol incompatibilities
+       * </pre>
+       */
       public java.lang.String getProtocolVersion() {
-        return result.getProtocolVersion();
+        java.lang.Object ref = protocolVersion_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.gwt.dev.protobuf.ByteString) ref)
+              .toStringUtf8();
+          protocolVersion_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
       }
-      public Builder setProtocolVersion(java.lang.String value) {
+      /**
+       * <code>optional string protocolVersion = 1;</code>
+       *
+       * <pre>
+       * In the first release, we'll ignore this field. In the future, 
+       * we can make use of it to detect protocol incompatibilities
+       * </pre>
+       */
+      public com.google.gwt.dev.protobuf.ByteString
+          getProtocolVersionBytes() {
+        java.lang.Object ref = protocolVersion_;
+        if (ref instanceof String) {
+          com.google.gwt.dev.protobuf.ByteString b = 
+              com.google.gwt.dev.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          protocolVersion_ = b;
+          return b;
+        } else {
+          return (com.google.gwt.dev.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string protocolVersion = 1;</code>
+       *
+       * <pre>
+       * In the first release, we'll ignore this field. In the future, 
+       * we can make use of it to detect protocol incompatibilities
+       * </pre>
+       */
+      public Builder setProtocolVersion(
+          java.lang.String value) {
         if (value == null) {
     throw new NullPointerException();
   }
-  result.hasProtocolVersion = true;
-        result.protocolVersion_ = value;
+  bitField0_ |= 0x00000001;
+        protocolVersion_ = value;
+        onChanged();
         return this;
       }
+      /**
+       * <code>optional string protocolVersion = 1;</code>
+       *
+       * <pre>
+       * In the first release, we'll ignore this field. In the future, 
+       * we can make use of it to detect protocol incompatibilities
+       * </pre>
+       */
       public Builder clearProtocolVersion() {
-        result.hasProtocolVersion = false;
-        result.protocolVersion_ = getDefaultInstance().getProtocolVersion();
+        bitField0_ = (bitField0_ & ~0x00000001);
+        protocolVersion_ = getDefaultInstance().getProtocolVersion();
+        onChanged();
         return this;
       }
-      
+      /**
+       * <code>optional string protocolVersion = 1;</code>
+       *
+       * <pre>
+       * In the first release, we'll ignore this field. In the future, 
+       * we can make use of it to detect protocol incompatibilities
+       * </pre>
+       */
+      public Builder setProtocolVersionBytes(
+          com.google.gwt.dev.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        protocolVersion_ = value;
+        onChanged();
+        return this;
+      }
+
       // optional .com.google.gwt.dev.shell.remoteui.Message.MessageType messageType = 2;
+      private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.MessageType messageType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.MessageType.REQUEST;
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.MessageType messageType = 2;</code>
+       */
       public boolean hasMessageType() {
-        return result.hasMessageType();
+        return ((bitField0_ & 0x00000002) == 0x00000002);
       }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.MessageType messageType = 2;</code>
+       */
       public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.MessageType getMessageType() {
-        return result.getMessageType();
+        return messageType_;
       }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.MessageType messageType = 2;</code>
+       */
       public Builder setMessageType(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.MessageType value) {
         if (value == null) {
           throw new NullPointerException();
         }
-        result.hasMessageType = true;
-        result.messageType_ = value;
+        bitField0_ |= 0x00000002;
+        messageType_ = value;
+        onChanged();
         return this;
       }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.MessageType messageType = 2;</code>
+       */
       public Builder clearMessageType() {
-        result.hasMessageType = false;
-        result.messageType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.MessageType.REQUEST;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        messageType_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.MessageType.REQUEST;
+        onChanged();
         return this;
       }
-      
+
       // required uint32 messageId = 3;
+      private int messageId_ ;
+      /**
+       * <code>required uint32 messageId = 3;</code>
+       */
       public boolean hasMessageId() {
-        return result.hasMessageId();
+        return ((bitField0_ & 0x00000004) == 0x00000004);
       }
+      /**
+       * <code>required uint32 messageId = 3;</code>
+       */
       public int getMessageId() {
-        return result.getMessageId();
+        return messageId_;
       }
+      /**
+       * <code>required uint32 messageId = 3;</code>
+       */
       public Builder setMessageId(int value) {
-        result.hasMessageId = true;
-        result.messageId_ = value;
+        bitField0_ |= 0x00000004;
+        messageId_ = value;
+        onChanged();
         return this;
       }
+      /**
+       * <code>required uint32 messageId = 3;</code>
+       */
       public Builder clearMessageId() {
-        result.hasMessageId = false;
-        result.messageId_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        messageId_ = 0;
+        onChanged();
         return this;
       }
-      
+
       // optional .com.google.gwt.dev.shell.remoteui.Message.Request request = 4;
+      private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request request_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.getDefaultInstance();
+      private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.RequestOrBuilder> requestBuilder_;
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request request = 4;</code>
+       */
       public boolean hasRequest() {
-        return result.hasRequest();
+        return ((bitField0_ & 0x00000008) == 0x00000008);
       }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request request = 4;</code>
+       */
       public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request getRequest() {
-        return result.getRequest();
+        if (requestBuilder_ == null) {
+          return request_;
+        } else {
+          return requestBuilder_.getMessage();
+        }
       }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request request = 4;</code>
+       */
       public Builder setRequest(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request value) {
-        if (value == null) {
-          throw new NullPointerException();
+        if (requestBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          request_ = value;
+          onChanged();
+        } else {
+          requestBuilder_.setMessage(value);
         }
-        result.hasRequest = true;
-        result.request_ = value;
+        bitField0_ |= 0x00000008;
         return this;
       }
-      public Builder setRequest(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.Builder builderForValue) {
-        result.hasRequest = true;
-        result.request_ = builderForValue.build();
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request request = 4;</code>
+       */
+      public Builder setRequest(
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.Builder builderForValue) {
+        if (requestBuilder_ == null) {
+          request_ = builderForValue.build();
+          onChanged();
+        } else {
+          requestBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
         return this;
       }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request request = 4;</code>
+       */
       public Builder mergeRequest(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request value) {
-        if (result.hasRequest() &&
-            result.request_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.getDefaultInstance()) {
-          result.request_ =
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.newBuilder(result.request_).mergeFrom(value).buildPartial();
+        if (requestBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) == 0x00000008) &&
+              request_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.getDefaultInstance()) {
+            request_ =
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.newBuilder(request_).mergeFrom(value).buildPartial();
+          } else {
+            request_ = value;
+          }
+          onChanged();
         } else {
-          result.request_ = value;
+          requestBuilder_.mergeFrom(value);
         }
-        result.hasRequest = true;
+        bitField0_ |= 0x00000008;
         return this;
       }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request request = 4;</code>
+       */
       public Builder clearRequest() {
-        result.hasRequest = false;
-        result.request_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.getDefaultInstance();
+        if (requestBuilder_ == null) {
+          request_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.getDefaultInstance();
+          onChanged();
+        } else {
+          requestBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
         return this;
       }
-      
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request request = 4;</code>
+       */
+      public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.Builder getRequestBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getRequestFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request request = 4;</code>
+       */
+      public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.RequestOrBuilder getRequestOrBuilder() {
+        if (requestBuilder_ != null) {
+          return requestBuilder_.getMessageOrBuilder();
+        } else {
+          return request_;
+        }
+      }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Request request = 4;</code>
+       */
+      private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.RequestOrBuilder> 
+          getRequestFieldBuilder() {
+        if (requestBuilder_ == null) {
+          requestBuilder_ = new com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.RequestOrBuilder>(
+                  request_,
+                  getParentForChildren(),
+                  isClean());
+          request_ = null;
+        }
+        return requestBuilder_;
+      }
+
       // optional .com.google.gwt.dev.shell.remoteui.Message.Response response = 5;
+      private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response response_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.getDefaultInstance();
+      private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.ResponseOrBuilder> responseBuilder_;
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response response = 5;</code>
+       */
       public boolean hasResponse() {
-        return result.hasResponse();
+        return ((bitField0_ & 0x00000010) == 0x00000010);
       }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response response = 5;</code>
+       */
       public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response getResponse() {
-        return result.getResponse();
+        if (responseBuilder_ == null) {
+          return response_;
+        } else {
+          return responseBuilder_.getMessage();
+        }
       }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response response = 5;</code>
+       */
       public Builder setResponse(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response value) {
-        if (value == null) {
-          throw new NullPointerException();
+        if (responseBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          response_ = value;
+          onChanged();
+        } else {
+          responseBuilder_.setMessage(value);
         }
-        result.hasResponse = true;
-        result.response_ = value;
+        bitField0_ |= 0x00000010;
         return this;
       }
-      public Builder setResponse(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.Builder builderForValue) {
-        result.hasResponse = true;
-        result.response_ = builderForValue.build();
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response response = 5;</code>
+       */
+      public Builder setResponse(
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.Builder builderForValue) {
+        if (responseBuilder_ == null) {
+          response_ = builderForValue.build();
+          onChanged();
+        } else {
+          responseBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
         return this;
       }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response response = 5;</code>
+       */
       public Builder mergeResponse(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response value) {
-        if (result.hasResponse() &&
-            result.response_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.getDefaultInstance()) {
-          result.response_ =
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.newBuilder(result.response_).mergeFrom(value).buildPartial();
+        if (responseBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) == 0x00000010) &&
+              response_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.getDefaultInstance()) {
+            response_ =
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.newBuilder(response_).mergeFrom(value).buildPartial();
+          } else {
+            response_ = value;
+          }
+          onChanged();
         } else {
-          result.response_ = value;
+          responseBuilder_.mergeFrom(value);
         }
-        result.hasResponse = true;
+        bitField0_ |= 0x00000010;
         return this;
       }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response response = 5;</code>
+       */
       public Builder clearResponse() {
-        result.hasResponse = false;
-        result.response_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.getDefaultInstance();
-        return this;
-      }
-      
-      // optional .com.google.gwt.dev.shell.remoteui.Message.Failure failure = 6;
-      public boolean hasFailure() {
-        return result.hasFailure();
-      }
-      public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure getFailure() {
-        return result.getFailure();
-      }
-      public Builder setFailure(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        result.hasFailure = true;
-        result.failure_ = value;
-        return this;
-      }
-      public Builder setFailure(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.Builder builderForValue) {
-        result.hasFailure = true;
-        result.failure_ = builderForValue.build();
-        return this;
-      }
-      public Builder mergeFailure(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure value) {
-        if (result.hasFailure() &&
-            result.failure_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.getDefaultInstance()) {
-          result.failure_ =
-            com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.newBuilder(result.failure_).mergeFrom(value).buildPartial();
+        if (responseBuilder_ == null) {
+          response_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.getDefaultInstance();
+          onChanged();
         } else {
-          result.failure_ = value;
+          responseBuilder_.clear();
         }
-        result.hasFailure = true;
+        bitField0_ = (bitField0_ & ~0x00000010);
         return this;
       }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response response = 5;</code>
+       */
+      public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.Builder getResponseBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getResponseFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response response = 5;</code>
+       */
+      public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.ResponseOrBuilder getResponseOrBuilder() {
+        if (responseBuilder_ != null) {
+          return responseBuilder_.getMessageOrBuilder();
+        } else {
+          return response_;
+        }
+      }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Response response = 5;</code>
+       */
+      private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.ResponseOrBuilder> 
+          getResponseFieldBuilder() {
+        if (responseBuilder_ == null) {
+          responseBuilder_ = new com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.ResponseOrBuilder>(
+                  response_,
+                  getParentForChildren(),
+                  isClean());
+          response_ = null;
+        }
+        return responseBuilder_;
+      }
+
+      // optional .com.google.gwt.dev.shell.remoteui.Message.Failure failure = 6;
+      private com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure failure_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.getDefaultInstance();
+      private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.FailureOrBuilder> failureBuilder_;
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Failure failure = 6;</code>
+       */
+      public boolean hasFailure() {
+        return ((bitField0_ & 0x00000020) == 0x00000020);
+      }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Failure failure = 6;</code>
+       */
+      public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure getFailure() {
+        if (failureBuilder_ == null) {
+          return failure_;
+        } else {
+          return failureBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Failure failure = 6;</code>
+       */
+      public Builder setFailure(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure value) {
+        if (failureBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          failure_ = value;
+          onChanged();
+        } else {
+          failureBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Failure failure = 6;</code>
+       */
+      public Builder setFailure(
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.Builder builderForValue) {
+        if (failureBuilder_ == null) {
+          failure_ = builderForValue.build();
+          onChanged();
+        } else {
+          failureBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Failure failure = 6;</code>
+       */
+      public Builder mergeFailure(com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure value) {
+        if (failureBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) == 0x00000020) &&
+              failure_ != com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.getDefaultInstance()) {
+            failure_ =
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.newBuilder(failure_).mergeFrom(value).buildPartial();
+          } else {
+            failure_ = value;
+          }
+          onChanged();
+        } else {
+          failureBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Failure failure = 6;</code>
+       */
       public Builder clearFailure() {
-        result.hasFailure = false;
-        result.failure_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.getDefaultInstance();
+        if (failureBuilder_ == null) {
+          failure_ = com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.getDefaultInstance();
+          onChanged();
+        } else {
+          failureBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
         return this;
       }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Failure failure = 6;</code>
+       */
+      public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.Builder getFailureBuilder() {
+        bitField0_ |= 0x00000020;
+        onChanged();
+        return getFailureFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Failure failure = 6;</code>
+       */
+      public com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.FailureOrBuilder getFailureOrBuilder() {
+        if (failureBuilder_ != null) {
+          return failureBuilder_.getMessageOrBuilder();
+        } else {
+          return failure_;
+        }
+      }
+      /**
+       * <code>optional .com.google.gwt.dev.shell.remoteui.Message.Failure failure = 6;</code>
+       */
+      private com.google.gwt.dev.protobuf.SingleFieldBuilder<
+          com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.FailureOrBuilder> 
+          getFailureFieldBuilder() {
+        if (failureBuilder_ == null) {
+          failureBuilder_ = new com.google.gwt.dev.protobuf.SingleFieldBuilder<
+              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.Builder, com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.FailureOrBuilder>(
+                  failure_,
+                  getParentForChildren(),
+                  isClean());
+          failure_ = null;
+        }
+        return failureBuilder_;
+      }
+
+      // @@protoc_insertion_point(builder_scope:com.google.gwt.dev.shell.remoteui.Message)
     }
-    
+
     static {
-      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.getDescriptor();
+      defaultInstance = new Message(true);
+      defaultInstance.initFields();
     }
-    
-    static {
-      com.google.gwt.dev.shell.remoteui.RemoteMessageProto.internalForceInit();
-    }
+
+    // @@protoc_insertion_point(class_scope:com.google.gwt.dev.shell.remoteui.Message)
   }
-  
+
   private static com.google.gwt.dev.protobuf.Descriptors.Descriptor
     internal_static_com_google_gwt_dev_shell_remoteui_Message_descriptor;
   private static
@@ -10478,7 +20234,7 @@
   private static
     com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable
       internal_static_com_google_gwt_dev_shell_remoteui_Message_Failure_fieldAccessorTable;
-  
+
   public static com.google.gwt.dev.protobuf.Descriptors.FileDescriptor
       getDescriptor() {
     return descriptor;
@@ -10487,136 +20243,135 @@
       descriptor;
   static {
     java.lang.String[] descriptorData = {
-      "\n>core/src/com/google/gwt/dev/shell/remo" +
-      "teui/remotemessage.proto\022!com.google.gwt" +
-      ".dev.shell.remoteui\"\271\'\n\007Message\022\027\n\017proto" +
-      "colVersion\030\001 \001(\t\022K\n\013messageType\030\002 \001(\01626." +
-      "com.google.gwt.dev.shell.remoteui.Messag" +
-      "e.MessageType\022\021\n\tmessageId\030\003 \002(\r\022C\n\007requ" +
-      "est\030\004 \001(\01322.com.google.gwt.dev.shell.rem" +
-      "oteui.Message.Request\022E\n\010response\030\005 \001(\0132" +
-      "3.com.google.gwt.dev.shell.remoteui.Mess" +
-      "age.Response\022C\n\007failure\030\006 \001(\01322.com.goog",
-      "le.gwt.dev.shell.remoteui.Message.Failur" +
-      "e\032\307\026\n\007Request\022S\n\013serviceType\030\001 \001(\0162>.com" +
+      "\n\023remotemessage.proto\022!com.google.gwt.de" +
+      "v.shell.remoteui\"\271\'\n\007Message\022\027\n\017protocol" +
+      "Version\030\001 \001(\t\022K\n\013messageType\030\002 \001(\01626.com" +
+      ".google.gwt.dev.shell.remoteui.Message.M" +
+      "essageType\022\021\n\tmessageId\030\003 \002(\r\022C\n\007request" +
+      "\030\004 \001(\01322.com.google.gwt.dev.shell.remote" +
+      "ui.Message.Request\022E\n\010response\030\005 \001(\01323.c" +
+      "om.google.gwt.dev.shell.remoteui.Message" +
+      ".Response\022C\n\007failure\030\006 \001(\01322.com.google." +
+      "gwt.dev.shell.remoteui.Message.Failure\032\307",
+      "\026\n\007Request\022S\n\013serviceType\030\001 \001(\0162>.com.go" +
+      "ogle.gwt.dev.shell.remoteui.Message.Requ" +
+      "est.ServiceType\022W\n\rviewerRequest\030\002 \001(\0132@" +
+      ".com.google.gwt.dev.shell.remoteui.Messa" +
+      "ge.Request.ViewerRequest\022Y\n\016devModeReque" +
+      "st\030\003 \001(\0132A.com.google.gwt.dev.shell.remo" +
+      "teui.Message.Request.DevModeRequest\032\310\020\n\r" +
+      "ViewerRequest\022a\n\013requestType\030\001 \001(\0162L.com" +
       ".google.gwt.dev.shell.remoteui.Message.R" +
-      "equest.ServiceType\022W\n\rviewerRequest\030\002 \001(" +
-      "\0132@.com.google.gwt.dev.shell.remoteui.Me" +
-      "ssage.Request.ViewerRequest\022Y\n\016devModeRe" +
-      "quest\030\003 \001(\0132A.com.google.gwt.dev.shell.r" +
-      "emoteui.Message.Request.DevModeRequest\032\310" +
-      "\020\n\rViewerRequest\022a\n\013requestType\030\001 \001(\0162L." +
-      "com.google.gwt.dev.shell.remoteui.Messag",
-      "e.Request.ViewerRequest.RequestType\022o\n\022c" +
-      "apabilityExchange\030\002 \001(\0132S.com.google.gwt" +
-      ".dev.shell.remoteui.Message.Request.View" +
-      "erRequest.CapabilityExchange\022W\n\006addLog\030\003" +
-      " \001(\0132G.com.google.gwt.dev.shell.remoteui" +
-      ".Message.Request.ViewerRequest.AddLog\022c\n" +
-      "\014addLogBranch\030\004 \001(\0132M.com.google.gwt.dev" +
-      ".shell.remoteui.Message.Request.ViewerRe" +
-      "quest.AddLogBranch\022a\n\013addLogEntry\030\005 \001(\0132" +
-      "L.com.google.gwt.dev.shell.remoteui.Mess",
-      "age.Request.ViewerRequest.AddLogEntry\022e\n" +
-      "\rdisconnectLog\030\006 \001(\0132N.com.google.gwt.de" +
+      "equest.ViewerRequest.RequestType\022o\n\022capa",
+      "bilityExchange\030\002 \001(\0132S.com.google.gwt.de" +
       "v.shell.remoteui.Message.Request.ViewerR" +
-      "equest.DisconnectLog\022_\n\ninitialize\030\007 \001(\013" +
-      "2K.com.google.gwt.dev.shell.remoteui.Mes" +
-      "sage.Request.ViewerRequest.Initialize\032\024\n" +
-      "\022CapabilityExchange\032\373\004\n\006AddLog\022]\n\004type\030\001" +
-      " \001(\0162O.com.google.gwt.dev.shell.remoteui" +
-      ".Message.Request.ViewerRequest.AddLog.Lo" +
-      "gType\022d\n\tmoduleLog\030\002 \001(\0132Q.com.google.gw",
-      "t.dev.shell.remoteui.Message.Request.Vie" +
-      "werRequest.AddLog.ModuleLog\022d\n\tserverLog" +
-      "\030\003 \001(\0132Q.com.google.gwt.dev.shell.remote" +
-      "ui.Message.Request.ViewerRequest.AddLog." +
-      "ServerLog\022`\n\007mainLog\030\004 \001(\0132O.com.google." +
-      "gwt.dev.shell.remoteui.Message.Request.V" +
-      "iewerRequest.AddLog.MainLog\032\177\n\tModuleLog" +
-      "\022\014\n\004name\030\001 \002(\t\022\014\n\004icon\030\002 \001(\014\022\022\n\nsessionK" +
-      "ey\030\003 \001(\t\022\021\n\tuserAgent\030\004 \001(\t\022\013\n\003url\030\005 \001(\t" +
-      "\022\016\n\006tabKey\030\006 \001(\t\022\022\n\nremoteHost\030\007 \001(\t\032\'\n\t",
-      "ServerLog\022\014\n\004name\030\001 \002(\t\022\014\n\004icon\030\002 \001(\014\032\t\n" +
-      "\007MainLog\"/\n\007LogType\022\010\n\004MAIN\020\000\022\n\n\006MODULE\020" +
-      "\001\022\016\n\nWEB_SERVER\020\002\032\336\001\n\007LogData\022\017\n\007summary" +
-      "\030\001 \002(\t\022\r\n\005level\030\002 \001(\t\022\026\n\016needsAttention\030" +
-      "\003 \001(\010\022\017\n\007details\030\004 \001(\t\022c\n\010helpInfo\030\005 \001(\013" +
-      "2Q.com.google.gwt.dev.shell.remoteui.Mes" +
-      "sage.Request.ViewerRequest.LogData.HelpI" +
-      "nfo\032%\n\010HelpInfo\022\013\n\003url\030\001 \001(\t\022\014\n\004text\030\002 \001" +
-      "(\t\032\231\001\n\014AddLogBranch\022\027\n\017parentLogHandle\030\001" +
-      " \002(\r\022\025\n\rindexInParent\030\002 \002(\r\022Y\n\007logData\030\003",
-      " \002(\0132H.com.google.gwt.dev.shell.remoteui" +
-      ".Message.Request.ViewerRequest.LogData\032\217" +
-      "\001\n\013AddLogEntry\022\021\n\tlogHandle\030\001 \002(\r\022\022\n\nind" +
-      "exInLog\030\002 \002(\r\022Y\n\007logData\030\003 \002(\0132H.com.goo" +
-      "gle.gwt.dev.shell.remoteui.Message.Reque" +
-      "st.ViewerRequest.LogData\032\"\n\rDisconnectLo" +
-      "g\022\021\n\tlogHandle\030\001 \002(\r\0323\n\nInitialize\022\020\n\010cl" +
-      "ientId\030\001 \001(\t\022\023\n\013startupURLs\030\002 \003(\t\"~\n\013Req" +
-      "uestType\022\027\n\023CAPABILITY_EXCHANGE\020\000\022\013\n\007ADD" +
-      "_LOG\020\001\022\022\n\016ADD_LOG_BRANCH\020\002\022\021\n\rADD_LOG_EN",
-      "TRY\020\003\022\022\n\016DISCONNECT_LOG\020\004\022\016\n\nINITIALIZE\020" +
-      "\005\032\276\003\n\016DevModeRequest\022b\n\013requestType\030\001 \001(" +
+      "equest.CapabilityExchange\022W\n\006addLog\030\003 \001(" +
+      "\0132G.com.google.gwt.dev.shell.remoteui.Me" +
+      "ssage.Request.ViewerRequest.AddLog\022c\n\014ad" +
+      "dLogBranch\030\004 \001(\0132M.com.google.gwt.dev.sh" +
+      "ell.remoteui.Message.Request.ViewerReque" +
+      "st.AddLogBranch\022a\n\013addLogEntry\030\005 \001(\0132L.c" +
+      "om.google.gwt.dev.shell.remoteui.Message" +
+      ".Request.ViewerRequest.AddLogEntry\022e\n\rdi",
+      "sconnectLog\030\006 \001(\0132N.com.google.gwt.dev.s" +
+      "hell.remoteui.Message.Request.ViewerRequ" +
+      "est.DisconnectLog\022_\n\ninitialize\030\007 \001(\0132K." +
+      "com.google.gwt.dev.shell.remoteui.Messag" +
+      "e.Request.ViewerRequest.Initialize\032\024\n\022Ca" +
+      "pabilityExchange\032\373\004\n\006AddLog\022]\n\004type\030\001 \001(" +
+      "\0162O.com.google.gwt.dev.shell.remoteui.Me" +
+      "ssage.Request.ViewerRequest.AddLog.LogTy" +
+      "pe\022d\n\tmoduleLog\030\002 \001(\0132Q.com.google.gwt.d" +
+      "ev.shell.remoteui.Message.Request.Viewer",
+      "Request.AddLog.ModuleLog\022d\n\tserverLog\030\003 " +
+      "\001(\0132Q.com.google.gwt.dev.shell.remoteui." +
+      "Message.Request.ViewerRequest.AddLog.Ser" +
+      "verLog\022`\n\007mainLog\030\004 \001(\0132O.com.google.gwt" +
+      ".dev.shell.remoteui.Message.Request.View" +
+      "erRequest.AddLog.MainLog\032\177\n\tModuleLog\022\014\n" +
+      "\004name\030\001 \002(\t\022\014\n\004icon\030\002 \001(\014\022\022\n\nsessionKey\030" +
+      "\003 \001(\t\022\021\n\tuserAgent\030\004 \001(\t\022\013\n\003url\030\005 \001(\t\022\016\n" +
+      "\006tabKey\030\006 \001(\t\022\022\n\nremoteHost\030\007 \001(\t\032\'\n\tSer" +
+      "verLog\022\014\n\004name\030\001 \002(\t\022\014\n\004icon\030\002 \001(\014\032\t\n\007Ma",
+      "inLog\"/\n\007LogType\022\010\n\004MAIN\020\000\022\n\n\006MODULE\020\001\022\016" +
+      "\n\nWEB_SERVER\020\002\032\336\001\n\007LogData\022\017\n\007summary\030\001 " +
+      "\002(\t\022\r\n\005level\030\002 \001(\t\022\026\n\016needsAttention\030\003 \001" +
+      "(\010\022\017\n\007details\030\004 \001(\t\022c\n\010helpInfo\030\005 \001(\0132Q." +
+      "com.google.gwt.dev.shell.remoteui.Messag" +
+      "e.Request.ViewerRequest.LogData.HelpInfo" +
+      "\032%\n\010HelpInfo\022\013\n\003url\030\001 \001(\t\022\014\n\004text\030\002 \001(\t\032" +
+      "\231\001\n\014AddLogBranch\022\027\n\017parentLogHandle\030\001 \002(" +
+      "\r\022\025\n\rindexInParent\030\002 \002(\r\022Y\n\007logData\030\003 \002(" +
+      "\0132H.com.google.gwt.dev.shell.remoteui.Me",
+      "ssage.Request.ViewerRequest.LogData\032\217\001\n\013" +
+      "AddLogEntry\022\021\n\tlogHandle\030\001 \002(\r\022\022\n\nindexI" +
+      "nLog\030\002 \002(\r\022Y\n\007logData\030\003 \002(\0132H.com.google" +
+      ".gwt.dev.shell.remoteui.Message.Request." +
+      "ViewerRequest.LogData\032\"\n\rDisconnectLog\022\021" +
+      "\n\tlogHandle\030\001 \002(\r\0323\n\nInitialize\022\020\n\010clien" +
+      "tId\030\001 \001(\t\022\023\n\013startupURLs\030\002 \003(\t\"~\n\013Reques" +
+      "tType\022\027\n\023CAPABILITY_EXCHANGE\020\000\022\013\n\007ADD_LO" +
+      "G\020\001\022\022\n\016ADD_LOG_BRANCH\020\002\022\021\n\rADD_LOG_ENTRY" +
+      "\020\003\022\022\n\016DISCONNECT_LOG\020\004\022\016\n\nINITIALIZE\020\005\032\276",
+      "\003\n\016DevModeRequest\022b\n\013requestType\030\001 \001(\0162M" +
+      ".com.google.gwt.dev.shell.remoteui.Messa" +
+      "ge.Request.DevModeRequest.RequestType\022p\n" +
+      "\022capabilityExchange\030\002 \001(\0132T.com.google.g" +
+      "wt.dev.shell.remoteui.Message.Request.De" +
+      "vModeRequest.CapabilityExchange\022l\n\020resta" +
+      "rtWebServer\030\003 \001(\0132R.com.google.gwt.dev.s" +
+      "hell.remoteui.Message.Request.DevModeReq" +
+      "uest.RestartWebServer\032\024\n\022CapabilityExcha" +
+      "nge\032\022\n\020RestartWebServer\">\n\013RequestType\022\027",
+      "\n\023CAPABILITY_EXCHANGE\020\000\022\026\n\022RESTART_WEB_S" +
+      "ERVER\020\001\"\'\n\013ServiceType\022\n\n\006VIEWER\020\000\022\014\n\010DE" +
+      "V_MODE\020\001\032\262\r\n\010Response\022Z\n\016viewerResponse\030" +
+      "\001 \001(\0132B.com.google.gwt.dev.shell.remoteu" +
+      "i.Message.Response.ViewerResponse\022\\\n\017dev" +
+      "ModeResponse\030\002 \001(\0132C.com.google.gwt.dev." +
+      "shell.remoteui.Message.Response.DevModeR" +
+      "esponse\032\265\006\n\016ViewerResponse\022e\n\014responseTy" +
+      "pe\030\001 \001(\0162O.com.google.gwt.dev.shell.remo" +
+      "teui.Message.Response.ViewerResponse.Res",
+      "ponseType\022q\n\022capabilityExchange\030\002 \001(\0132U." +
+      "com.google.gwt.dev.shell.remoteui.Messag" +
+      "e.Response.ViewerResponse.CapabilityExch" +
+      "ange\022Y\n\006addLog\030\003 \001(\0132I.com.google.gwt.de" +
+      "v.shell.remoteui.Message.Response.Viewer" +
+      "Response.AddLog\022e\n\014addLogBranch\030\004 \001(\0132O." +
+      "com.google.gwt.dev.shell.remoteui.Messag" +
+      "e.Response.ViewerResponse.AddLogBranch\032\374" +
+      "\001\n\022CapabilityExchange\022v\n\014capabilities\030\002 " +
+      "\003(\0132`.com.google.gwt.dev.shell.remoteui.",
+      "Message.Response.ViewerResponse.Capabili" +
+      "tyExchange.Capability\032n\n\nCapability\022`\n\nc" +
+      "apability\030\001 \001(\0162L.com.google.gwt.dev.she" +
+      "ll.remoteui.Message.Request.ViewerReques" +
+      "t.RequestType\032\033\n\006AddLog\022\021\n\tlogHandle\030\001 \002" +
+      "(\r\032!\n\014AddLogBranch\022\021\n\tlogHandle\030\001 \002(\r\"H\n" +
+      "\014ResponseType\022\027\n\023CAPABILITY_EXCHANGE\020\000\022\013" +
+      "\n\007ADD_LOG\020\001\022\022\n\016ADD_LOG_BRANCH\020\002\032\263\005\n\017DevM" +
+      "odeResponse\022f\n\014responseType\030\001 \001(\0162P.com." +
+      "google.gwt.dev.shell.remoteui.Message.Re",
+      "sponse.DevModeResponse.ResponseType\022r\n\022c" +
+      "apabilityExchange\030\002 \001(\0132V.com.google.gwt" +
+      ".dev.shell.remoteui.Message.Response.Dev" +
+      "ModeResponse.CapabilityExchange\022n\n\020resta" +
+      "rtWebServer\030\003 \001(\0132T.com.google.gwt.dev.s" +
+      "hell.remoteui.Message.Response.DevModeRe" +
+      "sponse.RestartWebServer\032\376\001\n\022CapabilityEx" +
+      "change\022w\n\014capabilities\030\002 \003(\0132a.com.googl" +
+      "e.gwt.dev.shell.remoteui.Message.Respons" +
+      "e.DevModeResponse.CapabilityExchange.Cap",
+      "ability\032o\n\nCapability\022a\n\ncapability\030\001 \001(" +
       "\0162M.com.google.gwt.dev.shell.remoteui.Me" +
       "ssage.Request.DevModeRequest.RequestType" +
-      "\022p\n\022capabilityExchange\030\002 \001(\0132T.com.googl" +
-      "e.gwt.dev.shell.remoteui.Message.Request" +
-      ".DevModeRequest.CapabilityExchange\022l\n\020re" +
-      "startWebServer\030\003 \001(\0132R.com.google.gwt.de" +
-      "v.shell.remoteui.Message.Request.DevMode" +
-      "Request.RestartWebServer\032\024\n\022CapabilityEx",
-      "change\032\022\n\020RestartWebServer\">\n\013RequestTyp" +
-      "e\022\027\n\023CAPABILITY_EXCHANGE\020\000\022\026\n\022RESTART_WE" +
-      "B_SERVER\020\001\"\'\n\013ServiceType\022\n\n\006VIEWER\020\000\022\014\n" +
-      "\010DEV_MODE\020\001\032\262\r\n\010Response\022Z\n\016viewerRespon" +
-      "se\030\001 \001(\0132B.com.google.gwt.dev.shell.remo" +
-      "teui.Message.Response.ViewerResponse\022\\\n\017" +
-      "devModeResponse\030\002 \001(\0132C.com.google.gwt.d" +
-      "ev.shell.remoteui.Message.Response.DevMo" +
-      "deResponse\032\265\006\n\016ViewerResponse\022e\n\014respons" +
-      "eType\030\001 \001(\0162O.com.google.gwt.dev.shell.r",
-      "emoteui.Message.Response.ViewerResponse." +
-      "ResponseType\022q\n\022capabilityExchange\030\002 \001(\013" +
-      "2U.com.google.gwt.dev.shell.remoteui.Mes" +
-      "sage.Response.ViewerResponse.CapabilityE" +
-      "xchange\022Y\n\006addLog\030\003 \001(\0132I.com.google.gwt" +
-      ".dev.shell.remoteui.Message.Response.Vie" +
-      "werResponse.AddLog\022e\n\014addLogBranch\030\004 \001(\013" +
-      "2O.com.google.gwt.dev.shell.remoteui.Mes" +
-      "sage.Response.ViewerResponse.AddLogBranc" +
-      "h\032\374\001\n\022CapabilityExchange\022v\n\014capabilities",
-      "\030\002 \003(\0132`.com.google.gwt.dev.shell.remote" +
-      "ui.Message.Response.ViewerResponse.Capab" +
-      "ilityExchange.Capability\032n\n\nCapability\022`" +
-      "\n\ncapability\030\001 \001(\0162L.com.google.gwt.dev." +
-      "shell.remoteui.Message.Request.ViewerReq" +
-      "uest.RequestType\032\033\n\006AddLog\022\021\n\tlogHandle\030" +
-      "\001 \002(\r\032!\n\014AddLogBranch\022\021\n\tlogHandle\030\001 \002(\r" +
-      "\"H\n\014ResponseType\022\027\n\023CAPABILITY_EXCHANGE\020" +
-      "\000\022\013\n\007ADD_LOG\020\001\022\022\n\016ADD_LOG_BRANCH\020\002\032\263\005\n\017D" +
-      "evModeResponse\022f\n\014responseType\030\001 \001(\0162P.c",
-      "om.google.gwt.dev.shell.remoteui.Message" +
-      ".Response.DevModeResponse.ResponseType\022r" +
-      "\n\022capabilityExchange\030\002 \001(\0132V.com.google." +
-      "gwt.dev.shell.remoteui.Message.Response." +
-      "DevModeResponse.CapabilityExchange\022n\n\020re" +
-      "startWebServer\030\003 \001(\0132T.com.google.gwt.de" +
-      "v.shell.remoteui.Message.Response.DevMod" +
-      "eResponse.RestartWebServer\032\376\001\n\022Capabilit" +
-      "yExchange\022w\n\014capabilities\030\002 \003(\0132a.com.go" +
-      "ogle.gwt.dev.shell.remoteui.Message.Resp",
-      "onse.DevModeResponse.CapabilityExchange." +
-      "Capability\032o\n\nCapability\022a\n\ncapability\030\001" +
-      " \001(\0162M.com.google.gwt.dev.shell.remoteui" +
-      ".Message.Request.DevModeRequest.RequestT" +
-      "ype\032\022\n\020RestartWebServer\"?\n\014ResponseType\022" +
-      "\027\n\023CAPABILITY_EXCHANGE\020\000\022\026\n\022RESTART_WEB_" +
-      "SERVER\020\001\032.\n\007Failure\022\017\n\007message\030\001 \001(\t\022\022\n\n" +
-      "stackTrace\030\002 \001(\t\"5\n\013MessageType\022\013\n\007REQUE" +
-      "ST\020\000\022\014\n\010RESPONSE\020\001\022\013\n\007FAILURE\020\002B\024B\022Remot" +
-      "eMessageProto"
+      "\032\022\n\020RestartWebServer\"?\n\014ResponseType\022\027\n\023" +
+      "CAPABILITY_EXCHANGE\020\000\022\026\n\022RESTART_WEB_SER" +
+      "VER\020\001\032.\n\007Failure\022\017\n\007message\030\001 \001(\t\022\022\n\nsta" +
+      "ckTrace\030\002 \001(\t\"5\n\013MessageType\022\013\n\007REQUEST\020" +
+      "\000\022\014\n\010RESPONSE\020\001\022\013\n\007FAILURE\020\002B\024B\022RemoteMe" +
+      "ssageProto"
     };
     com.google.gwt.dev.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
       new com.google.gwt.dev.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
@@ -10628,225 +20383,169 @@
           internal_static_com_google_gwt_dev_shell_remoteui_Message_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_descriptor,
-              new java.lang.String[] { "ProtocolVersion", "MessageType", "MessageId", "Request", "Response", "Failure", },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Builder.class);
+              new java.lang.String[] { "ProtocolVersion", "MessageType", "MessageId", "Request", "Response", "Failure", });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_descriptor.getNestedTypes().get(0);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_descriptor,
-              new java.lang.String[] { "ServiceType", "ViewerRequest", "DevModeRequest", },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.Builder.class);
+              new java.lang.String[] { "ServiceType", "ViewerRequest", "DevModeRequest", });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_descriptor.getNestedTypes().get(0);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_descriptor,
-              new java.lang.String[] { "RequestType", "CapabilityExchange", "AddLog", "AddLogBranch", "AddLogEntry", "DisconnectLog", "Initialize", },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Builder.class);
+              new java.lang.String[] { "RequestType", "CapabilityExchange", "AddLog", "AddLogBranch", "AddLogEntry", "DisconnectLog", "Initialize", });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_CapabilityExchange_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_descriptor.getNestedTypes().get(0);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_CapabilityExchange_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_CapabilityExchange_descriptor,
-              new java.lang.String[] { },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.CapabilityExchange.Builder.class);
+              new java.lang.String[] { });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_descriptor.getNestedTypes().get(1);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_descriptor,
-              new java.lang.String[] { "Type", "ModuleLog", "ServerLog", "MainLog", },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.Builder.class);
+              new java.lang.String[] { "Type", "ModuleLog", "ServerLog", "MainLog", });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_ModuleLog_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_descriptor.getNestedTypes().get(0);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_ModuleLog_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_ModuleLog_descriptor,
-              new java.lang.String[] { "Name", "Icon", "SessionKey", "UserAgent", "Url", "TabKey", "RemoteHost", },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ModuleLog.Builder.class);
+              new java.lang.String[] { "Name", "Icon", "SessionKey", "UserAgent", "Url", "TabKey", "RemoteHost", });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_ServerLog_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_descriptor.getNestedTypes().get(1);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_ServerLog_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_ServerLog_descriptor,
-              new java.lang.String[] { "Name", "Icon", },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.ServerLog.Builder.class);
+              new java.lang.String[] { "Name", "Icon", });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_MainLog_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_descriptor.getNestedTypes().get(2);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_MainLog_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLog_MainLog_descriptor,
-              new java.lang.String[] { },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLog.MainLog.Builder.class);
+              new java.lang.String[] { });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_LogData_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_descriptor.getNestedTypes().get(2);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_LogData_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_LogData_descriptor,
-              new java.lang.String[] { "Summary", "Level", "NeedsAttention", "Details", "HelpInfo", },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.Builder.class);
+              new java.lang.String[] { "Summary", "Level", "NeedsAttention", "Details", "HelpInfo", });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_LogData_HelpInfo_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_LogData_descriptor.getNestedTypes().get(0);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_LogData_HelpInfo_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_LogData_HelpInfo_descriptor,
-              new java.lang.String[] { "Url", "Text", },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.LogData.HelpInfo.Builder.class);
+              new java.lang.String[] { "Url", "Text", });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLogBranch_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_descriptor.getNestedTypes().get(3);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLogBranch_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLogBranch_descriptor,
-              new java.lang.String[] { "ParentLogHandle", "IndexInParent", "LogData", },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogBranch.Builder.class);
+              new java.lang.String[] { "ParentLogHandle", "IndexInParent", "LogData", });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLogEntry_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_descriptor.getNestedTypes().get(4);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLogEntry_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_AddLogEntry_descriptor,
-              new java.lang.String[] { "LogHandle", "IndexInLog", "LogData", },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.AddLogEntry.Builder.class);
+              new java.lang.String[] { "LogHandle", "IndexInLog", "LogData", });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_DisconnectLog_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_descriptor.getNestedTypes().get(5);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_DisconnectLog_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_DisconnectLog_descriptor,
-              new java.lang.String[] { "LogHandle", },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.DisconnectLog.Builder.class);
+              new java.lang.String[] { "LogHandle", });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_Initialize_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_descriptor.getNestedTypes().get(6);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_Initialize_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_ViewerRequest_Initialize_descriptor,
-              new java.lang.String[] { "ClientId", "StartupURLs", },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.ViewerRequest.Initialize.Builder.class);
+              new java.lang.String[] { "ClientId", "StartupURLs", });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_descriptor.getNestedTypes().get(1);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_descriptor,
-              new java.lang.String[] { "RequestType", "CapabilityExchange", "RestartWebServer", },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.Builder.class);
+              new java.lang.String[] { "RequestType", "CapabilityExchange", "RestartWebServer", });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_CapabilityExchange_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_descriptor.getNestedTypes().get(0);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_CapabilityExchange_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_CapabilityExchange_descriptor,
-              new java.lang.String[] { },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.CapabilityExchange.Builder.class);
+              new java.lang.String[] { });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_RestartWebServer_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_descriptor.getNestedTypes().get(1);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_RestartWebServer_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Request_DevModeRequest_RestartWebServer_descriptor,
-              new java.lang.String[] { },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Request.DevModeRequest.RestartWebServer.Builder.class);
+              new java.lang.String[] { });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_descriptor.getNestedTypes().get(1);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_descriptor,
-              new java.lang.String[] { "ViewerResponse", "DevModeResponse", },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.Builder.class);
+              new java.lang.String[] { "ViewerResponse", "DevModeResponse", });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_descriptor.getNestedTypes().get(0);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_descriptor,
-              new java.lang.String[] { "ResponseType", "CapabilityExchange", "AddLog", "AddLogBranch", },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.Builder.class);
+              new java.lang.String[] { "ResponseType", "CapabilityExchange", "AddLog", "AddLogBranch", });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_CapabilityExchange_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_descriptor.getNestedTypes().get(0);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_CapabilityExchange_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_CapabilityExchange_descriptor,
-              new java.lang.String[] { "Capabilities", },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Builder.class);
+              new java.lang.String[] { "Capabilities", });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_CapabilityExchange_Capability_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_CapabilityExchange_descriptor.getNestedTypes().get(0);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_CapabilityExchange_Capability_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_CapabilityExchange_Capability_descriptor,
-              new java.lang.String[] { "Capability", },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.CapabilityExchange.Capability.Builder.class);
+              new java.lang.String[] { "Capability", });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_AddLog_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_descriptor.getNestedTypes().get(1);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_AddLog_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_AddLog_descriptor,
-              new java.lang.String[] { "LogHandle", },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLog.Builder.class);
+              new java.lang.String[] { "LogHandle", });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_AddLogBranch_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_descriptor.getNestedTypes().get(2);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_AddLogBranch_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_ViewerResponse_AddLogBranch_descriptor,
-              new java.lang.String[] { "LogHandle", },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.ViewerResponse.AddLogBranch.Builder.class);
+              new java.lang.String[] { "LogHandle", });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_descriptor.getNestedTypes().get(1);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_descriptor,
-              new java.lang.String[] { "ResponseType", "CapabilityExchange", "RestartWebServer", },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.Builder.class);
+              new java.lang.String[] { "ResponseType", "CapabilityExchange", "RestartWebServer", });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_CapabilityExchange_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_descriptor.getNestedTypes().get(0);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_CapabilityExchange_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_CapabilityExchange_descriptor,
-              new java.lang.String[] { "Capabilities", },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Builder.class);
+              new java.lang.String[] { "Capabilities", });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_CapabilityExchange_Capability_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_CapabilityExchange_descriptor.getNestedTypes().get(0);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_CapabilityExchange_Capability_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_CapabilityExchange_Capability_descriptor,
-              new java.lang.String[] { "Capability", },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.CapabilityExchange.Capability.Builder.class);
+              new java.lang.String[] { "Capability", });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_RestartWebServer_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_descriptor.getNestedTypes().get(1);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_RestartWebServer_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Response_DevModeResponse_RestartWebServer_descriptor,
-              new java.lang.String[] { },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Response.DevModeResponse.RestartWebServer.Builder.class);
+              new java.lang.String[] { });
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Failure_descriptor =
             internal_static_com_google_gwt_dev_shell_remoteui_Message_descriptor.getNestedTypes().get(2);
           internal_static_com_google_gwt_dev_shell_remoteui_Message_Failure_fieldAccessorTable = new
             com.google.gwt.dev.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_com_google_gwt_dev_shell_remoteui_Message_Failure_descriptor,
-              new java.lang.String[] { "Message", "StackTrace", },
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.class,
-              com.google.gwt.dev.shell.remoteui.RemoteMessageProto.Message.Failure.Builder.class);
+              new java.lang.String[] { "Message", "StackTrace", });
           return null;
         }
       };
@@ -10855,6 +20554,6 @@
         new com.google.gwt.dev.protobuf.Descriptors.FileDescriptor[] {
         }, assigner);
   }
-  
-  public static void internalForceInit() {}
+
+  // @@protoc_insertion_point(outer_class_scope)
 }
diff --git a/eclipse/dev/.classpath b/eclipse/dev/.classpath
index 68878e3..17d1fee 100644
--- a/eclipse/dev/.classpath
+++ b/eclipse/dev/.classpath
@@ -20,7 +20,7 @@
 	<classpathentry kind="var" path="GWT_TOOLS/lib/tomcat/jsp-api-2.0.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/htmlunit/htmlunit-2.9/htmlunit-core-js-2.9.jar" sourcepath="/GWT_TOOLS/lib/htmlunit/htmlunit-2.9/htmlunit-core-js-2.9-sources.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/htmlunit/htmlunit-2.9/htmlunit-2.9.jar" sourcepath="/GWT_TOOLS/lib/htmlunit/htmlunit-2.9/htmlunit-2.9-sources.jar"/>
-	<classpathentry kind="var" path="GWT_TOOLS/lib/protobuf/protobuf-2.2.0/protobuf-java-rebased-2.2.0.jar"/>
+	<classpathentry kind="var" path="GWT_TOOLS/lib/protobuf/protobuf-2.5.0/protobuf-java-rebased-2.5.0.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/guava/guava-15.0/guava-15.0-rebased.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/jscomp/20131014/sourcemap-rebased.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/jscomp/20131014/compiler-rebased.jar"/>
diff --git a/eclipse/user/.classpath b/eclipse/user/.classpath
index 17c7203..c857194 100644
--- a/eclipse/user/.classpath
+++ b/eclipse/user/.classpath
@@ -60,7 +60,7 @@
 	<classpathentry kind="var" path="GWT_TOOLS/lib/jboss/test-harness/jboss-test-harness-api-1.0.0.jar" sourcepath="/GWT_TOOLS/lib/jboss/test-harness/jboss-test-harness-api-1.0.0-sources.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/testng/testng-5.14.1-sources.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/testng/testng-5.14.1-nojunit.jar" sourcepath="/GWT_TOOLS/lib/testng/testng-5.14.1-sources.jar"/>
-	<classpathentry kind="var" path="GWT_TOOLS/lib/protobuf/protobuf-2.2.0/protobuf-java-rebased-2.2.0.jar"/>
+	<classpathentry kind="var" path="GWT_TOOLS/lib/protobuf/protobuf-2.5.0/protobuf-java-rebased-2.5.0.jar"/>
 	<classpathentry kind="var" path="GWT_TOOLS/lib/jscomp/20131014/sourcemap-rebased.jar"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/servlet/build.xml b/servlet/build.xml
index dfb48ab..097e883 100644
--- a/servlet/build.xml
+++ b/servlet/build.xml
@@ -51,10 +51,11 @@
     <mkdir dir="${gwt.build.lib}" />
     <gwt.jar destfile="${project.lib.deps}">
       <!-- The following two jars satisfy RequestFactory dependencies. -->
+      <zipfileset src="${gwt.tools.lib}/guava/guava-15.0/guava-15.0-rebased.jar" />
       <zipfileset src="${gwt.tools.redist}/json/r2_20080312/json-1.5.jar" />
       <zipfileset src="${gwt.tools.lib}/javax/validation/validation-api-1.0.0.GA.jar" />
       <zipfileset src="${gwt.tools.lib}/jscomp/20131014/sourcemap-rebased.jar" />
-      <zipfileset src="${gwt.tools.lib}/guava/guava-15.0/guava-15.0-rebased.jar" />
+      <zipfileset src="${gwt.tools.lib}/protobuf/protobuf-2.5.0/protobuf-java-rebased-2.5.0.jar" />
       <zipfileset src="${gwt.tools.lib}/streamhtmlparser/streamhtmlparser-jsilver-r10/streamhtmlparser-jsilver-r10-1.5-rebased.jar" />
     </gwt.jar>
   </target>