/**
 * @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.DateValue', 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.Argument.DateValue = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.Argument.DateValue, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.Argument.DateValue.displayName = 'proto.Argument.DateValue';
}
/**
 * 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,12]];

/**
 * @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,
  DATE: 12
};

/**
 * @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),
    date: (f = msg.getDate()) && proto.Argument.DateValue.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.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;
    case 12:
      var value = new proto.Argument.DateValue;
      reader.readMessage(value,proto.Argument.DateValue.deserializeBinaryFromReader);
      msg.setDate(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
    );
  }
  f = message.getDate();
  if (f != null) {
    writer.writeMessage(
      12,
      f,
      proto.Argument.DateValue.serializeBinaryToWriter
    );
  }
};





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;
};





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.DateValue.prototype.toObject = function(opt_includeInstance) {
  return proto.Argument.DateValue.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.DateValue} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.Argument.DateValue.toObject = function(includeInstance, msg) {
  var obj = {
    date: jspb.Message.getFieldWithDefault(msg, 1, "")
  };

  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.DateValue}
 */
proto.Argument.DateValue.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.Argument.DateValue;
  return proto.Argument.DateValue.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.Argument.DateValue} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.Argument.DateValue}
 */
proto.Argument.DateValue.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.setDate(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.Argument.DateValue.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.Argument.DateValue.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.DateValue} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.Argument.DateValue.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getDate();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
};


/**
 * optional string date = 1;
 * @return {string}
 */
proto.Argument.DateValue.prototype.getDate = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/** @param {string} value */
proto.Argument.DateValue.prototype.setDate = function(value) {
  jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * 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;
};


/**
 * optional DateValue date = 12;
 * @return {?proto.Argument.DateValue}
 */
proto.Argument.prototype.getDate = function() {
  return /** @type{?proto.Argument.DateValue} */ (
    jspb.Message.getWrapperField(this, proto.Argument.DateValue, 12));
};


/** @param {?proto.Argument.DateValue|undefined} value */
proto.Argument.prototype.setDate = function(value) {
  jspb.Message.setOneofWrapperField(this, 12, proto.Argument.oneofGroups_[0], value);
};


/**
 * Clears the message field making it undefined.
 */
proto.Argument.prototype.clearDate = function() {
  this.setDate(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.Argument.prototype.hasDate = function() {
  return jspb.Message.getField(this, 12) != 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);
