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

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