github.com/cloudwan/edgelq-sdk@v1.15.4/monitoring/resources/v4/common/common.pb.fieldpath.go (about)

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/monitoring/proto/v4/common.proto
     3  // DO NOT EDIT!!!
     4  
     5  package common
     6  
     7  import (
     8  	"encoding/json"
     9  	"fmt"
    10  	"reflect"
    11  	"strings"
    12  	"time"
    13  
    14  	"google.golang.org/grpc/codes"
    15  	"google.golang.org/grpc/status"
    16  	"google.golang.org/protobuf/encoding/protojson"
    17  	"google.golang.org/protobuf/proto"
    18  	"google.golang.org/protobuf/reflect/protoregistry"
    19  
    20  	gotenobject "github.com/cloudwan/goten-sdk/runtime/object"
    21  	"github.com/cloudwan/goten-sdk/runtime/strcase"
    22  )
    23  
    24  // proto imports
    25  import (
    26  	durationpb "google.golang.org/protobuf/types/known/durationpb"
    27  	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
    28  )
    29  
    30  // ensure the imports are used
    31  var (
    32  	_ = new(json.Marshaler)
    33  	_ = new(fmt.Stringer)
    34  	_ = reflect.DeepEqual
    35  	_ = strings.Builder{}
    36  	_ = time.Second
    37  
    38  	_ = strcase.ToLowerCamel
    39  	_ = codes.NotFound
    40  	_ = status.Status{}
    41  	_ = protojson.UnmarshalOptions{}
    42  	_ = new(proto.Message)
    43  	_ = protoregistry.GlobalTypes
    44  
    45  	_ = new(gotenobject.FieldPath)
    46  )
    47  
    48  // make sure we're using proto imports
    49  var (
    50  	_ = &durationpb.Duration{}
    51  	_ = &timestamppb.Timestamp{}
    52  )
    53  
    54  // FieldPath provides implementation to handle
    55  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
    56  type LabelDescriptor_FieldPath interface {
    57  	gotenobject.FieldPath
    58  	Selector() LabelDescriptor_FieldPathSelector
    59  	Get(source *LabelDescriptor) []interface{}
    60  	GetSingle(source *LabelDescriptor) (interface{}, bool)
    61  	ClearValue(item *LabelDescriptor)
    62  
    63  	// Those methods build corresponding LabelDescriptor_FieldPathValue
    64  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
    65  	WithIValue(value interface{}) LabelDescriptor_FieldPathValue
    66  	WithIArrayOfValues(values interface{}) LabelDescriptor_FieldPathArrayOfValues
    67  	WithIArrayItemValue(value interface{}) LabelDescriptor_FieldPathArrayItemValue
    68  }
    69  
    70  type LabelDescriptor_FieldPathSelector int32
    71  
    72  const (
    73  	LabelDescriptor_FieldPathSelectorKey          LabelDescriptor_FieldPathSelector = 0
    74  	LabelDescriptor_FieldPathSelectorValueType    LabelDescriptor_FieldPathSelector = 1
    75  	LabelDescriptor_FieldPathSelectorDescription  LabelDescriptor_FieldPathSelector = 2
    76  	LabelDescriptor_FieldPathSelectorDefaultValue LabelDescriptor_FieldPathSelector = 3
    77  	LabelDescriptor_FieldPathSelectorDisabled     LabelDescriptor_FieldPathSelector = 4
    78  )
    79  
    80  func (s LabelDescriptor_FieldPathSelector) String() string {
    81  	switch s {
    82  	case LabelDescriptor_FieldPathSelectorKey:
    83  		return "key"
    84  	case LabelDescriptor_FieldPathSelectorValueType:
    85  		return "value_type"
    86  	case LabelDescriptor_FieldPathSelectorDescription:
    87  		return "description"
    88  	case LabelDescriptor_FieldPathSelectorDefaultValue:
    89  		return "default_value"
    90  	case LabelDescriptor_FieldPathSelectorDisabled:
    91  		return "disabled"
    92  	default:
    93  		panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", s))
    94  	}
    95  }
    96  
    97  func BuildLabelDescriptor_FieldPath(fp gotenobject.RawFieldPath) (LabelDescriptor_FieldPath, error) {
    98  	if len(fp) == 0 {
    99  		return nil, status.Error(codes.InvalidArgument, "empty field path for object LabelDescriptor")
   100  	}
   101  	if len(fp) == 1 {
   102  		switch fp[0] {
   103  		case "key":
   104  			return &LabelDescriptor_FieldTerminalPath{selector: LabelDescriptor_FieldPathSelectorKey}, nil
   105  		case "value_type", "valueType", "value-type":
   106  			return &LabelDescriptor_FieldTerminalPath{selector: LabelDescriptor_FieldPathSelectorValueType}, nil
   107  		case "description":
   108  			return &LabelDescriptor_FieldTerminalPath{selector: LabelDescriptor_FieldPathSelectorDescription}, nil
   109  		case "default_value", "defaultValue", "default-value":
   110  			return &LabelDescriptor_FieldTerminalPath{selector: LabelDescriptor_FieldPathSelectorDefaultValue}, nil
   111  		case "disabled":
   112  			return &LabelDescriptor_FieldTerminalPath{selector: LabelDescriptor_FieldPathSelectorDisabled}, nil
   113  		}
   114  	}
   115  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object LabelDescriptor", fp)
   116  }
   117  
   118  func ParseLabelDescriptor_FieldPath(rawField string) (LabelDescriptor_FieldPath, error) {
   119  	fp, err := gotenobject.ParseRawFieldPath(rawField)
   120  	if err != nil {
   121  		return nil, err
   122  	}
   123  	return BuildLabelDescriptor_FieldPath(fp)
   124  }
   125  
   126  func MustParseLabelDescriptor_FieldPath(rawField string) LabelDescriptor_FieldPath {
   127  	fp, err := ParseLabelDescriptor_FieldPath(rawField)
   128  	if err != nil {
   129  		panic(err)
   130  	}
   131  	return fp
   132  }
   133  
   134  type LabelDescriptor_FieldTerminalPath struct {
   135  	selector LabelDescriptor_FieldPathSelector
   136  }
   137  
   138  var _ LabelDescriptor_FieldPath = (*LabelDescriptor_FieldTerminalPath)(nil)
   139  
   140  func (fp *LabelDescriptor_FieldTerminalPath) Selector() LabelDescriptor_FieldPathSelector {
   141  	return fp.selector
   142  }
   143  
   144  // String returns path representation in proto convention
   145  func (fp *LabelDescriptor_FieldTerminalPath) String() string {
   146  	return fp.selector.String()
   147  }
   148  
   149  // JSONString returns path representation is JSON convention
   150  func (fp *LabelDescriptor_FieldTerminalPath) JSONString() string {
   151  	return strcase.ToLowerCamel(fp.String())
   152  }
   153  
   154  // Get returns all values pointed by specific field from source LabelDescriptor
   155  func (fp *LabelDescriptor_FieldTerminalPath) Get(source *LabelDescriptor) (values []interface{}) {
   156  	if source != nil {
   157  		switch fp.selector {
   158  		case LabelDescriptor_FieldPathSelectorKey:
   159  			values = append(values, source.Key)
   160  		case LabelDescriptor_FieldPathSelectorValueType:
   161  			values = append(values, source.ValueType)
   162  		case LabelDescriptor_FieldPathSelectorDescription:
   163  			values = append(values, source.Description)
   164  		case LabelDescriptor_FieldPathSelectorDefaultValue:
   165  			values = append(values, source.DefaultValue)
   166  		case LabelDescriptor_FieldPathSelectorDisabled:
   167  			values = append(values, source.Disabled)
   168  		default:
   169  			panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fp.selector))
   170  		}
   171  	}
   172  	return
   173  }
   174  
   175  func (fp *LabelDescriptor_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
   176  	return fp.Get(source.(*LabelDescriptor))
   177  }
   178  
   179  // GetSingle returns value pointed by specific field of from source LabelDescriptor
   180  func (fp *LabelDescriptor_FieldTerminalPath) GetSingle(source *LabelDescriptor) (interface{}, bool) {
   181  	switch fp.selector {
   182  	case LabelDescriptor_FieldPathSelectorKey:
   183  		return source.GetKey(), source != nil
   184  	case LabelDescriptor_FieldPathSelectorValueType:
   185  		return source.GetValueType(), source != nil
   186  	case LabelDescriptor_FieldPathSelectorDescription:
   187  		return source.GetDescription(), source != nil
   188  	case LabelDescriptor_FieldPathSelectorDefaultValue:
   189  		return source.GetDefaultValue(), source != nil
   190  	case LabelDescriptor_FieldPathSelectorDisabled:
   191  		return source.GetDisabled(), source != nil
   192  	default:
   193  		panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fp.selector))
   194  	}
   195  }
   196  
   197  func (fp *LabelDescriptor_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
   198  	return fp.GetSingle(source.(*LabelDescriptor))
   199  }
   200  
   201  // GetDefault returns a default value of the field type
   202  func (fp *LabelDescriptor_FieldTerminalPath) GetDefault() interface{} {
   203  	switch fp.selector {
   204  	case LabelDescriptor_FieldPathSelectorKey:
   205  		return ""
   206  	case LabelDescriptor_FieldPathSelectorValueType:
   207  		return LabelDescriptor_STRING
   208  	case LabelDescriptor_FieldPathSelectorDescription:
   209  		return ""
   210  	case LabelDescriptor_FieldPathSelectorDefaultValue:
   211  		return ""
   212  	case LabelDescriptor_FieldPathSelectorDisabled:
   213  		return false
   214  	default:
   215  		panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fp.selector))
   216  	}
   217  }
   218  
   219  func (fp *LabelDescriptor_FieldTerminalPath) ClearValue(item *LabelDescriptor) {
   220  	if item != nil {
   221  		switch fp.selector {
   222  		case LabelDescriptor_FieldPathSelectorKey:
   223  			item.Key = ""
   224  		case LabelDescriptor_FieldPathSelectorValueType:
   225  			item.ValueType = LabelDescriptor_STRING
   226  		case LabelDescriptor_FieldPathSelectorDescription:
   227  			item.Description = ""
   228  		case LabelDescriptor_FieldPathSelectorDefaultValue:
   229  			item.DefaultValue = ""
   230  		case LabelDescriptor_FieldPathSelectorDisabled:
   231  			item.Disabled = false
   232  		default:
   233  			panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fp.selector))
   234  		}
   235  	}
   236  }
   237  
   238  func (fp *LabelDescriptor_FieldTerminalPath) ClearValueRaw(item proto.Message) {
   239  	fp.ClearValue(item.(*LabelDescriptor))
   240  }
   241  
   242  // IsLeaf - whether field path is holds simple value
   243  func (fp *LabelDescriptor_FieldTerminalPath) IsLeaf() bool {
   244  	return fp.selector == LabelDescriptor_FieldPathSelectorKey ||
   245  		fp.selector == LabelDescriptor_FieldPathSelectorValueType ||
   246  		fp.selector == LabelDescriptor_FieldPathSelectorDescription ||
   247  		fp.selector == LabelDescriptor_FieldPathSelectorDefaultValue ||
   248  		fp.selector == LabelDescriptor_FieldPathSelectorDisabled
   249  }
   250  
   251  func (fp *LabelDescriptor_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
   252  	return []gotenobject.FieldPath{fp}
   253  }
   254  
   255  func (fp *LabelDescriptor_FieldTerminalPath) WithIValue(value interface{}) LabelDescriptor_FieldPathValue {
   256  	switch fp.selector {
   257  	case LabelDescriptor_FieldPathSelectorKey:
   258  		return &LabelDescriptor_FieldTerminalPathValue{LabelDescriptor_FieldTerminalPath: *fp, value: value.(string)}
   259  	case LabelDescriptor_FieldPathSelectorValueType:
   260  		return &LabelDescriptor_FieldTerminalPathValue{LabelDescriptor_FieldTerminalPath: *fp, value: value.(LabelDescriptor_ValueType)}
   261  	case LabelDescriptor_FieldPathSelectorDescription:
   262  		return &LabelDescriptor_FieldTerminalPathValue{LabelDescriptor_FieldTerminalPath: *fp, value: value.(string)}
   263  	case LabelDescriptor_FieldPathSelectorDefaultValue:
   264  		return &LabelDescriptor_FieldTerminalPathValue{LabelDescriptor_FieldTerminalPath: *fp, value: value.(string)}
   265  	case LabelDescriptor_FieldPathSelectorDisabled:
   266  		return &LabelDescriptor_FieldTerminalPathValue{LabelDescriptor_FieldTerminalPath: *fp, value: value.(bool)}
   267  	default:
   268  		panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fp.selector))
   269  	}
   270  }
   271  
   272  func (fp *LabelDescriptor_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
   273  	return fp.WithIValue(value)
   274  }
   275  
   276  func (fp *LabelDescriptor_FieldTerminalPath) WithIArrayOfValues(values interface{}) LabelDescriptor_FieldPathArrayOfValues {
   277  	fpaov := &LabelDescriptor_FieldTerminalPathArrayOfValues{LabelDescriptor_FieldTerminalPath: *fp}
   278  	switch fp.selector {
   279  	case LabelDescriptor_FieldPathSelectorKey:
   280  		return &LabelDescriptor_FieldTerminalPathArrayOfValues{LabelDescriptor_FieldTerminalPath: *fp, values: values.([]string)}
   281  	case LabelDescriptor_FieldPathSelectorValueType:
   282  		return &LabelDescriptor_FieldTerminalPathArrayOfValues{LabelDescriptor_FieldTerminalPath: *fp, values: values.([]LabelDescriptor_ValueType)}
   283  	case LabelDescriptor_FieldPathSelectorDescription:
   284  		return &LabelDescriptor_FieldTerminalPathArrayOfValues{LabelDescriptor_FieldTerminalPath: *fp, values: values.([]string)}
   285  	case LabelDescriptor_FieldPathSelectorDefaultValue:
   286  		return &LabelDescriptor_FieldTerminalPathArrayOfValues{LabelDescriptor_FieldTerminalPath: *fp, values: values.([]string)}
   287  	case LabelDescriptor_FieldPathSelectorDisabled:
   288  		return &LabelDescriptor_FieldTerminalPathArrayOfValues{LabelDescriptor_FieldTerminalPath: *fp, values: values.([]bool)}
   289  	default:
   290  		panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fp.selector))
   291  	}
   292  	return fpaov
   293  }
   294  
   295  func (fp *LabelDescriptor_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
   296  	return fp.WithIArrayOfValues(values)
   297  }
   298  
   299  func (fp *LabelDescriptor_FieldTerminalPath) WithIArrayItemValue(value interface{}) LabelDescriptor_FieldPathArrayItemValue {
   300  	switch fp.selector {
   301  	default:
   302  		panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fp.selector))
   303  	}
   304  }
   305  
   306  func (fp *LabelDescriptor_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   307  	return fp.WithIArrayItemValue(value)
   308  }
   309  
   310  // LabelDescriptor_FieldPathValue allows storing values for LabelDescriptor fields according to their type
   311  type LabelDescriptor_FieldPathValue interface {
   312  	LabelDescriptor_FieldPath
   313  	gotenobject.FieldPathValue
   314  	SetTo(target **LabelDescriptor)
   315  	CompareWith(*LabelDescriptor) (cmp int, comparable bool)
   316  }
   317  
   318  func ParseLabelDescriptor_FieldPathValue(pathStr, valueStr string) (LabelDescriptor_FieldPathValue, error) {
   319  	fp, err := ParseLabelDescriptor_FieldPath(pathStr)
   320  	if err != nil {
   321  		return nil, err
   322  	}
   323  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
   324  	if err != nil {
   325  		return nil, status.Errorf(codes.InvalidArgument, "error parsing LabelDescriptor field path value from %s: %v", valueStr, err)
   326  	}
   327  	return fpv.(LabelDescriptor_FieldPathValue), nil
   328  }
   329  
   330  func MustParseLabelDescriptor_FieldPathValue(pathStr, valueStr string) LabelDescriptor_FieldPathValue {
   331  	fpv, err := ParseLabelDescriptor_FieldPathValue(pathStr, valueStr)
   332  	if err != nil {
   333  		panic(err)
   334  	}
   335  	return fpv
   336  }
   337  
   338  type LabelDescriptor_FieldTerminalPathValue struct {
   339  	LabelDescriptor_FieldTerminalPath
   340  	value interface{}
   341  }
   342  
   343  var _ LabelDescriptor_FieldPathValue = (*LabelDescriptor_FieldTerminalPathValue)(nil)
   344  
   345  // GetRawValue returns raw value stored under selected path for 'LabelDescriptor' as interface{}
   346  func (fpv *LabelDescriptor_FieldTerminalPathValue) GetRawValue() interface{} {
   347  	return fpv.value
   348  }
   349  func (fpv *LabelDescriptor_FieldTerminalPathValue) AsKeyValue() (string, bool) {
   350  	res, ok := fpv.value.(string)
   351  	return res, ok
   352  }
   353  func (fpv *LabelDescriptor_FieldTerminalPathValue) AsValueTypeValue() (LabelDescriptor_ValueType, bool) {
   354  	res, ok := fpv.value.(LabelDescriptor_ValueType)
   355  	return res, ok
   356  }
   357  func (fpv *LabelDescriptor_FieldTerminalPathValue) AsDescriptionValue() (string, bool) {
   358  	res, ok := fpv.value.(string)
   359  	return res, ok
   360  }
   361  func (fpv *LabelDescriptor_FieldTerminalPathValue) AsDefaultValueValue() (string, bool) {
   362  	res, ok := fpv.value.(string)
   363  	return res, ok
   364  }
   365  func (fpv *LabelDescriptor_FieldTerminalPathValue) AsDisabledValue() (bool, bool) {
   366  	res, ok := fpv.value.(bool)
   367  	return res, ok
   368  }
   369  
   370  // SetTo stores value for selected field for object LabelDescriptor
   371  func (fpv *LabelDescriptor_FieldTerminalPathValue) SetTo(target **LabelDescriptor) {
   372  	if *target == nil {
   373  		*target = new(LabelDescriptor)
   374  	}
   375  	switch fpv.selector {
   376  	case LabelDescriptor_FieldPathSelectorKey:
   377  		(*target).Key = fpv.value.(string)
   378  	case LabelDescriptor_FieldPathSelectorValueType:
   379  		(*target).ValueType = fpv.value.(LabelDescriptor_ValueType)
   380  	case LabelDescriptor_FieldPathSelectorDescription:
   381  		(*target).Description = fpv.value.(string)
   382  	case LabelDescriptor_FieldPathSelectorDefaultValue:
   383  		(*target).DefaultValue = fpv.value.(string)
   384  	case LabelDescriptor_FieldPathSelectorDisabled:
   385  		(*target).Disabled = fpv.value.(bool)
   386  	default:
   387  		panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fpv.selector))
   388  	}
   389  }
   390  
   391  func (fpv *LabelDescriptor_FieldTerminalPathValue) SetToRaw(target proto.Message) {
   392  	typedObject := target.(*LabelDescriptor)
   393  	fpv.SetTo(&typedObject)
   394  }
   395  
   396  // CompareWith compares value in the 'LabelDescriptor_FieldTerminalPathValue' with the value under path in 'LabelDescriptor'.
   397  func (fpv *LabelDescriptor_FieldTerminalPathValue) CompareWith(source *LabelDescriptor) (int, bool) {
   398  	switch fpv.selector {
   399  	case LabelDescriptor_FieldPathSelectorKey:
   400  		leftValue := fpv.value.(string)
   401  		rightValue := source.GetKey()
   402  		if (leftValue) == (rightValue) {
   403  			return 0, true
   404  		} else if (leftValue) < (rightValue) {
   405  			return -1, true
   406  		} else {
   407  			return 1, true
   408  		}
   409  	case LabelDescriptor_FieldPathSelectorValueType:
   410  		leftValue := fpv.value.(LabelDescriptor_ValueType)
   411  		rightValue := source.GetValueType()
   412  		if (leftValue) == (rightValue) {
   413  			return 0, true
   414  		} else if (leftValue) < (rightValue) {
   415  			return -1, true
   416  		} else {
   417  			return 1, true
   418  		}
   419  	case LabelDescriptor_FieldPathSelectorDescription:
   420  		leftValue := fpv.value.(string)
   421  		rightValue := source.GetDescription()
   422  		if (leftValue) == (rightValue) {
   423  			return 0, true
   424  		} else if (leftValue) < (rightValue) {
   425  			return -1, true
   426  		} else {
   427  			return 1, true
   428  		}
   429  	case LabelDescriptor_FieldPathSelectorDefaultValue:
   430  		leftValue := fpv.value.(string)
   431  		rightValue := source.GetDefaultValue()
   432  		if (leftValue) == (rightValue) {
   433  			return 0, true
   434  		} else if (leftValue) < (rightValue) {
   435  			return -1, true
   436  		} else {
   437  			return 1, true
   438  		}
   439  	case LabelDescriptor_FieldPathSelectorDisabled:
   440  		leftValue := fpv.value.(bool)
   441  		rightValue := source.GetDisabled()
   442  		if (leftValue) == (rightValue) {
   443  			return 0, true
   444  		} else if !(leftValue) && (rightValue) {
   445  			return -1, true
   446  		} else {
   447  			return 1, true
   448  		}
   449  	default:
   450  		panic(fmt.Sprintf("Invalid selector for LabelDescriptor: %d", fpv.selector))
   451  	}
   452  }
   453  
   454  func (fpv *LabelDescriptor_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
   455  	return fpv.CompareWith(source.(*LabelDescriptor))
   456  }
   457  
   458  // LabelDescriptor_FieldPathArrayItemValue allows storing single item in Path-specific values for LabelDescriptor according to their type
   459  // Present only for array (repeated) types.
   460  type LabelDescriptor_FieldPathArrayItemValue interface {
   461  	gotenobject.FieldPathArrayItemValue
   462  	LabelDescriptor_FieldPath
   463  	ContainsValue(*LabelDescriptor) bool
   464  }
   465  
   466  // ParseLabelDescriptor_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
   467  func ParseLabelDescriptor_FieldPathArrayItemValue(pathStr, valueStr string) (LabelDescriptor_FieldPathArrayItemValue, error) {
   468  	fp, err := ParseLabelDescriptor_FieldPath(pathStr)
   469  	if err != nil {
   470  		return nil, err
   471  	}
   472  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
   473  	if err != nil {
   474  		return nil, status.Errorf(codes.InvalidArgument, "error parsing LabelDescriptor field path array item value from %s: %v", valueStr, err)
   475  	}
   476  	return fpaiv.(LabelDescriptor_FieldPathArrayItemValue), nil
   477  }
   478  
   479  func MustParseLabelDescriptor_FieldPathArrayItemValue(pathStr, valueStr string) LabelDescriptor_FieldPathArrayItemValue {
   480  	fpaiv, err := ParseLabelDescriptor_FieldPathArrayItemValue(pathStr, valueStr)
   481  	if err != nil {
   482  		panic(err)
   483  	}
   484  	return fpaiv
   485  }
   486  
   487  type LabelDescriptor_FieldTerminalPathArrayItemValue struct {
   488  	LabelDescriptor_FieldTerminalPath
   489  	value interface{}
   490  }
   491  
   492  var _ LabelDescriptor_FieldPathArrayItemValue = (*LabelDescriptor_FieldTerminalPathArrayItemValue)(nil)
   493  
   494  // GetRawValue returns stored element value for array in object LabelDescriptor as interface{}
   495  func (fpaiv *LabelDescriptor_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
   496  	return fpaiv.value
   497  }
   498  
   499  func (fpaiv *LabelDescriptor_FieldTerminalPathArrayItemValue) GetSingle(source *LabelDescriptor) (interface{}, bool) {
   500  	return nil, false
   501  }
   502  
   503  func (fpaiv *LabelDescriptor_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
   504  	return fpaiv.GetSingle(source.(*LabelDescriptor))
   505  }
   506  
   507  // Contains returns a boolean indicating if value that is being held is present in given 'LabelDescriptor'
   508  func (fpaiv *LabelDescriptor_FieldTerminalPathArrayItemValue) ContainsValue(source *LabelDescriptor) bool {
   509  	slice := fpaiv.LabelDescriptor_FieldTerminalPath.Get(source)
   510  	for _, v := range slice {
   511  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
   512  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
   513  				return true
   514  			}
   515  		} else if reflect.DeepEqual(v, fpaiv.value) {
   516  			return true
   517  		}
   518  	}
   519  	return false
   520  }
   521  
   522  // LabelDescriptor_FieldPathArrayOfValues allows storing slice of values for LabelDescriptor fields according to their type
   523  type LabelDescriptor_FieldPathArrayOfValues interface {
   524  	gotenobject.FieldPathArrayOfValues
   525  	LabelDescriptor_FieldPath
   526  }
   527  
   528  func ParseLabelDescriptor_FieldPathArrayOfValues(pathStr, valuesStr string) (LabelDescriptor_FieldPathArrayOfValues, error) {
   529  	fp, err := ParseLabelDescriptor_FieldPath(pathStr)
   530  	if err != nil {
   531  		return nil, err
   532  	}
   533  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
   534  	if err != nil {
   535  		return nil, status.Errorf(codes.InvalidArgument, "error parsing LabelDescriptor field path array of values from %s: %v", valuesStr, err)
   536  	}
   537  	return fpaov.(LabelDescriptor_FieldPathArrayOfValues), nil
   538  }
   539  
   540  func MustParseLabelDescriptor_FieldPathArrayOfValues(pathStr, valuesStr string) LabelDescriptor_FieldPathArrayOfValues {
   541  	fpaov, err := ParseLabelDescriptor_FieldPathArrayOfValues(pathStr, valuesStr)
   542  	if err != nil {
   543  		panic(err)
   544  	}
   545  	return fpaov
   546  }
   547  
   548  type LabelDescriptor_FieldTerminalPathArrayOfValues struct {
   549  	LabelDescriptor_FieldTerminalPath
   550  	values interface{}
   551  }
   552  
   553  var _ LabelDescriptor_FieldPathArrayOfValues = (*LabelDescriptor_FieldTerminalPathArrayOfValues)(nil)
   554  
   555  func (fpaov *LabelDescriptor_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
   556  	switch fpaov.selector {
   557  	case LabelDescriptor_FieldPathSelectorKey:
   558  		for _, v := range fpaov.values.([]string) {
   559  			values = append(values, v)
   560  		}
   561  	case LabelDescriptor_FieldPathSelectorValueType:
   562  		for _, v := range fpaov.values.([]LabelDescriptor_ValueType) {
   563  			values = append(values, v)
   564  		}
   565  	case LabelDescriptor_FieldPathSelectorDescription:
   566  		for _, v := range fpaov.values.([]string) {
   567  			values = append(values, v)
   568  		}
   569  	case LabelDescriptor_FieldPathSelectorDefaultValue:
   570  		for _, v := range fpaov.values.([]string) {
   571  			values = append(values, v)
   572  		}
   573  	case LabelDescriptor_FieldPathSelectorDisabled:
   574  		for _, v := range fpaov.values.([]bool) {
   575  			values = append(values, v)
   576  		}
   577  	}
   578  	return
   579  }
   580  func (fpaov *LabelDescriptor_FieldTerminalPathArrayOfValues) AsKeyArrayOfValues() ([]string, bool) {
   581  	res, ok := fpaov.values.([]string)
   582  	return res, ok
   583  }
   584  func (fpaov *LabelDescriptor_FieldTerminalPathArrayOfValues) AsValueTypeArrayOfValues() ([]LabelDescriptor_ValueType, bool) {
   585  	res, ok := fpaov.values.([]LabelDescriptor_ValueType)
   586  	return res, ok
   587  }
   588  func (fpaov *LabelDescriptor_FieldTerminalPathArrayOfValues) AsDescriptionArrayOfValues() ([]string, bool) {
   589  	res, ok := fpaov.values.([]string)
   590  	return res, ok
   591  }
   592  func (fpaov *LabelDescriptor_FieldTerminalPathArrayOfValues) AsDefaultValueArrayOfValues() ([]string, bool) {
   593  	res, ok := fpaov.values.([]string)
   594  	return res, ok
   595  }
   596  func (fpaov *LabelDescriptor_FieldTerminalPathArrayOfValues) AsDisabledArrayOfValues() ([]bool, bool) {
   597  	res, ok := fpaov.values.([]bool)
   598  	return res, ok
   599  }
   600  
   601  // FieldPath provides implementation to handle
   602  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
   603  type LabelKeySet_FieldPath interface {
   604  	gotenobject.FieldPath
   605  	Selector() LabelKeySet_FieldPathSelector
   606  	Get(source *LabelKeySet) []interface{}
   607  	GetSingle(source *LabelKeySet) (interface{}, bool)
   608  	ClearValue(item *LabelKeySet)
   609  
   610  	// Those methods build corresponding LabelKeySet_FieldPathValue
   611  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
   612  	WithIValue(value interface{}) LabelKeySet_FieldPathValue
   613  	WithIArrayOfValues(values interface{}) LabelKeySet_FieldPathArrayOfValues
   614  	WithIArrayItemValue(value interface{}) LabelKeySet_FieldPathArrayItemValue
   615  }
   616  
   617  type LabelKeySet_FieldPathSelector int32
   618  
   619  const (
   620  	LabelKeySet_FieldPathSelectorLabelKeys LabelKeySet_FieldPathSelector = 0
   621  )
   622  
   623  func (s LabelKeySet_FieldPathSelector) String() string {
   624  	switch s {
   625  	case LabelKeySet_FieldPathSelectorLabelKeys:
   626  		return "label_keys"
   627  	default:
   628  		panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", s))
   629  	}
   630  }
   631  
   632  func BuildLabelKeySet_FieldPath(fp gotenobject.RawFieldPath) (LabelKeySet_FieldPath, error) {
   633  	if len(fp) == 0 {
   634  		return nil, status.Error(codes.InvalidArgument, "empty field path for object LabelKeySet")
   635  	}
   636  	if len(fp) == 1 {
   637  		switch fp[0] {
   638  		case "label_keys", "labelKeys", "label-keys":
   639  			return &LabelKeySet_FieldTerminalPath{selector: LabelKeySet_FieldPathSelectorLabelKeys}, nil
   640  		}
   641  	}
   642  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object LabelKeySet", fp)
   643  }
   644  
   645  func ParseLabelKeySet_FieldPath(rawField string) (LabelKeySet_FieldPath, error) {
   646  	fp, err := gotenobject.ParseRawFieldPath(rawField)
   647  	if err != nil {
   648  		return nil, err
   649  	}
   650  	return BuildLabelKeySet_FieldPath(fp)
   651  }
   652  
   653  func MustParseLabelKeySet_FieldPath(rawField string) LabelKeySet_FieldPath {
   654  	fp, err := ParseLabelKeySet_FieldPath(rawField)
   655  	if err != nil {
   656  		panic(err)
   657  	}
   658  	return fp
   659  }
   660  
   661  type LabelKeySet_FieldTerminalPath struct {
   662  	selector LabelKeySet_FieldPathSelector
   663  }
   664  
   665  var _ LabelKeySet_FieldPath = (*LabelKeySet_FieldTerminalPath)(nil)
   666  
   667  func (fp *LabelKeySet_FieldTerminalPath) Selector() LabelKeySet_FieldPathSelector {
   668  	return fp.selector
   669  }
   670  
   671  // String returns path representation in proto convention
   672  func (fp *LabelKeySet_FieldTerminalPath) String() string {
   673  	return fp.selector.String()
   674  }
   675  
   676  // JSONString returns path representation is JSON convention
   677  func (fp *LabelKeySet_FieldTerminalPath) JSONString() string {
   678  	return strcase.ToLowerCamel(fp.String())
   679  }
   680  
   681  // Get returns all values pointed by specific field from source LabelKeySet
   682  func (fp *LabelKeySet_FieldTerminalPath) Get(source *LabelKeySet) (values []interface{}) {
   683  	if source != nil {
   684  		switch fp.selector {
   685  		case LabelKeySet_FieldPathSelectorLabelKeys:
   686  			for _, value := range source.GetLabelKeys() {
   687  				values = append(values, value)
   688  			}
   689  		default:
   690  			panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fp.selector))
   691  		}
   692  	}
   693  	return
   694  }
   695  
   696  func (fp *LabelKeySet_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
   697  	return fp.Get(source.(*LabelKeySet))
   698  }
   699  
   700  // GetSingle returns value pointed by specific field of from source LabelKeySet
   701  func (fp *LabelKeySet_FieldTerminalPath) GetSingle(source *LabelKeySet) (interface{}, bool) {
   702  	switch fp.selector {
   703  	case LabelKeySet_FieldPathSelectorLabelKeys:
   704  		res := source.GetLabelKeys()
   705  		return res, res != nil
   706  	default:
   707  		panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fp.selector))
   708  	}
   709  }
   710  
   711  func (fp *LabelKeySet_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
   712  	return fp.GetSingle(source.(*LabelKeySet))
   713  }
   714  
   715  // GetDefault returns a default value of the field type
   716  func (fp *LabelKeySet_FieldTerminalPath) GetDefault() interface{} {
   717  	switch fp.selector {
   718  	case LabelKeySet_FieldPathSelectorLabelKeys:
   719  		return ([]string)(nil)
   720  	default:
   721  		panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fp.selector))
   722  	}
   723  }
   724  
   725  func (fp *LabelKeySet_FieldTerminalPath) ClearValue(item *LabelKeySet) {
   726  	if item != nil {
   727  		switch fp.selector {
   728  		case LabelKeySet_FieldPathSelectorLabelKeys:
   729  			item.LabelKeys = nil
   730  		default:
   731  			panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fp.selector))
   732  		}
   733  	}
   734  }
   735  
   736  func (fp *LabelKeySet_FieldTerminalPath) ClearValueRaw(item proto.Message) {
   737  	fp.ClearValue(item.(*LabelKeySet))
   738  }
   739  
   740  // IsLeaf - whether field path is holds simple value
   741  func (fp *LabelKeySet_FieldTerminalPath) IsLeaf() bool {
   742  	return fp.selector == LabelKeySet_FieldPathSelectorLabelKeys
   743  }
   744  
   745  func (fp *LabelKeySet_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
   746  	return []gotenobject.FieldPath{fp}
   747  }
   748  
   749  func (fp *LabelKeySet_FieldTerminalPath) WithIValue(value interface{}) LabelKeySet_FieldPathValue {
   750  	switch fp.selector {
   751  	case LabelKeySet_FieldPathSelectorLabelKeys:
   752  		return &LabelKeySet_FieldTerminalPathValue{LabelKeySet_FieldTerminalPath: *fp, value: value.([]string)}
   753  	default:
   754  		panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fp.selector))
   755  	}
   756  }
   757  
   758  func (fp *LabelKeySet_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
   759  	return fp.WithIValue(value)
   760  }
   761  
   762  func (fp *LabelKeySet_FieldTerminalPath) WithIArrayOfValues(values interface{}) LabelKeySet_FieldPathArrayOfValues {
   763  	fpaov := &LabelKeySet_FieldTerminalPathArrayOfValues{LabelKeySet_FieldTerminalPath: *fp}
   764  	switch fp.selector {
   765  	case LabelKeySet_FieldPathSelectorLabelKeys:
   766  		return &LabelKeySet_FieldTerminalPathArrayOfValues{LabelKeySet_FieldTerminalPath: *fp, values: values.([][]string)}
   767  	default:
   768  		panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fp.selector))
   769  	}
   770  	return fpaov
   771  }
   772  
   773  func (fp *LabelKeySet_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
   774  	return fp.WithIArrayOfValues(values)
   775  }
   776  
   777  func (fp *LabelKeySet_FieldTerminalPath) WithIArrayItemValue(value interface{}) LabelKeySet_FieldPathArrayItemValue {
   778  	switch fp.selector {
   779  	case LabelKeySet_FieldPathSelectorLabelKeys:
   780  		return &LabelKeySet_FieldTerminalPathArrayItemValue{LabelKeySet_FieldTerminalPath: *fp, value: value.(string)}
   781  	default:
   782  		panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fp.selector))
   783  	}
   784  }
   785  
   786  func (fp *LabelKeySet_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   787  	return fp.WithIArrayItemValue(value)
   788  }
   789  
   790  // LabelKeySet_FieldPathValue allows storing values for LabelKeySet fields according to their type
   791  type LabelKeySet_FieldPathValue interface {
   792  	LabelKeySet_FieldPath
   793  	gotenobject.FieldPathValue
   794  	SetTo(target **LabelKeySet)
   795  	CompareWith(*LabelKeySet) (cmp int, comparable bool)
   796  }
   797  
   798  func ParseLabelKeySet_FieldPathValue(pathStr, valueStr string) (LabelKeySet_FieldPathValue, error) {
   799  	fp, err := ParseLabelKeySet_FieldPath(pathStr)
   800  	if err != nil {
   801  		return nil, err
   802  	}
   803  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
   804  	if err != nil {
   805  		return nil, status.Errorf(codes.InvalidArgument, "error parsing LabelKeySet field path value from %s: %v", valueStr, err)
   806  	}
   807  	return fpv.(LabelKeySet_FieldPathValue), nil
   808  }
   809  
   810  func MustParseLabelKeySet_FieldPathValue(pathStr, valueStr string) LabelKeySet_FieldPathValue {
   811  	fpv, err := ParseLabelKeySet_FieldPathValue(pathStr, valueStr)
   812  	if err != nil {
   813  		panic(err)
   814  	}
   815  	return fpv
   816  }
   817  
   818  type LabelKeySet_FieldTerminalPathValue struct {
   819  	LabelKeySet_FieldTerminalPath
   820  	value interface{}
   821  }
   822  
   823  var _ LabelKeySet_FieldPathValue = (*LabelKeySet_FieldTerminalPathValue)(nil)
   824  
   825  // GetRawValue returns raw value stored under selected path for 'LabelKeySet' as interface{}
   826  func (fpv *LabelKeySet_FieldTerminalPathValue) GetRawValue() interface{} {
   827  	return fpv.value
   828  }
   829  func (fpv *LabelKeySet_FieldTerminalPathValue) AsLabelKeysValue() ([]string, bool) {
   830  	res, ok := fpv.value.([]string)
   831  	return res, ok
   832  }
   833  
   834  // SetTo stores value for selected field for object LabelKeySet
   835  func (fpv *LabelKeySet_FieldTerminalPathValue) SetTo(target **LabelKeySet) {
   836  	if *target == nil {
   837  		*target = new(LabelKeySet)
   838  	}
   839  	switch fpv.selector {
   840  	case LabelKeySet_FieldPathSelectorLabelKeys:
   841  		(*target).LabelKeys = fpv.value.([]string)
   842  	default:
   843  		panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fpv.selector))
   844  	}
   845  }
   846  
   847  func (fpv *LabelKeySet_FieldTerminalPathValue) SetToRaw(target proto.Message) {
   848  	typedObject := target.(*LabelKeySet)
   849  	fpv.SetTo(&typedObject)
   850  }
   851  
   852  // CompareWith compares value in the 'LabelKeySet_FieldTerminalPathValue' with the value under path in 'LabelKeySet'.
   853  func (fpv *LabelKeySet_FieldTerminalPathValue) CompareWith(source *LabelKeySet) (int, bool) {
   854  	switch fpv.selector {
   855  	case LabelKeySet_FieldPathSelectorLabelKeys:
   856  		return 0, false
   857  	default:
   858  		panic(fmt.Sprintf("Invalid selector for LabelKeySet: %d", fpv.selector))
   859  	}
   860  }
   861  
   862  func (fpv *LabelKeySet_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
   863  	return fpv.CompareWith(source.(*LabelKeySet))
   864  }
   865  
   866  // LabelKeySet_FieldPathArrayItemValue allows storing single item in Path-specific values for LabelKeySet according to their type
   867  // Present only for array (repeated) types.
   868  type LabelKeySet_FieldPathArrayItemValue interface {
   869  	gotenobject.FieldPathArrayItemValue
   870  	LabelKeySet_FieldPath
   871  	ContainsValue(*LabelKeySet) bool
   872  }
   873  
   874  // ParseLabelKeySet_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
   875  func ParseLabelKeySet_FieldPathArrayItemValue(pathStr, valueStr string) (LabelKeySet_FieldPathArrayItemValue, error) {
   876  	fp, err := ParseLabelKeySet_FieldPath(pathStr)
   877  	if err != nil {
   878  		return nil, err
   879  	}
   880  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
   881  	if err != nil {
   882  		return nil, status.Errorf(codes.InvalidArgument, "error parsing LabelKeySet field path array item value from %s: %v", valueStr, err)
   883  	}
   884  	return fpaiv.(LabelKeySet_FieldPathArrayItemValue), nil
   885  }
   886  
   887  func MustParseLabelKeySet_FieldPathArrayItemValue(pathStr, valueStr string) LabelKeySet_FieldPathArrayItemValue {
   888  	fpaiv, err := ParseLabelKeySet_FieldPathArrayItemValue(pathStr, valueStr)
   889  	if err != nil {
   890  		panic(err)
   891  	}
   892  	return fpaiv
   893  }
   894  
   895  type LabelKeySet_FieldTerminalPathArrayItemValue struct {
   896  	LabelKeySet_FieldTerminalPath
   897  	value interface{}
   898  }
   899  
   900  var _ LabelKeySet_FieldPathArrayItemValue = (*LabelKeySet_FieldTerminalPathArrayItemValue)(nil)
   901  
   902  // GetRawValue returns stored element value for array in object LabelKeySet as interface{}
   903  func (fpaiv *LabelKeySet_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
   904  	return fpaiv.value
   905  }
   906  func (fpaiv *LabelKeySet_FieldTerminalPathArrayItemValue) AsLabelKeysItemValue() (string, bool) {
   907  	res, ok := fpaiv.value.(string)
   908  	return res, ok
   909  }
   910  
   911  func (fpaiv *LabelKeySet_FieldTerminalPathArrayItemValue) GetSingle(source *LabelKeySet) (interface{}, bool) {
   912  	return nil, false
   913  }
   914  
   915  func (fpaiv *LabelKeySet_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
   916  	return fpaiv.GetSingle(source.(*LabelKeySet))
   917  }
   918  
   919  // Contains returns a boolean indicating if value that is being held is present in given 'LabelKeySet'
   920  func (fpaiv *LabelKeySet_FieldTerminalPathArrayItemValue) ContainsValue(source *LabelKeySet) bool {
   921  	slice := fpaiv.LabelKeySet_FieldTerminalPath.Get(source)
   922  	for _, v := range slice {
   923  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
   924  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
   925  				return true
   926  			}
   927  		} else if reflect.DeepEqual(v, fpaiv.value) {
   928  			return true
   929  		}
   930  	}
   931  	return false
   932  }
   933  
   934  // LabelKeySet_FieldPathArrayOfValues allows storing slice of values for LabelKeySet fields according to their type
   935  type LabelKeySet_FieldPathArrayOfValues interface {
   936  	gotenobject.FieldPathArrayOfValues
   937  	LabelKeySet_FieldPath
   938  }
   939  
   940  func ParseLabelKeySet_FieldPathArrayOfValues(pathStr, valuesStr string) (LabelKeySet_FieldPathArrayOfValues, error) {
   941  	fp, err := ParseLabelKeySet_FieldPath(pathStr)
   942  	if err != nil {
   943  		return nil, err
   944  	}
   945  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
   946  	if err != nil {
   947  		return nil, status.Errorf(codes.InvalidArgument, "error parsing LabelKeySet field path array of values from %s: %v", valuesStr, err)
   948  	}
   949  	return fpaov.(LabelKeySet_FieldPathArrayOfValues), nil
   950  }
   951  
   952  func MustParseLabelKeySet_FieldPathArrayOfValues(pathStr, valuesStr string) LabelKeySet_FieldPathArrayOfValues {
   953  	fpaov, err := ParseLabelKeySet_FieldPathArrayOfValues(pathStr, valuesStr)
   954  	if err != nil {
   955  		panic(err)
   956  	}
   957  	return fpaov
   958  }
   959  
   960  type LabelKeySet_FieldTerminalPathArrayOfValues struct {
   961  	LabelKeySet_FieldTerminalPath
   962  	values interface{}
   963  }
   964  
   965  var _ LabelKeySet_FieldPathArrayOfValues = (*LabelKeySet_FieldTerminalPathArrayOfValues)(nil)
   966  
   967  func (fpaov *LabelKeySet_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
   968  	switch fpaov.selector {
   969  	case LabelKeySet_FieldPathSelectorLabelKeys:
   970  		for _, v := range fpaov.values.([][]string) {
   971  			values = append(values, v)
   972  		}
   973  	}
   974  	return
   975  }
   976  func (fpaov *LabelKeySet_FieldTerminalPathArrayOfValues) AsLabelKeysArrayOfValues() ([][]string, bool) {
   977  	res, ok := fpaov.values.([][]string)
   978  	return res, ok
   979  }
   980  
   981  // FieldPath provides implementation to handle
   982  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
   983  type Distribution_FieldPath interface {
   984  	gotenobject.FieldPath
   985  	Selector() Distribution_FieldPathSelector
   986  	Get(source *Distribution) []interface{}
   987  	GetSingle(source *Distribution) (interface{}, bool)
   988  	ClearValue(item *Distribution)
   989  
   990  	// Those methods build corresponding Distribution_FieldPathValue
   991  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
   992  	WithIValue(value interface{}) Distribution_FieldPathValue
   993  	WithIArrayOfValues(values interface{}) Distribution_FieldPathArrayOfValues
   994  	WithIArrayItemValue(value interface{}) Distribution_FieldPathArrayItemValue
   995  }
   996  
   997  type Distribution_FieldPathSelector int32
   998  
   999  const (
  1000  	Distribution_FieldPathSelectorCount                 Distribution_FieldPathSelector = 0
  1001  	Distribution_FieldPathSelectorMean                  Distribution_FieldPathSelector = 1
  1002  	Distribution_FieldPathSelectorSumOfSquaredDeviation Distribution_FieldPathSelector = 2
  1003  	Distribution_FieldPathSelectorRange                 Distribution_FieldPathSelector = 3
  1004  	Distribution_FieldPathSelectorBucketOptions         Distribution_FieldPathSelector = 4
  1005  	Distribution_FieldPathSelectorBucketCounts          Distribution_FieldPathSelector = 5
  1006  )
  1007  
  1008  func (s Distribution_FieldPathSelector) String() string {
  1009  	switch s {
  1010  	case Distribution_FieldPathSelectorCount:
  1011  		return "count"
  1012  	case Distribution_FieldPathSelectorMean:
  1013  		return "mean"
  1014  	case Distribution_FieldPathSelectorSumOfSquaredDeviation:
  1015  		return "sum_of_squared_deviation"
  1016  	case Distribution_FieldPathSelectorRange:
  1017  		return "range"
  1018  	case Distribution_FieldPathSelectorBucketOptions:
  1019  		return "bucket_options"
  1020  	case Distribution_FieldPathSelectorBucketCounts:
  1021  		return "bucket_counts"
  1022  	default:
  1023  		panic(fmt.Sprintf("Invalid selector for Distribution: %d", s))
  1024  	}
  1025  }
  1026  
  1027  func BuildDistribution_FieldPath(fp gotenobject.RawFieldPath) (Distribution_FieldPath, error) {
  1028  	if len(fp) == 0 {
  1029  		return nil, status.Error(codes.InvalidArgument, "empty field path for object Distribution")
  1030  	}
  1031  	if len(fp) == 1 {
  1032  		switch fp[0] {
  1033  		case "count":
  1034  			return &Distribution_FieldTerminalPath{selector: Distribution_FieldPathSelectorCount}, nil
  1035  		case "mean":
  1036  			return &Distribution_FieldTerminalPath{selector: Distribution_FieldPathSelectorMean}, nil
  1037  		case "sum_of_squared_deviation", "sumOfSquaredDeviation", "sum-of-squared-deviation":
  1038  			return &Distribution_FieldTerminalPath{selector: Distribution_FieldPathSelectorSumOfSquaredDeviation}, nil
  1039  		case "range":
  1040  			return &Distribution_FieldTerminalPath{selector: Distribution_FieldPathSelectorRange}, nil
  1041  		case "bucket_options", "bucketOptions", "bucket-options":
  1042  			return &Distribution_FieldTerminalPath{selector: Distribution_FieldPathSelectorBucketOptions}, nil
  1043  		case "bucket_counts", "bucketCounts", "bucket-counts":
  1044  			return &Distribution_FieldTerminalPath{selector: Distribution_FieldPathSelectorBucketCounts}, nil
  1045  		}
  1046  	} else {
  1047  		switch fp[0] {
  1048  		case "range":
  1049  			if subpath, err := BuildDistributionRange_FieldPath(fp[1:]); err != nil {
  1050  				return nil, err
  1051  			} else {
  1052  				return &Distribution_FieldSubPath{selector: Distribution_FieldPathSelectorRange, subPath: subpath}, nil
  1053  			}
  1054  		case "bucket_options", "bucketOptions", "bucket-options":
  1055  			if subpath, err := BuildDistributionBucketOptions_FieldPath(fp[1:]); err != nil {
  1056  				return nil, err
  1057  			} else {
  1058  				return &Distribution_FieldSubPath{selector: Distribution_FieldPathSelectorBucketOptions, subPath: subpath}, nil
  1059  			}
  1060  		}
  1061  	}
  1062  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object Distribution", fp)
  1063  }
  1064  
  1065  func ParseDistribution_FieldPath(rawField string) (Distribution_FieldPath, error) {
  1066  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  1067  	if err != nil {
  1068  		return nil, err
  1069  	}
  1070  	return BuildDistribution_FieldPath(fp)
  1071  }
  1072  
  1073  func MustParseDistribution_FieldPath(rawField string) Distribution_FieldPath {
  1074  	fp, err := ParseDistribution_FieldPath(rawField)
  1075  	if err != nil {
  1076  		panic(err)
  1077  	}
  1078  	return fp
  1079  }
  1080  
  1081  type Distribution_FieldTerminalPath struct {
  1082  	selector Distribution_FieldPathSelector
  1083  }
  1084  
  1085  var _ Distribution_FieldPath = (*Distribution_FieldTerminalPath)(nil)
  1086  
  1087  func (fp *Distribution_FieldTerminalPath) Selector() Distribution_FieldPathSelector {
  1088  	return fp.selector
  1089  }
  1090  
  1091  // String returns path representation in proto convention
  1092  func (fp *Distribution_FieldTerminalPath) String() string {
  1093  	return fp.selector.String()
  1094  }
  1095  
  1096  // JSONString returns path representation is JSON convention
  1097  func (fp *Distribution_FieldTerminalPath) JSONString() string {
  1098  	return strcase.ToLowerCamel(fp.String())
  1099  }
  1100  
  1101  // Get returns all values pointed by specific field from source Distribution
  1102  func (fp *Distribution_FieldTerminalPath) Get(source *Distribution) (values []interface{}) {
  1103  	if source != nil {
  1104  		switch fp.selector {
  1105  		case Distribution_FieldPathSelectorCount:
  1106  			values = append(values, source.Count)
  1107  		case Distribution_FieldPathSelectorMean:
  1108  			values = append(values, source.Mean)
  1109  		case Distribution_FieldPathSelectorSumOfSquaredDeviation:
  1110  			values = append(values, source.SumOfSquaredDeviation)
  1111  		case Distribution_FieldPathSelectorRange:
  1112  			if source.Range != nil {
  1113  				values = append(values, source.Range)
  1114  			}
  1115  		case Distribution_FieldPathSelectorBucketOptions:
  1116  			if source.BucketOptions != nil {
  1117  				values = append(values, source.BucketOptions)
  1118  			}
  1119  		case Distribution_FieldPathSelectorBucketCounts:
  1120  			for _, value := range source.GetBucketCounts() {
  1121  				values = append(values, value)
  1122  			}
  1123  		default:
  1124  			panic(fmt.Sprintf("Invalid selector for Distribution: %d", fp.selector))
  1125  		}
  1126  	}
  1127  	return
  1128  }
  1129  
  1130  func (fp *Distribution_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  1131  	return fp.Get(source.(*Distribution))
  1132  }
  1133  
  1134  // GetSingle returns value pointed by specific field of from source Distribution
  1135  func (fp *Distribution_FieldTerminalPath) GetSingle(source *Distribution) (interface{}, bool) {
  1136  	switch fp.selector {
  1137  	case Distribution_FieldPathSelectorCount:
  1138  		return source.GetCount(), source != nil
  1139  	case Distribution_FieldPathSelectorMean:
  1140  		return source.GetMean(), source != nil
  1141  	case Distribution_FieldPathSelectorSumOfSquaredDeviation:
  1142  		return source.GetSumOfSquaredDeviation(), source != nil
  1143  	case Distribution_FieldPathSelectorRange:
  1144  		res := source.GetRange()
  1145  		return res, res != nil
  1146  	case Distribution_FieldPathSelectorBucketOptions:
  1147  		res := source.GetBucketOptions()
  1148  		return res, res != nil
  1149  	case Distribution_FieldPathSelectorBucketCounts:
  1150  		res := source.GetBucketCounts()
  1151  		return res, res != nil
  1152  	default:
  1153  		panic(fmt.Sprintf("Invalid selector for Distribution: %d", fp.selector))
  1154  	}
  1155  }
  1156  
  1157  func (fp *Distribution_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  1158  	return fp.GetSingle(source.(*Distribution))
  1159  }
  1160  
  1161  // GetDefault returns a default value of the field type
  1162  func (fp *Distribution_FieldTerminalPath) GetDefault() interface{} {
  1163  	switch fp.selector {
  1164  	case Distribution_FieldPathSelectorCount:
  1165  		return int64(0)
  1166  	case Distribution_FieldPathSelectorMean:
  1167  		return float64(0)
  1168  	case Distribution_FieldPathSelectorSumOfSquaredDeviation:
  1169  		return float64(0)
  1170  	case Distribution_FieldPathSelectorRange:
  1171  		return (*Distribution_Range)(nil)
  1172  	case Distribution_FieldPathSelectorBucketOptions:
  1173  		return (*Distribution_BucketOptions)(nil)
  1174  	case Distribution_FieldPathSelectorBucketCounts:
  1175  		return ([]int64)(nil)
  1176  	default:
  1177  		panic(fmt.Sprintf("Invalid selector for Distribution: %d", fp.selector))
  1178  	}
  1179  }
  1180  
  1181  func (fp *Distribution_FieldTerminalPath) ClearValue(item *Distribution) {
  1182  	if item != nil {
  1183  		switch fp.selector {
  1184  		case Distribution_FieldPathSelectorCount:
  1185  			item.Count = int64(0)
  1186  		case Distribution_FieldPathSelectorMean:
  1187  			item.Mean = float64(0)
  1188  		case Distribution_FieldPathSelectorSumOfSquaredDeviation:
  1189  			item.SumOfSquaredDeviation = float64(0)
  1190  		case Distribution_FieldPathSelectorRange:
  1191  			item.Range = nil
  1192  		case Distribution_FieldPathSelectorBucketOptions:
  1193  			item.BucketOptions = nil
  1194  		case Distribution_FieldPathSelectorBucketCounts:
  1195  			item.BucketCounts = nil
  1196  		default:
  1197  			panic(fmt.Sprintf("Invalid selector for Distribution: %d", fp.selector))
  1198  		}
  1199  	}
  1200  }
  1201  
  1202  func (fp *Distribution_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  1203  	fp.ClearValue(item.(*Distribution))
  1204  }
  1205  
  1206  // IsLeaf - whether field path is holds simple value
  1207  func (fp *Distribution_FieldTerminalPath) IsLeaf() bool {
  1208  	return fp.selector == Distribution_FieldPathSelectorCount ||
  1209  		fp.selector == Distribution_FieldPathSelectorMean ||
  1210  		fp.selector == Distribution_FieldPathSelectorSumOfSquaredDeviation ||
  1211  		fp.selector == Distribution_FieldPathSelectorBucketCounts
  1212  }
  1213  
  1214  func (fp *Distribution_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  1215  	return []gotenobject.FieldPath{fp}
  1216  }
  1217  
  1218  func (fp *Distribution_FieldTerminalPath) WithIValue(value interface{}) Distribution_FieldPathValue {
  1219  	switch fp.selector {
  1220  	case Distribution_FieldPathSelectorCount:
  1221  		return &Distribution_FieldTerminalPathValue{Distribution_FieldTerminalPath: *fp, value: value.(int64)}
  1222  	case Distribution_FieldPathSelectorMean:
  1223  		return &Distribution_FieldTerminalPathValue{Distribution_FieldTerminalPath: *fp, value: value.(float64)}
  1224  	case Distribution_FieldPathSelectorSumOfSquaredDeviation:
  1225  		return &Distribution_FieldTerminalPathValue{Distribution_FieldTerminalPath: *fp, value: value.(float64)}
  1226  	case Distribution_FieldPathSelectorRange:
  1227  		return &Distribution_FieldTerminalPathValue{Distribution_FieldTerminalPath: *fp, value: value.(*Distribution_Range)}
  1228  	case Distribution_FieldPathSelectorBucketOptions:
  1229  		return &Distribution_FieldTerminalPathValue{Distribution_FieldTerminalPath: *fp, value: value.(*Distribution_BucketOptions)}
  1230  	case Distribution_FieldPathSelectorBucketCounts:
  1231  		return &Distribution_FieldTerminalPathValue{Distribution_FieldTerminalPath: *fp, value: value.([]int64)}
  1232  	default:
  1233  		panic(fmt.Sprintf("Invalid selector for Distribution: %d", fp.selector))
  1234  	}
  1235  }
  1236  
  1237  func (fp *Distribution_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  1238  	return fp.WithIValue(value)
  1239  }
  1240  
  1241  func (fp *Distribution_FieldTerminalPath) WithIArrayOfValues(values interface{}) Distribution_FieldPathArrayOfValues {
  1242  	fpaov := &Distribution_FieldTerminalPathArrayOfValues{Distribution_FieldTerminalPath: *fp}
  1243  	switch fp.selector {
  1244  	case Distribution_FieldPathSelectorCount:
  1245  		return &Distribution_FieldTerminalPathArrayOfValues{Distribution_FieldTerminalPath: *fp, values: values.([]int64)}
  1246  	case Distribution_FieldPathSelectorMean:
  1247  		return &Distribution_FieldTerminalPathArrayOfValues{Distribution_FieldTerminalPath: *fp, values: values.([]float64)}
  1248  	case Distribution_FieldPathSelectorSumOfSquaredDeviation:
  1249  		return &Distribution_FieldTerminalPathArrayOfValues{Distribution_FieldTerminalPath: *fp, values: values.([]float64)}
  1250  	case Distribution_FieldPathSelectorRange:
  1251  		return &Distribution_FieldTerminalPathArrayOfValues{Distribution_FieldTerminalPath: *fp, values: values.([]*Distribution_Range)}
  1252  	case Distribution_FieldPathSelectorBucketOptions:
  1253  		return &Distribution_FieldTerminalPathArrayOfValues{Distribution_FieldTerminalPath: *fp, values: values.([]*Distribution_BucketOptions)}
  1254  	case Distribution_FieldPathSelectorBucketCounts:
  1255  		return &Distribution_FieldTerminalPathArrayOfValues{Distribution_FieldTerminalPath: *fp, values: values.([][]int64)}
  1256  	default:
  1257  		panic(fmt.Sprintf("Invalid selector for Distribution: %d", fp.selector))
  1258  	}
  1259  	return fpaov
  1260  }
  1261  
  1262  func (fp *Distribution_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  1263  	return fp.WithIArrayOfValues(values)
  1264  }
  1265  
  1266  func (fp *Distribution_FieldTerminalPath) WithIArrayItemValue(value interface{}) Distribution_FieldPathArrayItemValue {
  1267  	switch fp.selector {
  1268  	case Distribution_FieldPathSelectorBucketCounts:
  1269  		return &Distribution_FieldTerminalPathArrayItemValue{Distribution_FieldTerminalPath: *fp, value: value.(int64)}
  1270  	default:
  1271  		panic(fmt.Sprintf("Invalid selector for Distribution: %d", fp.selector))
  1272  	}
  1273  }
  1274  
  1275  func (fp *Distribution_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  1276  	return fp.WithIArrayItemValue(value)
  1277  }
  1278  
  1279  type Distribution_FieldSubPath struct {
  1280  	selector Distribution_FieldPathSelector
  1281  	subPath  gotenobject.FieldPath
  1282  }
  1283  
  1284  var _ Distribution_FieldPath = (*Distribution_FieldSubPath)(nil)
  1285  
  1286  func (fps *Distribution_FieldSubPath) Selector() Distribution_FieldPathSelector {
  1287  	return fps.selector
  1288  }
  1289  func (fps *Distribution_FieldSubPath) AsRangeSubPath() (DistributionRange_FieldPath, bool) {
  1290  	res, ok := fps.subPath.(DistributionRange_FieldPath)
  1291  	return res, ok
  1292  }
  1293  func (fps *Distribution_FieldSubPath) AsBucketOptionsSubPath() (DistributionBucketOptions_FieldPath, bool) {
  1294  	res, ok := fps.subPath.(DistributionBucketOptions_FieldPath)
  1295  	return res, ok
  1296  }
  1297  
  1298  // String returns path representation in proto convention
  1299  func (fps *Distribution_FieldSubPath) String() string {
  1300  	return fps.selector.String() + "." + fps.subPath.String()
  1301  }
  1302  
  1303  // JSONString returns path representation is JSON convention
  1304  func (fps *Distribution_FieldSubPath) JSONString() string {
  1305  	return strcase.ToLowerCamel(fps.selector.String()) + "." + fps.subPath.JSONString()
  1306  }
  1307  
  1308  // Get returns all values pointed by selected field from source Distribution
  1309  func (fps *Distribution_FieldSubPath) Get(source *Distribution) (values []interface{}) {
  1310  	switch fps.selector {
  1311  	case Distribution_FieldPathSelectorRange:
  1312  		values = append(values, fps.subPath.GetRaw(source.GetRange())...)
  1313  	case Distribution_FieldPathSelectorBucketOptions:
  1314  		values = append(values, fps.subPath.GetRaw(source.GetBucketOptions())...)
  1315  	default:
  1316  		panic(fmt.Sprintf("Invalid selector for Distribution: %d", fps.selector))
  1317  	}
  1318  	return
  1319  }
  1320  
  1321  func (fps *Distribution_FieldSubPath) GetRaw(source proto.Message) []interface{} {
  1322  	return fps.Get(source.(*Distribution))
  1323  }
  1324  
  1325  // GetSingle returns value of selected field from source Distribution
  1326  func (fps *Distribution_FieldSubPath) GetSingle(source *Distribution) (interface{}, bool) {
  1327  	switch fps.selector {
  1328  	case Distribution_FieldPathSelectorRange:
  1329  		if source.GetRange() == nil {
  1330  			return nil, false
  1331  		}
  1332  		return fps.subPath.GetSingleRaw(source.GetRange())
  1333  	case Distribution_FieldPathSelectorBucketOptions:
  1334  		if source.GetBucketOptions() == nil {
  1335  			return nil, false
  1336  		}
  1337  		return fps.subPath.GetSingleRaw(source.GetBucketOptions())
  1338  	default:
  1339  		panic(fmt.Sprintf("Invalid selector for Distribution: %d", fps.selector))
  1340  	}
  1341  }
  1342  
  1343  func (fps *Distribution_FieldSubPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  1344  	return fps.GetSingle(source.(*Distribution))
  1345  }
  1346  
  1347  // GetDefault returns a default value of the field type
  1348  func (fps *Distribution_FieldSubPath) GetDefault() interface{} {
  1349  	return fps.subPath.GetDefault()
  1350  }
  1351  
  1352  func (fps *Distribution_FieldSubPath) ClearValue(item *Distribution) {
  1353  	if item != nil {
  1354  		switch fps.selector {
  1355  		case Distribution_FieldPathSelectorRange:
  1356  			fps.subPath.ClearValueRaw(item.Range)
  1357  		case Distribution_FieldPathSelectorBucketOptions:
  1358  			fps.subPath.ClearValueRaw(item.BucketOptions)
  1359  		default:
  1360  			panic(fmt.Sprintf("Invalid selector for Distribution: %d", fps.selector))
  1361  		}
  1362  	}
  1363  }
  1364  
  1365  func (fps *Distribution_FieldSubPath) ClearValueRaw(item proto.Message) {
  1366  	fps.ClearValue(item.(*Distribution))
  1367  }
  1368  
  1369  // IsLeaf - whether field path is holds simple value
  1370  func (fps *Distribution_FieldSubPath) IsLeaf() bool {
  1371  	return fps.subPath.IsLeaf()
  1372  }
  1373  
  1374  func (fps *Distribution_FieldSubPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  1375  	iPaths := []gotenobject.FieldPath{&Distribution_FieldTerminalPath{selector: fps.selector}}
  1376  	iPaths = append(iPaths, fps.subPath.SplitIntoTerminalIPaths()...)
  1377  	return iPaths
  1378  }
  1379  
  1380  func (fps *Distribution_FieldSubPath) WithIValue(value interface{}) Distribution_FieldPathValue {
  1381  	return &Distribution_FieldSubPathValue{fps, fps.subPath.WithRawIValue(value)}
  1382  }
  1383  
  1384  func (fps *Distribution_FieldSubPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  1385  	return fps.WithIValue(value)
  1386  }
  1387  
  1388  func (fps *Distribution_FieldSubPath) WithIArrayOfValues(values interface{}) Distribution_FieldPathArrayOfValues {
  1389  	return &Distribution_FieldSubPathArrayOfValues{fps, fps.subPath.WithRawIArrayOfValues(values)}
  1390  }
  1391  
  1392  func (fps *Distribution_FieldSubPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  1393  	return fps.WithIArrayOfValues(values)
  1394  }
  1395  
  1396  func (fps *Distribution_FieldSubPath) WithIArrayItemValue(value interface{}) Distribution_FieldPathArrayItemValue {
  1397  	return &Distribution_FieldSubPathArrayItemValue{fps, fps.subPath.WithRawIArrayItemValue(value)}
  1398  }
  1399  
  1400  func (fps *Distribution_FieldSubPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  1401  	return fps.WithIArrayItemValue(value)
  1402  }
  1403  
  1404  // Distribution_FieldPathValue allows storing values for Distribution fields according to their type
  1405  type Distribution_FieldPathValue interface {
  1406  	Distribution_FieldPath
  1407  	gotenobject.FieldPathValue
  1408  	SetTo(target **Distribution)
  1409  	CompareWith(*Distribution) (cmp int, comparable bool)
  1410  }
  1411  
  1412  func ParseDistribution_FieldPathValue(pathStr, valueStr string) (Distribution_FieldPathValue, error) {
  1413  	fp, err := ParseDistribution_FieldPath(pathStr)
  1414  	if err != nil {
  1415  		return nil, err
  1416  	}
  1417  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  1418  	if err != nil {
  1419  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Distribution field path value from %s: %v", valueStr, err)
  1420  	}
  1421  	return fpv.(Distribution_FieldPathValue), nil
  1422  }
  1423  
  1424  func MustParseDistribution_FieldPathValue(pathStr, valueStr string) Distribution_FieldPathValue {
  1425  	fpv, err := ParseDistribution_FieldPathValue(pathStr, valueStr)
  1426  	if err != nil {
  1427  		panic(err)
  1428  	}
  1429  	return fpv
  1430  }
  1431  
  1432  type Distribution_FieldTerminalPathValue struct {
  1433  	Distribution_FieldTerminalPath
  1434  	value interface{}
  1435  }
  1436  
  1437  var _ Distribution_FieldPathValue = (*Distribution_FieldTerminalPathValue)(nil)
  1438  
  1439  // GetRawValue returns raw value stored under selected path for 'Distribution' as interface{}
  1440  func (fpv *Distribution_FieldTerminalPathValue) GetRawValue() interface{} {
  1441  	return fpv.value
  1442  }
  1443  func (fpv *Distribution_FieldTerminalPathValue) AsCountValue() (int64, bool) {
  1444  	res, ok := fpv.value.(int64)
  1445  	return res, ok
  1446  }
  1447  func (fpv *Distribution_FieldTerminalPathValue) AsMeanValue() (float64, bool) {
  1448  	res, ok := fpv.value.(float64)
  1449  	return res, ok
  1450  }
  1451  func (fpv *Distribution_FieldTerminalPathValue) AsSumOfSquaredDeviationValue() (float64, bool) {
  1452  	res, ok := fpv.value.(float64)
  1453  	return res, ok
  1454  }
  1455  func (fpv *Distribution_FieldTerminalPathValue) AsRangeValue() (*Distribution_Range, bool) {
  1456  	res, ok := fpv.value.(*Distribution_Range)
  1457  	return res, ok
  1458  }
  1459  func (fpv *Distribution_FieldTerminalPathValue) AsBucketOptionsValue() (*Distribution_BucketOptions, bool) {
  1460  	res, ok := fpv.value.(*Distribution_BucketOptions)
  1461  	return res, ok
  1462  }
  1463  func (fpv *Distribution_FieldTerminalPathValue) AsBucketCountsValue() ([]int64, bool) {
  1464  	res, ok := fpv.value.([]int64)
  1465  	return res, ok
  1466  }
  1467  
  1468  // SetTo stores value for selected field for object Distribution
  1469  func (fpv *Distribution_FieldTerminalPathValue) SetTo(target **Distribution) {
  1470  	if *target == nil {
  1471  		*target = new(Distribution)
  1472  	}
  1473  	switch fpv.selector {
  1474  	case Distribution_FieldPathSelectorCount:
  1475  		(*target).Count = fpv.value.(int64)
  1476  	case Distribution_FieldPathSelectorMean:
  1477  		(*target).Mean = fpv.value.(float64)
  1478  	case Distribution_FieldPathSelectorSumOfSquaredDeviation:
  1479  		(*target).SumOfSquaredDeviation = fpv.value.(float64)
  1480  	case Distribution_FieldPathSelectorRange:
  1481  		(*target).Range = fpv.value.(*Distribution_Range)
  1482  	case Distribution_FieldPathSelectorBucketOptions:
  1483  		(*target).BucketOptions = fpv.value.(*Distribution_BucketOptions)
  1484  	case Distribution_FieldPathSelectorBucketCounts:
  1485  		(*target).BucketCounts = fpv.value.([]int64)
  1486  	default:
  1487  		panic(fmt.Sprintf("Invalid selector for Distribution: %d", fpv.selector))
  1488  	}
  1489  }
  1490  
  1491  func (fpv *Distribution_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  1492  	typedObject := target.(*Distribution)
  1493  	fpv.SetTo(&typedObject)
  1494  }
  1495  
  1496  // CompareWith compares value in the 'Distribution_FieldTerminalPathValue' with the value under path in 'Distribution'.
  1497  func (fpv *Distribution_FieldTerminalPathValue) CompareWith(source *Distribution) (int, bool) {
  1498  	switch fpv.selector {
  1499  	case Distribution_FieldPathSelectorCount:
  1500  		leftValue := fpv.value.(int64)
  1501  		rightValue := source.GetCount()
  1502  		if (leftValue) == (rightValue) {
  1503  			return 0, true
  1504  		} else if (leftValue) < (rightValue) {
  1505  			return -1, true
  1506  		} else {
  1507  			return 1, true
  1508  		}
  1509  	case Distribution_FieldPathSelectorMean:
  1510  		leftValue := fpv.value.(float64)
  1511  		rightValue := source.GetMean()
  1512  		if (leftValue) == (rightValue) {
  1513  			return 0, true
  1514  		} else if (leftValue) < (rightValue) {
  1515  			return -1, true
  1516  		} else {
  1517  			return 1, true
  1518  		}
  1519  	case Distribution_FieldPathSelectorSumOfSquaredDeviation:
  1520  		leftValue := fpv.value.(float64)
  1521  		rightValue := source.GetSumOfSquaredDeviation()
  1522  		if (leftValue) == (rightValue) {
  1523  			return 0, true
  1524  		} else if (leftValue) < (rightValue) {
  1525  			return -1, true
  1526  		} else {
  1527  			return 1, true
  1528  		}
  1529  	case Distribution_FieldPathSelectorRange:
  1530  		return 0, false
  1531  	case Distribution_FieldPathSelectorBucketOptions:
  1532  		return 0, false
  1533  	case Distribution_FieldPathSelectorBucketCounts:
  1534  		return 0, false
  1535  	default:
  1536  		panic(fmt.Sprintf("Invalid selector for Distribution: %d", fpv.selector))
  1537  	}
  1538  }
  1539  
  1540  func (fpv *Distribution_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  1541  	return fpv.CompareWith(source.(*Distribution))
  1542  }
  1543  
  1544  type Distribution_FieldSubPathValue struct {
  1545  	Distribution_FieldPath
  1546  	subPathValue gotenobject.FieldPathValue
  1547  }
  1548  
  1549  var _ Distribution_FieldPathValue = (*Distribution_FieldSubPathValue)(nil)
  1550  
  1551  func (fpvs *Distribution_FieldSubPathValue) AsRangePathValue() (DistributionRange_FieldPathValue, bool) {
  1552  	res, ok := fpvs.subPathValue.(DistributionRange_FieldPathValue)
  1553  	return res, ok
  1554  }
  1555  func (fpvs *Distribution_FieldSubPathValue) AsBucketOptionsPathValue() (DistributionBucketOptions_FieldPathValue, bool) {
  1556  	res, ok := fpvs.subPathValue.(DistributionBucketOptions_FieldPathValue)
  1557  	return res, ok
  1558  }
  1559  
  1560  func (fpvs *Distribution_FieldSubPathValue) SetTo(target **Distribution) {
  1561  	if *target == nil {
  1562  		*target = new(Distribution)
  1563  	}
  1564  	switch fpvs.Selector() {
  1565  	case Distribution_FieldPathSelectorRange:
  1566  		fpvs.subPathValue.(DistributionRange_FieldPathValue).SetTo(&(*target).Range)
  1567  	case Distribution_FieldPathSelectorBucketOptions:
  1568  		fpvs.subPathValue.(DistributionBucketOptions_FieldPathValue).SetTo(&(*target).BucketOptions)
  1569  	default:
  1570  		panic(fmt.Sprintf("Invalid selector for Distribution: %d", fpvs.Selector()))
  1571  	}
  1572  }
  1573  
  1574  func (fpvs *Distribution_FieldSubPathValue) SetToRaw(target proto.Message) {
  1575  	typedObject := target.(*Distribution)
  1576  	fpvs.SetTo(&typedObject)
  1577  }
  1578  
  1579  func (fpvs *Distribution_FieldSubPathValue) GetRawValue() interface{} {
  1580  	return fpvs.subPathValue.GetRawValue()
  1581  }
  1582  
  1583  func (fpvs *Distribution_FieldSubPathValue) CompareWith(source *Distribution) (int, bool) {
  1584  	switch fpvs.Selector() {
  1585  	case Distribution_FieldPathSelectorRange:
  1586  		return fpvs.subPathValue.(DistributionRange_FieldPathValue).CompareWith(source.GetRange())
  1587  	case Distribution_FieldPathSelectorBucketOptions:
  1588  		return fpvs.subPathValue.(DistributionBucketOptions_FieldPathValue).CompareWith(source.GetBucketOptions())
  1589  	default:
  1590  		panic(fmt.Sprintf("Invalid selector for Distribution: %d", fpvs.Selector()))
  1591  	}
  1592  }
  1593  
  1594  func (fpvs *Distribution_FieldSubPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  1595  	return fpvs.CompareWith(source.(*Distribution))
  1596  }
  1597  
  1598  // Distribution_FieldPathArrayItemValue allows storing single item in Path-specific values for Distribution according to their type
  1599  // Present only for array (repeated) types.
  1600  type Distribution_FieldPathArrayItemValue interface {
  1601  	gotenobject.FieldPathArrayItemValue
  1602  	Distribution_FieldPath
  1603  	ContainsValue(*Distribution) bool
  1604  }
  1605  
  1606  // ParseDistribution_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  1607  func ParseDistribution_FieldPathArrayItemValue(pathStr, valueStr string) (Distribution_FieldPathArrayItemValue, error) {
  1608  	fp, err := ParseDistribution_FieldPath(pathStr)
  1609  	if err != nil {
  1610  		return nil, err
  1611  	}
  1612  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  1613  	if err != nil {
  1614  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Distribution field path array item value from %s: %v", valueStr, err)
  1615  	}
  1616  	return fpaiv.(Distribution_FieldPathArrayItemValue), nil
  1617  }
  1618  
  1619  func MustParseDistribution_FieldPathArrayItemValue(pathStr, valueStr string) Distribution_FieldPathArrayItemValue {
  1620  	fpaiv, err := ParseDistribution_FieldPathArrayItemValue(pathStr, valueStr)
  1621  	if err != nil {
  1622  		panic(err)
  1623  	}
  1624  	return fpaiv
  1625  }
  1626  
  1627  type Distribution_FieldTerminalPathArrayItemValue struct {
  1628  	Distribution_FieldTerminalPath
  1629  	value interface{}
  1630  }
  1631  
  1632  var _ Distribution_FieldPathArrayItemValue = (*Distribution_FieldTerminalPathArrayItemValue)(nil)
  1633  
  1634  // GetRawValue returns stored element value for array in object Distribution as interface{}
  1635  func (fpaiv *Distribution_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  1636  	return fpaiv.value
  1637  }
  1638  func (fpaiv *Distribution_FieldTerminalPathArrayItemValue) AsBucketCountsItemValue() (int64, bool) {
  1639  	res, ok := fpaiv.value.(int64)
  1640  	return res, ok
  1641  }
  1642  
  1643  func (fpaiv *Distribution_FieldTerminalPathArrayItemValue) GetSingle(source *Distribution) (interface{}, bool) {
  1644  	return nil, false
  1645  }
  1646  
  1647  func (fpaiv *Distribution_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  1648  	return fpaiv.GetSingle(source.(*Distribution))
  1649  }
  1650  
  1651  // Contains returns a boolean indicating if value that is being held is present in given 'Distribution'
  1652  func (fpaiv *Distribution_FieldTerminalPathArrayItemValue) ContainsValue(source *Distribution) bool {
  1653  	slice := fpaiv.Distribution_FieldTerminalPath.Get(source)
  1654  	for _, v := range slice {
  1655  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  1656  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  1657  				return true
  1658  			}
  1659  		} else if reflect.DeepEqual(v, fpaiv.value) {
  1660  			return true
  1661  		}
  1662  	}
  1663  	return false
  1664  }
  1665  
  1666  type Distribution_FieldSubPathArrayItemValue struct {
  1667  	Distribution_FieldPath
  1668  	subPathItemValue gotenobject.FieldPathArrayItemValue
  1669  }
  1670  
  1671  // GetRawValue returns stored array item value
  1672  func (fpaivs *Distribution_FieldSubPathArrayItemValue) GetRawItemValue() interface{} {
  1673  	return fpaivs.subPathItemValue.GetRawItemValue()
  1674  }
  1675  func (fpaivs *Distribution_FieldSubPathArrayItemValue) AsRangePathItemValue() (DistributionRange_FieldPathArrayItemValue, bool) {
  1676  	res, ok := fpaivs.subPathItemValue.(DistributionRange_FieldPathArrayItemValue)
  1677  	return res, ok
  1678  }
  1679  func (fpaivs *Distribution_FieldSubPathArrayItemValue) AsBucketOptionsPathItemValue() (DistributionBucketOptions_FieldPathArrayItemValue, bool) {
  1680  	res, ok := fpaivs.subPathItemValue.(DistributionBucketOptions_FieldPathArrayItemValue)
  1681  	return res, ok
  1682  }
  1683  
  1684  // Contains returns a boolean indicating if value that is being held is present in given 'Distribution'
  1685  func (fpaivs *Distribution_FieldSubPathArrayItemValue) ContainsValue(source *Distribution) bool {
  1686  	switch fpaivs.Selector() {
  1687  	case Distribution_FieldPathSelectorRange:
  1688  		return fpaivs.subPathItemValue.(DistributionRange_FieldPathArrayItemValue).ContainsValue(source.GetRange())
  1689  	case Distribution_FieldPathSelectorBucketOptions:
  1690  		return fpaivs.subPathItemValue.(DistributionBucketOptions_FieldPathArrayItemValue).ContainsValue(source.GetBucketOptions())
  1691  	default:
  1692  		panic(fmt.Sprintf("Invalid selector for Distribution: %d", fpaivs.Selector()))
  1693  	}
  1694  }
  1695  
  1696  // Distribution_FieldPathArrayOfValues allows storing slice of values for Distribution fields according to their type
  1697  type Distribution_FieldPathArrayOfValues interface {
  1698  	gotenobject.FieldPathArrayOfValues
  1699  	Distribution_FieldPath
  1700  }
  1701  
  1702  func ParseDistribution_FieldPathArrayOfValues(pathStr, valuesStr string) (Distribution_FieldPathArrayOfValues, error) {
  1703  	fp, err := ParseDistribution_FieldPath(pathStr)
  1704  	if err != nil {
  1705  		return nil, err
  1706  	}
  1707  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  1708  	if err != nil {
  1709  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Distribution field path array of values from %s: %v", valuesStr, err)
  1710  	}
  1711  	return fpaov.(Distribution_FieldPathArrayOfValues), nil
  1712  }
  1713  
  1714  func MustParseDistribution_FieldPathArrayOfValues(pathStr, valuesStr string) Distribution_FieldPathArrayOfValues {
  1715  	fpaov, err := ParseDistribution_FieldPathArrayOfValues(pathStr, valuesStr)
  1716  	if err != nil {
  1717  		panic(err)
  1718  	}
  1719  	return fpaov
  1720  }
  1721  
  1722  type Distribution_FieldTerminalPathArrayOfValues struct {
  1723  	Distribution_FieldTerminalPath
  1724  	values interface{}
  1725  }
  1726  
  1727  var _ Distribution_FieldPathArrayOfValues = (*Distribution_FieldTerminalPathArrayOfValues)(nil)
  1728  
  1729  func (fpaov *Distribution_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  1730  	switch fpaov.selector {
  1731  	case Distribution_FieldPathSelectorCount:
  1732  		for _, v := range fpaov.values.([]int64) {
  1733  			values = append(values, v)
  1734  		}
  1735  	case Distribution_FieldPathSelectorMean:
  1736  		for _, v := range fpaov.values.([]float64) {
  1737  			values = append(values, v)
  1738  		}
  1739  	case Distribution_FieldPathSelectorSumOfSquaredDeviation:
  1740  		for _, v := range fpaov.values.([]float64) {
  1741  			values = append(values, v)
  1742  		}
  1743  	case Distribution_FieldPathSelectorRange:
  1744  		for _, v := range fpaov.values.([]*Distribution_Range) {
  1745  			values = append(values, v)
  1746  		}
  1747  	case Distribution_FieldPathSelectorBucketOptions:
  1748  		for _, v := range fpaov.values.([]*Distribution_BucketOptions) {
  1749  			values = append(values, v)
  1750  		}
  1751  	case Distribution_FieldPathSelectorBucketCounts:
  1752  		for _, v := range fpaov.values.([][]int64) {
  1753  			values = append(values, v)
  1754  		}
  1755  	}
  1756  	return
  1757  }
  1758  func (fpaov *Distribution_FieldTerminalPathArrayOfValues) AsCountArrayOfValues() ([]int64, bool) {
  1759  	res, ok := fpaov.values.([]int64)
  1760  	return res, ok
  1761  }
  1762  func (fpaov *Distribution_FieldTerminalPathArrayOfValues) AsMeanArrayOfValues() ([]float64, bool) {
  1763  	res, ok := fpaov.values.([]float64)
  1764  	return res, ok
  1765  }
  1766  func (fpaov *Distribution_FieldTerminalPathArrayOfValues) AsSumOfSquaredDeviationArrayOfValues() ([]float64, bool) {
  1767  	res, ok := fpaov.values.([]float64)
  1768  	return res, ok
  1769  }
  1770  func (fpaov *Distribution_FieldTerminalPathArrayOfValues) AsRangeArrayOfValues() ([]*Distribution_Range, bool) {
  1771  	res, ok := fpaov.values.([]*Distribution_Range)
  1772  	return res, ok
  1773  }
  1774  func (fpaov *Distribution_FieldTerminalPathArrayOfValues) AsBucketOptionsArrayOfValues() ([]*Distribution_BucketOptions, bool) {
  1775  	res, ok := fpaov.values.([]*Distribution_BucketOptions)
  1776  	return res, ok
  1777  }
  1778  func (fpaov *Distribution_FieldTerminalPathArrayOfValues) AsBucketCountsArrayOfValues() ([][]int64, bool) {
  1779  	res, ok := fpaov.values.([][]int64)
  1780  	return res, ok
  1781  }
  1782  
  1783  type Distribution_FieldSubPathArrayOfValues struct {
  1784  	Distribution_FieldPath
  1785  	subPathArrayOfValues gotenobject.FieldPathArrayOfValues
  1786  }
  1787  
  1788  var _ Distribution_FieldPathArrayOfValues = (*Distribution_FieldSubPathArrayOfValues)(nil)
  1789  
  1790  func (fpsaov *Distribution_FieldSubPathArrayOfValues) GetRawValues() []interface{} {
  1791  	return fpsaov.subPathArrayOfValues.GetRawValues()
  1792  }
  1793  func (fpsaov *Distribution_FieldSubPathArrayOfValues) AsRangePathArrayOfValues() (DistributionRange_FieldPathArrayOfValues, bool) {
  1794  	res, ok := fpsaov.subPathArrayOfValues.(DistributionRange_FieldPathArrayOfValues)
  1795  	return res, ok
  1796  }
  1797  func (fpsaov *Distribution_FieldSubPathArrayOfValues) AsBucketOptionsPathArrayOfValues() (DistributionBucketOptions_FieldPathArrayOfValues, bool) {
  1798  	res, ok := fpsaov.subPathArrayOfValues.(DistributionBucketOptions_FieldPathArrayOfValues)
  1799  	return res, ok
  1800  }
  1801  
  1802  // FieldPath provides implementation to handle
  1803  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  1804  type DistributionRange_FieldPath interface {
  1805  	gotenobject.FieldPath
  1806  	Selector() DistributionRange_FieldPathSelector
  1807  	Get(source *Distribution_Range) []interface{}
  1808  	GetSingle(source *Distribution_Range) (interface{}, bool)
  1809  	ClearValue(item *Distribution_Range)
  1810  
  1811  	// Those methods build corresponding DistributionRange_FieldPathValue
  1812  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
  1813  	WithIValue(value interface{}) DistributionRange_FieldPathValue
  1814  	WithIArrayOfValues(values interface{}) DistributionRange_FieldPathArrayOfValues
  1815  	WithIArrayItemValue(value interface{}) DistributionRange_FieldPathArrayItemValue
  1816  }
  1817  
  1818  type DistributionRange_FieldPathSelector int32
  1819  
  1820  const (
  1821  	DistributionRange_FieldPathSelectorMin DistributionRange_FieldPathSelector = 0
  1822  	DistributionRange_FieldPathSelectorMax DistributionRange_FieldPathSelector = 1
  1823  )
  1824  
  1825  func (s DistributionRange_FieldPathSelector) String() string {
  1826  	switch s {
  1827  	case DistributionRange_FieldPathSelectorMin:
  1828  		return "min"
  1829  	case DistributionRange_FieldPathSelectorMax:
  1830  		return "max"
  1831  	default:
  1832  		panic(fmt.Sprintf("Invalid selector for Distribution_Range: %d", s))
  1833  	}
  1834  }
  1835  
  1836  func BuildDistributionRange_FieldPath(fp gotenobject.RawFieldPath) (DistributionRange_FieldPath, error) {
  1837  	if len(fp) == 0 {
  1838  		return nil, status.Error(codes.InvalidArgument, "empty field path for object Distribution_Range")
  1839  	}
  1840  	if len(fp) == 1 {
  1841  		switch fp[0] {
  1842  		case "min":
  1843  			return &DistributionRange_FieldTerminalPath{selector: DistributionRange_FieldPathSelectorMin}, nil
  1844  		case "max":
  1845  			return &DistributionRange_FieldTerminalPath{selector: DistributionRange_FieldPathSelectorMax}, nil
  1846  		}
  1847  	}
  1848  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object Distribution_Range", fp)
  1849  }
  1850  
  1851  func ParseDistributionRange_FieldPath(rawField string) (DistributionRange_FieldPath, error) {
  1852  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  1853  	if err != nil {
  1854  		return nil, err
  1855  	}
  1856  	return BuildDistributionRange_FieldPath(fp)
  1857  }
  1858  
  1859  func MustParseDistributionRange_FieldPath(rawField string) DistributionRange_FieldPath {
  1860  	fp, err := ParseDistributionRange_FieldPath(rawField)
  1861  	if err != nil {
  1862  		panic(err)
  1863  	}
  1864  	return fp
  1865  }
  1866  
  1867  type DistributionRange_FieldTerminalPath struct {
  1868  	selector DistributionRange_FieldPathSelector
  1869  }
  1870  
  1871  var _ DistributionRange_FieldPath = (*DistributionRange_FieldTerminalPath)(nil)
  1872  
  1873  func (fp *DistributionRange_FieldTerminalPath) Selector() DistributionRange_FieldPathSelector {
  1874  	return fp.selector
  1875  }
  1876  
  1877  // String returns path representation in proto convention
  1878  func (fp *DistributionRange_FieldTerminalPath) String() string {
  1879  	return fp.selector.String()
  1880  }
  1881  
  1882  // JSONString returns path representation is JSON convention
  1883  func (fp *DistributionRange_FieldTerminalPath) JSONString() string {
  1884  	return strcase.ToLowerCamel(fp.String())
  1885  }
  1886  
  1887  // Get returns all values pointed by specific field from source Distribution_Range
  1888  func (fp *DistributionRange_FieldTerminalPath) Get(source *Distribution_Range) (values []interface{}) {
  1889  	if source != nil {
  1890  		switch fp.selector {
  1891  		case DistributionRange_FieldPathSelectorMin:
  1892  			values = append(values, source.Min)
  1893  		case DistributionRange_FieldPathSelectorMax:
  1894  			values = append(values, source.Max)
  1895  		default:
  1896  			panic(fmt.Sprintf("Invalid selector for Distribution_Range: %d", fp.selector))
  1897  		}
  1898  	}
  1899  	return
  1900  }
  1901  
  1902  func (fp *DistributionRange_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  1903  	return fp.Get(source.(*Distribution_Range))
  1904  }
  1905  
  1906  // GetSingle returns value pointed by specific field of from source Distribution_Range
  1907  func (fp *DistributionRange_FieldTerminalPath) GetSingle(source *Distribution_Range) (interface{}, bool) {
  1908  	switch fp.selector {
  1909  	case DistributionRange_FieldPathSelectorMin:
  1910  		return source.GetMin(), source != nil
  1911  	case DistributionRange_FieldPathSelectorMax:
  1912  		return source.GetMax(), source != nil
  1913  	default:
  1914  		panic(fmt.Sprintf("Invalid selector for Distribution_Range: %d", fp.selector))
  1915  	}
  1916  }
  1917  
  1918  func (fp *DistributionRange_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  1919  	return fp.GetSingle(source.(*Distribution_Range))
  1920  }
  1921  
  1922  // GetDefault returns a default value of the field type
  1923  func (fp *DistributionRange_FieldTerminalPath) GetDefault() interface{} {
  1924  	switch fp.selector {
  1925  	case DistributionRange_FieldPathSelectorMin:
  1926  		return float64(0)
  1927  	case DistributionRange_FieldPathSelectorMax:
  1928  		return float64(0)
  1929  	default:
  1930  		panic(fmt.Sprintf("Invalid selector for Distribution_Range: %d", fp.selector))
  1931  	}
  1932  }
  1933  
  1934  func (fp *DistributionRange_FieldTerminalPath) ClearValue(item *Distribution_Range) {
  1935  	if item != nil {
  1936  		switch fp.selector {
  1937  		case DistributionRange_FieldPathSelectorMin:
  1938  			item.Min = float64(0)
  1939  		case DistributionRange_FieldPathSelectorMax:
  1940  			item.Max = float64(0)
  1941  		default:
  1942  			panic(fmt.Sprintf("Invalid selector for Distribution_Range: %d", fp.selector))
  1943  		}
  1944  	}
  1945  }
  1946  
  1947  func (fp *DistributionRange_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  1948  	fp.ClearValue(item.(*Distribution_Range))
  1949  }
  1950  
  1951  // IsLeaf - whether field path is holds simple value
  1952  func (fp *DistributionRange_FieldTerminalPath) IsLeaf() bool {
  1953  	return fp.selector == DistributionRange_FieldPathSelectorMin ||
  1954  		fp.selector == DistributionRange_FieldPathSelectorMax
  1955  }
  1956  
  1957  func (fp *DistributionRange_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  1958  	return []gotenobject.FieldPath{fp}
  1959  }
  1960  
  1961  func (fp *DistributionRange_FieldTerminalPath) WithIValue(value interface{}) DistributionRange_FieldPathValue {
  1962  	switch fp.selector {
  1963  	case DistributionRange_FieldPathSelectorMin:
  1964  		return &DistributionRange_FieldTerminalPathValue{DistributionRange_FieldTerminalPath: *fp, value: value.(float64)}
  1965  	case DistributionRange_FieldPathSelectorMax:
  1966  		return &DistributionRange_FieldTerminalPathValue{DistributionRange_FieldTerminalPath: *fp, value: value.(float64)}
  1967  	default:
  1968  		panic(fmt.Sprintf("Invalid selector for Distribution_Range: %d", fp.selector))
  1969  	}
  1970  }
  1971  
  1972  func (fp *DistributionRange_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  1973  	return fp.WithIValue(value)
  1974  }
  1975  
  1976  func (fp *DistributionRange_FieldTerminalPath) WithIArrayOfValues(values interface{}) DistributionRange_FieldPathArrayOfValues {
  1977  	fpaov := &DistributionRange_FieldTerminalPathArrayOfValues{DistributionRange_FieldTerminalPath: *fp}
  1978  	switch fp.selector {
  1979  	case DistributionRange_FieldPathSelectorMin:
  1980  		return &DistributionRange_FieldTerminalPathArrayOfValues{DistributionRange_FieldTerminalPath: *fp, values: values.([]float64)}
  1981  	case DistributionRange_FieldPathSelectorMax:
  1982  		return &DistributionRange_FieldTerminalPathArrayOfValues{DistributionRange_FieldTerminalPath: *fp, values: values.([]float64)}
  1983  	default:
  1984  		panic(fmt.Sprintf("Invalid selector for Distribution_Range: %d", fp.selector))
  1985  	}
  1986  	return fpaov
  1987  }
  1988  
  1989  func (fp *DistributionRange_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  1990  	return fp.WithIArrayOfValues(values)
  1991  }
  1992  
  1993  func (fp *DistributionRange_FieldTerminalPath) WithIArrayItemValue(value interface{}) DistributionRange_FieldPathArrayItemValue {
  1994  	switch fp.selector {
  1995  	default:
  1996  		panic(fmt.Sprintf("Invalid selector for Distribution_Range: %d", fp.selector))
  1997  	}
  1998  }
  1999  
  2000  func (fp *DistributionRange_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  2001  	return fp.WithIArrayItemValue(value)
  2002  }
  2003  
  2004  // DistributionRange_FieldPathValue allows storing values for Range fields according to their type
  2005  type DistributionRange_FieldPathValue interface {
  2006  	DistributionRange_FieldPath
  2007  	gotenobject.FieldPathValue
  2008  	SetTo(target **Distribution_Range)
  2009  	CompareWith(*Distribution_Range) (cmp int, comparable bool)
  2010  }
  2011  
  2012  func ParseDistributionRange_FieldPathValue(pathStr, valueStr string) (DistributionRange_FieldPathValue, error) {
  2013  	fp, err := ParseDistributionRange_FieldPath(pathStr)
  2014  	if err != nil {
  2015  		return nil, err
  2016  	}
  2017  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  2018  	if err != nil {
  2019  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Range field path value from %s: %v", valueStr, err)
  2020  	}
  2021  	return fpv.(DistributionRange_FieldPathValue), nil
  2022  }
  2023  
  2024  func MustParseDistributionRange_FieldPathValue(pathStr, valueStr string) DistributionRange_FieldPathValue {
  2025  	fpv, err := ParseDistributionRange_FieldPathValue(pathStr, valueStr)
  2026  	if err != nil {
  2027  		panic(err)
  2028  	}
  2029  	return fpv
  2030  }
  2031  
  2032  type DistributionRange_FieldTerminalPathValue struct {
  2033  	DistributionRange_FieldTerminalPath
  2034  	value interface{}
  2035  }
  2036  
  2037  var _ DistributionRange_FieldPathValue = (*DistributionRange_FieldTerminalPathValue)(nil)
  2038  
  2039  // GetRawValue returns raw value stored under selected path for 'Range' as interface{}
  2040  func (fpv *DistributionRange_FieldTerminalPathValue) GetRawValue() interface{} {
  2041  	return fpv.value
  2042  }
  2043  func (fpv *DistributionRange_FieldTerminalPathValue) AsMinValue() (float64, bool) {
  2044  	res, ok := fpv.value.(float64)
  2045  	return res, ok
  2046  }
  2047  func (fpv *DistributionRange_FieldTerminalPathValue) AsMaxValue() (float64, bool) {
  2048  	res, ok := fpv.value.(float64)
  2049  	return res, ok
  2050  }
  2051  
  2052  // SetTo stores value for selected field for object Range
  2053  func (fpv *DistributionRange_FieldTerminalPathValue) SetTo(target **Distribution_Range) {
  2054  	if *target == nil {
  2055  		*target = new(Distribution_Range)
  2056  	}
  2057  	switch fpv.selector {
  2058  	case DistributionRange_FieldPathSelectorMin:
  2059  		(*target).Min = fpv.value.(float64)
  2060  	case DistributionRange_FieldPathSelectorMax:
  2061  		(*target).Max = fpv.value.(float64)
  2062  	default:
  2063  		panic(fmt.Sprintf("Invalid selector for Distribution_Range: %d", fpv.selector))
  2064  	}
  2065  }
  2066  
  2067  func (fpv *DistributionRange_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  2068  	typedObject := target.(*Distribution_Range)
  2069  	fpv.SetTo(&typedObject)
  2070  }
  2071  
  2072  // CompareWith compares value in the 'DistributionRange_FieldTerminalPathValue' with the value under path in 'Distribution_Range'.
  2073  func (fpv *DistributionRange_FieldTerminalPathValue) CompareWith(source *Distribution_Range) (int, bool) {
  2074  	switch fpv.selector {
  2075  	case DistributionRange_FieldPathSelectorMin:
  2076  		leftValue := fpv.value.(float64)
  2077  		rightValue := source.GetMin()
  2078  		if (leftValue) == (rightValue) {
  2079  			return 0, true
  2080  		} else if (leftValue) < (rightValue) {
  2081  			return -1, true
  2082  		} else {
  2083  			return 1, true
  2084  		}
  2085  	case DistributionRange_FieldPathSelectorMax:
  2086  		leftValue := fpv.value.(float64)
  2087  		rightValue := source.GetMax()
  2088  		if (leftValue) == (rightValue) {
  2089  			return 0, true
  2090  		} else if (leftValue) < (rightValue) {
  2091  			return -1, true
  2092  		} else {
  2093  			return 1, true
  2094  		}
  2095  	default:
  2096  		panic(fmt.Sprintf("Invalid selector for Distribution_Range: %d", fpv.selector))
  2097  	}
  2098  }
  2099  
  2100  func (fpv *DistributionRange_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  2101  	return fpv.CompareWith(source.(*Distribution_Range))
  2102  }
  2103  
  2104  // DistributionRange_FieldPathArrayItemValue allows storing single item in Path-specific values for Range according to their type
  2105  // Present only for array (repeated) types.
  2106  type DistributionRange_FieldPathArrayItemValue interface {
  2107  	gotenobject.FieldPathArrayItemValue
  2108  	DistributionRange_FieldPath
  2109  	ContainsValue(*Distribution_Range) bool
  2110  }
  2111  
  2112  // ParseDistributionRange_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  2113  func ParseDistributionRange_FieldPathArrayItemValue(pathStr, valueStr string) (DistributionRange_FieldPathArrayItemValue, error) {
  2114  	fp, err := ParseDistributionRange_FieldPath(pathStr)
  2115  	if err != nil {
  2116  		return nil, err
  2117  	}
  2118  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  2119  	if err != nil {
  2120  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Range field path array item value from %s: %v", valueStr, err)
  2121  	}
  2122  	return fpaiv.(DistributionRange_FieldPathArrayItemValue), nil
  2123  }
  2124  
  2125  func MustParseDistributionRange_FieldPathArrayItemValue(pathStr, valueStr string) DistributionRange_FieldPathArrayItemValue {
  2126  	fpaiv, err := ParseDistributionRange_FieldPathArrayItemValue(pathStr, valueStr)
  2127  	if err != nil {
  2128  		panic(err)
  2129  	}
  2130  	return fpaiv
  2131  }
  2132  
  2133  type DistributionRange_FieldTerminalPathArrayItemValue struct {
  2134  	DistributionRange_FieldTerminalPath
  2135  	value interface{}
  2136  }
  2137  
  2138  var _ DistributionRange_FieldPathArrayItemValue = (*DistributionRange_FieldTerminalPathArrayItemValue)(nil)
  2139  
  2140  // GetRawValue returns stored element value for array in object Distribution_Range as interface{}
  2141  func (fpaiv *DistributionRange_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  2142  	return fpaiv.value
  2143  }
  2144  
  2145  func (fpaiv *DistributionRange_FieldTerminalPathArrayItemValue) GetSingle(source *Distribution_Range) (interface{}, bool) {
  2146  	return nil, false
  2147  }
  2148  
  2149  func (fpaiv *DistributionRange_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  2150  	return fpaiv.GetSingle(source.(*Distribution_Range))
  2151  }
  2152  
  2153  // Contains returns a boolean indicating if value that is being held is present in given 'Range'
  2154  func (fpaiv *DistributionRange_FieldTerminalPathArrayItemValue) ContainsValue(source *Distribution_Range) bool {
  2155  	slice := fpaiv.DistributionRange_FieldTerminalPath.Get(source)
  2156  	for _, v := range slice {
  2157  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  2158  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  2159  				return true
  2160  			}
  2161  		} else if reflect.DeepEqual(v, fpaiv.value) {
  2162  			return true
  2163  		}
  2164  	}
  2165  	return false
  2166  }
  2167  
  2168  // DistributionRange_FieldPathArrayOfValues allows storing slice of values for Range fields according to their type
  2169  type DistributionRange_FieldPathArrayOfValues interface {
  2170  	gotenobject.FieldPathArrayOfValues
  2171  	DistributionRange_FieldPath
  2172  }
  2173  
  2174  func ParseDistributionRange_FieldPathArrayOfValues(pathStr, valuesStr string) (DistributionRange_FieldPathArrayOfValues, error) {
  2175  	fp, err := ParseDistributionRange_FieldPath(pathStr)
  2176  	if err != nil {
  2177  		return nil, err
  2178  	}
  2179  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  2180  	if err != nil {
  2181  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Range field path array of values from %s: %v", valuesStr, err)
  2182  	}
  2183  	return fpaov.(DistributionRange_FieldPathArrayOfValues), nil
  2184  }
  2185  
  2186  func MustParseDistributionRange_FieldPathArrayOfValues(pathStr, valuesStr string) DistributionRange_FieldPathArrayOfValues {
  2187  	fpaov, err := ParseDistributionRange_FieldPathArrayOfValues(pathStr, valuesStr)
  2188  	if err != nil {
  2189  		panic(err)
  2190  	}
  2191  	return fpaov
  2192  }
  2193  
  2194  type DistributionRange_FieldTerminalPathArrayOfValues struct {
  2195  	DistributionRange_FieldTerminalPath
  2196  	values interface{}
  2197  }
  2198  
  2199  var _ DistributionRange_FieldPathArrayOfValues = (*DistributionRange_FieldTerminalPathArrayOfValues)(nil)
  2200  
  2201  func (fpaov *DistributionRange_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  2202  	switch fpaov.selector {
  2203  	case DistributionRange_FieldPathSelectorMin:
  2204  		for _, v := range fpaov.values.([]float64) {
  2205  			values = append(values, v)
  2206  		}
  2207  	case DistributionRange_FieldPathSelectorMax:
  2208  		for _, v := range fpaov.values.([]float64) {
  2209  			values = append(values, v)
  2210  		}
  2211  	}
  2212  	return
  2213  }
  2214  func (fpaov *DistributionRange_FieldTerminalPathArrayOfValues) AsMinArrayOfValues() ([]float64, bool) {
  2215  	res, ok := fpaov.values.([]float64)
  2216  	return res, ok
  2217  }
  2218  func (fpaov *DistributionRange_FieldTerminalPathArrayOfValues) AsMaxArrayOfValues() ([]float64, bool) {
  2219  	res, ok := fpaov.values.([]float64)
  2220  	return res, ok
  2221  }
  2222  
  2223  // FieldPath provides implementation to handle
  2224  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  2225  type DistributionBucketOptions_FieldPath interface {
  2226  	gotenobject.FieldPath
  2227  	Selector() DistributionBucketOptions_FieldPathSelector
  2228  	Get(source *Distribution_BucketOptions) []interface{}
  2229  	GetSingle(source *Distribution_BucketOptions) (interface{}, bool)
  2230  	ClearValue(item *Distribution_BucketOptions)
  2231  
  2232  	// Those methods build corresponding DistributionBucketOptions_FieldPathValue
  2233  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
  2234  	WithIValue(value interface{}) DistributionBucketOptions_FieldPathValue
  2235  	WithIArrayOfValues(values interface{}) DistributionBucketOptions_FieldPathArrayOfValues
  2236  	WithIArrayItemValue(value interface{}) DistributionBucketOptions_FieldPathArrayItemValue
  2237  }
  2238  
  2239  type DistributionBucketOptions_FieldPathSelector int32
  2240  
  2241  const (
  2242  	DistributionBucketOptions_FieldPathSelectorLinearBuckets      DistributionBucketOptions_FieldPathSelector = 0
  2243  	DistributionBucketOptions_FieldPathSelectorExponentialBuckets DistributionBucketOptions_FieldPathSelector = 1
  2244  	DistributionBucketOptions_FieldPathSelectorExplicitBuckets    DistributionBucketOptions_FieldPathSelector = 2
  2245  	DistributionBucketOptions_FieldPathSelectorDynamicBuckets     DistributionBucketOptions_FieldPathSelector = 3
  2246  )
  2247  
  2248  func (s DistributionBucketOptions_FieldPathSelector) String() string {
  2249  	switch s {
  2250  	case DistributionBucketOptions_FieldPathSelectorLinearBuckets:
  2251  		return "linear_buckets"
  2252  	case DistributionBucketOptions_FieldPathSelectorExponentialBuckets:
  2253  		return "exponential_buckets"
  2254  	case DistributionBucketOptions_FieldPathSelectorExplicitBuckets:
  2255  		return "explicit_buckets"
  2256  	case DistributionBucketOptions_FieldPathSelectorDynamicBuckets:
  2257  		return "dynamic_buckets"
  2258  	default:
  2259  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions: %d", s))
  2260  	}
  2261  }
  2262  
  2263  func BuildDistributionBucketOptions_FieldPath(fp gotenobject.RawFieldPath) (DistributionBucketOptions_FieldPath, error) {
  2264  	if len(fp) == 0 {
  2265  		return nil, status.Error(codes.InvalidArgument, "empty field path for object Distribution_BucketOptions")
  2266  	}
  2267  	if len(fp) == 1 {
  2268  		switch fp[0] {
  2269  		case "linear_buckets", "linearBuckets", "linear-buckets":
  2270  			return &DistributionBucketOptions_FieldTerminalPath{selector: DistributionBucketOptions_FieldPathSelectorLinearBuckets}, nil
  2271  		case "exponential_buckets", "exponentialBuckets", "exponential-buckets":
  2272  			return &DistributionBucketOptions_FieldTerminalPath{selector: DistributionBucketOptions_FieldPathSelectorExponentialBuckets}, nil
  2273  		case "explicit_buckets", "explicitBuckets", "explicit-buckets":
  2274  			return &DistributionBucketOptions_FieldTerminalPath{selector: DistributionBucketOptions_FieldPathSelectorExplicitBuckets}, nil
  2275  		case "dynamic_buckets", "dynamicBuckets", "dynamic-buckets":
  2276  			return &DistributionBucketOptions_FieldTerminalPath{selector: DistributionBucketOptions_FieldPathSelectorDynamicBuckets}, nil
  2277  		}
  2278  	} else {
  2279  		switch fp[0] {
  2280  		case "linear_buckets", "linearBuckets", "linear-buckets":
  2281  			if subpath, err := BuildDistributionBucketOptionsLinear_FieldPath(fp[1:]); err != nil {
  2282  				return nil, err
  2283  			} else {
  2284  				return &DistributionBucketOptions_FieldSubPath{selector: DistributionBucketOptions_FieldPathSelectorLinearBuckets, subPath: subpath}, nil
  2285  			}
  2286  		case "exponential_buckets", "exponentialBuckets", "exponential-buckets":
  2287  			if subpath, err := BuildDistributionBucketOptionsExponential_FieldPath(fp[1:]); err != nil {
  2288  				return nil, err
  2289  			} else {
  2290  				return &DistributionBucketOptions_FieldSubPath{selector: DistributionBucketOptions_FieldPathSelectorExponentialBuckets, subPath: subpath}, nil
  2291  			}
  2292  		case "explicit_buckets", "explicitBuckets", "explicit-buckets":
  2293  			if subpath, err := BuildDistributionBucketOptionsExplicit_FieldPath(fp[1:]); err != nil {
  2294  				return nil, err
  2295  			} else {
  2296  				return &DistributionBucketOptions_FieldSubPath{selector: DistributionBucketOptions_FieldPathSelectorExplicitBuckets, subPath: subpath}, nil
  2297  			}
  2298  		case "dynamic_buckets", "dynamicBuckets", "dynamic-buckets":
  2299  			if subpath, err := BuildDistributionBucketOptionsDynamic_FieldPath(fp[1:]); err != nil {
  2300  				return nil, err
  2301  			} else {
  2302  				return &DistributionBucketOptions_FieldSubPath{selector: DistributionBucketOptions_FieldPathSelectorDynamicBuckets, subPath: subpath}, nil
  2303  			}
  2304  		}
  2305  	}
  2306  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object Distribution_BucketOptions", fp)
  2307  }
  2308  
  2309  func ParseDistributionBucketOptions_FieldPath(rawField string) (DistributionBucketOptions_FieldPath, error) {
  2310  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  2311  	if err != nil {
  2312  		return nil, err
  2313  	}
  2314  	return BuildDistributionBucketOptions_FieldPath(fp)
  2315  }
  2316  
  2317  func MustParseDistributionBucketOptions_FieldPath(rawField string) DistributionBucketOptions_FieldPath {
  2318  	fp, err := ParseDistributionBucketOptions_FieldPath(rawField)
  2319  	if err != nil {
  2320  		panic(err)
  2321  	}
  2322  	return fp
  2323  }
  2324  
  2325  type DistributionBucketOptions_FieldTerminalPath struct {
  2326  	selector DistributionBucketOptions_FieldPathSelector
  2327  }
  2328  
  2329  var _ DistributionBucketOptions_FieldPath = (*DistributionBucketOptions_FieldTerminalPath)(nil)
  2330  
  2331  func (fp *DistributionBucketOptions_FieldTerminalPath) Selector() DistributionBucketOptions_FieldPathSelector {
  2332  	return fp.selector
  2333  }
  2334  
  2335  // String returns path representation in proto convention
  2336  func (fp *DistributionBucketOptions_FieldTerminalPath) String() string {
  2337  	return fp.selector.String()
  2338  }
  2339  
  2340  // JSONString returns path representation is JSON convention
  2341  func (fp *DistributionBucketOptions_FieldTerminalPath) JSONString() string {
  2342  	return strcase.ToLowerCamel(fp.String())
  2343  }
  2344  
  2345  // Get returns all values pointed by specific field from source Distribution_BucketOptions
  2346  func (fp *DistributionBucketOptions_FieldTerminalPath) Get(source *Distribution_BucketOptions) (values []interface{}) {
  2347  	if source != nil {
  2348  		switch fp.selector {
  2349  		case DistributionBucketOptions_FieldPathSelectorLinearBuckets:
  2350  			if source, ok := source.Options.(*Distribution_BucketOptions_LinearBuckets); ok && source != nil {
  2351  				if source.LinearBuckets != nil {
  2352  					values = append(values, source.LinearBuckets)
  2353  				}
  2354  			}
  2355  		case DistributionBucketOptions_FieldPathSelectorExponentialBuckets:
  2356  			if source, ok := source.Options.(*Distribution_BucketOptions_ExponentialBuckets); ok && source != nil {
  2357  				if source.ExponentialBuckets != nil {
  2358  					values = append(values, source.ExponentialBuckets)
  2359  				}
  2360  			}
  2361  		case DistributionBucketOptions_FieldPathSelectorExplicitBuckets:
  2362  			if source, ok := source.Options.(*Distribution_BucketOptions_ExplicitBuckets); ok && source != nil {
  2363  				if source.ExplicitBuckets != nil {
  2364  					values = append(values, source.ExplicitBuckets)
  2365  				}
  2366  			}
  2367  		case DistributionBucketOptions_FieldPathSelectorDynamicBuckets:
  2368  			if source, ok := source.Options.(*Distribution_BucketOptions_DynamicBuckets); ok && source != nil {
  2369  				if source.DynamicBuckets != nil {
  2370  					values = append(values, source.DynamicBuckets)
  2371  				}
  2372  			}
  2373  		default:
  2374  			panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions: %d", fp.selector))
  2375  		}
  2376  	}
  2377  	return
  2378  }
  2379  
  2380  func (fp *DistributionBucketOptions_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  2381  	return fp.Get(source.(*Distribution_BucketOptions))
  2382  }
  2383  
  2384  // GetSingle returns value pointed by specific field of from source Distribution_BucketOptions
  2385  func (fp *DistributionBucketOptions_FieldTerminalPath) GetSingle(source *Distribution_BucketOptions) (interface{}, bool) {
  2386  	switch fp.selector {
  2387  	case DistributionBucketOptions_FieldPathSelectorLinearBuckets:
  2388  		// if object nil or oneof not active, return "default" type with false flag.
  2389  		if source == nil {
  2390  			return source.GetLinearBuckets(), false
  2391  		}
  2392  		_, oneOfSelected := source.Options.(*Distribution_BucketOptions_LinearBuckets)
  2393  		if !oneOfSelected {
  2394  			return source.GetLinearBuckets(), false // to return "type" information
  2395  		}
  2396  		res := source.GetLinearBuckets()
  2397  		return res, res != nil
  2398  	case DistributionBucketOptions_FieldPathSelectorExponentialBuckets:
  2399  		// if object nil or oneof not active, return "default" type with false flag.
  2400  		if source == nil {
  2401  			return source.GetExponentialBuckets(), false
  2402  		}
  2403  		_, oneOfSelected := source.Options.(*Distribution_BucketOptions_ExponentialBuckets)
  2404  		if !oneOfSelected {
  2405  			return source.GetExponentialBuckets(), false // to return "type" information
  2406  		}
  2407  		res := source.GetExponentialBuckets()
  2408  		return res, res != nil
  2409  	case DistributionBucketOptions_FieldPathSelectorExplicitBuckets:
  2410  		// if object nil or oneof not active, return "default" type with false flag.
  2411  		if source == nil {
  2412  			return source.GetExplicitBuckets(), false
  2413  		}
  2414  		_, oneOfSelected := source.Options.(*Distribution_BucketOptions_ExplicitBuckets)
  2415  		if !oneOfSelected {
  2416  			return source.GetExplicitBuckets(), false // to return "type" information
  2417  		}
  2418  		res := source.GetExplicitBuckets()
  2419  		return res, res != nil
  2420  	case DistributionBucketOptions_FieldPathSelectorDynamicBuckets:
  2421  		// if object nil or oneof not active, return "default" type with false flag.
  2422  		if source == nil {
  2423  			return source.GetDynamicBuckets(), false
  2424  		}
  2425  		_, oneOfSelected := source.Options.(*Distribution_BucketOptions_DynamicBuckets)
  2426  		if !oneOfSelected {
  2427  			return source.GetDynamicBuckets(), false // to return "type" information
  2428  		}
  2429  		res := source.GetDynamicBuckets()
  2430  		return res, res != nil
  2431  	default:
  2432  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions: %d", fp.selector))
  2433  	}
  2434  }
  2435  
  2436  func (fp *DistributionBucketOptions_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  2437  	return fp.GetSingle(source.(*Distribution_BucketOptions))
  2438  }
  2439  
  2440  // GetDefault returns a default value of the field type
  2441  func (fp *DistributionBucketOptions_FieldTerminalPath) GetDefault() interface{} {
  2442  	switch fp.selector {
  2443  	case DistributionBucketOptions_FieldPathSelectorLinearBuckets:
  2444  		return (*Distribution_BucketOptions_Linear)(nil)
  2445  	case DistributionBucketOptions_FieldPathSelectorExponentialBuckets:
  2446  		return (*Distribution_BucketOptions_Exponential)(nil)
  2447  	case DistributionBucketOptions_FieldPathSelectorExplicitBuckets:
  2448  		return (*Distribution_BucketOptions_Explicit)(nil)
  2449  	case DistributionBucketOptions_FieldPathSelectorDynamicBuckets:
  2450  		return (*Distribution_BucketOptions_Dynamic)(nil)
  2451  	default:
  2452  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions: %d", fp.selector))
  2453  	}
  2454  }
  2455  
  2456  func (fp *DistributionBucketOptions_FieldTerminalPath) ClearValue(item *Distribution_BucketOptions) {
  2457  	if item != nil {
  2458  		switch fp.selector {
  2459  		case DistributionBucketOptions_FieldPathSelectorLinearBuckets:
  2460  			if item, ok := item.Options.(*Distribution_BucketOptions_LinearBuckets); ok {
  2461  				item.LinearBuckets = nil
  2462  			}
  2463  		case DistributionBucketOptions_FieldPathSelectorExponentialBuckets:
  2464  			if item, ok := item.Options.(*Distribution_BucketOptions_ExponentialBuckets); ok {
  2465  				item.ExponentialBuckets = nil
  2466  			}
  2467  		case DistributionBucketOptions_FieldPathSelectorExplicitBuckets:
  2468  			if item, ok := item.Options.(*Distribution_BucketOptions_ExplicitBuckets); ok {
  2469  				item.ExplicitBuckets = nil
  2470  			}
  2471  		case DistributionBucketOptions_FieldPathSelectorDynamicBuckets:
  2472  			if item, ok := item.Options.(*Distribution_BucketOptions_DynamicBuckets); ok {
  2473  				item.DynamicBuckets = nil
  2474  			}
  2475  		default:
  2476  			panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions: %d", fp.selector))
  2477  		}
  2478  	}
  2479  }
  2480  
  2481  func (fp *DistributionBucketOptions_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  2482  	fp.ClearValue(item.(*Distribution_BucketOptions))
  2483  }
  2484  
  2485  // IsLeaf - whether field path is holds simple value
  2486  func (fp *DistributionBucketOptions_FieldTerminalPath) IsLeaf() bool {
  2487  	return false
  2488  }
  2489  
  2490  func (fp *DistributionBucketOptions_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  2491  	return []gotenobject.FieldPath{fp}
  2492  }
  2493  
  2494  func (fp *DistributionBucketOptions_FieldTerminalPath) WithIValue(value interface{}) DistributionBucketOptions_FieldPathValue {
  2495  	switch fp.selector {
  2496  	case DistributionBucketOptions_FieldPathSelectorLinearBuckets:
  2497  		return &DistributionBucketOptions_FieldTerminalPathValue{DistributionBucketOptions_FieldTerminalPath: *fp, value: value.(*Distribution_BucketOptions_Linear)}
  2498  	case DistributionBucketOptions_FieldPathSelectorExponentialBuckets:
  2499  		return &DistributionBucketOptions_FieldTerminalPathValue{DistributionBucketOptions_FieldTerminalPath: *fp, value: value.(*Distribution_BucketOptions_Exponential)}
  2500  	case DistributionBucketOptions_FieldPathSelectorExplicitBuckets:
  2501  		return &DistributionBucketOptions_FieldTerminalPathValue{DistributionBucketOptions_FieldTerminalPath: *fp, value: value.(*Distribution_BucketOptions_Explicit)}
  2502  	case DistributionBucketOptions_FieldPathSelectorDynamicBuckets:
  2503  		return &DistributionBucketOptions_FieldTerminalPathValue{DistributionBucketOptions_FieldTerminalPath: *fp, value: value.(*Distribution_BucketOptions_Dynamic)}
  2504  	default:
  2505  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions: %d", fp.selector))
  2506  	}
  2507  }
  2508  
  2509  func (fp *DistributionBucketOptions_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  2510  	return fp.WithIValue(value)
  2511  }
  2512  
  2513  func (fp *DistributionBucketOptions_FieldTerminalPath) WithIArrayOfValues(values interface{}) DistributionBucketOptions_FieldPathArrayOfValues {
  2514  	fpaov := &DistributionBucketOptions_FieldTerminalPathArrayOfValues{DistributionBucketOptions_FieldTerminalPath: *fp}
  2515  	switch fp.selector {
  2516  	case DistributionBucketOptions_FieldPathSelectorLinearBuckets:
  2517  		return &DistributionBucketOptions_FieldTerminalPathArrayOfValues{DistributionBucketOptions_FieldTerminalPath: *fp, values: values.([]*Distribution_BucketOptions_Linear)}
  2518  	case DistributionBucketOptions_FieldPathSelectorExponentialBuckets:
  2519  		return &DistributionBucketOptions_FieldTerminalPathArrayOfValues{DistributionBucketOptions_FieldTerminalPath: *fp, values: values.([]*Distribution_BucketOptions_Exponential)}
  2520  	case DistributionBucketOptions_FieldPathSelectorExplicitBuckets:
  2521  		return &DistributionBucketOptions_FieldTerminalPathArrayOfValues{DistributionBucketOptions_FieldTerminalPath: *fp, values: values.([]*Distribution_BucketOptions_Explicit)}
  2522  	case DistributionBucketOptions_FieldPathSelectorDynamicBuckets:
  2523  		return &DistributionBucketOptions_FieldTerminalPathArrayOfValues{DistributionBucketOptions_FieldTerminalPath: *fp, values: values.([]*Distribution_BucketOptions_Dynamic)}
  2524  	default:
  2525  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions: %d", fp.selector))
  2526  	}
  2527  	return fpaov
  2528  }
  2529  
  2530  func (fp *DistributionBucketOptions_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  2531  	return fp.WithIArrayOfValues(values)
  2532  }
  2533  
  2534  func (fp *DistributionBucketOptions_FieldTerminalPath) WithIArrayItemValue(value interface{}) DistributionBucketOptions_FieldPathArrayItemValue {
  2535  	switch fp.selector {
  2536  	default:
  2537  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions: %d", fp.selector))
  2538  	}
  2539  }
  2540  
  2541  func (fp *DistributionBucketOptions_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  2542  	return fp.WithIArrayItemValue(value)
  2543  }
  2544  
  2545  type DistributionBucketOptions_FieldSubPath struct {
  2546  	selector DistributionBucketOptions_FieldPathSelector
  2547  	subPath  gotenobject.FieldPath
  2548  }
  2549  
  2550  var _ DistributionBucketOptions_FieldPath = (*DistributionBucketOptions_FieldSubPath)(nil)
  2551  
  2552  func (fps *DistributionBucketOptions_FieldSubPath) Selector() DistributionBucketOptions_FieldPathSelector {
  2553  	return fps.selector
  2554  }
  2555  func (fps *DistributionBucketOptions_FieldSubPath) AsLinearBucketsSubPath() (DistributionBucketOptionsLinear_FieldPath, bool) {
  2556  	res, ok := fps.subPath.(DistributionBucketOptionsLinear_FieldPath)
  2557  	return res, ok
  2558  }
  2559  func (fps *DistributionBucketOptions_FieldSubPath) AsExponentialBucketsSubPath() (DistributionBucketOptionsExponential_FieldPath, bool) {
  2560  	res, ok := fps.subPath.(DistributionBucketOptionsExponential_FieldPath)
  2561  	return res, ok
  2562  }
  2563  func (fps *DistributionBucketOptions_FieldSubPath) AsExplicitBucketsSubPath() (DistributionBucketOptionsExplicit_FieldPath, bool) {
  2564  	res, ok := fps.subPath.(DistributionBucketOptionsExplicit_FieldPath)
  2565  	return res, ok
  2566  }
  2567  func (fps *DistributionBucketOptions_FieldSubPath) AsDynamicBucketsSubPath() (DistributionBucketOptionsDynamic_FieldPath, bool) {
  2568  	res, ok := fps.subPath.(DistributionBucketOptionsDynamic_FieldPath)
  2569  	return res, ok
  2570  }
  2571  
  2572  // String returns path representation in proto convention
  2573  func (fps *DistributionBucketOptions_FieldSubPath) String() string {
  2574  	return fps.selector.String() + "." + fps.subPath.String()
  2575  }
  2576  
  2577  // JSONString returns path representation is JSON convention
  2578  func (fps *DistributionBucketOptions_FieldSubPath) JSONString() string {
  2579  	return strcase.ToLowerCamel(fps.selector.String()) + "." + fps.subPath.JSONString()
  2580  }
  2581  
  2582  // Get returns all values pointed by selected field from source Distribution_BucketOptions
  2583  func (fps *DistributionBucketOptions_FieldSubPath) Get(source *Distribution_BucketOptions) (values []interface{}) {
  2584  	switch fps.selector {
  2585  	case DistributionBucketOptions_FieldPathSelectorLinearBuckets:
  2586  		values = append(values, fps.subPath.GetRaw(source.GetLinearBuckets())...)
  2587  	case DistributionBucketOptions_FieldPathSelectorExponentialBuckets:
  2588  		values = append(values, fps.subPath.GetRaw(source.GetExponentialBuckets())...)
  2589  	case DistributionBucketOptions_FieldPathSelectorExplicitBuckets:
  2590  		values = append(values, fps.subPath.GetRaw(source.GetExplicitBuckets())...)
  2591  	case DistributionBucketOptions_FieldPathSelectorDynamicBuckets:
  2592  		values = append(values, fps.subPath.GetRaw(source.GetDynamicBuckets())...)
  2593  	default:
  2594  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions: %d", fps.selector))
  2595  	}
  2596  	return
  2597  }
  2598  
  2599  func (fps *DistributionBucketOptions_FieldSubPath) GetRaw(source proto.Message) []interface{} {
  2600  	return fps.Get(source.(*Distribution_BucketOptions))
  2601  }
  2602  
  2603  // GetSingle returns value of selected field from source Distribution_BucketOptions
  2604  func (fps *DistributionBucketOptions_FieldSubPath) GetSingle(source *Distribution_BucketOptions) (interface{}, bool) {
  2605  	switch fps.selector {
  2606  	case DistributionBucketOptions_FieldPathSelectorLinearBuckets:
  2607  		if source.GetLinearBuckets() == nil {
  2608  			return nil, false
  2609  		}
  2610  		return fps.subPath.GetSingleRaw(source.GetLinearBuckets())
  2611  	case DistributionBucketOptions_FieldPathSelectorExponentialBuckets:
  2612  		if source.GetExponentialBuckets() == nil {
  2613  			return nil, false
  2614  		}
  2615  		return fps.subPath.GetSingleRaw(source.GetExponentialBuckets())
  2616  	case DistributionBucketOptions_FieldPathSelectorExplicitBuckets:
  2617  		if source.GetExplicitBuckets() == nil {
  2618  			return nil, false
  2619  		}
  2620  		return fps.subPath.GetSingleRaw(source.GetExplicitBuckets())
  2621  	case DistributionBucketOptions_FieldPathSelectorDynamicBuckets:
  2622  		if source.GetDynamicBuckets() == nil {
  2623  			return nil, false
  2624  		}
  2625  		return fps.subPath.GetSingleRaw(source.GetDynamicBuckets())
  2626  	default:
  2627  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions: %d", fps.selector))
  2628  	}
  2629  }
  2630  
  2631  func (fps *DistributionBucketOptions_FieldSubPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  2632  	return fps.GetSingle(source.(*Distribution_BucketOptions))
  2633  }
  2634  
  2635  // GetDefault returns a default value of the field type
  2636  func (fps *DistributionBucketOptions_FieldSubPath) GetDefault() interface{} {
  2637  	return fps.subPath.GetDefault()
  2638  }
  2639  
  2640  func (fps *DistributionBucketOptions_FieldSubPath) ClearValue(item *Distribution_BucketOptions) {
  2641  	if item != nil {
  2642  		switch fps.selector {
  2643  		case DistributionBucketOptions_FieldPathSelectorLinearBuckets:
  2644  			if item.Options != nil {
  2645  				if item, ok := item.Options.(*Distribution_BucketOptions_LinearBuckets); ok {
  2646  					fps.subPath.ClearValueRaw(item.LinearBuckets)
  2647  				}
  2648  			}
  2649  		case DistributionBucketOptions_FieldPathSelectorExponentialBuckets:
  2650  			if item.Options != nil {
  2651  				if item, ok := item.Options.(*Distribution_BucketOptions_ExponentialBuckets); ok {
  2652  					fps.subPath.ClearValueRaw(item.ExponentialBuckets)
  2653  				}
  2654  			}
  2655  		case DistributionBucketOptions_FieldPathSelectorExplicitBuckets:
  2656  			if item.Options != nil {
  2657  				if item, ok := item.Options.(*Distribution_BucketOptions_ExplicitBuckets); ok {
  2658  					fps.subPath.ClearValueRaw(item.ExplicitBuckets)
  2659  				}
  2660  			}
  2661  		case DistributionBucketOptions_FieldPathSelectorDynamicBuckets:
  2662  			if item.Options != nil {
  2663  				if item, ok := item.Options.(*Distribution_BucketOptions_DynamicBuckets); ok {
  2664  					fps.subPath.ClearValueRaw(item.DynamicBuckets)
  2665  				}
  2666  			}
  2667  		default:
  2668  			panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions: %d", fps.selector))
  2669  		}
  2670  	}
  2671  }
  2672  
  2673  func (fps *DistributionBucketOptions_FieldSubPath) ClearValueRaw(item proto.Message) {
  2674  	fps.ClearValue(item.(*Distribution_BucketOptions))
  2675  }
  2676  
  2677  // IsLeaf - whether field path is holds simple value
  2678  func (fps *DistributionBucketOptions_FieldSubPath) IsLeaf() bool {
  2679  	return fps.subPath.IsLeaf()
  2680  }
  2681  
  2682  func (fps *DistributionBucketOptions_FieldSubPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  2683  	iPaths := []gotenobject.FieldPath{&DistributionBucketOptions_FieldTerminalPath{selector: fps.selector}}
  2684  	iPaths = append(iPaths, fps.subPath.SplitIntoTerminalIPaths()...)
  2685  	return iPaths
  2686  }
  2687  
  2688  func (fps *DistributionBucketOptions_FieldSubPath) WithIValue(value interface{}) DistributionBucketOptions_FieldPathValue {
  2689  	return &DistributionBucketOptions_FieldSubPathValue{fps, fps.subPath.WithRawIValue(value)}
  2690  }
  2691  
  2692  func (fps *DistributionBucketOptions_FieldSubPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  2693  	return fps.WithIValue(value)
  2694  }
  2695  
  2696  func (fps *DistributionBucketOptions_FieldSubPath) WithIArrayOfValues(values interface{}) DistributionBucketOptions_FieldPathArrayOfValues {
  2697  	return &DistributionBucketOptions_FieldSubPathArrayOfValues{fps, fps.subPath.WithRawIArrayOfValues(values)}
  2698  }
  2699  
  2700  func (fps *DistributionBucketOptions_FieldSubPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  2701  	return fps.WithIArrayOfValues(values)
  2702  }
  2703  
  2704  func (fps *DistributionBucketOptions_FieldSubPath) WithIArrayItemValue(value interface{}) DistributionBucketOptions_FieldPathArrayItemValue {
  2705  	return &DistributionBucketOptions_FieldSubPathArrayItemValue{fps, fps.subPath.WithRawIArrayItemValue(value)}
  2706  }
  2707  
  2708  func (fps *DistributionBucketOptions_FieldSubPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  2709  	return fps.WithIArrayItemValue(value)
  2710  }
  2711  
  2712  // DistributionBucketOptions_FieldPathValue allows storing values for BucketOptions fields according to their type
  2713  type DistributionBucketOptions_FieldPathValue interface {
  2714  	DistributionBucketOptions_FieldPath
  2715  	gotenobject.FieldPathValue
  2716  	SetTo(target **Distribution_BucketOptions)
  2717  	CompareWith(*Distribution_BucketOptions) (cmp int, comparable bool)
  2718  }
  2719  
  2720  func ParseDistributionBucketOptions_FieldPathValue(pathStr, valueStr string) (DistributionBucketOptions_FieldPathValue, error) {
  2721  	fp, err := ParseDistributionBucketOptions_FieldPath(pathStr)
  2722  	if err != nil {
  2723  		return nil, err
  2724  	}
  2725  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  2726  	if err != nil {
  2727  		return nil, status.Errorf(codes.InvalidArgument, "error parsing BucketOptions field path value from %s: %v", valueStr, err)
  2728  	}
  2729  	return fpv.(DistributionBucketOptions_FieldPathValue), nil
  2730  }
  2731  
  2732  func MustParseDistributionBucketOptions_FieldPathValue(pathStr, valueStr string) DistributionBucketOptions_FieldPathValue {
  2733  	fpv, err := ParseDistributionBucketOptions_FieldPathValue(pathStr, valueStr)
  2734  	if err != nil {
  2735  		panic(err)
  2736  	}
  2737  	return fpv
  2738  }
  2739  
  2740  type DistributionBucketOptions_FieldTerminalPathValue struct {
  2741  	DistributionBucketOptions_FieldTerminalPath
  2742  	value interface{}
  2743  }
  2744  
  2745  var _ DistributionBucketOptions_FieldPathValue = (*DistributionBucketOptions_FieldTerminalPathValue)(nil)
  2746  
  2747  // GetRawValue returns raw value stored under selected path for 'BucketOptions' as interface{}
  2748  func (fpv *DistributionBucketOptions_FieldTerminalPathValue) GetRawValue() interface{} {
  2749  	return fpv.value
  2750  }
  2751  func (fpv *DistributionBucketOptions_FieldTerminalPathValue) AsLinearBucketsValue() (*Distribution_BucketOptions_Linear, bool) {
  2752  	res, ok := fpv.value.(*Distribution_BucketOptions_Linear)
  2753  	return res, ok
  2754  }
  2755  func (fpv *DistributionBucketOptions_FieldTerminalPathValue) AsExponentialBucketsValue() (*Distribution_BucketOptions_Exponential, bool) {
  2756  	res, ok := fpv.value.(*Distribution_BucketOptions_Exponential)
  2757  	return res, ok
  2758  }
  2759  func (fpv *DistributionBucketOptions_FieldTerminalPathValue) AsExplicitBucketsValue() (*Distribution_BucketOptions_Explicit, bool) {
  2760  	res, ok := fpv.value.(*Distribution_BucketOptions_Explicit)
  2761  	return res, ok
  2762  }
  2763  func (fpv *DistributionBucketOptions_FieldTerminalPathValue) AsDynamicBucketsValue() (*Distribution_BucketOptions_Dynamic, bool) {
  2764  	res, ok := fpv.value.(*Distribution_BucketOptions_Dynamic)
  2765  	return res, ok
  2766  }
  2767  
  2768  // SetTo stores value for selected field for object BucketOptions
  2769  func (fpv *DistributionBucketOptions_FieldTerminalPathValue) SetTo(target **Distribution_BucketOptions) {
  2770  	if *target == nil {
  2771  		*target = new(Distribution_BucketOptions)
  2772  	}
  2773  	switch fpv.selector {
  2774  	case DistributionBucketOptions_FieldPathSelectorLinearBuckets:
  2775  		if _, ok := (*target).Options.(*Distribution_BucketOptions_LinearBuckets); !ok {
  2776  			(*target).Options = &Distribution_BucketOptions_LinearBuckets{}
  2777  		}
  2778  		(*target).Options.(*Distribution_BucketOptions_LinearBuckets).LinearBuckets = fpv.value.(*Distribution_BucketOptions_Linear)
  2779  	case DistributionBucketOptions_FieldPathSelectorExponentialBuckets:
  2780  		if _, ok := (*target).Options.(*Distribution_BucketOptions_ExponentialBuckets); !ok {
  2781  			(*target).Options = &Distribution_BucketOptions_ExponentialBuckets{}
  2782  		}
  2783  		(*target).Options.(*Distribution_BucketOptions_ExponentialBuckets).ExponentialBuckets = fpv.value.(*Distribution_BucketOptions_Exponential)
  2784  	case DistributionBucketOptions_FieldPathSelectorExplicitBuckets:
  2785  		if _, ok := (*target).Options.(*Distribution_BucketOptions_ExplicitBuckets); !ok {
  2786  			(*target).Options = &Distribution_BucketOptions_ExplicitBuckets{}
  2787  		}
  2788  		(*target).Options.(*Distribution_BucketOptions_ExplicitBuckets).ExplicitBuckets = fpv.value.(*Distribution_BucketOptions_Explicit)
  2789  	case DistributionBucketOptions_FieldPathSelectorDynamicBuckets:
  2790  		if _, ok := (*target).Options.(*Distribution_BucketOptions_DynamicBuckets); !ok {
  2791  			(*target).Options = &Distribution_BucketOptions_DynamicBuckets{}
  2792  		}
  2793  		(*target).Options.(*Distribution_BucketOptions_DynamicBuckets).DynamicBuckets = fpv.value.(*Distribution_BucketOptions_Dynamic)
  2794  	default:
  2795  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions: %d", fpv.selector))
  2796  	}
  2797  }
  2798  
  2799  func (fpv *DistributionBucketOptions_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  2800  	typedObject := target.(*Distribution_BucketOptions)
  2801  	fpv.SetTo(&typedObject)
  2802  }
  2803  
  2804  // CompareWith compares value in the 'DistributionBucketOptions_FieldTerminalPathValue' with the value under path in 'Distribution_BucketOptions'.
  2805  func (fpv *DistributionBucketOptions_FieldTerminalPathValue) CompareWith(source *Distribution_BucketOptions) (int, bool) {
  2806  	switch fpv.selector {
  2807  	case DistributionBucketOptions_FieldPathSelectorLinearBuckets:
  2808  		return 0, false
  2809  	case DistributionBucketOptions_FieldPathSelectorExponentialBuckets:
  2810  		return 0, false
  2811  	case DistributionBucketOptions_FieldPathSelectorExplicitBuckets:
  2812  		return 0, false
  2813  	case DistributionBucketOptions_FieldPathSelectorDynamicBuckets:
  2814  		return 0, false
  2815  	default:
  2816  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions: %d", fpv.selector))
  2817  	}
  2818  }
  2819  
  2820  func (fpv *DistributionBucketOptions_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  2821  	return fpv.CompareWith(source.(*Distribution_BucketOptions))
  2822  }
  2823  
  2824  type DistributionBucketOptions_FieldSubPathValue struct {
  2825  	DistributionBucketOptions_FieldPath
  2826  	subPathValue gotenobject.FieldPathValue
  2827  }
  2828  
  2829  var _ DistributionBucketOptions_FieldPathValue = (*DistributionBucketOptions_FieldSubPathValue)(nil)
  2830  
  2831  func (fpvs *DistributionBucketOptions_FieldSubPathValue) AsLinearBucketsPathValue() (DistributionBucketOptionsLinear_FieldPathValue, bool) {
  2832  	res, ok := fpvs.subPathValue.(DistributionBucketOptionsLinear_FieldPathValue)
  2833  	return res, ok
  2834  }
  2835  func (fpvs *DistributionBucketOptions_FieldSubPathValue) AsExponentialBucketsPathValue() (DistributionBucketOptionsExponential_FieldPathValue, bool) {
  2836  	res, ok := fpvs.subPathValue.(DistributionBucketOptionsExponential_FieldPathValue)
  2837  	return res, ok
  2838  }
  2839  func (fpvs *DistributionBucketOptions_FieldSubPathValue) AsExplicitBucketsPathValue() (DistributionBucketOptionsExplicit_FieldPathValue, bool) {
  2840  	res, ok := fpvs.subPathValue.(DistributionBucketOptionsExplicit_FieldPathValue)
  2841  	return res, ok
  2842  }
  2843  func (fpvs *DistributionBucketOptions_FieldSubPathValue) AsDynamicBucketsPathValue() (DistributionBucketOptionsDynamic_FieldPathValue, bool) {
  2844  	res, ok := fpvs.subPathValue.(DistributionBucketOptionsDynamic_FieldPathValue)
  2845  	return res, ok
  2846  }
  2847  
  2848  func (fpvs *DistributionBucketOptions_FieldSubPathValue) SetTo(target **Distribution_BucketOptions) {
  2849  	if *target == nil {
  2850  		*target = new(Distribution_BucketOptions)
  2851  	}
  2852  	switch fpvs.Selector() {
  2853  	case DistributionBucketOptions_FieldPathSelectorLinearBuckets:
  2854  		if _, ok := (*target).Options.(*Distribution_BucketOptions_LinearBuckets); !ok {
  2855  			(*target).Options = &Distribution_BucketOptions_LinearBuckets{}
  2856  		}
  2857  		fpvs.subPathValue.(DistributionBucketOptionsLinear_FieldPathValue).SetTo(&(*target).Options.(*Distribution_BucketOptions_LinearBuckets).LinearBuckets)
  2858  	case DistributionBucketOptions_FieldPathSelectorExponentialBuckets:
  2859  		if _, ok := (*target).Options.(*Distribution_BucketOptions_ExponentialBuckets); !ok {
  2860  			(*target).Options = &Distribution_BucketOptions_ExponentialBuckets{}
  2861  		}
  2862  		fpvs.subPathValue.(DistributionBucketOptionsExponential_FieldPathValue).SetTo(&(*target).Options.(*Distribution_BucketOptions_ExponentialBuckets).ExponentialBuckets)
  2863  	case DistributionBucketOptions_FieldPathSelectorExplicitBuckets:
  2864  		if _, ok := (*target).Options.(*Distribution_BucketOptions_ExplicitBuckets); !ok {
  2865  			(*target).Options = &Distribution_BucketOptions_ExplicitBuckets{}
  2866  		}
  2867  		fpvs.subPathValue.(DistributionBucketOptionsExplicit_FieldPathValue).SetTo(&(*target).Options.(*Distribution_BucketOptions_ExplicitBuckets).ExplicitBuckets)
  2868  	case DistributionBucketOptions_FieldPathSelectorDynamicBuckets:
  2869  		if _, ok := (*target).Options.(*Distribution_BucketOptions_DynamicBuckets); !ok {
  2870  			(*target).Options = &Distribution_BucketOptions_DynamicBuckets{}
  2871  		}
  2872  		fpvs.subPathValue.(DistributionBucketOptionsDynamic_FieldPathValue).SetTo(&(*target).Options.(*Distribution_BucketOptions_DynamicBuckets).DynamicBuckets)
  2873  	default:
  2874  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions: %d", fpvs.Selector()))
  2875  	}
  2876  }
  2877  
  2878  func (fpvs *DistributionBucketOptions_FieldSubPathValue) SetToRaw(target proto.Message) {
  2879  	typedObject := target.(*Distribution_BucketOptions)
  2880  	fpvs.SetTo(&typedObject)
  2881  }
  2882  
  2883  func (fpvs *DistributionBucketOptions_FieldSubPathValue) GetRawValue() interface{} {
  2884  	return fpvs.subPathValue.GetRawValue()
  2885  }
  2886  
  2887  func (fpvs *DistributionBucketOptions_FieldSubPathValue) CompareWith(source *Distribution_BucketOptions) (int, bool) {
  2888  	switch fpvs.Selector() {
  2889  	case DistributionBucketOptions_FieldPathSelectorLinearBuckets:
  2890  		return fpvs.subPathValue.(DistributionBucketOptionsLinear_FieldPathValue).CompareWith(source.GetLinearBuckets())
  2891  	case DistributionBucketOptions_FieldPathSelectorExponentialBuckets:
  2892  		return fpvs.subPathValue.(DistributionBucketOptionsExponential_FieldPathValue).CompareWith(source.GetExponentialBuckets())
  2893  	case DistributionBucketOptions_FieldPathSelectorExplicitBuckets:
  2894  		return fpvs.subPathValue.(DistributionBucketOptionsExplicit_FieldPathValue).CompareWith(source.GetExplicitBuckets())
  2895  	case DistributionBucketOptions_FieldPathSelectorDynamicBuckets:
  2896  		return fpvs.subPathValue.(DistributionBucketOptionsDynamic_FieldPathValue).CompareWith(source.GetDynamicBuckets())
  2897  	default:
  2898  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions: %d", fpvs.Selector()))
  2899  	}
  2900  }
  2901  
  2902  func (fpvs *DistributionBucketOptions_FieldSubPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  2903  	return fpvs.CompareWith(source.(*Distribution_BucketOptions))
  2904  }
  2905  
  2906  // DistributionBucketOptions_FieldPathArrayItemValue allows storing single item in Path-specific values for BucketOptions according to their type
  2907  // Present only for array (repeated) types.
  2908  type DistributionBucketOptions_FieldPathArrayItemValue interface {
  2909  	gotenobject.FieldPathArrayItemValue
  2910  	DistributionBucketOptions_FieldPath
  2911  	ContainsValue(*Distribution_BucketOptions) bool
  2912  }
  2913  
  2914  // ParseDistributionBucketOptions_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  2915  func ParseDistributionBucketOptions_FieldPathArrayItemValue(pathStr, valueStr string) (DistributionBucketOptions_FieldPathArrayItemValue, error) {
  2916  	fp, err := ParseDistributionBucketOptions_FieldPath(pathStr)
  2917  	if err != nil {
  2918  		return nil, err
  2919  	}
  2920  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  2921  	if err != nil {
  2922  		return nil, status.Errorf(codes.InvalidArgument, "error parsing BucketOptions field path array item value from %s: %v", valueStr, err)
  2923  	}
  2924  	return fpaiv.(DistributionBucketOptions_FieldPathArrayItemValue), nil
  2925  }
  2926  
  2927  func MustParseDistributionBucketOptions_FieldPathArrayItemValue(pathStr, valueStr string) DistributionBucketOptions_FieldPathArrayItemValue {
  2928  	fpaiv, err := ParseDistributionBucketOptions_FieldPathArrayItemValue(pathStr, valueStr)
  2929  	if err != nil {
  2930  		panic(err)
  2931  	}
  2932  	return fpaiv
  2933  }
  2934  
  2935  type DistributionBucketOptions_FieldTerminalPathArrayItemValue struct {
  2936  	DistributionBucketOptions_FieldTerminalPath
  2937  	value interface{}
  2938  }
  2939  
  2940  var _ DistributionBucketOptions_FieldPathArrayItemValue = (*DistributionBucketOptions_FieldTerminalPathArrayItemValue)(nil)
  2941  
  2942  // GetRawValue returns stored element value for array in object Distribution_BucketOptions as interface{}
  2943  func (fpaiv *DistributionBucketOptions_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  2944  	return fpaiv.value
  2945  }
  2946  
  2947  func (fpaiv *DistributionBucketOptions_FieldTerminalPathArrayItemValue) GetSingle(source *Distribution_BucketOptions) (interface{}, bool) {
  2948  	return nil, false
  2949  }
  2950  
  2951  func (fpaiv *DistributionBucketOptions_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  2952  	return fpaiv.GetSingle(source.(*Distribution_BucketOptions))
  2953  }
  2954  
  2955  // Contains returns a boolean indicating if value that is being held is present in given 'BucketOptions'
  2956  func (fpaiv *DistributionBucketOptions_FieldTerminalPathArrayItemValue) ContainsValue(source *Distribution_BucketOptions) bool {
  2957  	slice := fpaiv.DistributionBucketOptions_FieldTerminalPath.Get(source)
  2958  	for _, v := range slice {
  2959  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  2960  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  2961  				return true
  2962  			}
  2963  		} else if reflect.DeepEqual(v, fpaiv.value) {
  2964  			return true
  2965  		}
  2966  	}
  2967  	return false
  2968  }
  2969  
  2970  type DistributionBucketOptions_FieldSubPathArrayItemValue struct {
  2971  	DistributionBucketOptions_FieldPath
  2972  	subPathItemValue gotenobject.FieldPathArrayItemValue
  2973  }
  2974  
  2975  // GetRawValue returns stored array item value
  2976  func (fpaivs *DistributionBucketOptions_FieldSubPathArrayItemValue) GetRawItemValue() interface{} {
  2977  	return fpaivs.subPathItemValue.GetRawItemValue()
  2978  }
  2979  func (fpaivs *DistributionBucketOptions_FieldSubPathArrayItemValue) AsLinearBucketsPathItemValue() (DistributionBucketOptionsLinear_FieldPathArrayItemValue, bool) {
  2980  	res, ok := fpaivs.subPathItemValue.(DistributionBucketOptionsLinear_FieldPathArrayItemValue)
  2981  	return res, ok
  2982  }
  2983  func (fpaivs *DistributionBucketOptions_FieldSubPathArrayItemValue) AsExponentialBucketsPathItemValue() (DistributionBucketOptionsExponential_FieldPathArrayItemValue, bool) {
  2984  	res, ok := fpaivs.subPathItemValue.(DistributionBucketOptionsExponential_FieldPathArrayItemValue)
  2985  	return res, ok
  2986  }
  2987  func (fpaivs *DistributionBucketOptions_FieldSubPathArrayItemValue) AsExplicitBucketsPathItemValue() (DistributionBucketOptionsExplicit_FieldPathArrayItemValue, bool) {
  2988  	res, ok := fpaivs.subPathItemValue.(DistributionBucketOptionsExplicit_FieldPathArrayItemValue)
  2989  	return res, ok
  2990  }
  2991  func (fpaivs *DistributionBucketOptions_FieldSubPathArrayItemValue) AsDynamicBucketsPathItemValue() (DistributionBucketOptionsDynamic_FieldPathArrayItemValue, bool) {
  2992  	res, ok := fpaivs.subPathItemValue.(DistributionBucketOptionsDynamic_FieldPathArrayItemValue)
  2993  	return res, ok
  2994  }
  2995  
  2996  // Contains returns a boolean indicating if value that is being held is present in given 'BucketOptions'
  2997  func (fpaivs *DistributionBucketOptions_FieldSubPathArrayItemValue) ContainsValue(source *Distribution_BucketOptions) bool {
  2998  	switch fpaivs.Selector() {
  2999  	case DistributionBucketOptions_FieldPathSelectorLinearBuckets:
  3000  		return fpaivs.subPathItemValue.(DistributionBucketOptionsLinear_FieldPathArrayItemValue).ContainsValue(source.GetLinearBuckets())
  3001  	case DistributionBucketOptions_FieldPathSelectorExponentialBuckets:
  3002  		return fpaivs.subPathItemValue.(DistributionBucketOptionsExponential_FieldPathArrayItemValue).ContainsValue(source.GetExponentialBuckets())
  3003  	case DistributionBucketOptions_FieldPathSelectorExplicitBuckets:
  3004  		return fpaivs.subPathItemValue.(DistributionBucketOptionsExplicit_FieldPathArrayItemValue).ContainsValue(source.GetExplicitBuckets())
  3005  	case DistributionBucketOptions_FieldPathSelectorDynamicBuckets:
  3006  		return fpaivs.subPathItemValue.(DistributionBucketOptionsDynamic_FieldPathArrayItemValue).ContainsValue(source.GetDynamicBuckets())
  3007  	default:
  3008  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions: %d", fpaivs.Selector()))
  3009  	}
  3010  }
  3011  
  3012  // DistributionBucketOptions_FieldPathArrayOfValues allows storing slice of values for BucketOptions fields according to their type
  3013  type DistributionBucketOptions_FieldPathArrayOfValues interface {
  3014  	gotenobject.FieldPathArrayOfValues
  3015  	DistributionBucketOptions_FieldPath
  3016  }
  3017  
  3018  func ParseDistributionBucketOptions_FieldPathArrayOfValues(pathStr, valuesStr string) (DistributionBucketOptions_FieldPathArrayOfValues, error) {
  3019  	fp, err := ParseDistributionBucketOptions_FieldPath(pathStr)
  3020  	if err != nil {
  3021  		return nil, err
  3022  	}
  3023  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  3024  	if err != nil {
  3025  		return nil, status.Errorf(codes.InvalidArgument, "error parsing BucketOptions field path array of values from %s: %v", valuesStr, err)
  3026  	}
  3027  	return fpaov.(DistributionBucketOptions_FieldPathArrayOfValues), nil
  3028  }
  3029  
  3030  func MustParseDistributionBucketOptions_FieldPathArrayOfValues(pathStr, valuesStr string) DistributionBucketOptions_FieldPathArrayOfValues {
  3031  	fpaov, err := ParseDistributionBucketOptions_FieldPathArrayOfValues(pathStr, valuesStr)
  3032  	if err != nil {
  3033  		panic(err)
  3034  	}
  3035  	return fpaov
  3036  }
  3037  
  3038  type DistributionBucketOptions_FieldTerminalPathArrayOfValues struct {
  3039  	DistributionBucketOptions_FieldTerminalPath
  3040  	values interface{}
  3041  }
  3042  
  3043  var _ DistributionBucketOptions_FieldPathArrayOfValues = (*DistributionBucketOptions_FieldTerminalPathArrayOfValues)(nil)
  3044  
  3045  func (fpaov *DistributionBucketOptions_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  3046  	switch fpaov.selector {
  3047  	case DistributionBucketOptions_FieldPathSelectorLinearBuckets:
  3048  		for _, v := range fpaov.values.([]*Distribution_BucketOptions_Linear) {
  3049  			values = append(values, v)
  3050  		}
  3051  	case DistributionBucketOptions_FieldPathSelectorExponentialBuckets:
  3052  		for _, v := range fpaov.values.([]*Distribution_BucketOptions_Exponential) {
  3053  			values = append(values, v)
  3054  		}
  3055  	case DistributionBucketOptions_FieldPathSelectorExplicitBuckets:
  3056  		for _, v := range fpaov.values.([]*Distribution_BucketOptions_Explicit) {
  3057  			values = append(values, v)
  3058  		}
  3059  	case DistributionBucketOptions_FieldPathSelectorDynamicBuckets:
  3060  		for _, v := range fpaov.values.([]*Distribution_BucketOptions_Dynamic) {
  3061  			values = append(values, v)
  3062  		}
  3063  	}
  3064  	return
  3065  }
  3066  func (fpaov *DistributionBucketOptions_FieldTerminalPathArrayOfValues) AsLinearBucketsArrayOfValues() ([]*Distribution_BucketOptions_Linear, bool) {
  3067  	res, ok := fpaov.values.([]*Distribution_BucketOptions_Linear)
  3068  	return res, ok
  3069  }
  3070  func (fpaov *DistributionBucketOptions_FieldTerminalPathArrayOfValues) AsExponentialBucketsArrayOfValues() ([]*Distribution_BucketOptions_Exponential, bool) {
  3071  	res, ok := fpaov.values.([]*Distribution_BucketOptions_Exponential)
  3072  	return res, ok
  3073  }
  3074  func (fpaov *DistributionBucketOptions_FieldTerminalPathArrayOfValues) AsExplicitBucketsArrayOfValues() ([]*Distribution_BucketOptions_Explicit, bool) {
  3075  	res, ok := fpaov.values.([]*Distribution_BucketOptions_Explicit)
  3076  	return res, ok
  3077  }
  3078  func (fpaov *DistributionBucketOptions_FieldTerminalPathArrayOfValues) AsDynamicBucketsArrayOfValues() ([]*Distribution_BucketOptions_Dynamic, bool) {
  3079  	res, ok := fpaov.values.([]*Distribution_BucketOptions_Dynamic)
  3080  	return res, ok
  3081  }
  3082  
  3083  type DistributionBucketOptions_FieldSubPathArrayOfValues struct {
  3084  	DistributionBucketOptions_FieldPath
  3085  	subPathArrayOfValues gotenobject.FieldPathArrayOfValues
  3086  }
  3087  
  3088  var _ DistributionBucketOptions_FieldPathArrayOfValues = (*DistributionBucketOptions_FieldSubPathArrayOfValues)(nil)
  3089  
  3090  func (fpsaov *DistributionBucketOptions_FieldSubPathArrayOfValues) GetRawValues() []interface{} {
  3091  	return fpsaov.subPathArrayOfValues.GetRawValues()
  3092  }
  3093  func (fpsaov *DistributionBucketOptions_FieldSubPathArrayOfValues) AsLinearBucketsPathArrayOfValues() (DistributionBucketOptionsLinear_FieldPathArrayOfValues, bool) {
  3094  	res, ok := fpsaov.subPathArrayOfValues.(DistributionBucketOptionsLinear_FieldPathArrayOfValues)
  3095  	return res, ok
  3096  }
  3097  func (fpsaov *DistributionBucketOptions_FieldSubPathArrayOfValues) AsExponentialBucketsPathArrayOfValues() (DistributionBucketOptionsExponential_FieldPathArrayOfValues, bool) {
  3098  	res, ok := fpsaov.subPathArrayOfValues.(DistributionBucketOptionsExponential_FieldPathArrayOfValues)
  3099  	return res, ok
  3100  }
  3101  func (fpsaov *DistributionBucketOptions_FieldSubPathArrayOfValues) AsExplicitBucketsPathArrayOfValues() (DistributionBucketOptionsExplicit_FieldPathArrayOfValues, bool) {
  3102  	res, ok := fpsaov.subPathArrayOfValues.(DistributionBucketOptionsExplicit_FieldPathArrayOfValues)
  3103  	return res, ok
  3104  }
  3105  func (fpsaov *DistributionBucketOptions_FieldSubPathArrayOfValues) AsDynamicBucketsPathArrayOfValues() (DistributionBucketOptionsDynamic_FieldPathArrayOfValues, bool) {
  3106  	res, ok := fpsaov.subPathArrayOfValues.(DistributionBucketOptionsDynamic_FieldPathArrayOfValues)
  3107  	return res, ok
  3108  }
  3109  
  3110  // FieldPath provides implementation to handle
  3111  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  3112  type DistributionBucketOptionsLinear_FieldPath interface {
  3113  	gotenobject.FieldPath
  3114  	Selector() DistributionBucketOptionsLinear_FieldPathSelector
  3115  	Get(source *Distribution_BucketOptions_Linear) []interface{}
  3116  	GetSingle(source *Distribution_BucketOptions_Linear) (interface{}, bool)
  3117  	ClearValue(item *Distribution_BucketOptions_Linear)
  3118  
  3119  	// Those methods build corresponding DistributionBucketOptionsLinear_FieldPathValue
  3120  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
  3121  	WithIValue(value interface{}) DistributionBucketOptionsLinear_FieldPathValue
  3122  	WithIArrayOfValues(values interface{}) DistributionBucketOptionsLinear_FieldPathArrayOfValues
  3123  	WithIArrayItemValue(value interface{}) DistributionBucketOptionsLinear_FieldPathArrayItemValue
  3124  }
  3125  
  3126  type DistributionBucketOptionsLinear_FieldPathSelector int32
  3127  
  3128  const (
  3129  	DistributionBucketOptionsLinear_FieldPathSelectorNumFiniteBuckets DistributionBucketOptionsLinear_FieldPathSelector = 0
  3130  	DistributionBucketOptionsLinear_FieldPathSelectorWidth            DistributionBucketOptionsLinear_FieldPathSelector = 1
  3131  	DistributionBucketOptionsLinear_FieldPathSelectorOffset           DistributionBucketOptionsLinear_FieldPathSelector = 2
  3132  )
  3133  
  3134  func (s DistributionBucketOptionsLinear_FieldPathSelector) String() string {
  3135  	switch s {
  3136  	case DistributionBucketOptionsLinear_FieldPathSelectorNumFiniteBuckets:
  3137  		return "num_finite_buckets"
  3138  	case DistributionBucketOptionsLinear_FieldPathSelectorWidth:
  3139  		return "width"
  3140  	case DistributionBucketOptionsLinear_FieldPathSelectorOffset:
  3141  		return "offset"
  3142  	default:
  3143  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Linear: %d", s))
  3144  	}
  3145  }
  3146  
  3147  func BuildDistributionBucketOptionsLinear_FieldPath(fp gotenobject.RawFieldPath) (DistributionBucketOptionsLinear_FieldPath, error) {
  3148  	if len(fp) == 0 {
  3149  		return nil, status.Error(codes.InvalidArgument, "empty field path for object Distribution_BucketOptions_Linear")
  3150  	}
  3151  	if len(fp) == 1 {
  3152  		switch fp[0] {
  3153  		case "num_finite_buckets", "numFiniteBuckets", "num-finite-buckets":
  3154  			return &DistributionBucketOptionsLinear_FieldTerminalPath{selector: DistributionBucketOptionsLinear_FieldPathSelectorNumFiniteBuckets}, nil
  3155  		case "width":
  3156  			return &DistributionBucketOptionsLinear_FieldTerminalPath{selector: DistributionBucketOptionsLinear_FieldPathSelectorWidth}, nil
  3157  		case "offset":
  3158  			return &DistributionBucketOptionsLinear_FieldTerminalPath{selector: DistributionBucketOptionsLinear_FieldPathSelectorOffset}, nil
  3159  		}
  3160  	}
  3161  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object Distribution_BucketOptions_Linear", fp)
  3162  }
  3163  
  3164  func ParseDistributionBucketOptionsLinear_FieldPath(rawField string) (DistributionBucketOptionsLinear_FieldPath, error) {
  3165  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  3166  	if err != nil {
  3167  		return nil, err
  3168  	}
  3169  	return BuildDistributionBucketOptionsLinear_FieldPath(fp)
  3170  }
  3171  
  3172  func MustParseDistributionBucketOptionsLinear_FieldPath(rawField string) DistributionBucketOptionsLinear_FieldPath {
  3173  	fp, err := ParseDistributionBucketOptionsLinear_FieldPath(rawField)
  3174  	if err != nil {
  3175  		panic(err)
  3176  	}
  3177  	return fp
  3178  }
  3179  
  3180  type DistributionBucketOptionsLinear_FieldTerminalPath struct {
  3181  	selector DistributionBucketOptionsLinear_FieldPathSelector
  3182  }
  3183  
  3184  var _ DistributionBucketOptionsLinear_FieldPath = (*DistributionBucketOptionsLinear_FieldTerminalPath)(nil)
  3185  
  3186  func (fp *DistributionBucketOptionsLinear_FieldTerminalPath) Selector() DistributionBucketOptionsLinear_FieldPathSelector {
  3187  	return fp.selector
  3188  }
  3189  
  3190  // String returns path representation in proto convention
  3191  func (fp *DistributionBucketOptionsLinear_FieldTerminalPath) String() string {
  3192  	return fp.selector.String()
  3193  }
  3194  
  3195  // JSONString returns path representation is JSON convention
  3196  func (fp *DistributionBucketOptionsLinear_FieldTerminalPath) JSONString() string {
  3197  	return strcase.ToLowerCamel(fp.String())
  3198  }
  3199  
  3200  // Get returns all values pointed by specific field from source Distribution_BucketOptions_Linear
  3201  func (fp *DistributionBucketOptionsLinear_FieldTerminalPath) Get(source *Distribution_BucketOptions_Linear) (values []interface{}) {
  3202  	if source != nil {
  3203  		switch fp.selector {
  3204  		case DistributionBucketOptionsLinear_FieldPathSelectorNumFiniteBuckets:
  3205  			values = append(values, source.NumFiniteBuckets)
  3206  		case DistributionBucketOptionsLinear_FieldPathSelectorWidth:
  3207  			values = append(values, source.Width)
  3208  		case DistributionBucketOptionsLinear_FieldPathSelectorOffset:
  3209  			values = append(values, source.Offset)
  3210  		default:
  3211  			panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Linear: %d", fp.selector))
  3212  		}
  3213  	}
  3214  	return
  3215  }
  3216  
  3217  func (fp *DistributionBucketOptionsLinear_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  3218  	return fp.Get(source.(*Distribution_BucketOptions_Linear))
  3219  }
  3220  
  3221  // GetSingle returns value pointed by specific field of from source Distribution_BucketOptions_Linear
  3222  func (fp *DistributionBucketOptionsLinear_FieldTerminalPath) GetSingle(source *Distribution_BucketOptions_Linear) (interface{}, bool) {
  3223  	switch fp.selector {
  3224  	case DistributionBucketOptionsLinear_FieldPathSelectorNumFiniteBuckets:
  3225  		return source.GetNumFiniteBuckets(), source != nil
  3226  	case DistributionBucketOptionsLinear_FieldPathSelectorWidth:
  3227  		return source.GetWidth(), source != nil
  3228  	case DistributionBucketOptionsLinear_FieldPathSelectorOffset:
  3229  		return source.GetOffset(), source != nil
  3230  	default:
  3231  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Linear: %d", fp.selector))
  3232  	}
  3233  }
  3234  
  3235  func (fp *DistributionBucketOptionsLinear_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  3236  	return fp.GetSingle(source.(*Distribution_BucketOptions_Linear))
  3237  }
  3238  
  3239  // GetDefault returns a default value of the field type
  3240  func (fp *DistributionBucketOptionsLinear_FieldTerminalPath) GetDefault() interface{} {
  3241  	switch fp.selector {
  3242  	case DistributionBucketOptionsLinear_FieldPathSelectorNumFiniteBuckets:
  3243  		return int32(0)
  3244  	case DistributionBucketOptionsLinear_FieldPathSelectorWidth:
  3245  		return float64(0)
  3246  	case DistributionBucketOptionsLinear_FieldPathSelectorOffset:
  3247  		return float64(0)
  3248  	default:
  3249  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Linear: %d", fp.selector))
  3250  	}
  3251  }
  3252  
  3253  func (fp *DistributionBucketOptionsLinear_FieldTerminalPath) ClearValue(item *Distribution_BucketOptions_Linear) {
  3254  	if item != nil {
  3255  		switch fp.selector {
  3256  		case DistributionBucketOptionsLinear_FieldPathSelectorNumFiniteBuckets:
  3257  			item.NumFiniteBuckets = int32(0)
  3258  		case DistributionBucketOptionsLinear_FieldPathSelectorWidth:
  3259  			item.Width = float64(0)
  3260  		case DistributionBucketOptionsLinear_FieldPathSelectorOffset:
  3261  			item.Offset = float64(0)
  3262  		default:
  3263  			panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Linear: %d", fp.selector))
  3264  		}
  3265  	}
  3266  }
  3267  
  3268  func (fp *DistributionBucketOptionsLinear_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  3269  	fp.ClearValue(item.(*Distribution_BucketOptions_Linear))
  3270  }
  3271  
  3272  // IsLeaf - whether field path is holds simple value
  3273  func (fp *DistributionBucketOptionsLinear_FieldTerminalPath) IsLeaf() bool {
  3274  	return fp.selector == DistributionBucketOptionsLinear_FieldPathSelectorNumFiniteBuckets ||
  3275  		fp.selector == DistributionBucketOptionsLinear_FieldPathSelectorWidth ||
  3276  		fp.selector == DistributionBucketOptionsLinear_FieldPathSelectorOffset
  3277  }
  3278  
  3279  func (fp *DistributionBucketOptionsLinear_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  3280  	return []gotenobject.FieldPath{fp}
  3281  }
  3282  
  3283  func (fp *DistributionBucketOptionsLinear_FieldTerminalPath) WithIValue(value interface{}) DistributionBucketOptionsLinear_FieldPathValue {
  3284  	switch fp.selector {
  3285  	case DistributionBucketOptionsLinear_FieldPathSelectorNumFiniteBuckets:
  3286  		return &DistributionBucketOptionsLinear_FieldTerminalPathValue{DistributionBucketOptionsLinear_FieldTerminalPath: *fp, value: value.(int32)}
  3287  	case DistributionBucketOptionsLinear_FieldPathSelectorWidth:
  3288  		return &DistributionBucketOptionsLinear_FieldTerminalPathValue{DistributionBucketOptionsLinear_FieldTerminalPath: *fp, value: value.(float64)}
  3289  	case DistributionBucketOptionsLinear_FieldPathSelectorOffset:
  3290  		return &DistributionBucketOptionsLinear_FieldTerminalPathValue{DistributionBucketOptionsLinear_FieldTerminalPath: *fp, value: value.(float64)}
  3291  	default:
  3292  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Linear: %d", fp.selector))
  3293  	}
  3294  }
  3295  
  3296  func (fp *DistributionBucketOptionsLinear_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  3297  	return fp.WithIValue(value)
  3298  }
  3299  
  3300  func (fp *DistributionBucketOptionsLinear_FieldTerminalPath) WithIArrayOfValues(values interface{}) DistributionBucketOptionsLinear_FieldPathArrayOfValues {
  3301  	fpaov := &DistributionBucketOptionsLinear_FieldTerminalPathArrayOfValues{DistributionBucketOptionsLinear_FieldTerminalPath: *fp}
  3302  	switch fp.selector {
  3303  	case DistributionBucketOptionsLinear_FieldPathSelectorNumFiniteBuckets:
  3304  		return &DistributionBucketOptionsLinear_FieldTerminalPathArrayOfValues{DistributionBucketOptionsLinear_FieldTerminalPath: *fp, values: values.([]int32)}
  3305  	case DistributionBucketOptionsLinear_FieldPathSelectorWidth:
  3306  		return &DistributionBucketOptionsLinear_FieldTerminalPathArrayOfValues{DistributionBucketOptionsLinear_FieldTerminalPath: *fp, values: values.([]float64)}
  3307  	case DistributionBucketOptionsLinear_FieldPathSelectorOffset:
  3308  		return &DistributionBucketOptionsLinear_FieldTerminalPathArrayOfValues{DistributionBucketOptionsLinear_FieldTerminalPath: *fp, values: values.([]float64)}
  3309  	default:
  3310  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Linear: %d", fp.selector))
  3311  	}
  3312  	return fpaov
  3313  }
  3314  
  3315  func (fp *DistributionBucketOptionsLinear_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  3316  	return fp.WithIArrayOfValues(values)
  3317  }
  3318  
  3319  func (fp *DistributionBucketOptionsLinear_FieldTerminalPath) WithIArrayItemValue(value interface{}) DistributionBucketOptionsLinear_FieldPathArrayItemValue {
  3320  	switch fp.selector {
  3321  	default:
  3322  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Linear: %d", fp.selector))
  3323  	}
  3324  }
  3325  
  3326  func (fp *DistributionBucketOptionsLinear_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  3327  	return fp.WithIArrayItemValue(value)
  3328  }
  3329  
  3330  // DistributionBucketOptionsLinear_FieldPathValue allows storing values for Linear fields according to their type
  3331  type DistributionBucketOptionsLinear_FieldPathValue interface {
  3332  	DistributionBucketOptionsLinear_FieldPath
  3333  	gotenobject.FieldPathValue
  3334  	SetTo(target **Distribution_BucketOptions_Linear)
  3335  	CompareWith(*Distribution_BucketOptions_Linear) (cmp int, comparable bool)
  3336  }
  3337  
  3338  func ParseDistributionBucketOptionsLinear_FieldPathValue(pathStr, valueStr string) (DistributionBucketOptionsLinear_FieldPathValue, error) {
  3339  	fp, err := ParseDistributionBucketOptionsLinear_FieldPath(pathStr)
  3340  	if err != nil {
  3341  		return nil, err
  3342  	}
  3343  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  3344  	if err != nil {
  3345  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Linear field path value from %s: %v", valueStr, err)
  3346  	}
  3347  	return fpv.(DistributionBucketOptionsLinear_FieldPathValue), nil
  3348  }
  3349  
  3350  func MustParseDistributionBucketOptionsLinear_FieldPathValue(pathStr, valueStr string) DistributionBucketOptionsLinear_FieldPathValue {
  3351  	fpv, err := ParseDistributionBucketOptionsLinear_FieldPathValue(pathStr, valueStr)
  3352  	if err != nil {
  3353  		panic(err)
  3354  	}
  3355  	return fpv
  3356  }
  3357  
  3358  type DistributionBucketOptionsLinear_FieldTerminalPathValue struct {
  3359  	DistributionBucketOptionsLinear_FieldTerminalPath
  3360  	value interface{}
  3361  }
  3362  
  3363  var _ DistributionBucketOptionsLinear_FieldPathValue = (*DistributionBucketOptionsLinear_FieldTerminalPathValue)(nil)
  3364  
  3365  // GetRawValue returns raw value stored under selected path for 'Linear' as interface{}
  3366  func (fpv *DistributionBucketOptionsLinear_FieldTerminalPathValue) GetRawValue() interface{} {
  3367  	return fpv.value
  3368  }
  3369  func (fpv *DistributionBucketOptionsLinear_FieldTerminalPathValue) AsNumFiniteBucketsValue() (int32, bool) {
  3370  	res, ok := fpv.value.(int32)
  3371  	return res, ok
  3372  }
  3373  func (fpv *DistributionBucketOptionsLinear_FieldTerminalPathValue) AsWidthValue() (float64, bool) {
  3374  	res, ok := fpv.value.(float64)
  3375  	return res, ok
  3376  }
  3377  func (fpv *DistributionBucketOptionsLinear_FieldTerminalPathValue) AsOffsetValue() (float64, bool) {
  3378  	res, ok := fpv.value.(float64)
  3379  	return res, ok
  3380  }
  3381  
  3382  // SetTo stores value for selected field for object Linear
  3383  func (fpv *DistributionBucketOptionsLinear_FieldTerminalPathValue) SetTo(target **Distribution_BucketOptions_Linear) {
  3384  	if *target == nil {
  3385  		*target = new(Distribution_BucketOptions_Linear)
  3386  	}
  3387  	switch fpv.selector {
  3388  	case DistributionBucketOptionsLinear_FieldPathSelectorNumFiniteBuckets:
  3389  		(*target).NumFiniteBuckets = fpv.value.(int32)
  3390  	case DistributionBucketOptionsLinear_FieldPathSelectorWidth:
  3391  		(*target).Width = fpv.value.(float64)
  3392  	case DistributionBucketOptionsLinear_FieldPathSelectorOffset:
  3393  		(*target).Offset = fpv.value.(float64)
  3394  	default:
  3395  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Linear: %d", fpv.selector))
  3396  	}
  3397  }
  3398  
  3399  func (fpv *DistributionBucketOptionsLinear_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  3400  	typedObject := target.(*Distribution_BucketOptions_Linear)
  3401  	fpv.SetTo(&typedObject)
  3402  }
  3403  
  3404  // CompareWith compares value in the 'DistributionBucketOptionsLinear_FieldTerminalPathValue' with the value under path in 'Distribution_BucketOptions_Linear'.
  3405  func (fpv *DistributionBucketOptionsLinear_FieldTerminalPathValue) CompareWith(source *Distribution_BucketOptions_Linear) (int, bool) {
  3406  	switch fpv.selector {
  3407  	case DistributionBucketOptionsLinear_FieldPathSelectorNumFiniteBuckets:
  3408  		leftValue := fpv.value.(int32)
  3409  		rightValue := source.GetNumFiniteBuckets()
  3410  		if (leftValue) == (rightValue) {
  3411  			return 0, true
  3412  		} else if (leftValue) < (rightValue) {
  3413  			return -1, true
  3414  		} else {
  3415  			return 1, true
  3416  		}
  3417  	case DistributionBucketOptionsLinear_FieldPathSelectorWidth:
  3418  		leftValue := fpv.value.(float64)
  3419  		rightValue := source.GetWidth()
  3420  		if (leftValue) == (rightValue) {
  3421  			return 0, true
  3422  		} else if (leftValue) < (rightValue) {
  3423  			return -1, true
  3424  		} else {
  3425  			return 1, true
  3426  		}
  3427  	case DistributionBucketOptionsLinear_FieldPathSelectorOffset:
  3428  		leftValue := fpv.value.(float64)
  3429  		rightValue := source.GetOffset()
  3430  		if (leftValue) == (rightValue) {
  3431  			return 0, true
  3432  		} else if (leftValue) < (rightValue) {
  3433  			return -1, true
  3434  		} else {
  3435  			return 1, true
  3436  		}
  3437  	default:
  3438  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Linear: %d", fpv.selector))
  3439  	}
  3440  }
  3441  
  3442  func (fpv *DistributionBucketOptionsLinear_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  3443  	return fpv.CompareWith(source.(*Distribution_BucketOptions_Linear))
  3444  }
  3445  
  3446  // DistributionBucketOptionsLinear_FieldPathArrayItemValue allows storing single item in Path-specific values for Linear according to their type
  3447  // Present only for array (repeated) types.
  3448  type DistributionBucketOptionsLinear_FieldPathArrayItemValue interface {
  3449  	gotenobject.FieldPathArrayItemValue
  3450  	DistributionBucketOptionsLinear_FieldPath
  3451  	ContainsValue(*Distribution_BucketOptions_Linear) bool
  3452  }
  3453  
  3454  // ParseDistributionBucketOptionsLinear_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  3455  func ParseDistributionBucketOptionsLinear_FieldPathArrayItemValue(pathStr, valueStr string) (DistributionBucketOptionsLinear_FieldPathArrayItemValue, error) {
  3456  	fp, err := ParseDistributionBucketOptionsLinear_FieldPath(pathStr)
  3457  	if err != nil {
  3458  		return nil, err
  3459  	}
  3460  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  3461  	if err != nil {
  3462  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Linear field path array item value from %s: %v", valueStr, err)
  3463  	}
  3464  	return fpaiv.(DistributionBucketOptionsLinear_FieldPathArrayItemValue), nil
  3465  }
  3466  
  3467  func MustParseDistributionBucketOptionsLinear_FieldPathArrayItemValue(pathStr, valueStr string) DistributionBucketOptionsLinear_FieldPathArrayItemValue {
  3468  	fpaiv, err := ParseDistributionBucketOptionsLinear_FieldPathArrayItemValue(pathStr, valueStr)
  3469  	if err != nil {
  3470  		panic(err)
  3471  	}
  3472  	return fpaiv
  3473  }
  3474  
  3475  type DistributionBucketOptionsLinear_FieldTerminalPathArrayItemValue struct {
  3476  	DistributionBucketOptionsLinear_FieldTerminalPath
  3477  	value interface{}
  3478  }
  3479  
  3480  var _ DistributionBucketOptionsLinear_FieldPathArrayItemValue = (*DistributionBucketOptionsLinear_FieldTerminalPathArrayItemValue)(nil)
  3481  
  3482  // GetRawValue returns stored element value for array in object Distribution_BucketOptions_Linear as interface{}
  3483  func (fpaiv *DistributionBucketOptionsLinear_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  3484  	return fpaiv.value
  3485  }
  3486  
  3487  func (fpaiv *DistributionBucketOptionsLinear_FieldTerminalPathArrayItemValue) GetSingle(source *Distribution_BucketOptions_Linear) (interface{}, bool) {
  3488  	return nil, false
  3489  }
  3490  
  3491  func (fpaiv *DistributionBucketOptionsLinear_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  3492  	return fpaiv.GetSingle(source.(*Distribution_BucketOptions_Linear))
  3493  }
  3494  
  3495  // Contains returns a boolean indicating if value that is being held is present in given 'Linear'
  3496  func (fpaiv *DistributionBucketOptionsLinear_FieldTerminalPathArrayItemValue) ContainsValue(source *Distribution_BucketOptions_Linear) bool {
  3497  	slice := fpaiv.DistributionBucketOptionsLinear_FieldTerminalPath.Get(source)
  3498  	for _, v := range slice {
  3499  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  3500  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  3501  				return true
  3502  			}
  3503  		} else if reflect.DeepEqual(v, fpaiv.value) {
  3504  			return true
  3505  		}
  3506  	}
  3507  	return false
  3508  }
  3509  
  3510  // DistributionBucketOptionsLinear_FieldPathArrayOfValues allows storing slice of values for Linear fields according to their type
  3511  type DistributionBucketOptionsLinear_FieldPathArrayOfValues interface {
  3512  	gotenobject.FieldPathArrayOfValues
  3513  	DistributionBucketOptionsLinear_FieldPath
  3514  }
  3515  
  3516  func ParseDistributionBucketOptionsLinear_FieldPathArrayOfValues(pathStr, valuesStr string) (DistributionBucketOptionsLinear_FieldPathArrayOfValues, error) {
  3517  	fp, err := ParseDistributionBucketOptionsLinear_FieldPath(pathStr)
  3518  	if err != nil {
  3519  		return nil, err
  3520  	}
  3521  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  3522  	if err != nil {
  3523  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Linear field path array of values from %s: %v", valuesStr, err)
  3524  	}
  3525  	return fpaov.(DistributionBucketOptionsLinear_FieldPathArrayOfValues), nil
  3526  }
  3527  
  3528  func MustParseDistributionBucketOptionsLinear_FieldPathArrayOfValues(pathStr, valuesStr string) DistributionBucketOptionsLinear_FieldPathArrayOfValues {
  3529  	fpaov, err := ParseDistributionBucketOptionsLinear_FieldPathArrayOfValues(pathStr, valuesStr)
  3530  	if err != nil {
  3531  		panic(err)
  3532  	}
  3533  	return fpaov
  3534  }
  3535  
  3536  type DistributionBucketOptionsLinear_FieldTerminalPathArrayOfValues struct {
  3537  	DistributionBucketOptionsLinear_FieldTerminalPath
  3538  	values interface{}
  3539  }
  3540  
  3541  var _ DistributionBucketOptionsLinear_FieldPathArrayOfValues = (*DistributionBucketOptionsLinear_FieldTerminalPathArrayOfValues)(nil)
  3542  
  3543  func (fpaov *DistributionBucketOptionsLinear_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  3544  	switch fpaov.selector {
  3545  	case DistributionBucketOptionsLinear_FieldPathSelectorNumFiniteBuckets:
  3546  		for _, v := range fpaov.values.([]int32) {
  3547  			values = append(values, v)
  3548  		}
  3549  	case DistributionBucketOptionsLinear_FieldPathSelectorWidth:
  3550  		for _, v := range fpaov.values.([]float64) {
  3551  			values = append(values, v)
  3552  		}
  3553  	case DistributionBucketOptionsLinear_FieldPathSelectorOffset:
  3554  		for _, v := range fpaov.values.([]float64) {
  3555  			values = append(values, v)
  3556  		}
  3557  	}
  3558  	return
  3559  }
  3560  func (fpaov *DistributionBucketOptionsLinear_FieldTerminalPathArrayOfValues) AsNumFiniteBucketsArrayOfValues() ([]int32, bool) {
  3561  	res, ok := fpaov.values.([]int32)
  3562  	return res, ok
  3563  }
  3564  func (fpaov *DistributionBucketOptionsLinear_FieldTerminalPathArrayOfValues) AsWidthArrayOfValues() ([]float64, bool) {
  3565  	res, ok := fpaov.values.([]float64)
  3566  	return res, ok
  3567  }
  3568  func (fpaov *DistributionBucketOptionsLinear_FieldTerminalPathArrayOfValues) AsOffsetArrayOfValues() ([]float64, bool) {
  3569  	res, ok := fpaov.values.([]float64)
  3570  	return res, ok
  3571  }
  3572  
  3573  // FieldPath provides implementation to handle
  3574  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  3575  type DistributionBucketOptionsExponential_FieldPath interface {
  3576  	gotenobject.FieldPath
  3577  	Selector() DistributionBucketOptionsExponential_FieldPathSelector
  3578  	Get(source *Distribution_BucketOptions_Exponential) []interface{}
  3579  	GetSingle(source *Distribution_BucketOptions_Exponential) (interface{}, bool)
  3580  	ClearValue(item *Distribution_BucketOptions_Exponential)
  3581  
  3582  	// Those methods build corresponding DistributionBucketOptionsExponential_FieldPathValue
  3583  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
  3584  	WithIValue(value interface{}) DistributionBucketOptionsExponential_FieldPathValue
  3585  	WithIArrayOfValues(values interface{}) DistributionBucketOptionsExponential_FieldPathArrayOfValues
  3586  	WithIArrayItemValue(value interface{}) DistributionBucketOptionsExponential_FieldPathArrayItemValue
  3587  }
  3588  
  3589  type DistributionBucketOptionsExponential_FieldPathSelector int32
  3590  
  3591  const (
  3592  	DistributionBucketOptionsExponential_FieldPathSelectorNumFiniteBuckets DistributionBucketOptionsExponential_FieldPathSelector = 0
  3593  	DistributionBucketOptionsExponential_FieldPathSelectorGrowthFactor     DistributionBucketOptionsExponential_FieldPathSelector = 1
  3594  	DistributionBucketOptionsExponential_FieldPathSelectorScale            DistributionBucketOptionsExponential_FieldPathSelector = 2
  3595  )
  3596  
  3597  func (s DistributionBucketOptionsExponential_FieldPathSelector) String() string {
  3598  	switch s {
  3599  	case DistributionBucketOptionsExponential_FieldPathSelectorNumFiniteBuckets:
  3600  		return "num_finite_buckets"
  3601  	case DistributionBucketOptionsExponential_FieldPathSelectorGrowthFactor:
  3602  		return "growth_factor"
  3603  	case DistributionBucketOptionsExponential_FieldPathSelectorScale:
  3604  		return "scale"
  3605  	default:
  3606  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Exponential: %d", s))
  3607  	}
  3608  }
  3609  
  3610  func BuildDistributionBucketOptionsExponential_FieldPath(fp gotenobject.RawFieldPath) (DistributionBucketOptionsExponential_FieldPath, error) {
  3611  	if len(fp) == 0 {
  3612  		return nil, status.Error(codes.InvalidArgument, "empty field path for object Distribution_BucketOptions_Exponential")
  3613  	}
  3614  	if len(fp) == 1 {
  3615  		switch fp[0] {
  3616  		case "num_finite_buckets", "numFiniteBuckets", "num-finite-buckets":
  3617  			return &DistributionBucketOptionsExponential_FieldTerminalPath{selector: DistributionBucketOptionsExponential_FieldPathSelectorNumFiniteBuckets}, nil
  3618  		case "growth_factor", "growthFactor", "growth-factor":
  3619  			return &DistributionBucketOptionsExponential_FieldTerminalPath{selector: DistributionBucketOptionsExponential_FieldPathSelectorGrowthFactor}, nil
  3620  		case "scale":
  3621  			return &DistributionBucketOptionsExponential_FieldTerminalPath{selector: DistributionBucketOptionsExponential_FieldPathSelectorScale}, nil
  3622  		}
  3623  	}
  3624  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object Distribution_BucketOptions_Exponential", fp)
  3625  }
  3626  
  3627  func ParseDistributionBucketOptionsExponential_FieldPath(rawField string) (DistributionBucketOptionsExponential_FieldPath, error) {
  3628  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  3629  	if err != nil {
  3630  		return nil, err
  3631  	}
  3632  	return BuildDistributionBucketOptionsExponential_FieldPath(fp)
  3633  }
  3634  
  3635  func MustParseDistributionBucketOptionsExponential_FieldPath(rawField string) DistributionBucketOptionsExponential_FieldPath {
  3636  	fp, err := ParseDistributionBucketOptionsExponential_FieldPath(rawField)
  3637  	if err != nil {
  3638  		panic(err)
  3639  	}
  3640  	return fp
  3641  }
  3642  
  3643  type DistributionBucketOptionsExponential_FieldTerminalPath struct {
  3644  	selector DistributionBucketOptionsExponential_FieldPathSelector
  3645  }
  3646  
  3647  var _ DistributionBucketOptionsExponential_FieldPath = (*DistributionBucketOptionsExponential_FieldTerminalPath)(nil)
  3648  
  3649  func (fp *DistributionBucketOptionsExponential_FieldTerminalPath) Selector() DistributionBucketOptionsExponential_FieldPathSelector {
  3650  	return fp.selector
  3651  }
  3652  
  3653  // String returns path representation in proto convention
  3654  func (fp *DistributionBucketOptionsExponential_FieldTerminalPath) String() string {
  3655  	return fp.selector.String()
  3656  }
  3657  
  3658  // JSONString returns path representation is JSON convention
  3659  func (fp *DistributionBucketOptionsExponential_FieldTerminalPath) JSONString() string {
  3660  	return strcase.ToLowerCamel(fp.String())
  3661  }
  3662  
  3663  // Get returns all values pointed by specific field from source Distribution_BucketOptions_Exponential
  3664  func (fp *DistributionBucketOptionsExponential_FieldTerminalPath) Get(source *Distribution_BucketOptions_Exponential) (values []interface{}) {
  3665  	if source != nil {
  3666  		switch fp.selector {
  3667  		case DistributionBucketOptionsExponential_FieldPathSelectorNumFiniteBuckets:
  3668  			values = append(values, source.NumFiniteBuckets)
  3669  		case DistributionBucketOptionsExponential_FieldPathSelectorGrowthFactor:
  3670  			values = append(values, source.GrowthFactor)
  3671  		case DistributionBucketOptionsExponential_FieldPathSelectorScale:
  3672  			values = append(values, source.Scale)
  3673  		default:
  3674  			panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Exponential: %d", fp.selector))
  3675  		}
  3676  	}
  3677  	return
  3678  }
  3679  
  3680  func (fp *DistributionBucketOptionsExponential_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  3681  	return fp.Get(source.(*Distribution_BucketOptions_Exponential))
  3682  }
  3683  
  3684  // GetSingle returns value pointed by specific field of from source Distribution_BucketOptions_Exponential
  3685  func (fp *DistributionBucketOptionsExponential_FieldTerminalPath) GetSingle(source *Distribution_BucketOptions_Exponential) (interface{}, bool) {
  3686  	switch fp.selector {
  3687  	case DistributionBucketOptionsExponential_FieldPathSelectorNumFiniteBuckets:
  3688  		return source.GetNumFiniteBuckets(), source != nil
  3689  	case DistributionBucketOptionsExponential_FieldPathSelectorGrowthFactor:
  3690  		return source.GetGrowthFactor(), source != nil
  3691  	case DistributionBucketOptionsExponential_FieldPathSelectorScale:
  3692  		return source.GetScale(), source != nil
  3693  	default:
  3694  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Exponential: %d", fp.selector))
  3695  	}
  3696  }
  3697  
  3698  func (fp *DistributionBucketOptionsExponential_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  3699  	return fp.GetSingle(source.(*Distribution_BucketOptions_Exponential))
  3700  }
  3701  
  3702  // GetDefault returns a default value of the field type
  3703  func (fp *DistributionBucketOptionsExponential_FieldTerminalPath) GetDefault() interface{} {
  3704  	switch fp.selector {
  3705  	case DistributionBucketOptionsExponential_FieldPathSelectorNumFiniteBuckets:
  3706  		return int32(0)
  3707  	case DistributionBucketOptionsExponential_FieldPathSelectorGrowthFactor:
  3708  		return float64(0)
  3709  	case DistributionBucketOptionsExponential_FieldPathSelectorScale:
  3710  		return float64(0)
  3711  	default:
  3712  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Exponential: %d", fp.selector))
  3713  	}
  3714  }
  3715  
  3716  func (fp *DistributionBucketOptionsExponential_FieldTerminalPath) ClearValue(item *Distribution_BucketOptions_Exponential) {
  3717  	if item != nil {
  3718  		switch fp.selector {
  3719  		case DistributionBucketOptionsExponential_FieldPathSelectorNumFiniteBuckets:
  3720  			item.NumFiniteBuckets = int32(0)
  3721  		case DistributionBucketOptionsExponential_FieldPathSelectorGrowthFactor:
  3722  			item.GrowthFactor = float64(0)
  3723  		case DistributionBucketOptionsExponential_FieldPathSelectorScale:
  3724  			item.Scale = float64(0)
  3725  		default:
  3726  			panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Exponential: %d", fp.selector))
  3727  		}
  3728  	}
  3729  }
  3730  
  3731  func (fp *DistributionBucketOptionsExponential_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  3732  	fp.ClearValue(item.(*Distribution_BucketOptions_Exponential))
  3733  }
  3734  
  3735  // IsLeaf - whether field path is holds simple value
  3736  func (fp *DistributionBucketOptionsExponential_FieldTerminalPath) IsLeaf() bool {
  3737  	return fp.selector == DistributionBucketOptionsExponential_FieldPathSelectorNumFiniteBuckets ||
  3738  		fp.selector == DistributionBucketOptionsExponential_FieldPathSelectorGrowthFactor ||
  3739  		fp.selector == DistributionBucketOptionsExponential_FieldPathSelectorScale
  3740  }
  3741  
  3742  func (fp *DistributionBucketOptionsExponential_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  3743  	return []gotenobject.FieldPath{fp}
  3744  }
  3745  
  3746  func (fp *DistributionBucketOptionsExponential_FieldTerminalPath) WithIValue(value interface{}) DistributionBucketOptionsExponential_FieldPathValue {
  3747  	switch fp.selector {
  3748  	case DistributionBucketOptionsExponential_FieldPathSelectorNumFiniteBuckets:
  3749  		return &DistributionBucketOptionsExponential_FieldTerminalPathValue{DistributionBucketOptionsExponential_FieldTerminalPath: *fp, value: value.(int32)}
  3750  	case DistributionBucketOptionsExponential_FieldPathSelectorGrowthFactor:
  3751  		return &DistributionBucketOptionsExponential_FieldTerminalPathValue{DistributionBucketOptionsExponential_FieldTerminalPath: *fp, value: value.(float64)}
  3752  	case DistributionBucketOptionsExponential_FieldPathSelectorScale:
  3753  		return &DistributionBucketOptionsExponential_FieldTerminalPathValue{DistributionBucketOptionsExponential_FieldTerminalPath: *fp, value: value.(float64)}
  3754  	default:
  3755  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Exponential: %d", fp.selector))
  3756  	}
  3757  }
  3758  
  3759  func (fp *DistributionBucketOptionsExponential_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  3760  	return fp.WithIValue(value)
  3761  }
  3762  
  3763  func (fp *DistributionBucketOptionsExponential_FieldTerminalPath) WithIArrayOfValues(values interface{}) DistributionBucketOptionsExponential_FieldPathArrayOfValues {
  3764  	fpaov := &DistributionBucketOptionsExponential_FieldTerminalPathArrayOfValues{DistributionBucketOptionsExponential_FieldTerminalPath: *fp}
  3765  	switch fp.selector {
  3766  	case DistributionBucketOptionsExponential_FieldPathSelectorNumFiniteBuckets:
  3767  		return &DistributionBucketOptionsExponential_FieldTerminalPathArrayOfValues{DistributionBucketOptionsExponential_FieldTerminalPath: *fp, values: values.([]int32)}
  3768  	case DistributionBucketOptionsExponential_FieldPathSelectorGrowthFactor:
  3769  		return &DistributionBucketOptionsExponential_FieldTerminalPathArrayOfValues{DistributionBucketOptionsExponential_FieldTerminalPath: *fp, values: values.([]float64)}
  3770  	case DistributionBucketOptionsExponential_FieldPathSelectorScale:
  3771  		return &DistributionBucketOptionsExponential_FieldTerminalPathArrayOfValues{DistributionBucketOptionsExponential_FieldTerminalPath: *fp, values: values.([]float64)}
  3772  	default:
  3773  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Exponential: %d", fp.selector))
  3774  	}
  3775  	return fpaov
  3776  }
  3777  
  3778  func (fp *DistributionBucketOptionsExponential_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  3779  	return fp.WithIArrayOfValues(values)
  3780  }
  3781  
  3782  func (fp *DistributionBucketOptionsExponential_FieldTerminalPath) WithIArrayItemValue(value interface{}) DistributionBucketOptionsExponential_FieldPathArrayItemValue {
  3783  	switch fp.selector {
  3784  	default:
  3785  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Exponential: %d", fp.selector))
  3786  	}
  3787  }
  3788  
  3789  func (fp *DistributionBucketOptionsExponential_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  3790  	return fp.WithIArrayItemValue(value)
  3791  }
  3792  
  3793  // DistributionBucketOptionsExponential_FieldPathValue allows storing values for Exponential fields according to their type
  3794  type DistributionBucketOptionsExponential_FieldPathValue interface {
  3795  	DistributionBucketOptionsExponential_FieldPath
  3796  	gotenobject.FieldPathValue
  3797  	SetTo(target **Distribution_BucketOptions_Exponential)
  3798  	CompareWith(*Distribution_BucketOptions_Exponential) (cmp int, comparable bool)
  3799  }
  3800  
  3801  func ParseDistributionBucketOptionsExponential_FieldPathValue(pathStr, valueStr string) (DistributionBucketOptionsExponential_FieldPathValue, error) {
  3802  	fp, err := ParseDistributionBucketOptionsExponential_FieldPath(pathStr)
  3803  	if err != nil {
  3804  		return nil, err
  3805  	}
  3806  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  3807  	if err != nil {
  3808  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Exponential field path value from %s: %v", valueStr, err)
  3809  	}
  3810  	return fpv.(DistributionBucketOptionsExponential_FieldPathValue), nil
  3811  }
  3812  
  3813  func MustParseDistributionBucketOptionsExponential_FieldPathValue(pathStr, valueStr string) DistributionBucketOptionsExponential_FieldPathValue {
  3814  	fpv, err := ParseDistributionBucketOptionsExponential_FieldPathValue(pathStr, valueStr)
  3815  	if err != nil {
  3816  		panic(err)
  3817  	}
  3818  	return fpv
  3819  }
  3820  
  3821  type DistributionBucketOptionsExponential_FieldTerminalPathValue struct {
  3822  	DistributionBucketOptionsExponential_FieldTerminalPath
  3823  	value interface{}
  3824  }
  3825  
  3826  var _ DistributionBucketOptionsExponential_FieldPathValue = (*DistributionBucketOptionsExponential_FieldTerminalPathValue)(nil)
  3827  
  3828  // GetRawValue returns raw value stored under selected path for 'Exponential' as interface{}
  3829  func (fpv *DistributionBucketOptionsExponential_FieldTerminalPathValue) GetRawValue() interface{} {
  3830  	return fpv.value
  3831  }
  3832  func (fpv *DistributionBucketOptionsExponential_FieldTerminalPathValue) AsNumFiniteBucketsValue() (int32, bool) {
  3833  	res, ok := fpv.value.(int32)
  3834  	return res, ok
  3835  }
  3836  func (fpv *DistributionBucketOptionsExponential_FieldTerminalPathValue) AsGrowthFactorValue() (float64, bool) {
  3837  	res, ok := fpv.value.(float64)
  3838  	return res, ok
  3839  }
  3840  func (fpv *DistributionBucketOptionsExponential_FieldTerminalPathValue) AsScaleValue() (float64, bool) {
  3841  	res, ok := fpv.value.(float64)
  3842  	return res, ok
  3843  }
  3844  
  3845  // SetTo stores value for selected field for object Exponential
  3846  func (fpv *DistributionBucketOptionsExponential_FieldTerminalPathValue) SetTo(target **Distribution_BucketOptions_Exponential) {
  3847  	if *target == nil {
  3848  		*target = new(Distribution_BucketOptions_Exponential)
  3849  	}
  3850  	switch fpv.selector {
  3851  	case DistributionBucketOptionsExponential_FieldPathSelectorNumFiniteBuckets:
  3852  		(*target).NumFiniteBuckets = fpv.value.(int32)
  3853  	case DistributionBucketOptionsExponential_FieldPathSelectorGrowthFactor:
  3854  		(*target).GrowthFactor = fpv.value.(float64)
  3855  	case DistributionBucketOptionsExponential_FieldPathSelectorScale:
  3856  		(*target).Scale = fpv.value.(float64)
  3857  	default:
  3858  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Exponential: %d", fpv.selector))
  3859  	}
  3860  }
  3861  
  3862  func (fpv *DistributionBucketOptionsExponential_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  3863  	typedObject := target.(*Distribution_BucketOptions_Exponential)
  3864  	fpv.SetTo(&typedObject)
  3865  }
  3866  
  3867  // CompareWith compares value in the 'DistributionBucketOptionsExponential_FieldTerminalPathValue' with the value under path in 'Distribution_BucketOptions_Exponential'.
  3868  func (fpv *DistributionBucketOptionsExponential_FieldTerminalPathValue) CompareWith(source *Distribution_BucketOptions_Exponential) (int, bool) {
  3869  	switch fpv.selector {
  3870  	case DistributionBucketOptionsExponential_FieldPathSelectorNumFiniteBuckets:
  3871  		leftValue := fpv.value.(int32)
  3872  		rightValue := source.GetNumFiniteBuckets()
  3873  		if (leftValue) == (rightValue) {
  3874  			return 0, true
  3875  		} else if (leftValue) < (rightValue) {
  3876  			return -1, true
  3877  		} else {
  3878  			return 1, true
  3879  		}
  3880  	case DistributionBucketOptionsExponential_FieldPathSelectorGrowthFactor:
  3881  		leftValue := fpv.value.(float64)
  3882  		rightValue := source.GetGrowthFactor()
  3883  		if (leftValue) == (rightValue) {
  3884  			return 0, true
  3885  		} else if (leftValue) < (rightValue) {
  3886  			return -1, true
  3887  		} else {
  3888  			return 1, true
  3889  		}
  3890  	case DistributionBucketOptionsExponential_FieldPathSelectorScale:
  3891  		leftValue := fpv.value.(float64)
  3892  		rightValue := source.GetScale()
  3893  		if (leftValue) == (rightValue) {
  3894  			return 0, true
  3895  		} else if (leftValue) < (rightValue) {
  3896  			return -1, true
  3897  		} else {
  3898  			return 1, true
  3899  		}
  3900  	default:
  3901  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Exponential: %d", fpv.selector))
  3902  	}
  3903  }
  3904  
  3905  func (fpv *DistributionBucketOptionsExponential_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  3906  	return fpv.CompareWith(source.(*Distribution_BucketOptions_Exponential))
  3907  }
  3908  
  3909  // DistributionBucketOptionsExponential_FieldPathArrayItemValue allows storing single item in Path-specific values for Exponential according to their type
  3910  // Present only for array (repeated) types.
  3911  type DistributionBucketOptionsExponential_FieldPathArrayItemValue interface {
  3912  	gotenobject.FieldPathArrayItemValue
  3913  	DistributionBucketOptionsExponential_FieldPath
  3914  	ContainsValue(*Distribution_BucketOptions_Exponential) bool
  3915  }
  3916  
  3917  // ParseDistributionBucketOptionsExponential_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  3918  func ParseDistributionBucketOptionsExponential_FieldPathArrayItemValue(pathStr, valueStr string) (DistributionBucketOptionsExponential_FieldPathArrayItemValue, error) {
  3919  	fp, err := ParseDistributionBucketOptionsExponential_FieldPath(pathStr)
  3920  	if err != nil {
  3921  		return nil, err
  3922  	}
  3923  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  3924  	if err != nil {
  3925  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Exponential field path array item value from %s: %v", valueStr, err)
  3926  	}
  3927  	return fpaiv.(DistributionBucketOptionsExponential_FieldPathArrayItemValue), nil
  3928  }
  3929  
  3930  func MustParseDistributionBucketOptionsExponential_FieldPathArrayItemValue(pathStr, valueStr string) DistributionBucketOptionsExponential_FieldPathArrayItemValue {
  3931  	fpaiv, err := ParseDistributionBucketOptionsExponential_FieldPathArrayItemValue(pathStr, valueStr)
  3932  	if err != nil {
  3933  		panic(err)
  3934  	}
  3935  	return fpaiv
  3936  }
  3937  
  3938  type DistributionBucketOptionsExponential_FieldTerminalPathArrayItemValue struct {
  3939  	DistributionBucketOptionsExponential_FieldTerminalPath
  3940  	value interface{}
  3941  }
  3942  
  3943  var _ DistributionBucketOptionsExponential_FieldPathArrayItemValue = (*DistributionBucketOptionsExponential_FieldTerminalPathArrayItemValue)(nil)
  3944  
  3945  // GetRawValue returns stored element value for array in object Distribution_BucketOptions_Exponential as interface{}
  3946  func (fpaiv *DistributionBucketOptionsExponential_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  3947  	return fpaiv.value
  3948  }
  3949  
  3950  func (fpaiv *DistributionBucketOptionsExponential_FieldTerminalPathArrayItemValue) GetSingle(source *Distribution_BucketOptions_Exponential) (interface{}, bool) {
  3951  	return nil, false
  3952  }
  3953  
  3954  func (fpaiv *DistributionBucketOptionsExponential_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  3955  	return fpaiv.GetSingle(source.(*Distribution_BucketOptions_Exponential))
  3956  }
  3957  
  3958  // Contains returns a boolean indicating if value that is being held is present in given 'Exponential'
  3959  func (fpaiv *DistributionBucketOptionsExponential_FieldTerminalPathArrayItemValue) ContainsValue(source *Distribution_BucketOptions_Exponential) bool {
  3960  	slice := fpaiv.DistributionBucketOptionsExponential_FieldTerminalPath.Get(source)
  3961  	for _, v := range slice {
  3962  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  3963  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  3964  				return true
  3965  			}
  3966  		} else if reflect.DeepEqual(v, fpaiv.value) {
  3967  			return true
  3968  		}
  3969  	}
  3970  	return false
  3971  }
  3972  
  3973  // DistributionBucketOptionsExponential_FieldPathArrayOfValues allows storing slice of values for Exponential fields according to their type
  3974  type DistributionBucketOptionsExponential_FieldPathArrayOfValues interface {
  3975  	gotenobject.FieldPathArrayOfValues
  3976  	DistributionBucketOptionsExponential_FieldPath
  3977  }
  3978  
  3979  func ParseDistributionBucketOptionsExponential_FieldPathArrayOfValues(pathStr, valuesStr string) (DistributionBucketOptionsExponential_FieldPathArrayOfValues, error) {
  3980  	fp, err := ParseDistributionBucketOptionsExponential_FieldPath(pathStr)
  3981  	if err != nil {
  3982  		return nil, err
  3983  	}
  3984  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  3985  	if err != nil {
  3986  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Exponential field path array of values from %s: %v", valuesStr, err)
  3987  	}
  3988  	return fpaov.(DistributionBucketOptionsExponential_FieldPathArrayOfValues), nil
  3989  }
  3990  
  3991  func MustParseDistributionBucketOptionsExponential_FieldPathArrayOfValues(pathStr, valuesStr string) DistributionBucketOptionsExponential_FieldPathArrayOfValues {
  3992  	fpaov, err := ParseDistributionBucketOptionsExponential_FieldPathArrayOfValues(pathStr, valuesStr)
  3993  	if err != nil {
  3994  		panic(err)
  3995  	}
  3996  	return fpaov
  3997  }
  3998  
  3999  type DistributionBucketOptionsExponential_FieldTerminalPathArrayOfValues struct {
  4000  	DistributionBucketOptionsExponential_FieldTerminalPath
  4001  	values interface{}
  4002  }
  4003  
  4004  var _ DistributionBucketOptionsExponential_FieldPathArrayOfValues = (*DistributionBucketOptionsExponential_FieldTerminalPathArrayOfValues)(nil)
  4005  
  4006  func (fpaov *DistributionBucketOptionsExponential_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  4007  	switch fpaov.selector {
  4008  	case DistributionBucketOptionsExponential_FieldPathSelectorNumFiniteBuckets:
  4009  		for _, v := range fpaov.values.([]int32) {
  4010  			values = append(values, v)
  4011  		}
  4012  	case DistributionBucketOptionsExponential_FieldPathSelectorGrowthFactor:
  4013  		for _, v := range fpaov.values.([]float64) {
  4014  			values = append(values, v)
  4015  		}
  4016  	case DistributionBucketOptionsExponential_FieldPathSelectorScale:
  4017  		for _, v := range fpaov.values.([]float64) {
  4018  			values = append(values, v)
  4019  		}
  4020  	}
  4021  	return
  4022  }
  4023  func (fpaov *DistributionBucketOptionsExponential_FieldTerminalPathArrayOfValues) AsNumFiniteBucketsArrayOfValues() ([]int32, bool) {
  4024  	res, ok := fpaov.values.([]int32)
  4025  	return res, ok
  4026  }
  4027  func (fpaov *DistributionBucketOptionsExponential_FieldTerminalPathArrayOfValues) AsGrowthFactorArrayOfValues() ([]float64, bool) {
  4028  	res, ok := fpaov.values.([]float64)
  4029  	return res, ok
  4030  }
  4031  func (fpaov *DistributionBucketOptionsExponential_FieldTerminalPathArrayOfValues) AsScaleArrayOfValues() ([]float64, bool) {
  4032  	res, ok := fpaov.values.([]float64)
  4033  	return res, ok
  4034  }
  4035  
  4036  // FieldPath provides implementation to handle
  4037  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  4038  type DistributionBucketOptionsExplicit_FieldPath interface {
  4039  	gotenobject.FieldPath
  4040  	Selector() DistributionBucketOptionsExplicit_FieldPathSelector
  4041  	Get(source *Distribution_BucketOptions_Explicit) []interface{}
  4042  	GetSingle(source *Distribution_BucketOptions_Explicit) (interface{}, bool)
  4043  	ClearValue(item *Distribution_BucketOptions_Explicit)
  4044  
  4045  	// Those methods build corresponding DistributionBucketOptionsExplicit_FieldPathValue
  4046  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
  4047  	WithIValue(value interface{}) DistributionBucketOptionsExplicit_FieldPathValue
  4048  	WithIArrayOfValues(values interface{}) DistributionBucketOptionsExplicit_FieldPathArrayOfValues
  4049  	WithIArrayItemValue(value interface{}) DistributionBucketOptionsExplicit_FieldPathArrayItemValue
  4050  }
  4051  
  4052  type DistributionBucketOptionsExplicit_FieldPathSelector int32
  4053  
  4054  const (
  4055  	DistributionBucketOptionsExplicit_FieldPathSelectorBounds DistributionBucketOptionsExplicit_FieldPathSelector = 0
  4056  )
  4057  
  4058  func (s DistributionBucketOptionsExplicit_FieldPathSelector) String() string {
  4059  	switch s {
  4060  	case DistributionBucketOptionsExplicit_FieldPathSelectorBounds:
  4061  		return "bounds"
  4062  	default:
  4063  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Explicit: %d", s))
  4064  	}
  4065  }
  4066  
  4067  func BuildDistributionBucketOptionsExplicit_FieldPath(fp gotenobject.RawFieldPath) (DistributionBucketOptionsExplicit_FieldPath, error) {
  4068  	if len(fp) == 0 {
  4069  		return nil, status.Error(codes.InvalidArgument, "empty field path for object Distribution_BucketOptions_Explicit")
  4070  	}
  4071  	if len(fp) == 1 {
  4072  		switch fp[0] {
  4073  		case "bounds":
  4074  			return &DistributionBucketOptionsExplicit_FieldTerminalPath{selector: DistributionBucketOptionsExplicit_FieldPathSelectorBounds}, nil
  4075  		}
  4076  	}
  4077  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object Distribution_BucketOptions_Explicit", fp)
  4078  }
  4079  
  4080  func ParseDistributionBucketOptionsExplicit_FieldPath(rawField string) (DistributionBucketOptionsExplicit_FieldPath, error) {
  4081  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  4082  	if err != nil {
  4083  		return nil, err
  4084  	}
  4085  	return BuildDistributionBucketOptionsExplicit_FieldPath(fp)
  4086  }
  4087  
  4088  func MustParseDistributionBucketOptionsExplicit_FieldPath(rawField string) DistributionBucketOptionsExplicit_FieldPath {
  4089  	fp, err := ParseDistributionBucketOptionsExplicit_FieldPath(rawField)
  4090  	if err != nil {
  4091  		panic(err)
  4092  	}
  4093  	return fp
  4094  }
  4095  
  4096  type DistributionBucketOptionsExplicit_FieldTerminalPath struct {
  4097  	selector DistributionBucketOptionsExplicit_FieldPathSelector
  4098  }
  4099  
  4100  var _ DistributionBucketOptionsExplicit_FieldPath = (*DistributionBucketOptionsExplicit_FieldTerminalPath)(nil)
  4101  
  4102  func (fp *DistributionBucketOptionsExplicit_FieldTerminalPath) Selector() DistributionBucketOptionsExplicit_FieldPathSelector {
  4103  	return fp.selector
  4104  }
  4105  
  4106  // String returns path representation in proto convention
  4107  func (fp *DistributionBucketOptionsExplicit_FieldTerminalPath) String() string {
  4108  	return fp.selector.String()
  4109  }
  4110  
  4111  // JSONString returns path representation is JSON convention
  4112  func (fp *DistributionBucketOptionsExplicit_FieldTerminalPath) JSONString() string {
  4113  	return strcase.ToLowerCamel(fp.String())
  4114  }
  4115  
  4116  // Get returns all values pointed by specific field from source Distribution_BucketOptions_Explicit
  4117  func (fp *DistributionBucketOptionsExplicit_FieldTerminalPath) Get(source *Distribution_BucketOptions_Explicit) (values []interface{}) {
  4118  	if source != nil {
  4119  		switch fp.selector {
  4120  		case DistributionBucketOptionsExplicit_FieldPathSelectorBounds:
  4121  			for _, value := range source.GetBounds() {
  4122  				values = append(values, value)
  4123  			}
  4124  		default:
  4125  			panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Explicit: %d", fp.selector))
  4126  		}
  4127  	}
  4128  	return
  4129  }
  4130  
  4131  func (fp *DistributionBucketOptionsExplicit_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  4132  	return fp.Get(source.(*Distribution_BucketOptions_Explicit))
  4133  }
  4134  
  4135  // GetSingle returns value pointed by specific field of from source Distribution_BucketOptions_Explicit
  4136  func (fp *DistributionBucketOptionsExplicit_FieldTerminalPath) GetSingle(source *Distribution_BucketOptions_Explicit) (interface{}, bool) {
  4137  	switch fp.selector {
  4138  	case DistributionBucketOptionsExplicit_FieldPathSelectorBounds:
  4139  		res := source.GetBounds()
  4140  		return res, res != nil
  4141  	default:
  4142  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Explicit: %d", fp.selector))
  4143  	}
  4144  }
  4145  
  4146  func (fp *DistributionBucketOptionsExplicit_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  4147  	return fp.GetSingle(source.(*Distribution_BucketOptions_Explicit))
  4148  }
  4149  
  4150  // GetDefault returns a default value of the field type
  4151  func (fp *DistributionBucketOptionsExplicit_FieldTerminalPath) GetDefault() interface{} {
  4152  	switch fp.selector {
  4153  	case DistributionBucketOptionsExplicit_FieldPathSelectorBounds:
  4154  		return ([]float64)(nil)
  4155  	default:
  4156  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Explicit: %d", fp.selector))
  4157  	}
  4158  }
  4159  
  4160  func (fp *DistributionBucketOptionsExplicit_FieldTerminalPath) ClearValue(item *Distribution_BucketOptions_Explicit) {
  4161  	if item != nil {
  4162  		switch fp.selector {
  4163  		case DistributionBucketOptionsExplicit_FieldPathSelectorBounds:
  4164  			item.Bounds = nil
  4165  		default:
  4166  			panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Explicit: %d", fp.selector))
  4167  		}
  4168  	}
  4169  }
  4170  
  4171  func (fp *DistributionBucketOptionsExplicit_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  4172  	fp.ClearValue(item.(*Distribution_BucketOptions_Explicit))
  4173  }
  4174  
  4175  // IsLeaf - whether field path is holds simple value
  4176  func (fp *DistributionBucketOptionsExplicit_FieldTerminalPath) IsLeaf() bool {
  4177  	return fp.selector == DistributionBucketOptionsExplicit_FieldPathSelectorBounds
  4178  }
  4179  
  4180  func (fp *DistributionBucketOptionsExplicit_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  4181  	return []gotenobject.FieldPath{fp}
  4182  }
  4183  
  4184  func (fp *DistributionBucketOptionsExplicit_FieldTerminalPath) WithIValue(value interface{}) DistributionBucketOptionsExplicit_FieldPathValue {
  4185  	switch fp.selector {
  4186  	case DistributionBucketOptionsExplicit_FieldPathSelectorBounds:
  4187  		return &DistributionBucketOptionsExplicit_FieldTerminalPathValue{DistributionBucketOptionsExplicit_FieldTerminalPath: *fp, value: value.([]float64)}
  4188  	default:
  4189  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Explicit: %d", fp.selector))
  4190  	}
  4191  }
  4192  
  4193  func (fp *DistributionBucketOptionsExplicit_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  4194  	return fp.WithIValue(value)
  4195  }
  4196  
  4197  func (fp *DistributionBucketOptionsExplicit_FieldTerminalPath) WithIArrayOfValues(values interface{}) DistributionBucketOptionsExplicit_FieldPathArrayOfValues {
  4198  	fpaov := &DistributionBucketOptionsExplicit_FieldTerminalPathArrayOfValues{DistributionBucketOptionsExplicit_FieldTerminalPath: *fp}
  4199  	switch fp.selector {
  4200  	case DistributionBucketOptionsExplicit_FieldPathSelectorBounds:
  4201  		return &DistributionBucketOptionsExplicit_FieldTerminalPathArrayOfValues{DistributionBucketOptionsExplicit_FieldTerminalPath: *fp, values: values.([][]float64)}
  4202  	default:
  4203  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Explicit: %d", fp.selector))
  4204  	}
  4205  	return fpaov
  4206  }
  4207  
  4208  func (fp *DistributionBucketOptionsExplicit_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  4209  	return fp.WithIArrayOfValues(values)
  4210  }
  4211  
  4212  func (fp *DistributionBucketOptionsExplicit_FieldTerminalPath) WithIArrayItemValue(value interface{}) DistributionBucketOptionsExplicit_FieldPathArrayItemValue {
  4213  	switch fp.selector {
  4214  	case DistributionBucketOptionsExplicit_FieldPathSelectorBounds:
  4215  		return &DistributionBucketOptionsExplicit_FieldTerminalPathArrayItemValue{DistributionBucketOptionsExplicit_FieldTerminalPath: *fp, value: value.(float64)}
  4216  	default:
  4217  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Explicit: %d", fp.selector))
  4218  	}
  4219  }
  4220  
  4221  func (fp *DistributionBucketOptionsExplicit_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  4222  	return fp.WithIArrayItemValue(value)
  4223  }
  4224  
  4225  // DistributionBucketOptionsExplicit_FieldPathValue allows storing values for Explicit fields according to their type
  4226  type DistributionBucketOptionsExplicit_FieldPathValue interface {
  4227  	DistributionBucketOptionsExplicit_FieldPath
  4228  	gotenobject.FieldPathValue
  4229  	SetTo(target **Distribution_BucketOptions_Explicit)
  4230  	CompareWith(*Distribution_BucketOptions_Explicit) (cmp int, comparable bool)
  4231  }
  4232  
  4233  func ParseDistributionBucketOptionsExplicit_FieldPathValue(pathStr, valueStr string) (DistributionBucketOptionsExplicit_FieldPathValue, error) {
  4234  	fp, err := ParseDistributionBucketOptionsExplicit_FieldPath(pathStr)
  4235  	if err != nil {
  4236  		return nil, err
  4237  	}
  4238  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  4239  	if err != nil {
  4240  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Explicit field path value from %s: %v", valueStr, err)
  4241  	}
  4242  	return fpv.(DistributionBucketOptionsExplicit_FieldPathValue), nil
  4243  }
  4244  
  4245  func MustParseDistributionBucketOptionsExplicit_FieldPathValue(pathStr, valueStr string) DistributionBucketOptionsExplicit_FieldPathValue {
  4246  	fpv, err := ParseDistributionBucketOptionsExplicit_FieldPathValue(pathStr, valueStr)
  4247  	if err != nil {
  4248  		panic(err)
  4249  	}
  4250  	return fpv
  4251  }
  4252  
  4253  type DistributionBucketOptionsExplicit_FieldTerminalPathValue struct {
  4254  	DistributionBucketOptionsExplicit_FieldTerminalPath
  4255  	value interface{}
  4256  }
  4257  
  4258  var _ DistributionBucketOptionsExplicit_FieldPathValue = (*DistributionBucketOptionsExplicit_FieldTerminalPathValue)(nil)
  4259  
  4260  // GetRawValue returns raw value stored under selected path for 'Explicit' as interface{}
  4261  func (fpv *DistributionBucketOptionsExplicit_FieldTerminalPathValue) GetRawValue() interface{} {
  4262  	return fpv.value
  4263  }
  4264  func (fpv *DistributionBucketOptionsExplicit_FieldTerminalPathValue) AsBoundsValue() ([]float64, bool) {
  4265  	res, ok := fpv.value.([]float64)
  4266  	return res, ok
  4267  }
  4268  
  4269  // SetTo stores value for selected field for object Explicit
  4270  func (fpv *DistributionBucketOptionsExplicit_FieldTerminalPathValue) SetTo(target **Distribution_BucketOptions_Explicit) {
  4271  	if *target == nil {
  4272  		*target = new(Distribution_BucketOptions_Explicit)
  4273  	}
  4274  	switch fpv.selector {
  4275  	case DistributionBucketOptionsExplicit_FieldPathSelectorBounds:
  4276  		(*target).Bounds = fpv.value.([]float64)
  4277  	default:
  4278  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Explicit: %d", fpv.selector))
  4279  	}
  4280  }
  4281  
  4282  func (fpv *DistributionBucketOptionsExplicit_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  4283  	typedObject := target.(*Distribution_BucketOptions_Explicit)
  4284  	fpv.SetTo(&typedObject)
  4285  }
  4286  
  4287  // CompareWith compares value in the 'DistributionBucketOptionsExplicit_FieldTerminalPathValue' with the value under path in 'Distribution_BucketOptions_Explicit'.
  4288  func (fpv *DistributionBucketOptionsExplicit_FieldTerminalPathValue) CompareWith(source *Distribution_BucketOptions_Explicit) (int, bool) {
  4289  	switch fpv.selector {
  4290  	case DistributionBucketOptionsExplicit_FieldPathSelectorBounds:
  4291  		return 0, false
  4292  	default:
  4293  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Explicit: %d", fpv.selector))
  4294  	}
  4295  }
  4296  
  4297  func (fpv *DistributionBucketOptionsExplicit_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  4298  	return fpv.CompareWith(source.(*Distribution_BucketOptions_Explicit))
  4299  }
  4300  
  4301  // DistributionBucketOptionsExplicit_FieldPathArrayItemValue allows storing single item in Path-specific values for Explicit according to their type
  4302  // Present only for array (repeated) types.
  4303  type DistributionBucketOptionsExplicit_FieldPathArrayItemValue interface {
  4304  	gotenobject.FieldPathArrayItemValue
  4305  	DistributionBucketOptionsExplicit_FieldPath
  4306  	ContainsValue(*Distribution_BucketOptions_Explicit) bool
  4307  }
  4308  
  4309  // ParseDistributionBucketOptionsExplicit_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  4310  func ParseDistributionBucketOptionsExplicit_FieldPathArrayItemValue(pathStr, valueStr string) (DistributionBucketOptionsExplicit_FieldPathArrayItemValue, error) {
  4311  	fp, err := ParseDistributionBucketOptionsExplicit_FieldPath(pathStr)
  4312  	if err != nil {
  4313  		return nil, err
  4314  	}
  4315  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  4316  	if err != nil {
  4317  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Explicit field path array item value from %s: %v", valueStr, err)
  4318  	}
  4319  	return fpaiv.(DistributionBucketOptionsExplicit_FieldPathArrayItemValue), nil
  4320  }
  4321  
  4322  func MustParseDistributionBucketOptionsExplicit_FieldPathArrayItemValue(pathStr, valueStr string) DistributionBucketOptionsExplicit_FieldPathArrayItemValue {
  4323  	fpaiv, err := ParseDistributionBucketOptionsExplicit_FieldPathArrayItemValue(pathStr, valueStr)
  4324  	if err != nil {
  4325  		panic(err)
  4326  	}
  4327  	return fpaiv
  4328  }
  4329  
  4330  type DistributionBucketOptionsExplicit_FieldTerminalPathArrayItemValue struct {
  4331  	DistributionBucketOptionsExplicit_FieldTerminalPath
  4332  	value interface{}
  4333  }
  4334  
  4335  var _ DistributionBucketOptionsExplicit_FieldPathArrayItemValue = (*DistributionBucketOptionsExplicit_FieldTerminalPathArrayItemValue)(nil)
  4336  
  4337  // GetRawValue returns stored element value for array in object Distribution_BucketOptions_Explicit as interface{}
  4338  func (fpaiv *DistributionBucketOptionsExplicit_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  4339  	return fpaiv.value
  4340  }
  4341  func (fpaiv *DistributionBucketOptionsExplicit_FieldTerminalPathArrayItemValue) AsBoundsItemValue() (float64, bool) {
  4342  	res, ok := fpaiv.value.(float64)
  4343  	return res, ok
  4344  }
  4345  
  4346  func (fpaiv *DistributionBucketOptionsExplicit_FieldTerminalPathArrayItemValue) GetSingle(source *Distribution_BucketOptions_Explicit) (interface{}, bool) {
  4347  	return nil, false
  4348  }
  4349  
  4350  func (fpaiv *DistributionBucketOptionsExplicit_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  4351  	return fpaiv.GetSingle(source.(*Distribution_BucketOptions_Explicit))
  4352  }
  4353  
  4354  // Contains returns a boolean indicating if value that is being held is present in given 'Explicit'
  4355  func (fpaiv *DistributionBucketOptionsExplicit_FieldTerminalPathArrayItemValue) ContainsValue(source *Distribution_BucketOptions_Explicit) bool {
  4356  	slice := fpaiv.DistributionBucketOptionsExplicit_FieldTerminalPath.Get(source)
  4357  	for _, v := range slice {
  4358  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  4359  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  4360  				return true
  4361  			}
  4362  		} else if reflect.DeepEqual(v, fpaiv.value) {
  4363  			return true
  4364  		}
  4365  	}
  4366  	return false
  4367  }
  4368  
  4369  // DistributionBucketOptionsExplicit_FieldPathArrayOfValues allows storing slice of values for Explicit fields according to their type
  4370  type DistributionBucketOptionsExplicit_FieldPathArrayOfValues interface {
  4371  	gotenobject.FieldPathArrayOfValues
  4372  	DistributionBucketOptionsExplicit_FieldPath
  4373  }
  4374  
  4375  func ParseDistributionBucketOptionsExplicit_FieldPathArrayOfValues(pathStr, valuesStr string) (DistributionBucketOptionsExplicit_FieldPathArrayOfValues, error) {
  4376  	fp, err := ParseDistributionBucketOptionsExplicit_FieldPath(pathStr)
  4377  	if err != nil {
  4378  		return nil, err
  4379  	}
  4380  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  4381  	if err != nil {
  4382  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Explicit field path array of values from %s: %v", valuesStr, err)
  4383  	}
  4384  	return fpaov.(DistributionBucketOptionsExplicit_FieldPathArrayOfValues), nil
  4385  }
  4386  
  4387  func MustParseDistributionBucketOptionsExplicit_FieldPathArrayOfValues(pathStr, valuesStr string) DistributionBucketOptionsExplicit_FieldPathArrayOfValues {
  4388  	fpaov, err := ParseDistributionBucketOptionsExplicit_FieldPathArrayOfValues(pathStr, valuesStr)
  4389  	if err != nil {
  4390  		panic(err)
  4391  	}
  4392  	return fpaov
  4393  }
  4394  
  4395  type DistributionBucketOptionsExplicit_FieldTerminalPathArrayOfValues struct {
  4396  	DistributionBucketOptionsExplicit_FieldTerminalPath
  4397  	values interface{}
  4398  }
  4399  
  4400  var _ DistributionBucketOptionsExplicit_FieldPathArrayOfValues = (*DistributionBucketOptionsExplicit_FieldTerminalPathArrayOfValues)(nil)
  4401  
  4402  func (fpaov *DistributionBucketOptionsExplicit_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  4403  	switch fpaov.selector {
  4404  	case DistributionBucketOptionsExplicit_FieldPathSelectorBounds:
  4405  		for _, v := range fpaov.values.([][]float64) {
  4406  			values = append(values, v)
  4407  		}
  4408  	}
  4409  	return
  4410  }
  4411  func (fpaov *DistributionBucketOptionsExplicit_FieldTerminalPathArrayOfValues) AsBoundsArrayOfValues() ([][]float64, bool) {
  4412  	res, ok := fpaov.values.([][]float64)
  4413  	return res, ok
  4414  }
  4415  
  4416  // FieldPath provides implementation to handle
  4417  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  4418  type DistributionBucketOptionsDynamic_FieldPath interface {
  4419  	gotenobject.FieldPath
  4420  	Selector() DistributionBucketOptionsDynamic_FieldPathSelector
  4421  	Get(source *Distribution_BucketOptions_Dynamic) []interface{}
  4422  	GetSingle(source *Distribution_BucketOptions_Dynamic) (interface{}, bool)
  4423  	ClearValue(item *Distribution_BucketOptions_Dynamic)
  4424  
  4425  	// Those methods build corresponding DistributionBucketOptionsDynamic_FieldPathValue
  4426  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
  4427  	WithIValue(value interface{}) DistributionBucketOptionsDynamic_FieldPathValue
  4428  	WithIArrayOfValues(values interface{}) DistributionBucketOptionsDynamic_FieldPathArrayOfValues
  4429  	WithIArrayItemValue(value interface{}) DistributionBucketOptionsDynamic_FieldPathArrayItemValue
  4430  }
  4431  
  4432  type DistributionBucketOptionsDynamic_FieldPathSelector int32
  4433  
  4434  const (
  4435  	DistributionBucketOptionsDynamic_FieldPathSelectorCompression DistributionBucketOptionsDynamic_FieldPathSelector = 0
  4436  	DistributionBucketOptionsDynamic_FieldPathSelectorMeans       DistributionBucketOptionsDynamic_FieldPathSelector = 1
  4437  )
  4438  
  4439  func (s DistributionBucketOptionsDynamic_FieldPathSelector) String() string {
  4440  	switch s {
  4441  	case DistributionBucketOptionsDynamic_FieldPathSelectorCompression:
  4442  		return "compression"
  4443  	case DistributionBucketOptionsDynamic_FieldPathSelectorMeans:
  4444  		return "means"
  4445  	default:
  4446  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Dynamic: %d", s))
  4447  	}
  4448  }
  4449  
  4450  func BuildDistributionBucketOptionsDynamic_FieldPath(fp gotenobject.RawFieldPath) (DistributionBucketOptionsDynamic_FieldPath, error) {
  4451  	if len(fp) == 0 {
  4452  		return nil, status.Error(codes.InvalidArgument, "empty field path for object Distribution_BucketOptions_Dynamic")
  4453  	}
  4454  	if len(fp) == 1 {
  4455  		switch fp[0] {
  4456  		case "compression":
  4457  			return &DistributionBucketOptionsDynamic_FieldTerminalPath{selector: DistributionBucketOptionsDynamic_FieldPathSelectorCompression}, nil
  4458  		case "means":
  4459  			return &DistributionBucketOptionsDynamic_FieldTerminalPath{selector: DistributionBucketOptionsDynamic_FieldPathSelectorMeans}, nil
  4460  		}
  4461  	}
  4462  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object Distribution_BucketOptions_Dynamic", fp)
  4463  }
  4464  
  4465  func ParseDistributionBucketOptionsDynamic_FieldPath(rawField string) (DistributionBucketOptionsDynamic_FieldPath, error) {
  4466  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  4467  	if err != nil {
  4468  		return nil, err
  4469  	}
  4470  	return BuildDistributionBucketOptionsDynamic_FieldPath(fp)
  4471  }
  4472  
  4473  func MustParseDistributionBucketOptionsDynamic_FieldPath(rawField string) DistributionBucketOptionsDynamic_FieldPath {
  4474  	fp, err := ParseDistributionBucketOptionsDynamic_FieldPath(rawField)
  4475  	if err != nil {
  4476  		panic(err)
  4477  	}
  4478  	return fp
  4479  }
  4480  
  4481  type DistributionBucketOptionsDynamic_FieldTerminalPath struct {
  4482  	selector DistributionBucketOptionsDynamic_FieldPathSelector
  4483  }
  4484  
  4485  var _ DistributionBucketOptionsDynamic_FieldPath = (*DistributionBucketOptionsDynamic_FieldTerminalPath)(nil)
  4486  
  4487  func (fp *DistributionBucketOptionsDynamic_FieldTerminalPath) Selector() DistributionBucketOptionsDynamic_FieldPathSelector {
  4488  	return fp.selector
  4489  }
  4490  
  4491  // String returns path representation in proto convention
  4492  func (fp *DistributionBucketOptionsDynamic_FieldTerminalPath) String() string {
  4493  	return fp.selector.String()
  4494  }
  4495  
  4496  // JSONString returns path representation is JSON convention
  4497  func (fp *DistributionBucketOptionsDynamic_FieldTerminalPath) JSONString() string {
  4498  	return strcase.ToLowerCamel(fp.String())
  4499  }
  4500  
  4501  // Get returns all values pointed by specific field from source Distribution_BucketOptions_Dynamic
  4502  func (fp *DistributionBucketOptionsDynamic_FieldTerminalPath) Get(source *Distribution_BucketOptions_Dynamic) (values []interface{}) {
  4503  	if source != nil {
  4504  		switch fp.selector {
  4505  		case DistributionBucketOptionsDynamic_FieldPathSelectorCompression:
  4506  			values = append(values, source.Compression)
  4507  		case DistributionBucketOptionsDynamic_FieldPathSelectorMeans:
  4508  			for _, value := range source.GetMeans() {
  4509  				values = append(values, value)
  4510  			}
  4511  		default:
  4512  			panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Dynamic: %d", fp.selector))
  4513  		}
  4514  	}
  4515  	return
  4516  }
  4517  
  4518  func (fp *DistributionBucketOptionsDynamic_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  4519  	return fp.Get(source.(*Distribution_BucketOptions_Dynamic))
  4520  }
  4521  
  4522  // GetSingle returns value pointed by specific field of from source Distribution_BucketOptions_Dynamic
  4523  func (fp *DistributionBucketOptionsDynamic_FieldTerminalPath) GetSingle(source *Distribution_BucketOptions_Dynamic) (interface{}, bool) {
  4524  	switch fp.selector {
  4525  	case DistributionBucketOptionsDynamic_FieldPathSelectorCompression:
  4526  		return source.GetCompression(), source != nil
  4527  	case DistributionBucketOptionsDynamic_FieldPathSelectorMeans:
  4528  		res := source.GetMeans()
  4529  		return res, res != nil
  4530  	default:
  4531  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Dynamic: %d", fp.selector))
  4532  	}
  4533  }
  4534  
  4535  func (fp *DistributionBucketOptionsDynamic_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  4536  	return fp.GetSingle(source.(*Distribution_BucketOptions_Dynamic))
  4537  }
  4538  
  4539  // GetDefault returns a default value of the field type
  4540  func (fp *DistributionBucketOptionsDynamic_FieldTerminalPath) GetDefault() interface{} {
  4541  	switch fp.selector {
  4542  	case DistributionBucketOptionsDynamic_FieldPathSelectorCompression:
  4543  		return float64(0)
  4544  	case DistributionBucketOptionsDynamic_FieldPathSelectorMeans:
  4545  		return ([]float64)(nil)
  4546  	default:
  4547  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Dynamic: %d", fp.selector))
  4548  	}
  4549  }
  4550  
  4551  func (fp *DistributionBucketOptionsDynamic_FieldTerminalPath) ClearValue(item *Distribution_BucketOptions_Dynamic) {
  4552  	if item != nil {
  4553  		switch fp.selector {
  4554  		case DistributionBucketOptionsDynamic_FieldPathSelectorCompression:
  4555  			item.Compression = float64(0)
  4556  		case DistributionBucketOptionsDynamic_FieldPathSelectorMeans:
  4557  			item.Means = nil
  4558  		default:
  4559  			panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Dynamic: %d", fp.selector))
  4560  		}
  4561  	}
  4562  }
  4563  
  4564  func (fp *DistributionBucketOptionsDynamic_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  4565  	fp.ClearValue(item.(*Distribution_BucketOptions_Dynamic))
  4566  }
  4567  
  4568  // IsLeaf - whether field path is holds simple value
  4569  func (fp *DistributionBucketOptionsDynamic_FieldTerminalPath) IsLeaf() bool {
  4570  	return fp.selector == DistributionBucketOptionsDynamic_FieldPathSelectorCompression ||
  4571  		fp.selector == DistributionBucketOptionsDynamic_FieldPathSelectorMeans
  4572  }
  4573  
  4574  func (fp *DistributionBucketOptionsDynamic_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  4575  	return []gotenobject.FieldPath{fp}
  4576  }
  4577  
  4578  func (fp *DistributionBucketOptionsDynamic_FieldTerminalPath) WithIValue(value interface{}) DistributionBucketOptionsDynamic_FieldPathValue {
  4579  	switch fp.selector {
  4580  	case DistributionBucketOptionsDynamic_FieldPathSelectorCompression:
  4581  		return &DistributionBucketOptionsDynamic_FieldTerminalPathValue{DistributionBucketOptionsDynamic_FieldTerminalPath: *fp, value: value.(float64)}
  4582  	case DistributionBucketOptionsDynamic_FieldPathSelectorMeans:
  4583  		return &DistributionBucketOptionsDynamic_FieldTerminalPathValue{DistributionBucketOptionsDynamic_FieldTerminalPath: *fp, value: value.([]float64)}
  4584  	default:
  4585  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Dynamic: %d", fp.selector))
  4586  	}
  4587  }
  4588  
  4589  func (fp *DistributionBucketOptionsDynamic_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  4590  	return fp.WithIValue(value)
  4591  }
  4592  
  4593  func (fp *DistributionBucketOptionsDynamic_FieldTerminalPath) WithIArrayOfValues(values interface{}) DistributionBucketOptionsDynamic_FieldPathArrayOfValues {
  4594  	fpaov := &DistributionBucketOptionsDynamic_FieldTerminalPathArrayOfValues{DistributionBucketOptionsDynamic_FieldTerminalPath: *fp}
  4595  	switch fp.selector {
  4596  	case DistributionBucketOptionsDynamic_FieldPathSelectorCompression:
  4597  		return &DistributionBucketOptionsDynamic_FieldTerminalPathArrayOfValues{DistributionBucketOptionsDynamic_FieldTerminalPath: *fp, values: values.([]float64)}
  4598  	case DistributionBucketOptionsDynamic_FieldPathSelectorMeans:
  4599  		return &DistributionBucketOptionsDynamic_FieldTerminalPathArrayOfValues{DistributionBucketOptionsDynamic_FieldTerminalPath: *fp, values: values.([][]float64)}
  4600  	default:
  4601  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Dynamic: %d", fp.selector))
  4602  	}
  4603  	return fpaov
  4604  }
  4605  
  4606  func (fp *DistributionBucketOptionsDynamic_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  4607  	return fp.WithIArrayOfValues(values)
  4608  }
  4609  
  4610  func (fp *DistributionBucketOptionsDynamic_FieldTerminalPath) WithIArrayItemValue(value interface{}) DistributionBucketOptionsDynamic_FieldPathArrayItemValue {
  4611  	switch fp.selector {
  4612  	case DistributionBucketOptionsDynamic_FieldPathSelectorMeans:
  4613  		return &DistributionBucketOptionsDynamic_FieldTerminalPathArrayItemValue{DistributionBucketOptionsDynamic_FieldTerminalPath: *fp, value: value.(float64)}
  4614  	default:
  4615  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Dynamic: %d", fp.selector))
  4616  	}
  4617  }
  4618  
  4619  func (fp *DistributionBucketOptionsDynamic_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  4620  	return fp.WithIArrayItemValue(value)
  4621  }
  4622  
  4623  // DistributionBucketOptionsDynamic_FieldPathValue allows storing values for Dynamic fields according to their type
  4624  type DistributionBucketOptionsDynamic_FieldPathValue interface {
  4625  	DistributionBucketOptionsDynamic_FieldPath
  4626  	gotenobject.FieldPathValue
  4627  	SetTo(target **Distribution_BucketOptions_Dynamic)
  4628  	CompareWith(*Distribution_BucketOptions_Dynamic) (cmp int, comparable bool)
  4629  }
  4630  
  4631  func ParseDistributionBucketOptionsDynamic_FieldPathValue(pathStr, valueStr string) (DistributionBucketOptionsDynamic_FieldPathValue, error) {
  4632  	fp, err := ParseDistributionBucketOptionsDynamic_FieldPath(pathStr)
  4633  	if err != nil {
  4634  		return nil, err
  4635  	}
  4636  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  4637  	if err != nil {
  4638  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Dynamic field path value from %s: %v", valueStr, err)
  4639  	}
  4640  	return fpv.(DistributionBucketOptionsDynamic_FieldPathValue), nil
  4641  }
  4642  
  4643  func MustParseDistributionBucketOptionsDynamic_FieldPathValue(pathStr, valueStr string) DistributionBucketOptionsDynamic_FieldPathValue {
  4644  	fpv, err := ParseDistributionBucketOptionsDynamic_FieldPathValue(pathStr, valueStr)
  4645  	if err != nil {
  4646  		panic(err)
  4647  	}
  4648  	return fpv
  4649  }
  4650  
  4651  type DistributionBucketOptionsDynamic_FieldTerminalPathValue struct {
  4652  	DistributionBucketOptionsDynamic_FieldTerminalPath
  4653  	value interface{}
  4654  }
  4655  
  4656  var _ DistributionBucketOptionsDynamic_FieldPathValue = (*DistributionBucketOptionsDynamic_FieldTerminalPathValue)(nil)
  4657  
  4658  // GetRawValue returns raw value stored under selected path for 'Dynamic' as interface{}
  4659  func (fpv *DistributionBucketOptionsDynamic_FieldTerminalPathValue) GetRawValue() interface{} {
  4660  	return fpv.value
  4661  }
  4662  func (fpv *DistributionBucketOptionsDynamic_FieldTerminalPathValue) AsCompressionValue() (float64, bool) {
  4663  	res, ok := fpv.value.(float64)
  4664  	return res, ok
  4665  }
  4666  func (fpv *DistributionBucketOptionsDynamic_FieldTerminalPathValue) AsMeansValue() ([]float64, bool) {
  4667  	res, ok := fpv.value.([]float64)
  4668  	return res, ok
  4669  }
  4670  
  4671  // SetTo stores value for selected field for object Dynamic
  4672  func (fpv *DistributionBucketOptionsDynamic_FieldTerminalPathValue) SetTo(target **Distribution_BucketOptions_Dynamic) {
  4673  	if *target == nil {
  4674  		*target = new(Distribution_BucketOptions_Dynamic)
  4675  	}
  4676  	switch fpv.selector {
  4677  	case DistributionBucketOptionsDynamic_FieldPathSelectorCompression:
  4678  		(*target).Compression = fpv.value.(float64)
  4679  	case DistributionBucketOptionsDynamic_FieldPathSelectorMeans:
  4680  		(*target).Means = fpv.value.([]float64)
  4681  	default:
  4682  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Dynamic: %d", fpv.selector))
  4683  	}
  4684  }
  4685  
  4686  func (fpv *DistributionBucketOptionsDynamic_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  4687  	typedObject := target.(*Distribution_BucketOptions_Dynamic)
  4688  	fpv.SetTo(&typedObject)
  4689  }
  4690  
  4691  // CompareWith compares value in the 'DistributionBucketOptionsDynamic_FieldTerminalPathValue' with the value under path in 'Distribution_BucketOptions_Dynamic'.
  4692  func (fpv *DistributionBucketOptionsDynamic_FieldTerminalPathValue) CompareWith(source *Distribution_BucketOptions_Dynamic) (int, bool) {
  4693  	switch fpv.selector {
  4694  	case DistributionBucketOptionsDynamic_FieldPathSelectorCompression:
  4695  		leftValue := fpv.value.(float64)
  4696  		rightValue := source.GetCompression()
  4697  		if (leftValue) == (rightValue) {
  4698  			return 0, true
  4699  		} else if (leftValue) < (rightValue) {
  4700  			return -1, true
  4701  		} else {
  4702  			return 1, true
  4703  		}
  4704  	case DistributionBucketOptionsDynamic_FieldPathSelectorMeans:
  4705  		return 0, false
  4706  	default:
  4707  		panic(fmt.Sprintf("Invalid selector for Distribution_BucketOptions_Dynamic: %d", fpv.selector))
  4708  	}
  4709  }
  4710  
  4711  func (fpv *DistributionBucketOptionsDynamic_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  4712  	return fpv.CompareWith(source.(*Distribution_BucketOptions_Dynamic))
  4713  }
  4714  
  4715  // DistributionBucketOptionsDynamic_FieldPathArrayItemValue allows storing single item in Path-specific values for Dynamic according to their type
  4716  // Present only for array (repeated) types.
  4717  type DistributionBucketOptionsDynamic_FieldPathArrayItemValue interface {
  4718  	gotenobject.FieldPathArrayItemValue
  4719  	DistributionBucketOptionsDynamic_FieldPath
  4720  	ContainsValue(*Distribution_BucketOptions_Dynamic) bool
  4721  }
  4722  
  4723  // ParseDistributionBucketOptionsDynamic_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  4724  func ParseDistributionBucketOptionsDynamic_FieldPathArrayItemValue(pathStr, valueStr string) (DistributionBucketOptionsDynamic_FieldPathArrayItemValue, error) {
  4725  	fp, err := ParseDistributionBucketOptionsDynamic_FieldPath(pathStr)
  4726  	if err != nil {
  4727  		return nil, err
  4728  	}
  4729  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  4730  	if err != nil {
  4731  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Dynamic field path array item value from %s: %v", valueStr, err)
  4732  	}
  4733  	return fpaiv.(DistributionBucketOptionsDynamic_FieldPathArrayItemValue), nil
  4734  }
  4735  
  4736  func MustParseDistributionBucketOptionsDynamic_FieldPathArrayItemValue(pathStr, valueStr string) DistributionBucketOptionsDynamic_FieldPathArrayItemValue {
  4737  	fpaiv, err := ParseDistributionBucketOptionsDynamic_FieldPathArrayItemValue(pathStr, valueStr)
  4738  	if err != nil {
  4739  		panic(err)
  4740  	}
  4741  	return fpaiv
  4742  }
  4743  
  4744  type DistributionBucketOptionsDynamic_FieldTerminalPathArrayItemValue struct {
  4745  	DistributionBucketOptionsDynamic_FieldTerminalPath
  4746  	value interface{}
  4747  }
  4748  
  4749  var _ DistributionBucketOptionsDynamic_FieldPathArrayItemValue = (*DistributionBucketOptionsDynamic_FieldTerminalPathArrayItemValue)(nil)
  4750  
  4751  // GetRawValue returns stored element value for array in object Distribution_BucketOptions_Dynamic as interface{}
  4752  func (fpaiv *DistributionBucketOptionsDynamic_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  4753  	return fpaiv.value
  4754  }
  4755  func (fpaiv *DistributionBucketOptionsDynamic_FieldTerminalPathArrayItemValue) AsMeansItemValue() (float64, bool) {
  4756  	res, ok := fpaiv.value.(float64)
  4757  	return res, ok
  4758  }
  4759  
  4760  func (fpaiv *DistributionBucketOptionsDynamic_FieldTerminalPathArrayItemValue) GetSingle(source *Distribution_BucketOptions_Dynamic) (interface{}, bool) {
  4761  	return nil, false
  4762  }
  4763  
  4764  func (fpaiv *DistributionBucketOptionsDynamic_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  4765  	return fpaiv.GetSingle(source.(*Distribution_BucketOptions_Dynamic))
  4766  }
  4767  
  4768  // Contains returns a boolean indicating if value that is being held is present in given 'Dynamic'
  4769  func (fpaiv *DistributionBucketOptionsDynamic_FieldTerminalPathArrayItemValue) ContainsValue(source *Distribution_BucketOptions_Dynamic) bool {
  4770  	slice := fpaiv.DistributionBucketOptionsDynamic_FieldTerminalPath.Get(source)
  4771  	for _, v := range slice {
  4772  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  4773  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  4774  				return true
  4775  			}
  4776  		} else if reflect.DeepEqual(v, fpaiv.value) {
  4777  			return true
  4778  		}
  4779  	}
  4780  	return false
  4781  }
  4782  
  4783  // DistributionBucketOptionsDynamic_FieldPathArrayOfValues allows storing slice of values for Dynamic fields according to their type
  4784  type DistributionBucketOptionsDynamic_FieldPathArrayOfValues interface {
  4785  	gotenobject.FieldPathArrayOfValues
  4786  	DistributionBucketOptionsDynamic_FieldPath
  4787  }
  4788  
  4789  func ParseDistributionBucketOptionsDynamic_FieldPathArrayOfValues(pathStr, valuesStr string) (DistributionBucketOptionsDynamic_FieldPathArrayOfValues, error) {
  4790  	fp, err := ParseDistributionBucketOptionsDynamic_FieldPath(pathStr)
  4791  	if err != nil {
  4792  		return nil, err
  4793  	}
  4794  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  4795  	if err != nil {
  4796  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Dynamic field path array of values from %s: %v", valuesStr, err)
  4797  	}
  4798  	return fpaov.(DistributionBucketOptionsDynamic_FieldPathArrayOfValues), nil
  4799  }
  4800  
  4801  func MustParseDistributionBucketOptionsDynamic_FieldPathArrayOfValues(pathStr, valuesStr string) DistributionBucketOptionsDynamic_FieldPathArrayOfValues {
  4802  	fpaov, err := ParseDistributionBucketOptionsDynamic_FieldPathArrayOfValues(pathStr, valuesStr)
  4803  	if err != nil {
  4804  		panic(err)
  4805  	}
  4806  	return fpaov
  4807  }
  4808  
  4809  type DistributionBucketOptionsDynamic_FieldTerminalPathArrayOfValues struct {
  4810  	DistributionBucketOptionsDynamic_FieldTerminalPath
  4811  	values interface{}
  4812  }
  4813  
  4814  var _ DistributionBucketOptionsDynamic_FieldPathArrayOfValues = (*DistributionBucketOptionsDynamic_FieldTerminalPathArrayOfValues)(nil)
  4815  
  4816  func (fpaov *DistributionBucketOptionsDynamic_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  4817  	switch fpaov.selector {
  4818  	case DistributionBucketOptionsDynamic_FieldPathSelectorCompression:
  4819  		for _, v := range fpaov.values.([]float64) {
  4820  			values = append(values, v)
  4821  		}
  4822  	case DistributionBucketOptionsDynamic_FieldPathSelectorMeans:
  4823  		for _, v := range fpaov.values.([][]float64) {
  4824  			values = append(values, v)
  4825  		}
  4826  	}
  4827  	return
  4828  }
  4829  func (fpaov *DistributionBucketOptionsDynamic_FieldTerminalPathArrayOfValues) AsCompressionArrayOfValues() ([]float64, bool) {
  4830  	res, ok := fpaov.values.([]float64)
  4831  	return res, ok
  4832  }
  4833  func (fpaov *DistributionBucketOptionsDynamic_FieldTerminalPathArrayOfValues) AsMeansArrayOfValues() ([][]float64, bool) {
  4834  	res, ok := fpaov.values.([][]float64)
  4835  	return res, ok
  4836  }
  4837  
  4838  // FieldPath provides implementation to handle
  4839  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  4840  type TypedValue_FieldPath interface {
  4841  	gotenobject.FieldPath
  4842  	Selector() TypedValue_FieldPathSelector
  4843  	Get(source *TypedValue) []interface{}
  4844  	GetSingle(source *TypedValue) (interface{}, bool)
  4845  	ClearValue(item *TypedValue)
  4846  
  4847  	// Those methods build corresponding TypedValue_FieldPathValue
  4848  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
  4849  	WithIValue(value interface{}) TypedValue_FieldPathValue
  4850  	WithIArrayOfValues(values interface{}) TypedValue_FieldPathArrayOfValues
  4851  	WithIArrayItemValue(value interface{}) TypedValue_FieldPathArrayItemValue
  4852  }
  4853  
  4854  type TypedValue_FieldPathSelector int32
  4855  
  4856  const (
  4857  	TypedValue_FieldPathSelectorBoolValue         TypedValue_FieldPathSelector = 0
  4858  	TypedValue_FieldPathSelectorInt64Value        TypedValue_FieldPathSelector = 1
  4859  	TypedValue_FieldPathSelectorDoubleValue       TypedValue_FieldPathSelector = 2
  4860  	TypedValue_FieldPathSelectorStringValue       TypedValue_FieldPathSelector = 3
  4861  	TypedValue_FieldPathSelectorDistributionValue TypedValue_FieldPathSelector = 4
  4862  )
  4863  
  4864  func (s TypedValue_FieldPathSelector) String() string {
  4865  	switch s {
  4866  	case TypedValue_FieldPathSelectorBoolValue:
  4867  		return "bool_value"
  4868  	case TypedValue_FieldPathSelectorInt64Value:
  4869  		return "int64_value"
  4870  	case TypedValue_FieldPathSelectorDoubleValue:
  4871  		return "double_value"
  4872  	case TypedValue_FieldPathSelectorStringValue:
  4873  		return "string_value"
  4874  	case TypedValue_FieldPathSelectorDistributionValue:
  4875  		return "distribution_value"
  4876  	default:
  4877  		panic(fmt.Sprintf("Invalid selector for TypedValue: %d", s))
  4878  	}
  4879  }
  4880  
  4881  func BuildTypedValue_FieldPath(fp gotenobject.RawFieldPath) (TypedValue_FieldPath, error) {
  4882  	if len(fp) == 0 {
  4883  		return nil, status.Error(codes.InvalidArgument, "empty field path for object TypedValue")
  4884  	}
  4885  	if len(fp) == 1 {
  4886  		switch fp[0] {
  4887  		case "bool_value", "boolValue", "bool-value":
  4888  			return &TypedValue_FieldTerminalPath{selector: TypedValue_FieldPathSelectorBoolValue}, nil
  4889  		case "int64_value", "int64Value", "int64-value":
  4890  			return &TypedValue_FieldTerminalPath{selector: TypedValue_FieldPathSelectorInt64Value}, nil
  4891  		case "double_value", "doubleValue", "double-value":
  4892  			return &TypedValue_FieldTerminalPath{selector: TypedValue_FieldPathSelectorDoubleValue}, nil
  4893  		case "string_value", "stringValue", "string-value":
  4894  			return &TypedValue_FieldTerminalPath{selector: TypedValue_FieldPathSelectorStringValue}, nil
  4895  		case "distribution_value", "distributionValue", "distribution-value":
  4896  			return &TypedValue_FieldTerminalPath{selector: TypedValue_FieldPathSelectorDistributionValue}, nil
  4897  		}
  4898  	} else {
  4899  		switch fp[0] {
  4900  		case "distribution_value", "distributionValue", "distribution-value":
  4901  			if subpath, err := BuildDistribution_FieldPath(fp[1:]); err != nil {
  4902  				return nil, err
  4903  			} else {
  4904  				return &TypedValue_FieldSubPath{selector: TypedValue_FieldPathSelectorDistributionValue, subPath: subpath}, nil
  4905  			}
  4906  		}
  4907  	}
  4908  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object TypedValue", fp)
  4909  }
  4910  
  4911  func ParseTypedValue_FieldPath(rawField string) (TypedValue_FieldPath, error) {
  4912  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  4913  	if err != nil {
  4914  		return nil, err
  4915  	}
  4916  	return BuildTypedValue_FieldPath(fp)
  4917  }
  4918  
  4919  func MustParseTypedValue_FieldPath(rawField string) TypedValue_FieldPath {
  4920  	fp, err := ParseTypedValue_FieldPath(rawField)
  4921  	if err != nil {
  4922  		panic(err)
  4923  	}
  4924  	return fp
  4925  }
  4926  
  4927  type TypedValue_FieldTerminalPath struct {
  4928  	selector TypedValue_FieldPathSelector
  4929  }
  4930  
  4931  var _ TypedValue_FieldPath = (*TypedValue_FieldTerminalPath)(nil)
  4932  
  4933  func (fp *TypedValue_FieldTerminalPath) Selector() TypedValue_FieldPathSelector {
  4934  	return fp.selector
  4935  }
  4936  
  4937  // String returns path representation in proto convention
  4938  func (fp *TypedValue_FieldTerminalPath) String() string {
  4939  	return fp.selector.String()
  4940  }
  4941  
  4942  // JSONString returns path representation is JSON convention
  4943  func (fp *TypedValue_FieldTerminalPath) JSONString() string {
  4944  	return strcase.ToLowerCamel(fp.String())
  4945  }
  4946  
  4947  // Get returns all values pointed by specific field from source TypedValue
  4948  func (fp *TypedValue_FieldTerminalPath) Get(source *TypedValue) (values []interface{}) {
  4949  	if source != nil {
  4950  		switch fp.selector {
  4951  		case TypedValue_FieldPathSelectorBoolValue:
  4952  			if source, ok := source.Value.(*TypedValue_BoolValue); ok && source != nil {
  4953  				values = append(values, source.BoolValue)
  4954  			}
  4955  		case TypedValue_FieldPathSelectorInt64Value:
  4956  			if source, ok := source.Value.(*TypedValue_Int64Value); ok && source != nil {
  4957  				values = append(values, source.Int64Value)
  4958  			}
  4959  		case TypedValue_FieldPathSelectorDoubleValue:
  4960  			if source, ok := source.Value.(*TypedValue_DoubleValue); ok && source != nil {
  4961  				values = append(values, source.DoubleValue)
  4962  			}
  4963  		case TypedValue_FieldPathSelectorStringValue:
  4964  			if source, ok := source.Value.(*TypedValue_StringValue); ok && source != nil {
  4965  				values = append(values, source.StringValue)
  4966  			}
  4967  		case TypedValue_FieldPathSelectorDistributionValue:
  4968  			if source, ok := source.Value.(*TypedValue_DistributionValue); ok && source != nil {
  4969  				if source.DistributionValue != nil {
  4970  					values = append(values, source.DistributionValue)
  4971  				}
  4972  			}
  4973  		default:
  4974  			panic(fmt.Sprintf("Invalid selector for TypedValue: %d", fp.selector))
  4975  		}
  4976  	}
  4977  	return
  4978  }
  4979  
  4980  func (fp *TypedValue_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  4981  	return fp.Get(source.(*TypedValue))
  4982  }
  4983  
  4984  // GetSingle returns value pointed by specific field of from source TypedValue
  4985  func (fp *TypedValue_FieldTerminalPath) GetSingle(source *TypedValue) (interface{}, bool) {
  4986  	switch fp.selector {
  4987  	case TypedValue_FieldPathSelectorBoolValue:
  4988  		// if object nil or oneof not active, return "default" type with false flag.
  4989  		if source == nil {
  4990  			return source.GetBoolValue(), false
  4991  		}
  4992  		_, oneOfSelected := source.Value.(*TypedValue_BoolValue)
  4993  		if !oneOfSelected {
  4994  			return source.GetBoolValue(), false // to return "type" information
  4995  		}
  4996  		return source.GetBoolValue(), source != nil
  4997  	case TypedValue_FieldPathSelectorInt64Value:
  4998  		// if object nil or oneof not active, return "default" type with false flag.
  4999  		if source == nil {
  5000  			return source.GetInt64Value(), false
  5001  		}
  5002  		_, oneOfSelected := source.Value.(*TypedValue_Int64Value)
  5003  		if !oneOfSelected {
  5004  			return source.GetInt64Value(), false // to return "type" information
  5005  		}
  5006  		return source.GetInt64Value(), source != nil
  5007  	case TypedValue_FieldPathSelectorDoubleValue:
  5008  		// if object nil or oneof not active, return "default" type with false flag.
  5009  		if source == nil {
  5010  			return source.GetDoubleValue(), false
  5011  		}
  5012  		_, oneOfSelected := source.Value.(*TypedValue_DoubleValue)
  5013  		if !oneOfSelected {
  5014  			return source.GetDoubleValue(), false // to return "type" information
  5015  		}
  5016  		return source.GetDoubleValue(), source != nil
  5017  	case TypedValue_FieldPathSelectorStringValue:
  5018  		// if object nil or oneof not active, return "default" type with false flag.
  5019  		if source == nil {
  5020  			return source.GetStringValue(), false
  5021  		}
  5022  		_, oneOfSelected := source.Value.(*TypedValue_StringValue)
  5023  		if !oneOfSelected {
  5024  			return source.GetStringValue(), false // to return "type" information
  5025  		}
  5026  		return source.GetStringValue(), source != nil
  5027  	case TypedValue_FieldPathSelectorDistributionValue:
  5028  		// if object nil or oneof not active, return "default" type with false flag.
  5029  		if source == nil {
  5030  			return source.GetDistributionValue(), false
  5031  		}
  5032  		_, oneOfSelected := source.Value.(*TypedValue_DistributionValue)
  5033  		if !oneOfSelected {
  5034  			return source.GetDistributionValue(), false // to return "type" information
  5035  		}
  5036  		res := source.GetDistributionValue()
  5037  		return res, res != nil
  5038  	default:
  5039  		panic(fmt.Sprintf("Invalid selector for TypedValue: %d", fp.selector))
  5040  	}
  5041  }
  5042  
  5043  func (fp *TypedValue_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  5044  	return fp.GetSingle(source.(*TypedValue))
  5045  }
  5046  
  5047  // GetDefault returns a default value of the field type
  5048  func (fp *TypedValue_FieldTerminalPath) GetDefault() interface{} {
  5049  	switch fp.selector {
  5050  	case TypedValue_FieldPathSelectorBoolValue:
  5051  		return false
  5052  	case TypedValue_FieldPathSelectorInt64Value:
  5053  		return int64(0)
  5054  	case TypedValue_FieldPathSelectorDoubleValue:
  5055  		return float64(0)
  5056  	case TypedValue_FieldPathSelectorStringValue:
  5057  		return ""
  5058  	case TypedValue_FieldPathSelectorDistributionValue:
  5059  		return (*Distribution)(nil)
  5060  	default:
  5061  		panic(fmt.Sprintf("Invalid selector for TypedValue: %d", fp.selector))
  5062  	}
  5063  }
  5064  
  5065  func (fp *TypedValue_FieldTerminalPath) ClearValue(item *TypedValue) {
  5066  	if item != nil {
  5067  		switch fp.selector {
  5068  		case TypedValue_FieldPathSelectorBoolValue:
  5069  			if item, ok := item.Value.(*TypedValue_BoolValue); ok {
  5070  				item.BoolValue = false
  5071  			}
  5072  		case TypedValue_FieldPathSelectorInt64Value:
  5073  			if item, ok := item.Value.(*TypedValue_Int64Value); ok {
  5074  				item.Int64Value = int64(0)
  5075  			}
  5076  		case TypedValue_FieldPathSelectorDoubleValue:
  5077  			if item, ok := item.Value.(*TypedValue_DoubleValue); ok {
  5078  				item.DoubleValue = float64(0)
  5079  			}
  5080  		case TypedValue_FieldPathSelectorStringValue:
  5081  			if item, ok := item.Value.(*TypedValue_StringValue); ok {
  5082  				item.StringValue = ""
  5083  			}
  5084  		case TypedValue_FieldPathSelectorDistributionValue:
  5085  			if item, ok := item.Value.(*TypedValue_DistributionValue); ok {
  5086  				item.DistributionValue = nil
  5087  			}
  5088  		default:
  5089  			panic(fmt.Sprintf("Invalid selector for TypedValue: %d", fp.selector))
  5090  		}
  5091  	}
  5092  }
  5093  
  5094  func (fp *TypedValue_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  5095  	fp.ClearValue(item.(*TypedValue))
  5096  }
  5097  
  5098  // IsLeaf - whether field path is holds simple value
  5099  func (fp *TypedValue_FieldTerminalPath) IsLeaf() bool {
  5100  	return fp.selector == TypedValue_FieldPathSelectorBoolValue ||
  5101  		fp.selector == TypedValue_FieldPathSelectorInt64Value ||
  5102  		fp.selector == TypedValue_FieldPathSelectorDoubleValue ||
  5103  		fp.selector == TypedValue_FieldPathSelectorStringValue
  5104  }
  5105  
  5106  func (fp *TypedValue_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  5107  	return []gotenobject.FieldPath{fp}
  5108  }
  5109  
  5110  func (fp *TypedValue_FieldTerminalPath) WithIValue(value interface{}) TypedValue_FieldPathValue {
  5111  	switch fp.selector {
  5112  	case TypedValue_FieldPathSelectorBoolValue:
  5113  		return &TypedValue_FieldTerminalPathValue{TypedValue_FieldTerminalPath: *fp, value: value.(bool)}
  5114  	case TypedValue_FieldPathSelectorInt64Value:
  5115  		return &TypedValue_FieldTerminalPathValue{TypedValue_FieldTerminalPath: *fp, value: value.(int64)}
  5116  	case TypedValue_FieldPathSelectorDoubleValue:
  5117  		return &TypedValue_FieldTerminalPathValue{TypedValue_FieldTerminalPath: *fp, value: value.(float64)}
  5118  	case TypedValue_FieldPathSelectorStringValue:
  5119  		return &TypedValue_FieldTerminalPathValue{TypedValue_FieldTerminalPath: *fp, value: value.(string)}
  5120  	case TypedValue_FieldPathSelectorDistributionValue:
  5121  		return &TypedValue_FieldTerminalPathValue{TypedValue_FieldTerminalPath: *fp, value: value.(*Distribution)}
  5122  	default:
  5123  		panic(fmt.Sprintf("Invalid selector for TypedValue: %d", fp.selector))
  5124  	}
  5125  }
  5126  
  5127  func (fp *TypedValue_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  5128  	return fp.WithIValue(value)
  5129  }
  5130  
  5131  func (fp *TypedValue_FieldTerminalPath) WithIArrayOfValues(values interface{}) TypedValue_FieldPathArrayOfValues {
  5132  	fpaov := &TypedValue_FieldTerminalPathArrayOfValues{TypedValue_FieldTerminalPath: *fp}
  5133  	switch fp.selector {
  5134  	case TypedValue_FieldPathSelectorBoolValue:
  5135  		return &TypedValue_FieldTerminalPathArrayOfValues{TypedValue_FieldTerminalPath: *fp, values: values.([]bool)}
  5136  	case TypedValue_FieldPathSelectorInt64Value:
  5137  		return &TypedValue_FieldTerminalPathArrayOfValues{TypedValue_FieldTerminalPath: *fp, values: values.([]int64)}
  5138  	case TypedValue_FieldPathSelectorDoubleValue:
  5139  		return &TypedValue_FieldTerminalPathArrayOfValues{TypedValue_FieldTerminalPath: *fp, values: values.([]float64)}
  5140  	case TypedValue_FieldPathSelectorStringValue:
  5141  		return &TypedValue_FieldTerminalPathArrayOfValues{TypedValue_FieldTerminalPath: *fp, values: values.([]string)}
  5142  	case TypedValue_FieldPathSelectorDistributionValue:
  5143  		return &TypedValue_FieldTerminalPathArrayOfValues{TypedValue_FieldTerminalPath: *fp, values: values.([]*Distribution)}
  5144  	default:
  5145  		panic(fmt.Sprintf("Invalid selector for TypedValue: %d", fp.selector))
  5146  	}
  5147  	return fpaov
  5148  }
  5149  
  5150  func (fp *TypedValue_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  5151  	return fp.WithIArrayOfValues(values)
  5152  }
  5153  
  5154  func (fp *TypedValue_FieldTerminalPath) WithIArrayItemValue(value interface{}) TypedValue_FieldPathArrayItemValue {
  5155  	switch fp.selector {
  5156  	default:
  5157  		panic(fmt.Sprintf("Invalid selector for TypedValue: %d", fp.selector))
  5158  	}
  5159  }
  5160  
  5161  func (fp *TypedValue_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  5162  	return fp.WithIArrayItemValue(value)
  5163  }
  5164  
  5165  type TypedValue_FieldSubPath struct {
  5166  	selector TypedValue_FieldPathSelector
  5167  	subPath  gotenobject.FieldPath
  5168  }
  5169  
  5170  var _ TypedValue_FieldPath = (*TypedValue_FieldSubPath)(nil)
  5171  
  5172  func (fps *TypedValue_FieldSubPath) Selector() TypedValue_FieldPathSelector {
  5173  	return fps.selector
  5174  }
  5175  func (fps *TypedValue_FieldSubPath) AsDistributionValueSubPath() (Distribution_FieldPath, bool) {
  5176  	res, ok := fps.subPath.(Distribution_FieldPath)
  5177  	return res, ok
  5178  }
  5179  
  5180  // String returns path representation in proto convention
  5181  func (fps *TypedValue_FieldSubPath) String() string {
  5182  	return fps.selector.String() + "." + fps.subPath.String()
  5183  }
  5184  
  5185  // JSONString returns path representation is JSON convention
  5186  func (fps *TypedValue_FieldSubPath) JSONString() string {
  5187  	return strcase.ToLowerCamel(fps.selector.String()) + "." + fps.subPath.JSONString()
  5188  }
  5189  
  5190  // Get returns all values pointed by selected field from source TypedValue
  5191  func (fps *TypedValue_FieldSubPath) Get(source *TypedValue) (values []interface{}) {
  5192  	switch fps.selector {
  5193  	case TypedValue_FieldPathSelectorDistributionValue:
  5194  		values = append(values, fps.subPath.GetRaw(source.GetDistributionValue())...)
  5195  	default:
  5196  		panic(fmt.Sprintf("Invalid selector for TypedValue: %d", fps.selector))
  5197  	}
  5198  	return
  5199  }
  5200  
  5201  func (fps *TypedValue_FieldSubPath) GetRaw(source proto.Message) []interface{} {
  5202  	return fps.Get(source.(*TypedValue))
  5203  }
  5204  
  5205  // GetSingle returns value of selected field from source TypedValue
  5206  func (fps *TypedValue_FieldSubPath) GetSingle(source *TypedValue) (interface{}, bool) {
  5207  	switch fps.selector {
  5208  	case TypedValue_FieldPathSelectorDistributionValue:
  5209  		if source.GetDistributionValue() == nil {
  5210  			return nil, false
  5211  		}
  5212  		return fps.subPath.GetSingleRaw(source.GetDistributionValue())
  5213  	default:
  5214  		panic(fmt.Sprintf("Invalid selector for TypedValue: %d", fps.selector))
  5215  	}
  5216  }
  5217  
  5218  func (fps *TypedValue_FieldSubPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  5219  	return fps.GetSingle(source.(*TypedValue))
  5220  }
  5221  
  5222  // GetDefault returns a default value of the field type
  5223  func (fps *TypedValue_FieldSubPath) GetDefault() interface{} {
  5224  	return fps.subPath.GetDefault()
  5225  }
  5226  
  5227  func (fps *TypedValue_FieldSubPath) ClearValue(item *TypedValue) {
  5228  	if item != nil {
  5229  		switch fps.selector {
  5230  		case TypedValue_FieldPathSelectorDistributionValue:
  5231  			if item.Value != nil {
  5232  				if item, ok := item.Value.(*TypedValue_DistributionValue); ok {
  5233  					fps.subPath.ClearValueRaw(item.DistributionValue)
  5234  				}
  5235  			}
  5236  		default:
  5237  			panic(fmt.Sprintf("Invalid selector for TypedValue: %d", fps.selector))
  5238  		}
  5239  	}
  5240  }
  5241  
  5242  func (fps *TypedValue_FieldSubPath) ClearValueRaw(item proto.Message) {
  5243  	fps.ClearValue(item.(*TypedValue))
  5244  }
  5245  
  5246  // IsLeaf - whether field path is holds simple value
  5247  func (fps *TypedValue_FieldSubPath) IsLeaf() bool {
  5248  	return fps.subPath.IsLeaf()
  5249  }
  5250  
  5251  func (fps *TypedValue_FieldSubPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  5252  	iPaths := []gotenobject.FieldPath{&TypedValue_FieldTerminalPath{selector: fps.selector}}
  5253  	iPaths = append(iPaths, fps.subPath.SplitIntoTerminalIPaths()...)
  5254  	return iPaths
  5255  }
  5256  
  5257  func (fps *TypedValue_FieldSubPath) WithIValue(value interface{}) TypedValue_FieldPathValue {
  5258  	return &TypedValue_FieldSubPathValue{fps, fps.subPath.WithRawIValue(value)}
  5259  }
  5260  
  5261  func (fps *TypedValue_FieldSubPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  5262  	return fps.WithIValue(value)
  5263  }
  5264  
  5265  func (fps *TypedValue_FieldSubPath) WithIArrayOfValues(values interface{}) TypedValue_FieldPathArrayOfValues {
  5266  	return &TypedValue_FieldSubPathArrayOfValues{fps, fps.subPath.WithRawIArrayOfValues(values)}
  5267  }
  5268  
  5269  func (fps *TypedValue_FieldSubPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  5270  	return fps.WithIArrayOfValues(values)
  5271  }
  5272  
  5273  func (fps *TypedValue_FieldSubPath) WithIArrayItemValue(value interface{}) TypedValue_FieldPathArrayItemValue {
  5274  	return &TypedValue_FieldSubPathArrayItemValue{fps, fps.subPath.WithRawIArrayItemValue(value)}
  5275  }
  5276  
  5277  func (fps *TypedValue_FieldSubPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  5278  	return fps.WithIArrayItemValue(value)
  5279  }
  5280  
  5281  // TypedValue_FieldPathValue allows storing values for TypedValue fields according to their type
  5282  type TypedValue_FieldPathValue interface {
  5283  	TypedValue_FieldPath
  5284  	gotenobject.FieldPathValue
  5285  	SetTo(target **TypedValue)
  5286  	CompareWith(*TypedValue) (cmp int, comparable bool)
  5287  }
  5288  
  5289  func ParseTypedValue_FieldPathValue(pathStr, valueStr string) (TypedValue_FieldPathValue, error) {
  5290  	fp, err := ParseTypedValue_FieldPath(pathStr)
  5291  	if err != nil {
  5292  		return nil, err
  5293  	}
  5294  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  5295  	if err != nil {
  5296  		return nil, status.Errorf(codes.InvalidArgument, "error parsing TypedValue field path value from %s: %v", valueStr, err)
  5297  	}
  5298  	return fpv.(TypedValue_FieldPathValue), nil
  5299  }
  5300  
  5301  func MustParseTypedValue_FieldPathValue(pathStr, valueStr string) TypedValue_FieldPathValue {
  5302  	fpv, err := ParseTypedValue_FieldPathValue(pathStr, valueStr)
  5303  	if err != nil {
  5304  		panic(err)
  5305  	}
  5306  	return fpv
  5307  }
  5308  
  5309  type TypedValue_FieldTerminalPathValue struct {
  5310  	TypedValue_FieldTerminalPath
  5311  	value interface{}
  5312  }
  5313  
  5314  var _ TypedValue_FieldPathValue = (*TypedValue_FieldTerminalPathValue)(nil)
  5315  
  5316  // GetRawValue returns raw value stored under selected path for 'TypedValue' as interface{}
  5317  func (fpv *TypedValue_FieldTerminalPathValue) GetRawValue() interface{} {
  5318  	return fpv.value
  5319  }
  5320  func (fpv *TypedValue_FieldTerminalPathValue) AsBoolValueValue() (bool, bool) {
  5321  	res, ok := fpv.value.(bool)
  5322  	return res, ok
  5323  }
  5324  func (fpv *TypedValue_FieldTerminalPathValue) AsInt64ValueValue() (int64, bool) {
  5325  	res, ok := fpv.value.(int64)
  5326  	return res, ok
  5327  }
  5328  func (fpv *TypedValue_FieldTerminalPathValue) AsDoubleValueValue() (float64, bool) {
  5329  	res, ok := fpv.value.(float64)
  5330  	return res, ok
  5331  }
  5332  func (fpv *TypedValue_FieldTerminalPathValue) AsStringValueValue() (string, bool) {
  5333  	res, ok := fpv.value.(string)
  5334  	return res, ok
  5335  }
  5336  func (fpv *TypedValue_FieldTerminalPathValue) AsDistributionValueValue() (*Distribution, bool) {
  5337  	res, ok := fpv.value.(*Distribution)
  5338  	return res, ok
  5339  }
  5340  
  5341  // SetTo stores value for selected field for object TypedValue
  5342  func (fpv *TypedValue_FieldTerminalPathValue) SetTo(target **TypedValue) {
  5343  	if *target == nil {
  5344  		*target = new(TypedValue)
  5345  	}
  5346  	switch fpv.selector {
  5347  	case TypedValue_FieldPathSelectorBoolValue:
  5348  		if _, ok := (*target).Value.(*TypedValue_BoolValue); !ok {
  5349  			(*target).Value = &TypedValue_BoolValue{}
  5350  		}
  5351  		(*target).Value.(*TypedValue_BoolValue).BoolValue = fpv.value.(bool)
  5352  	case TypedValue_FieldPathSelectorInt64Value:
  5353  		if _, ok := (*target).Value.(*TypedValue_Int64Value); !ok {
  5354  			(*target).Value = &TypedValue_Int64Value{}
  5355  		}
  5356  		(*target).Value.(*TypedValue_Int64Value).Int64Value = fpv.value.(int64)
  5357  	case TypedValue_FieldPathSelectorDoubleValue:
  5358  		if _, ok := (*target).Value.(*TypedValue_DoubleValue); !ok {
  5359  			(*target).Value = &TypedValue_DoubleValue{}
  5360  		}
  5361  		(*target).Value.(*TypedValue_DoubleValue).DoubleValue = fpv.value.(float64)
  5362  	case TypedValue_FieldPathSelectorStringValue:
  5363  		if _, ok := (*target).Value.(*TypedValue_StringValue); !ok {
  5364  			(*target).Value = &TypedValue_StringValue{}
  5365  		}
  5366  		(*target).Value.(*TypedValue_StringValue).StringValue = fpv.value.(string)
  5367  	case TypedValue_FieldPathSelectorDistributionValue:
  5368  		if _, ok := (*target).Value.(*TypedValue_DistributionValue); !ok {
  5369  			(*target).Value = &TypedValue_DistributionValue{}
  5370  		}
  5371  		(*target).Value.(*TypedValue_DistributionValue).DistributionValue = fpv.value.(*Distribution)
  5372  	default:
  5373  		panic(fmt.Sprintf("Invalid selector for TypedValue: %d", fpv.selector))
  5374  	}
  5375  }
  5376  
  5377  func (fpv *TypedValue_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  5378  	typedObject := target.(*TypedValue)
  5379  	fpv.SetTo(&typedObject)
  5380  }
  5381  
  5382  // CompareWith compares value in the 'TypedValue_FieldTerminalPathValue' with the value under path in 'TypedValue'.
  5383  func (fpv *TypedValue_FieldTerminalPathValue) CompareWith(source *TypedValue) (int, bool) {
  5384  	switch fpv.selector {
  5385  	case TypedValue_FieldPathSelectorBoolValue:
  5386  		leftValue := fpv.value.(bool)
  5387  		rightValue := source.GetBoolValue()
  5388  		if (leftValue) == (rightValue) {
  5389  			return 0, true
  5390  		} else if !(leftValue) && (rightValue) {
  5391  			return -1, true
  5392  		} else {
  5393  			return 1, true
  5394  		}
  5395  	case TypedValue_FieldPathSelectorInt64Value:
  5396  		leftValue := fpv.value.(int64)
  5397  		rightValue := source.GetInt64Value()
  5398  		if (leftValue) == (rightValue) {
  5399  			return 0, true
  5400  		} else if (leftValue) < (rightValue) {
  5401  			return -1, true
  5402  		} else {
  5403  			return 1, true
  5404  		}
  5405  	case TypedValue_FieldPathSelectorDoubleValue:
  5406  		leftValue := fpv.value.(float64)
  5407  		rightValue := source.GetDoubleValue()
  5408  		if (leftValue) == (rightValue) {
  5409  			return 0, true
  5410  		} else if (leftValue) < (rightValue) {
  5411  			return -1, true
  5412  		} else {
  5413  			return 1, true
  5414  		}
  5415  	case TypedValue_FieldPathSelectorStringValue:
  5416  		leftValue := fpv.value.(string)
  5417  		rightValue := source.GetStringValue()
  5418  		if (leftValue) == (rightValue) {
  5419  			return 0, true
  5420  		} else if (leftValue) < (rightValue) {
  5421  			return -1, true
  5422  		} else {
  5423  			return 1, true
  5424  		}
  5425  	case TypedValue_FieldPathSelectorDistributionValue:
  5426  		return 0, false
  5427  	default:
  5428  		panic(fmt.Sprintf("Invalid selector for TypedValue: %d", fpv.selector))
  5429  	}
  5430  }
  5431  
  5432  func (fpv *TypedValue_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  5433  	return fpv.CompareWith(source.(*TypedValue))
  5434  }
  5435  
  5436  type TypedValue_FieldSubPathValue struct {
  5437  	TypedValue_FieldPath
  5438  	subPathValue gotenobject.FieldPathValue
  5439  }
  5440  
  5441  var _ TypedValue_FieldPathValue = (*TypedValue_FieldSubPathValue)(nil)
  5442  
  5443  func (fpvs *TypedValue_FieldSubPathValue) AsDistributionValuePathValue() (Distribution_FieldPathValue, bool) {
  5444  	res, ok := fpvs.subPathValue.(Distribution_FieldPathValue)
  5445  	return res, ok
  5446  }
  5447  
  5448  func (fpvs *TypedValue_FieldSubPathValue) SetTo(target **TypedValue) {
  5449  	if *target == nil {
  5450  		*target = new(TypedValue)
  5451  	}
  5452  	switch fpvs.Selector() {
  5453  	case TypedValue_FieldPathSelectorDistributionValue:
  5454  		if _, ok := (*target).Value.(*TypedValue_DistributionValue); !ok {
  5455  			(*target).Value = &TypedValue_DistributionValue{}
  5456  		}
  5457  		fpvs.subPathValue.(Distribution_FieldPathValue).SetTo(&(*target).Value.(*TypedValue_DistributionValue).DistributionValue)
  5458  	default:
  5459  		panic(fmt.Sprintf("Invalid selector for TypedValue: %d", fpvs.Selector()))
  5460  	}
  5461  }
  5462  
  5463  func (fpvs *TypedValue_FieldSubPathValue) SetToRaw(target proto.Message) {
  5464  	typedObject := target.(*TypedValue)
  5465  	fpvs.SetTo(&typedObject)
  5466  }
  5467  
  5468  func (fpvs *TypedValue_FieldSubPathValue) GetRawValue() interface{} {
  5469  	return fpvs.subPathValue.GetRawValue()
  5470  }
  5471  
  5472  func (fpvs *TypedValue_FieldSubPathValue) CompareWith(source *TypedValue) (int, bool) {
  5473  	switch fpvs.Selector() {
  5474  	case TypedValue_FieldPathSelectorDistributionValue:
  5475  		return fpvs.subPathValue.(Distribution_FieldPathValue).CompareWith(source.GetDistributionValue())
  5476  	default:
  5477  		panic(fmt.Sprintf("Invalid selector for TypedValue: %d", fpvs.Selector()))
  5478  	}
  5479  }
  5480  
  5481  func (fpvs *TypedValue_FieldSubPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  5482  	return fpvs.CompareWith(source.(*TypedValue))
  5483  }
  5484  
  5485  // TypedValue_FieldPathArrayItemValue allows storing single item in Path-specific values for TypedValue according to their type
  5486  // Present only for array (repeated) types.
  5487  type TypedValue_FieldPathArrayItemValue interface {
  5488  	gotenobject.FieldPathArrayItemValue
  5489  	TypedValue_FieldPath
  5490  	ContainsValue(*TypedValue) bool
  5491  }
  5492  
  5493  // ParseTypedValue_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  5494  func ParseTypedValue_FieldPathArrayItemValue(pathStr, valueStr string) (TypedValue_FieldPathArrayItemValue, error) {
  5495  	fp, err := ParseTypedValue_FieldPath(pathStr)
  5496  	if err != nil {
  5497  		return nil, err
  5498  	}
  5499  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  5500  	if err != nil {
  5501  		return nil, status.Errorf(codes.InvalidArgument, "error parsing TypedValue field path array item value from %s: %v", valueStr, err)
  5502  	}
  5503  	return fpaiv.(TypedValue_FieldPathArrayItemValue), nil
  5504  }
  5505  
  5506  func MustParseTypedValue_FieldPathArrayItemValue(pathStr, valueStr string) TypedValue_FieldPathArrayItemValue {
  5507  	fpaiv, err := ParseTypedValue_FieldPathArrayItemValue(pathStr, valueStr)
  5508  	if err != nil {
  5509  		panic(err)
  5510  	}
  5511  	return fpaiv
  5512  }
  5513  
  5514  type TypedValue_FieldTerminalPathArrayItemValue struct {
  5515  	TypedValue_FieldTerminalPath
  5516  	value interface{}
  5517  }
  5518  
  5519  var _ TypedValue_FieldPathArrayItemValue = (*TypedValue_FieldTerminalPathArrayItemValue)(nil)
  5520  
  5521  // GetRawValue returns stored element value for array in object TypedValue as interface{}
  5522  func (fpaiv *TypedValue_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  5523  	return fpaiv.value
  5524  }
  5525  
  5526  func (fpaiv *TypedValue_FieldTerminalPathArrayItemValue) GetSingle(source *TypedValue) (interface{}, bool) {
  5527  	return nil, false
  5528  }
  5529  
  5530  func (fpaiv *TypedValue_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  5531  	return fpaiv.GetSingle(source.(*TypedValue))
  5532  }
  5533  
  5534  // Contains returns a boolean indicating if value that is being held is present in given 'TypedValue'
  5535  func (fpaiv *TypedValue_FieldTerminalPathArrayItemValue) ContainsValue(source *TypedValue) bool {
  5536  	slice := fpaiv.TypedValue_FieldTerminalPath.Get(source)
  5537  	for _, v := range slice {
  5538  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  5539  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  5540  				return true
  5541  			}
  5542  		} else if reflect.DeepEqual(v, fpaiv.value) {
  5543  			return true
  5544  		}
  5545  	}
  5546  	return false
  5547  }
  5548  
  5549  type TypedValue_FieldSubPathArrayItemValue struct {
  5550  	TypedValue_FieldPath
  5551  	subPathItemValue gotenobject.FieldPathArrayItemValue
  5552  }
  5553  
  5554  // GetRawValue returns stored array item value
  5555  func (fpaivs *TypedValue_FieldSubPathArrayItemValue) GetRawItemValue() interface{} {
  5556  	return fpaivs.subPathItemValue.GetRawItemValue()
  5557  }
  5558  func (fpaivs *TypedValue_FieldSubPathArrayItemValue) AsDistributionValuePathItemValue() (Distribution_FieldPathArrayItemValue, bool) {
  5559  	res, ok := fpaivs.subPathItemValue.(Distribution_FieldPathArrayItemValue)
  5560  	return res, ok
  5561  }
  5562  
  5563  // Contains returns a boolean indicating if value that is being held is present in given 'TypedValue'
  5564  func (fpaivs *TypedValue_FieldSubPathArrayItemValue) ContainsValue(source *TypedValue) bool {
  5565  	switch fpaivs.Selector() {
  5566  	case TypedValue_FieldPathSelectorDistributionValue:
  5567  		return fpaivs.subPathItemValue.(Distribution_FieldPathArrayItemValue).ContainsValue(source.GetDistributionValue())
  5568  	default:
  5569  		panic(fmt.Sprintf("Invalid selector for TypedValue: %d", fpaivs.Selector()))
  5570  	}
  5571  }
  5572  
  5573  // TypedValue_FieldPathArrayOfValues allows storing slice of values for TypedValue fields according to their type
  5574  type TypedValue_FieldPathArrayOfValues interface {
  5575  	gotenobject.FieldPathArrayOfValues
  5576  	TypedValue_FieldPath
  5577  }
  5578  
  5579  func ParseTypedValue_FieldPathArrayOfValues(pathStr, valuesStr string) (TypedValue_FieldPathArrayOfValues, error) {
  5580  	fp, err := ParseTypedValue_FieldPath(pathStr)
  5581  	if err != nil {
  5582  		return nil, err
  5583  	}
  5584  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  5585  	if err != nil {
  5586  		return nil, status.Errorf(codes.InvalidArgument, "error parsing TypedValue field path array of values from %s: %v", valuesStr, err)
  5587  	}
  5588  	return fpaov.(TypedValue_FieldPathArrayOfValues), nil
  5589  }
  5590  
  5591  func MustParseTypedValue_FieldPathArrayOfValues(pathStr, valuesStr string) TypedValue_FieldPathArrayOfValues {
  5592  	fpaov, err := ParseTypedValue_FieldPathArrayOfValues(pathStr, valuesStr)
  5593  	if err != nil {
  5594  		panic(err)
  5595  	}
  5596  	return fpaov
  5597  }
  5598  
  5599  type TypedValue_FieldTerminalPathArrayOfValues struct {
  5600  	TypedValue_FieldTerminalPath
  5601  	values interface{}
  5602  }
  5603  
  5604  var _ TypedValue_FieldPathArrayOfValues = (*TypedValue_FieldTerminalPathArrayOfValues)(nil)
  5605  
  5606  func (fpaov *TypedValue_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  5607  	switch fpaov.selector {
  5608  	case TypedValue_FieldPathSelectorBoolValue:
  5609  		for _, v := range fpaov.values.([]bool) {
  5610  			values = append(values, v)
  5611  		}
  5612  	case TypedValue_FieldPathSelectorInt64Value:
  5613  		for _, v := range fpaov.values.([]int64) {
  5614  			values = append(values, v)
  5615  		}
  5616  	case TypedValue_FieldPathSelectorDoubleValue:
  5617  		for _, v := range fpaov.values.([]float64) {
  5618  			values = append(values, v)
  5619  		}
  5620  	case TypedValue_FieldPathSelectorStringValue:
  5621  		for _, v := range fpaov.values.([]string) {
  5622  			values = append(values, v)
  5623  		}
  5624  	case TypedValue_FieldPathSelectorDistributionValue:
  5625  		for _, v := range fpaov.values.([]*Distribution) {
  5626  			values = append(values, v)
  5627  		}
  5628  	}
  5629  	return
  5630  }
  5631  func (fpaov *TypedValue_FieldTerminalPathArrayOfValues) AsBoolValueArrayOfValues() ([]bool, bool) {
  5632  	res, ok := fpaov.values.([]bool)
  5633  	return res, ok
  5634  }
  5635  func (fpaov *TypedValue_FieldTerminalPathArrayOfValues) AsInt64ValueArrayOfValues() ([]int64, bool) {
  5636  	res, ok := fpaov.values.([]int64)
  5637  	return res, ok
  5638  }
  5639  func (fpaov *TypedValue_FieldTerminalPathArrayOfValues) AsDoubleValueArrayOfValues() ([]float64, bool) {
  5640  	res, ok := fpaov.values.([]float64)
  5641  	return res, ok
  5642  }
  5643  func (fpaov *TypedValue_FieldTerminalPathArrayOfValues) AsStringValueArrayOfValues() ([]string, bool) {
  5644  	res, ok := fpaov.values.([]string)
  5645  	return res, ok
  5646  }
  5647  func (fpaov *TypedValue_FieldTerminalPathArrayOfValues) AsDistributionValueArrayOfValues() ([]*Distribution, bool) {
  5648  	res, ok := fpaov.values.([]*Distribution)
  5649  	return res, ok
  5650  }
  5651  
  5652  type TypedValue_FieldSubPathArrayOfValues struct {
  5653  	TypedValue_FieldPath
  5654  	subPathArrayOfValues gotenobject.FieldPathArrayOfValues
  5655  }
  5656  
  5657  var _ TypedValue_FieldPathArrayOfValues = (*TypedValue_FieldSubPathArrayOfValues)(nil)
  5658  
  5659  func (fpsaov *TypedValue_FieldSubPathArrayOfValues) GetRawValues() []interface{} {
  5660  	return fpsaov.subPathArrayOfValues.GetRawValues()
  5661  }
  5662  func (fpsaov *TypedValue_FieldSubPathArrayOfValues) AsDistributionValuePathArrayOfValues() (Distribution_FieldPathArrayOfValues, bool) {
  5663  	res, ok := fpsaov.subPathArrayOfValues.(Distribution_FieldPathArrayOfValues)
  5664  	return res, ok
  5665  }
  5666  
  5667  // FieldPath provides implementation to handle
  5668  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  5669  type TimeInterval_FieldPath interface {
  5670  	gotenobject.FieldPath
  5671  	Selector() TimeInterval_FieldPathSelector
  5672  	Get(source *TimeInterval) []interface{}
  5673  	GetSingle(source *TimeInterval) (interface{}, bool)
  5674  	ClearValue(item *TimeInterval)
  5675  
  5676  	// Those methods build corresponding TimeInterval_FieldPathValue
  5677  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
  5678  	WithIValue(value interface{}) TimeInterval_FieldPathValue
  5679  	WithIArrayOfValues(values interface{}) TimeInterval_FieldPathArrayOfValues
  5680  	WithIArrayItemValue(value interface{}) TimeInterval_FieldPathArrayItemValue
  5681  }
  5682  
  5683  type TimeInterval_FieldPathSelector int32
  5684  
  5685  const (
  5686  	TimeInterval_FieldPathSelectorEndTime   TimeInterval_FieldPathSelector = 0
  5687  	TimeInterval_FieldPathSelectorStartTime TimeInterval_FieldPathSelector = 1
  5688  )
  5689  
  5690  func (s TimeInterval_FieldPathSelector) String() string {
  5691  	switch s {
  5692  	case TimeInterval_FieldPathSelectorEndTime:
  5693  		return "end_time"
  5694  	case TimeInterval_FieldPathSelectorStartTime:
  5695  		return "start_time"
  5696  	default:
  5697  		panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", s))
  5698  	}
  5699  }
  5700  
  5701  func BuildTimeInterval_FieldPath(fp gotenobject.RawFieldPath) (TimeInterval_FieldPath, error) {
  5702  	if len(fp) == 0 {
  5703  		return nil, status.Error(codes.InvalidArgument, "empty field path for object TimeInterval")
  5704  	}
  5705  	if len(fp) == 1 {
  5706  		switch fp[0] {
  5707  		case "end_time", "endTime", "end-time":
  5708  			return &TimeInterval_FieldTerminalPath{selector: TimeInterval_FieldPathSelectorEndTime}, nil
  5709  		case "start_time", "startTime", "start-time":
  5710  			return &TimeInterval_FieldTerminalPath{selector: TimeInterval_FieldPathSelectorStartTime}, nil
  5711  		}
  5712  	}
  5713  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object TimeInterval", fp)
  5714  }
  5715  
  5716  func ParseTimeInterval_FieldPath(rawField string) (TimeInterval_FieldPath, error) {
  5717  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  5718  	if err != nil {
  5719  		return nil, err
  5720  	}
  5721  	return BuildTimeInterval_FieldPath(fp)
  5722  }
  5723  
  5724  func MustParseTimeInterval_FieldPath(rawField string) TimeInterval_FieldPath {
  5725  	fp, err := ParseTimeInterval_FieldPath(rawField)
  5726  	if err != nil {
  5727  		panic(err)
  5728  	}
  5729  	return fp
  5730  }
  5731  
  5732  type TimeInterval_FieldTerminalPath struct {
  5733  	selector TimeInterval_FieldPathSelector
  5734  }
  5735  
  5736  var _ TimeInterval_FieldPath = (*TimeInterval_FieldTerminalPath)(nil)
  5737  
  5738  func (fp *TimeInterval_FieldTerminalPath) Selector() TimeInterval_FieldPathSelector {
  5739  	return fp.selector
  5740  }
  5741  
  5742  // String returns path representation in proto convention
  5743  func (fp *TimeInterval_FieldTerminalPath) String() string {
  5744  	return fp.selector.String()
  5745  }
  5746  
  5747  // JSONString returns path representation is JSON convention
  5748  func (fp *TimeInterval_FieldTerminalPath) JSONString() string {
  5749  	return strcase.ToLowerCamel(fp.String())
  5750  }
  5751  
  5752  // Get returns all values pointed by specific field from source TimeInterval
  5753  func (fp *TimeInterval_FieldTerminalPath) Get(source *TimeInterval) (values []interface{}) {
  5754  	if source != nil {
  5755  		switch fp.selector {
  5756  		case TimeInterval_FieldPathSelectorEndTime:
  5757  			if source.EndTime != nil {
  5758  				values = append(values, source.EndTime)
  5759  			}
  5760  		case TimeInterval_FieldPathSelectorStartTime:
  5761  			if source.StartTime != nil {
  5762  				values = append(values, source.StartTime)
  5763  			}
  5764  		default:
  5765  			panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fp.selector))
  5766  		}
  5767  	}
  5768  	return
  5769  }
  5770  
  5771  func (fp *TimeInterval_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  5772  	return fp.Get(source.(*TimeInterval))
  5773  }
  5774  
  5775  // GetSingle returns value pointed by specific field of from source TimeInterval
  5776  func (fp *TimeInterval_FieldTerminalPath) GetSingle(source *TimeInterval) (interface{}, bool) {
  5777  	switch fp.selector {
  5778  	case TimeInterval_FieldPathSelectorEndTime:
  5779  		res := source.GetEndTime()
  5780  		return res, res != nil
  5781  	case TimeInterval_FieldPathSelectorStartTime:
  5782  		res := source.GetStartTime()
  5783  		return res, res != nil
  5784  	default:
  5785  		panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fp.selector))
  5786  	}
  5787  }
  5788  
  5789  func (fp *TimeInterval_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  5790  	return fp.GetSingle(source.(*TimeInterval))
  5791  }
  5792  
  5793  // GetDefault returns a default value of the field type
  5794  func (fp *TimeInterval_FieldTerminalPath) GetDefault() interface{} {
  5795  	switch fp.selector {
  5796  	case TimeInterval_FieldPathSelectorEndTime:
  5797  		return (*timestamppb.Timestamp)(nil)
  5798  	case TimeInterval_FieldPathSelectorStartTime:
  5799  		return (*timestamppb.Timestamp)(nil)
  5800  	default:
  5801  		panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fp.selector))
  5802  	}
  5803  }
  5804  
  5805  func (fp *TimeInterval_FieldTerminalPath) ClearValue(item *TimeInterval) {
  5806  	if item != nil {
  5807  		switch fp.selector {
  5808  		case TimeInterval_FieldPathSelectorEndTime:
  5809  			item.EndTime = nil
  5810  		case TimeInterval_FieldPathSelectorStartTime:
  5811  			item.StartTime = nil
  5812  		default:
  5813  			panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fp.selector))
  5814  		}
  5815  	}
  5816  }
  5817  
  5818  func (fp *TimeInterval_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  5819  	fp.ClearValue(item.(*TimeInterval))
  5820  }
  5821  
  5822  // IsLeaf - whether field path is holds simple value
  5823  func (fp *TimeInterval_FieldTerminalPath) IsLeaf() bool {
  5824  	return fp.selector == TimeInterval_FieldPathSelectorEndTime ||
  5825  		fp.selector == TimeInterval_FieldPathSelectorStartTime
  5826  }
  5827  
  5828  func (fp *TimeInterval_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  5829  	return []gotenobject.FieldPath{fp}
  5830  }
  5831  
  5832  func (fp *TimeInterval_FieldTerminalPath) WithIValue(value interface{}) TimeInterval_FieldPathValue {
  5833  	switch fp.selector {
  5834  	case TimeInterval_FieldPathSelectorEndTime:
  5835  		return &TimeInterval_FieldTerminalPathValue{TimeInterval_FieldTerminalPath: *fp, value: value.(*timestamppb.Timestamp)}
  5836  	case TimeInterval_FieldPathSelectorStartTime:
  5837  		return &TimeInterval_FieldTerminalPathValue{TimeInterval_FieldTerminalPath: *fp, value: value.(*timestamppb.Timestamp)}
  5838  	default:
  5839  		panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fp.selector))
  5840  	}
  5841  }
  5842  
  5843  func (fp *TimeInterval_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  5844  	return fp.WithIValue(value)
  5845  }
  5846  
  5847  func (fp *TimeInterval_FieldTerminalPath) WithIArrayOfValues(values interface{}) TimeInterval_FieldPathArrayOfValues {
  5848  	fpaov := &TimeInterval_FieldTerminalPathArrayOfValues{TimeInterval_FieldTerminalPath: *fp}
  5849  	switch fp.selector {
  5850  	case TimeInterval_FieldPathSelectorEndTime:
  5851  		return &TimeInterval_FieldTerminalPathArrayOfValues{TimeInterval_FieldTerminalPath: *fp, values: values.([]*timestamppb.Timestamp)}
  5852  	case TimeInterval_FieldPathSelectorStartTime:
  5853  		return &TimeInterval_FieldTerminalPathArrayOfValues{TimeInterval_FieldTerminalPath: *fp, values: values.([]*timestamppb.Timestamp)}
  5854  	default:
  5855  		panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fp.selector))
  5856  	}
  5857  	return fpaov
  5858  }
  5859  
  5860  func (fp *TimeInterval_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  5861  	return fp.WithIArrayOfValues(values)
  5862  }
  5863  
  5864  func (fp *TimeInterval_FieldTerminalPath) WithIArrayItemValue(value interface{}) TimeInterval_FieldPathArrayItemValue {
  5865  	switch fp.selector {
  5866  	default:
  5867  		panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fp.selector))
  5868  	}
  5869  }
  5870  
  5871  func (fp *TimeInterval_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  5872  	return fp.WithIArrayItemValue(value)
  5873  }
  5874  
  5875  // TimeInterval_FieldPathValue allows storing values for TimeInterval fields according to their type
  5876  type TimeInterval_FieldPathValue interface {
  5877  	TimeInterval_FieldPath
  5878  	gotenobject.FieldPathValue
  5879  	SetTo(target **TimeInterval)
  5880  	CompareWith(*TimeInterval) (cmp int, comparable bool)
  5881  }
  5882  
  5883  func ParseTimeInterval_FieldPathValue(pathStr, valueStr string) (TimeInterval_FieldPathValue, error) {
  5884  	fp, err := ParseTimeInterval_FieldPath(pathStr)
  5885  	if err != nil {
  5886  		return nil, err
  5887  	}
  5888  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  5889  	if err != nil {
  5890  		return nil, status.Errorf(codes.InvalidArgument, "error parsing TimeInterval field path value from %s: %v", valueStr, err)
  5891  	}
  5892  	return fpv.(TimeInterval_FieldPathValue), nil
  5893  }
  5894  
  5895  func MustParseTimeInterval_FieldPathValue(pathStr, valueStr string) TimeInterval_FieldPathValue {
  5896  	fpv, err := ParseTimeInterval_FieldPathValue(pathStr, valueStr)
  5897  	if err != nil {
  5898  		panic(err)
  5899  	}
  5900  	return fpv
  5901  }
  5902  
  5903  type TimeInterval_FieldTerminalPathValue struct {
  5904  	TimeInterval_FieldTerminalPath
  5905  	value interface{}
  5906  }
  5907  
  5908  var _ TimeInterval_FieldPathValue = (*TimeInterval_FieldTerminalPathValue)(nil)
  5909  
  5910  // GetRawValue returns raw value stored under selected path for 'TimeInterval' as interface{}
  5911  func (fpv *TimeInterval_FieldTerminalPathValue) GetRawValue() interface{} {
  5912  	return fpv.value
  5913  }
  5914  func (fpv *TimeInterval_FieldTerminalPathValue) AsEndTimeValue() (*timestamppb.Timestamp, bool) {
  5915  	res, ok := fpv.value.(*timestamppb.Timestamp)
  5916  	return res, ok
  5917  }
  5918  func (fpv *TimeInterval_FieldTerminalPathValue) AsStartTimeValue() (*timestamppb.Timestamp, bool) {
  5919  	res, ok := fpv.value.(*timestamppb.Timestamp)
  5920  	return res, ok
  5921  }
  5922  
  5923  // SetTo stores value for selected field for object TimeInterval
  5924  func (fpv *TimeInterval_FieldTerminalPathValue) SetTo(target **TimeInterval) {
  5925  	if *target == nil {
  5926  		*target = new(TimeInterval)
  5927  	}
  5928  	switch fpv.selector {
  5929  	case TimeInterval_FieldPathSelectorEndTime:
  5930  		(*target).EndTime = fpv.value.(*timestamppb.Timestamp)
  5931  	case TimeInterval_FieldPathSelectorStartTime:
  5932  		(*target).StartTime = fpv.value.(*timestamppb.Timestamp)
  5933  	default:
  5934  		panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fpv.selector))
  5935  	}
  5936  }
  5937  
  5938  func (fpv *TimeInterval_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  5939  	typedObject := target.(*TimeInterval)
  5940  	fpv.SetTo(&typedObject)
  5941  }
  5942  
  5943  // CompareWith compares value in the 'TimeInterval_FieldTerminalPathValue' with the value under path in 'TimeInterval'.
  5944  func (fpv *TimeInterval_FieldTerminalPathValue) CompareWith(source *TimeInterval) (int, bool) {
  5945  	switch fpv.selector {
  5946  	case TimeInterval_FieldPathSelectorEndTime:
  5947  		leftValue := fpv.value.(*timestamppb.Timestamp)
  5948  		rightValue := source.GetEndTime()
  5949  		if leftValue == nil {
  5950  			if rightValue != nil {
  5951  				return -1, true
  5952  			}
  5953  			return 0, true
  5954  		}
  5955  		if rightValue == nil {
  5956  			return 1, true
  5957  		}
  5958  		if leftValue.AsTime().Equal(rightValue.AsTime()) {
  5959  			return 0, true
  5960  		} else if leftValue.AsTime().Before(rightValue.AsTime()) {
  5961  			return -1, true
  5962  		} else {
  5963  			return 1, true
  5964  		}
  5965  	case TimeInterval_FieldPathSelectorStartTime:
  5966  		leftValue := fpv.value.(*timestamppb.Timestamp)
  5967  		rightValue := source.GetStartTime()
  5968  		if leftValue == nil {
  5969  			if rightValue != nil {
  5970  				return -1, true
  5971  			}
  5972  			return 0, true
  5973  		}
  5974  		if rightValue == nil {
  5975  			return 1, true
  5976  		}
  5977  		if leftValue.AsTime().Equal(rightValue.AsTime()) {
  5978  			return 0, true
  5979  		} else if leftValue.AsTime().Before(rightValue.AsTime()) {
  5980  			return -1, true
  5981  		} else {
  5982  			return 1, true
  5983  		}
  5984  	default:
  5985  		panic(fmt.Sprintf("Invalid selector for TimeInterval: %d", fpv.selector))
  5986  	}
  5987  }
  5988  
  5989  func (fpv *TimeInterval_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  5990  	return fpv.CompareWith(source.(*TimeInterval))
  5991  }
  5992  
  5993  // TimeInterval_FieldPathArrayItemValue allows storing single item in Path-specific values for TimeInterval according to their type
  5994  // Present only for array (repeated) types.
  5995  type TimeInterval_FieldPathArrayItemValue interface {
  5996  	gotenobject.FieldPathArrayItemValue
  5997  	TimeInterval_FieldPath
  5998  	ContainsValue(*TimeInterval) bool
  5999  }
  6000  
  6001  // ParseTimeInterval_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  6002  func ParseTimeInterval_FieldPathArrayItemValue(pathStr, valueStr string) (TimeInterval_FieldPathArrayItemValue, error) {
  6003  	fp, err := ParseTimeInterval_FieldPath(pathStr)
  6004  	if err != nil {
  6005  		return nil, err
  6006  	}
  6007  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  6008  	if err != nil {
  6009  		return nil, status.Errorf(codes.InvalidArgument, "error parsing TimeInterval field path array item value from %s: %v", valueStr, err)
  6010  	}
  6011  	return fpaiv.(TimeInterval_FieldPathArrayItemValue), nil
  6012  }
  6013  
  6014  func MustParseTimeInterval_FieldPathArrayItemValue(pathStr, valueStr string) TimeInterval_FieldPathArrayItemValue {
  6015  	fpaiv, err := ParseTimeInterval_FieldPathArrayItemValue(pathStr, valueStr)
  6016  	if err != nil {
  6017  		panic(err)
  6018  	}
  6019  	return fpaiv
  6020  }
  6021  
  6022  type TimeInterval_FieldTerminalPathArrayItemValue struct {
  6023  	TimeInterval_FieldTerminalPath
  6024  	value interface{}
  6025  }
  6026  
  6027  var _ TimeInterval_FieldPathArrayItemValue = (*TimeInterval_FieldTerminalPathArrayItemValue)(nil)
  6028  
  6029  // GetRawValue returns stored element value for array in object TimeInterval as interface{}
  6030  func (fpaiv *TimeInterval_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  6031  	return fpaiv.value
  6032  }
  6033  
  6034  func (fpaiv *TimeInterval_FieldTerminalPathArrayItemValue) GetSingle(source *TimeInterval) (interface{}, bool) {
  6035  	return nil, false
  6036  }
  6037  
  6038  func (fpaiv *TimeInterval_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  6039  	return fpaiv.GetSingle(source.(*TimeInterval))
  6040  }
  6041  
  6042  // Contains returns a boolean indicating if value that is being held is present in given 'TimeInterval'
  6043  func (fpaiv *TimeInterval_FieldTerminalPathArrayItemValue) ContainsValue(source *TimeInterval) bool {
  6044  	slice := fpaiv.TimeInterval_FieldTerminalPath.Get(source)
  6045  	for _, v := range slice {
  6046  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  6047  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  6048  				return true
  6049  			}
  6050  		} else if reflect.DeepEqual(v, fpaiv.value) {
  6051  			return true
  6052  		}
  6053  	}
  6054  	return false
  6055  }
  6056  
  6057  // TimeInterval_FieldPathArrayOfValues allows storing slice of values for TimeInterval fields according to their type
  6058  type TimeInterval_FieldPathArrayOfValues interface {
  6059  	gotenobject.FieldPathArrayOfValues
  6060  	TimeInterval_FieldPath
  6061  }
  6062  
  6063  func ParseTimeInterval_FieldPathArrayOfValues(pathStr, valuesStr string) (TimeInterval_FieldPathArrayOfValues, error) {
  6064  	fp, err := ParseTimeInterval_FieldPath(pathStr)
  6065  	if err != nil {
  6066  		return nil, err
  6067  	}
  6068  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  6069  	if err != nil {
  6070  		return nil, status.Errorf(codes.InvalidArgument, "error parsing TimeInterval field path array of values from %s: %v", valuesStr, err)
  6071  	}
  6072  	return fpaov.(TimeInterval_FieldPathArrayOfValues), nil
  6073  }
  6074  
  6075  func MustParseTimeInterval_FieldPathArrayOfValues(pathStr, valuesStr string) TimeInterval_FieldPathArrayOfValues {
  6076  	fpaov, err := ParseTimeInterval_FieldPathArrayOfValues(pathStr, valuesStr)
  6077  	if err != nil {
  6078  		panic(err)
  6079  	}
  6080  	return fpaov
  6081  }
  6082  
  6083  type TimeInterval_FieldTerminalPathArrayOfValues struct {
  6084  	TimeInterval_FieldTerminalPath
  6085  	values interface{}
  6086  }
  6087  
  6088  var _ TimeInterval_FieldPathArrayOfValues = (*TimeInterval_FieldTerminalPathArrayOfValues)(nil)
  6089  
  6090  func (fpaov *TimeInterval_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  6091  	switch fpaov.selector {
  6092  	case TimeInterval_FieldPathSelectorEndTime:
  6093  		for _, v := range fpaov.values.([]*timestamppb.Timestamp) {
  6094  			values = append(values, v)
  6095  		}
  6096  	case TimeInterval_FieldPathSelectorStartTime:
  6097  		for _, v := range fpaov.values.([]*timestamppb.Timestamp) {
  6098  			values = append(values, v)
  6099  		}
  6100  	}
  6101  	return
  6102  }
  6103  func (fpaov *TimeInterval_FieldTerminalPathArrayOfValues) AsEndTimeArrayOfValues() ([]*timestamppb.Timestamp, bool) {
  6104  	res, ok := fpaov.values.([]*timestamppb.Timestamp)
  6105  	return res, ok
  6106  }
  6107  func (fpaov *TimeInterval_FieldTerminalPathArrayOfValues) AsStartTimeArrayOfValues() ([]*timestamppb.Timestamp, bool) {
  6108  	res, ok := fpaov.values.([]*timestamppb.Timestamp)
  6109  	return res, ok
  6110  }
  6111  
  6112  // FieldPath provides implementation to handle
  6113  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  6114  type TimeRange_FieldPath interface {
  6115  	gotenobject.FieldPath
  6116  	Selector() TimeRange_FieldPathSelector
  6117  	Get(source *TimeRange) []interface{}
  6118  	GetSingle(source *TimeRange) (interface{}, bool)
  6119  	ClearValue(item *TimeRange)
  6120  
  6121  	// Those methods build corresponding TimeRange_FieldPathValue
  6122  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
  6123  	WithIValue(value interface{}) TimeRange_FieldPathValue
  6124  	WithIArrayOfValues(values interface{}) TimeRange_FieldPathArrayOfValues
  6125  	WithIArrayItemValue(value interface{}) TimeRange_FieldPathArrayItemValue
  6126  }
  6127  
  6128  type TimeRange_FieldPathSelector int32
  6129  
  6130  const (
  6131  	TimeRange_FieldPathSelectorStartTime TimeRange_FieldPathSelector = 0
  6132  	TimeRange_FieldPathSelectorEndTime   TimeRange_FieldPathSelector = 1
  6133  )
  6134  
  6135  func (s TimeRange_FieldPathSelector) String() string {
  6136  	switch s {
  6137  	case TimeRange_FieldPathSelectorStartTime:
  6138  		return "start_time"
  6139  	case TimeRange_FieldPathSelectorEndTime:
  6140  		return "end_time"
  6141  	default:
  6142  		panic(fmt.Sprintf("Invalid selector for TimeRange: %d", s))
  6143  	}
  6144  }
  6145  
  6146  func BuildTimeRange_FieldPath(fp gotenobject.RawFieldPath) (TimeRange_FieldPath, error) {
  6147  	if len(fp) == 0 {
  6148  		return nil, status.Error(codes.InvalidArgument, "empty field path for object TimeRange")
  6149  	}
  6150  	if len(fp) == 1 {
  6151  		switch fp[0] {
  6152  		case "start_time", "startTime", "start-time":
  6153  			return &TimeRange_FieldTerminalPath{selector: TimeRange_FieldPathSelectorStartTime}, nil
  6154  		case "end_time", "endTime", "end-time":
  6155  			return &TimeRange_FieldTerminalPath{selector: TimeRange_FieldPathSelectorEndTime}, nil
  6156  		}
  6157  	}
  6158  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object TimeRange", fp)
  6159  }
  6160  
  6161  func ParseTimeRange_FieldPath(rawField string) (TimeRange_FieldPath, error) {
  6162  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  6163  	if err != nil {
  6164  		return nil, err
  6165  	}
  6166  	return BuildTimeRange_FieldPath(fp)
  6167  }
  6168  
  6169  func MustParseTimeRange_FieldPath(rawField string) TimeRange_FieldPath {
  6170  	fp, err := ParseTimeRange_FieldPath(rawField)
  6171  	if err != nil {
  6172  		panic(err)
  6173  	}
  6174  	return fp
  6175  }
  6176  
  6177  type TimeRange_FieldTerminalPath struct {
  6178  	selector TimeRange_FieldPathSelector
  6179  }
  6180  
  6181  var _ TimeRange_FieldPath = (*TimeRange_FieldTerminalPath)(nil)
  6182  
  6183  func (fp *TimeRange_FieldTerminalPath) Selector() TimeRange_FieldPathSelector {
  6184  	return fp.selector
  6185  }
  6186  
  6187  // String returns path representation in proto convention
  6188  func (fp *TimeRange_FieldTerminalPath) String() string {
  6189  	return fp.selector.String()
  6190  }
  6191  
  6192  // JSONString returns path representation is JSON convention
  6193  func (fp *TimeRange_FieldTerminalPath) JSONString() string {
  6194  	return strcase.ToLowerCamel(fp.String())
  6195  }
  6196  
  6197  // Get returns all values pointed by specific field from source TimeRange
  6198  func (fp *TimeRange_FieldTerminalPath) Get(source *TimeRange) (values []interface{}) {
  6199  	if source != nil {
  6200  		switch fp.selector {
  6201  		case TimeRange_FieldPathSelectorStartTime:
  6202  			if source.StartTime != nil {
  6203  				values = append(values, source.StartTime)
  6204  			}
  6205  		case TimeRange_FieldPathSelectorEndTime:
  6206  			if source.EndTime != nil {
  6207  				values = append(values, source.EndTime)
  6208  			}
  6209  		default:
  6210  			panic(fmt.Sprintf("Invalid selector for TimeRange: %d", fp.selector))
  6211  		}
  6212  	}
  6213  	return
  6214  }
  6215  
  6216  func (fp *TimeRange_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  6217  	return fp.Get(source.(*TimeRange))
  6218  }
  6219  
  6220  // GetSingle returns value pointed by specific field of from source TimeRange
  6221  func (fp *TimeRange_FieldTerminalPath) GetSingle(source *TimeRange) (interface{}, bool) {
  6222  	switch fp.selector {
  6223  	case TimeRange_FieldPathSelectorStartTime:
  6224  		res := source.GetStartTime()
  6225  		return res, res != nil
  6226  	case TimeRange_FieldPathSelectorEndTime:
  6227  		res := source.GetEndTime()
  6228  		return res, res != nil
  6229  	default:
  6230  		panic(fmt.Sprintf("Invalid selector for TimeRange: %d", fp.selector))
  6231  	}
  6232  }
  6233  
  6234  func (fp *TimeRange_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  6235  	return fp.GetSingle(source.(*TimeRange))
  6236  }
  6237  
  6238  // GetDefault returns a default value of the field type
  6239  func (fp *TimeRange_FieldTerminalPath) GetDefault() interface{} {
  6240  	switch fp.selector {
  6241  	case TimeRange_FieldPathSelectorStartTime:
  6242  		return (*timestamppb.Timestamp)(nil)
  6243  	case TimeRange_FieldPathSelectorEndTime:
  6244  		return (*timestamppb.Timestamp)(nil)
  6245  	default:
  6246  		panic(fmt.Sprintf("Invalid selector for TimeRange: %d", fp.selector))
  6247  	}
  6248  }
  6249  
  6250  func (fp *TimeRange_FieldTerminalPath) ClearValue(item *TimeRange) {
  6251  	if item != nil {
  6252  		switch fp.selector {
  6253  		case TimeRange_FieldPathSelectorStartTime:
  6254  			item.StartTime = nil
  6255  		case TimeRange_FieldPathSelectorEndTime:
  6256  			item.EndTime = nil
  6257  		default:
  6258  			panic(fmt.Sprintf("Invalid selector for TimeRange: %d", fp.selector))
  6259  		}
  6260  	}
  6261  }
  6262  
  6263  func (fp *TimeRange_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  6264  	fp.ClearValue(item.(*TimeRange))
  6265  }
  6266  
  6267  // IsLeaf - whether field path is holds simple value
  6268  func (fp *TimeRange_FieldTerminalPath) IsLeaf() bool {
  6269  	return fp.selector == TimeRange_FieldPathSelectorStartTime ||
  6270  		fp.selector == TimeRange_FieldPathSelectorEndTime
  6271  }
  6272  
  6273  func (fp *TimeRange_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  6274  	return []gotenobject.FieldPath{fp}
  6275  }
  6276  
  6277  func (fp *TimeRange_FieldTerminalPath) WithIValue(value interface{}) TimeRange_FieldPathValue {
  6278  	switch fp.selector {
  6279  	case TimeRange_FieldPathSelectorStartTime:
  6280  		return &TimeRange_FieldTerminalPathValue{TimeRange_FieldTerminalPath: *fp, value: value.(*timestamppb.Timestamp)}
  6281  	case TimeRange_FieldPathSelectorEndTime:
  6282  		return &TimeRange_FieldTerminalPathValue{TimeRange_FieldTerminalPath: *fp, value: value.(*timestamppb.Timestamp)}
  6283  	default:
  6284  		panic(fmt.Sprintf("Invalid selector for TimeRange: %d", fp.selector))
  6285  	}
  6286  }
  6287  
  6288  func (fp *TimeRange_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  6289  	return fp.WithIValue(value)
  6290  }
  6291  
  6292  func (fp *TimeRange_FieldTerminalPath) WithIArrayOfValues(values interface{}) TimeRange_FieldPathArrayOfValues {
  6293  	fpaov := &TimeRange_FieldTerminalPathArrayOfValues{TimeRange_FieldTerminalPath: *fp}
  6294  	switch fp.selector {
  6295  	case TimeRange_FieldPathSelectorStartTime:
  6296  		return &TimeRange_FieldTerminalPathArrayOfValues{TimeRange_FieldTerminalPath: *fp, values: values.([]*timestamppb.Timestamp)}
  6297  	case TimeRange_FieldPathSelectorEndTime:
  6298  		return &TimeRange_FieldTerminalPathArrayOfValues{TimeRange_FieldTerminalPath: *fp, values: values.([]*timestamppb.Timestamp)}
  6299  	default:
  6300  		panic(fmt.Sprintf("Invalid selector for TimeRange: %d", fp.selector))
  6301  	}
  6302  	return fpaov
  6303  }
  6304  
  6305  func (fp *TimeRange_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  6306  	return fp.WithIArrayOfValues(values)
  6307  }
  6308  
  6309  func (fp *TimeRange_FieldTerminalPath) WithIArrayItemValue(value interface{}) TimeRange_FieldPathArrayItemValue {
  6310  	switch fp.selector {
  6311  	default:
  6312  		panic(fmt.Sprintf("Invalid selector for TimeRange: %d", fp.selector))
  6313  	}
  6314  }
  6315  
  6316  func (fp *TimeRange_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  6317  	return fp.WithIArrayItemValue(value)
  6318  }
  6319  
  6320  // TimeRange_FieldPathValue allows storing values for TimeRange fields according to their type
  6321  type TimeRange_FieldPathValue interface {
  6322  	TimeRange_FieldPath
  6323  	gotenobject.FieldPathValue
  6324  	SetTo(target **TimeRange)
  6325  	CompareWith(*TimeRange) (cmp int, comparable bool)
  6326  }
  6327  
  6328  func ParseTimeRange_FieldPathValue(pathStr, valueStr string) (TimeRange_FieldPathValue, error) {
  6329  	fp, err := ParseTimeRange_FieldPath(pathStr)
  6330  	if err != nil {
  6331  		return nil, err
  6332  	}
  6333  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  6334  	if err != nil {
  6335  		return nil, status.Errorf(codes.InvalidArgument, "error parsing TimeRange field path value from %s: %v", valueStr, err)
  6336  	}
  6337  	return fpv.(TimeRange_FieldPathValue), nil
  6338  }
  6339  
  6340  func MustParseTimeRange_FieldPathValue(pathStr, valueStr string) TimeRange_FieldPathValue {
  6341  	fpv, err := ParseTimeRange_FieldPathValue(pathStr, valueStr)
  6342  	if err != nil {
  6343  		panic(err)
  6344  	}
  6345  	return fpv
  6346  }
  6347  
  6348  type TimeRange_FieldTerminalPathValue struct {
  6349  	TimeRange_FieldTerminalPath
  6350  	value interface{}
  6351  }
  6352  
  6353  var _ TimeRange_FieldPathValue = (*TimeRange_FieldTerminalPathValue)(nil)
  6354  
  6355  // GetRawValue returns raw value stored under selected path for 'TimeRange' as interface{}
  6356  func (fpv *TimeRange_FieldTerminalPathValue) GetRawValue() interface{} {
  6357  	return fpv.value
  6358  }
  6359  func (fpv *TimeRange_FieldTerminalPathValue) AsStartTimeValue() (*timestamppb.Timestamp, bool) {
  6360  	res, ok := fpv.value.(*timestamppb.Timestamp)
  6361  	return res, ok
  6362  }
  6363  func (fpv *TimeRange_FieldTerminalPathValue) AsEndTimeValue() (*timestamppb.Timestamp, bool) {
  6364  	res, ok := fpv.value.(*timestamppb.Timestamp)
  6365  	return res, ok
  6366  }
  6367  
  6368  // SetTo stores value for selected field for object TimeRange
  6369  func (fpv *TimeRange_FieldTerminalPathValue) SetTo(target **TimeRange) {
  6370  	if *target == nil {
  6371  		*target = new(TimeRange)
  6372  	}
  6373  	switch fpv.selector {
  6374  	case TimeRange_FieldPathSelectorStartTime:
  6375  		(*target).StartTime = fpv.value.(*timestamppb.Timestamp)
  6376  	case TimeRange_FieldPathSelectorEndTime:
  6377  		(*target).EndTime = fpv.value.(*timestamppb.Timestamp)
  6378  	default:
  6379  		panic(fmt.Sprintf("Invalid selector for TimeRange: %d", fpv.selector))
  6380  	}
  6381  }
  6382  
  6383  func (fpv *TimeRange_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  6384  	typedObject := target.(*TimeRange)
  6385  	fpv.SetTo(&typedObject)
  6386  }
  6387  
  6388  // CompareWith compares value in the 'TimeRange_FieldTerminalPathValue' with the value under path in 'TimeRange'.
  6389  func (fpv *TimeRange_FieldTerminalPathValue) CompareWith(source *TimeRange) (int, bool) {
  6390  	switch fpv.selector {
  6391  	case TimeRange_FieldPathSelectorStartTime:
  6392  		leftValue := fpv.value.(*timestamppb.Timestamp)
  6393  		rightValue := source.GetStartTime()
  6394  		if leftValue == nil {
  6395  			if rightValue != nil {
  6396  				return -1, true
  6397  			}
  6398  			return 0, true
  6399  		}
  6400  		if rightValue == nil {
  6401  			return 1, true
  6402  		}
  6403  		if leftValue.AsTime().Equal(rightValue.AsTime()) {
  6404  			return 0, true
  6405  		} else if leftValue.AsTime().Before(rightValue.AsTime()) {
  6406  			return -1, true
  6407  		} else {
  6408  			return 1, true
  6409  		}
  6410  	case TimeRange_FieldPathSelectorEndTime:
  6411  		leftValue := fpv.value.(*timestamppb.Timestamp)
  6412  		rightValue := source.GetEndTime()
  6413  		if leftValue == nil {
  6414  			if rightValue != nil {
  6415  				return -1, true
  6416  			}
  6417  			return 0, true
  6418  		}
  6419  		if rightValue == nil {
  6420  			return 1, true
  6421  		}
  6422  		if leftValue.AsTime().Equal(rightValue.AsTime()) {
  6423  			return 0, true
  6424  		} else if leftValue.AsTime().Before(rightValue.AsTime()) {
  6425  			return -1, true
  6426  		} else {
  6427  			return 1, true
  6428  		}
  6429  	default:
  6430  		panic(fmt.Sprintf("Invalid selector for TimeRange: %d", fpv.selector))
  6431  	}
  6432  }
  6433  
  6434  func (fpv *TimeRange_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  6435  	return fpv.CompareWith(source.(*TimeRange))
  6436  }
  6437  
  6438  // TimeRange_FieldPathArrayItemValue allows storing single item in Path-specific values for TimeRange according to their type
  6439  // Present only for array (repeated) types.
  6440  type TimeRange_FieldPathArrayItemValue interface {
  6441  	gotenobject.FieldPathArrayItemValue
  6442  	TimeRange_FieldPath
  6443  	ContainsValue(*TimeRange) bool
  6444  }
  6445  
  6446  // ParseTimeRange_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  6447  func ParseTimeRange_FieldPathArrayItemValue(pathStr, valueStr string) (TimeRange_FieldPathArrayItemValue, error) {
  6448  	fp, err := ParseTimeRange_FieldPath(pathStr)
  6449  	if err != nil {
  6450  		return nil, err
  6451  	}
  6452  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  6453  	if err != nil {
  6454  		return nil, status.Errorf(codes.InvalidArgument, "error parsing TimeRange field path array item value from %s: %v", valueStr, err)
  6455  	}
  6456  	return fpaiv.(TimeRange_FieldPathArrayItemValue), nil
  6457  }
  6458  
  6459  func MustParseTimeRange_FieldPathArrayItemValue(pathStr, valueStr string) TimeRange_FieldPathArrayItemValue {
  6460  	fpaiv, err := ParseTimeRange_FieldPathArrayItemValue(pathStr, valueStr)
  6461  	if err != nil {
  6462  		panic(err)
  6463  	}
  6464  	return fpaiv
  6465  }
  6466  
  6467  type TimeRange_FieldTerminalPathArrayItemValue struct {
  6468  	TimeRange_FieldTerminalPath
  6469  	value interface{}
  6470  }
  6471  
  6472  var _ TimeRange_FieldPathArrayItemValue = (*TimeRange_FieldTerminalPathArrayItemValue)(nil)
  6473  
  6474  // GetRawValue returns stored element value for array in object TimeRange as interface{}
  6475  func (fpaiv *TimeRange_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  6476  	return fpaiv.value
  6477  }
  6478  
  6479  func (fpaiv *TimeRange_FieldTerminalPathArrayItemValue) GetSingle(source *TimeRange) (interface{}, bool) {
  6480  	return nil, false
  6481  }
  6482  
  6483  func (fpaiv *TimeRange_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  6484  	return fpaiv.GetSingle(source.(*TimeRange))
  6485  }
  6486  
  6487  // Contains returns a boolean indicating if value that is being held is present in given 'TimeRange'
  6488  func (fpaiv *TimeRange_FieldTerminalPathArrayItemValue) ContainsValue(source *TimeRange) bool {
  6489  	slice := fpaiv.TimeRange_FieldTerminalPath.Get(source)
  6490  	for _, v := range slice {
  6491  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  6492  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  6493  				return true
  6494  			}
  6495  		} else if reflect.DeepEqual(v, fpaiv.value) {
  6496  			return true
  6497  		}
  6498  	}
  6499  	return false
  6500  }
  6501  
  6502  // TimeRange_FieldPathArrayOfValues allows storing slice of values for TimeRange fields according to their type
  6503  type TimeRange_FieldPathArrayOfValues interface {
  6504  	gotenobject.FieldPathArrayOfValues
  6505  	TimeRange_FieldPath
  6506  }
  6507  
  6508  func ParseTimeRange_FieldPathArrayOfValues(pathStr, valuesStr string) (TimeRange_FieldPathArrayOfValues, error) {
  6509  	fp, err := ParseTimeRange_FieldPath(pathStr)
  6510  	if err != nil {
  6511  		return nil, err
  6512  	}
  6513  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  6514  	if err != nil {
  6515  		return nil, status.Errorf(codes.InvalidArgument, "error parsing TimeRange field path array of values from %s: %v", valuesStr, err)
  6516  	}
  6517  	return fpaov.(TimeRange_FieldPathArrayOfValues), nil
  6518  }
  6519  
  6520  func MustParseTimeRange_FieldPathArrayOfValues(pathStr, valuesStr string) TimeRange_FieldPathArrayOfValues {
  6521  	fpaov, err := ParseTimeRange_FieldPathArrayOfValues(pathStr, valuesStr)
  6522  	if err != nil {
  6523  		panic(err)
  6524  	}
  6525  	return fpaov
  6526  }
  6527  
  6528  type TimeRange_FieldTerminalPathArrayOfValues struct {
  6529  	TimeRange_FieldTerminalPath
  6530  	values interface{}
  6531  }
  6532  
  6533  var _ TimeRange_FieldPathArrayOfValues = (*TimeRange_FieldTerminalPathArrayOfValues)(nil)
  6534  
  6535  func (fpaov *TimeRange_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  6536  	switch fpaov.selector {
  6537  	case TimeRange_FieldPathSelectorStartTime:
  6538  		for _, v := range fpaov.values.([]*timestamppb.Timestamp) {
  6539  			values = append(values, v)
  6540  		}
  6541  	case TimeRange_FieldPathSelectorEndTime:
  6542  		for _, v := range fpaov.values.([]*timestamppb.Timestamp) {
  6543  			values = append(values, v)
  6544  		}
  6545  	}
  6546  	return
  6547  }
  6548  func (fpaov *TimeRange_FieldTerminalPathArrayOfValues) AsStartTimeArrayOfValues() ([]*timestamppb.Timestamp, bool) {
  6549  	res, ok := fpaov.values.([]*timestamppb.Timestamp)
  6550  	return res, ok
  6551  }
  6552  func (fpaov *TimeRange_FieldTerminalPathArrayOfValues) AsEndTimeArrayOfValues() ([]*timestamppb.Timestamp, bool) {
  6553  	res, ok := fpaov.values.([]*timestamppb.Timestamp)
  6554  	return res, ok
  6555  }
  6556  
  6557  // FieldPath provides implementation to handle
  6558  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  6559  type Aggregation_FieldPath interface {
  6560  	gotenobject.FieldPath
  6561  	Selector() Aggregation_FieldPathSelector
  6562  	Get(source *Aggregation) []interface{}
  6563  	GetSingle(source *Aggregation) (interface{}, bool)
  6564  	ClearValue(item *Aggregation)
  6565  
  6566  	// Those methods build corresponding Aggregation_FieldPathValue
  6567  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
  6568  	WithIValue(value interface{}) Aggregation_FieldPathValue
  6569  	WithIArrayOfValues(values interface{}) Aggregation_FieldPathArrayOfValues
  6570  	WithIArrayItemValue(value interface{}) Aggregation_FieldPathArrayItemValue
  6571  }
  6572  
  6573  type Aggregation_FieldPathSelector int32
  6574  
  6575  const (
  6576  	Aggregation_FieldPathSelectorAlignmentPeriod    Aggregation_FieldPathSelector = 0
  6577  	Aggregation_FieldPathSelectorPerSeriesAligner   Aggregation_FieldPathSelector = 1
  6578  	Aggregation_FieldPathSelectorCrossSeriesReducer Aggregation_FieldPathSelector = 2
  6579  	Aggregation_FieldPathSelectorGroupByFields      Aggregation_FieldPathSelector = 3
  6580  )
  6581  
  6582  func (s Aggregation_FieldPathSelector) String() string {
  6583  	switch s {
  6584  	case Aggregation_FieldPathSelectorAlignmentPeriod:
  6585  		return "alignment_period"
  6586  	case Aggregation_FieldPathSelectorPerSeriesAligner:
  6587  		return "per_series_aligner"
  6588  	case Aggregation_FieldPathSelectorCrossSeriesReducer:
  6589  		return "cross_series_reducer"
  6590  	case Aggregation_FieldPathSelectorGroupByFields:
  6591  		return "group_by_fields"
  6592  	default:
  6593  		panic(fmt.Sprintf("Invalid selector for Aggregation: %d", s))
  6594  	}
  6595  }
  6596  
  6597  func BuildAggregation_FieldPath(fp gotenobject.RawFieldPath) (Aggregation_FieldPath, error) {
  6598  	if len(fp) == 0 {
  6599  		return nil, status.Error(codes.InvalidArgument, "empty field path for object Aggregation")
  6600  	}
  6601  	if len(fp) == 1 {
  6602  		switch fp[0] {
  6603  		case "alignment_period", "alignmentPeriod", "alignment-period":
  6604  			return &Aggregation_FieldTerminalPath{selector: Aggregation_FieldPathSelectorAlignmentPeriod}, nil
  6605  		case "per_series_aligner", "perSeriesAligner", "per-series-aligner":
  6606  			return &Aggregation_FieldTerminalPath{selector: Aggregation_FieldPathSelectorPerSeriesAligner}, nil
  6607  		case "cross_series_reducer", "crossSeriesReducer", "cross-series-reducer":
  6608  			return &Aggregation_FieldTerminalPath{selector: Aggregation_FieldPathSelectorCrossSeriesReducer}, nil
  6609  		case "group_by_fields", "groupByFields", "group-by-fields":
  6610  			return &Aggregation_FieldTerminalPath{selector: Aggregation_FieldPathSelectorGroupByFields}, nil
  6611  		}
  6612  	}
  6613  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object Aggregation", fp)
  6614  }
  6615  
  6616  func ParseAggregation_FieldPath(rawField string) (Aggregation_FieldPath, error) {
  6617  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  6618  	if err != nil {
  6619  		return nil, err
  6620  	}
  6621  	return BuildAggregation_FieldPath(fp)
  6622  }
  6623  
  6624  func MustParseAggregation_FieldPath(rawField string) Aggregation_FieldPath {
  6625  	fp, err := ParseAggregation_FieldPath(rawField)
  6626  	if err != nil {
  6627  		panic(err)
  6628  	}
  6629  	return fp
  6630  }
  6631  
  6632  type Aggregation_FieldTerminalPath struct {
  6633  	selector Aggregation_FieldPathSelector
  6634  }
  6635  
  6636  var _ Aggregation_FieldPath = (*Aggregation_FieldTerminalPath)(nil)
  6637  
  6638  func (fp *Aggregation_FieldTerminalPath) Selector() Aggregation_FieldPathSelector {
  6639  	return fp.selector
  6640  }
  6641  
  6642  // String returns path representation in proto convention
  6643  func (fp *Aggregation_FieldTerminalPath) String() string {
  6644  	return fp.selector.String()
  6645  }
  6646  
  6647  // JSONString returns path representation is JSON convention
  6648  func (fp *Aggregation_FieldTerminalPath) JSONString() string {
  6649  	return strcase.ToLowerCamel(fp.String())
  6650  }
  6651  
  6652  // Get returns all values pointed by specific field from source Aggregation
  6653  func (fp *Aggregation_FieldTerminalPath) Get(source *Aggregation) (values []interface{}) {
  6654  	if source != nil {
  6655  		switch fp.selector {
  6656  		case Aggregation_FieldPathSelectorAlignmentPeriod:
  6657  			if source.AlignmentPeriod != nil {
  6658  				values = append(values, source.AlignmentPeriod)
  6659  			}
  6660  		case Aggregation_FieldPathSelectorPerSeriesAligner:
  6661  			values = append(values, source.PerSeriesAligner)
  6662  		case Aggregation_FieldPathSelectorCrossSeriesReducer:
  6663  			values = append(values, source.CrossSeriesReducer)
  6664  		case Aggregation_FieldPathSelectorGroupByFields:
  6665  			for _, value := range source.GetGroupByFields() {
  6666  				values = append(values, value)
  6667  			}
  6668  		default:
  6669  			panic(fmt.Sprintf("Invalid selector for Aggregation: %d", fp.selector))
  6670  		}
  6671  	}
  6672  	return
  6673  }
  6674  
  6675  func (fp *Aggregation_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  6676  	return fp.Get(source.(*Aggregation))
  6677  }
  6678  
  6679  // GetSingle returns value pointed by specific field of from source Aggregation
  6680  func (fp *Aggregation_FieldTerminalPath) GetSingle(source *Aggregation) (interface{}, bool) {
  6681  	switch fp.selector {
  6682  	case Aggregation_FieldPathSelectorAlignmentPeriod:
  6683  		res := source.GetAlignmentPeriod()
  6684  		return res, res != nil
  6685  	case Aggregation_FieldPathSelectorPerSeriesAligner:
  6686  		return source.GetPerSeriesAligner(), source != nil
  6687  	case Aggregation_FieldPathSelectorCrossSeriesReducer:
  6688  		return source.GetCrossSeriesReducer(), source != nil
  6689  	case Aggregation_FieldPathSelectorGroupByFields:
  6690  		res := source.GetGroupByFields()
  6691  		return res, res != nil
  6692  	default:
  6693  		panic(fmt.Sprintf("Invalid selector for Aggregation: %d", fp.selector))
  6694  	}
  6695  }
  6696  
  6697  func (fp *Aggregation_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  6698  	return fp.GetSingle(source.(*Aggregation))
  6699  }
  6700  
  6701  // GetDefault returns a default value of the field type
  6702  func (fp *Aggregation_FieldTerminalPath) GetDefault() interface{} {
  6703  	switch fp.selector {
  6704  	case Aggregation_FieldPathSelectorAlignmentPeriod:
  6705  		return (*durationpb.Duration)(nil)
  6706  	case Aggregation_FieldPathSelectorPerSeriesAligner:
  6707  		return Aggregation_ALIGN_NONE
  6708  	case Aggregation_FieldPathSelectorCrossSeriesReducer:
  6709  		return Aggregation_REDUCE_NONE
  6710  	case Aggregation_FieldPathSelectorGroupByFields:
  6711  		return ([]string)(nil)
  6712  	default:
  6713  		panic(fmt.Sprintf("Invalid selector for Aggregation: %d", fp.selector))
  6714  	}
  6715  }
  6716  
  6717  func (fp *Aggregation_FieldTerminalPath) ClearValue(item *Aggregation) {
  6718  	if item != nil {
  6719  		switch fp.selector {
  6720  		case Aggregation_FieldPathSelectorAlignmentPeriod:
  6721  			item.AlignmentPeriod = nil
  6722  		case Aggregation_FieldPathSelectorPerSeriesAligner:
  6723  			item.PerSeriesAligner = Aggregation_ALIGN_NONE
  6724  		case Aggregation_FieldPathSelectorCrossSeriesReducer:
  6725  			item.CrossSeriesReducer = Aggregation_REDUCE_NONE
  6726  		case Aggregation_FieldPathSelectorGroupByFields:
  6727  			item.GroupByFields = nil
  6728  		default:
  6729  			panic(fmt.Sprintf("Invalid selector for Aggregation: %d", fp.selector))
  6730  		}
  6731  	}
  6732  }
  6733  
  6734  func (fp *Aggregation_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  6735  	fp.ClearValue(item.(*Aggregation))
  6736  }
  6737  
  6738  // IsLeaf - whether field path is holds simple value
  6739  func (fp *Aggregation_FieldTerminalPath) IsLeaf() bool {
  6740  	return fp.selector == Aggregation_FieldPathSelectorAlignmentPeriod ||
  6741  		fp.selector == Aggregation_FieldPathSelectorPerSeriesAligner ||
  6742  		fp.selector == Aggregation_FieldPathSelectorCrossSeriesReducer ||
  6743  		fp.selector == Aggregation_FieldPathSelectorGroupByFields
  6744  }
  6745  
  6746  func (fp *Aggregation_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  6747  	return []gotenobject.FieldPath{fp}
  6748  }
  6749  
  6750  func (fp *Aggregation_FieldTerminalPath) WithIValue(value interface{}) Aggregation_FieldPathValue {
  6751  	switch fp.selector {
  6752  	case Aggregation_FieldPathSelectorAlignmentPeriod:
  6753  		return &Aggregation_FieldTerminalPathValue{Aggregation_FieldTerminalPath: *fp, value: value.(*durationpb.Duration)}
  6754  	case Aggregation_FieldPathSelectorPerSeriesAligner:
  6755  		return &Aggregation_FieldTerminalPathValue{Aggregation_FieldTerminalPath: *fp, value: value.(Aggregation_Aligner)}
  6756  	case Aggregation_FieldPathSelectorCrossSeriesReducer:
  6757  		return &Aggregation_FieldTerminalPathValue{Aggregation_FieldTerminalPath: *fp, value: value.(Aggregation_Reducer)}
  6758  	case Aggregation_FieldPathSelectorGroupByFields:
  6759  		return &Aggregation_FieldTerminalPathValue{Aggregation_FieldTerminalPath: *fp, value: value.([]string)}
  6760  	default:
  6761  		panic(fmt.Sprintf("Invalid selector for Aggregation: %d", fp.selector))
  6762  	}
  6763  }
  6764  
  6765  func (fp *Aggregation_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  6766  	return fp.WithIValue(value)
  6767  }
  6768  
  6769  func (fp *Aggregation_FieldTerminalPath) WithIArrayOfValues(values interface{}) Aggregation_FieldPathArrayOfValues {
  6770  	fpaov := &Aggregation_FieldTerminalPathArrayOfValues{Aggregation_FieldTerminalPath: *fp}
  6771  	switch fp.selector {
  6772  	case Aggregation_FieldPathSelectorAlignmentPeriod:
  6773  		return &Aggregation_FieldTerminalPathArrayOfValues{Aggregation_FieldTerminalPath: *fp, values: values.([]*durationpb.Duration)}
  6774  	case Aggregation_FieldPathSelectorPerSeriesAligner:
  6775  		return &Aggregation_FieldTerminalPathArrayOfValues{Aggregation_FieldTerminalPath: *fp, values: values.([]Aggregation_Aligner)}
  6776  	case Aggregation_FieldPathSelectorCrossSeriesReducer:
  6777  		return &Aggregation_FieldTerminalPathArrayOfValues{Aggregation_FieldTerminalPath: *fp, values: values.([]Aggregation_Reducer)}
  6778  	case Aggregation_FieldPathSelectorGroupByFields:
  6779  		return &Aggregation_FieldTerminalPathArrayOfValues{Aggregation_FieldTerminalPath: *fp, values: values.([][]string)}
  6780  	default:
  6781  		panic(fmt.Sprintf("Invalid selector for Aggregation: %d", fp.selector))
  6782  	}
  6783  	return fpaov
  6784  }
  6785  
  6786  func (fp *Aggregation_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  6787  	return fp.WithIArrayOfValues(values)
  6788  }
  6789  
  6790  func (fp *Aggregation_FieldTerminalPath) WithIArrayItemValue(value interface{}) Aggregation_FieldPathArrayItemValue {
  6791  	switch fp.selector {
  6792  	case Aggregation_FieldPathSelectorGroupByFields:
  6793  		return &Aggregation_FieldTerminalPathArrayItemValue{Aggregation_FieldTerminalPath: *fp, value: value.(string)}
  6794  	default:
  6795  		panic(fmt.Sprintf("Invalid selector for Aggregation: %d", fp.selector))
  6796  	}
  6797  }
  6798  
  6799  func (fp *Aggregation_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  6800  	return fp.WithIArrayItemValue(value)
  6801  }
  6802  
  6803  // Aggregation_FieldPathValue allows storing values for Aggregation fields according to their type
  6804  type Aggregation_FieldPathValue interface {
  6805  	Aggregation_FieldPath
  6806  	gotenobject.FieldPathValue
  6807  	SetTo(target **Aggregation)
  6808  	CompareWith(*Aggregation) (cmp int, comparable bool)
  6809  }
  6810  
  6811  func ParseAggregation_FieldPathValue(pathStr, valueStr string) (Aggregation_FieldPathValue, error) {
  6812  	fp, err := ParseAggregation_FieldPath(pathStr)
  6813  	if err != nil {
  6814  		return nil, err
  6815  	}
  6816  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  6817  	if err != nil {
  6818  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Aggregation field path value from %s: %v", valueStr, err)
  6819  	}
  6820  	return fpv.(Aggregation_FieldPathValue), nil
  6821  }
  6822  
  6823  func MustParseAggregation_FieldPathValue(pathStr, valueStr string) Aggregation_FieldPathValue {
  6824  	fpv, err := ParseAggregation_FieldPathValue(pathStr, valueStr)
  6825  	if err != nil {
  6826  		panic(err)
  6827  	}
  6828  	return fpv
  6829  }
  6830  
  6831  type Aggregation_FieldTerminalPathValue struct {
  6832  	Aggregation_FieldTerminalPath
  6833  	value interface{}
  6834  }
  6835  
  6836  var _ Aggregation_FieldPathValue = (*Aggregation_FieldTerminalPathValue)(nil)
  6837  
  6838  // GetRawValue returns raw value stored under selected path for 'Aggregation' as interface{}
  6839  func (fpv *Aggregation_FieldTerminalPathValue) GetRawValue() interface{} {
  6840  	return fpv.value
  6841  }
  6842  func (fpv *Aggregation_FieldTerminalPathValue) AsAlignmentPeriodValue() (*durationpb.Duration, bool) {
  6843  	res, ok := fpv.value.(*durationpb.Duration)
  6844  	return res, ok
  6845  }
  6846  func (fpv *Aggregation_FieldTerminalPathValue) AsPerSeriesAlignerValue() (Aggregation_Aligner, bool) {
  6847  	res, ok := fpv.value.(Aggregation_Aligner)
  6848  	return res, ok
  6849  }
  6850  func (fpv *Aggregation_FieldTerminalPathValue) AsCrossSeriesReducerValue() (Aggregation_Reducer, bool) {
  6851  	res, ok := fpv.value.(Aggregation_Reducer)
  6852  	return res, ok
  6853  }
  6854  func (fpv *Aggregation_FieldTerminalPathValue) AsGroupByFieldsValue() ([]string, bool) {
  6855  	res, ok := fpv.value.([]string)
  6856  	return res, ok
  6857  }
  6858  
  6859  // SetTo stores value for selected field for object Aggregation
  6860  func (fpv *Aggregation_FieldTerminalPathValue) SetTo(target **Aggregation) {
  6861  	if *target == nil {
  6862  		*target = new(Aggregation)
  6863  	}
  6864  	switch fpv.selector {
  6865  	case Aggregation_FieldPathSelectorAlignmentPeriod:
  6866  		(*target).AlignmentPeriod = fpv.value.(*durationpb.Duration)
  6867  	case Aggregation_FieldPathSelectorPerSeriesAligner:
  6868  		(*target).PerSeriesAligner = fpv.value.(Aggregation_Aligner)
  6869  	case Aggregation_FieldPathSelectorCrossSeriesReducer:
  6870  		(*target).CrossSeriesReducer = fpv.value.(Aggregation_Reducer)
  6871  	case Aggregation_FieldPathSelectorGroupByFields:
  6872  		(*target).GroupByFields = fpv.value.([]string)
  6873  	default:
  6874  		panic(fmt.Sprintf("Invalid selector for Aggregation: %d", fpv.selector))
  6875  	}
  6876  }
  6877  
  6878  func (fpv *Aggregation_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  6879  	typedObject := target.(*Aggregation)
  6880  	fpv.SetTo(&typedObject)
  6881  }
  6882  
  6883  // CompareWith compares value in the 'Aggregation_FieldTerminalPathValue' with the value under path in 'Aggregation'.
  6884  func (fpv *Aggregation_FieldTerminalPathValue) CompareWith(source *Aggregation) (int, bool) {
  6885  	switch fpv.selector {
  6886  	case Aggregation_FieldPathSelectorAlignmentPeriod:
  6887  		leftValue := fpv.value.(*durationpb.Duration)
  6888  		rightValue := source.GetAlignmentPeriod()
  6889  		if leftValue == nil {
  6890  			if rightValue != nil {
  6891  				return -1, true
  6892  			}
  6893  			return 0, true
  6894  		}
  6895  		if rightValue == nil {
  6896  			return 1, true
  6897  		}
  6898  		if leftValue.AsDuration() == rightValue.AsDuration() {
  6899  			return 0, true
  6900  		} else if leftValue.AsDuration() < rightValue.AsDuration() {
  6901  			return -1, true
  6902  		} else {
  6903  			return 1, true
  6904  		}
  6905  	case Aggregation_FieldPathSelectorPerSeriesAligner:
  6906  		leftValue := fpv.value.(Aggregation_Aligner)
  6907  		rightValue := source.GetPerSeriesAligner()
  6908  		if (leftValue) == (rightValue) {
  6909  			return 0, true
  6910  		} else if (leftValue) < (rightValue) {
  6911  			return -1, true
  6912  		} else {
  6913  			return 1, true
  6914  		}
  6915  	case Aggregation_FieldPathSelectorCrossSeriesReducer:
  6916  		leftValue := fpv.value.(Aggregation_Reducer)
  6917  		rightValue := source.GetCrossSeriesReducer()
  6918  		if (leftValue) == (rightValue) {
  6919  			return 0, true
  6920  		} else if (leftValue) < (rightValue) {
  6921  			return -1, true
  6922  		} else {
  6923  			return 1, true
  6924  		}
  6925  	case Aggregation_FieldPathSelectorGroupByFields:
  6926  		return 0, false
  6927  	default:
  6928  		panic(fmt.Sprintf("Invalid selector for Aggregation: %d", fpv.selector))
  6929  	}
  6930  }
  6931  
  6932  func (fpv *Aggregation_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  6933  	return fpv.CompareWith(source.(*Aggregation))
  6934  }
  6935  
  6936  // Aggregation_FieldPathArrayItemValue allows storing single item in Path-specific values for Aggregation according to their type
  6937  // Present only for array (repeated) types.
  6938  type Aggregation_FieldPathArrayItemValue interface {
  6939  	gotenobject.FieldPathArrayItemValue
  6940  	Aggregation_FieldPath
  6941  	ContainsValue(*Aggregation) bool
  6942  }
  6943  
  6944  // ParseAggregation_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  6945  func ParseAggregation_FieldPathArrayItemValue(pathStr, valueStr string) (Aggregation_FieldPathArrayItemValue, error) {
  6946  	fp, err := ParseAggregation_FieldPath(pathStr)
  6947  	if err != nil {
  6948  		return nil, err
  6949  	}
  6950  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  6951  	if err != nil {
  6952  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Aggregation field path array item value from %s: %v", valueStr, err)
  6953  	}
  6954  	return fpaiv.(Aggregation_FieldPathArrayItemValue), nil
  6955  }
  6956  
  6957  func MustParseAggregation_FieldPathArrayItemValue(pathStr, valueStr string) Aggregation_FieldPathArrayItemValue {
  6958  	fpaiv, err := ParseAggregation_FieldPathArrayItemValue(pathStr, valueStr)
  6959  	if err != nil {
  6960  		panic(err)
  6961  	}
  6962  	return fpaiv
  6963  }
  6964  
  6965  type Aggregation_FieldTerminalPathArrayItemValue struct {
  6966  	Aggregation_FieldTerminalPath
  6967  	value interface{}
  6968  }
  6969  
  6970  var _ Aggregation_FieldPathArrayItemValue = (*Aggregation_FieldTerminalPathArrayItemValue)(nil)
  6971  
  6972  // GetRawValue returns stored element value for array in object Aggregation as interface{}
  6973  func (fpaiv *Aggregation_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  6974  	return fpaiv.value
  6975  }
  6976  func (fpaiv *Aggregation_FieldTerminalPathArrayItemValue) AsGroupByFieldsItemValue() (string, bool) {
  6977  	res, ok := fpaiv.value.(string)
  6978  	return res, ok
  6979  }
  6980  
  6981  func (fpaiv *Aggregation_FieldTerminalPathArrayItemValue) GetSingle(source *Aggregation) (interface{}, bool) {
  6982  	return nil, false
  6983  }
  6984  
  6985  func (fpaiv *Aggregation_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  6986  	return fpaiv.GetSingle(source.(*Aggregation))
  6987  }
  6988  
  6989  // Contains returns a boolean indicating if value that is being held is present in given 'Aggregation'
  6990  func (fpaiv *Aggregation_FieldTerminalPathArrayItemValue) ContainsValue(source *Aggregation) bool {
  6991  	slice := fpaiv.Aggregation_FieldTerminalPath.Get(source)
  6992  	for _, v := range slice {
  6993  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  6994  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  6995  				return true
  6996  			}
  6997  		} else if reflect.DeepEqual(v, fpaiv.value) {
  6998  			return true
  6999  		}
  7000  	}
  7001  	return false
  7002  }
  7003  
  7004  // Aggregation_FieldPathArrayOfValues allows storing slice of values for Aggregation fields according to their type
  7005  type Aggregation_FieldPathArrayOfValues interface {
  7006  	gotenobject.FieldPathArrayOfValues
  7007  	Aggregation_FieldPath
  7008  }
  7009  
  7010  func ParseAggregation_FieldPathArrayOfValues(pathStr, valuesStr string) (Aggregation_FieldPathArrayOfValues, error) {
  7011  	fp, err := ParseAggregation_FieldPath(pathStr)
  7012  	if err != nil {
  7013  		return nil, err
  7014  	}
  7015  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  7016  	if err != nil {
  7017  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Aggregation field path array of values from %s: %v", valuesStr, err)
  7018  	}
  7019  	return fpaov.(Aggregation_FieldPathArrayOfValues), nil
  7020  }
  7021  
  7022  func MustParseAggregation_FieldPathArrayOfValues(pathStr, valuesStr string) Aggregation_FieldPathArrayOfValues {
  7023  	fpaov, err := ParseAggregation_FieldPathArrayOfValues(pathStr, valuesStr)
  7024  	if err != nil {
  7025  		panic(err)
  7026  	}
  7027  	return fpaov
  7028  }
  7029  
  7030  type Aggregation_FieldTerminalPathArrayOfValues struct {
  7031  	Aggregation_FieldTerminalPath
  7032  	values interface{}
  7033  }
  7034  
  7035  var _ Aggregation_FieldPathArrayOfValues = (*Aggregation_FieldTerminalPathArrayOfValues)(nil)
  7036  
  7037  func (fpaov *Aggregation_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  7038  	switch fpaov.selector {
  7039  	case Aggregation_FieldPathSelectorAlignmentPeriod:
  7040  		for _, v := range fpaov.values.([]*durationpb.Duration) {
  7041  			values = append(values, v)
  7042  		}
  7043  	case Aggregation_FieldPathSelectorPerSeriesAligner:
  7044  		for _, v := range fpaov.values.([]Aggregation_Aligner) {
  7045  			values = append(values, v)
  7046  		}
  7047  	case Aggregation_FieldPathSelectorCrossSeriesReducer:
  7048  		for _, v := range fpaov.values.([]Aggregation_Reducer) {
  7049  			values = append(values, v)
  7050  		}
  7051  	case Aggregation_FieldPathSelectorGroupByFields:
  7052  		for _, v := range fpaov.values.([][]string) {
  7053  			values = append(values, v)
  7054  		}
  7055  	}
  7056  	return
  7057  }
  7058  func (fpaov *Aggregation_FieldTerminalPathArrayOfValues) AsAlignmentPeriodArrayOfValues() ([]*durationpb.Duration, bool) {
  7059  	res, ok := fpaov.values.([]*durationpb.Duration)
  7060  	return res, ok
  7061  }
  7062  func (fpaov *Aggregation_FieldTerminalPathArrayOfValues) AsPerSeriesAlignerArrayOfValues() ([]Aggregation_Aligner, bool) {
  7063  	res, ok := fpaov.values.([]Aggregation_Aligner)
  7064  	return res, ok
  7065  }
  7066  func (fpaov *Aggregation_FieldTerminalPathArrayOfValues) AsCrossSeriesReducerArrayOfValues() ([]Aggregation_Reducer, bool) {
  7067  	res, ok := fpaov.values.([]Aggregation_Reducer)
  7068  	return res, ok
  7069  }
  7070  func (fpaov *Aggregation_FieldTerminalPathArrayOfValues) AsGroupByFieldsArrayOfValues() ([][]string, bool) {
  7071  	res, ok := fpaov.values.([][]string)
  7072  	return res, ok
  7073  }
  7074  
  7075  // FieldPath provides implementation to handle
  7076  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  7077  type Pagination_FieldPath interface {
  7078  	gotenobject.FieldPath
  7079  	Selector() Pagination_FieldPathSelector
  7080  	Get(source *Pagination) []interface{}
  7081  	GetSingle(source *Pagination) (interface{}, bool)
  7082  	ClearValue(item *Pagination)
  7083  
  7084  	// Those methods build corresponding Pagination_FieldPathValue
  7085  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
  7086  	WithIValue(value interface{}) Pagination_FieldPathValue
  7087  	WithIArrayOfValues(values interface{}) Pagination_FieldPathArrayOfValues
  7088  	WithIArrayItemValue(value interface{}) Pagination_FieldPathArrayItemValue
  7089  }
  7090  
  7091  type Pagination_FieldPathSelector int32
  7092  
  7093  const (
  7094  	Pagination_FieldPathSelectorView            Pagination_FieldPathSelector = 0
  7095  	Pagination_FieldPathSelectorFunction        Pagination_FieldPathSelector = 1
  7096  	Pagination_FieldPathSelectorAlignmentPeriod Pagination_FieldPathSelector = 2
  7097  	Pagination_FieldPathSelectorLimit           Pagination_FieldPathSelector = 3
  7098  	Pagination_FieldPathSelectorOffset          Pagination_FieldPathSelector = 4
  7099  )
  7100  
  7101  func (s Pagination_FieldPathSelector) String() string {
  7102  	switch s {
  7103  	case Pagination_FieldPathSelectorView:
  7104  		return "view"
  7105  	case Pagination_FieldPathSelectorFunction:
  7106  		return "function"
  7107  	case Pagination_FieldPathSelectorAlignmentPeriod:
  7108  		return "alignment_period"
  7109  	case Pagination_FieldPathSelectorLimit:
  7110  		return "limit"
  7111  	case Pagination_FieldPathSelectorOffset:
  7112  		return "offset"
  7113  	default:
  7114  		panic(fmt.Sprintf("Invalid selector for Pagination: %d", s))
  7115  	}
  7116  }
  7117  
  7118  func BuildPagination_FieldPath(fp gotenobject.RawFieldPath) (Pagination_FieldPath, error) {
  7119  	if len(fp) == 0 {
  7120  		return nil, status.Error(codes.InvalidArgument, "empty field path for object Pagination")
  7121  	}
  7122  	if len(fp) == 1 {
  7123  		switch fp[0] {
  7124  		case "view":
  7125  			return &Pagination_FieldTerminalPath{selector: Pagination_FieldPathSelectorView}, nil
  7126  		case "function":
  7127  			return &Pagination_FieldTerminalPath{selector: Pagination_FieldPathSelectorFunction}, nil
  7128  		case "alignment_period", "alignmentPeriod", "alignment-period":
  7129  			return &Pagination_FieldTerminalPath{selector: Pagination_FieldPathSelectorAlignmentPeriod}, nil
  7130  		case "limit":
  7131  			return &Pagination_FieldTerminalPath{selector: Pagination_FieldPathSelectorLimit}, nil
  7132  		case "offset":
  7133  			return &Pagination_FieldTerminalPath{selector: Pagination_FieldPathSelectorOffset}, nil
  7134  		}
  7135  	}
  7136  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object Pagination", fp)
  7137  }
  7138  
  7139  func ParsePagination_FieldPath(rawField string) (Pagination_FieldPath, error) {
  7140  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  7141  	if err != nil {
  7142  		return nil, err
  7143  	}
  7144  	return BuildPagination_FieldPath(fp)
  7145  }
  7146  
  7147  func MustParsePagination_FieldPath(rawField string) Pagination_FieldPath {
  7148  	fp, err := ParsePagination_FieldPath(rawField)
  7149  	if err != nil {
  7150  		panic(err)
  7151  	}
  7152  	return fp
  7153  }
  7154  
  7155  type Pagination_FieldTerminalPath struct {
  7156  	selector Pagination_FieldPathSelector
  7157  }
  7158  
  7159  var _ Pagination_FieldPath = (*Pagination_FieldTerminalPath)(nil)
  7160  
  7161  func (fp *Pagination_FieldTerminalPath) Selector() Pagination_FieldPathSelector {
  7162  	return fp.selector
  7163  }
  7164  
  7165  // String returns path representation in proto convention
  7166  func (fp *Pagination_FieldTerminalPath) String() string {
  7167  	return fp.selector.String()
  7168  }
  7169  
  7170  // JSONString returns path representation is JSON convention
  7171  func (fp *Pagination_FieldTerminalPath) JSONString() string {
  7172  	return strcase.ToLowerCamel(fp.String())
  7173  }
  7174  
  7175  // Get returns all values pointed by specific field from source Pagination
  7176  func (fp *Pagination_FieldTerminalPath) Get(source *Pagination) (values []interface{}) {
  7177  	if source != nil {
  7178  		switch fp.selector {
  7179  		case Pagination_FieldPathSelectorView:
  7180  			values = append(values, source.View)
  7181  		case Pagination_FieldPathSelectorFunction:
  7182  			values = append(values, source.Function)
  7183  		case Pagination_FieldPathSelectorAlignmentPeriod:
  7184  			if source.AlignmentPeriod != nil {
  7185  				values = append(values, source.AlignmentPeriod)
  7186  			}
  7187  		case Pagination_FieldPathSelectorLimit:
  7188  			values = append(values, source.Limit)
  7189  		case Pagination_FieldPathSelectorOffset:
  7190  			values = append(values, source.Offset)
  7191  		default:
  7192  			panic(fmt.Sprintf("Invalid selector for Pagination: %d", fp.selector))
  7193  		}
  7194  	}
  7195  	return
  7196  }
  7197  
  7198  func (fp *Pagination_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  7199  	return fp.Get(source.(*Pagination))
  7200  }
  7201  
  7202  // GetSingle returns value pointed by specific field of from source Pagination
  7203  func (fp *Pagination_FieldTerminalPath) GetSingle(source *Pagination) (interface{}, bool) {
  7204  	switch fp.selector {
  7205  	case Pagination_FieldPathSelectorView:
  7206  		return source.GetView(), source != nil
  7207  	case Pagination_FieldPathSelectorFunction:
  7208  		return source.GetFunction(), source != nil
  7209  	case Pagination_FieldPathSelectorAlignmentPeriod:
  7210  		res := source.GetAlignmentPeriod()
  7211  		return res, res != nil
  7212  	case Pagination_FieldPathSelectorLimit:
  7213  		return source.GetLimit(), source != nil
  7214  	case Pagination_FieldPathSelectorOffset:
  7215  		return source.GetOffset(), source != nil
  7216  	default:
  7217  		panic(fmt.Sprintf("Invalid selector for Pagination: %d", fp.selector))
  7218  	}
  7219  }
  7220  
  7221  func (fp *Pagination_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  7222  	return fp.GetSingle(source.(*Pagination))
  7223  }
  7224  
  7225  // GetDefault returns a default value of the field type
  7226  func (fp *Pagination_FieldTerminalPath) GetDefault() interface{} {
  7227  	switch fp.selector {
  7228  	case Pagination_FieldPathSelectorView:
  7229  		return ""
  7230  	case Pagination_FieldPathSelectorFunction:
  7231  		return ""
  7232  	case Pagination_FieldPathSelectorAlignmentPeriod:
  7233  		return (*durationpb.Duration)(nil)
  7234  	case Pagination_FieldPathSelectorLimit:
  7235  		return int32(0)
  7236  	case Pagination_FieldPathSelectorOffset:
  7237  		return int32(0)
  7238  	default:
  7239  		panic(fmt.Sprintf("Invalid selector for Pagination: %d", fp.selector))
  7240  	}
  7241  }
  7242  
  7243  func (fp *Pagination_FieldTerminalPath) ClearValue(item *Pagination) {
  7244  	if item != nil {
  7245  		switch fp.selector {
  7246  		case Pagination_FieldPathSelectorView:
  7247  			item.View = ""
  7248  		case Pagination_FieldPathSelectorFunction:
  7249  			item.Function = ""
  7250  		case Pagination_FieldPathSelectorAlignmentPeriod:
  7251  			item.AlignmentPeriod = nil
  7252  		case Pagination_FieldPathSelectorLimit:
  7253  			item.Limit = int32(0)
  7254  		case Pagination_FieldPathSelectorOffset:
  7255  			item.Offset = int32(0)
  7256  		default:
  7257  			panic(fmt.Sprintf("Invalid selector for Pagination: %d", fp.selector))
  7258  		}
  7259  	}
  7260  }
  7261  
  7262  func (fp *Pagination_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  7263  	fp.ClearValue(item.(*Pagination))
  7264  }
  7265  
  7266  // IsLeaf - whether field path is holds simple value
  7267  func (fp *Pagination_FieldTerminalPath) IsLeaf() bool {
  7268  	return fp.selector == Pagination_FieldPathSelectorView ||
  7269  		fp.selector == Pagination_FieldPathSelectorFunction ||
  7270  		fp.selector == Pagination_FieldPathSelectorAlignmentPeriod ||
  7271  		fp.selector == Pagination_FieldPathSelectorLimit ||
  7272  		fp.selector == Pagination_FieldPathSelectorOffset
  7273  }
  7274  
  7275  func (fp *Pagination_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  7276  	return []gotenobject.FieldPath{fp}
  7277  }
  7278  
  7279  func (fp *Pagination_FieldTerminalPath) WithIValue(value interface{}) Pagination_FieldPathValue {
  7280  	switch fp.selector {
  7281  	case Pagination_FieldPathSelectorView:
  7282  		return &Pagination_FieldTerminalPathValue{Pagination_FieldTerminalPath: *fp, value: value.(string)}
  7283  	case Pagination_FieldPathSelectorFunction:
  7284  		return &Pagination_FieldTerminalPathValue{Pagination_FieldTerminalPath: *fp, value: value.(string)}
  7285  	case Pagination_FieldPathSelectorAlignmentPeriod:
  7286  		return &Pagination_FieldTerminalPathValue{Pagination_FieldTerminalPath: *fp, value: value.(*durationpb.Duration)}
  7287  	case Pagination_FieldPathSelectorLimit:
  7288  		return &Pagination_FieldTerminalPathValue{Pagination_FieldTerminalPath: *fp, value: value.(int32)}
  7289  	case Pagination_FieldPathSelectorOffset:
  7290  		return &Pagination_FieldTerminalPathValue{Pagination_FieldTerminalPath: *fp, value: value.(int32)}
  7291  	default:
  7292  		panic(fmt.Sprintf("Invalid selector for Pagination: %d", fp.selector))
  7293  	}
  7294  }
  7295  
  7296  func (fp *Pagination_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  7297  	return fp.WithIValue(value)
  7298  }
  7299  
  7300  func (fp *Pagination_FieldTerminalPath) WithIArrayOfValues(values interface{}) Pagination_FieldPathArrayOfValues {
  7301  	fpaov := &Pagination_FieldTerminalPathArrayOfValues{Pagination_FieldTerminalPath: *fp}
  7302  	switch fp.selector {
  7303  	case Pagination_FieldPathSelectorView:
  7304  		return &Pagination_FieldTerminalPathArrayOfValues{Pagination_FieldTerminalPath: *fp, values: values.([]string)}
  7305  	case Pagination_FieldPathSelectorFunction:
  7306  		return &Pagination_FieldTerminalPathArrayOfValues{Pagination_FieldTerminalPath: *fp, values: values.([]string)}
  7307  	case Pagination_FieldPathSelectorAlignmentPeriod:
  7308  		return &Pagination_FieldTerminalPathArrayOfValues{Pagination_FieldTerminalPath: *fp, values: values.([]*durationpb.Duration)}
  7309  	case Pagination_FieldPathSelectorLimit:
  7310  		return &Pagination_FieldTerminalPathArrayOfValues{Pagination_FieldTerminalPath: *fp, values: values.([]int32)}
  7311  	case Pagination_FieldPathSelectorOffset:
  7312  		return &Pagination_FieldTerminalPathArrayOfValues{Pagination_FieldTerminalPath: *fp, values: values.([]int32)}
  7313  	default:
  7314  		panic(fmt.Sprintf("Invalid selector for Pagination: %d", fp.selector))
  7315  	}
  7316  	return fpaov
  7317  }
  7318  
  7319  func (fp *Pagination_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  7320  	return fp.WithIArrayOfValues(values)
  7321  }
  7322  
  7323  func (fp *Pagination_FieldTerminalPath) WithIArrayItemValue(value interface{}) Pagination_FieldPathArrayItemValue {
  7324  	switch fp.selector {
  7325  	default:
  7326  		panic(fmt.Sprintf("Invalid selector for Pagination: %d", fp.selector))
  7327  	}
  7328  }
  7329  
  7330  func (fp *Pagination_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  7331  	return fp.WithIArrayItemValue(value)
  7332  }
  7333  
  7334  // Pagination_FieldPathValue allows storing values for Pagination fields according to their type
  7335  type Pagination_FieldPathValue interface {
  7336  	Pagination_FieldPath
  7337  	gotenobject.FieldPathValue
  7338  	SetTo(target **Pagination)
  7339  	CompareWith(*Pagination) (cmp int, comparable bool)
  7340  }
  7341  
  7342  func ParsePagination_FieldPathValue(pathStr, valueStr string) (Pagination_FieldPathValue, error) {
  7343  	fp, err := ParsePagination_FieldPath(pathStr)
  7344  	if err != nil {
  7345  		return nil, err
  7346  	}
  7347  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  7348  	if err != nil {
  7349  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Pagination field path value from %s: %v", valueStr, err)
  7350  	}
  7351  	return fpv.(Pagination_FieldPathValue), nil
  7352  }
  7353  
  7354  func MustParsePagination_FieldPathValue(pathStr, valueStr string) Pagination_FieldPathValue {
  7355  	fpv, err := ParsePagination_FieldPathValue(pathStr, valueStr)
  7356  	if err != nil {
  7357  		panic(err)
  7358  	}
  7359  	return fpv
  7360  }
  7361  
  7362  type Pagination_FieldTerminalPathValue struct {
  7363  	Pagination_FieldTerminalPath
  7364  	value interface{}
  7365  }
  7366  
  7367  var _ Pagination_FieldPathValue = (*Pagination_FieldTerminalPathValue)(nil)
  7368  
  7369  // GetRawValue returns raw value stored under selected path for 'Pagination' as interface{}
  7370  func (fpv *Pagination_FieldTerminalPathValue) GetRawValue() interface{} {
  7371  	return fpv.value
  7372  }
  7373  func (fpv *Pagination_FieldTerminalPathValue) AsViewValue() (string, bool) {
  7374  	res, ok := fpv.value.(string)
  7375  	return res, ok
  7376  }
  7377  func (fpv *Pagination_FieldTerminalPathValue) AsFunctionValue() (string, bool) {
  7378  	res, ok := fpv.value.(string)
  7379  	return res, ok
  7380  }
  7381  func (fpv *Pagination_FieldTerminalPathValue) AsAlignmentPeriodValue() (*durationpb.Duration, bool) {
  7382  	res, ok := fpv.value.(*durationpb.Duration)
  7383  	return res, ok
  7384  }
  7385  func (fpv *Pagination_FieldTerminalPathValue) AsLimitValue() (int32, bool) {
  7386  	res, ok := fpv.value.(int32)
  7387  	return res, ok
  7388  }
  7389  func (fpv *Pagination_FieldTerminalPathValue) AsOffsetValue() (int32, bool) {
  7390  	res, ok := fpv.value.(int32)
  7391  	return res, ok
  7392  }
  7393  
  7394  // SetTo stores value for selected field for object Pagination
  7395  func (fpv *Pagination_FieldTerminalPathValue) SetTo(target **Pagination) {
  7396  	if *target == nil {
  7397  		*target = new(Pagination)
  7398  	}
  7399  	switch fpv.selector {
  7400  	case Pagination_FieldPathSelectorView:
  7401  		(*target).View = fpv.value.(string)
  7402  	case Pagination_FieldPathSelectorFunction:
  7403  		(*target).Function = fpv.value.(string)
  7404  	case Pagination_FieldPathSelectorAlignmentPeriod:
  7405  		(*target).AlignmentPeriod = fpv.value.(*durationpb.Duration)
  7406  	case Pagination_FieldPathSelectorLimit:
  7407  		(*target).Limit = fpv.value.(int32)
  7408  	case Pagination_FieldPathSelectorOffset:
  7409  		(*target).Offset = fpv.value.(int32)
  7410  	default:
  7411  		panic(fmt.Sprintf("Invalid selector for Pagination: %d", fpv.selector))
  7412  	}
  7413  }
  7414  
  7415  func (fpv *Pagination_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  7416  	typedObject := target.(*Pagination)
  7417  	fpv.SetTo(&typedObject)
  7418  }
  7419  
  7420  // CompareWith compares value in the 'Pagination_FieldTerminalPathValue' with the value under path in 'Pagination'.
  7421  func (fpv *Pagination_FieldTerminalPathValue) CompareWith(source *Pagination) (int, bool) {
  7422  	switch fpv.selector {
  7423  	case Pagination_FieldPathSelectorView:
  7424  		leftValue := fpv.value.(string)
  7425  		rightValue := source.GetView()
  7426  		if (leftValue) == (rightValue) {
  7427  			return 0, true
  7428  		} else if (leftValue) < (rightValue) {
  7429  			return -1, true
  7430  		} else {
  7431  			return 1, true
  7432  		}
  7433  	case Pagination_FieldPathSelectorFunction:
  7434  		leftValue := fpv.value.(string)
  7435  		rightValue := source.GetFunction()
  7436  		if (leftValue) == (rightValue) {
  7437  			return 0, true
  7438  		} else if (leftValue) < (rightValue) {
  7439  			return -1, true
  7440  		} else {
  7441  			return 1, true
  7442  		}
  7443  	case Pagination_FieldPathSelectorAlignmentPeriod:
  7444  		leftValue := fpv.value.(*durationpb.Duration)
  7445  		rightValue := source.GetAlignmentPeriod()
  7446  		if leftValue == nil {
  7447  			if rightValue != nil {
  7448  				return -1, true
  7449  			}
  7450  			return 0, true
  7451  		}
  7452  		if rightValue == nil {
  7453  			return 1, true
  7454  		}
  7455  		if leftValue.AsDuration() == rightValue.AsDuration() {
  7456  			return 0, true
  7457  		} else if leftValue.AsDuration() < rightValue.AsDuration() {
  7458  			return -1, true
  7459  		} else {
  7460  			return 1, true
  7461  		}
  7462  	case Pagination_FieldPathSelectorLimit:
  7463  		leftValue := fpv.value.(int32)
  7464  		rightValue := source.GetLimit()
  7465  		if (leftValue) == (rightValue) {
  7466  			return 0, true
  7467  		} else if (leftValue) < (rightValue) {
  7468  			return -1, true
  7469  		} else {
  7470  			return 1, true
  7471  		}
  7472  	case Pagination_FieldPathSelectorOffset:
  7473  		leftValue := fpv.value.(int32)
  7474  		rightValue := source.GetOffset()
  7475  		if (leftValue) == (rightValue) {
  7476  			return 0, true
  7477  		} else if (leftValue) < (rightValue) {
  7478  			return -1, true
  7479  		} else {
  7480  			return 1, true
  7481  		}
  7482  	default:
  7483  		panic(fmt.Sprintf("Invalid selector for Pagination: %d", fpv.selector))
  7484  	}
  7485  }
  7486  
  7487  func (fpv *Pagination_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  7488  	return fpv.CompareWith(source.(*Pagination))
  7489  }
  7490  
  7491  // Pagination_FieldPathArrayItemValue allows storing single item in Path-specific values for Pagination according to their type
  7492  // Present only for array (repeated) types.
  7493  type Pagination_FieldPathArrayItemValue interface {
  7494  	gotenobject.FieldPathArrayItemValue
  7495  	Pagination_FieldPath
  7496  	ContainsValue(*Pagination) bool
  7497  }
  7498  
  7499  // ParsePagination_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  7500  func ParsePagination_FieldPathArrayItemValue(pathStr, valueStr string) (Pagination_FieldPathArrayItemValue, error) {
  7501  	fp, err := ParsePagination_FieldPath(pathStr)
  7502  	if err != nil {
  7503  		return nil, err
  7504  	}
  7505  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  7506  	if err != nil {
  7507  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Pagination field path array item value from %s: %v", valueStr, err)
  7508  	}
  7509  	return fpaiv.(Pagination_FieldPathArrayItemValue), nil
  7510  }
  7511  
  7512  func MustParsePagination_FieldPathArrayItemValue(pathStr, valueStr string) Pagination_FieldPathArrayItemValue {
  7513  	fpaiv, err := ParsePagination_FieldPathArrayItemValue(pathStr, valueStr)
  7514  	if err != nil {
  7515  		panic(err)
  7516  	}
  7517  	return fpaiv
  7518  }
  7519  
  7520  type Pagination_FieldTerminalPathArrayItemValue struct {
  7521  	Pagination_FieldTerminalPath
  7522  	value interface{}
  7523  }
  7524  
  7525  var _ Pagination_FieldPathArrayItemValue = (*Pagination_FieldTerminalPathArrayItemValue)(nil)
  7526  
  7527  // GetRawValue returns stored element value for array in object Pagination as interface{}
  7528  func (fpaiv *Pagination_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  7529  	return fpaiv.value
  7530  }
  7531  
  7532  func (fpaiv *Pagination_FieldTerminalPathArrayItemValue) GetSingle(source *Pagination) (interface{}, bool) {
  7533  	return nil, false
  7534  }
  7535  
  7536  func (fpaiv *Pagination_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  7537  	return fpaiv.GetSingle(source.(*Pagination))
  7538  }
  7539  
  7540  // Contains returns a boolean indicating if value that is being held is present in given 'Pagination'
  7541  func (fpaiv *Pagination_FieldTerminalPathArrayItemValue) ContainsValue(source *Pagination) bool {
  7542  	slice := fpaiv.Pagination_FieldTerminalPath.Get(source)
  7543  	for _, v := range slice {
  7544  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  7545  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  7546  				return true
  7547  			}
  7548  		} else if reflect.DeepEqual(v, fpaiv.value) {
  7549  			return true
  7550  		}
  7551  	}
  7552  	return false
  7553  }
  7554  
  7555  // Pagination_FieldPathArrayOfValues allows storing slice of values for Pagination fields according to their type
  7556  type Pagination_FieldPathArrayOfValues interface {
  7557  	gotenobject.FieldPathArrayOfValues
  7558  	Pagination_FieldPath
  7559  }
  7560  
  7561  func ParsePagination_FieldPathArrayOfValues(pathStr, valuesStr string) (Pagination_FieldPathArrayOfValues, error) {
  7562  	fp, err := ParsePagination_FieldPath(pathStr)
  7563  	if err != nil {
  7564  		return nil, err
  7565  	}
  7566  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  7567  	if err != nil {
  7568  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Pagination field path array of values from %s: %v", valuesStr, err)
  7569  	}
  7570  	return fpaov.(Pagination_FieldPathArrayOfValues), nil
  7571  }
  7572  
  7573  func MustParsePagination_FieldPathArrayOfValues(pathStr, valuesStr string) Pagination_FieldPathArrayOfValues {
  7574  	fpaov, err := ParsePagination_FieldPathArrayOfValues(pathStr, valuesStr)
  7575  	if err != nil {
  7576  		panic(err)
  7577  	}
  7578  	return fpaov
  7579  }
  7580  
  7581  type Pagination_FieldTerminalPathArrayOfValues struct {
  7582  	Pagination_FieldTerminalPath
  7583  	values interface{}
  7584  }
  7585  
  7586  var _ Pagination_FieldPathArrayOfValues = (*Pagination_FieldTerminalPathArrayOfValues)(nil)
  7587  
  7588  func (fpaov *Pagination_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  7589  	switch fpaov.selector {
  7590  	case Pagination_FieldPathSelectorView:
  7591  		for _, v := range fpaov.values.([]string) {
  7592  			values = append(values, v)
  7593  		}
  7594  	case Pagination_FieldPathSelectorFunction:
  7595  		for _, v := range fpaov.values.([]string) {
  7596  			values = append(values, v)
  7597  		}
  7598  	case Pagination_FieldPathSelectorAlignmentPeriod:
  7599  		for _, v := range fpaov.values.([]*durationpb.Duration) {
  7600  			values = append(values, v)
  7601  		}
  7602  	case Pagination_FieldPathSelectorLimit:
  7603  		for _, v := range fpaov.values.([]int32) {
  7604  			values = append(values, v)
  7605  		}
  7606  	case Pagination_FieldPathSelectorOffset:
  7607  		for _, v := range fpaov.values.([]int32) {
  7608  			values = append(values, v)
  7609  		}
  7610  	}
  7611  	return
  7612  }
  7613  func (fpaov *Pagination_FieldTerminalPathArrayOfValues) AsViewArrayOfValues() ([]string, bool) {
  7614  	res, ok := fpaov.values.([]string)
  7615  	return res, ok
  7616  }
  7617  func (fpaov *Pagination_FieldTerminalPathArrayOfValues) AsFunctionArrayOfValues() ([]string, bool) {
  7618  	res, ok := fpaov.values.([]string)
  7619  	return res, ok
  7620  }
  7621  func (fpaov *Pagination_FieldTerminalPathArrayOfValues) AsAlignmentPeriodArrayOfValues() ([]*durationpb.Duration, bool) {
  7622  	res, ok := fpaov.values.([]*durationpb.Duration)
  7623  	return res, ok
  7624  }
  7625  func (fpaov *Pagination_FieldTerminalPathArrayOfValues) AsLimitArrayOfValues() ([]int32, bool) {
  7626  	res, ok := fpaov.values.([]int32)
  7627  	return res, ok
  7628  }
  7629  func (fpaov *Pagination_FieldTerminalPathArrayOfValues) AsOffsetArrayOfValues() ([]int32, bool) {
  7630  	res, ok := fpaov.values.([]int32)
  7631  	return res, ok
  7632  }
  7633  
  7634  // FieldPath provides implementation to handle
  7635  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  7636  type Metric_FieldPath interface {
  7637  	gotenobject.FieldPath
  7638  	Selector() Metric_FieldPathSelector
  7639  	Get(source *Metric) []interface{}
  7640  	GetSingle(source *Metric) (interface{}, bool)
  7641  	ClearValue(item *Metric)
  7642  
  7643  	// Those methods build corresponding Metric_FieldPathValue
  7644  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
  7645  	WithIValue(value interface{}) Metric_FieldPathValue
  7646  	WithIArrayOfValues(values interface{}) Metric_FieldPathArrayOfValues
  7647  	WithIArrayItemValue(value interface{}) Metric_FieldPathArrayItemValue
  7648  }
  7649  
  7650  type Metric_FieldPathSelector int32
  7651  
  7652  const (
  7653  	Metric_FieldPathSelectorType          Metric_FieldPathSelector = 0
  7654  	Metric_FieldPathSelectorLabels        Metric_FieldPathSelector = 1
  7655  	Metric_FieldPathSelectorReducedLabels Metric_FieldPathSelector = 2
  7656  )
  7657  
  7658  func (s Metric_FieldPathSelector) String() string {
  7659  	switch s {
  7660  	case Metric_FieldPathSelectorType:
  7661  		return "type"
  7662  	case Metric_FieldPathSelectorLabels:
  7663  		return "labels"
  7664  	case Metric_FieldPathSelectorReducedLabels:
  7665  		return "reduced_labels"
  7666  	default:
  7667  		panic(fmt.Sprintf("Invalid selector for Metric: %d", s))
  7668  	}
  7669  }
  7670  
  7671  func BuildMetric_FieldPath(fp gotenobject.RawFieldPath) (Metric_FieldPath, error) {
  7672  	if len(fp) == 0 {
  7673  		return nil, status.Error(codes.InvalidArgument, "empty field path for object Metric")
  7674  	}
  7675  	if len(fp) == 1 {
  7676  		switch fp[0] {
  7677  		case "type":
  7678  			return &Metric_FieldTerminalPath{selector: Metric_FieldPathSelectorType}, nil
  7679  		case "labels":
  7680  			return &Metric_FieldTerminalPath{selector: Metric_FieldPathSelectorLabels}, nil
  7681  		case "reduced_labels", "reducedLabels", "reduced-labels":
  7682  			return &Metric_FieldTerminalPath{selector: Metric_FieldPathSelectorReducedLabels}, nil
  7683  		}
  7684  	} else {
  7685  		switch fp[0] {
  7686  		case "labels":
  7687  			if len(fp) > 2 {
  7688  				return nil, status.Errorf(codes.InvalidArgument, "sub path for maps ('%s') are not supported (object Metric)", fp)
  7689  			}
  7690  			return &Metric_FieldPathMap{selector: Metric_FieldPathSelectorLabels, key: fp[1]}, nil
  7691  		}
  7692  	}
  7693  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object Metric", fp)
  7694  }
  7695  
  7696  func ParseMetric_FieldPath(rawField string) (Metric_FieldPath, error) {
  7697  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  7698  	if err != nil {
  7699  		return nil, err
  7700  	}
  7701  	return BuildMetric_FieldPath(fp)
  7702  }
  7703  
  7704  func MustParseMetric_FieldPath(rawField string) Metric_FieldPath {
  7705  	fp, err := ParseMetric_FieldPath(rawField)
  7706  	if err != nil {
  7707  		panic(err)
  7708  	}
  7709  	return fp
  7710  }
  7711  
  7712  type Metric_FieldTerminalPath struct {
  7713  	selector Metric_FieldPathSelector
  7714  }
  7715  
  7716  var _ Metric_FieldPath = (*Metric_FieldTerminalPath)(nil)
  7717  
  7718  func (fp *Metric_FieldTerminalPath) Selector() Metric_FieldPathSelector {
  7719  	return fp.selector
  7720  }
  7721  
  7722  // String returns path representation in proto convention
  7723  func (fp *Metric_FieldTerminalPath) String() string {
  7724  	return fp.selector.String()
  7725  }
  7726  
  7727  // JSONString returns path representation is JSON convention
  7728  func (fp *Metric_FieldTerminalPath) JSONString() string {
  7729  	return strcase.ToLowerCamel(fp.String())
  7730  }
  7731  
  7732  // Get returns all values pointed by specific field from source Metric
  7733  func (fp *Metric_FieldTerminalPath) Get(source *Metric) (values []interface{}) {
  7734  	if source != nil {
  7735  		switch fp.selector {
  7736  		case Metric_FieldPathSelectorType:
  7737  			values = append(values, source.Type)
  7738  		case Metric_FieldPathSelectorLabels:
  7739  			values = append(values, source.Labels)
  7740  		case Metric_FieldPathSelectorReducedLabels:
  7741  			for _, value := range source.GetReducedLabels() {
  7742  				values = append(values, value)
  7743  			}
  7744  		default:
  7745  			panic(fmt.Sprintf("Invalid selector for Metric: %d", fp.selector))
  7746  		}
  7747  	}
  7748  	return
  7749  }
  7750  
  7751  func (fp *Metric_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  7752  	return fp.Get(source.(*Metric))
  7753  }
  7754  
  7755  // GetSingle returns value pointed by specific field of from source Metric
  7756  func (fp *Metric_FieldTerminalPath) GetSingle(source *Metric) (interface{}, bool) {
  7757  	switch fp.selector {
  7758  	case Metric_FieldPathSelectorType:
  7759  		return source.GetType(), source != nil
  7760  	case Metric_FieldPathSelectorLabels:
  7761  		res := source.GetLabels()
  7762  		return res, res != nil
  7763  	case Metric_FieldPathSelectorReducedLabels:
  7764  		res := source.GetReducedLabels()
  7765  		return res, res != nil
  7766  	default:
  7767  		panic(fmt.Sprintf("Invalid selector for Metric: %d", fp.selector))
  7768  	}
  7769  }
  7770  
  7771  func (fp *Metric_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  7772  	return fp.GetSingle(source.(*Metric))
  7773  }
  7774  
  7775  // GetDefault returns a default value of the field type
  7776  func (fp *Metric_FieldTerminalPath) GetDefault() interface{} {
  7777  	switch fp.selector {
  7778  	case Metric_FieldPathSelectorType:
  7779  		return ""
  7780  	case Metric_FieldPathSelectorLabels:
  7781  		return (map[string]string)(nil)
  7782  	case Metric_FieldPathSelectorReducedLabels:
  7783  		return ([]string)(nil)
  7784  	default:
  7785  		panic(fmt.Sprintf("Invalid selector for Metric: %d", fp.selector))
  7786  	}
  7787  }
  7788  
  7789  func (fp *Metric_FieldTerminalPath) ClearValue(item *Metric) {
  7790  	if item != nil {
  7791  		switch fp.selector {
  7792  		case Metric_FieldPathSelectorType:
  7793  			item.Type = ""
  7794  		case Metric_FieldPathSelectorLabels:
  7795  			item.Labels = nil
  7796  		case Metric_FieldPathSelectorReducedLabels:
  7797  			item.ReducedLabels = nil
  7798  		default:
  7799  			panic(fmt.Sprintf("Invalid selector for Metric: %d", fp.selector))
  7800  		}
  7801  	}
  7802  }
  7803  
  7804  func (fp *Metric_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  7805  	fp.ClearValue(item.(*Metric))
  7806  }
  7807  
  7808  // IsLeaf - whether field path is holds simple value
  7809  func (fp *Metric_FieldTerminalPath) IsLeaf() bool {
  7810  	return fp.selector == Metric_FieldPathSelectorType ||
  7811  		fp.selector == Metric_FieldPathSelectorLabels ||
  7812  		fp.selector == Metric_FieldPathSelectorReducedLabels
  7813  }
  7814  
  7815  func (fp *Metric_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  7816  	return []gotenobject.FieldPath{fp}
  7817  }
  7818  
  7819  func (fp *Metric_FieldTerminalPath) WithIValue(value interface{}) Metric_FieldPathValue {
  7820  	switch fp.selector {
  7821  	case Metric_FieldPathSelectorType:
  7822  		return &Metric_FieldTerminalPathValue{Metric_FieldTerminalPath: *fp, value: value.(string)}
  7823  	case Metric_FieldPathSelectorLabels:
  7824  		return &Metric_FieldTerminalPathValue{Metric_FieldTerminalPath: *fp, value: value.(map[string]string)}
  7825  	case Metric_FieldPathSelectorReducedLabels:
  7826  		return &Metric_FieldTerminalPathValue{Metric_FieldTerminalPath: *fp, value: value.([]string)}
  7827  	default:
  7828  		panic(fmt.Sprintf("Invalid selector for Metric: %d", fp.selector))
  7829  	}
  7830  }
  7831  
  7832  func (fp *Metric_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  7833  	return fp.WithIValue(value)
  7834  }
  7835  
  7836  func (fp *Metric_FieldTerminalPath) WithIArrayOfValues(values interface{}) Metric_FieldPathArrayOfValues {
  7837  	fpaov := &Metric_FieldTerminalPathArrayOfValues{Metric_FieldTerminalPath: *fp}
  7838  	switch fp.selector {
  7839  	case Metric_FieldPathSelectorType:
  7840  		return &Metric_FieldTerminalPathArrayOfValues{Metric_FieldTerminalPath: *fp, values: values.([]string)}
  7841  	case Metric_FieldPathSelectorLabels:
  7842  		return &Metric_FieldTerminalPathArrayOfValues{Metric_FieldTerminalPath: *fp, values: values.([]map[string]string)}
  7843  	case Metric_FieldPathSelectorReducedLabels:
  7844  		return &Metric_FieldTerminalPathArrayOfValues{Metric_FieldTerminalPath: *fp, values: values.([][]string)}
  7845  	default:
  7846  		panic(fmt.Sprintf("Invalid selector for Metric: %d", fp.selector))
  7847  	}
  7848  	return fpaov
  7849  }
  7850  
  7851  func (fp *Metric_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  7852  	return fp.WithIArrayOfValues(values)
  7853  }
  7854  
  7855  func (fp *Metric_FieldTerminalPath) WithIArrayItemValue(value interface{}) Metric_FieldPathArrayItemValue {
  7856  	switch fp.selector {
  7857  	case Metric_FieldPathSelectorReducedLabels:
  7858  		return &Metric_FieldTerminalPathArrayItemValue{Metric_FieldTerminalPath: *fp, value: value.(string)}
  7859  	default:
  7860  		panic(fmt.Sprintf("Invalid selector for Metric: %d", fp.selector))
  7861  	}
  7862  }
  7863  
  7864  func (fp *Metric_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  7865  	return fp.WithIArrayItemValue(value)
  7866  }
  7867  
  7868  // FieldPath for map type with additional Key information
  7869  type Metric_FieldPathMap struct {
  7870  	key      string
  7871  	selector Metric_FieldPathSelector
  7872  }
  7873  
  7874  var _ Metric_FieldPath = (*Metric_FieldPathMap)(nil)
  7875  
  7876  func (fpm *Metric_FieldPathMap) Selector() Metric_FieldPathSelector {
  7877  	return fpm.selector
  7878  }
  7879  
  7880  func (fpm *Metric_FieldPathMap) Key() string {
  7881  	return fpm.key
  7882  }
  7883  
  7884  // String returns path representation in proto convention
  7885  func (fpm *Metric_FieldPathMap) String() string {
  7886  	return fpm.selector.String() + "." + fpm.key
  7887  }
  7888  
  7889  // JSONString returns path representation is JSON convention. Note that map keys are not transformed
  7890  func (fpm *Metric_FieldPathMap) JSONString() string {
  7891  	return strcase.ToLowerCamel(fpm.selector.String()) + "." + fpm.key
  7892  }
  7893  
  7894  // Get returns all values pointed by selected field map key from source Metric
  7895  func (fpm *Metric_FieldPathMap) Get(source *Metric) (values []interface{}) {
  7896  	switch fpm.selector {
  7897  	case Metric_FieldPathSelectorLabels:
  7898  		if value, ok := source.GetLabels()[fpm.key]; ok {
  7899  			values = append(values, value)
  7900  		}
  7901  	default:
  7902  		panic(fmt.Sprintf("Invalid selector for Metric: %d", fpm.selector))
  7903  	}
  7904  	return
  7905  }
  7906  
  7907  func (fpm *Metric_FieldPathMap) GetRaw(source proto.Message) []interface{} {
  7908  	return fpm.Get(source.(*Metric))
  7909  }
  7910  
  7911  // GetSingle returns value by selected field map key from source Metric
  7912  func (fpm *Metric_FieldPathMap) GetSingle(source *Metric) (interface{}, bool) {
  7913  	switch fpm.selector {
  7914  	case Metric_FieldPathSelectorLabels:
  7915  		res, ok := source.GetLabels()[fpm.key]
  7916  		return res, ok
  7917  	default:
  7918  		panic(fmt.Sprintf("Invalid selector for Metric: %d", fpm.selector))
  7919  	}
  7920  }
  7921  
  7922  func (fpm *Metric_FieldPathMap) GetSingleRaw(source proto.Message) (interface{}, bool) {
  7923  	return fpm.GetSingle(source.(*Metric))
  7924  }
  7925  
  7926  // GetDefault returns a default value of the field type
  7927  func (fpm *Metric_FieldPathMap) GetDefault() interface{} {
  7928  	switch fpm.selector {
  7929  	case Metric_FieldPathSelectorLabels:
  7930  		var v string
  7931  		return v
  7932  	default:
  7933  		panic(fmt.Sprintf("Invalid selector for Metric: %d", fpm.selector))
  7934  	}
  7935  }
  7936  
  7937  func (fpm *Metric_FieldPathMap) ClearValue(item *Metric) {
  7938  	if item != nil {
  7939  		switch fpm.selector {
  7940  		case Metric_FieldPathSelectorLabels:
  7941  			delete(item.Labels, fpm.key)
  7942  		default:
  7943  			panic(fmt.Sprintf("Invalid selector for Metric: %d", fpm.selector))
  7944  		}
  7945  	}
  7946  }
  7947  
  7948  func (fpm *Metric_FieldPathMap) ClearValueRaw(item proto.Message) {
  7949  	fpm.ClearValue(item.(*Metric))
  7950  }
  7951  
  7952  // IsLeaf - whether field path is holds simple value
  7953  func (fpm *Metric_FieldPathMap) IsLeaf() bool {
  7954  	switch fpm.selector {
  7955  	case Metric_FieldPathSelectorLabels:
  7956  		return true
  7957  	default:
  7958  		panic(fmt.Sprintf("Invalid selector for Metric: %d", fpm.selector))
  7959  	}
  7960  }
  7961  
  7962  func (fpm *Metric_FieldPathMap) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  7963  	return []gotenobject.FieldPath{fpm}
  7964  }
  7965  
  7966  func (fpm *Metric_FieldPathMap) WithIValue(value interface{}) Metric_FieldPathValue {
  7967  	switch fpm.selector {
  7968  	case Metric_FieldPathSelectorLabels:
  7969  		return &Metric_FieldPathMapValue{Metric_FieldPathMap: *fpm, value: value.(string)}
  7970  	default:
  7971  		panic(fmt.Sprintf("Invalid selector for Metric: %d", fpm.selector))
  7972  	}
  7973  }
  7974  
  7975  func (fpm *Metric_FieldPathMap) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  7976  	return fpm.WithIValue(value)
  7977  }
  7978  
  7979  func (fpm *Metric_FieldPathMap) WithIArrayOfValues(values interface{}) Metric_FieldPathArrayOfValues {
  7980  	switch fpm.selector {
  7981  	case Metric_FieldPathSelectorLabels:
  7982  		return &Metric_FieldPathMapArrayOfValues{Metric_FieldPathMap: *fpm, values: values.([]string)}
  7983  	default:
  7984  		panic(fmt.Sprintf("Invalid selector for Metric: %d", fpm.selector))
  7985  	}
  7986  }
  7987  
  7988  func (fpm *Metric_FieldPathMap) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  7989  	return fpm.WithIArrayOfValues(values)
  7990  }
  7991  
  7992  func (fpm *Metric_FieldPathMap) WithIArrayItemValue(value interface{}) Metric_FieldPathArrayItemValue {
  7993  	panic("Cannot create array item value from map fieldpath")
  7994  }
  7995  
  7996  func (fpm *Metric_FieldPathMap) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  7997  	return fpm.WithIArrayItemValue(value)
  7998  }
  7999  
  8000  // Metric_FieldPathValue allows storing values for Metric fields according to their type
  8001  type Metric_FieldPathValue interface {
  8002  	Metric_FieldPath
  8003  	gotenobject.FieldPathValue
  8004  	SetTo(target **Metric)
  8005  	CompareWith(*Metric) (cmp int, comparable bool)
  8006  }
  8007  
  8008  func ParseMetric_FieldPathValue(pathStr, valueStr string) (Metric_FieldPathValue, error) {
  8009  	fp, err := ParseMetric_FieldPath(pathStr)
  8010  	if err != nil {
  8011  		return nil, err
  8012  	}
  8013  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  8014  	if err != nil {
  8015  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Metric field path value from %s: %v", valueStr, err)
  8016  	}
  8017  	return fpv.(Metric_FieldPathValue), nil
  8018  }
  8019  
  8020  func MustParseMetric_FieldPathValue(pathStr, valueStr string) Metric_FieldPathValue {
  8021  	fpv, err := ParseMetric_FieldPathValue(pathStr, valueStr)
  8022  	if err != nil {
  8023  		panic(err)
  8024  	}
  8025  	return fpv
  8026  }
  8027  
  8028  type Metric_FieldTerminalPathValue struct {
  8029  	Metric_FieldTerminalPath
  8030  	value interface{}
  8031  }
  8032  
  8033  var _ Metric_FieldPathValue = (*Metric_FieldTerminalPathValue)(nil)
  8034  
  8035  // GetRawValue returns raw value stored under selected path for 'Metric' as interface{}
  8036  func (fpv *Metric_FieldTerminalPathValue) GetRawValue() interface{} {
  8037  	return fpv.value
  8038  }
  8039  func (fpv *Metric_FieldTerminalPathValue) AsTypeValue() (string, bool) {
  8040  	res, ok := fpv.value.(string)
  8041  	return res, ok
  8042  }
  8043  func (fpv *Metric_FieldTerminalPathValue) AsLabelsValue() (map[string]string, bool) {
  8044  	res, ok := fpv.value.(map[string]string)
  8045  	return res, ok
  8046  }
  8047  func (fpv *Metric_FieldTerminalPathValue) AsReducedLabelsValue() ([]string, bool) {
  8048  	res, ok := fpv.value.([]string)
  8049  	return res, ok
  8050  }
  8051  
  8052  // SetTo stores value for selected field for object Metric
  8053  func (fpv *Metric_FieldTerminalPathValue) SetTo(target **Metric) {
  8054  	if *target == nil {
  8055  		*target = new(Metric)
  8056  	}
  8057  	switch fpv.selector {
  8058  	case Metric_FieldPathSelectorType:
  8059  		(*target).Type = fpv.value.(string)
  8060  	case Metric_FieldPathSelectorLabels:
  8061  		(*target).Labels = fpv.value.(map[string]string)
  8062  	case Metric_FieldPathSelectorReducedLabels:
  8063  		(*target).ReducedLabels = fpv.value.([]string)
  8064  	default:
  8065  		panic(fmt.Sprintf("Invalid selector for Metric: %d", fpv.selector))
  8066  	}
  8067  }
  8068  
  8069  func (fpv *Metric_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  8070  	typedObject := target.(*Metric)
  8071  	fpv.SetTo(&typedObject)
  8072  }
  8073  
  8074  // CompareWith compares value in the 'Metric_FieldTerminalPathValue' with the value under path in 'Metric'.
  8075  func (fpv *Metric_FieldTerminalPathValue) CompareWith(source *Metric) (int, bool) {
  8076  	switch fpv.selector {
  8077  	case Metric_FieldPathSelectorType:
  8078  		leftValue := fpv.value.(string)
  8079  		rightValue := source.GetType()
  8080  		if (leftValue) == (rightValue) {
  8081  			return 0, true
  8082  		} else if (leftValue) < (rightValue) {
  8083  			return -1, true
  8084  		} else {
  8085  			return 1, true
  8086  		}
  8087  	case Metric_FieldPathSelectorLabels:
  8088  		return 0, false
  8089  	case Metric_FieldPathSelectorReducedLabels:
  8090  		return 0, false
  8091  	default:
  8092  		panic(fmt.Sprintf("Invalid selector for Metric: %d", fpv.selector))
  8093  	}
  8094  }
  8095  
  8096  func (fpv *Metric_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  8097  	return fpv.CompareWith(source.(*Metric))
  8098  }
  8099  
  8100  type Metric_FieldPathMapValue struct {
  8101  	Metric_FieldPathMap
  8102  	value interface{}
  8103  }
  8104  
  8105  var _ Metric_FieldPathValue = (*Metric_FieldPathMapValue)(nil)
  8106  
  8107  // GetValue returns value stored under selected field in Metric as interface{}
  8108  func (fpmv *Metric_FieldPathMapValue) GetRawValue() interface{} {
  8109  	return fpmv.value
  8110  }
  8111  func (fpmv *Metric_FieldPathMapValue) AsLabelsElementValue() (string, bool) {
  8112  	res, ok := fpmv.value.(string)
  8113  	return res, ok
  8114  }
  8115  
  8116  // SetTo stores value for selected field in Metric
  8117  func (fpmv *Metric_FieldPathMapValue) SetTo(target **Metric) {
  8118  	if *target == nil {
  8119  		*target = new(Metric)
  8120  	}
  8121  	switch fpmv.selector {
  8122  	case Metric_FieldPathSelectorLabels:
  8123  		if (*target).Labels == nil {
  8124  			(*target).Labels = make(map[string]string)
  8125  		}
  8126  		(*target).Labels[fpmv.key] = fpmv.value.(string)
  8127  	default:
  8128  		panic(fmt.Sprintf("Invalid selector for Metric: %d", fpmv.selector))
  8129  	}
  8130  }
  8131  
  8132  func (fpmv *Metric_FieldPathMapValue) SetToRaw(target proto.Message) {
  8133  	typedObject := target.(*Metric)
  8134  	fpmv.SetTo(&typedObject)
  8135  }
  8136  
  8137  // CompareWith compares value in the 'Metric_FieldPathMapValue' with the value under path in 'Metric'.
  8138  func (fpmv *Metric_FieldPathMapValue) CompareWith(source *Metric) (int, bool) {
  8139  	switch fpmv.selector {
  8140  	case Metric_FieldPathSelectorLabels:
  8141  		leftValue := fpmv.value.(string)
  8142  		rightValue := source.GetLabels()[fpmv.key]
  8143  		if (leftValue) == (rightValue) {
  8144  			return 0, true
  8145  		} else if (leftValue) < (rightValue) {
  8146  			return -1, true
  8147  		} else {
  8148  			return 1, true
  8149  		}
  8150  	default:
  8151  		panic(fmt.Sprintf("Invalid selector for Metric: %d", fpmv.selector))
  8152  	}
  8153  }
  8154  
  8155  func (fpmv *Metric_FieldPathMapValue) CompareWithRaw(source proto.Message) (int, bool) {
  8156  	return fpmv.CompareWith(source.(*Metric))
  8157  }
  8158  
  8159  // Metric_FieldPathArrayItemValue allows storing single item in Path-specific values for Metric according to their type
  8160  // Present only for array (repeated) types.
  8161  type Metric_FieldPathArrayItemValue interface {
  8162  	gotenobject.FieldPathArrayItemValue
  8163  	Metric_FieldPath
  8164  	ContainsValue(*Metric) bool
  8165  }
  8166  
  8167  // ParseMetric_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  8168  func ParseMetric_FieldPathArrayItemValue(pathStr, valueStr string) (Metric_FieldPathArrayItemValue, error) {
  8169  	fp, err := ParseMetric_FieldPath(pathStr)
  8170  	if err != nil {
  8171  		return nil, err
  8172  	}
  8173  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  8174  	if err != nil {
  8175  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Metric field path array item value from %s: %v", valueStr, err)
  8176  	}
  8177  	return fpaiv.(Metric_FieldPathArrayItemValue), nil
  8178  }
  8179  
  8180  func MustParseMetric_FieldPathArrayItemValue(pathStr, valueStr string) Metric_FieldPathArrayItemValue {
  8181  	fpaiv, err := ParseMetric_FieldPathArrayItemValue(pathStr, valueStr)
  8182  	if err != nil {
  8183  		panic(err)
  8184  	}
  8185  	return fpaiv
  8186  }
  8187  
  8188  type Metric_FieldTerminalPathArrayItemValue struct {
  8189  	Metric_FieldTerminalPath
  8190  	value interface{}
  8191  }
  8192  
  8193  var _ Metric_FieldPathArrayItemValue = (*Metric_FieldTerminalPathArrayItemValue)(nil)
  8194  
  8195  // GetRawValue returns stored element value for array in object Metric as interface{}
  8196  func (fpaiv *Metric_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  8197  	return fpaiv.value
  8198  }
  8199  func (fpaiv *Metric_FieldTerminalPathArrayItemValue) AsReducedLabelsItemValue() (string, bool) {
  8200  	res, ok := fpaiv.value.(string)
  8201  	return res, ok
  8202  }
  8203  
  8204  func (fpaiv *Metric_FieldTerminalPathArrayItemValue) GetSingle(source *Metric) (interface{}, bool) {
  8205  	return nil, false
  8206  }
  8207  
  8208  func (fpaiv *Metric_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  8209  	return fpaiv.GetSingle(source.(*Metric))
  8210  }
  8211  
  8212  // Contains returns a boolean indicating if value that is being held is present in given 'Metric'
  8213  func (fpaiv *Metric_FieldTerminalPathArrayItemValue) ContainsValue(source *Metric) bool {
  8214  	slice := fpaiv.Metric_FieldTerminalPath.Get(source)
  8215  	for _, v := range slice {
  8216  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  8217  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  8218  				return true
  8219  			}
  8220  		} else if reflect.DeepEqual(v, fpaiv.value) {
  8221  			return true
  8222  		}
  8223  	}
  8224  	return false
  8225  }
  8226  
  8227  // Metric_FieldPathArrayOfValues allows storing slice of values for Metric fields according to their type
  8228  type Metric_FieldPathArrayOfValues interface {
  8229  	gotenobject.FieldPathArrayOfValues
  8230  	Metric_FieldPath
  8231  }
  8232  
  8233  func ParseMetric_FieldPathArrayOfValues(pathStr, valuesStr string) (Metric_FieldPathArrayOfValues, error) {
  8234  	fp, err := ParseMetric_FieldPath(pathStr)
  8235  	if err != nil {
  8236  		return nil, err
  8237  	}
  8238  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  8239  	if err != nil {
  8240  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Metric field path array of values from %s: %v", valuesStr, err)
  8241  	}
  8242  	return fpaov.(Metric_FieldPathArrayOfValues), nil
  8243  }
  8244  
  8245  func MustParseMetric_FieldPathArrayOfValues(pathStr, valuesStr string) Metric_FieldPathArrayOfValues {
  8246  	fpaov, err := ParseMetric_FieldPathArrayOfValues(pathStr, valuesStr)
  8247  	if err != nil {
  8248  		panic(err)
  8249  	}
  8250  	return fpaov
  8251  }
  8252  
  8253  type Metric_FieldTerminalPathArrayOfValues struct {
  8254  	Metric_FieldTerminalPath
  8255  	values interface{}
  8256  }
  8257  
  8258  var _ Metric_FieldPathArrayOfValues = (*Metric_FieldTerminalPathArrayOfValues)(nil)
  8259  
  8260  func (fpaov *Metric_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  8261  	switch fpaov.selector {
  8262  	case Metric_FieldPathSelectorType:
  8263  		for _, v := range fpaov.values.([]string) {
  8264  			values = append(values, v)
  8265  		}
  8266  	case Metric_FieldPathSelectorLabels:
  8267  		for _, v := range fpaov.values.([]map[string]string) {
  8268  			values = append(values, v)
  8269  		}
  8270  	case Metric_FieldPathSelectorReducedLabels:
  8271  		for _, v := range fpaov.values.([][]string) {
  8272  			values = append(values, v)
  8273  		}
  8274  	}
  8275  	return
  8276  }
  8277  func (fpaov *Metric_FieldTerminalPathArrayOfValues) AsTypeArrayOfValues() ([]string, bool) {
  8278  	res, ok := fpaov.values.([]string)
  8279  	return res, ok
  8280  }
  8281  func (fpaov *Metric_FieldTerminalPathArrayOfValues) AsLabelsArrayOfValues() ([]map[string]string, bool) {
  8282  	res, ok := fpaov.values.([]map[string]string)
  8283  	return res, ok
  8284  }
  8285  func (fpaov *Metric_FieldTerminalPathArrayOfValues) AsReducedLabelsArrayOfValues() ([][]string, bool) {
  8286  	res, ok := fpaov.values.([][]string)
  8287  	return res, ok
  8288  }
  8289  
  8290  type Metric_FieldPathMapArrayOfValues struct {
  8291  	Metric_FieldPathMap
  8292  	values interface{}
  8293  }
  8294  
  8295  var _ Metric_FieldPathArrayOfValues = (*Metric_FieldPathMapArrayOfValues)(nil)
  8296  
  8297  func (fpmaov *Metric_FieldPathMapArrayOfValues) GetRawValues() (values []interface{}) {
  8298  	switch fpmaov.selector {
  8299  	case Metric_FieldPathSelectorLabels:
  8300  		for _, v := range fpmaov.values.([]string) {
  8301  			values = append(values, v)
  8302  		}
  8303  	}
  8304  	return
  8305  }
  8306  func (fpmaov *Metric_FieldPathMapArrayOfValues) AsLabelsArrayOfElementValues() ([]string, bool) {
  8307  	res, ok := fpmaov.values.([]string)
  8308  	return res, ok
  8309  }
  8310  
  8311  // FieldPath provides implementation to handle
  8312  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  8313  type MonitoredResource_FieldPath interface {
  8314  	gotenobject.FieldPath
  8315  	Selector() MonitoredResource_FieldPathSelector
  8316  	Get(source *MonitoredResource) []interface{}
  8317  	GetSingle(source *MonitoredResource) (interface{}, bool)
  8318  	ClearValue(item *MonitoredResource)
  8319  
  8320  	// Those methods build corresponding MonitoredResource_FieldPathValue
  8321  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
  8322  	WithIValue(value interface{}) MonitoredResource_FieldPathValue
  8323  	WithIArrayOfValues(values interface{}) MonitoredResource_FieldPathArrayOfValues
  8324  	WithIArrayItemValue(value interface{}) MonitoredResource_FieldPathArrayItemValue
  8325  }
  8326  
  8327  type MonitoredResource_FieldPathSelector int32
  8328  
  8329  const (
  8330  	MonitoredResource_FieldPathSelectorType          MonitoredResource_FieldPathSelector = 0
  8331  	MonitoredResource_FieldPathSelectorLabels        MonitoredResource_FieldPathSelector = 1
  8332  	MonitoredResource_FieldPathSelectorReducedLabels MonitoredResource_FieldPathSelector = 2
  8333  )
  8334  
  8335  func (s MonitoredResource_FieldPathSelector) String() string {
  8336  	switch s {
  8337  	case MonitoredResource_FieldPathSelectorType:
  8338  		return "type"
  8339  	case MonitoredResource_FieldPathSelectorLabels:
  8340  		return "labels"
  8341  	case MonitoredResource_FieldPathSelectorReducedLabels:
  8342  		return "reduced_labels"
  8343  	default:
  8344  		panic(fmt.Sprintf("Invalid selector for MonitoredResource: %d", s))
  8345  	}
  8346  }
  8347  
  8348  func BuildMonitoredResource_FieldPath(fp gotenobject.RawFieldPath) (MonitoredResource_FieldPath, error) {
  8349  	if len(fp) == 0 {
  8350  		return nil, status.Error(codes.InvalidArgument, "empty field path for object MonitoredResource")
  8351  	}
  8352  	if len(fp) == 1 {
  8353  		switch fp[0] {
  8354  		case "type":
  8355  			return &MonitoredResource_FieldTerminalPath{selector: MonitoredResource_FieldPathSelectorType}, nil
  8356  		case "labels":
  8357  			return &MonitoredResource_FieldTerminalPath{selector: MonitoredResource_FieldPathSelectorLabels}, nil
  8358  		case "reduced_labels", "reducedLabels", "reduced-labels":
  8359  			return &MonitoredResource_FieldTerminalPath{selector: MonitoredResource_FieldPathSelectorReducedLabels}, nil
  8360  		}
  8361  	} else {
  8362  		switch fp[0] {
  8363  		case "labels":
  8364  			if len(fp) > 2 {
  8365  				return nil, status.Errorf(codes.InvalidArgument, "sub path for maps ('%s') are not supported (object MonitoredResource)", fp)
  8366  			}
  8367  			return &MonitoredResource_FieldPathMap{selector: MonitoredResource_FieldPathSelectorLabels, key: fp[1]}, nil
  8368  		}
  8369  	}
  8370  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object MonitoredResource", fp)
  8371  }
  8372  
  8373  func ParseMonitoredResource_FieldPath(rawField string) (MonitoredResource_FieldPath, error) {
  8374  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  8375  	if err != nil {
  8376  		return nil, err
  8377  	}
  8378  	return BuildMonitoredResource_FieldPath(fp)
  8379  }
  8380  
  8381  func MustParseMonitoredResource_FieldPath(rawField string) MonitoredResource_FieldPath {
  8382  	fp, err := ParseMonitoredResource_FieldPath(rawField)
  8383  	if err != nil {
  8384  		panic(err)
  8385  	}
  8386  	return fp
  8387  }
  8388  
  8389  type MonitoredResource_FieldTerminalPath struct {
  8390  	selector MonitoredResource_FieldPathSelector
  8391  }
  8392  
  8393  var _ MonitoredResource_FieldPath = (*MonitoredResource_FieldTerminalPath)(nil)
  8394  
  8395  func (fp *MonitoredResource_FieldTerminalPath) Selector() MonitoredResource_FieldPathSelector {
  8396  	return fp.selector
  8397  }
  8398  
  8399  // String returns path representation in proto convention
  8400  func (fp *MonitoredResource_FieldTerminalPath) String() string {
  8401  	return fp.selector.String()
  8402  }
  8403  
  8404  // JSONString returns path representation is JSON convention
  8405  func (fp *MonitoredResource_FieldTerminalPath) JSONString() string {
  8406  	return strcase.ToLowerCamel(fp.String())
  8407  }
  8408  
  8409  // Get returns all values pointed by specific field from source MonitoredResource
  8410  func (fp *MonitoredResource_FieldTerminalPath) Get(source *MonitoredResource) (values []interface{}) {
  8411  	if source != nil {
  8412  		switch fp.selector {
  8413  		case MonitoredResource_FieldPathSelectorType:
  8414  			values = append(values, source.Type)
  8415  		case MonitoredResource_FieldPathSelectorLabels:
  8416  			values = append(values, source.Labels)
  8417  		case MonitoredResource_FieldPathSelectorReducedLabels:
  8418  			for _, value := range source.GetReducedLabels() {
  8419  				values = append(values, value)
  8420  			}
  8421  		default:
  8422  			panic(fmt.Sprintf("Invalid selector for MonitoredResource: %d", fp.selector))
  8423  		}
  8424  	}
  8425  	return
  8426  }
  8427  
  8428  func (fp *MonitoredResource_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  8429  	return fp.Get(source.(*MonitoredResource))
  8430  }
  8431  
  8432  // GetSingle returns value pointed by specific field of from source MonitoredResource
  8433  func (fp *MonitoredResource_FieldTerminalPath) GetSingle(source *MonitoredResource) (interface{}, bool) {
  8434  	switch fp.selector {
  8435  	case MonitoredResource_FieldPathSelectorType:
  8436  		return source.GetType(), source != nil
  8437  	case MonitoredResource_FieldPathSelectorLabels:
  8438  		res := source.GetLabels()
  8439  		return res, res != nil
  8440  	case MonitoredResource_FieldPathSelectorReducedLabels:
  8441  		res := source.GetReducedLabels()
  8442  		return res, res != nil
  8443  	default:
  8444  		panic(fmt.Sprintf("Invalid selector for MonitoredResource: %d", fp.selector))
  8445  	}
  8446  }
  8447  
  8448  func (fp *MonitoredResource_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  8449  	return fp.GetSingle(source.(*MonitoredResource))
  8450  }
  8451  
  8452  // GetDefault returns a default value of the field type
  8453  func (fp *MonitoredResource_FieldTerminalPath) GetDefault() interface{} {
  8454  	switch fp.selector {
  8455  	case MonitoredResource_FieldPathSelectorType:
  8456  		return ""
  8457  	case MonitoredResource_FieldPathSelectorLabels:
  8458  		return (map[string]string)(nil)
  8459  	case MonitoredResource_FieldPathSelectorReducedLabels:
  8460  		return ([]string)(nil)
  8461  	default:
  8462  		panic(fmt.Sprintf("Invalid selector for MonitoredResource: %d", fp.selector))
  8463  	}
  8464  }
  8465  
  8466  func (fp *MonitoredResource_FieldTerminalPath) ClearValue(item *MonitoredResource) {
  8467  	if item != nil {
  8468  		switch fp.selector {
  8469  		case MonitoredResource_FieldPathSelectorType:
  8470  			item.Type = ""
  8471  		case MonitoredResource_FieldPathSelectorLabels:
  8472  			item.Labels = nil
  8473  		case MonitoredResource_FieldPathSelectorReducedLabels:
  8474  			item.ReducedLabels = nil
  8475  		default:
  8476  			panic(fmt.Sprintf("Invalid selector for MonitoredResource: %d", fp.selector))
  8477  		}
  8478  	}
  8479  }
  8480  
  8481  func (fp *MonitoredResource_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  8482  	fp.ClearValue(item.(*MonitoredResource))
  8483  }
  8484  
  8485  // IsLeaf - whether field path is holds simple value
  8486  func (fp *MonitoredResource_FieldTerminalPath) IsLeaf() bool {
  8487  	return fp.selector == MonitoredResource_FieldPathSelectorType ||
  8488  		fp.selector == MonitoredResource_FieldPathSelectorLabels ||
  8489  		fp.selector == MonitoredResource_FieldPathSelectorReducedLabels
  8490  }
  8491  
  8492  func (fp *MonitoredResource_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  8493  	return []gotenobject.FieldPath{fp}
  8494  }
  8495  
  8496  func (fp *MonitoredResource_FieldTerminalPath) WithIValue(value interface{}) MonitoredResource_FieldPathValue {
  8497  	switch fp.selector {
  8498  	case MonitoredResource_FieldPathSelectorType:
  8499  		return &MonitoredResource_FieldTerminalPathValue{MonitoredResource_FieldTerminalPath: *fp, value: value.(string)}
  8500  	case MonitoredResource_FieldPathSelectorLabels:
  8501  		return &MonitoredResource_FieldTerminalPathValue{MonitoredResource_FieldTerminalPath: *fp, value: value.(map[string]string)}
  8502  	case MonitoredResource_FieldPathSelectorReducedLabels:
  8503  		return &MonitoredResource_FieldTerminalPathValue{MonitoredResource_FieldTerminalPath: *fp, value: value.([]string)}
  8504  	default:
  8505  		panic(fmt.Sprintf("Invalid selector for MonitoredResource: %d", fp.selector))
  8506  	}
  8507  }
  8508  
  8509  func (fp *MonitoredResource_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  8510  	return fp.WithIValue(value)
  8511  }
  8512  
  8513  func (fp *MonitoredResource_FieldTerminalPath) WithIArrayOfValues(values interface{}) MonitoredResource_FieldPathArrayOfValues {
  8514  	fpaov := &MonitoredResource_FieldTerminalPathArrayOfValues{MonitoredResource_FieldTerminalPath: *fp}
  8515  	switch fp.selector {
  8516  	case MonitoredResource_FieldPathSelectorType:
  8517  		return &MonitoredResource_FieldTerminalPathArrayOfValues{MonitoredResource_FieldTerminalPath: *fp, values: values.([]string)}
  8518  	case MonitoredResource_FieldPathSelectorLabels:
  8519  		return &MonitoredResource_FieldTerminalPathArrayOfValues{MonitoredResource_FieldTerminalPath: *fp, values: values.([]map[string]string)}
  8520  	case MonitoredResource_FieldPathSelectorReducedLabels:
  8521  		return &MonitoredResource_FieldTerminalPathArrayOfValues{MonitoredResource_FieldTerminalPath: *fp, values: values.([][]string)}
  8522  	default:
  8523  		panic(fmt.Sprintf("Invalid selector for MonitoredResource: %d", fp.selector))
  8524  	}
  8525  	return fpaov
  8526  }
  8527  
  8528  func (fp *MonitoredResource_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  8529  	return fp.WithIArrayOfValues(values)
  8530  }
  8531  
  8532  func (fp *MonitoredResource_FieldTerminalPath) WithIArrayItemValue(value interface{}) MonitoredResource_FieldPathArrayItemValue {
  8533  	switch fp.selector {
  8534  	case MonitoredResource_FieldPathSelectorReducedLabels:
  8535  		return &MonitoredResource_FieldTerminalPathArrayItemValue{MonitoredResource_FieldTerminalPath: *fp, value: value.(string)}
  8536  	default:
  8537  		panic(fmt.Sprintf("Invalid selector for MonitoredResource: %d", fp.selector))
  8538  	}
  8539  }
  8540  
  8541  func (fp *MonitoredResource_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  8542  	return fp.WithIArrayItemValue(value)
  8543  }
  8544  
  8545  // FieldPath for map type with additional Key information
  8546  type MonitoredResource_FieldPathMap struct {
  8547  	key      string
  8548  	selector MonitoredResource_FieldPathSelector
  8549  }
  8550  
  8551  var _ MonitoredResource_FieldPath = (*MonitoredResource_FieldPathMap)(nil)
  8552  
  8553  func (fpm *MonitoredResource_FieldPathMap) Selector() MonitoredResource_FieldPathSelector {
  8554  	return fpm.selector
  8555  }
  8556  
  8557  func (fpm *MonitoredResource_FieldPathMap) Key() string {
  8558  	return fpm.key
  8559  }
  8560  
  8561  // String returns path representation in proto convention
  8562  func (fpm *MonitoredResource_FieldPathMap) String() string {
  8563  	return fpm.selector.String() + "." + fpm.key
  8564  }
  8565  
  8566  // JSONString returns path representation is JSON convention. Note that map keys are not transformed
  8567  func (fpm *MonitoredResource_FieldPathMap) JSONString() string {
  8568  	return strcase.ToLowerCamel(fpm.selector.String()) + "." + fpm.key
  8569  }
  8570  
  8571  // Get returns all values pointed by selected field map key from source MonitoredResource
  8572  func (fpm *MonitoredResource_FieldPathMap) Get(source *MonitoredResource) (values []interface{}) {
  8573  	switch fpm.selector {
  8574  	case MonitoredResource_FieldPathSelectorLabels:
  8575  		if value, ok := source.GetLabels()[fpm.key]; ok {
  8576  			values = append(values, value)
  8577  		}
  8578  	default:
  8579  		panic(fmt.Sprintf("Invalid selector for MonitoredResource: %d", fpm.selector))
  8580  	}
  8581  	return
  8582  }
  8583  
  8584  func (fpm *MonitoredResource_FieldPathMap) GetRaw(source proto.Message) []interface{} {
  8585  	return fpm.Get(source.(*MonitoredResource))
  8586  }
  8587  
  8588  // GetSingle returns value by selected field map key from source MonitoredResource
  8589  func (fpm *MonitoredResource_FieldPathMap) GetSingle(source *MonitoredResource) (interface{}, bool) {
  8590  	switch fpm.selector {
  8591  	case MonitoredResource_FieldPathSelectorLabels:
  8592  		res, ok := source.GetLabels()[fpm.key]
  8593  		return res, ok
  8594  	default:
  8595  		panic(fmt.Sprintf("Invalid selector for MonitoredResource: %d", fpm.selector))
  8596  	}
  8597  }
  8598  
  8599  func (fpm *MonitoredResource_FieldPathMap) GetSingleRaw(source proto.Message) (interface{}, bool) {
  8600  	return fpm.GetSingle(source.(*MonitoredResource))
  8601  }
  8602  
  8603  // GetDefault returns a default value of the field type
  8604  func (fpm *MonitoredResource_FieldPathMap) GetDefault() interface{} {
  8605  	switch fpm.selector {
  8606  	case MonitoredResource_FieldPathSelectorLabels:
  8607  		var v string
  8608  		return v
  8609  	default:
  8610  		panic(fmt.Sprintf("Invalid selector for MonitoredResource: %d", fpm.selector))
  8611  	}
  8612  }
  8613  
  8614  func (fpm *MonitoredResource_FieldPathMap) ClearValue(item *MonitoredResource) {
  8615  	if item != nil {
  8616  		switch fpm.selector {
  8617  		case MonitoredResource_FieldPathSelectorLabels:
  8618  			delete(item.Labels, fpm.key)
  8619  		default:
  8620  			panic(fmt.Sprintf("Invalid selector for MonitoredResource: %d", fpm.selector))
  8621  		}
  8622  	}
  8623  }
  8624  
  8625  func (fpm *MonitoredResource_FieldPathMap) ClearValueRaw(item proto.Message) {
  8626  	fpm.ClearValue(item.(*MonitoredResource))
  8627  }
  8628  
  8629  // IsLeaf - whether field path is holds simple value
  8630  func (fpm *MonitoredResource_FieldPathMap) IsLeaf() bool {
  8631  	switch fpm.selector {
  8632  	case MonitoredResource_FieldPathSelectorLabels:
  8633  		return true
  8634  	default:
  8635  		panic(fmt.Sprintf("Invalid selector for MonitoredResource: %d", fpm.selector))
  8636  	}
  8637  }
  8638  
  8639  func (fpm *MonitoredResource_FieldPathMap) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  8640  	return []gotenobject.FieldPath{fpm}
  8641  }
  8642  
  8643  func (fpm *MonitoredResource_FieldPathMap) WithIValue(value interface{}) MonitoredResource_FieldPathValue {
  8644  	switch fpm.selector {
  8645  	case MonitoredResource_FieldPathSelectorLabels:
  8646  		return &MonitoredResource_FieldPathMapValue{MonitoredResource_FieldPathMap: *fpm, value: value.(string)}
  8647  	default:
  8648  		panic(fmt.Sprintf("Invalid selector for MonitoredResource: %d", fpm.selector))
  8649  	}
  8650  }
  8651  
  8652  func (fpm *MonitoredResource_FieldPathMap) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  8653  	return fpm.WithIValue(value)
  8654  }
  8655  
  8656  func (fpm *MonitoredResource_FieldPathMap) WithIArrayOfValues(values interface{}) MonitoredResource_FieldPathArrayOfValues {
  8657  	switch fpm.selector {
  8658  	case MonitoredResource_FieldPathSelectorLabels:
  8659  		return &MonitoredResource_FieldPathMapArrayOfValues{MonitoredResource_FieldPathMap: *fpm, values: values.([]string)}
  8660  	default:
  8661  		panic(fmt.Sprintf("Invalid selector for MonitoredResource: %d", fpm.selector))
  8662  	}
  8663  }
  8664  
  8665  func (fpm *MonitoredResource_FieldPathMap) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  8666  	return fpm.WithIArrayOfValues(values)
  8667  }
  8668  
  8669  func (fpm *MonitoredResource_FieldPathMap) WithIArrayItemValue(value interface{}) MonitoredResource_FieldPathArrayItemValue {
  8670  	panic("Cannot create array item value from map fieldpath")
  8671  }
  8672  
  8673  func (fpm *MonitoredResource_FieldPathMap) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  8674  	return fpm.WithIArrayItemValue(value)
  8675  }
  8676  
  8677  // MonitoredResource_FieldPathValue allows storing values for MonitoredResource fields according to their type
  8678  type MonitoredResource_FieldPathValue interface {
  8679  	MonitoredResource_FieldPath
  8680  	gotenobject.FieldPathValue
  8681  	SetTo(target **MonitoredResource)
  8682  	CompareWith(*MonitoredResource) (cmp int, comparable bool)
  8683  }
  8684  
  8685  func ParseMonitoredResource_FieldPathValue(pathStr, valueStr string) (MonitoredResource_FieldPathValue, error) {
  8686  	fp, err := ParseMonitoredResource_FieldPath(pathStr)
  8687  	if err != nil {
  8688  		return nil, err
  8689  	}
  8690  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  8691  	if err != nil {
  8692  		return nil, status.Errorf(codes.InvalidArgument, "error parsing MonitoredResource field path value from %s: %v", valueStr, err)
  8693  	}
  8694  	return fpv.(MonitoredResource_FieldPathValue), nil
  8695  }
  8696  
  8697  func MustParseMonitoredResource_FieldPathValue(pathStr, valueStr string) MonitoredResource_FieldPathValue {
  8698  	fpv, err := ParseMonitoredResource_FieldPathValue(pathStr, valueStr)
  8699  	if err != nil {
  8700  		panic(err)
  8701  	}
  8702  	return fpv
  8703  }
  8704  
  8705  type MonitoredResource_FieldTerminalPathValue struct {
  8706  	MonitoredResource_FieldTerminalPath
  8707  	value interface{}
  8708  }
  8709  
  8710  var _ MonitoredResource_FieldPathValue = (*MonitoredResource_FieldTerminalPathValue)(nil)
  8711  
  8712  // GetRawValue returns raw value stored under selected path for 'MonitoredResource' as interface{}
  8713  func (fpv *MonitoredResource_FieldTerminalPathValue) GetRawValue() interface{} {
  8714  	return fpv.value
  8715  }
  8716  func (fpv *MonitoredResource_FieldTerminalPathValue) AsTypeValue() (string, bool) {
  8717  	res, ok := fpv.value.(string)
  8718  	return res, ok
  8719  }
  8720  func (fpv *MonitoredResource_FieldTerminalPathValue) AsLabelsValue() (map[string]string, bool) {
  8721  	res, ok := fpv.value.(map[string]string)
  8722  	return res, ok
  8723  }
  8724  func (fpv *MonitoredResource_FieldTerminalPathValue) AsReducedLabelsValue() ([]string, bool) {
  8725  	res, ok := fpv.value.([]string)
  8726  	return res, ok
  8727  }
  8728  
  8729  // SetTo stores value for selected field for object MonitoredResource
  8730  func (fpv *MonitoredResource_FieldTerminalPathValue) SetTo(target **MonitoredResource) {
  8731  	if *target == nil {
  8732  		*target = new(MonitoredResource)
  8733  	}
  8734  	switch fpv.selector {
  8735  	case MonitoredResource_FieldPathSelectorType:
  8736  		(*target).Type = fpv.value.(string)
  8737  	case MonitoredResource_FieldPathSelectorLabels:
  8738  		(*target).Labels = fpv.value.(map[string]string)
  8739  	case MonitoredResource_FieldPathSelectorReducedLabels:
  8740  		(*target).ReducedLabels = fpv.value.([]string)
  8741  	default:
  8742  		panic(fmt.Sprintf("Invalid selector for MonitoredResource: %d", fpv.selector))
  8743  	}
  8744  }
  8745  
  8746  func (fpv *MonitoredResource_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  8747  	typedObject := target.(*MonitoredResource)
  8748  	fpv.SetTo(&typedObject)
  8749  }
  8750  
  8751  // CompareWith compares value in the 'MonitoredResource_FieldTerminalPathValue' with the value under path in 'MonitoredResource'.
  8752  func (fpv *MonitoredResource_FieldTerminalPathValue) CompareWith(source *MonitoredResource) (int, bool) {
  8753  	switch fpv.selector {
  8754  	case MonitoredResource_FieldPathSelectorType:
  8755  		leftValue := fpv.value.(string)
  8756  		rightValue := source.GetType()
  8757  		if (leftValue) == (rightValue) {
  8758  			return 0, true
  8759  		} else if (leftValue) < (rightValue) {
  8760  			return -1, true
  8761  		} else {
  8762  			return 1, true
  8763  		}
  8764  	case MonitoredResource_FieldPathSelectorLabels:
  8765  		return 0, false
  8766  	case MonitoredResource_FieldPathSelectorReducedLabels:
  8767  		return 0, false
  8768  	default:
  8769  		panic(fmt.Sprintf("Invalid selector for MonitoredResource: %d", fpv.selector))
  8770  	}
  8771  }
  8772  
  8773  func (fpv *MonitoredResource_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  8774  	return fpv.CompareWith(source.(*MonitoredResource))
  8775  }
  8776  
  8777  type MonitoredResource_FieldPathMapValue struct {
  8778  	MonitoredResource_FieldPathMap
  8779  	value interface{}
  8780  }
  8781  
  8782  var _ MonitoredResource_FieldPathValue = (*MonitoredResource_FieldPathMapValue)(nil)
  8783  
  8784  // GetValue returns value stored under selected field in MonitoredResource as interface{}
  8785  func (fpmv *MonitoredResource_FieldPathMapValue) GetRawValue() interface{} {
  8786  	return fpmv.value
  8787  }
  8788  func (fpmv *MonitoredResource_FieldPathMapValue) AsLabelsElementValue() (string, bool) {
  8789  	res, ok := fpmv.value.(string)
  8790  	return res, ok
  8791  }
  8792  
  8793  // SetTo stores value for selected field in MonitoredResource
  8794  func (fpmv *MonitoredResource_FieldPathMapValue) SetTo(target **MonitoredResource) {
  8795  	if *target == nil {
  8796  		*target = new(MonitoredResource)
  8797  	}
  8798  	switch fpmv.selector {
  8799  	case MonitoredResource_FieldPathSelectorLabels:
  8800  		if (*target).Labels == nil {
  8801  			(*target).Labels = make(map[string]string)
  8802  		}
  8803  		(*target).Labels[fpmv.key] = fpmv.value.(string)
  8804  	default:
  8805  		panic(fmt.Sprintf("Invalid selector for MonitoredResource: %d", fpmv.selector))
  8806  	}
  8807  }
  8808  
  8809  func (fpmv *MonitoredResource_FieldPathMapValue) SetToRaw(target proto.Message) {
  8810  	typedObject := target.(*MonitoredResource)
  8811  	fpmv.SetTo(&typedObject)
  8812  }
  8813  
  8814  // CompareWith compares value in the 'MonitoredResource_FieldPathMapValue' with the value under path in 'MonitoredResource'.
  8815  func (fpmv *MonitoredResource_FieldPathMapValue) CompareWith(source *MonitoredResource) (int, bool) {
  8816  	switch fpmv.selector {
  8817  	case MonitoredResource_FieldPathSelectorLabels:
  8818  		leftValue := fpmv.value.(string)
  8819  		rightValue := source.GetLabels()[fpmv.key]
  8820  		if (leftValue) == (rightValue) {
  8821  			return 0, true
  8822  		} else if (leftValue) < (rightValue) {
  8823  			return -1, true
  8824  		} else {
  8825  			return 1, true
  8826  		}
  8827  	default:
  8828  		panic(fmt.Sprintf("Invalid selector for MonitoredResource: %d", fpmv.selector))
  8829  	}
  8830  }
  8831  
  8832  func (fpmv *MonitoredResource_FieldPathMapValue) CompareWithRaw(source proto.Message) (int, bool) {
  8833  	return fpmv.CompareWith(source.(*MonitoredResource))
  8834  }
  8835  
  8836  // MonitoredResource_FieldPathArrayItemValue allows storing single item in Path-specific values for MonitoredResource according to their type
  8837  // Present only for array (repeated) types.
  8838  type MonitoredResource_FieldPathArrayItemValue interface {
  8839  	gotenobject.FieldPathArrayItemValue
  8840  	MonitoredResource_FieldPath
  8841  	ContainsValue(*MonitoredResource) bool
  8842  }
  8843  
  8844  // ParseMonitoredResource_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  8845  func ParseMonitoredResource_FieldPathArrayItemValue(pathStr, valueStr string) (MonitoredResource_FieldPathArrayItemValue, error) {
  8846  	fp, err := ParseMonitoredResource_FieldPath(pathStr)
  8847  	if err != nil {
  8848  		return nil, err
  8849  	}
  8850  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  8851  	if err != nil {
  8852  		return nil, status.Errorf(codes.InvalidArgument, "error parsing MonitoredResource field path array item value from %s: %v", valueStr, err)
  8853  	}
  8854  	return fpaiv.(MonitoredResource_FieldPathArrayItemValue), nil
  8855  }
  8856  
  8857  func MustParseMonitoredResource_FieldPathArrayItemValue(pathStr, valueStr string) MonitoredResource_FieldPathArrayItemValue {
  8858  	fpaiv, err := ParseMonitoredResource_FieldPathArrayItemValue(pathStr, valueStr)
  8859  	if err != nil {
  8860  		panic(err)
  8861  	}
  8862  	return fpaiv
  8863  }
  8864  
  8865  type MonitoredResource_FieldTerminalPathArrayItemValue struct {
  8866  	MonitoredResource_FieldTerminalPath
  8867  	value interface{}
  8868  }
  8869  
  8870  var _ MonitoredResource_FieldPathArrayItemValue = (*MonitoredResource_FieldTerminalPathArrayItemValue)(nil)
  8871  
  8872  // GetRawValue returns stored element value for array in object MonitoredResource as interface{}
  8873  func (fpaiv *MonitoredResource_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  8874  	return fpaiv.value
  8875  }
  8876  func (fpaiv *MonitoredResource_FieldTerminalPathArrayItemValue) AsReducedLabelsItemValue() (string, bool) {
  8877  	res, ok := fpaiv.value.(string)
  8878  	return res, ok
  8879  }
  8880  
  8881  func (fpaiv *MonitoredResource_FieldTerminalPathArrayItemValue) GetSingle(source *MonitoredResource) (interface{}, bool) {
  8882  	return nil, false
  8883  }
  8884  
  8885  func (fpaiv *MonitoredResource_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  8886  	return fpaiv.GetSingle(source.(*MonitoredResource))
  8887  }
  8888  
  8889  // Contains returns a boolean indicating if value that is being held is present in given 'MonitoredResource'
  8890  func (fpaiv *MonitoredResource_FieldTerminalPathArrayItemValue) ContainsValue(source *MonitoredResource) bool {
  8891  	slice := fpaiv.MonitoredResource_FieldTerminalPath.Get(source)
  8892  	for _, v := range slice {
  8893  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  8894  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  8895  				return true
  8896  			}
  8897  		} else if reflect.DeepEqual(v, fpaiv.value) {
  8898  			return true
  8899  		}
  8900  	}
  8901  	return false
  8902  }
  8903  
  8904  // MonitoredResource_FieldPathArrayOfValues allows storing slice of values for MonitoredResource fields according to their type
  8905  type MonitoredResource_FieldPathArrayOfValues interface {
  8906  	gotenobject.FieldPathArrayOfValues
  8907  	MonitoredResource_FieldPath
  8908  }
  8909  
  8910  func ParseMonitoredResource_FieldPathArrayOfValues(pathStr, valuesStr string) (MonitoredResource_FieldPathArrayOfValues, error) {
  8911  	fp, err := ParseMonitoredResource_FieldPath(pathStr)
  8912  	if err != nil {
  8913  		return nil, err
  8914  	}
  8915  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  8916  	if err != nil {
  8917  		return nil, status.Errorf(codes.InvalidArgument, "error parsing MonitoredResource field path array of values from %s: %v", valuesStr, err)
  8918  	}
  8919  	return fpaov.(MonitoredResource_FieldPathArrayOfValues), nil
  8920  }
  8921  
  8922  func MustParseMonitoredResource_FieldPathArrayOfValues(pathStr, valuesStr string) MonitoredResource_FieldPathArrayOfValues {
  8923  	fpaov, err := ParseMonitoredResource_FieldPathArrayOfValues(pathStr, valuesStr)
  8924  	if err != nil {
  8925  		panic(err)
  8926  	}
  8927  	return fpaov
  8928  }
  8929  
  8930  type MonitoredResource_FieldTerminalPathArrayOfValues struct {
  8931  	MonitoredResource_FieldTerminalPath
  8932  	values interface{}
  8933  }
  8934  
  8935  var _ MonitoredResource_FieldPathArrayOfValues = (*MonitoredResource_FieldTerminalPathArrayOfValues)(nil)
  8936  
  8937  func (fpaov *MonitoredResource_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  8938  	switch fpaov.selector {
  8939  	case MonitoredResource_FieldPathSelectorType:
  8940  		for _, v := range fpaov.values.([]string) {
  8941  			values = append(values, v)
  8942  		}
  8943  	case MonitoredResource_FieldPathSelectorLabels:
  8944  		for _, v := range fpaov.values.([]map[string]string) {
  8945  			values = append(values, v)
  8946  		}
  8947  	case MonitoredResource_FieldPathSelectorReducedLabels:
  8948  		for _, v := range fpaov.values.([][]string) {
  8949  			values = append(values, v)
  8950  		}
  8951  	}
  8952  	return
  8953  }
  8954  func (fpaov *MonitoredResource_FieldTerminalPathArrayOfValues) AsTypeArrayOfValues() ([]string, bool) {
  8955  	res, ok := fpaov.values.([]string)
  8956  	return res, ok
  8957  }
  8958  func (fpaov *MonitoredResource_FieldTerminalPathArrayOfValues) AsLabelsArrayOfValues() ([]map[string]string, bool) {
  8959  	res, ok := fpaov.values.([]map[string]string)
  8960  	return res, ok
  8961  }
  8962  func (fpaov *MonitoredResource_FieldTerminalPathArrayOfValues) AsReducedLabelsArrayOfValues() ([][]string, bool) {
  8963  	res, ok := fpaov.values.([][]string)
  8964  	return res, ok
  8965  }
  8966  
  8967  type MonitoredResource_FieldPathMapArrayOfValues struct {
  8968  	MonitoredResource_FieldPathMap
  8969  	values interface{}
  8970  }
  8971  
  8972  var _ MonitoredResource_FieldPathArrayOfValues = (*MonitoredResource_FieldPathMapArrayOfValues)(nil)
  8973  
  8974  func (fpmaov *MonitoredResource_FieldPathMapArrayOfValues) GetRawValues() (values []interface{}) {
  8975  	switch fpmaov.selector {
  8976  	case MonitoredResource_FieldPathSelectorLabels:
  8977  		for _, v := range fpmaov.values.([]string) {
  8978  			values = append(values, v)
  8979  		}
  8980  	}
  8981  	return
  8982  }
  8983  func (fpmaov *MonitoredResource_FieldPathMapArrayOfValues) AsLabelsArrayOfElementValues() ([]string, bool) {
  8984  	res, ok := fpmaov.values.([]string)
  8985  	return res, ok
  8986  }
  8987  
  8988  // FieldPath provides implementation to handle
  8989  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  8990  type Strings_FieldPath interface {
  8991  	gotenobject.FieldPath
  8992  	Selector() Strings_FieldPathSelector
  8993  	Get(source *Strings) []interface{}
  8994  	GetSingle(source *Strings) (interface{}, bool)
  8995  	ClearValue(item *Strings)
  8996  
  8997  	// Those methods build corresponding Strings_FieldPathValue
  8998  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
  8999  	WithIValue(value interface{}) Strings_FieldPathValue
  9000  	WithIArrayOfValues(values interface{}) Strings_FieldPathArrayOfValues
  9001  	WithIArrayItemValue(value interface{}) Strings_FieldPathArrayItemValue
  9002  }
  9003  
  9004  type Strings_FieldPathSelector int32
  9005  
  9006  const (
  9007  	Strings_FieldPathSelectorValues Strings_FieldPathSelector = 0
  9008  )
  9009  
  9010  func (s Strings_FieldPathSelector) String() string {
  9011  	switch s {
  9012  	case Strings_FieldPathSelectorValues:
  9013  		return "values"
  9014  	default:
  9015  		panic(fmt.Sprintf("Invalid selector for Strings: %d", s))
  9016  	}
  9017  }
  9018  
  9019  func BuildStrings_FieldPath(fp gotenobject.RawFieldPath) (Strings_FieldPath, error) {
  9020  	if len(fp) == 0 {
  9021  		return nil, status.Error(codes.InvalidArgument, "empty field path for object Strings")
  9022  	}
  9023  	if len(fp) == 1 {
  9024  		switch fp[0] {
  9025  		case "values":
  9026  			return &Strings_FieldTerminalPath{selector: Strings_FieldPathSelectorValues}, nil
  9027  		}
  9028  	}
  9029  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object Strings", fp)
  9030  }
  9031  
  9032  func ParseStrings_FieldPath(rawField string) (Strings_FieldPath, error) {
  9033  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  9034  	if err != nil {
  9035  		return nil, err
  9036  	}
  9037  	return BuildStrings_FieldPath(fp)
  9038  }
  9039  
  9040  func MustParseStrings_FieldPath(rawField string) Strings_FieldPath {
  9041  	fp, err := ParseStrings_FieldPath(rawField)
  9042  	if err != nil {
  9043  		panic(err)
  9044  	}
  9045  	return fp
  9046  }
  9047  
  9048  type Strings_FieldTerminalPath struct {
  9049  	selector Strings_FieldPathSelector
  9050  }
  9051  
  9052  var _ Strings_FieldPath = (*Strings_FieldTerminalPath)(nil)
  9053  
  9054  func (fp *Strings_FieldTerminalPath) Selector() Strings_FieldPathSelector {
  9055  	return fp.selector
  9056  }
  9057  
  9058  // String returns path representation in proto convention
  9059  func (fp *Strings_FieldTerminalPath) String() string {
  9060  	return fp.selector.String()
  9061  }
  9062  
  9063  // JSONString returns path representation is JSON convention
  9064  func (fp *Strings_FieldTerminalPath) JSONString() string {
  9065  	return strcase.ToLowerCamel(fp.String())
  9066  }
  9067  
  9068  // Get returns all values pointed by specific field from source Strings
  9069  func (fp *Strings_FieldTerminalPath) Get(source *Strings) (values []interface{}) {
  9070  	if source != nil {
  9071  		switch fp.selector {
  9072  		case Strings_FieldPathSelectorValues:
  9073  			for _, value := range source.GetValues() {
  9074  				values = append(values, value)
  9075  			}
  9076  		default:
  9077  			panic(fmt.Sprintf("Invalid selector for Strings: %d", fp.selector))
  9078  		}
  9079  	}
  9080  	return
  9081  }
  9082  
  9083  func (fp *Strings_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  9084  	return fp.Get(source.(*Strings))
  9085  }
  9086  
  9087  // GetSingle returns value pointed by specific field of from source Strings
  9088  func (fp *Strings_FieldTerminalPath) GetSingle(source *Strings) (interface{}, bool) {
  9089  	switch fp.selector {
  9090  	case Strings_FieldPathSelectorValues:
  9091  		res := source.GetValues()
  9092  		return res, res != nil
  9093  	default:
  9094  		panic(fmt.Sprintf("Invalid selector for Strings: %d", fp.selector))
  9095  	}
  9096  }
  9097  
  9098  func (fp *Strings_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  9099  	return fp.GetSingle(source.(*Strings))
  9100  }
  9101  
  9102  // GetDefault returns a default value of the field type
  9103  func (fp *Strings_FieldTerminalPath) GetDefault() interface{} {
  9104  	switch fp.selector {
  9105  	case Strings_FieldPathSelectorValues:
  9106  		return ([]string)(nil)
  9107  	default:
  9108  		panic(fmt.Sprintf("Invalid selector for Strings: %d", fp.selector))
  9109  	}
  9110  }
  9111  
  9112  func (fp *Strings_FieldTerminalPath) ClearValue(item *Strings) {
  9113  	if item != nil {
  9114  		switch fp.selector {
  9115  		case Strings_FieldPathSelectorValues:
  9116  			item.Values = nil
  9117  		default:
  9118  			panic(fmt.Sprintf("Invalid selector for Strings: %d", fp.selector))
  9119  		}
  9120  	}
  9121  }
  9122  
  9123  func (fp *Strings_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  9124  	fp.ClearValue(item.(*Strings))
  9125  }
  9126  
  9127  // IsLeaf - whether field path is holds simple value
  9128  func (fp *Strings_FieldTerminalPath) IsLeaf() bool {
  9129  	return fp.selector == Strings_FieldPathSelectorValues
  9130  }
  9131  
  9132  func (fp *Strings_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  9133  	return []gotenobject.FieldPath{fp}
  9134  }
  9135  
  9136  func (fp *Strings_FieldTerminalPath) WithIValue(value interface{}) Strings_FieldPathValue {
  9137  	switch fp.selector {
  9138  	case Strings_FieldPathSelectorValues:
  9139  		return &Strings_FieldTerminalPathValue{Strings_FieldTerminalPath: *fp, value: value.([]string)}
  9140  	default:
  9141  		panic(fmt.Sprintf("Invalid selector for Strings: %d", fp.selector))
  9142  	}
  9143  }
  9144  
  9145  func (fp *Strings_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  9146  	return fp.WithIValue(value)
  9147  }
  9148  
  9149  func (fp *Strings_FieldTerminalPath) WithIArrayOfValues(values interface{}) Strings_FieldPathArrayOfValues {
  9150  	fpaov := &Strings_FieldTerminalPathArrayOfValues{Strings_FieldTerminalPath: *fp}
  9151  	switch fp.selector {
  9152  	case Strings_FieldPathSelectorValues:
  9153  		return &Strings_FieldTerminalPathArrayOfValues{Strings_FieldTerminalPath: *fp, values: values.([][]string)}
  9154  	default:
  9155  		panic(fmt.Sprintf("Invalid selector for Strings: %d", fp.selector))
  9156  	}
  9157  	return fpaov
  9158  }
  9159  
  9160  func (fp *Strings_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  9161  	return fp.WithIArrayOfValues(values)
  9162  }
  9163  
  9164  func (fp *Strings_FieldTerminalPath) WithIArrayItemValue(value interface{}) Strings_FieldPathArrayItemValue {
  9165  	switch fp.selector {
  9166  	case Strings_FieldPathSelectorValues:
  9167  		return &Strings_FieldTerminalPathArrayItemValue{Strings_FieldTerminalPath: *fp, value: value.(string)}
  9168  	default:
  9169  		panic(fmt.Sprintf("Invalid selector for Strings: %d", fp.selector))
  9170  	}
  9171  }
  9172  
  9173  func (fp *Strings_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  9174  	return fp.WithIArrayItemValue(value)
  9175  }
  9176  
  9177  // Strings_FieldPathValue allows storing values for Strings fields according to their type
  9178  type Strings_FieldPathValue interface {
  9179  	Strings_FieldPath
  9180  	gotenobject.FieldPathValue
  9181  	SetTo(target **Strings)
  9182  	CompareWith(*Strings) (cmp int, comparable bool)
  9183  }
  9184  
  9185  func ParseStrings_FieldPathValue(pathStr, valueStr string) (Strings_FieldPathValue, error) {
  9186  	fp, err := ParseStrings_FieldPath(pathStr)
  9187  	if err != nil {
  9188  		return nil, err
  9189  	}
  9190  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  9191  	if err != nil {
  9192  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Strings field path value from %s: %v", valueStr, err)
  9193  	}
  9194  	return fpv.(Strings_FieldPathValue), nil
  9195  }
  9196  
  9197  func MustParseStrings_FieldPathValue(pathStr, valueStr string) Strings_FieldPathValue {
  9198  	fpv, err := ParseStrings_FieldPathValue(pathStr, valueStr)
  9199  	if err != nil {
  9200  		panic(err)
  9201  	}
  9202  	return fpv
  9203  }
  9204  
  9205  type Strings_FieldTerminalPathValue struct {
  9206  	Strings_FieldTerminalPath
  9207  	value interface{}
  9208  }
  9209  
  9210  var _ Strings_FieldPathValue = (*Strings_FieldTerminalPathValue)(nil)
  9211  
  9212  // GetRawValue returns raw value stored under selected path for 'Strings' as interface{}
  9213  func (fpv *Strings_FieldTerminalPathValue) GetRawValue() interface{} {
  9214  	return fpv.value
  9215  }
  9216  func (fpv *Strings_FieldTerminalPathValue) AsValuesValue() ([]string, bool) {
  9217  	res, ok := fpv.value.([]string)
  9218  	return res, ok
  9219  }
  9220  
  9221  // SetTo stores value for selected field for object Strings
  9222  func (fpv *Strings_FieldTerminalPathValue) SetTo(target **Strings) {
  9223  	if *target == nil {
  9224  		*target = new(Strings)
  9225  	}
  9226  	switch fpv.selector {
  9227  	case Strings_FieldPathSelectorValues:
  9228  		(*target).Values = fpv.value.([]string)
  9229  	default:
  9230  		panic(fmt.Sprintf("Invalid selector for Strings: %d", fpv.selector))
  9231  	}
  9232  }
  9233  
  9234  func (fpv *Strings_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  9235  	typedObject := target.(*Strings)
  9236  	fpv.SetTo(&typedObject)
  9237  }
  9238  
  9239  // CompareWith compares value in the 'Strings_FieldTerminalPathValue' with the value under path in 'Strings'.
  9240  func (fpv *Strings_FieldTerminalPathValue) CompareWith(source *Strings) (int, bool) {
  9241  	switch fpv.selector {
  9242  	case Strings_FieldPathSelectorValues:
  9243  		return 0, false
  9244  	default:
  9245  		panic(fmt.Sprintf("Invalid selector for Strings: %d", fpv.selector))
  9246  	}
  9247  }
  9248  
  9249  func (fpv *Strings_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  9250  	return fpv.CompareWith(source.(*Strings))
  9251  }
  9252  
  9253  // Strings_FieldPathArrayItemValue allows storing single item in Path-specific values for Strings according to their type
  9254  // Present only for array (repeated) types.
  9255  type Strings_FieldPathArrayItemValue interface {
  9256  	gotenobject.FieldPathArrayItemValue
  9257  	Strings_FieldPath
  9258  	ContainsValue(*Strings) bool
  9259  }
  9260  
  9261  // ParseStrings_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  9262  func ParseStrings_FieldPathArrayItemValue(pathStr, valueStr string) (Strings_FieldPathArrayItemValue, error) {
  9263  	fp, err := ParseStrings_FieldPath(pathStr)
  9264  	if err != nil {
  9265  		return nil, err
  9266  	}
  9267  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  9268  	if err != nil {
  9269  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Strings field path array item value from %s: %v", valueStr, err)
  9270  	}
  9271  	return fpaiv.(Strings_FieldPathArrayItemValue), nil
  9272  }
  9273  
  9274  func MustParseStrings_FieldPathArrayItemValue(pathStr, valueStr string) Strings_FieldPathArrayItemValue {
  9275  	fpaiv, err := ParseStrings_FieldPathArrayItemValue(pathStr, valueStr)
  9276  	if err != nil {
  9277  		panic(err)
  9278  	}
  9279  	return fpaiv
  9280  }
  9281  
  9282  type Strings_FieldTerminalPathArrayItemValue struct {
  9283  	Strings_FieldTerminalPath
  9284  	value interface{}
  9285  }
  9286  
  9287  var _ Strings_FieldPathArrayItemValue = (*Strings_FieldTerminalPathArrayItemValue)(nil)
  9288  
  9289  // GetRawValue returns stored element value for array in object Strings as interface{}
  9290  func (fpaiv *Strings_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  9291  	return fpaiv.value
  9292  }
  9293  func (fpaiv *Strings_FieldTerminalPathArrayItemValue) AsValuesItemValue() (string, bool) {
  9294  	res, ok := fpaiv.value.(string)
  9295  	return res, ok
  9296  }
  9297  
  9298  func (fpaiv *Strings_FieldTerminalPathArrayItemValue) GetSingle(source *Strings) (interface{}, bool) {
  9299  	return nil, false
  9300  }
  9301  
  9302  func (fpaiv *Strings_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  9303  	return fpaiv.GetSingle(source.(*Strings))
  9304  }
  9305  
  9306  // Contains returns a boolean indicating if value that is being held is present in given 'Strings'
  9307  func (fpaiv *Strings_FieldTerminalPathArrayItemValue) ContainsValue(source *Strings) bool {
  9308  	slice := fpaiv.Strings_FieldTerminalPath.Get(source)
  9309  	for _, v := range slice {
  9310  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  9311  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  9312  				return true
  9313  			}
  9314  		} else if reflect.DeepEqual(v, fpaiv.value) {
  9315  			return true
  9316  		}
  9317  	}
  9318  	return false
  9319  }
  9320  
  9321  // Strings_FieldPathArrayOfValues allows storing slice of values for Strings fields according to their type
  9322  type Strings_FieldPathArrayOfValues interface {
  9323  	gotenobject.FieldPathArrayOfValues
  9324  	Strings_FieldPath
  9325  }
  9326  
  9327  func ParseStrings_FieldPathArrayOfValues(pathStr, valuesStr string) (Strings_FieldPathArrayOfValues, error) {
  9328  	fp, err := ParseStrings_FieldPath(pathStr)
  9329  	if err != nil {
  9330  		return nil, err
  9331  	}
  9332  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  9333  	if err != nil {
  9334  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Strings field path array of values from %s: %v", valuesStr, err)
  9335  	}
  9336  	return fpaov.(Strings_FieldPathArrayOfValues), nil
  9337  }
  9338  
  9339  func MustParseStrings_FieldPathArrayOfValues(pathStr, valuesStr string) Strings_FieldPathArrayOfValues {
  9340  	fpaov, err := ParseStrings_FieldPathArrayOfValues(pathStr, valuesStr)
  9341  	if err != nil {
  9342  		panic(err)
  9343  	}
  9344  	return fpaov
  9345  }
  9346  
  9347  type Strings_FieldTerminalPathArrayOfValues struct {
  9348  	Strings_FieldTerminalPath
  9349  	values interface{}
  9350  }
  9351  
  9352  var _ Strings_FieldPathArrayOfValues = (*Strings_FieldTerminalPathArrayOfValues)(nil)
  9353  
  9354  func (fpaov *Strings_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  9355  	switch fpaov.selector {
  9356  	case Strings_FieldPathSelectorValues:
  9357  		for _, v := range fpaov.values.([][]string) {
  9358  			values = append(values, v)
  9359  		}
  9360  	}
  9361  	return
  9362  }
  9363  func (fpaov *Strings_FieldTerminalPathArrayOfValues) AsValuesArrayOfValues() ([][]string, bool) {
  9364  	res, ok := fpaov.values.([][]string)
  9365  	return res, ok
  9366  }
  9367  
  9368  // FieldPath provides implementation to handle
  9369  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  9370  type MonitoredResourceSelector_FieldPath interface {
  9371  	gotenobject.FieldPath
  9372  	Selector() MonitoredResourceSelector_FieldPathSelector
  9373  	Get(source *MonitoredResourceSelector) []interface{}
  9374  	GetSingle(source *MonitoredResourceSelector) (interface{}, bool)
  9375  	ClearValue(item *MonitoredResourceSelector)
  9376  
  9377  	// Those methods build corresponding MonitoredResourceSelector_FieldPathValue
  9378  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
  9379  	WithIValue(value interface{}) MonitoredResourceSelector_FieldPathValue
  9380  	WithIArrayOfValues(values interface{}) MonitoredResourceSelector_FieldPathArrayOfValues
  9381  	WithIArrayItemValue(value interface{}) MonitoredResourceSelector_FieldPathArrayItemValue
  9382  }
  9383  
  9384  type MonitoredResourceSelector_FieldPathSelector int32
  9385  
  9386  const (
  9387  	MonitoredResourceSelector_FieldPathSelectorTypes  MonitoredResourceSelector_FieldPathSelector = 0
  9388  	MonitoredResourceSelector_FieldPathSelectorLabels MonitoredResourceSelector_FieldPathSelector = 1
  9389  )
  9390  
  9391  func (s MonitoredResourceSelector_FieldPathSelector) String() string {
  9392  	switch s {
  9393  	case MonitoredResourceSelector_FieldPathSelectorTypes:
  9394  		return "types"
  9395  	case MonitoredResourceSelector_FieldPathSelectorLabels:
  9396  		return "labels"
  9397  	default:
  9398  		panic(fmt.Sprintf("Invalid selector for MonitoredResourceSelector: %d", s))
  9399  	}
  9400  }
  9401  
  9402  func BuildMonitoredResourceSelector_FieldPath(fp gotenobject.RawFieldPath) (MonitoredResourceSelector_FieldPath, error) {
  9403  	if len(fp) == 0 {
  9404  		return nil, status.Error(codes.InvalidArgument, "empty field path for object MonitoredResourceSelector")
  9405  	}
  9406  	if len(fp) == 1 {
  9407  		switch fp[0] {
  9408  		case "types":
  9409  			return &MonitoredResourceSelector_FieldTerminalPath{selector: MonitoredResourceSelector_FieldPathSelectorTypes}, nil
  9410  		case "labels":
  9411  			return &MonitoredResourceSelector_FieldTerminalPath{selector: MonitoredResourceSelector_FieldPathSelectorLabels}, nil
  9412  		}
  9413  	} else {
  9414  		switch fp[0] {
  9415  		case "labels":
  9416  			if len(fp) > 2 {
  9417  				return nil, status.Errorf(codes.InvalidArgument, "sub path for maps ('%s') are not supported (object MonitoredResourceSelector)", fp)
  9418  			}
  9419  			return &MonitoredResourceSelector_FieldPathMap{selector: MonitoredResourceSelector_FieldPathSelectorLabels, key: fp[1]}, nil
  9420  		}
  9421  	}
  9422  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object MonitoredResourceSelector", fp)
  9423  }
  9424  
  9425  func ParseMonitoredResourceSelector_FieldPath(rawField string) (MonitoredResourceSelector_FieldPath, error) {
  9426  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  9427  	if err != nil {
  9428  		return nil, err
  9429  	}
  9430  	return BuildMonitoredResourceSelector_FieldPath(fp)
  9431  }
  9432  
  9433  func MustParseMonitoredResourceSelector_FieldPath(rawField string) MonitoredResourceSelector_FieldPath {
  9434  	fp, err := ParseMonitoredResourceSelector_FieldPath(rawField)
  9435  	if err != nil {
  9436  		panic(err)
  9437  	}
  9438  	return fp
  9439  }
  9440  
  9441  type MonitoredResourceSelector_FieldTerminalPath struct {
  9442  	selector MonitoredResourceSelector_FieldPathSelector
  9443  }
  9444  
  9445  var _ MonitoredResourceSelector_FieldPath = (*MonitoredResourceSelector_FieldTerminalPath)(nil)
  9446  
  9447  func (fp *MonitoredResourceSelector_FieldTerminalPath) Selector() MonitoredResourceSelector_FieldPathSelector {
  9448  	return fp.selector
  9449  }
  9450  
  9451  // String returns path representation in proto convention
  9452  func (fp *MonitoredResourceSelector_FieldTerminalPath) String() string {
  9453  	return fp.selector.String()
  9454  }
  9455  
  9456  // JSONString returns path representation is JSON convention
  9457  func (fp *MonitoredResourceSelector_FieldTerminalPath) JSONString() string {
  9458  	return strcase.ToLowerCamel(fp.String())
  9459  }
  9460  
  9461  // Get returns all values pointed by specific field from source MonitoredResourceSelector
  9462  func (fp *MonitoredResourceSelector_FieldTerminalPath) Get(source *MonitoredResourceSelector) (values []interface{}) {
  9463  	if source != nil {
  9464  		switch fp.selector {
  9465  		case MonitoredResourceSelector_FieldPathSelectorTypes:
  9466  			for _, value := range source.GetTypes() {
  9467  				values = append(values, value)
  9468  			}
  9469  		case MonitoredResourceSelector_FieldPathSelectorLabels:
  9470  			if source.Labels != nil {
  9471  				values = append(values, source.Labels)
  9472  			}
  9473  		default:
  9474  			panic(fmt.Sprintf("Invalid selector for MonitoredResourceSelector: %d", fp.selector))
  9475  		}
  9476  	}
  9477  	return
  9478  }
  9479  
  9480  func (fp *MonitoredResourceSelector_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  9481  	return fp.Get(source.(*MonitoredResourceSelector))
  9482  }
  9483  
  9484  // GetSingle returns value pointed by specific field of from source MonitoredResourceSelector
  9485  func (fp *MonitoredResourceSelector_FieldTerminalPath) GetSingle(source *MonitoredResourceSelector) (interface{}, bool) {
  9486  	switch fp.selector {
  9487  	case MonitoredResourceSelector_FieldPathSelectorTypes:
  9488  		res := source.GetTypes()
  9489  		return res, res != nil
  9490  	case MonitoredResourceSelector_FieldPathSelectorLabels:
  9491  		res := source.GetLabels()
  9492  		return res, res != nil
  9493  	default:
  9494  		panic(fmt.Sprintf("Invalid selector for MonitoredResourceSelector: %d", fp.selector))
  9495  	}
  9496  }
  9497  
  9498  func (fp *MonitoredResourceSelector_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  9499  	return fp.GetSingle(source.(*MonitoredResourceSelector))
  9500  }
  9501  
  9502  // GetDefault returns a default value of the field type
  9503  func (fp *MonitoredResourceSelector_FieldTerminalPath) GetDefault() interface{} {
  9504  	switch fp.selector {
  9505  	case MonitoredResourceSelector_FieldPathSelectorTypes:
  9506  		return ([]string)(nil)
  9507  	case MonitoredResourceSelector_FieldPathSelectorLabels:
  9508  		return (map[string]*Strings)(nil)
  9509  	default:
  9510  		panic(fmt.Sprintf("Invalid selector for MonitoredResourceSelector: %d", fp.selector))
  9511  	}
  9512  }
  9513  
  9514  func (fp *MonitoredResourceSelector_FieldTerminalPath) ClearValue(item *MonitoredResourceSelector) {
  9515  	if item != nil {
  9516  		switch fp.selector {
  9517  		case MonitoredResourceSelector_FieldPathSelectorTypes:
  9518  			item.Types = nil
  9519  		case MonitoredResourceSelector_FieldPathSelectorLabels:
  9520  			item.Labels = nil
  9521  		default:
  9522  			panic(fmt.Sprintf("Invalid selector for MonitoredResourceSelector: %d", fp.selector))
  9523  		}
  9524  	}
  9525  }
  9526  
  9527  func (fp *MonitoredResourceSelector_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  9528  	fp.ClearValue(item.(*MonitoredResourceSelector))
  9529  }
  9530  
  9531  // IsLeaf - whether field path is holds simple value
  9532  func (fp *MonitoredResourceSelector_FieldTerminalPath) IsLeaf() bool {
  9533  	return fp.selector == MonitoredResourceSelector_FieldPathSelectorTypes
  9534  }
  9535  
  9536  func (fp *MonitoredResourceSelector_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  9537  	return []gotenobject.FieldPath{fp}
  9538  }
  9539  
  9540  func (fp *MonitoredResourceSelector_FieldTerminalPath) WithIValue(value interface{}) MonitoredResourceSelector_FieldPathValue {
  9541  	switch fp.selector {
  9542  	case MonitoredResourceSelector_FieldPathSelectorTypes:
  9543  		return &MonitoredResourceSelector_FieldTerminalPathValue{MonitoredResourceSelector_FieldTerminalPath: *fp, value: value.([]string)}
  9544  	case MonitoredResourceSelector_FieldPathSelectorLabels:
  9545  		return &MonitoredResourceSelector_FieldTerminalPathValue{MonitoredResourceSelector_FieldTerminalPath: *fp, value: value.(map[string]*Strings)}
  9546  	default:
  9547  		panic(fmt.Sprintf("Invalid selector for MonitoredResourceSelector: %d", fp.selector))
  9548  	}
  9549  }
  9550  
  9551  func (fp *MonitoredResourceSelector_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  9552  	return fp.WithIValue(value)
  9553  }
  9554  
  9555  func (fp *MonitoredResourceSelector_FieldTerminalPath) WithIArrayOfValues(values interface{}) MonitoredResourceSelector_FieldPathArrayOfValues {
  9556  	fpaov := &MonitoredResourceSelector_FieldTerminalPathArrayOfValues{MonitoredResourceSelector_FieldTerminalPath: *fp}
  9557  	switch fp.selector {
  9558  	case MonitoredResourceSelector_FieldPathSelectorTypes:
  9559  		return &MonitoredResourceSelector_FieldTerminalPathArrayOfValues{MonitoredResourceSelector_FieldTerminalPath: *fp, values: values.([][]string)}
  9560  	case MonitoredResourceSelector_FieldPathSelectorLabels:
  9561  		return &MonitoredResourceSelector_FieldTerminalPathArrayOfValues{MonitoredResourceSelector_FieldTerminalPath: *fp, values: values.([]map[string]*Strings)}
  9562  	default:
  9563  		panic(fmt.Sprintf("Invalid selector for MonitoredResourceSelector: %d", fp.selector))
  9564  	}
  9565  	return fpaov
  9566  }
  9567  
  9568  func (fp *MonitoredResourceSelector_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  9569  	return fp.WithIArrayOfValues(values)
  9570  }
  9571  
  9572  func (fp *MonitoredResourceSelector_FieldTerminalPath) WithIArrayItemValue(value interface{}) MonitoredResourceSelector_FieldPathArrayItemValue {
  9573  	switch fp.selector {
  9574  	case MonitoredResourceSelector_FieldPathSelectorTypes:
  9575  		return &MonitoredResourceSelector_FieldTerminalPathArrayItemValue{MonitoredResourceSelector_FieldTerminalPath: *fp, value: value.(string)}
  9576  	default:
  9577  		panic(fmt.Sprintf("Invalid selector for MonitoredResourceSelector: %d", fp.selector))
  9578  	}
  9579  }
  9580  
  9581  func (fp *MonitoredResourceSelector_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  9582  	return fp.WithIArrayItemValue(value)
  9583  }
  9584  
  9585  // FieldPath for map type with additional Key information
  9586  type MonitoredResourceSelector_FieldPathMap struct {
  9587  	key      string
  9588  	selector MonitoredResourceSelector_FieldPathSelector
  9589  }
  9590  
  9591  var _ MonitoredResourceSelector_FieldPath = (*MonitoredResourceSelector_FieldPathMap)(nil)
  9592  
  9593  func (fpm *MonitoredResourceSelector_FieldPathMap) Selector() MonitoredResourceSelector_FieldPathSelector {
  9594  	return fpm.selector
  9595  }
  9596  
  9597  func (fpm *MonitoredResourceSelector_FieldPathMap) Key() string {
  9598  	return fpm.key
  9599  }
  9600  
  9601  // String returns path representation in proto convention
  9602  func (fpm *MonitoredResourceSelector_FieldPathMap) String() string {
  9603  	return fpm.selector.String() + "." + fpm.key
  9604  }
  9605  
  9606  // JSONString returns path representation is JSON convention. Note that map keys are not transformed
  9607  func (fpm *MonitoredResourceSelector_FieldPathMap) JSONString() string {
  9608  	return strcase.ToLowerCamel(fpm.selector.String()) + "." + fpm.key
  9609  }
  9610  
  9611  // Get returns all values pointed by selected field map key from source MonitoredResourceSelector
  9612  func (fpm *MonitoredResourceSelector_FieldPathMap) Get(source *MonitoredResourceSelector) (values []interface{}) {
  9613  	switch fpm.selector {
  9614  	case MonitoredResourceSelector_FieldPathSelectorLabels:
  9615  		if value, ok := source.GetLabels()[fpm.key]; ok {
  9616  			values = append(values, value)
  9617  		}
  9618  	default:
  9619  		panic(fmt.Sprintf("Invalid selector for MonitoredResourceSelector: %d", fpm.selector))
  9620  	}
  9621  	return
  9622  }
  9623  
  9624  func (fpm *MonitoredResourceSelector_FieldPathMap) GetRaw(source proto.Message) []interface{} {
  9625  	return fpm.Get(source.(*MonitoredResourceSelector))
  9626  }
  9627  
  9628  // GetSingle returns value by selected field map key from source MonitoredResourceSelector
  9629  func (fpm *MonitoredResourceSelector_FieldPathMap) GetSingle(source *MonitoredResourceSelector) (interface{}, bool) {
  9630  	switch fpm.selector {
  9631  	case MonitoredResourceSelector_FieldPathSelectorLabels:
  9632  		res, ok := source.GetLabels()[fpm.key]
  9633  		return res, ok
  9634  	default:
  9635  		panic(fmt.Sprintf("Invalid selector for MonitoredResourceSelector: %d", fpm.selector))
  9636  	}
  9637  }
  9638  
  9639  func (fpm *MonitoredResourceSelector_FieldPathMap) GetSingleRaw(source proto.Message) (interface{}, bool) {
  9640  	return fpm.GetSingle(source.(*MonitoredResourceSelector))
  9641  }
  9642  
  9643  // GetDefault returns a default value of the field type
  9644  func (fpm *MonitoredResourceSelector_FieldPathMap) GetDefault() interface{} {
  9645  	switch fpm.selector {
  9646  	case MonitoredResourceSelector_FieldPathSelectorLabels:
  9647  		var v *Strings
  9648  		return v
  9649  	default:
  9650  		panic(fmt.Sprintf("Invalid selector for MonitoredResourceSelector: %d", fpm.selector))
  9651  	}
  9652  }
  9653  
  9654  func (fpm *MonitoredResourceSelector_FieldPathMap) ClearValue(item *MonitoredResourceSelector) {
  9655  	if item != nil {
  9656  		switch fpm.selector {
  9657  		case MonitoredResourceSelector_FieldPathSelectorLabels:
  9658  			delete(item.Labels, fpm.key)
  9659  		default:
  9660  			panic(fmt.Sprintf("Invalid selector for MonitoredResourceSelector: %d", fpm.selector))
  9661  		}
  9662  	}
  9663  }
  9664  
  9665  func (fpm *MonitoredResourceSelector_FieldPathMap) ClearValueRaw(item proto.Message) {
  9666  	fpm.ClearValue(item.(*MonitoredResourceSelector))
  9667  }
  9668  
  9669  // IsLeaf - whether field path is holds simple value
  9670  func (fpm *MonitoredResourceSelector_FieldPathMap) IsLeaf() bool {
  9671  	switch fpm.selector {
  9672  	case MonitoredResourceSelector_FieldPathSelectorLabels:
  9673  		return false
  9674  	default:
  9675  		panic(fmt.Sprintf("Invalid selector for MonitoredResourceSelector: %d", fpm.selector))
  9676  	}
  9677  }
  9678  
  9679  func (fpm *MonitoredResourceSelector_FieldPathMap) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  9680  	return []gotenobject.FieldPath{fpm}
  9681  }
  9682  
  9683  func (fpm *MonitoredResourceSelector_FieldPathMap) WithIValue(value interface{}) MonitoredResourceSelector_FieldPathValue {
  9684  	switch fpm.selector {
  9685  	case MonitoredResourceSelector_FieldPathSelectorLabels:
  9686  		return &MonitoredResourceSelector_FieldPathMapValue{MonitoredResourceSelector_FieldPathMap: *fpm, value: value.(*Strings)}
  9687  	default:
  9688  		panic(fmt.Sprintf("Invalid selector for MonitoredResourceSelector: %d", fpm.selector))
  9689  	}
  9690  }
  9691  
  9692  func (fpm *MonitoredResourceSelector_FieldPathMap) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  9693  	return fpm.WithIValue(value)
  9694  }
  9695  
  9696  func (fpm *MonitoredResourceSelector_FieldPathMap) WithIArrayOfValues(values interface{}) MonitoredResourceSelector_FieldPathArrayOfValues {
  9697  	switch fpm.selector {
  9698  	case MonitoredResourceSelector_FieldPathSelectorLabels:
  9699  		return &MonitoredResourceSelector_FieldPathMapArrayOfValues{MonitoredResourceSelector_FieldPathMap: *fpm, values: values.([]*Strings)}
  9700  	default:
  9701  		panic(fmt.Sprintf("Invalid selector for MonitoredResourceSelector: %d", fpm.selector))
  9702  	}
  9703  }
  9704  
  9705  func (fpm *MonitoredResourceSelector_FieldPathMap) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  9706  	return fpm.WithIArrayOfValues(values)
  9707  }
  9708  
  9709  func (fpm *MonitoredResourceSelector_FieldPathMap) WithIArrayItemValue(value interface{}) MonitoredResourceSelector_FieldPathArrayItemValue {
  9710  	panic("Cannot create array item value from map fieldpath")
  9711  }
  9712  
  9713  func (fpm *MonitoredResourceSelector_FieldPathMap) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  9714  	return fpm.WithIArrayItemValue(value)
  9715  }
  9716  
  9717  // MonitoredResourceSelector_FieldPathValue allows storing values for MonitoredResourceSelector fields according to their type
  9718  type MonitoredResourceSelector_FieldPathValue interface {
  9719  	MonitoredResourceSelector_FieldPath
  9720  	gotenobject.FieldPathValue
  9721  	SetTo(target **MonitoredResourceSelector)
  9722  	CompareWith(*MonitoredResourceSelector) (cmp int, comparable bool)
  9723  }
  9724  
  9725  func ParseMonitoredResourceSelector_FieldPathValue(pathStr, valueStr string) (MonitoredResourceSelector_FieldPathValue, error) {
  9726  	fp, err := ParseMonitoredResourceSelector_FieldPath(pathStr)
  9727  	if err != nil {
  9728  		return nil, err
  9729  	}
  9730  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  9731  	if err != nil {
  9732  		return nil, status.Errorf(codes.InvalidArgument, "error parsing MonitoredResourceSelector field path value from %s: %v", valueStr, err)
  9733  	}
  9734  	return fpv.(MonitoredResourceSelector_FieldPathValue), nil
  9735  }
  9736  
  9737  func MustParseMonitoredResourceSelector_FieldPathValue(pathStr, valueStr string) MonitoredResourceSelector_FieldPathValue {
  9738  	fpv, err := ParseMonitoredResourceSelector_FieldPathValue(pathStr, valueStr)
  9739  	if err != nil {
  9740  		panic(err)
  9741  	}
  9742  	return fpv
  9743  }
  9744  
  9745  type MonitoredResourceSelector_FieldTerminalPathValue struct {
  9746  	MonitoredResourceSelector_FieldTerminalPath
  9747  	value interface{}
  9748  }
  9749  
  9750  var _ MonitoredResourceSelector_FieldPathValue = (*MonitoredResourceSelector_FieldTerminalPathValue)(nil)
  9751  
  9752  // GetRawValue returns raw value stored under selected path for 'MonitoredResourceSelector' as interface{}
  9753  func (fpv *MonitoredResourceSelector_FieldTerminalPathValue) GetRawValue() interface{} {
  9754  	return fpv.value
  9755  }
  9756  func (fpv *MonitoredResourceSelector_FieldTerminalPathValue) AsTypesValue() ([]string, bool) {
  9757  	res, ok := fpv.value.([]string)
  9758  	return res, ok
  9759  }
  9760  func (fpv *MonitoredResourceSelector_FieldTerminalPathValue) AsLabelsValue() (map[string]*Strings, bool) {
  9761  	res, ok := fpv.value.(map[string]*Strings)
  9762  	return res, ok
  9763  }
  9764  
  9765  // SetTo stores value for selected field for object MonitoredResourceSelector
  9766  func (fpv *MonitoredResourceSelector_FieldTerminalPathValue) SetTo(target **MonitoredResourceSelector) {
  9767  	if *target == nil {
  9768  		*target = new(MonitoredResourceSelector)
  9769  	}
  9770  	switch fpv.selector {
  9771  	case MonitoredResourceSelector_FieldPathSelectorTypes:
  9772  		(*target).Types = fpv.value.([]string)
  9773  	case MonitoredResourceSelector_FieldPathSelectorLabels:
  9774  		(*target).Labels = fpv.value.(map[string]*Strings)
  9775  	default:
  9776  		panic(fmt.Sprintf("Invalid selector for MonitoredResourceSelector: %d", fpv.selector))
  9777  	}
  9778  }
  9779  
  9780  func (fpv *MonitoredResourceSelector_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  9781  	typedObject := target.(*MonitoredResourceSelector)
  9782  	fpv.SetTo(&typedObject)
  9783  }
  9784  
  9785  // CompareWith compares value in the 'MonitoredResourceSelector_FieldTerminalPathValue' with the value under path in 'MonitoredResourceSelector'.
  9786  func (fpv *MonitoredResourceSelector_FieldTerminalPathValue) CompareWith(source *MonitoredResourceSelector) (int, bool) {
  9787  	switch fpv.selector {
  9788  	case MonitoredResourceSelector_FieldPathSelectorTypes:
  9789  		return 0, false
  9790  	case MonitoredResourceSelector_FieldPathSelectorLabels:
  9791  		return 0, false
  9792  	default:
  9793  		panic(fmt.Sprintf("Invalid selector for MonitoredResourceSelector: %d", fpv.selector))
  9794  	}
  9795  }
  9796  
  9797  func (fpv *MonitoredResourceSelector_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  9798  	return fpv.CompareWith(source.(*MonitoredResourceSelector))
  9799  }
  9800  
  9801  type MonitoredResourceSelector_FieldPathMapValue struct {
  9802  	MonitoredResourceSelector_FieldPathMap
  9803  	value interface{}
  9804  }
  9805  
  9806  var _ MonitoredResourceSelector_FieldPathValue = (*MonitoredResourceSelector_FieldPathMapValue)(nil)
  9807  
  9808  // GetValue returns value stored under selected field in MonitoredResourceSelector as interface{}
  9809  func (fpmv *MonitoredResourceSelector_FieldPathMapValue) GetRawValue() interface{} {
  9810  	return fpmv.value
  9811  }
  9812  func (fpmv *MonitoredResourceSelector_FieldPathMapValue) AsLabelsElementValue() (*Strings, bool) {
  9813  	res, ok := fpmv.value.(*Strings)
  9814  	return res, ok
  9815  }
  9816  
  9817  // SetTo stores value for selected field in MonitoredResourceSelector
  9818  func (fpmv *MonitoredResourceSelector_FieldPathMapValue) SetTo(target **MonitoredResourceSelector) {
  9819  	if *target == nil {
  9820  		*target = new(MonitoredResourceSelector)
  9821  	}
  9822  	switch fpmv.selector {
  9823  	case MonitoredResourceSelector_FieldPathSelectorLabels:
  9824  		if (*target).Labels == nil {
  9825  			(*target).Labels = make(map[string]*Strings)
  9826  		}
  9827  		(*target).Labels[fpmv.key] = fpmv.value.(*Strings)
  9828  	default:
  9829  		panic(fmt.Sprintf("Invalid selector for MonitoredResourceSelector: %d", fpmv.selector))
  9830  	}
  9831  }
  9832  
  9833  func (fpmv *MonitoredResourceSelector_FieldPathMapValue) SetToRaw(target proto.Message) {
  9834  	typedObject := target.(*MonitoredResourceSelector)
  9835  	fpmv.SetTo(&typedObject)
  9836  }
  9837  
  9838  // CompareWith compares value in the 'MonitoredResourceSelector_FieldPathMapValue' with the value under path in 'MonitoredResourceSelector'.
  9839  func (fpmv *MonitoredResourceSelector_FieldPathMapValue) CompareWith(source *MonitoredResourceSelector) (int, bool) {
  9840  	switch fpmv.selector {
  9841  	case MonitoredResourceSelector_FieldPathSelectorLabels:
  9842  		return 0, false
  9843  	default:
  9844  		panic(fmt.Sprintf("Invalid selector for MonitoredResourceSelector: %d", fpmv.selector))
  9845  	}
  9846  }
  9847  
  9848  func (fpmv *MonitoredResourceSelector_FieldPathMapValue) CompareWithRaw(source proto.Message) (int, bool) {
  9849  	return fpmv.CompareWith(source.(*MonitoredResourceSelector))
  9850  }
  9851  
  9852  // MonitoredResourceSelector_FieldPathArrayItemValue allows storing single item in Path-specific values for MonitoredResourceSelector according to their type
  9853  // Present only for array (repeated) types.
  9854  type MonitoredResourceSelector_FieldPathArrayItemValue interface {
  9855  	gotenobject.FieldPathArrayItemValue
  9856  	MonitoredResourceSelector_FieldPath
  9857  	ContainsValue(*MonitoredResourceSelector) bool
  9858  }
  9859  
  9860  // ParseMonitoredResourceSelector_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  9861  func ParseMonitoredResourceSelector_FieldPathArrayItemValue(pathStr, valueStr string) (MonitoredResourceSelector_FieldPathArrayItemValue, error) {
  9862  	fp, err := ParseMonitoredResourceSelector_FieldPath(pathStr)
  9863  	if err != nil {
  9864  		return nil, err
  9865  	}
  9866  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  9867  	if err != nil {
  9868  		return nil, status.Errorf(codes.InvalidArgument, "error parsing MonitoredResourceSelector field path array item value from %s: %v", valueStr, err)
  9869  	}
  9870  	return fpaiv.(MonitoredResourceSelector_FieldPathArrayItemValue), nil
  9871  }
  9872  
  9873  func MustParseMonitoredResourceSelector_FieldPathArrayItemValue(pathStr, valueStr string) MonitoredResourceSelector_FieldPathArrayItemValue {
  9874  	fpaiv, err := ParseMonitoredResourceSelector_FieldPathArrayItemValue(pathStr, valueStr)
  9875  	if err != nil {
  9876  		panic(err)
  9877  	}
  9878  	return fpaiv
  9879  }
  9880  
  9881  type MonitoredResourceSelector_FieldTerminalPathArrayItemValue struct {
  9882  	MonitoredResourceSelector_FieldTerminalPath
  9883  	value interface{}
  9884  }
  9885  
  9886  var _ MonitoredResourceSelector_FieldPathArrayItemValue = (*MonitoredResourceSelector_FieldTerminalPathArrayItemValue)(nil)
  9887  
  9888  // GetRawValue returns stored element value for array in object MonitoredResourceSelector as interface{}
  9889  func (fpaiv *MonitoredResourceSelector_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  9890  	return fpaiv.value
  9891  }
  9892  func (fpaiv *MonitoredResourceSelector_FieldTerminalPathArrayItemValue) AsTypesItemValue() (string, bool) {
  9893  	res, ok := fpaiv.value.(string)
  9894  	return res, ok
  9895  }
  9896  
  9897  func (fpaiv *MonitoredResourceSelector_FieldTerminalPathArrayItemValue) GetSingle(source *MonitoredResourceSelector) (interface{}, bool) {
  9898  	return nil, false
  9899  }
  9900  
  9901  func (fpaiv *MonitoredResourceSelector_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  9902  	return fpaiv.GetSingle(source.(*MonitoredResourceSelector))
  9903  }
  9904  
  9905  // Contains returns a boolean indicating if value that is being held is present in given 'MonitoredResourceSelector'
  9906  func (fpaiv *MonitoredResourceSelector_FieldTerminalPathArrayItemValue) ContainsValue(source *MonitoredResourceSelector) bool {
  9907  	slice := fpaiv.MonitoredResourceSelector_FieldTerminalPath.Get(source)
  9908  	for _, v := range slice {
  9909  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  9910  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  9911  				return true
  9912  			}
  9913  		} else if reflect.DeepEqual(v, fpaiv.value) {
  9914  			return true
  9915  		}
  9916  	}
  9917  	return false
  9918  }
  9919  
  9920  // MonitoredResourceSelector_FieldPathArrayOfValues allows storing slice of values for MonitoredResourceSelector fields according to their type
  9921  type MonitoredResourceSelector_FieldPathArrayOfValues interface {
  9922  	gotenobject.FieldPathArrayOfValues
  9923  	MonitoredResourceSelector_FieldPath
  9924  }
  9925  
  9926  func ParseMonitoredResourceSelector_FieldPathArrayOfValues(pathStr, valuesStr string) (MonitoredResourceSelector_FieldPathArrayOfValues, error) {
  9927  	fp, err := ParseMonitoredResourceSelector_FieldPath(pathStr)
  9928  	if err != nil {
  9929  		return nil, err
  9930  	}
  9931  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  9932  	if err != nil {
  9933  		return nil, status.Errorf(codes.InvalidArgument, "error parsing MonitoredResourceSelector field path array of values from %s: %v", valuesStr, err)
  9934  	}
  9935  	return fpaov.(MonitoredResourceSelector_FieldPathArrayOfValues), nil
  9936  }
  9937  
  9938  func MustParseMonitoredResourceSelector_FieldPathArrayOfValues(pathStr, valuesStr string) MonitoredResourceSelector_FieldPathArrayOfValues {
  9939  	fpaov, err := ParseMonitoredResourceSelector_FieldPathArrayOfValues(pathStr, valuesStr)
  9940  	if err != nil {
  9941  		panic(err)
  9942  	}
  9943  	return fpaov
  9944  }
  9945  
  9946  type MonitoredResourceSelector_FieldTerminalPathArrayOfValues struct {
  9947  	MonitoredResourceSelector_FieldTerminalPath
  9948  	values interface{}
  9949  }
  9950  
  9951  var _ MonitoredResourceSelector_FieldPathArrayOfValues = (*MonitoredResourceSelector_FieldTerminalPathArrayOfValues)(nil)
  9952  
  9953  func (fpaov *MonitoredResourceSelector_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  9954  	switch fpaov.selector {
  9955  	case MonitoredResourceSelector_FieldPathSelectorTypes:
  9956  		for _, v := range fpaov.values.([][]string) {
  9957  			values = append(values, v)
  9958  		}
  9959  	case MonitoredResourceSelector_FieldPathSelectorLabels:
  9960  		for _, v := range fpaov.values.([]map[string]*Strings) {
  9961  			values = append(values, v)
  9962  		}
  9963  	}
  9964  	return
  9965  }
  9966  func (fpaov *MonitoredResourceSelector_FieldTerminalPathArrayOfValues) AsTypesArrayOfValues() ([][]string, bool) {
  9967  	res, ok := fpaov.values.([][]string)
  9968  	return res, ok
  9969  }
  9970  func (fpaov *MonitoredResourceSelector_FieldTerminalPathArrayOfValues) AsLabelsArrayOfValues() ([]map[string]*Strings, bool) {
  9971  	res, ok := fpaov.values.([]map[string]*Strings)
  9972  	return res, ok
  9973  }
  9974  
  9975  type MonitoredResourceSelector_FieldPathMapArrayOfValues struct {
  9976  	MonitoredResourceSelector_FieldPathMap
  9977  	values interface{}
  9978  }
  9979  
  9980  var _ MonitoredResourceSelector_FieldPathArrayOfValues = (*MonitoredResourceSelector_FieldPathMapArrayOfValues)(nil)
  9981  
  9982  func (fpmaov *MonitoredResourceSelector_FieldPathMapArrayOfValues) GetRawValues() (values []interface{}) {
  9983  	switch fpmaov.selector {
  9984  	case MonitoredResourceSelector_FieldPathSelectorLabels:
  9985  		for _, v := range fpmaov.values.([]*Strings) {
  9986  			values = append(values, v)
  9987  		}
  9988  	}
  9989  	return
  9990  }
  9991  func (fpmaov *MonitoredResourceSelector_FieldPathMapArrayOfValues) AsLabelsArrayOfElementValues() ([]*Strings, bool) {
  9992  	res, ok := fpmaov.values.([]*Strings)
  9993  	return res, ok
  9994  }
  9995  
  9996  // FieldPath provides implementation to handle
  9997  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  9998  type MetricSelector_FieldPath interface {
  9999  	gotenobject.FieldPath
 10000  	Selector() MetricSelector_FieldPathSelector
 10001  	Get(source *MetricSelector) []interface{}
 10002  	GetSingle(source *MetricSelector) (interface{}, bool)
 10003  	ClearValue(item *MetricSelector)
 10004  
 10005  	// Those methods build corresponding MetricSelector_FieldPathValue
 10006  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
 10007  	WithIValue(value interface{}) MetricSelector_FieldPathValue
 10008  	WithIArrayOfValues(values interface{}) MetricSelector_FieldPathArrayOfValues
 10009  	WithIArrayItemValue(value interface{}) MetricSelector_FieldPathArrayItemValue
 10010  }
 10011  
 10012  type MetricSelector_FieldPathSelector int32
 10013  
 10014  const (
 10015  	MetricSelector_FieldPathSelectorTypes  MetricSelector_FieldPathSelector = 0
 10016  	MetricSelector_FieldPathSelectorLabels MetricSelector_FieldPathSelector = 1
 10017  )
 10018  
 10019  func (s MetricSelector_FieldPathSelector) String() string {
 10020  	switch s {
 10021  	case MetricSelector_FieldPathSelectorTypes:
 10022  		return "types"
 10023  	case MetricSelector_FieldPathSelectorLabels:
 10024  		return "labels"
 10025  	default:
 10026  		panic(fmt.Sprintf("Invalid selector for MetricSelector: %d", s))
 10027  	}
 10028  }
 10029  
 10030  func BuildMetricSelector_FieldPath(fp gotenobject.RawFieldPath) (MetricSelector_FieldPath, error) {
 10031  	if len(fp) == 0 {
 10032  		return nil, status.Error(codes.InvalidArgument, "empty field path for object MetricSelector")
 10033  	}
 10034  	if len(fp) == 1 {
 10035  		switch fp[0] {
 10036  		case "types":
 10037  			return &MetricSelector_FieldTerminalPath{selector: MetricSelector_FieldPathSelectorTypes}, nil
 10038  		case "labels":
 10039  			return &MetricSelector_FieldTerminalPath{selector: MetricSelector_FieldPathSelectorLabels}, nil
 10040  		}
 10041  	} else {
 10042  		switch fp[0] {
 10043  		case "labels":
 10044  			if len(fp) > 2 {
 10045  				return nil, status.Errorf(codes.InvalidArgument, "sub path for maps ('%s') are not supported (object MetricSelector)", fp)
 10046  			}
 10047  			return &MetricSelector_FieldPathMap{selector: MetricSelector_FieldPathSelectorLabels, key: fp[1]}, nil
 10048  		}
 10049  	}
 10050  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object MetricSelector", fp)
 10051  }
 10052  
 10053  func ParseMetricSelector_FieldPath(rawField string) (MetricSelector_FieldPath, error) {
 10054  	fp, err := gotenobject.ParseRawFieldPath(rawField)
 10055  	if err != nil {
 10056  		return nil, err
 10057  	}
 10058  	return BuildMetricSelector_FieldPath(fp)
 10059  }
 10060  
 10061  func MustParseMetricSelector_FieldPath(rawField string) MetricSelector_FieldPath {
 10062  	fp, err := ParseMetricSelector_FieldPath(rawField)
 10063  	if err != nil {
 10064  		panic(err)
 10065  	}
 10066  	return fp
 10067  }
 10068  
 10069  type MetricSelector_FieldTerminalPath struct {
 10070  	selector MetricSelector_FieldPathSelector
 10071  }
 10072  
 10073  var _ MetricSelector_FieldPath = (*MetricSelector_FieldTerminalPath)(nil)
 10074  
 10075  func (fp *MetricSelector_FieldTerminalPath) Selector() MetricSelector_FieldPathSelector {
 10076  	return fp.selector
 10077  }
 10078  
 10079  // String returns path representation in proto convention
 10080  func (fp *MetricSelector_FieldTerminalPath) String() string {
 10081  	return fp.selector.String()
 10082  }
 10083  
 10084  // JSONString returns path representation is JSON convention
 10085  func (fp *MetricSelector_FieldTerminalPath) JSONString() string {
 10086  	return strcase.ToLowerCamel(fp.String())
 10087  }
 10088  
 10089  // Get returns all values pointed by specific field from source MetricSelector
 10090  func (fp *MetricSelector_FieldTerminalPath) Get(source *MetricSelector) (values []interface{}) {
 10091  	if source != nil {
 10092  		switch fp.selector {
 10093  		case MetricSelector_FieldPathSelectorTypes:
 10094  			for _, value := range source.GetTypes() {
 10095  				values = append(values, value)
 10096  			}
 10097  		case MetricSelector_FieldPathSelectorLabels:
 10098  			if source.Labels != nil {
 10099  				values = append(values, source.Labels)
 10100  			}
 10101  		default:
 10102  			panic(fmt.Sprintf("Invalid selector for MetricSelector: %d", fp.selector))
 10103  		}
 10104  	}
 10105  	return
 10106  }
 10107  
 10108  func (fp *MetricSelector_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
 10109  	return fp.Get(source.(*MetricSelector))
 10110  }
 10111  
 10112  // GetSingle returns value pointed by specific field of from source MetricSelector
 10113  func (fp *MetricSelector_FieldTerminalPath) GetSingle(source *MetricSelector) (interface{}, bool) {
 10114  	switch fp.selector {
 10115  	case MetricSelector_FieldPathSelectorTypes:
 10116  		res := source.GetTypes()
 10117  		return res, res != nil
 10118  	case MetricSelector_FieldPathSelectorLabels:
 10119  		res := source.GetLabels()
 10120  		return res, res != nil
 10121  	default:
 10122  		panic(fmt.Sprintf("Invalid selector for MetricSelector: %d", fp.selector))
 10123  	}
 10124  }
 10125  
 10126  func (fp *MetricSelector_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
 10127  	return fp.GetSingle(source.(*MetricSelector))
 10128  }
 10129  
 10130  // GetDefault returns a default value of the field type
 10131  func (fp *MetricSelector_FieldTerminalPath) GetDefault() interface{} {
 10132  	switch fp.selector {
 10133  	case MetricSelector_FieldPathSelectorTypes:
 10134  		return ([]string)(nil)
 10135  	case MetricSelector_FieldPathSelectorLabels:
 10136  		return (map[string]*Strings)(nil)
 10137  	default:
 10138  		panic(fmt.Sprintf("Invalid selector for MetricSelector: %d", fp.selector))
 10139  	}
 10140  }
 10141  
 10142  func (fp *MetricSelector_FieldTerminalPath) ClearValue(item *MetricSelector) {
 10143  	if item != nil {
 10144  		switch fp.selector {
 10145  		case MetricSelector_FieldPathSelectorTypes:
 10146  			item.Types = nil
 10147  		case MetricSelector_FieldPathSelectorLabels:
 10148  			item.Labels = nil
 10149  		default:
 10150  			panic(fmt.Sprintf("Invalid selector for MetricSelector: %d", fp.selector))
 10151  		}
 10152  	}
 10153  }
 10154  
 10155  func (fp *MetricSelector_FieldTerminalPath) ClearValueRaw(item proto.Message) {
 10156  	fp.ClearValue(item.(*MetricSelector))
 10157  }
 10158  
 10159  // IsLeaf - whether field path is holds simple value
 10160  func (fp *MetricSelector_FieldTerminalPath) IsLeaf() bool {
 10161  	return fp.selector == MetricSelector_FieldPathSelectorTypes
 10162  }
 10163  
 10164  func (fp *MetricSelector_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
 10165  	return []gotenobject.FieldPath{fp}
 10166  }
 10167  
 10168  func (fp *MetricSelector_FieldTerminalPath) WithIValue(value interface{}) MetricSelector_FieldPathValue {
 10169  	switch fp.selector {
 10170  	case MetricSelector_FieldPathSelectorTypes:
 10171  		return &MetricSelector_FieldTerminalPathValue{MetricSelector_FieldTerminalPath: *fp, value: value.([]string)}
 10172  	case MetricSelector_FieldPathSelectorLabels:
 10173  		return &MetricSelector_FieldTerminalPathValue{MetricSelector_FieldTerminalPath: *fp, value: value.(map[string]*Strings)}
 10174  	default:
 10175  		panic(fmt.Sprintf("Invalid selector for MetricSelector: %d", fp.selector))
 10176  	}
 10177  }
 10178  
 10179  func (fp *MetricSelector_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
 10180  	return fp.WithIValue(value)
 10181  }
 10182  
 10183  func (fp *MetricSelector_FieldTerminalPath) WithIArrayOfValues(values interface{}) MetricSelector_FieldPathArrayOfValues {
 10184  	fpaov := &MetricSelector_FieldTerminalPathArrayOfValues{MetricSelector_FieldTerminalPath: *fp}
 10185  	switch fp.selector {
 10186  	case MetricSelector_FieldPathSelectorTypes:
 10187  		return &MetricSelector_FieldTerminalPathArrayOfValues{MetricSelector_FieldTerminalPath: *fp, values: values.([][]string)}
 10188  	case MetricSelector_FieldPathSelectorLabels:
 10189  		return &MetricSelector_FieldTerminalPathArrayOfValues{MetricSelector_FieldTerminalPath: *fp, values: values.([]map[string]*Strings)}
 10190  	default:
 10191  		panic(fmt.Sprintf("Invalid selector for MetricSelector: %d", fp.selector))
 10192  	}
 10193  	return fpaov
 10194  }
 10195  
 10196  func (fp *MetricSelector_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
 10197  	return fp.WithIArrayOfValues(values)
 10198  }
 10199  
 10200  func (fp *MetricSelector_FieldTerminalPath) WithIArrayItemValue(value interface{}) MetricSelector_FieldPathArrayItemValue {
 10201  	switch fp.selector {
 10202  	case MetricSelector_FieldPathSelectorTypes:
 10203  		return &MetricSelector_FieldTerminalPathArrayItemValue{MetricSelector_FieldTerminalPath: *fp, value: value.(string)}
 10204  	default:
 10205  		panic(fmt.Sprintf("Invalid selector for MetricSelector: %d", fp.selector))
 10206  	}
 10207  }
 10208  
 10209  func (fp *MetricSelector_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
 10210  	return fp.WithIArrayItemValue(value)
 10211  }
 10212  
 10213  // FieldPath for map type with additional Key information
 10214  type MetricSelector_FieldPathMap struct {
 10215  	key      string
 10216  	selector MetricSelector_FieldPathSelector
 10217  }
 10218  
 10219  var _ MetricSelector_FieldPath = (*MetricSelector_FieldPathMap)(nil)
 10220  
 10221  func (fpm *MetricSelector_FieldPathMap) Selector() MetricSelector_FieldPathSelector {
 10222  	return fpm.selector
 10223  }
 10224  
 10225  func (fpm *MetricSelector_FieldPathMap) Key() string {
 10226  	return fpm.key
 10227  }
 10228  
 10229  // String returns path representation in proto convention
 10230  func (fpm *MetricSelector_FieldPathMap) String() string {
 10231  	return fpm.selector.String() + "." + fpm.key
 10232  }
 10233  
 10234  // JSONString returns path representation is JSON convention. Note that map keys are not transformed
 10235  func (fpm *MetricSelector_FieldPathMap) JSONString() string {
 10236  	return strcase.ToLowerCamel(fpm.selector.String()) + "." + fpm.key
 10237  }
 10238  
 10239  // Get returns all values pointed by selected field map key from source MetricSelector
 10240  func (fpm *MetricSelector_FieldPathMap) Get(source *MetricSelector) (values []interface{}) {
 10241  	switch fpm.selector {
 10242  	case MetricSelector_FieldPathSelectorLabels:
 10243  		if value, ok := source.GetLabels()[fpm.key]; ok {
 10244  			values = append(values, value)
 10245  		}
 10246  	default:
 10247  		panic(fmt.Sprintf("Invalid selector for MetricSelector: %d", fpm.selector))
 10248  	}
 10249  	return
 10250  }
 10251  
 10252  func (fpm *MetricSelector_FieldPathMap) GetRaw(source proto.Message) []interface{} {
 10253  	return fpm.Get(source.(*MetricSelector))
 10254  }
 10255  
 10256  // GetSingle returns value by selected field map key from source MetricSelector
 10257  func (fpm *MetricSelector_FieldPathMap) GetSingle(source *MetricSelector) (interface{}, bool) {
 10258  	switch fpm.selector {
 10259  	case MetricSelector_FieldPathSelectorLabels:
 10260  		res, ok := source.GetLabels()[fpm.key]
 10261  		return res, ok
 10262  	default:
 10263  		panic(fmt.Sprintf("Invalid selector for MetricSelector: %d", fpm.selector))
 10264  	}
 10265  }
 10266  
 10267  func (fpm *MetricSelector_FieldPathMap) GetSingleRaw(source proto.Message) (interface{}, bool) {
 10268  	return fpm.GetSingle(source.(*MetricSelector))
 10269  }
 10270  
 10271  // GetDefault returns a default value of the field type
 10272  func (fpm *MetricSelector_FieldPathMap) GetDefault() interface{} {
 10273  	switch fpm.selector {
 10274  	case MetricSelector_FieldPathSelectorLabels:
 10275  		var v *Strings
 10276  		return v
 10277  	default:
 10278  		panic(fmt.Sprintf("Invalid selector for MetricSelector: %d", fpm.selector))
 10279  	}
 10280  }
 10281  
 10282  func (fpm *MetricSelector_FieldPathMap) ClearValue(item *MetricSelector) {
 10283  	if item != nil {
 10284  		switch fpm.selector {
 10285  		case MetricSelector_FieldPathSelectorLabels:
 10286  			delete(item.Labels, fpm.key)
 10287  		default:
 10288  			panic(fmt.Sprintf("Invalid selector for MetricSelector: %d", fpm.selector))
 10289  		}
 10290  	}
 10291  }
 10292  
 10293  func (fpm *MetricSelector_FieldPathMap) ClearValueRaw(item proto.Message) {
 10294  	fpm.ClearValue(item.(*MetricSelector))
 10295  }
 10296  
 10297  // IsLeaf - whether field path is holds simple value
 10298  func (fpm *MetricSelector_FieldPathMap) IsLeaf() bool {
 10299  	switch fpm.selector {
 10300  	case MetricSelector_FieldPathSelectorLabels:
 10301  		return false
 10302  	default:
 10303  		panic(fmt.Sprintf("Invalid selector for MetricSelector: %d", fpm.selector))
 10304  	}
 10305  }
 10306  
 10307  func (fpm *MetricSelector_FieldPathMap) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
 10308  	return []gotenobject.FieldPath{fpm}
 10309  }
 10310  
 10311  func (fpm *MetricSelector_FieldPathMap) WithIValue(value interface{}) MetricSelector_FieldPathValue {
 10312  	switch fpm.selector {
 10313  	case MetricSelector_FieldPathSelectorLabels:
 10314  		return &MetricSelector_FieldPathMapValue{MetricSelector_FieldPathMap: *fpm, value: value.(*Strings)}
 10315  	default:
 10316  		panic(fmt.Sprintf("Invalid selector for MetricSelector: %d", fpm.selector))
 10317  	}
 10318  }
 10319  
 10320  func (fpm *MetricSelector_FieldPathMap) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
 10321  	return fpm.WithIValue(value)
 10322  }
 10323  
 10324  func (fpm *MetricSelector_FieldPathMap) WithIArrayOfValues(values interface{}) MetricSelector_FieldPathArrayOfValues {
 10325  	switch fpm.selector {
 10326  	case MetricSelector_FieldPathSelectorLabels:
 10327  		return &MetricSelector_FieldPathMapArrayOfValues{MetricSelector_FieldPathMap: *fpm, values: values.([]*Strings)}
 10328  	default:
 10329  		panic(fmt.Sprintf("Invalid selector for MetricSelector: %d", fpm.selector))
 10330  	}
 10331  }
 10332  
 10333  func (fpm *MetricSelector_FieldPathMap) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
 10334  	return fpm.WithIArrayOfValues(values)
 10335  }
 10336  
 10337  func (fpm *MetricSelector_FieldPathMap) WithIArrayItemValue(value interface{}) MetricSelector_FieldPathArrayItemValue {
 10338  	panic("Cannot create array item value from map fieldpath")
 10339  }
 10340  
 10341  func (fpm *MetricSelector_FieldPathMap) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
 10342  	return fpm.WithIArrayItemValue(value)
 10343  }
 10344  
 10345  // MetricSelector_FieldPathValue allows storing values for MetricSelector fields according to their type
 10346  type MetricSelector_FieldPathValue interface {
 10347  	MetricSelector_FieldPath
 10348  	gotenobject.FieldPathValue
 10349  	SetTo(target **MetricSelector)
 10350  	CompareWith(*MetricSelector) (cmp int, comparable bool)
 10351  }
 10352  
 10353  func ParseMetricSelector_FieldPathValue(pathStr, valueStr string) (MetricSelector_FieldPathValue, error) {
 10354  	fp, err := ParseMetricSelector_FieldPath(pathStr)
 10355  	if err != nil {
 10356  		return nil, err
 10357  	}
 10358  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
 10359  	if err != nil {
 10360  		return nil, status.Errorf(codes.InvalidArgument, "error parsing MetricSelector field path value from %s: %v", valueStr, err)
 10361  	}
 10362  	return fpv.(MetricSelector_FieldPathValue), nil
 10363  }
 10364  
 10365  func MustParseMetricSelector_FieldPathValue(pathStr, valueStr string) MetricSelector_FieldPathValue {
 10366  	fpv, err := ParseMetricSelector_FieldPathValue(pathStr, valueStr)
 10367  	if err != nil {
 10368  		panic(err)
 10369  	}
 10370  	return fpv
 10371  }
 10372  
 10373  type MetricSelector_FieldTerminalPathValue struct {
 10374  	MetricSelector_FieldTerminalPath
 10375  	value interface{}
 10376  }
 10377  
 10378  var _ MetricSelector_FieldPathValue = (*MetricSelector_FieldTerminalPathValue)(nil)
 10379  
 10380  // GetRawValue returns raw value stored under selected path for 'MetricSelector' as interface{}
 10381  func (fpv *MetricSelector_FieldTerminalPathValue) GetRawValue() interface{} {
 10382  	return fpv.value
 10383  }
 10384  func (fpv *MetricSelector_FieldTerminalPathValue) AsTypesValue() ([]string, bool) {
 10385  	res, ok := fpv.value.([]string)
 10386  	return res, ok
 10387  }
 10388  func (fpv *MetricSelector_FieldTerminalPathValue) AsLabelsValue() (map[string]*Strings, bool) {
 10389  	res, ok := fpv.value.(map[string]*Strings)
 10390  	return res, ok
 10391  }
 10392  
 10393  // SetTo stores value for selected field for object MetricSelector
 10394  func (fpv *MetricSelector_FieldTerminalPathValue) SetTo(target **MetricSelector) {
 10395  	if *target == nil {
 10396  		*target = new(MetricSelector)
 10397  	}
 10398  	switch fpv.selector {
 10399  	case MetricSelector_FieldPathSelectorTypes:
 10400  		(*target).Types = fpv.value.([]string)
 10401  	case MetricSelector_FieldPathSelectorLabels:
 10402  		(*target).Labels = fpv.value.(map[string]*Strings)
 10403  	default:
 10404  		panic(fmt.Sprintf("Invalid selector for MetricSelector: %d", fpv.selector))
 10405  	}
 10406  }
 10407  
 10408  func (fpv *MetricSelector_FieldTerminalPathValue) SetToRaw(target proto.Message) {
 10409  	typedObject := target.(*MetricSelector)
 10410  	fpv.SetTo(&typedObject)
 10411  }
 10412  
 10413  // CompareWith compares value in the 'MetricSelector_FieldTerminalPathValue' with the value under path in 'MetricSelector'.
 10414  func (fpv *MetricSelector_FieldTerminalPathValue) CompareWith(source *MetricSelector) (int, bool) {
 10415  	switch fpv.selector {
 10416  	case MetricSelector_FieldPathSelectorTypes:
 10417  		return 0, false
 10418  	case MetricSelector_FieldPathSelectorLabels:
 10419  		return 0, false
 10420  	default:
 10421  		panic(fmt.Sprintf("Invalid selector for MetricSelector: %d", fpv.selector))
 10422  	}
 10423  }
 10424  
 10425  func (fpv *MetricSelector_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
 10426  	return fpv.CompareWith(source.(*MetricSelector))
 10427  }
 10428  
 10429  type MetricSelector_FieldPathMapValue struct {
 10430  	MetricSelector_FieldPathMap
 10431  	value interface{}
 10432  }
 10433  
 10434  var _ MetricSelector_FieldPathValue = (*MetricSelector_FieldPathMapValue)(nil)
 10435  
 10436  // GetValue returns value stored under selected field in MetricSelector as interface{}
 10437  func (fpmv *MetricSelector_FieldPathMapValue) GetRawValue() interface{} {
 10438  	return fpmv.value
 10439  }
 10440  func (fpmv *MetricSelector_FieldPathMapValue) AsLabelsElementValue() (*Strings, bool) {
 10441  	res, ok := fpmv.value.(*Strings)
 10442  	return res, ok
 10443  }
 10444  
 10445  // SetTo stores value for selected field in MetricSelector
 10446  func (fpmv *MetricSelector_FieldPathMapValue) SetTo(target **MetricSelector) {
 10447  	if *target == nil {
 10448  		*target = new(MetricSelector)
 10449  	}
 10450  	switch fpmv.selector {
 10451  	case MetricSelector_FieldPathSelectorLabels:
 10452  		if (*target).Labels == nil {
 10453  			(*target).Labels = make(map[string]*Strings)
 10454  		}
 10455  		(*target).Labels[fpmv.key] = fpmv.value.(*Strings)
 10456  	default:
 10457  		panic(fmt.Sprintf("Invalid selector for MetricSelector: %d", fpmv.selector))
 10458  	}
 10459  }
 10460  
 10461  func (fpmv *MetricSelector_FieldPathMapValue) SetToRaw(target proto.Message) {
 10462  	typedObject := target.(*MetricSelector)
 10463  	fpmv.SetTo(&typedObject)
 10464  }
 10465  
 10466  // CompareWith compares value in the 'MetricSelector_FieldPathMapValue' with the value under path in 'MetricSelector'.
 10467  func (fpmv *MetricSelector_FieldPathMapValue) CompareWith(source *MetricSelector) (int, bool) {
 10468  	switch fpmv.selector {
 10469  	case MetricSelector_FieldPathSelectorLabels:
 10470  		return 0, false
 10471  	default:
 10472  		panic(fmt.Sprintf("Invalid selector for MetricSelector: %d", fpmv.selector))
 10473  	}
 10474  }
 10475  
 10476  func (fpmv *MetricSelector_FieldPathMapValue) CompareWithRaw(source proto.Message) (int, bool) {
 10477  	return fpmv.CompareWith(source.(*MetricSelector))
 10478  }
 10479  
 10480  // MetricSelector_FieldPathArrayItemValue allows storing single item in Path-specific values for MetricSelector according to their type
 10481  // Present only for array (repeated) types.
 10482  type MetricSelector_FieldPathArrayItemValue interface {
 10483  	gotenobject.FieldPathArrayItemValue
 10484  	MetricSelector_FieldPath
 10485  	ContainsValue(*MetricSelector) bool
 10486  }
 10487  
 10488  // ParseMetricSelector_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
 10489  func ParseMetricSelector_FieldPathArrayItemValue(pathStr, valueStr string) (MetricSelector_FieldPathArrayItemValue, error) {
 10490  	fp, err := ParseMetricSelector_FieldPath(pathStr)
 10491  	if err != nil {
 10492  		return nil, err
 10493  	}
 10494  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
 10495  	if err != nil {
 10496  		return nil, status.Errorf(codes.InvalidArgument, "error parsing MetricSelector field path array item value from %s: %v", valueStr, err)
 10497  	}
 10498  	return fpaiv.(MetricSelector_FieldPathArrayItemValue), nil
 10499  }
 10500  
 10501  func MustParseMetricSelector_FieldPathArrayItemValue(pathStr, valueStr string) MetricSelector_FieldPathArrayItemValue {
 10502  	fpaiv, err := ParseMetricSelector_FieldPathArrayItemValue(pathStr, valueStr)
 10503  	if err != nil {
 10504  		panic(err)
 10505  	}
 10506  	return fpaiv
 10507  }
 10508  
 10509  type MetricSelector_FieldTerminalPathArrayItemValue struct {
 10510  	MetricSelector_FieldTerminalPath
 10511  	value interface{}
 10512  }
 10513  
 10514  var _ MetricSelector_FieldPathArrayItemValue = (*MetricSelector_FieldTerminalPathArrayItemValue)(nil)
 10515  
 10516  // GetRawValue returns stored element value for array in object MetricSelector as interface{}
 10517  func (fpaiv *MetricSelector_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
 10518  	return fpaiv.value
 10519  }
 10520  func (fpaiv *MetricSelector_FieldTerminalPathArrayItemValue) AsTypesItemValue() (string, bool) {
 10521  	res, ok := fpaiv.value.(string)
 10522  	return res, ok
 10523  }
 10524  
 10525  func (fpaiv *MetricSelector_FieldTerminalPathArrayItemValue) GetSingle(source *MetricSelector) (interface{}, bool) {
 10526  	return nil, false
 10527  }
 10528  
 10529  func (fpaiv *MetricSelector_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
 10530  	return fpaiv.GetSingle(source.(*MetricSelector))
 10531  }
 10532  
 10533  // Contains returns a boolean indicating if value that is being held is present in given 'MetricSelector'
 10534  func (fpaiv *MetricSelector_FieldTerminalPathArrayItemValue) ContainsValue(source *MetricSelector) bool {
 10535  	slice := fpaiv.MetricSelector_FieldTerminalPath.Get(source)
 10536  	for _, v := range slice {
 10537  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
 10538  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
 10539  				return true
 10540  			}
 10541  		} else if reflect.DeepEqual(v, fpaiv.value) {
 10542  			return true
 10543  		}
 10544  	}
 10545  	return false
 10546  }
 10547  
 10548  // MetricSelector_FieldPathArrayOfValues allows storing slice of values for MetricSelector fields according to their type
 10549  type MetricSelector_FieldPathArrayOfValues interface {
 10550  	gotenobject.FieldPathArrayOfValues
 10551  	MetricSelector_FieldPath
 10552  }
 10553  
 10554  func ParseMetricSelector_FieldPathArrayOfValues(pathStr, valuesStr string) (MetricSelector_FieldPathArrayOfValues, error) {
 10555  	fp, err := ParseMetricSelector_FieldPath(pathStr)
 10556  	if err != nil {
 10557  		return nil, err
 10558  	}
 10559  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
 10560  	if err != nil {
 10561  		return nil, status.Errorf(codes.InvalidArgument, "error parsing MetricSelector field path array of values from %s: %v", valuesStr, err)
 10562  	}
 10563  	return fpaov.(MetricSelector_FieldPathArrayOfValues), nil
 10564  }
 10565  
 10566  func MustParseMetricSelector_FieldPathArrayOfValues(pathStr, valuesStr string) MetricSelector_FieldPathArrayOfValues {
 10567  	fpaov, err := ParseMetricSelector_FieldPathArrayOfValues(pathStr, valuesStr)
 10568  	if err != nil {
 10569  		panic(err)
 10570  	}
 10571  	return fpaov
 10572  }
 10573  
 10574  type MetricSelector_FieldTerminalPathArrayOfValues struct {
 10575  	MetricSelector_FieldTerminalPath
 10576  	values interface{}
 10577  }
 10578  
 10579  var _ MetricSelector_FieldPathArrayOfValues = (*MetricSelector_FieldTerminalPathArrayOfValues)(nil)
 10580  
 10581  func (fpaov *MetricSelector_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
 10582  	switch fpaov.selector {
 10583  	case MetricSelector_FieldPathSelectorTypes:
 10584  		for _, v := range fpaov.values.([][]string) {
 10585  			values = append(values, v)
 10586  		}
 10587  	case MetricSelector_FieldPathSelectorLabels:
 10588  		for _, v := range fpaov.values.([]map[string]*Strings) {
 10589  			values = append(values, v)
 10590  		}
 10591  	}
 10592  	return
 10593  }
 10594  func (fpaov *MetricSelector_FieldTerminalPathArrayOfValues) AsTypesArrayOfValues() ([][]string, bool) {
 10595  	res, ok := fpaov.values.([][]string)
 10596  	return res, ok
 10597  }
 10598  func (fpaov *MetricSelector_FieldTerminalPathArrayOfValues) AsLabelsArrayOfValues() ([]map[string]*Strings, bool) {
 10599  	res, ok := fpaov.values.([]map[string]*Strings)
 10600  	return res, ok
 10601  }
 10602  
 10603  type MetricSelector_FieldPathMapArrayOfValues struct {
 10604  	MetricSelector_FieldPathMap
 10605  	values interface{}
 10606  }
 10607  
 10608  var _ MetricSelector_FieldPathArrayOfValues = (*MetricSelector_FieldPathMapArrayOfValues)(nil)
 10609  
 10610  func (fpmaov *MetricSelector_FieldPathMapArrayOfValues) GetRawValues() (values []interface{}) {
 10611  	switch fpmaov.selector {
 10612  	case MetricSelector_FieldPathSelectorLabels:
 10613  		for _, v := range fpmaov.values.([]*Strings) {
 10614  			values = append(values, v)
 10615  		}
 10616  	}
 10617  	return
 10618  }
 10619  func (fpmaov *MetricSelector_FieldPathMapArrayOfValues) AsLabelsArrayOfElementValues() ([]*Strings, bool) {
 10620  	res, ok := fpmaov.values.([]*Strings)
 10621  	return res, ok
 10622  }
 10623  
 10624  // FieldPath provides implementation to handle
 10625  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
 10626  type TimeSeriesSelector_FieldPath interface {
 10627  	gotenobject.FieldPath
 10628  	Selector() TimeSeriesSelector_FieldPathSelector
 10629  	Get(source *TimeSeriesSelector) []interface{}
 10630  	GetSingle(source *TimeSeriesSelector) (interface{}, bool)
 10631  	ClearValue(item *TimeSeriesSelector)
 10632  
 10633  	// Those methods build corresponding TimeSeriesSelector_FieldPathValue
 10634  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
 10635  	WithIValue(value interface{}) TimeSeriesSelector_FieldPathValue
 10636  	WithIArrayOfValues(values interface{}) TimeSeriesSelector_FieldPathArrayOfValues
 10637  	WithIArrayItemValue(value interface{}) TimeSeriesSelector_FieldPathArrayItemValue
 10638  }
 10639  
 10640  type TimeSeriesSelector_FieldPathSelector int32
 10641  
 10642  const (
 10643  	TimeSeriesSelector_FieldPathSelectorMetric   TimeSeriesSelector_FieldPathSelector = 0
 10644  	TimeSeriesSelector_FieldPathSelectorResource TimeSeriesSelector_FieldPathSelector = 1
 10645  )
 10646  
 10647  func (s TimeSeriesSelector_FieldPathSelector) String() string {
 10648  	switch s {
 10649  	case TimeSeriesSelector_FieldPathSelectorMetric:
 10650  		return "metric"
 10651  	case TimeSeriesSelector_FieldPathSelectorResource:
 10652  		return "resource"
 10653  	default:
 10654  		panic(fmt.Sprintf("Invalid selector for TimeSeriesSelector: %d", s))
 10655  	}
 10656  }
 10657  
 10658  func BuildTimeSeriesSelector_FieldPath(fp gotenobject.RawFieldPath) (TimeSeriesSelector_FieldPath, error) {
 10659  	if len(fp) == 0 {
 10660  		return nil, status.Error(codes.InvalidArgument, "empty field path for object TimeSeriesSelector")
 10661  	}
 10662  	if len(fp) == 1 {
 10663  		switch fp[0] {
 10664  		case "metric":
 10665  			return &TimeSeriesSelector_FieldTerminalPath{selector: TimeSeriesSelector_FieldPathSelectorMetric}, nil
 10666  		case "resource":
 10667  			return &TimeSeriesSelector_FieldTerminalPath{selector: TimeSeriesSelector_FieldPathSelectorResource}, nil
 10668  		}
 10669  	} else {
 10670  		switch fp[0] {
 10671  		case "metric":
 10672  			if subpath, err := BuildMetricSelector_FieldPath(fp[1:]); err != nil {
 10673  				return nil, err
 10674  			} else {
 10675  				return &TimeSeriesSelector_FieldSubPath{selector: TimeSeriesSelector_FieldPathSelectorMetric, subPath: subpath}, nil
 10676  			}
 10677  		case "resource":
 10678  			if subpath, err := BuildMonitoredResourceSelector_FieldPath(fp[1:]); err != nil {
 10679  				return nil, err
 10680  			} else {
 10681  				return &TimeSeriesSelector_FieldSubPath{selector: TimeSeriesSelector_FieldPathSelectorResource, subPath: subpath}, nil
 10682  			}
 10683  		}
 10684  	}
 10685  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object TimeSeriesSelector", fp)
 10686  }
 10687  
 10688  func ParseTimeSeriesSelector_FieldPath(rawField string) (TimeSeriesSelector_FieldPath, error) {
 10689  	fp, err := gotenobject.ParseRawFieldPath(rawField)
 10690  	if err != nil {
 10691  		return nil, err
 10692  	}
 10693  	return BuildTimeSeriesSelector_FieldPath(fp)
 10694  }
 10695  
 10696  func MustParseTimeSeriesSelector_FieldPath(rawField string) TimeSeriesSelector_FieldPath {
 10697  	fp, err := ParseTimeSeriesSelector_FieldPath(rawField)
 10698  	if err != nil {
 10699  		panic(err)
 10700  	}
 10701  	return fp
 10702  }
 10703  
 10704  type TimeSeriesSelector_FieldTerminalPath struct {
 10705  	selector TimeSeriesSelector_FieldPathSelector
 10706  }
 10707  
 10708  var _ TimeSeriesSelector_FieldPath = (*TimeSeriesSelector_FieldTerminalPath)(nil)
 10709  
 10710  func (fp *TimeSeriesSelector_FieldTerminalPath) Selector() TimeSeriesSelector_FieldPathSelector {
 10711  	return fp.selector
 10712  }
 10713  
 10714  // String returns path representation in proto convention
 10715  func (fp *TimeSeriesSelector_FieldTerminalPath) String() string {
 10716  	return fp.selector.String()
 10717  }
 10718  
 10719  // JSONString returns path representation is JSON convention
 10720  func (fp *TimeSeriesSelector_FieldTerminalPath) JSONString() string {
 10721  	return strcase.ToLowerCamel(fp.String())
 10722  }
 10723  
 10724  // Get returns all values pointed by specific field from source TimeSeriesSelector
 10725  func (fp *TimeSeriesSelector_FieldTerminalPath) Get(source *TimeSeriesSelector) (values []interface{}) {
 10726  	if source != nil {
 10727  		switch fp.selector {
 10728  		case TimeSeriesSelector_FieldPathSelectorMetric:
 10729  			if source.Metric != nil {
 10730  				values = append(values, source.Metric)
 10731  			}
 10732  		case TimeSeriesSelector_FieldPathSelectorResource:
 10733  			if source.Resource != nil {
 10734  				values = append(values, source.Resource)
 10735  			}
 10736  		default:
 10737  			panic(fmt.Sprintf("Invalid selector for TimeSeriesSelector: %d", fp.selector))
 10738  		}
 10739  	}
 10740  	return
 10741  }
 10742  
 10743  func (fp *TimeSeriesSelector_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
 10744  	return fp.Get(source.(*TimeSeriesSelector))
 10745  }
 10746  
 10747  // GetSingle returns value pointed by specific field of from source TimeSeriesSelector
 10748  func (fp *TimeSeriesSelector_FieldTerminalPath) GetSingle(source *TimeSeriesSelector) (interface{}, bool) {
 10749  	switch fp.selector {
 10750  	case TimeSeriesSelector_FieldPathSelectorMetric:
 10751  		res := source.GetMetric()
 10752  		return res, res != nil
 10753  	case TimeSeriesSelector_FieldPathSelectorResource:
 10754  		res := source.GetResource()
 10755  		return res, res != nil
 10756  	default:
 10757  		panic(fmt.Sprintf("Invalid selector for TimeSeriesSelector: %d", fp.selector))
 10758  	}
 10759  }
 10760  
 10761  func (fp *TimeSeriesSelector_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
 10762  	return fp.GetSingle(source.(*TimeSeriesSelector))
 10763  }
 10764  
 10765  // GetDefault returns a default value of the field type
 10766  func (fp *TimeSeriesSelector_FieldTerminalPath) GetDefault() interface{} {
 10767  	switch fp.selector {
 10768  	case TimeSeriesSelector_FieldPathSelectorMetric:
 10769  		return (*MetricSelector)(nil)
 10770  	case TimeSeriesSelector_FieldPathSelectorResource:
 10771  		return (*MonitoredResourceSelector)(nil)
 10772  	default:
 10773  		panic(fmt.Sprintf("Invalid selector for TimeSeriesSelector: %d", fp.selector))
 10774  	}
 10775  }
 10776  
 10777  func (fp *TimeSeriesSelector_FieldTerminalPath) ClearValue(item *TimeSeriesSelector) {
 10778  	if item != nil {
 10779  		switch fp.selector {
 10780  		case TimeSeriesSelector_FieldPathSelectorMetric:
 10781  			item.Metric = nil
 10782  		case TimeSeriesSelector_FieldPathSelectorResource:
 10783  			item.Resource = nil
 10784  		default:
 10785  			panic(fmt.Sprintf("Invalid selector for TimeSeriesSelector: %d", fp.selector))
 10786  		}
 10787  	}
 10788  }
 10789  
 10790  func (fp *TimeSeriesSelector_FieldTerminalPath) ClearValueRaw(item proto.Message) {
 10791  	fp.ClearValue(item.(*TimeSeriesSelector))
 10792  }
 10793  
 10794  // IsLeaf - whether field path is holds simple value
 10795  func (fp *TimeSeriesSelector_FieldTerminalPath) IsLeaf() bool {
 10796  	return false
 10797  }
 10798  
 10799  func (fp *TimeSeriesSelector_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
 10800  	return []gotenobject.FieldPath{fp}
 10801  }
 10802  
 10803  func (fp *TimeSeriesSelector_FieldTerminalPath) WithIValue(value interface{}) TimeSeriesSelector_FieldPathValue {
 10804  	switch fp.selector {
 10805  	case TimeSeriesSelector_FieldPathSelectorMetric:
 10806  		return &TimeSeriesSelector_FieldTerminalPathValue{TimeSeriesSelector_FieldTerminalPath: *fp, value: value.(*MetricSelector)}
 10807  	case TimeSeriesSelector_FieldPathSelectorResource:
 10808  		return &TimeSeriesSelector_FieldTerminalPathValue{TimeSeriesSelector_FieldTerminalPath: *fp, value: value.(*MonitoredResourceSelector)}
 10809  	default:
 10810  		panic(fmt.Sprintf("Invalid selector for TimeSeriesSelector: %d", fp.selector))
 10811  	}
 10812  }
 10813  
 10814  func (fp *TimeSeriesSelector_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
 10815  	return fp.WithIValue(value)
 10816  }
 10817  
 10818  func (fp *TimeSeriesSelector_FieldTerminalPath) WithIArrayOfValues(values interface{}) TimeSeriesSelector_FieldPathArrayOfValues {
 10819  	fpaov := &TimeSeriesSelector_FieldTerminalPathArrayOfValues{TimeSeriesSelector_FieldTerminalPath: *fp}
 10820  	switch fp.selector {
 10821  	case TimeSeriesSelector_FieldPathSelectorMetric:
 10822  		return &TimeSeriesSelector_FieldTerminalPathArrayOfValues{TimeSeriesSelector_FieldTerminalPath: *fp, values: values.([]*MetricSelector)}
 10823  	case TimeSeriesSelector_FieldPathSelectorResource:
 10824  		return &TimeSeriesSelector_FieldTerminalPathArrayOfValues{TimeSeriesSelector_FieldTerminalPath: *fp, values: values.([]*MonitoredResourceSelector)}
 10825  	default:
 10826  		panic(fmt.Sprintf("Invalid selector for TimeSeriesSelector: %d", fp.selector))
 10827  	}
 10828  	return fpaov
 10829  }
 10830  
 10831  func (fp *TimeSeriesSelector_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
 10832  	return fp.WithIArrayOfValues(values)
 10833  }
 10834  
 10835  func (fp *TimeSeriesSelector_FieldTerminalPath) WithIArrayItemValue(value interface{}) TimeSeriesSelector_FieldPathArrayItemValue {
 10836  	switch fp.selector {
 10837  	default:
 10838  		panic(fmt.Sprintf("Invalid selector for TimeSeriesSelector: %d", fp.selector))
 10839  	}
 10840  }
 10841  
 10842  func (fp *TimeSeriesSelector_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
 10843  	return fp.WithIArrayItemValue(value)
 10844  }
 10845  
 10846  type TimeSeriesSelector_FieldSubPath struct {
 10847  	selector TimeSeriesSelector_FieldPathSelector
 10848  	subPath  gotenobject.FieldPath
 10849  }
 10850  
 10851  var _ TimeSeriesSelector_FieldPath = (*TimeSeriesSelector_FieldSubPath)(nil)
 10852  
 10853  func (fps *TimeSeriesSelector_FieldSubPath) Selector() TimeSeriesSelector_FieldPathSelector {
 10854  	return fps.selector
 10855  }
 10856  func (fps *TimeSeriesSelector_FieldSubPath) AsMetricSubPath() (MetricSelector_FieldPath, bool) {
 10857  	res, ok := fps.subPath.(MetricSelector_FieldPath)
 10858  	return res, ok
 10859  }
 10860  func (fps *TimeSeriesSelector_FieldSubPath) AsResourceSubPath() (MonitoredResourceSelector_FieldPath, bool) {
 10861  	res, ok := fps.subPath.(MonitoredResourceSelector_FieldPath)
 10862  	return res, ok
 10863  }
 10864  
 10865  // String returns path representation in proto convention
 10866  func (fps *TimeSeriesSelector_FieldSubPath) String() string {
 10867  	return fps.selector.String() + "." + fps.subPath.String()
 10868  }
 10869  
 10870  // JSONString returns path representation is JSON convention
 10871  func (fps *TimeSeriesSelector_FieldSubPath) JSONString() string {
 10872  	return strcase.ToLowerCamel(fps.selector.String()) + "." + fps.subPath.JSONString()
 10873  }
 10874  
 10875  // Get returns all values pointed by selected field from source TimeSeriesSelector
 10876  func (fps *TimeSeriesSelector_FieldSubPath) Get(source *TimeSeriesSelector) (values []interface{}) {
 10877  	switch fps.selector {
 10878  	case TimeSeriesSelector_FieldPathSelectorMetric:
 10879  		values = append(values, fps.subPath.GetRaw(source.GetMetric())...)
 10880  	case TimeSeriesSelector_FieldPathSelectorResource:
 10881  		values = append(values, fps.subPath.GetRaw(source.GetResource())...)
 10882  	default:
 10883  		panic(fmt.Sprintf("Invalid selector for TimeSeriesSelector: %d", fps.selector))
 10884  	}
 10885  	return
 10886  }
 10887  
 10888  func (fps *TimeSeriesSelector_FieldSubPath) GetRaw(source proto.Message) []interface{} {
 10889  	return fps.Get(source.(*TimeSeriesSelector))
 10890  }
 10891  
 10892  // GetSingle returns value of selected field from source TimeSeriesSelector
 10893  func (fps *TimeSeriesSelector_FieldSubPath) GetSingle(source *TimeSeriesSelector) (interface{}, bool) {
 10894  	switch fps.selector {
 10895  	case TimeSeriesSelector_FieldPathSelectorMetric:
 10896  		if source.GetMetric() == nil {
 10897  			return nil, false
 10898  		}
 10899  		return fps.subPath.GetSingleRaw(source.GetMetric())
 10900  	case TimeSeriesSelector_FieldPathSelectorResource:
 10901  		if source.GetResource() == nil {
 10902  			return nil, false
 10903  		}
 10904  		return fps.subPath.GetSingleRaw(source.GetResource())
 10905  	default:
 10906  		panic(fmt.Sprintf("Invalid selector for TimeSeriesSelector: %d", fps.selector))
 10907  	}
 10908  }
 10909  
 10910  func (fps *TimeSeriesSelector_FieldSubPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
 10911  	return fps.GetSingle(source.(*TimeSeriesSelector))
 10912  }
 10913  
 10914  // GetDefault returns a default value of the field type
 10915  func (fps *TimeSeriesSelector_FieldSubPath) GetDefault() interface{} {
 10916  	return fps.subPath.GetDefault()
 10917  }
 10918  
 10919  func (fps *TimeSeriesSelector_FieldSubPath) ClearValue(item *TimeSeriesSelector) {
 10920  	if item != nil {
 10921  		switch fps.selector {
 10922  		case TimeSeriesSelector_FieldPathSelectorMetric:
 10923  			fps.subPath.ClearValueRaw(item.Metric)
 10924  		case TimeSeriesSelector_FieldPathSelectorResource:
 10925  			fps.subPath.ClearValueRaw(item.Resource)
 10926  		default:
 10927  			panic(fmt.Sprintf("Invalid selector for TimeSeriesSelector: %d", fps.selector))
 10928  		}
 10929  	}
 10930  }
 10931  
 10932  func (fps *TimeSeriesSelector_FieldSubPath) ClearValueRaw(item proto.Message) {
 10933  	fps.ClearValue(item.(*TimeSeriesSelector))
 10934  }
 10935  
 10936  // IsLeaf - whether field path is holds simple value
 10937  func (fps *TimeSeriesSelector_FieldSubPath) IsLeaf() bool {
 10938  	return fps.subPath.IsLeaf()
 10939  }
 10940  
 10941  func (fps *TimeSeriesSelector_FieldSubPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
 10942  	iPaths := []gotenobject.FieldPath{&TimeSeriesSelector_FieldTerminalPath{selector: fps.selector}}
 10943  	iPaths = append(iPaths, fps.subPath.SplitIntoTerminalIPaths()...)
 10944  	return iPaths
 10945  }
 10946  
 10947  func (fps *TimeSeriesSelector_FieldSubPath) WithIValue(value interface{}) TimeSeriesSelector_FieldPathValue {
 10948  	return &TimeSeriesSelector_FieldSubPathValue{fps, fps.subPath.WithRawIValue(value)}
 10949  }
 10950  
 10951  func (fps *TimeSeriesSelector_FieldSubPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
 10952  	return fps.WithIValue(value)
 10953  }
 10954  
 10955  func (fps *TimeSeriesSelector_FieldSubPath) WithIArrayOfValues(values interface{}) TimeSeriesSelector_FieldPathArrayOfValues {
 10956  	return &TimeSeriesSelector_FieldSubPathArrayOfValues{fps, fps.subPath.WithRawIArrayOfValues(values)}
 10957  }
 10958  
 10959  func (fps *TimeSeriesSelector_FieldSubPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
 10960  	return fps.WithIArrayOfValues(values)
 10961  }
 10962  
 10963  func (fps *TimeSeriesSelector_FieldSubPath) WithIArrayItemValue(value interface{}) TimeSeriesSelector_FieldPathArrayItemValue {
 10964  	return &TimeSeriesSelector_FieldSubPathArrayItemValue{fps, fps.subPath.WithRawIArrayItemValue(value)}
 10965  }
 10966  
 10967  func (fps *TimeSeriesSelector_FieldSubPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
 10968  	return fps.WithIArrayItemValue(value)
 10969  }
 10970  
 10971  // TimeSeriesSelector_FieldPathValue allows storing values for TimeSeriesSelector fields according to their type
 10972  type TimeSeriesSelector_FieldPathValue interface {
 10973  	TimeSeriesSelector_FieldPath
 10974  	gotenobject.FieldPathValue
 10975  	SetTo(target **TimeSeriesSelector)
 10976  	CompareWith(*TimeSeriesSelector) (cmp int, comparable bool)
 10977  }
 10978  
 10979  func ParseTimeSeriesSelector_FieldPathValue(pathStr, valueStr string) (TimeSeriesSelector_FieldPathValue, error) {
 10980  	fp, err := ParseTimeSeriesSelector_FieldPath(pathStr)
 10981  	if err != nil {
 10982  		return nil, err
 10983  	}
 10984  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
 10985  	if err != nil {
 10986  		return nil, status.Errorf(codes.InvalidArgument, "error parsing TimeSeriesSelector field path value from %s: %v", valueStr, err)
 10987  	}
 10988  	return fpv.(TimeSeriesSelector_FieldPathValue), nil
 10989  }
 10990  
 10991  func MustParseTimeSeriesSelector_FieldPathValue(pathStr, valueStr string) TimeSeriesSelector_FieldPathValue {
 10992  	fpv, err := ParseTimeSeriesSelector_FieldPathValue(pathStr, valueStr)
 10993  	if err != nil {
 10994  		panic(err)
 10995  	}
 10996  	return fpv
 10997  }
 10998  
 10999  type TimeSeriesSelector_FieldTerminalPathValue struct {
 11000  	TimeSeriesSelector_FieldTerminalPath
 11001  	value interface{}
 11002  }
 11003  
 11004  var _ TimeSeriesSelector_FieldPathValue = (*TimeSeriesSelector_FieldTerminalPathValue)(nil)
 11005  
 11006  // GetRawValue returns raw value stored under selected path for 'TimeSeriesSelector' as interface{}
 11007  func (fpv *TimeSeriesSelector_FieldTerminalPathValue) GetRawValue() interface{} {
 11008  	return fpv.value
 11009  }
 11010  func (fpv *TimeSeriesSelector_FieldTerminalPathValue) AsMetricValue() (*MetricSelector, bool) {
 11011  	res, ok := fpv.value.(*MetricSelector)
 11012  	return res, ok
 11013  }
 11014  func (fpv *TimeSeriesSelector_FieldTerminalPathValue) AsResourceValue() (*MonitoredResourceSelector, bool) {
 11015  	res, ok := fpv.value.(*MonitoredResourceSelector)
 11016  	return res, ok
 11017  }
 11018  
 11019  // SetTo stores value for selected field for object TimeSeriesSelector
 11020  func (fpv *TimeSeriesSelector_FieldTerminalPathValue) SetTo(target **TimeSeriesSelector) {
 11021  	if *target == nil {
 11022  		*target = new(TimeSeriesSelector)
 11023  	}
 11024  	switch fpv.selector {
 11025  	case TimeSeriesSelector_FieldPathSelectorMetric:
 11026  		(*target).Metric = fpv.value.(*MetricSelector)
 11027  	case TimeSeriesSelector_FieldPathSelectorResource:
 11028  		(*target).Resource = fpv.value.(*MonitoredResourceSelector)
 11029  	default:
 11030  		panic(fmt.Sprintf("Invalid selector for TimeSeriesSelector: %d", fpv.selector))
 11031  	}
 11032  }
 11033  
 11034  func (fpv *TimeSeriesSelector_FieldTerminalPathValue) SetToRaw(target proto.Message) {
 11035  	typedObject := target.(*TimeSeriesSelector)
 11036  	fpv.SetTo(&typedObject)
 11037  }
 11038  
 11039  // CompareWith compares value in the 'TimeSeriesSelector_FieldTerminalPathValue' with the value under path in 'TimeSeriesSelector'.
 11040  func (fpv *TimeSeriesSelector_FieldTerminalPathValue) CompareWith(source *TimeSeriesSelector) (int, bool) {
 11041  	switch fpv.selector {
 11042  	case TimeSeriesSelector_FieldPathSelectorMetric:
 11043  		return 0, false
 11044  	case TimeSeriesSelector_FieldPathSelectorResource:
 11045  		return 0, false
 11046  	default:
 11047  		panic(fmt.Sprintf("Invalid selector for TimeSeriesSelector: %d", fpv.selector))
 11048  	}
 11049  }
 11050  
 11051  func (fpv *TimeSeriesSelector_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
 11052  	return fpv.CompareWith(source.(*TimeSeriesSelector))
 11053  }
 11054  
 11055  type TimeSeriesSelector_FieldSubPathValue struct {
 11056  	TimeSeriesSelector_FieldPath
 11057  	subPathValue gotenobject.FieldPathValue
 11058  }
 11059  
 11060  var _ TimeSeriesSelector_FieldPathValue = (*TimeSeriesSelector_FieldSubPathValue)(nil)
 11061  
 11062  func (fpvs *TimeSeriesSelector_FieldSubPathValue) AsMetricPathValue() (MetricSelector_FieldPathValue, bool) {
 11063  	res, ok := fpvs.subPathValue.(MetricSelector_FieldPathValue)
 11064  	return res, ok
 11065  }
 11066  func (fpvs *TimeSeriesSelector_FieldSubPathValue) AsResourcePathValue() (MonitoredResourceSelector_FieldPathValue, bool) {
 11067  	res, ok := fpvs.subPathValue.(MonitoredResourceSelector_FieldPathValue)
 11068  	return res, ok
 11069  }
 11070  
 11071  func (fpvs *TimeSeriesSelector_FieldSubPathValue) SetTo(target **TimeSeriesSelector) {
 11072  	if *target == nil {
 11073  		*target = new(TimeSeriesSelector)
 11074  	}
 11075  	switch fpvs.Selector() {
 11076  	case TimeSeriesSelector_FieldPathSelectorMetric:
 11077  		fpvs.subPathValue.(MetricSelector_FieldPathValue).SetTo(&(*target).Metric)
 11078  	case TimeSeriesSelector_FieldPathSelectorResource:
 11079  		fpvs.subPathValue.(MonitoredResourceSelector_FieldPathValue).SetTo(&(*target).Resource)
 11080  	default:
 11081  		panic(fmt.Sprintf("Invalid selector for TimeSeriesSelector: %d", fpvs.Selector()))
 11082  	}
 11083  }
 11084  
 11085  func (fpvs *TimeSeriesSelector_FieldSubPathValue) SetToRaw(target proto.Message) {
 11086  	typedObject := target.(*TimeSeriesSelector)
 11087  	fpvs.SetTo(&typedObject)
 11088  }
 11089  
 11090  func (fpvs *TimeSeriesSelector_FieldSubPathValue) GetRawValue() interface{} {
 11091  	return fpvs.subPathValue.GetRawValue()
 11092  }
 11093  
 11094  func (fpvs *TimeSeriesSelector_FieldSubPathValue) CompareWith(source *TimeSeriesSelector) (int, bool) {
 11095  	switch fpvs.Selector() {
 11096  	case TimeSeriesSelector_FieldPathSelectorMetric:
 11097  		return fpvs.subPathValue.(MetricSelector_FieldPathValue).CompareWith(source.GetMetric())
 11098  	case TimeSeriesSelector_FieldPathSelectorResource:
 11099  		return fpvs.subPathValue.(MonitoredResourceSelector_FieldPathValue).CompareWith(source.GetResource())
 11100  	default:
 11101  		panic(fmt.Sprintf("Invalid selector for TimeSeriesSelector: %d", fpvs.Selector()))
 11102  	}
 11103  }
 11104  
 11105  func (fpvs *TimeSeriesSelector_FieldSubPathValue) CompareWithRaw(source proto.Message) (int, bool) {
 11106  	return fpvs.CompareWith(source.(*TimeSeriesSelector))
 11107  }
 11108  
 11109  // TimeSeriesSelector_FieldPathArrayItemValue allows storing single item in Path-specific values for TimeSeriesSelector according to their type
 11110  // Present only for array (repeated) types.
 11111  type TimeSeriesSelector_FieldPathArrayItemValue interface {
 11112  	gotenobject.FieldPathArrayItemValue
 11113  	TimeSeriesSelector_FieldPath
 11114  	ContainsValue(*TimeSeriesSelector) bool
 11115  }
 11116  
 11117  // ParseTimeSeriesSelector_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
 11118  func ParseTimeSeriesSelector_FieldPathArrayItemValue(pathStr, valueStr string) (TimeSeriesSelector_FieldPathArrayItemValue, error) {
 11119  	fp, err := ParseTimeSeriesSelector_FieldPath(pathStr)
 11120  	if err != nil {
 11121  		return nil, err
 11122  	}
 11123  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
 11124  	if err != nil {
 11125  		return nil, status.Errorf(codes.InvalidArgument, "error parsing TimeSeriesSelector field path array item value from %s: %v", valueStr, err)
 11126  	}
 11127  	return fpaiv.(TimeSeriesSelector_FieldPathArrayItemValue), nil
 11128  }
 11129  
 11130  func MustParseTimeSeriesSelector_FieldPathArrayItemValue(pathStr, valueStr string) TimeSeriesSelector_FieldPathArrayItemValue {
 11131  	fpaiv, err := ParseTimeSeriesSelector_FieldPathArrayItemValue(pathStr, valueStr)
 11132  	if err != nil {
 11133  		panic(err)
 11134  	}
 11135  	return fpaiv
 11136  }
 11137  
 11138  type TimeSeriesSelector_FieldTerminalPathArrayItemValue struct {
 11139  	TimeSeriesSelector_FieldTerminalPath
 11140  	value interface{}
 11141  }
 11142  
 11143  var _ TimeSeriesSelector_FieldPathArrayItemValue = (*TimeSeriesSelector_FieldTerminalPathArrayItemValue)(nil)
 11144  
 11145  // GetRawValue returns stored element value for array in object TimeSeriesSelector as interface{}
 11146  func (fpaiv *TimeSeriesSelector_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
 11147  	return fpaiv.value
 11148  }
 11149  
 11150  func (fpaiv *TimeSeriesSelector_FieldTerminalPathArrayItemValue) GetSingle(source *TimeSeriesSelector) (interface{}, bool) {
 11151  	return nil, false
 11152  }
 11153  
 11154  func (fpaiv *TimeSeriesSelector_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
 11155  	return fpaiv.GetSingle(source.(*TimeSeriesSelector))
 11156  }
 11157  
 11158  // Contains returns a boolean indicating if value that is being held is present in given 'TimeSeriesSelector'
 11159  func (fpaiv *TimeSeriesSelector_FieldTerminalPathArrayItemValue) ContainsValue(source *TimeSeriesSelector) bool {
 11160  	slice := fpaiv.TimeSeriesSelector_FieldTerminalPath.Get(source)
 11161  	for _, v := range slice {
 11162  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
 11163  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
 11164  				return true
 11165  			}
 11166  		} else if reflect.DeepEqual(v, fpaiv.value) {
 11167  			return true
 11168  		}
 11169  	}
 11170  	return false
 11171  }
 11172  
 11173  type TimeSeriesSelector_FieldSubPathArrayItemValue struct {
 11174  	TimeSeriesSelector_FieldPath
 11175  	subPathItemValue gotenobject.FieldPathArrayItemValue
 11176  }
 11177  
 11178  // GetRawValue returns stored array item value
 11179  func (fpaivs *TimeSeriesSelector_FieldSubPathArrayItemValue) GetRawItemValue() interface{} {
 11180  	return fpaivs.subPathItemValue.GetRawItemValue()
 11181  }
 11182  func (fpaivs *TimeSeriesSelector_FieldSubPathArrayItemValue) AsMetricPathItemValue() (MetricSelector_FieldPathArrayItemValue, bool) {
 11183  	res, ok := fpaivs.subPathItemValue.(MetricSelector_FieldPathArrayItemValue)
 11184  	return res, ok
 11185  }
 11186  func (fpaivs *TimeSeriesSelector_FieldSubPathArrayItemValue) AsResourcePathItemValue() (MonitoredResourceSelector_FieldPathArrayItemValue, bool) {
 11187  	res, ok := fpaivs.subPathItemValue.(MonitoredResourceSelector_FieldPathArrayItemValue)
 11188  	return res, ok
 11189  }
 11190  
 11191  // Contains returns a boolean indicating if value that is being held is present in given 'TimeSeriesSelector'
 11192  func (fpaivs *TimeSeriesSelector_FieldSubPathArrayItemValue) ContainsValue(source *TimeSeriesSelector) bool {
 11193  	switch fpaivs.Selector() {
 11194  	case TimeSeriesSelector_FieldPathSelectorMetric:
 11195  		return fpaivs.subPathItemValue.(MetricSelector_FieldPathArrayItemValue).ContainsValue(source.GetMetric())
 11196  	case TimeSeriesSelector_FieldPathSelectorResource:
 11197  		return fpaivs.subPathItemValue.(MonitoredResourceSelector_FieldPathArrayItemValue).ContainsValue(source.GetResource())
 11198  	default:
 11199  		panic(fmt.Sprintf("Invalid selector for TimeSeriesSelector: %d", fpaivs.Selector()))
 11200  	}
 11201  }
 11202  
 11203  // TimeSeriesSelector_FieldPathArrayOfValues allows storing slice of values for TimeSeriesSelector fields according to their type
 11204  type TimeSeriesSelector_FieldPathArrayOfValues interface {
 11205  	gotenobject.FieldPathArrayOfValues
 11206  	TimeSeriesSelector_FieldPath
 11207  }
 11208  
 11209  func ParseTimeSeriesSelector_FieldPathArrayOfValues(pathStr, valuesStr string) (TimeSeriesSelector_FieldPathArrayOfValues, error) {
 11210  	fp, err := ParseTimeSeriesSelector_FieldPath(pathStr)
 11211  	if err != nil {
 11212  		return nil, err
 11213  	}
 11214  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
 11215  	if err != nil {
 11216  		return nil, status.Errorf(codes.InvalidArgument, "error parsing TimeSeriesSelector field path array of values from %s: %v", valuesStr, err)
 11217  	}
 11218  	return fpaov.(TimeSeriesSelector_FieldPathArrayOfValues), nil
 11219  }
 11220  
 11221  func MustParseTimeSeriesSelector_FieldPathArrayOfValues(pathStr, valuesStr string) TimeSeriesSelector_FieldPathArrayOfValues {
 11222  	fpaov, err := ParseTimeSeriesSelector_FieldPathArrayOfValues(pathStr, valuesStr)
 11223  	if err != nil {
 11224  		panic(err)
 11225  	}
 11226  	return fpaov
 11227  }
 11228  
 11229  type TimeSeriesSelector_FieldTerminalPathArrayOfValues struct {
 11230  	TimeSeriesSelector_FieldTerminalPath
 11231  	values interface{}
 11232  }
 11233  
 11234  var _ TimeSeriesSelector_FieldPathArrayOfValues = (*TimeSeriesSelector_FieldTerminalPathArrayOfValues)(nil)
 11235  
 11236  func (fpaov *TimeSeriesSelector_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
 11237  	switch fpaov.selector {
 11238  	case TimeSeriesSelector_FieldPathSelectorMetric:
 11239  		for _, v := range fpaov.values.([]*MetricSelector) {
 11240  			values = append(values, v)
 11241  		}
 11242  	case TimeSeriesSelector_FieldPathSelectorResource:
 11243  		for _, v := range fpaov.values.([]*MonitoredResourceSelector) {
 11244  			values = append(values, v)
 11245  		}
 11246  	}
 11247  	return
 11248  }
 11249  func (fpaov *TimeSeriesSelector_FieldTerminalPathArrayOfValues) AsMetricArrayOfValues() ([]*MetricSelector, bool) {
 11250  	res, ok := fpaov.values.([]*MetricSelector)
 11251  	return res, ok
 11252  }
 11253  func (fpaov *TimeSeriesSelector_FieldTerminalPathArrayOfValues) AsResourceArrayOfValues() ([]*MonitoredResourceSelector, bool) {
 11254  	res, ok := fpaov.values.([]*MonitoredResourceSelector)
 11255  	return res, ok
 11256  }
 11257  
 11258  type TimeSeriesSelector_FieldSubPathArrayOfValues struct {
 11259  	TimeSeriesSelector_FieldPath
 11260  	subPathArrayOfValues gotenobject.FieldPathArrayOfValues
 11261  }
 11262  
 11263  var _ TimeSeriesSelector_FieldPathArrayOfValues = (*TimeSeriesSelector_FieldSubPathArrayOfValues)(nil)
 11264  
 11265  func (fpsaov *TimeSeriesSelector_FieldSubPathArrayOfValues) GetRawValues() []interface{} {
 11266  	return fpsaov.subPathArrayOfValues.GetRawValues()
 11267  }
 11268  func (fpsaov *TimeSeriesSelector_FieldSubPathArrayOfValues) AsMetricPathArrayOfValues() (MetricSelector_FieldPathArrayOfValues, bool) {
 11269  	res, ok := fpsaov.subPathArrayOfValues.(MetricSelector_FieldPathArrayOfValues)
 11270  	return res, ok
 11271  }
 11272  func (fpsaov *TimeSeriesSelector_FieldSubPathArrayOfValues) AsResourcePathArrayOfValues() (MonitoredResourceSelector_FieldPathArrayOfValues, bool) {
 11273  	res, ok := fpsaov.subPathArrayOfValues.(MonitoredResourceSelector_FieldPathArrayOfValues)
 11274  	return res, ok
 11275  }