text: /**
   * @fileoverview
   * @enhanceable
   * @suppress {messageConventions} JS Compiler reports an error if a variable or
   *     field starts with 'MSG_' and isn't a translatable message.
   * @public
   */
  // GENERATED CODE -- DO NOT EDIT!
  
  var jspb = require('google-protobuf');
  var goog = jspb;
  var global = Function('return this')();
  
  goog.exportSymbol('proto.Argument', null, global);
  goog.exportSymbol('proto.Argument.ArrayValue', null, global);
  goog.exportSymbol('proto.Argument.BufferValue', null, global);
  goog.exportSymbol('proto.Argument.ErrorValue', null, global);
  goog.exportSymbol('proto.Argument.FunctionValue', null, global);
  goog.exportSymbol('proto.Argument.NullValue', null, global);
  goog.exportSymbol('proto.Argument.ObjectValue', null, global);
  goog.exportSymbol('proto.Argument.ProxyValue', null, global);
  goog.exportSymbol('proto.Argument.UndefinedValue', null, global);
  goog.exportSymbol('proto.Callback', null, global);
  goog.exportSymbol('proto.Callback.Named', null, global);
  goog.exportSymbol('proto.Callback.Numbered', null, global);
  goog.exportSymbol('proto.Event', null, global);
  goog.exportSymbol('proto.Event.Named', null, global);
  goog.exportSymbol('proto.Event.Numbered', null, global);
  goog.exportSymbol('proto.Method', null, global);
  goog.exportSymbol('proto.Method.Fail', null, global);
  goog.exportSymbol('proto.Method.Named', null, global);
  goog.exportSymbol('proto.Method.Numbered', null, global);
  goog.exportSymbol('proto.Method.Success', null, global);
  goog.exportSymbol('proto.Module', null, global);
  goog.exportSymbol('proto.Ping', null, global);
  goog.exportSymbol('proto.Pong', null, global);
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.Argument = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, proto.Argument.oneofGroups_);
  };
  goog.inherits(proto.Argument, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.Argument.displayName = 'proto.Argument';
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.Argument.ErrorValue = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.Argument.ErrorValue, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.Argument.ErrorValue.displayName = 'proto.Argument.ErrorValue';
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.Argument.BufferValue = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.Argument.BufferValue, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.Argument.BufferValue.displayName = 'proto.Argument.BufferValue';
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.Argument.ObjectValue = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.Argument.ObjectValue, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.Argument.ObjectValue.displayName = 'proto.Argument.ObjectValue';
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.Argument.ArrayValue = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, proto.Argument.ArrayValue.repeatedFields_, null);
  };
  goog.inherits(proto.Argument.ArrayValue, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.Argument.ArrayValue.displayName = 'proto.Argument.ArrayValue';
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.Argument.ProxyValue = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.Argument.ProxyValue, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.Argument.ProxyValue.displayName = 'proto.Argument.ProxyValue';
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.Argument.FunctionValue = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.Argument.FunctionValue, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.Argument.FunctionValue.displayName = 'proto.Argument.FunctionValue';
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.Argument.NullValue = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.Argument.NullValue, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.Argument.NullValue.displayName = 'proto.Argument.NullValue';
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.Argument.UndefinedValue = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.Argument.UndefinedValue, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.Argument.UndefinedValue.displayName = 'proto.Argument.UndefinedValue';
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.Method = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, proto.Method.oneofGroups_);
  };
  goog.inherits(proto.Method, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.Method.displayName = 'proto.Method';
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.Method.Named = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, proto.Method.Named.repeatedFields_, null);
  };
  goog.inherits(proto.Method.Named, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.Method.Named.displayName = 'proto.Method.Named';
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.Method.Numbered = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, proto.Method.Numbered.repeatedFields_, null);
  };
  goog.inherits(proto.Method.Numbered, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.Method.Numbered.displayName = 'proto.Method.Numbered';
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.Method.Fail = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.Method.Fail, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.Method.Fail.displayName = 'proto.Method.Fail';
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.Method.Success = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.Method.Success, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.Method.Success.displayName = 'proto.Method.Success';
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.Callback = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, proto.Callback.oneofGroups_);
  };
  goog.inherits(proto.Callback, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.Callback.displayName = 'proto.Callback';
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.Callback.Named = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, proto.Callback.Named.repeatedFields_, null);
  };
  goog.inherits(proto.Callback.Named, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.Callback.Named.displayName = 'proto.Callback.Named';
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.Callback.Numbered = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, proto.Callback.Numbered.repeatedFields_, null);
  };
  goog.inherits(proto.Callback.Numbered, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.Callback.Numbered.displayName = 'proto.Callback.Numbered';
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.Event = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, proto.Event.oneofGroups_);
  };
  goog.inherits(proto.Event, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.Event.displayName = 'proto.Event';
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.Event.Named = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, proto.Event.Named.repeatedFields_, null);
  };
  goog.inherits(proto.Event.Named, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.Event.Named.displayName = 'proto.Event.Named';
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.Event.Numbered = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, proto.Event.Numbered.repeatedFields_, null);
  };
  goog.inherits(proto.Event.Numbered, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.Event.Numbered.displayName = 'proto.Event.Numbered';
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.Ping = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.Ping, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.Ping.displayName = 'proto.Ping';
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.Pong = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.Pong, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.Pong.displayName = 'proto.Pong';
  }
  
  /**
   * Oneof group definitions for this message. Each group defines the field
   * numbers belonging to that group. When of these fields' value is set, all
   * other fields in the group are cleared. During deserialization, if multiple
   * fields are encountered for a group, only the last value seen will be kept.
   * @private {!Array<!Array<number>>}
   * @const
   */
  proto.Argument.oneofGroups_ = [[1,2,3,4,5,6,7,8,9,10,11]];
  
  /**
   * @enum {number}
   */
  proto.Argument.MsgCase = {
    MSG_NOT_SET: 0,
    ERROR: 1,
    BUFFER: 2,
    OBJECT: 3,
    ARRAY: 4,
    PROXY: 5,
    FUNCTION: 6,
    NULL: 7,
    UNDEFINED: 8,
    NUMBER: 9,
    STRING: 10,
    BOOLEAN: 11
  };
  
  /**
   * @return {proto.Argument.MsgCase}
   */
  proto.Argument.prototype.getMsgCase = function() {
    return /** @type {proto.Argument.MsgCase} */(jspb.Message.computeOneofCase(this, proto.Argument.oneofGroups_[0]));
  };
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.Argument.prototype.toObject = function(opt_includeInstance) {
    return proto.Argument.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.Argument} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Argument.toObject = function(includeInstance, msg) {
    var obj = {
      error: (f = msg.getError()) && proto.Argument.ErrorValue.toObject(includeInstance, f),
      buffer: (f = msg.getBuffer()) && proto.Argument.BufferValue.toObject(includeInstance, f),
      object: (f = msg.getObject()) && proto.Argument.ObjectValue.toObject(includeInstance, f),
      array: (f = msg.getArray()) && proto.Argument.ArrayValue.toObject(includeInstance, f),
      proxy: (f = msg.getProxy()) && proto.Argument.ProxyValue.toObject(includeInstance, f),
      pb_function: (f = msg.getFunction()) && proto.Argument.FunctionValue.toObject(includeInstance, f),
      pb_null: (f = msg.getNull()) && proto.Argument.NullValue.toObject(includeInstance, f),
      undefined: (f = msg.getUndefined()) && proto.Argument.UndefinedValue.toObject(includeInstance, f),
      number: +jspb.Message.getFieldWithDefault(msg, 9, 0.0),
      string: jspb.Message.getFieldWithDefault(msg, 10, ""),
      pb_boolean: jspb.Message.getFieldWithDefault(msg, 11, false)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.Argument}
   */
  proto.Argument.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.Argument;
    return proto.Argument.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.Argument} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.Argument}
   */
  proto.Argument.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = new proto.Argument.ErrorValue;
        reader.readMessage(value,proto.Argument.ErrorValue.deserializeBinaryFromReader);
        msg.setError(value);
        break;
      case 2:
        var value = new proto.Argument.BufferValue;
        reader.readMessage(value,proto.Argument.BufferValue.deserializeBinaryFromReader);
        msg.setBuffer(value);
        break;
      case 3:
        var value = new proto.Argument.ObjectValue;
        reader.readMessage(value,proto.Argument.ObjectValue.deserializeBinaryFromReader);
        msg.setObject(value);
        break;
      case 4:
        var value = new proto.Argument.ArrayValue;
        reader.readMessage(value,proto.Argument.ArrayValue.deserializeBinaryFromReader);
        msg.setArray(value);
        break;
      case 5:
        var value = new proto.Argument.ProxyValue;
        reader.readMessage(value,proto.Argument.ProxyValue.deserializeBinaryFromReader);
        msg.setProxy(value);
        break;
      case 6:
        var value = new proto.Argument.FunctionValue;
        reader.readMessage(value,proto.Argument.FunctionValue.deserializeBinaryFromReader);
        msg.setFunction(value);
        break;
      case 7:
        var value = new proto.Argument.NullValue;
        reader.readMessage(value,proto.Argument.NullValue.deserializeBinaryFromReader);
        msg.setNull(value);
        break;
      case 8:
        var value = new proto.Argument.UndefinedValue;
        reader.readMessage(value,proto.Argument.UndefinedValue.deserializeBinaryFromReader);
        msg.setUndefined(value);
        break;
      case 9:
        var value = /** @type {number} */ (reader.readDouble());
        msg.setNumber(value);
        break;
      case 10:
        var value = /** @type {string} */ (reader.readString());
        msg.setString(value);
        break;
      case 11:
        var value = /** @type {boolean} */ (reader.readBool());
        msg.setBoolean(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.Argument.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.Argument.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.Argument} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Argument.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getError();
    if (f != null) {
      writer.writeMessage(
        1,
        f,
        proto.Argument.ErrorValue.serializeBinaryToWriter
      );
    }
    f = message.getBuffer();
    if (f != null) {
      writer.writeMessage(
        2,
        f,
        proto.Argument.BufferValue.serializeBinaryToWriter
      );
    }
    f = message.getObject();
    if (f != null) {
      writer.writeMessage(
        3,
        f,
        proto.Argument.ObjectValue.serializeBinaryToWriter
      );
    }
    f = message.getArray();
    if (f != null) {
      writer.writeMessage(
        4,
        f,
        proto.Argument.ArrayValue.serializeBinaryToWriter
      );
    }
    f = message.getProxy();
    if (f != null) {
      writer.writeMessage(
        5,
        f,
        proto.Argument.ProxyValue.serializeBinaryToWriter
      );
    }
    f = message.getFunction();
    if (f != null) {
      writer.writeMessage(
        6,
        f,
        proto.Argument.FunctionValue.serializeBinaryToWriter
      );
    }
    f = message.getNull();
    if (f != null) {
      writer.writeMessage(
        7,
        f,
        proto.Argument.NullValue.serializeBinaryToWriter
      );
    }
    f = message.getUndefined();
    if (f != null) {
      writer.writeMessage(
        8,
        f,
        proto.Argument.UndefinedValue.serializeBinaryToWriter
      );
    }
    f = /** @type {number} */ (jspb.Message.getField(message, 9));
    if (f != null) {
      writer.writeDouble(
        9,
        f
      );
    }
    f = /** @type {string} */ (jspb.Message.getField(message, 10));
    if (f != null) {
      writer.writeString(
        10,
        f
      );
    }
    f = /** @type {boolean} */ (jspb.Message.getField(message, 11));
    if (f != null) {
      writer.writeBool(
        11,
        f
      );
    }
  };
  
  
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.Argument.ErrorValue.prototype.toObject = function(opt_includeInstance) {
    return proto.Argument.ErrorValue.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.Argument.ErrorValue} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Argument.ErrorValue.toObject = function(includeInstance, msg) {
    var obj = {
      message: jspb.Message.getFieldWithDefault(msg, 1, ""),
      stack: jspb.Message.getFieldWithDefault(msg, 2, ""),
      code: jspb.Message.getFieldWithDefault(msg, 3, "")
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.Argument.ErrorValue}
   */
  proto.Argument.ErrorValue.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.Argument.ErrorValue;
    return proto.Argument.ErrorValue.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.Argument.ErrorValue} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.Argument.ErrorValue}
   */
  proto.Argument.ErrorValue.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = /** @type {string} */ (reader.readString());
        msg.setMessage(value);
        break;
      case 2:
        var value = /** @type {string} */ (reader.readString());
        msg.setStack(value);
        break;
      case 3:
        var value = /** @type {string} */ (reader.readString());
        msg.setCode(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.Argument.ErrorValue.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.Argument.ErrorValue.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.Argument.ErrorValue} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Argument.ErrorValue.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getMessage();
    if (f.length > 0) {
      writer.writeString(
        1,
        f
      );
    }
    f = message.getStack();
    if (f.length > 0) {
      writer.writeString(
        2,
        f
      );
    }
    f = message.getCode();
    if (f.length > 0) {
      writer.writeString(
        3,
        f
      );
    }
  };
  
  
  /**
   * optional string message = 1;
   * @return {string}
   */
  proto.Argument.ErrorValue.prototype.getMessage = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
  };
  
  
  /** @param {string} value */
  proto.Argument.ErrorValue.prototype.setMessage = function(value) {
    jspb.Message.setProto3StringField(this, 1, value);
  };
  
  
  /**
   * optional string stack = 2;
   * @return {string}
   */
  proto.Argument.ErrorValue.prototype.getStack = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
  };
  
  
  /** @param {string} value */
  proto.Argument.ErrorValue.prototype.setStack = function(value) {
    jspb.Message.setProto3StringField(this, 2, value);
  };
  
  
  /**
   * optional string code = 3;
   * @return {string}
   */
  proto.Argument.ErrorValue.prototype.getCode = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
  };
  
  
  /** @param {string} value */
  proto.Argument.ErrorValue.prototype.setCode = function(value) {
    jspb.Message.setProto3StringField(this, 3, value);
  };
  
  
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.Argument.BufferValue.prototype.toObject = function(opt_includeInstance) {
    return proto.Argument.BufferValue.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.Argument.BufferValue} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Argument.BufferValue.toObject = function(includeInstance, msg) {
    var obj = {
      data: msg.getData_asB64()
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.Argument.BufferValue}
   */
  proto.Argument.BufferValue.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.Argument.BufferValue;
    return proto.Argument.BufferValue.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.Argument.BufferValue} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.Argument.BufferValue}
   */
  proto.Argument.BufferValue.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = /** @type {!Uint8Array} */ (reader.readBytes());
        msg.setData(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.Argument.BufferValue.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.Argument.BufferValue.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.Argument.BufferValue} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Argument.BufferValue.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getData_asU8();
    if (f.length > 0) {
      writer.writeBytes(
        1,
        f
      );
    }
  };
  
  
  /**
   * optional bytes data = 1;
   * @return {!(string|Uint8Array)}
   */
  proto.Argument.BufferValue.prototype.getData = function() {
    return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
  };
  
  
  /**
   * optional bytes data = 1;
   * This is a type-conversion wrapper around `getData()`
   * @return {string}
   */
  proto.Argument.BufferValue.prototype.getData_asB64 = function() {
    return /** @type {string} */ (jspb.Message.bytesAsB64(
        this.getData()));
  };
  
  
  /**
   * optional bytes data = 1;
   * Note that Uint8Array is not supported on all browsers.
   * @see http://caniuse.com/Uint8Array
   * This is a type-conversion wrapper around `getData()`
   * @return {!Uint8Array}
   */
  proto.Argument.BufferValue.prototype.getData_asU8 = function() {
    return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
        this.getData()));
  };
  
  
  /** @param {!(string|Uint8Array)} value */
  proto.Argument.BufferValue.prototype.setData = function(value) {
    jspb.Message.setProto3BytesField(this, 1, value);
  };
  
  
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.Argument.ObjectValue.prototype.toObject = function(opt_includeInstance) {
    return proto.Argument.ObjectValue.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.Argument.ObjectValue} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Argument.ObjectValue.toObject = function(includeInstance, msg) {
    var obj = {
      dataMap: (f = msg.getDataMap()) ? f.toObject(includeInstance, proto.Argument.toObject) : []
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.Argument.ObjectValue}
   */
  proto.Argument.ObjectValue.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.Argument.ObjectValue;
    return proto.Argument.ObjectValue.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.Argument.ObjectValue} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.Argument.ObjectValue}
   */
  proto.Argument.ObjectValue.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = msg.getDataMap();
        reader.readMessage(value, function(message, reader) {
          jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readMessage, proto.Argument.deserializeBinaryFromReader, "");
           });
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.Argument.ObjectValue.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.Argument.ObjectValue.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.Argument.ObjectValue} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Argument.ObjectValue.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getDataMap(true);
    if (f && f.getLength() > 0) {
      f.serializeBinary(1, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeMessage, proto.Argument.serializeBinaryToWriter);
    }
  };
  
  
  /**
   * map<string, Argument> data = 1;
   * @param {boolean=} opt_noLazyCreate Do not create the map if
   * empty, instead returning `undefined`
   * @return {!jspb.Map<string,!proto.Argument>}
   */
  proto.Argument.ObjectValue.prototype.getDataMap = function(opt_noLazyCreate) {
    return /** @type {!jspb.Map<string,!proto.Argument>} */ (
        jspb.Message.getMapField(this, 1, opt_noLazyCreate,
        proto.Argument));
  };
  
  
  /**
   * Clears values from the map. The map will be non-null.
   */
  proto.Argument.ObjectValue.prototype.clearDataMap = function() {
    this.getDataMap().clear();
  };
  
  
  
  /**
   * List of repeated fields within this message type.
   * @private {!Array<number>}
   * @const
   */
  proto.Argument.ArrayValue.repeatedFields_ = [1];
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.Argument.ArrayValue.prototype.toObject = function(opt_includeInstance) {
    return proto.Argument.ArrayValue.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.Argument.ArrayValue} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Argument.ArrayValue.toObject = function(includeInstance, msg) {
    var obj = {
      dataList: jspb.Message.toObjectList(msg.getDataList(),
      proto.Argument.toObject, includeInstance)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.Argument.ArrayValue}
   */
  proto.Argument.ArrayValue.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.Argument.ArrayValue;
    return proto.Argument.ArrayValue.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.Argument.ArrayValue} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.Argument.ArrayValue}
   */
  proto.Argument.ArrayValue.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = new proto.Argument;
        reader.readMessage(value,proto.Argument.deserializeBinaryFromReader);
        msg.addData(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.Argument.ArrayValue.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.Argument.ArrayValue.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.Argument.ArrayValue} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Argument.ArrayValue.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getDataList();
    if (f.length > 0) {
      writer.writeRepeatedMessage(
        1,
        f,
        proto.Argument.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * repeated Argument data = 1;
   * @return {!Array<!proto.Argument>}
   */
  proto.Argument.ArrayValue.prototype.getDataList = function() {
    return /** @type{!Array<!proto.Argument>} */ (
      jspb.Message.getRepeatedWrapperField(this, proto.Argument, 1));
  };
  
  
  /** @param {!Array<!proto.Argument>} value */
  proto.Argument.ArrayValue.prototype.setDataList = function(value) {
    jspb.Message.setRepeatedWrapperField(this, 1, value);
  };
  
  
  /**
   * @param {!proto.Argument=} opt_value
   * @param {number=} opt_index
   * @return {!proto.Argument}
   */
  proto.Argument.ArrayValue.prototype.addData = function(opt_value, opt_index) {
    return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.Argument, opt_index);
  };
  
  
  /**
   * Clears the list making it empty but non-null.
   */
  proto.Argument.ArrayValue.prototype.clearDataList = function() {
    this.setDataList([]);
  };
  
  
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.Argument.ProxyValue.prototype.toObject = function(opt_includeInstance) {
    return proto.Argument.ProxyValue.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.Argument.ProxyValue} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Argument.ProxyValue.toObject = function(includeInstance, msg) {
    var obj = {
      id: jspb.Message.getFieldWithDefault(msg, 1, 0)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.Argument.ProxyValue}
   */
  proto.Argument.ProxyValue.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.Argument.ProxyValue;
    return proto.Argument.ProxyValue.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.Argument.ProxyValue} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.Argument.ProxyValue}
   */
  proto.Argument.ProxyValue.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = /** @type {number} */ (reader.readUint64());
        msg.setId(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.Argument.ProxyValue.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.Argument.ProxyValue.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.Argument.ProxyValue} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Argument.ProxyValue.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getId();
    if (f !== 0) {
      writer.writeUint64(
        1,
        f
      );
    }
  };
  
  
  /**
   * optional uint64 id = 1;
   * @return {number}
   */
  proto.Argument.ProxyValue.prototype.getId = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
  };
  
  
  /** @param {number} value */
  proto.Argument.ProxyValue.prototype.setId = function(value) {
    jspb.Message.setProto3IntField(this, 1, value);
  };
  
  
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.Argument.FunctionValue.prototype.toObject = function(opt_includeInstance) {
    return proto.Argument.FunctionValue.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.Argument.FunctionValue} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Argument.FunctionValue.toObject = function(includeInstance, msg) {
    var obj = {
      id: jspb.Message.getFieldWithDefault(msg, 1, 0)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.Argument.FunctionValue}
   */
  proto.Argument.FunctionValue.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.Argument.FunctionValue;
    return proto.Argument.FunctionValue.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.Argument.FunctionValue} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.Argument.FunctionValue}
   */
  proto.Argument.FunctionValue.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = /** @type {number} */ (reader.readUint64());
        msg.setId(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.Argument.FunctionValue.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.Argument.FunctionValue.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.Argument.FunctionValue} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Argument.FunctionValue.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getId();
    if (f !== 0) {
      writer.writeUint64(
        1,
        f
      );
    }
  };
  
  
  /**
   * optional uint64 id = 1;
   * @return {number}
   */
  proto.Argument.FunctionValue.prototype.getId = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
  };
  
  
  /** @param {number} value */
  proto.Argument.FunctionValue.prototype.setId = function(value) {
    jspb.Message.setProto3IntField(this, 1, value);
  };
  
  
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.Argument.NullValue.prototype.toObject = function(opt_includeInstance) {
    return proto.Argument.NullValue.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.Argument.NullValue} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Argument.NullValue.toObject = function(includeInstance, msg) {
    var obj = {
  
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.Argument.NullValue}
   */
  proto.Argument.NullValue.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.Argument.NullValue;
    return proto.Argument.NullValue.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.Argument.NullValue} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.Argument.NullValue}
   */
  proto.Argument.NullValue.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.Argument.NullValue.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.Argument.NullValue.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.Argument.NullValue} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Argument.NullValue.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
  };
  
  
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.Argument.UndefinedValue.prototype.toObject = function(opt_includeInstance) {
    return proto.Argument.UndefinedValue.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.Argument.UndefinedValue} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Argument.UndefinedValue.toObject = function(includeInstance, msg) {
    var obj = {
  
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.Argument.UndefinedValue}
   */
  proto.Argument.UndefinedValue.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.Argument.UndefinedValue;
    return proto.Argument.UndefinedValue.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.Argument.UndefinedValue} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.Argument.UndefinedValue}
   */
  proto.Argument.UndefinedValue.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.Argument.UndefinedValue.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.Argument.UndefinedValue.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.Argument.UndefinedValue} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Argument.UndefinedValue.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
  };
  
  
  /**
   * optional ErrorValue error = 1;
   * @return {?proto.Argument.ErrorValue}
   */
  proto.Argument.prototype.getError = function() {
    return /** @type{?proto.Argument.ErrorValue} */ (
      jspb.Message.getWrapperField(this, proto.Argument.ErrorValue, 1));
  };
  
  
  /** @param {?proto.Argument.ErrorValue|undefined} value */
  proto.Argument.prototype.setError = function(value) {
    jspb.Message.setOneofWrapperField(this, 1, proto.Argument.oneofGroups_[0], value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   */
  proto.Argument.prototype.clearError = function() {
    this.setError(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.Argument.prototype.hasError = function() {
    return jspb.Message.getField(this, 1) != null;
  };
  
  
  /**
   * optional BufferValue buffer = 2;
   * @return {?proto.Argument.BufferValue}
   */
  proto.Argument.prototype.getBuffer = function() {
    return /** @type{?proto.Argument.BufferValue} */ (
      jspb.Message.getWrapperField(this, proto.Argument.BufferValue, 2));
  };
  
  
  /** @param {?proto.Argument.BufferValue|undefined} value */
  proto.Argument.prototype.setBuffer = function(value) {
    jspb.Message.setOneofWrapperField(this, 2, proto.Argument.oneofGroups_[0], value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   */
  proto.Argument.prototype.clearBuffer = function() {
    this.setBuffer(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.Argument.prototype.hasBuffer = function() {
    return jspb.Message.getField(this, 2) != null;
  };
  
  
  /**
   * optional ObjectValue object = 3;
   * @return {?proto.Argument.ObjectValue}
   */
  proto.Argument.prototype.getObject = function() {
    return /** @type{?proto.Argument.ObjectValue} */ (
      jspb.Message.getWrapperField(this, proto.Argument.ObjectValue, 3));
  };
  
  
  /** @param {?proto.Argument.ObjectValue|undefined} value */
  proto.Argument.prototype.setObject = function(value) {
    jspb.Message.setOneofWrapperField(this, 3, proto.Argument.oneofGroups_[0], value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   */
  proto.Argument.prototype.clearObject = function() {
    this.setObject(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.Argument.prototype.hasObject = function() {
    return jspb.Message.getField(this, 3) != null;
  };
  
  
  /**
   * optional ArrayValue array = 4;
   * @return {?proto.Argument.ArrayValue}
   */
  proto.Argument.prototype.getArray = function() {
    return /** @type{?proto.Argument.ArrayValue} */ (
      jspb.Message.getWrapperField(this, proto.Argument.ArrayValue, 4));
  };
  
  
  /** @param {?proto.Argument.ArrayValue|undefined} value */
  proto.Argument.prototype.setArray = function(value) {
    jspb.Message.setOneofWrapperField(this, 4, proto.Argument.oneofGroups_[0], value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   */
  proto.Argument.prototype.clearArray = function() {
    this.setArray(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.Argument.prototype.hasArray = function() {
    return jspb.Message.getField(this, 4) != null;
  };
  
  
  /**
   * optional ProxyValue proxy = 5;
   * @return {?proto.Argument.ProxyValue}
   */
  proto.Argument.prototype.getProxy = function() {
    return /** @type{?proto.Argument.ProxyValue} */ (
      jspb.Message.getWrapperField(this, proto.Argument.ProxyValue, 5));
  };
  
  
  /** @param {?proto.Argument.ProxyValue|undefined} value */
  proto.Argument.prototype.setProxy = function(value) {
    jspb.Message.setOneofWrapperField(this, 5, proto.Argument.oneofGroups_[0], value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   */
  proto.Argument.prototype.clearProxy = function() {
    this.setProxy(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.Argument.prototype.hasProxy = function() {
    return jspb.Message.getField(this, 5) != null;
  };
  
  
  /**
   * optional FunctionValue function = 6;
   * @return {?proto.Argument.FunctionValue}
   */
  proto.Argument.prototype.getFunction = function() {
    return /** @type{?proto.Argument.FunctionValue} */ (
      jspb.Message.getWrapperField(this, proto.Argument.FunctionValue, 6));
  };
  
  
  /** @param {?proto.Argument.FunctionValue|undefined} value */
  proto.Argument.prototype.setFunction = function(value) {
    jspb.Message.setOneofWrapperField(this, 6, proto.Argument.oneofGroups_[0], value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   */
  proto.Argument.prototype.clearFunction = function() {
    this.setFunction(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.Argument.prototype.hasFunction = function() {
    return jspb.Message.getField(this, 6) != null;
  };
  
  
  /**
   * optional NullValue null = 7;
   * @return {?proto.Argument.NullValue}
   */
  proto.Argument.prototype.getNull = function() {
    return /** @type{?proto.Argument.NullValue} */ (
      jspb.Message.getWrapperField(this, proto.Argument.NullValue, 7));
  };
  
  
  /** @param {?proto.Argument.NullValue|undefined} value */
  proto.Argument.prototype.setNull = function(value) {
    jspb.Message.setOneofWrapperField(this, 7, proto.Argument.oneofGroups_[0], value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   */
  proto.Argument.prototype.clearNull = function() {
    this.setNull(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.Argument.prototype.hasNull = function() {
    return jspb.Message.getField(this, 7) != null;
  };
  
  
  /**
   * optional UndefinedValue undefined = 8;
   * @return {?proto.Argument.UndefinedValue}
   */
  proto.Argument.prototype.getUndefined = function() {
    return /** @type{?proto.Argument.UndefinedValue} */ (
      jspb.Message.getWrapperField(this, proto.Argument.UndefinedValue, 8));
  };
  
  
  /** @param {?proto.Argument.UndefinedValue|undefined} value */
  proto.Argument.prototype.setUndefined = function(value) {
    jspb.Message.setOneofWrapperField(this, 8, proto.Argument.oneofGroups_[0], value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   */
  proto.Argument.prototype.clearUndefined = function() {
    this.setUndefined(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.Argument.prototype.hasUndefined = function() {
    return jspb.Message.getField(this, 8) != null;
  };
  
  
  /**
   * optional double number = 9;
   * @return {number}
   */
  proto.Argument.prototype.getNumber = function() {
    return /** @type {number} */ (+jspb.Message.getFieldWithDefault(this, 9, 0.0));
  };
  
  
  /** @param {number} value */
  proto.Argument.prototype.setNumber = function(value) {
    jspb.Message.setOneofField(this, 9, proto.Argument.oneofGroups_[0], value);
  };
  
  
  /**
   * Clears the field making it undefined.
   */
  proto.Argument.prototype.clearNumber = function() {
    jspb.Message.setOneofField(this, 9, proto.Argument.oneofGroups_[0], undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.Argument.prototype.hasNumber = function() {
    return jspb.Message.getField(this, 9) != null;
  };
  
  
  /**
   * optional string string = 10;
   * @return {string}
   */
  proto.Argument.prototype.getString = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 10, ""));
  };
  
  
  /** @param {string} value */
  proto.Argument.prototype.setString = function(value) {
    jspb.Message.setOneofField(this, 10, proto.Argument.oneofGroups_[0], value);
  };
  
  
  /**
   * Clears the field making it undefined.
   */
  proto.Argument.prototype.clearString = function() {
    jspb.Message.setOneofField(this, 10, proto.Argument.oneofGroups_[0], undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.Argument.prototype.hasString = function() {
    return jspb.Message.getField(this, 10) != null;
  };
  
  
  /**
   * optional bool boolean = 11;
   * Note that Boolean fields may be set to 0/1 when serialized from a Java server.
   * You should avoid comparisons like {@code val === true/false} in those cases.
   * @return {boolean}
   */
  proto.Argument.prototype.getBoolean = function() {
    return /** @type {boolean} */ (jspb.Message.getFieldWithDefault(this, 11, false));
  };
  
  
  /** @param {boolean} value */
  proto.Argument.prototype.setBoolean = function(value) {
    jspb.Message.setOneofField(this, 11, proto.Argument.oneofGroups_[0], value);
  };
  
  
  /**
   * Clears the field making it undefined.
   */
  proto.Argument.prototype.clearBoolean = function() {
    jspb.Message.setOneofField(this, 11, proto.Argument.oneofGroups_[0], undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.Argument.prototype.hasBoolean = function() {
    return jspb.Message.getField(this, 11) != null;
  };
  
  
  
  /**
   * Oneof group definitions for this message. Each group defines the field
   * numbers belonging to that group. When of these fields' value is set, all
   * other fields in the group are cleared. During deserialization, if multiple
   * fields are encountered for a group, only the last value seen will be kept.
   * @private {!Array<!Array<number>>}
   * @const
   */
  proto.Method.oneofGroups_ = [[1,2]];
  
  /**
   * @enum {number}
   */
  proto.Method.MsgCase = {
    MSG_NOT_SET: 0,
    NAMED_PROXY: 1,
    NUMBERED_PROXY: 2
  };
  
  /**
   * @return {proto.Method.MsgCase}
   */
  proto.Method.prototype.getMsgCase = function() {
    return /** @type {proto.Method.MsgCase} */(jspb.Message.computeOneofCase(this, proto.Method.oneofGroups_[0]));
  };
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.Method.prototype.toObject = function(opt_includeInstance) {
    return proto.Method.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.Method} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Method.toObject = function(includeInstance, msg) {
    var obj = {
      namedProxy: (f = msg.getNamedProxy()) && proto.Method.Named.toObject(includeInstance, f),
      numberedProxy: (f = msg.getNumberedProxy()) && proto.Method.Numbered.toObject(includeInstance, f)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.Method}
   */
  proto.Method.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.Method;
    return proto.Method.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.Method} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.Method}
   */
  proto.Method.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = new proto.Method.Named;
        reader.readMessage(value,proto.Method.Named.deserializeBinaryFromReader);
        msg.setNamedProxy(value);
        break;
      case 2:
        var value = new proto.Method.Numbered;
        reader.readMessage(value,proto.Method.Numbered.deserializeBinaryFromReader);
        msg.setNumberedProxy(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.Method.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.Method.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.Method} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Method.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getNamedProxy();
    if (f != null) {
      writer.writeMessage(
        1,
        f,
        proto.Method.Named.serializeBinaryToWriter
      );
    }
    f = message.getNumberedProxy();
    if (f != null) {
      writer.writeMessage(
        2,
        f,
        proto.Method.Numbered.serializeBinaryToWriter
      );
    }
  };
  
  
  
  /**
   * List of repeated fields within this message type.
   * @private {!Array<number>}
   * @const
   */
  proto.Method.Named.repeatedFields_ = [4];
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.Method.Named.prototype.toObject = function(opt_includeInstance) {
    return proto.Method.Named.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.Method.Named} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Method.Named.toObject = function(includeInstance, msg) {
    var obj = {
      id: jspb.Message.getFieldWithDefault(msg, 1, 0),
      module: jspb.Message.getFieldWithDefault(msg, 2, 0),
      method: jspb.Message.getFieldWithDefault(msg, 3, ""),
      argsList: jspb.Message.toObjectList(msg.getArgsList(),
      proto.Argument.toObject, includeInstance)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.Method.Named}
   */
  proto.Method.Named.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.Method.Named;
    return proto.Method.Named.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.Method.Named} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.Method.Named}
   */
  proto.Method.Named.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = /** @type {number} */ (reader.readUint64());
        msg.setId(value);
        break;
      case 2:
        var value = /** @type {!proto.Module} */ (reader.readEnum());
        msg.setModule(value);
        break;
      case 3:
        var value = /** @type {string} */ (reader.readString());
        msg.setMethod(value);
        break;
      case 4:
        var value = new proto.Argument;
        reader.readMessage(value,proto.Argument.deserializeBinaryFromReader);
        msg.addArgs(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.Method.Named.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.Method.Named.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.Method.Named} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Method.Named.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getId();
    if (f !== 0) {
      writer.writeUint64(
        1,
        f
      );
    }
    f = message.getModule();
    if (f !== 0.0) {
      writer.writeEnum(
        2,
        f
      );
    }
    f = message.getMethod();
    if (f.length > 0) {
      writer.writeString(
        3,
        f
      );
    }
    f = message.getArgsList();
    if (f.length > 0) {
      writer.writeRepeatedMessage(
        4,
        f,
        proto.Argument.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * optional uint64 id = 1;
   * @return {number}
   */
  proto.Method.Named.prototype.getId = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
  };
  
  
  /** @param {number} value */
  proto.Method.Named.prototype.setId = function(value) {
    jspb.Message.setProto3IntField(this, 1, value);
  };
  
  
  /**
   * optional Module module = 2;
   * @return {!proto.Module}
   */
  proto.Method.Named.prototype.getModule = function() {
    return /** @type {!proto.Module} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
  };
  
  
  /** @param {!proto.Module} value */
  proto.Method.Named.prototype.setModule = function(value) {
    jspb.Message.setProto3EnumField(this, 2, value);
  };
  
  
  /**
   * optional string method = 3;
   * @return {string}
   */
  proto.Method.Named.prototype.getMethod = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
  };
  
  
  /** @param {string} value */
  proto.Method.Named.prototype.setMethod = function(value) {
    jspb.Message.setProto3StringField(this, 3, value);
  };
  
  
  /**
   * repeated Argument args = 4;
   * @return {!Array<!proto.Argument>}
   */
  proto.Method.Named.prototype.getArgsList = function() {
    return /** @type{!Array<!proto.Argument>} */ (
      jspb.Message.getRepeatedWrapperField(this, proto.Argument, 4));
  };
  
  
  /** @param {!Array<!proto.Argument>} value */
  proto.Method.Named.prototype.setArgsList = function(value) {
    jspb.Message.setRepeatedWrapperField(this, 4, value);
  };
  
  
  /**
   * @param {!proto.Argument=} opt_value
   * @param {number=} opt_index
   * @return {!proto.Argument}
   */
  proto.Method.Named.prototype.addArgs = function(opt_value, opt_index) {
    return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.Argument, opt_index);
  };
  
  
  /**
   * Clears the list making it empty but non-null.
   */
  proto.Method.Named.prototype.clearArgsList = function() {
    this.setArgsList([]);
  };
  
  
  
  /**
   * List of repeated fields within this message type.
   * @private {!Array<number>}
   * @const
   */
  proto.Method.Numbered.repeatedFields_ = [4];
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.Method.Numbered.prototype.toObject = function(opt_includeInstance) {
    return proto.Method.Numbered.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.Method.Numbered} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Method.Numbered.toObject = function(includeInstance, msg) {
    var obj = {
      id: jspb.Message.getFieldWithDefault(msg, 1, 0),
      proxyId: jspb.Message.getFieldWithDefault(msg, 2, 0),
      method: jspb.Message.getFieldWithDefault(msg, 3, ""),
      argsList: jspb.Message.toObjectList(msg.getArgsList(),
      proto.Argument.toObject, includeInstance)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.Method.Numbered}
   */
  proto.Method.Numbered.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.Method.Numbered;
    return proto.Method.Numbered.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.Method.Numbered} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.Method.Numbered}
   */
  proto.Method.Numbered.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = /** @type {number} */ (reader.readUint64());
        msg.setId(value);
        break;
      case 2:
        var value = /** @type {number} */ (reader.readUint64());
        msg.setProxyId(value);
        break;
      case 3:
        var value = /** @type {string} */ (reader.readString());
        msg.setMethod(value);
        break;
      case 4:
        var value = new proto.Argument;
        reader.readMessage(value,proto.Argument.deserializeBinaryFromReader);
        msg.addArgs(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.Method.Numbered.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.Method.Numbered.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.Method.Numbered} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Method.Numbered.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getId();
    if (f !== 0) {
      writer.writeUint64(
        1,
        f
      );
    }
    f = message.getProxyId();
    if (f !== 0) {
      writer.writeUint64(
        2,
        f
      );
    }
    f = message.getMethod();
    if (f.length > 0) {
      writer.writeString(
        3,
        f
      );
    }
    f = message.getArgsList();
    if (f.length > 0) {
      writer.writeRepeatedMessage(
        4,
        f,
        proto.Argument.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * optional uint64 id = 1;
   * @return {number}
   */
  proto.Method.Numbered.prototype.getId = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
  };
  
  
  /** @param {number} value */
  proto.Method.Numbered.prototype.setId = function(value) {
    jspb.Message.setProto3IntField(this, 1, value);
  };
  
  
  /**
   * optional uint64 proxy_id = 2;
   * @return {number}
   */
  proto.Method.Numbered.prototype.getProxyId = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
  };
  
  
  /** @param {number} value */
  proto.Method.Numbered.prototype.setProxyId = function(value) {
    jspb.Message.setProto3IntField(this, 2, value);
  };
  
  
  /**
   * optional string method = 3;
   * @return {string}
   */
  proto.Method.Numbered.prototype.getMethod = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
  };
  
  
  /** @param {string} value */
  proto.Method.Numbered.prototype.setMethod = function(value) {
    jspb.Message.setProto3StringField(this, 3, value);
  };
  
  
  /**
   * repeated Argument args = 4;
   * @return {!Array<!proto.Argument>}
   */
  proto.Method.Numbered.prototype.getArgsList = function() {
    return /** @type{!Array<!proto.Argument>} */ (
      jspb.Message.getRepeatedWrapperField(this, proto.Argument, 4));
  };
  
  
  /** @param {!Array<!proto.Argument>} value */
  proto.Method.Numbered.prototype.setArgsList = function(value) {
    jspb.Message.setRepeatedWrapperField(this, 4, value);
  };
  
  
  /**
   * @param {!proto.Argument=} opt_value
   * @param {number=} opt_index
   * @return {!proto.Argument}
   */
  proto.Method.Numbered.prototype.addArgs = function(opt_value, opt_index) {
    return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.Argument, opt_index);
  };
  
  
  /**
   * Clears the list making it empty but non-null.
   */
  proto.Method.Numbered.prototype.clearArgsList = function() {
    this.setArgsList([]);
  };
  
  
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.Method.Fail.prototype.toObject = function(opt_includeInstance) {
    return proto.Method.Fail.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.Method.Fail} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Method.Fail.toObject = function(includeInstance, msg) {
    var obj = {
      id: jspb.Message.getFieldWithDefault(msg, 1, 0),
      response: (f = msg.getResponse()) && proto.Argument.toObject(includeInstance, f)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.Method.Fail}
   */
  proto.Method.Fail.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.Method.Fail;
    return proto.Method.Fail.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.Method.Fail} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.Method.Fail}
   */
  proto.Method.Fail.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = /** @type {number} */ (reader.readUint64());
        msg.setId(value);
        break;
      case 2:
        var value = new proto.Argument;
        reader.readMessage(value,proto.Argument.deserializeBinaryFromReader);
        msg.setResponse(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.Method.Fail.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.Method.Fail.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.Method.Fail} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Method.Fail.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getId();
    if (f !== 0) {
      writer.writeUint64(
        1,
        f
      );
    }
    f = message.getResponse();
    if (f != null) {
      writer.writeMessage(
        2,
        f,
        proto.Argument.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * optional uint64 id = 1;
   * @return {number}
   */
  proto.Method.Fail.prototype.getId = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
  };
  
  
  /** @param {number} value */
  proto.Method.Fail.prototype.setId = function(value) {
    jspb.Message.setProto3IntField(this, 1, value);
  };
  
  
  /**
   * optional Argument response = 2;
   * @return {?proto.Argument}
   */
  proto.Method.Fail.prototype.getResponse = function() {
    return /** @type{?proto.Argument} */ (
      jspb.Message.getWrapperField(this, proto.Argument, 2));
  };
  
  
  /** @param {?proto.Argument|undefined} value */
  proto.Method.Fail.prototype.setResponse = function(value) {
    jspb.Message.setWrapperField(this, 2, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   */
  proto.Method.Fail.prototype.clearResponse = function() {
    this.setResponse(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.Method.Fail.prototype.hasResponse = function() {
    return jspb.Message.getField(this, 2) != null;
  };
  
  
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.Method.Success.prototype.toObject = function(opt_includeInstance) {
    return proto.Method.Success.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.Method.Success} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Method.Success.toObject = function(includeInstance, msg) {
    var obj = {
      id: jspb.Message.getFieldWithDefault(msg, 1, 0),
      response: (f = msg.getResponse()) && proto.Argument.toObject(includeInstance, f)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.Method.Success}
   */
  proto.Method.Success.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.Method.Success;
    return proto.Method.Success.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.Method.Success} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.Method.Success}
   */
  proto.Method.Success.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = /** @type {number} */ (reader.readUint64());
        msg.setId(value);
        break;
      case 2:
        var value = new proto.Argument;
        reader.readMessage(value,proto.Argument.deserializeBinaryFromReader);
        msg.setResponse(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.Method.Success.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.Method.Success.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.Method.Success} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Method.Success.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getId();
    if (f !== 0) {
      writer.writeUint64(
        1,
        f
      );
    }
    f = message.getResponse();
    if (f != null) {
      writer.writeMessage(
        2,
        f,
        proto.Argument.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * optional uint64 id = 1;
   * @return {number}
   */
  proto.Method.Success.prototype.getId = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
  };
  
  
  /** @param {number} value */
  proto.Method.Success.prototype.setId = function(value) {
    jspb.Message.setProto3IntField(this, 1, value);
  };
  
  
  /**
   * optional Argument response = 2;
   * @return {?proto.Argument}
   */
  proto.Method.Success.prototype.getResponse = function() {
    return /** @type{?proto.Argument} */ (
      jspb.Message.getWrapperField(this, proto.Argument, 2));
  };
  
  
  /** @param {?proto.Argument|undefined} value */
  proto.Method.Success.prototype.setResponse = function(value) {
    jspb.Message.setWrapperField(this, 2, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   */
  proto.Method.Success.prototype.clearResponse = function() {
    this.setResponse(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.Method.Success.prototype.hasResponse = function() {
    return jspb.Message.getField(this, 2) != null;
  };
  
  
  /**
   * optional Named named_proxy = 1;
   * @return {?proto.Method.Named}
   */
  proto.Method.prototype.getNamedProxy = function() {
    return /** @type{?proto.Method.Named} */ (
      jspb.Message.getWrapperField(this, proto.Method.Named, 1));
  };
  
  
  /** @param {?proto.Method.Named|undefined} value */
  proto.Method.prototype.setNamedProxy = function(value) {
    jspb.Message.setOneofWrapperField(this, 1, proto.Method.oneofGroups_[0], value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   */
  proto.Method.prototype.clearNamedProxy = function() {
    this.setNamedProxy(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.Method.prototype.hasNamedProxy = function() {
    return jspb.Message.getField(this, 1) != null;
  };
  
  
  /**
   * optional Numbered numbered_proxy = 2;
   * @return {?proto.Method.Numbered}
   */
  proto.Method.prototype.getNumberedProxy = function() {
    return /** @type{?proto.Method.Numbered} */ (
      jspb.Message.getWrapperField(this, proto.Method.Numbered, 2));
  };
  
  
  /** @param {?proto.Method.Numbered|undefined} value */
  proto.Method.prototype.setNumberedProxy = function(value) {
    jspb.Message.setOneofWrapperField(this, 2, proto.Method.oneofGroups_[0], value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   */
  proto.Method.prototype.clearNumberedProxy = function() {
    this.setNumberedProxy(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.Method.prototype.hasNumberedProxy = function() {
    return jspb.Message.getField(this, 2) != null;
  };
  
  
  
  /**
   * Oneof group definitions for this message. Each group defines the field
   * numbers belonging to that group. When of these fields' value is set, all
   * other fields in the group are cleared. During deserialization, if multiple
   * fields are encountered for a group, only the last value seen will be kept.
   * @private {!Array<!Array<number>>}
   * @const
   */
  proto.Callback.oneofGroups_ = [[1,2]];
  
  /**
   * @enum {number}
   */
  proto.Callback.MsgCase = {
    MSG_NOT_SET: 0,
    NAMED_CALLBACK: 1,
    NUMBERED_CALLBACK: 2
  };
  
  /**
   * @return {proto.Callback.MsgCase}
   */
  proto.Callback.prototype.getMsgCase = function() {
    return /** @type {proto.Callback.MsgCase} */(jspb.Message.computeOneofCase(this, proto.Callback.oneofGroups_[0]));
  };
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.Callback.prototype.toObject = function(opt_includeInstance) {
    return proto.Callback.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.Callback} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Callback.toObject = function(includeInstance, msg) {
    var obj = {
      namedCallback: (f = msg.getNamedCallback()) && proto.Callback.Named.toObject(includeInstance, f),
      numberedCallback: (f = msg.getNumberedCallback()) && proto.Callback.Numbered.toObject(includeInstance, f)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.Callback}
   */
  proto.Callback.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.Callback;
    return proto.Callback.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.Callback} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.Callback}
   */
  proto.Callback.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = new proto.Callback.Named;
        reader.readMessage(value,proto.Callback.Named.deserializeBinaryFromReader);
        msg.setNamedCallback(value);
        break;
      case 2:
        var value = new proto.Callback.Numbered;
        reader.readMessage(value,proto.Callback.Numbered.deserializeBinaryFromReader);
        msg.setNumberedCallback(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.Callback.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.Callback.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.Callback} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Callback.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getNamedCallback();
    if (f != null) {
      writer.writeMessage(
        1,
        f,
        proto.Callback.Named.serializeBinaryToWriter
      );
    }
    f = message.getNumberedCallback();
    if (f != null) {
      writer.writeMessage(
        2,
        f,
        proto.Callback.Numbered.serializeBinaryToWriter
      );
    }
  };
  
  
  
  /**
   * List of repeated fields within this message type.
   * @private {!Array<number>}
   * @const
   */
  proto.Callback.Named.repeatedFields_ = [3];
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.Callback.Named.prototype.toObject = function(opt_includeInstance) {
    return proto.Callback.Named.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.Callback.Named} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Callback.Named.toObject = function(includeInstance, msg) {
    var obj = {
      module: jspb.Message.getFieldWithDefault(msg, 1, 0),
      callbackId: jspb.Message.getFieldWithDefault(msg, 2, 0),
      argsList: jspb.Message.toObjectList(msg.getArgsList(),
      proto.Argument.toObject, includeInstance)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.Callback.Named}
   */
  proto.Callback.Named.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.Callback.Named;
    return proto.Callback.Named.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.Callback.Named} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.Callback.Named}
   */
  proto.Callback.Named.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = /** @type {!proto.Module} */ (reader.readEnum());
        msg.setModule(value);
        break;
      case 2:
        var value = /** @type {number} */ (reader.readUint64());
        msg.setCallbackId(value);
        break;
      case 3:
        var value = new proto.Argument;
        reader.readMessage(value,proto.Argument.deserializeBinaryFromReader);
        msg.addArgs(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.Callback.Named.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.Callback.Named.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.Callback.Named} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Callback.Named.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getModule();
    if (f !== 0.0) {
      writer.writeEnum(
        1,
        f
      );
    }
    f = message.getCallbackId();
    if (f !== 0) {
      writer.writeUint64(
        2,
        f
      );
    }
    f = message.getArgsList();
    if (f.length > 0) {
      writer.writeRepeatedMessage(
        3,
        f,
        proto.Argument.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * optional Module module = 1;
   * @return {!proto.Module}
   */
  proto.Callback.Named.prototype.getModule = function() {
    return /** @type {!proto.Module} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
  };
  
  
  /** @param {!proto.Module} value */
  proto.Callback.Named.prototype.setModule = function(value) {
    jspb.Message.setProto3EnumField(this, 1, value);
  };
  
  
  /**
   * optional uint64 callback_id = 2;
   * @return {number}
   */
  proto.Callback.Named.prototype.getCallbackId = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
  };
  
  
  /** @param {number} value */
  proto.Callback.Named.prototype.setCallbackId = function(value) {
    jspb.Message.setProto3IntField(this, 2, value);
  };
  
  
  /**
   * repeated Argument args = 3;
   * @return {!Array<!proto.Argument>}
   */
  proto.Callback.Named.prototype.getArgsList = function() {
    return /** @type{!Array<!proto.Argument>} */ (
      jspb.Message.getRepeatedWrapperField(this, proto.Argument, 3));
  };
  
  
  /** @param {!Array<!proto.Argument>} value */
  proto.Callback.Named.prototype.setArgsList = function(value) {
    jspb.Message.setRepeatedWrapperField(this, 3, value);
  };
  
  
  /**
   * @param {!proto.Argument=} opt_value
   * @param {number=} opt_index
   * @return {!proto.Argument}
   */
  proto.Callback.Named.prototype.addArgs = function(opt_value, opt_index) {
    return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.Argument, opt_index);
  };
  
  
  /**
   * Clears the list making it empty but non-null.
   */
  proto.Callback.Named.prototype.clearArgsList = function() {
    this.setArgsList([]);
  };
  
  
  
  /**
   * List of repeated fields within this message type.
   * @private {!Array<number>}
   * @const
   */
  proto.Callback.Numbered.repeatedFields_ = [3];
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.Callback.Numbered.prototype.toObject = function(opt_includeInstance) {
    return proto.Callback.Numbered.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.Callback.Numbered} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Callback.Numbered.toObject = function(includeInstance, msg) {
    var obj = {
      proxyId: jspb.Message.getFieldWithDefault(msg, 1, 0),
      callbackId: jspb.Message.getFieldWithDefault(msg, 2, 0),
      argsList: jspb.Message.toObjectList(msg.getArgsList(),
      proto.Argument.toObject, includeInstance)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.Callback.Numbered}
   */
  proto.Callback.Numbered.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.Callback.Numbered;
    return proto.Callback.Numbered.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.Callback.Numbered} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.Callback.Numbered}
   */
  proto.Callback.Numbered.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = /** @type {number} */ (reader.readUint64());
        msg.setProxyId(value);
        break;
      case 2:
        var value = /** @type {number} */ (reader.readUint64());
        msg.setCallbackId(value);
        break;
      case 3:
        var value = new proto.Argument;
        reader.readMessage(value,proto.Argument.deserializeBinaryFromReader);
        msg.addArgs(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.Callback.Numbered.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.Callback.Numbered.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.Callback.Numbered} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Callback.Numbered.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getProxyId();
    if (f !== 0) {
      writer.writeUint64(
        1,
        f
      );
    }
    f = message.getCallbackId();
    if (f !== 0) {
      writer.writeUint64(
        2,
        f
      );
    }
    f = message.getArgsList();
    if (f.length > 0) {
      writer.writeRepeatedMessage(
        3,
        f,
        proto.Argument.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * optional uint64 proxy_id = 1;
   * @return {number}
   */
  proto.Callback.Numbered.prototype.getProxyId = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
  };
  
  
  /** @param {number} value */
  proto.Callback.Numbered.prototype.setProxyId = function(value) {
    jspb.Message.setProto3IntField(this, 1, value);
  };
  
  
  /**
   * optional uint64 callback_id = 2;
   * @return {number}
   */
  proto.Callback.Numbered.prototype.getCallbackId = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
  };
  
  
  /** @param {number} value */
  proto.Callback.Numbered.prototype.setCallbackId = function(value) {
    jspb.Message.setProto3IntField(this, 2, value);
  };
  
  
  /**
   * repeated Argument args = 3;
   * @return {!Array<!proto.Argument>}
   */
  proto.Callback.Numbered.prototype.getArgsList = function() {
    return /** @type{!Array<!proto.Argument>} */ (
      jspb.Message.getRepeatedWrapperField(this, proto.Argument, 3));
  };
  
  
  /** @param {!Array<!proto.Argument>} value */
  proto.Callback.Numbered.prototype.setArgsList = function(value) {
    jspb.Message.setRepeatedWrapperField(this, 3, value);
  };
  
  
  /**
   * @param {!proto.Argument=} opt_value
   * @param {number=} opt_index
   * @return {!proto.Argument}
   */
  proto.Callback.Numbered.prototype.addArgs = function(opt_value, opt_index) {
    return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.Argument, opt_index);
  };
  
  
  /**
   * Clears the list making it empty but non-null.
   */
  proto.Callback.Numbered.prototype.clearArgsList = function() {
    this.setArgsList([]);
  };
  
  
  /**
   * optional Named named_callback = 1;
   * @return {?proto.Callback.Named}
   */
  proto.Callback.prototype.getNamedCallback = function() {
    return /** @type{?proto.Callback.Named} */ (
      jspb.Message.getWrapperField(this, proto.Callback.Named, 1));
  };
  
  
  /** @param {?proto.Callback.Named|undefined} value */
  proto.Callback.prototype.setNamedCallback = function(value) {
    jspb.Message.setOneofWrapperField(this, 1, proto.Callback.oneofGroups_[0], value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   */
  proto.Callback.prototype.clearNamedCallback = function() {
    this.setNamedCallback(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.Callback.prototype.hasNamedCallback = function() {
    return jspb.Message.getField(this, 1) != null;
  };
  
  
  /**
   * optional Numbered numbered_callback = 2;
   * @return {?proto.Callback.Numbered}
   */
  proto.Callback.prototype.getNumberedCallback = function() {
    return /** @type{?proto.Callback.Numbered} */ (
      jspb.Message.getWrapperField(this, proto.Callback.Numbered, 2));
  };
  
  
  /** @param {?proto.Callback.Numbered|undefined} value */
  proto.Callback.prototype.setNumberedCallback = function(value) {
    jspb.Message.setOneofWrapperField(this, 2, proto.Callback.oneofGroups_[0], value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   */
  proto.Callback.prototype.clearNumberedCallback = function() {
    this.setNumberedCallback(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.Callback.prototype.hasNumberedCallback = function() {
    return jspb.Message.getField(this, 2) != null;
  };
  
  
  
  /**
   * Oneof group definitions for this message. Each group defines the field
   * numbers belonging to that group. When of these fields' value is set, all
   * other fields in the group are cleared. During deserialization, if multiple
   * fields are encountered for a group, only the last value seen will be kept.
   * @private {!Array<!Array<number>>}
   * @const
   */
  proto.Event.oneofGroups_ = [[1,2]];
  
  /**
   * @enum {number}
   */
  proto.Event.MsgCase = {
    MSG_NOT_SET: 0,
    NAMED_EVENT: 1,
    NUMBERED_EVENT: 2
  };
  
  /**
   * @return {proto.Event.MsgCase}
   */
  proto.Event.prototype.getMsgCase = function() {
    return /** @type {proto.Event.MsgCase} */(jspb.Message.computeOneofCase(this, proto.Event.oneofGroups_[0]));
  };
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.Event.prototype.toObject = function(opt_includeInstance) {
    return proto.Event.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.Event} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Event.toObject = function(includeInstance, msg) {
    var obj = {
      namedEvent: (f = msg.getNamedEvent()) && proto.Event.Named.toObject(includeInstance, f),
      numberedEvent: (f = msg.getNumberedEvent()) && proto.Event.Numbered.toObject(includeInstance, f)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.Event}
   */
  proto.Event.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.Event;
    return proto.Event.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.Event} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.Event}
   */
  proto.Event.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = new proto.Event.Named;
        reader.readMessage(value,proto.Event.Named.deserializeBinaryFromReader);
        msg.setNamedEvent(value);
        break;
      case 2:
        var value = new proto.Event.Numbered;
        reader.readMessage(value,proto.Event.Numbered.deserializeBinaryFromReader);
        msg.setNumberedEvent(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.Event.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.Event.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.Event} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Event.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getNamedEvent();
    if (f != null) {
      writer.writeMessage(
        1,
        f,
        proto.Event.Named.serializeBinaryToWriter
      );
    }
    f = message.getNumberedEvent();
    if (f != null) {
      writer.writeMessage(
        2,
        f,
        proto.Event.Numbered.serializeBinaryToWriter
      );
    }
  };
  
  
  
  /**
   * List of repeated fields within this message type.
   * @private {!Array<number>}
   * @const
   */
  proto.Event.Named.repeatedFields_ = [3];
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.Event.Named.prototype.toObject = function(opt_includeInstance) {
    return proto.Event.Named.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.Event.Named} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Event.Named.toObject = function(includeInstance, msg) {
    var obj = {
      module: jspb.Message.getFieldWithDefault(msg, 1, 0),
      event: jspb.Message.getFieldWithDefault(msg, 2, ""),
      argsList: jspb.Message.toObjectList(msg.getArgsList(),
      proto.Argument.toObject, includeInstance)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.Event.Named}
   */
  proto.Event.Named.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.Event.Named;
    return proto.Event.Named.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.Event.Named} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.Event.Named}
   */
  proto.Event.Named.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = /** @type {!proto.Module} */ (reader.readEnum());
        msg.setModule(value);
        break;
      case 2:
        var value = /** @type {string} */ (reader.readString());
        msg.setEvent(value);
        break;
      case 3:
        var value = new proto.Argument;
        reader.readMessage(value,proto.Argument.deserializeBinaryFromReader);
        msg.addArgs(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.Event.Named.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.Event.Named.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.Event.Named} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Event.Named.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getModule();
    if (f !== 0.0) {
      writer.writeEnum(
        1,
        f
      );
    }
    f = message.getEvent();
    if (f.length > 0) {
      writer.writeString(
        2,
        f
      );
    }
    f = message.getArgsList();
    if (f.length > 0) {
      writer.writeRepeatedMessage(
        3,
        f,
        proto.Argument.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * optional Module module = 1;
   * @return {!proto.Module}
   */
  proto.Event.Named.prototype.getModule = function() {
    return /** @type {!proto.Module} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
  };
  
  
  /** @param {!proto.Module} value */
  proto.Event.Named.prototype.setModule = function(value) {
    jspb.Message.setProto3EnumField(this, 1, value);
  };
  
  
  /**
   * optional string event = 2;
   * @return {string}
   */
  proto.Event.Named.prototype.getEvent = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
  };
  
  
  /** @param {string} value */
  proto.Event.Named.prototype.setEvent = function(value) {
    jspb.Message.setProto3StringField(this, 2, value);
  };
  
  
  /**
   * repeated Argument args = 3;
   * @return {!Array<!proto.Argument>}
   */
  proto.Event.Named.prototype.getArgsList = function() {
    return /** @type{!Array<!proto.Argument>} */ (
      jspb.Message.getRepeatedWrapperField(this, proto.Argument, 3));
  };
  
  
  /** @param {!Array<!proto.Argument>} value */
  proto.Event.Named.prototype.setArgsList = function(value) {
    jspb.Message.setRepeatedWrapperField(this, 3, value);
  };
  
  
  /**
   * @param {!proto.Argument=} opt_value
   * @param {number=} opt_index
   * @return {!proto.Argument}
   */
  proto.Event.Named.prototype.addArgs = function(opt_value, opt_index) {
    return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.Argument, opt_index);
  };
  
  
  /**
   * Clears the list making it empty but non-null.
   */
  proto.Event.Named.prototype.clearArgsList = function() {
    this.setArgsList([]);
  };
  
  
  
  /**
   * List of repeated fields within this message type.
   * @private {!Array<number>}
   * @const
   */
  proto.Event.Numbered.repeatedFields_ = [3];
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.Event.Numbered.prototype.toObject = function(opt_includeInstance) {
    return proto.Event.Numbered.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.Event.Numbered} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Event.Numbered.toObject = function(includeInstance, msg) {
    var obj = {
      proxyId: jspb.Message.getFieldWithDefault(msg, 1, 0),
      event: jspb.Message.getFieldWithDefault(msg, 2, ""),
      argsList: jspb.Message.toObjectList(msg.getArgsList(),
      proto.Argument.toObject, includeInstance)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.Event.Numbered}
   */
  proto.Event.Numbered.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.Event.Numbered;
    return proto.Event.Numbered.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.Event.Numbered} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.Event.Numbered}
   */
  proto.Event.Numbered.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = /** @type {number} */ (reader.readUint64());
        msg.setProxyId(value);
        break;
      case 2:
        var value = /** @type {string} */ (reader.readString());
        msg.setEvent(value);
        break;
      case 3:
        var value = new proto.Argument;
        reader.readMessage(value,proto.Argument.deserializeBinaryFromReader);
        msg.addArgs(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.Event.Numbered.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.Event.Numbered.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.Event.Numbered} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Event.Numbered.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getProxyId();
    if (f !== 0) {
      writer.writeUint64(
        1,
        f
      );
    }
    f = message.getEvent();
    if (f.length > 0) {
      writer.writeString(
        2,
        f
      );
    }
    f = message.getArgsList();
    if (f.length > 0) {
      writer.writeRepeatedMessage(
        3,
        f,
        proto.Argument.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * optional uint64 proxy_id = 1;
   * @return {number}
   */
  proto.Event.Numbered.prototype.getProxyId = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
  };
  
  
  /** @param {number} value */
  proto.Event.Numbered.prototype.setProxyId = function(value) {
    jspb.Message.setProto3IntField(this, 1, value);
  };
  
  
  /**
   * optional string event = 2;
   * @return {string}
   */
  proto.Event.Numbered.prototype.getEvent = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
  };
  
  
  /** @param {string} value */
  proto.Event.Numbered.prototype.setEvent = function(value) {
    jspb.Message.setProto3StringField(this, 2, value);
  };
  
  
  /**
   * repeated Argument args = 3;
   * @return {!Array<!proto.Argument>}
   */
  proto.Event.Numbered.prototype.getArgsList = function() {
    return /** @type{!Array<!proto.Argument>} */ (
      jspb.Message.getRepeatedWrapperField(this, proto.Argument, 3));
  };
  
  
  /** @param {!Array<!proto.Argument>} value */
  proto.Event.Numbered.prototype.setArgsList = function(value) {
    jspb.Message.setRepeatedWrapperField(this, 3, value);
  };
  
  
  /**
   * @param {!proto.Argument=} opt_value
   * @param {number=} opt_index
   * @return {!proto.Argument}
   */
  proto.Event.Numbered.prototype.addArgs = function(opt_value, opt_index) {
    return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.Argument, opt_index);
  };
  
  
  /**
   * Clears the list making it empty but non-null.
   */
  proto.Event.Numbered.prototype.clearArgsList = function() {
    this.setArgsList([]);
  };
  
  
  /**
   * optional Named named_event = 1;
   * @return {?proto.Event.Named}
   */
  proto.Event.prototype.getNamedEvent = function() {
    return /** @type{?proto.Event.Named} */ (
      jspb.Message.getWrapperField(this, proto.Event.Named, 1));
  };
  
  
  /** @param {?proto.Event.Named|undefined} value */
  proto.Event.prototype.setNamedEvent = function(value) {
    jspb.Message.setOneofWrapperField(this, 1, proto.Event.oneofGroups_[0], value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   */
  proto.Event.prototype.clearNamedEvent = function() {
    this.setNamedEvent(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.Event.prototype.hasNamedEvent = function() {
    return jspb.Message.getField(this, 1) != null;
  };
  
  
  /**
   * optional Numbered numbered_event = 2;
   * @return {?proto.Event.Numbered}
   */
  proto.Event.prototype.getNumberedEvent = function() {
    return /** @type{?proto.Event.Numbered} */ (
      jspb.Message.getWrapperField(this, proto.Event.Numbered, 2));
  };
  
  
  /** @param {?proto.Event.Numbered|undefined} value */
  proto.Event.prototype.setNumberedEvent = function(value) {
    jspb.Message.setOneofWrapperField(this, 2, proto.Event.oneofGroups_[0], value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   */
  proto.Event.prototype.clearNumberedEvent = function() {
    this.setNumberedEvent(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.Event.prototype.hasNumberedEvent = function() {
    return jspb.Message.getField(this, 2) != null;
  };
  
  
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.Ping.prototype.toObject = function(opt_includeInstance) {
    return proto.Ping.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.Ping} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Ping.toObject = function(includeInstance, msg) {
    var obj = {
  
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.Ping}
   */
  proto.Ping.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.Ping;
    return proto.Ping.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.Ping} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.Ping}
   */
  proto.Ping.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.Ping.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.Ping.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.Ping} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Ping.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
  };
  
  
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.Pong.prototype.toObject = function(opt_includeInstance) {
    return proto.Pong.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.Pong} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Pong.toObject = function(includeInstance, msg) {
    var obj = {
  
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.Pong}
   */
  proto.Pong.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.Pong;
    return proto.Pong.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.Pong} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.Pong}
   */
  proto.Pong.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.Pong.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.Pong.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.Pong} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Pong.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
  };
  
  
  /**
   * @enum {number}
   */
  proto.Module = {
    CHILDPROCESS: 0,
    FS: 1,
    NET: 2,
    NODEPTY: 3,
    SPDLOG: 4,
    TRASH: 5
  };
  
  goog.object.extend(exports, proto);
  