func (*Widget) Descriptor() ([]byte, []int) {
	return file_jsonpb_proto_test2_proto_rawDescGZIP(), []int{3}
}
Deprecated: Use Widget.ProtoReflect.Descriptor instead.
package jsonpb_proto
import (
	reflect "reflect"
	sync "sync"
	proto "github.com/golang/protobuf/proto"
	any "github.com/golang/protobuf/ptypes/any"
	duration "github.com/golang/protobuf/ptypes/duration"
	_struct "github.com/golang/protobuf/ptypes/struct"
	timestamp "github.com/golang/protobuf/ptypes/timestamp"
	wrappers "github.com/golang/protobuf/ptypes/wrappers"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoiface "google.golang.org/protobuf/runtime/protoiface"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
)
const (
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
const _ = proto.ProtoPackageIsVersion4
type Widget_Color int32
const (
	Widget_RED   Widget_Color = 0
	Widget_GREEN Widget_Color = 1
	Widget_BLUE  Widget_Color = 2
)
var (
	Widget_Color_name = map[int32]string{
		0: "RED",
		1: "GREEN",
		2: "BLUE",
	}
	Widget_Color_value = map[string]int32{
		"RED":   0,
		"GREEN": 1,
		"BLUE":  2,
	}
)
func (x Widget_Color) Enum() *Widget_Color {
	p := new(Widget_Color)
	*p = x
	return p
}
func (x Widget_Color) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Widget_Color) Descriptor() protoreflect.EnumDescriptor {
	return file_jsonpb_proto_test2_proto_enumTypes[0].Descriptor()
}
func (Widget_Color) Type() protoreflect.EnumType {
	return &file_jsonpb_proto_test2_proto_enumTypes[0]
}
func (x Widget_Color) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}
func (x *Widget_Color) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = Widget_Color(num)
	return nil
}
func (Widget_Color) EnumDescriptor() ([]byte, []int) {
	return file_jsonpb_proto_test2_proto_rawDescGZIP(), []int{3, 0}
}
type Simple struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
	OBool      *bool    `protobuf:"varint,1,opt,name=o_bool,json=oBool" json:"o_bool,omitempty"`
	OInt32     *int32   `protobuf:"varint,2,opt,name=o_int32,json=oInt32" json:"o_int32,omitempty"`
	OInt32Str  *int32   `protobuf:"varint,3,opt,name=o_int32_str,json=oInt32Str" json:"o_int32_str,omitempty"`
	OInt64     *int64   `protobuf:"varint,4,opt,name=o_int64,json=oInt64" json:"o_int64,omitempty"`
	OInt64Str  *int64   `protobuf:"varint,5,opt,name=o_int64_str,json=oInt64Str" json:"o_int64_str,omitempty"`
	OUint32    *uint32  `protobuf:"varint,6,opt,name=o_uint32,json=oUint32" json:"o_uint32,omitempty"`
	OUint32Str *uint32  `protobuf:"varint,7,opt,name=o_uint32_str,json=oUint32Str" json:"o_uint32_str,omitempty"`
	OUint64    *uint64  `protobuf:"varint,8,opt,name=o_uint64,json=oUint64" json:"o_uint64,omitempty"`
	OUint64Str *uint64  `protobuf:"varint,9,opt,name=o_uint64_str,json=oUint64Str" json:"o_uint64_str,omitempty"`
	OSint32    *int32   `protobuf:"zigzag32,10,opt,name=o_sint32,json=oSint32" json:"o_sint32,omitempty"`
	OSint32Str *int32   `protobuf:"zigzag32,11,opt,name=o_sint32_str,json=oSint32Str" json:"o_sint32_str,omitempty"`
	OSint64    *int64   `protobuf:"zigzag64,12,opt,name=o_sint64,json=oSint64" json:"o_sint64,omitempty"`
	OSint64Str *int64   `protobuf:"zigzag64,13,opt,name=o_sint64_str,json=oSint64Str" json:"o_sint64_str,omitempty"`
	OFloat     *float32 `protobuf:"fixed32,14,opt,name=o_float,json=oFloat" json:"o_float,omitempty"`
	OFloatStr  *float32 `protobuf:"fixed32,15,opt,name=o_float_str,json=oFloatStr" json:"o_float_str,omitempty"`
	ODouble    *float64 `protobuf:"fixed64,16,opt,name=o_double,json=oDouble" json:"o_double,omitempty"`
	ODoubleStr *float64 `protobuf:"fixed64,17,opt,name=o_double_str,json=oDoubleStr" json:"o_double_str,omitempty"`
	OString    *string  `protobuf:"bytes,18,opt,name=o_string,json=oString" json:"o_string,omitempty"`
	OBytes     []byte   `protobuf:"bytes,19,opt,name=o_bytes,json=oBytes" json:"o_bytes,omitempty"`
}
func (x *Simple) Reset() {
	*x = Simple{}
	if protoimpl.UnsafeEnabled {
		mi := &file_jsonpb_proto_test2_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}
func (x *Simple) String() string {
	return protoimpl.X.MessageStringOf(x)
}
func (*Simple) ProtoMessage() {}
func (x *Simple) ProtoReflect() protoreflect.Message {
	mi := &file_jsonpb_proto_test2_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}
func (*Simple) Descriptor() ([]byte, []int) {
	return file_jsonpb_proto_test2_proto_rawDescGZIP(), []int{0}
}
func (x *Simple) GetOBool() bool {
	if x != nil && x.OBool != nil {
		return *x.OBool
	}
	return false
}
func (x *Simple) GetOInt32() int32 {
	if x != nil && x.OInt32 != nil {
		return *x.OInt32
	}
	return 0
}
func (x *Simple) GetOInt32Str() int32 {
	if x != nil && x.OInt32Str != nil {
		return *x.OInt32Str
	}
	return 0
}
func (x *Simple) GetOInt64() int64 {
	if x != nil && x.OInt64 != nil {
		return *x.OInt64
	}
	return 0
}
func (x *Simple) GetOInt64Str() int64 {
	if x != nil && x.OInt64Str != nil {
		return *x.OInt64Str
	}
	return 0
}
func (x *Simple) GetOUint32() uint32 {
	if x != nil && x.OUint32 != nil {
		return *x.OUint32
	}
	return 0
}
func (x *Simple) GetOUint32Str() uint32 {
	if x != nil && x.OUint32Str != nil {
		return *x.OUint32Str
	}
	return 0
}
func (x *Simple) GetOUint64() uint64 {
	if x != nil && x.OUint64 != nil {
		return *x.OUint64
	}
	return 0
}
func (x *Simple) GetOUint64Str() uint64 {
	if x != nil && x.OUint64Str != nil {
		return *x.OUint64Str
	}
	return 0
}
func (x *Simple) GetOSint32() int32 {
	if x != nil && x.OSint32 != nil {
		return *x.OSint32
	}
	return 0
}
func (x *Simple) GetOSint32Str() int32 {
	if x != nil && x.OSint32Str != nil {
		return *x.OSint32Str
	}
	return 0
}
func (x *Simple) GetOSint64() int64 {
	if x != nil && x.OSint64 != nil {
		return *x.OSint64
	}
	return 0
}
func (x *Simple) GetOSint64Str() int64 {
	if x != nil && x.OSint64Str != nil {
		return *x.OSint64Str
	}
	return 0
}
func (x *Simple) GetOFloat() float32 {
	if x != nil && x.OFloat != nil {
		return *x.OFloat
	}
	return 0
}
func (x *Simple) GetOFloatStr() float32 {
	if x != nil && x.OFloatStr != nil {
		return *x.OFloatStr
	}
	return 0
}
func (x *Simple) GetODouble() float64 {
	if x != nil && x.ODouble != nil {
		return *x.ODouble
	}
	return 0
}
func (x *Simple) GetODoubleStr() float64 {
	if x != nil && x.ODoubleStr != nil {
		return *x.ODoubleStr
	}
	return 0
}
func (x *Simple) GetOString() string {
	if x != nil && x.OString != nil {
		return *x.OString
	}
	return ""
}
func (x *Simple) GetOBytes() []byte {
	if x != nil {
		return x.OBytes
	}
	return nil
}
type NonFinites struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
	FNan  *float32 `protobuf:"fixed32,1,opt,name=f_nan,json=fNan" json:"f_nan,omitempty"`
	FPinf *float32 `protobuf:"fixed32,2,opt,name=f_pinf,json=fPinf" json:"f_pinf,omitempty"`
	FNinf *float32 `protobuf:"fixed32,3,opt,name=f_ninf,json=fNinf" json:"f_ninf,omitempty"`
	DNan  *float64 `protobuf:"fixed64,4,opt,name=d_nan,json=dNan" json:"d_nan,omitempty"`
	DPinf *float64 `protobuf:"fixed64,5,opt,name=d_pinf,json=dPinf" json:"d_pinf,omitempty"`
	DNinf *float64 `protobuf:"fixed64,6,opt,name=d_ninf,json=dNinf" json:"d_ninf,omitempty"`
}
func (x *NonFinites) Reset() {
	*x = NonFinites{}
	if protoimpl.UnsafeEnabled {
		mi := &file_jsonpb_proto_test2_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}
func (x *NonFinites) String() string {
	return protoimpl.X.MessageStringOf(x)
}
func (*NonFinites) ProtoMessage() {}
func (x *NonFinites) ProtoReflect() protoreflect.Message {
	mi := &file_jsonpb_proto_test2_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}
func (*NonFinites) Descriptor() ([]byte, []int) {
	return file_jsonpb_proto_test2_proto_rawDescGZIP(), []int{1}
}
func (x *NonFinites) GetFNan() float32 {
	if x != nil && x.FNan != nil {
		return *x.FNan
	}
	return 0
}
func (x *NonFinites) GetFPinf() float32 {
	if x != nil && x.FPinf != nil {
		return *x.FPinf
	}
	return 0
}
func (x *NonFinites) GetFNinf() float32 {
	if x != nil && x.FNinf != nil {
		return *x.FNinf
	}
	return 0
}
func (x *NonFinites) GetDNan() float64 {
	if x != nil && x.DNan != nil {
		return *x.DNan
	}
	return 0
}
func (x *NonFinites) GetDPinf() float64 {
	if x != nil && x.DPinf != nil {
		return *x.DPinf
	}
	return 0
}
func (x *NonFinites) GetDNinf() float64 {
	if x != nil && x.DNinf != nil {
		return *x.DNinf
	}
	return 0
}
type Repeats struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
	RBool   []bool    `protobuf:"varint,1,rep,name=r_bool,json=rBool" json:"r_bool,omitempty"`
	RInt32  []int32   `protobuf:"varint,2,rep,name=r_int32,json=rInt32" json:"r_int32,omitempty"`
	RInt64  []int64   `protobuf:"varint,3,rep,name=r_int64,json=rInt64" json:"r_int64,omitempty"`
	RUint32 []uint32  `protobuf:"varint,4,rep,name=r_uint32,json=rUint32" json:"r_uint32,omitempty"`
	RUint64 []uint64  `protobuf:"varint,5,rep,name=r_uint64,json=rUint64" json:"r_uint64,omitempty"`
	RSint32 []int32   `protobuf:"zigzag32,6,rep,name=r_sint32,json=rSint32" json:"r_sint32,omitempty"`
	RSint64 []int64   `protobuf:"zigzag64,7,rep,name=r_sint64,json=rSint64" json:"r_sint64,omitempty"`
	RFloat  []float32 `protobuf:"fixed32,8,rep,name=r_float,json=rFloat" json:"r_float,omitempty"`
	RDouble []float64 `protobuf:"fixed64,9,rep,name=r_double,json=rDouble" json:"r_double,omitempty"`
	RString []string  `protobuf:"bytes,10,rep,name=r_string,json=rString" json:"r_string,omitempty"`
	RBytes  [][]byte  `protobuf:"bytes,11,rep,name=r_bytes,json=rBytes" json:"r_bytes,omitempty"`
}
func (x *Repeats) Reset() {
	*x = Repeats{}
	if protoimpl.UnsafeEnabled {
		mi := &file_jsonpb_proto_test2_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}
func (x *Repeats) String() string {
	return protoimpl.X.MessageStringOf(x)
}
func (*Repeats) ProtoMessage() {}
func (x *Repeats) ProtoReflect() protoreflect.Message {
	mi := &file_jsonpb_proto_test2_proto_msgTypes[2]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}
func (*Repeats) Descriptor() ([]byte, []int) {
	return file_jsonpb_proto_test2_proto_rawDescGZIP(), []int{2}
}
func (x *Repeats) GetRBool() []bool {
	if x != nil {
		return x.RBool
	}
	return nil
}
func (x *Repeats) GetRInt32() []int32 {
	if x != nil {
		return x.RInt32
	}
	return nil
}
func (x *Repeats) GetRInt64() []int64 {
	if x != nil {
		return x.RInt64
	}
	return nil
}
func (x *Repeats) GetRUint32() []uint32 {
	if x != nil {
		return x.RUint32
	}
	return nil
}
func (x *Repeats) GetRUint64() []uint64 {
	if x != nil {
		return x.RUint64
	}
	return nil
}
func (x *Repeats) GetRSint32() []int32 {
	if x != nil {
		return x.RSint32
	}
	return nil
}
func (x *Repeats) GetRSint64() []int64 {
	if x != nil {
		return x.RSint64
	}
	return nil
}
func (x *Repeats) GetRFloat() []float32 {
	if x != nil {
		return x.RFloat
	}
	return nil
}
func (x *Repeats) GetRDouble() []float64 {
	if x != nil {
		return x.RDouble
	}
	return nil
}
func (x *Repeats) GetRString() []string {
	if x != nil {
		return x.RString
	}
	return nil
}
func (x *Repeats) GetRBytes() [][]byte {
	if x != nil {
		return x.RBytes
	}
	return nil
}
type Widget struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
	Color    *Widget_Color  `protobuf:"varint,1,opt,name=color,enum=jsonpb_test.Widget_Color" json:"color,omitempty"`
	RColor   []Widget_Color `protobuf:"varint,2,rep,name=r_color,json=rColor,enum=jsonpb_test.Widget_Color" json:"r_color,omitempty"`
	Simple   *Simple        `protobuf:"bytes,10,opt,name=simple" json:"simple,omitempty"`
	RSimple  []*Simple      `protobuf:"bytes,11,rep,name=r_simple,json=rSimple" json:"r_simple,omitempty"`
	Repeats  *Repeats       `protobuf:"bytes,20,opt,name=repeats" json:"repeats,omitempty"`
	RRepeats []*Repeats     `protobuf:"bytes,21,rep,name=r_repeats,json=rRepeats" json:"r_repeats,omitempty"`
}
func (x *Widget) Reset() {
	*x = Widget{}
	if protoimpl.UnsafeEnabled {
		mi := &file_jsonpb_proto_test2_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}
func (x *Widget) String() string {
	return protoimpl.X.MessageStringOf(x)
}
func (*Widget) ProtoMessage() {}
func (x *Widget) ProtoReflect() protoreflect.Message {
	mi := &file_jsonpb_proto_test2_proto_msgTypes[3]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}