github.com/cloudwan/edgelq-sdk@v1.15.4/monitoring/resources/v3/common/common.pb.object_ext.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  	"fmt"
     9  	"sort"
    10  
    11  	"google.golang.org/protobuf/proto"
    12  	googlefieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
    13  
    14  	gotenobject "github.com/cloudwan/goten-sdk/runtime/object"
    15  )
    16  
    17  // proto imports
    18  import (
    19  	durationpb "google.golang.org/protobuf/types/known/durationpb"
    20  	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
    21  )
    22  
    23  // ensure the imports are used
    24  var (
    25  	_ = new(fmt.Stringer)
    26  	_ = new(sort.Interface)
    27  
    28  	_ = new(proto.Message)
    29  	_ = googlefieldmaskpb.FieldMask{}
    30  
    31  	_ = new(gotenobject.FieldPath)
    32  )
    33  
    34  // make sure we're using proto imports
    35  var (
    36  	_ = &durationpb.Duration{}
    37  	_ = &timestamppb.Timestamp{}
    38  )
    39  
    40  func (o *LabelDescriptor) GotenObjectExt() {}
    41  
    42  func (o *LabelDescriptor) MakeFullFieldMask() *LabelDescriptor_FieldMask {
    43  	return FullLabelDescriptor_FieldMask()
    44  }
    45  
    46  func (o *LabelDescriptor) MakeRawFullFieldMask() gotenobject.FieldMask {
    47  	return FullLabelDescriptor_FieldMask()
    48  }
    49  
    50  func (o *LabelDescriptor) MakeDiffFieldMask(other *LabelDescriptor) *LabelDescriptor_FieldMask {
    51  	if o == nil && other == nil {
    52  		return &LabelDescriptor_FieldMask{}
    53  	}
    54  	if o == nil || other == nil {
    55  		return FullLabelDescriptor_FieldMask()
    56  	}
    57  
    58  	res := &LabelDescriptor_FieldMask{}
    59  	if o.GetKey() != other.GetKey() {
    60  		res.Paths = append(res.Paths, &LabelDescriptor_FieldTerminalPath{selector: LabelDescriptor_FieldPathSelectorKey})
    61  	}
    62  	if o.GetValueType() != other.GetValueType() {
    63  		res.Paths = append(res.Paths, &LabelDescriptor_FieldTerminalPath{selector: LabelDescriptor_FieldPathSelectorValueType})
    64  	}
    65  	if o.GetDescription() != other.GetDescription() {
    66  		res.Paths = append(res.Paths, &LabelDescriptor_FieldTerminalPath{selector: LabelDescriptor_FieldPathSelectorDescription})
    67  	}
    68  	if o.GetDefaultValue() != other.GetDefaultValue() {
    69  		res.Paths = append(res.Paths, &LabelDescriptor_FieldTerminalPath{selector: LabelDescriptor_FieldPathSelectorDefaultValue})
    70  	}
    71  	if o.GetDisabled() != other.GetDisabled() {
    72  		res.Paths = append(res.Paths, &LabelDescriptor_FieldTerminalPath{selector: LabelDescriptor_FieldPathSelectorDisabled})
    73  	}
    74  	return res
    75  }
    76  
    77  func (o *LabelDescriptor) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
    78  	return o.MakeDiffFieldMask(other.(*LabelDescriptor))
    79  }
    80  
    81  func (o *LabelDescriptor) Clone() *LabelDescriptor {
    82  	if o == nil {
    83  		return nil
    84  	}
    85  	result := &LabelDescriptor{}
    86  	result.Key = o.Key
    87  	result.ValueType = o.ValueType
    88  	result.Description = o.Description
    89  	result.DefaultValue = o.DefaultValue
    90  	result.Disabled = o.Disabled
    91  	return result
    92  }
    93  
    94  func (o *LabelDescriptor) CloneRaw() gotenobject.GotenObjectExt {
    95  	return o.Clone()
    96  }
    97  
    98  func (o *LabelDescriptor) Merge(source *LabelDescriptor) {
    99  	o.Key = source.GetKey()
   100  	o.ValueType = source.GetValueType()
   101  	o.Description = source.GetDescription()
   102  	o.DefaultValue = source.GetDefaultValue()
   103  	o.Disabled = source.GetDisabled()
   104  }
   105  
   106  func (o *LabelDescriptor) MergeRaw(source gotenobject.GotenObjectExt) {
   107  	o.Merge(source.(*LabelDescriptor))
   108  }
   109  
   110  func (o *LabelKeySet) GotenObjectExt() {}
   111  
   112  func (o *LabelKeySet) MakeFullFieldMask() *LabelKeySet_FieldMask {
   113  	return FullLabelKeySet_FieldMask()
   114  }
   115  
   116  func (o *LabelKeySet) MakeRawFullFieldMask() gotenobject.FieldMask {
   117  	return FullLabelKeySet_FieldMask()
   118  }
   119  
   120  func (o *LabelKeySet) MakeDiffFieldMask(other *LabelKeySet) *LabelKeySet_FieldMask {
   121  	if o == nil && other == nil {
   122  		return &LabelKeySet_FieldMask{}
   123  	}
   124  	if o == nil || other == nil {
   125  		return FullLabelKeySet_FieldMask()
   126  	}
   127  
   128  	res := &LabelKeySet_FieldMask{}
   129  
   130  	if len(o.GetLabelKeys()) == len(other.GetLabelKeys()) {
   131  		for i, lValue := range o.GetLabelKeys() {
   132  			rValue := other.GetLabelKeys()[i]
   133  			if lValue != rValue {
   134  				res.Paths = append(res.Paths, &LabelKeySet_FieldTerminalPath{selector: LabelKeySet_FieldPathSelectorLabelKeys})
   135  				break
   136  			}
   137  		}
   138  	} else {
   139  		res.Paths = append(res.Paths, &LabelKeySet_FieldTerminalPath{selector: LabelKeySet_FieldPathSelectorLabelKeys})
   140  	}
   141  	if o.GetWriteOnly() != other.GetWriteOnly() {
   142  		res.Paths = append(res.Paths, &LabelKeySet_FieldTerminalPath{selector: LabelKeySet_FieldPathSelectorWriteOnly})
   143  	}
   144  	return res
   145  }
   146  
   147  func (o *LabelKeySet) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
   148  	return o.MakeDiffFieldMask(other.(*LabelKeySet))
   149  }
   150  
   151  func (o *LabelKeySet) Clone() *LabelKeySet {
   152  	if o == nil {
   153  		return nil
   154  	}
   155  	result := &LabelKeySet{}
   156  	result.LabelKeys = make([]string, len(o.LabelKeys))
   157  	for i, sourceValue := range o.LabelKeys {
   158  		result.LabelKeys[i] = sourceValue
   159  	}
   160  	result.WriteOnly = o.WriteOnly
   161  	return result
   162  }
   163  
   164  func (o *LabelKeySet) CloneRaw() gotenobject.GotenObjectExt {
   165  	return o.Clone()
   166  }
   167  
   168  func (o *LabelKeySet) Merge(source *LabelKeySet) {
   169  	for _, sourceValue := range source.GetLabelKeys() {
   170  		exists := false
   171  		for _, currentValue := range o.LabelKeys {
   172  			if currentValue == sourceValue {
   173  				exists = true
   174  				break
   175  			}
   176  		}
   177  		if !exists {
   178  			var newDstElement string
   179  			newDstElement = sourceValue
   180  			o.LabelKeys = append(o.LabelKeys, newDstElement)
   181  		}
   182  	}
   183  
   184  	o.WriteOnly = source.GetWriteOnly()
   185  }
   186  
   187  func (o *LabelKeySet) MergeRaw(source gotenobject.GotenObjectExt) {
   188  	o.Merge(source.(*LabelKeySet))
   189  }
   190  
   191  func (o *Distribution) GotenObjectExt() {}
   192  
   193  func (o *Distribution) MakeFullFieldMask() *Distribution_FieldMask {
   194  	return FullDistribution_FieldMask()
   195  }
   196  
   197  func (o *Distribution) MakeRawFullFieldMask() gotenobject.FieldMask {
   198  	return FullDistribution_FieldMask()
   199  }
   200  
   201  func (o *Distribution) MakeDiffFieldMask(other *Distribution) *Distribution_FieldMask {
   202  	if o == nil && other == nil {
   203  		return &Distribution_FieldMask{}
   204  	}
   205  	if o == nil || other == nil {
   206  		return FullDistribution_FieldMask()
   207  	}
   208  
   209  	res := &Distribution_FieldMask{}
   210  	if o.GetCount() != other.GetCount() {
   211  		res.Paths = append(res.Paths, &Distribution_FieldTerminalPath{selector: Distribution_FieldPathSelectorCount})
   212  	}
   213  	if o.GetMean() != other.GetMean() {
   214  		res.Paths = append(res.Paths, &Distribution_FieldTerminalPath{selector: Distribution_FieldPathSelectorMean})
   215  	}
   216  	if o.GetSumOfSquaredDeviation() != other.GetSumOfSquaredDeviation() {
   217  		res.Paths = append(res.Paths, &Distribution_FieldTerminalPath{selector: Distribution_FieldPathSelectorSumOfSquaredDeviation})
   218  	}
   219  	{
   220  		subMask := o.GetRange().MakeDiffFieldMask(other.GetRange())
   221  		if subMask.IsFull() {
   222  			res.Paths = append(res.Paths, &Distribution_FieldTerminalPath{selector: Distribution_FieldPathSelectorRange})
   223  		} else {
   224  			for _, subpath := range subMask.Paths {
   225  				res.Paths = append(res.Paths, &Distribution_FieldSubPath{selector: Distribution_FieldPathSelectorRange, subPath: subpath})
   226  			}
   227  		}
   228  	}
   229  	{
   230  		subMask := o.GetBucketOptions().MakeDiffFieldMask(other.GetBucketOptions())
   231  		if subMask.IsFull() {
   232  			res.Paths = append(res.Paths, &Distribution_FieldTerminalPath{selector: Distribution_FieldPathSelectorBucketOptions})
   233  		} else {
   234  			for _, subpath := range subMask.Paths {
   235  				res.Paths = append(res.Paths, &Distribution_FieldSubPath{selector: Distribution_FieldPathSelectorBucketOptions, subPath: subpath})
   236  			}
   237  		}
   238  	}
   239  
   240  	if len(o.GetBucketCounts()) == len(other.GetBucketCounts()) {
   241  		for i, lValue := range o.GetBucketCounts() {
   242  			rValue := other.GetBucketCounts()[i]
   243  			if lValue != rValue {
   244  				res.Paths = append(res.Paths, &Distribution_FieldTerminalPath{selector: Distribution_FieldPathSelectorBucketCounts})
   245  				break
   246  			}
   247  		}
   248  	} else {
   249  		res.Paths = append(res.Paths, &Distribution_FieldTerminalPath{selector: Distribution_FieldPathSelectorBucketCounts})
   250  	}
   251  	return res
   252  }
   253  
   254  func (o *Distribution) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
   255  	return o.MakeDiffFieldMask(other.(*Distribution))
   256  }
   257  
   258  func (o *Distribution) Clone() *Distribution {
   259  	if o == nil {
   260  		return nil
   261  	}
   262  	result := &Distribution{}
   263  	result.Count = o.Count
   264  	result.Mean = o.Mean
   265  	result.SumOfSquaredDeviation = o.SumOfSquaredDeviation
   266  	result.Range = o.Range.Clone()
   267  	result.BucketOptions = o.BucketOptions.Clone()
   268  	result.BucketCounts = make([]int64, len(o.BucketCounts))
   269  	for i, sourceValue := range o.BucketCounts {
   270  		result.BucketCounts[i] = sourceValue
   271  	}
   272  	return result
   273  }
   274  
   275  func (o *Distribution) CloneRaw() gotenobject.GotenObjectExt {
   276  	return o.Clone()
   277  }
   278  
   279  func (o *Distribution) Merge(source *Distribution) {
   280  	o.Count = source.GetCount()
   281  	o.Mean = source.GetMean()
   282  	o.SumOfSquaredDeviation = source.GetSumOfSquaredDeviation()
   283  	if source.GetRange() != nil {
   284  		if o.Range == nil {
   285  			o.Range = new(Distribution_Range)
   286  		}
   287  		o.Range.Merge(source.GetRange())
   288  	}
   289  	if source.GetBucketOptions() != nil {
   290  		if o.BucketOptions == nil {
   291  			o.BucketOptions = new(Distribution_BucketOptions)
   292  		}
   293  		o.BucketOptions.Merge(source.GetBucketOptions())
   294  	}
   295  	for _, sourceValue := range source.GetBucketCounts() {
   296  		exists := false
   297  		for _, currentValue := range o.BucketCounts {
   298  			if currentValue == sourceValue {
   299  				exists = true
   300  				break
   301  			}
   302  		}
   303  		if !exists {
   304  			var newDstElement int64
   305  			newDstElement = sourceValue
   306  			o.BucketCounts = append(o.BucketCounts, newDstElement)
   307  		}
   308  	}
   309  
   310  }
   311  
   312  func (o *Distribution) MergeRaw(source gotenobject.GotenObjectExt) {
   313  	o.Merge(source.(*Distribution))
   314  }
   315  
   316  func (o *Distribution_Range) GotenObjectExt() {}
   317  
   318  func (o *Distribution_Range) MakeFullFieldMask() *Distribution_Range_FieldMask {
   319  	return FullDistribution_Range_FieldMask()
   320  }
   321  
   322  func (o *Distribution_Range) MakeRawFullFieldMask() gotenobject.FieldMask {
   323  	return FullDistribution_Range_FieldMask()
   324  }
   325  
   326  func (o *Distribution_Range) MakeDiffFieldMask(other *Distribution_Range) *Distribution_Range_FieldMask {
   327  	if o == nil && other == nil {
   328  		return &Distribution_Range_FieldMask{}
   329  	}
   330  	if o == nil || other == nil {
   331  		return FullDistribution_Range_FieldMask()
   332  	}
   333  
   334  	res := &Distribution_Range_FieldMask{}
   335  	if o.GetMin() != other.GetMin() {
   336  		res.Paths = append(res.Paths, &DistributionRange_FieldTerminalPath{selector: DistributionRange_FieldPathSelectorMin})
   337  	}
   338  	if o.GetMax() != other.GetMax() {
   339  		res.Paths = append(res.Paths, &DistributionRange_FieldTerminalPath{selector: DistributionRange_FieldPathSelectorMax})
   340  	}
   341  	return res
   342  }
   343  
   344  func (o *Distribution_Range) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
   345  	return o.MakeDiffFieldMask(other.(*Distribution_Range))
   346  }
   347  
   348  func (o *Distribution_Range) Clone() *Distribution_Range {
   349  	if o == nil {
   350  		return nil
   351  	}
   352  	result := &Distribution_Range{}
   353  	result.Min = o.Min
   354  	result.Max = o.Max
   355  	return result
   356  }
   357  
   358  func (o *Distribution_Range) CloneRaw() gotenobject.GotenObjectExt {
   359  	return o.Clone()
   360  }
   361  
   362  func (o *Distribution_Range) Merge(source *Distribution_Range) {
   363  	o.Min = source.GetMin()
   364  	o.Max = source.GetMax()
   365  }
   366  
   367  func (o *Distribution_Range) MergeRaw(source gotenobject.GotenObjectExt) {
   368  	o.Merge(source.(*Distribution_Range))
   369  }
   370  
   371  func (o *Distribution_BucketOptions) GotenObjectExt() {}
   372  
   373  func (o *Distribution_BucketOptions) MakeFullFieldMask() *Distribution_BucketOptions_FieldMask {
   374  	return FullDistribution_BucketOptions_FieldMask()
   375  }
   376  
   377  func (o *Distribution_BucketOptions) MakeRawFullFieldMask() gotenobject.FieldMask {
   378  	return FullDistribution_BucketOptions_FieldMask()
   379  }
   380  
   381  func (o *Distribution_BucketOptions) MakeDiffFieldMask(other *Distribution_BucketOptions) *Distribution_BucketOptions_FieldMask {
   382  	if o == nil && other == nil {
   383  		return &Distribution_BucketOptions_FieldMask{}
   384  	}
   385  	if o == nil || other == nil {
   386  		return FullDistribution_BucketOptions_FieldMask()
   387  	}
   388  
   389  	res := &Distribution_BucketOptions_FieldMask{}
   390  	{
   391  		_, leftSelected := o.Options.(*Distribution_BucketOptions_LinearBuckets)
   392  		_, rightSelected := other.Options.(*Distribution_BucketOptions_LinearBuckets)
   393  		if leftSelected == rightSelected {
   394  			subMask := o.GetLinearBuckets().MakeDiffFieldMask(other.GetLinearBuckets())
   395  			if subMask.IsFull() {
   396  				res.Paths = append(res.Paths, &DistributionBucketOptions_FieldTerminalPath{selector: DistributionBucketOptions_FieldPathSelectorLinearBuckets})
   397  			} else {
   398  				for _, subpath := range subMask.Paths {
   399  					res.Paths = append(res.Paths, &DistributionBucketOptions_FieldSubPath{selector: DistributionBucketOptions_FieldPathSelectorLinearBuckets, subPath: subpath})
   400  				}
   401  			}
   402  		} else {
   403  			res.Paths = append(res.Paths, &DistributionBucketOptions_FieldTerminalPath{selector: DistributionBucketOptions_FieldPathSelectorLinearBuckets})
   404  		}
   405  	}
   406  	{
   407  		_, leftSelected := o.Options.(*Distribution_BucketOptions_ExponentialBuckets)
   408  		_, rightSelected := other.Options.(*Distribution_BucketOptions_ExponentialBuckets)
   409  		if leftSelected == rightSelected {
   410  			subMask := o.GetExponentialBuckets().MakeDiffFieldMask(other.GetExponentialBuckets())
   411  			if subMask.IsFull() {
   412  				res.Paths = append(res.Paths, &DistributionBucketOptions_FieldTerminalPath{selector: DistributionBucketOptions_FieldPathSelectorExponentialBuckets})
   413  			} else {
   414  				for _, subpath := range subMask.Paths {
   415  					res.Paths = append(res.Paths, &DistributionBucketOptions_FieldSubPath{selector: DistributionBucketOptions_FieldPathSelectorExponentialBuckets, subPath: subpath})
   416  				}
   417  			}
   418  		} else {
   419  			res.Paths = append(res.Paths, &DistributionBucketOptions_FieldTerminalPath{selector: DistributionBucketOptions_FieldPathSelectorExponentialBuckets})
   420  		}
   421  	}
   422  	{
   423  		_, leftSelected := o.Options.(*Distribution_BucketOptions_ExplicitBuckets)
   424  		_, rightSelected := other.Options.(*Distribution_BucketOptions_ExplicitBuckets)
   425  		if leftSelected == rightSelected {
   426  			subMask := o.GetExplicitBuckets().MakeDiffFieldMask(other.GetExplicitBuckets())
   427  			if subMask.IsFull() {
   428  				res.Paths = append(res.Paths, &DistributionBucketOptions_FieldTerminalPath{selector: DistributionBucketOptions_FieldPathSelectorExplicitBuckets})
   429  			} else {
   430  				for _, subpath := range subMask.Paths {
   431  					res.Paths = append(res.Paths, &DistributionBucketOptions_FieldSubPath{selector: DistributionBucketOptions_FieldPathSelectorExplicitBuckets, subPath: subpath})
   432  				}
   433  			}
   434  		} else {
   435  			res.Paths = append(res.Paths, &DistributionBucketOptions_FieldTerminalPath{selector: DistributionBucketOptions_FieldPathSelectorExplicitBuckets})
   436  		}
   437  	}
   438  	{
   439  		_, leftSelected := o.Options.(*Distribution_BucketOptions_DynamicBuckets)
   440  		_, rightSelected := other.Options.(*Distribution_BucketOptions_DynamicBuckets)
   441  		if leftSelected == rightSelected {
   442  			subMask := o.GetDynamicBuckets().MakeDiffFieldMask(other.GetDynamicBuckets())
   443  			if subMask.IsFull() {
   444  				res.Paths = append(res.Paths, &DistributionBucketOptions_FieldTerminalPath{selector: DistributionBucketOptions_FieldPathSelectorDynamicBuckets})
   445  			} else {
   446  				for _, subpath := range subMask.Paths {
   447  					res.Paths = append(res.Paths, &DistributionBucketOptions_FieldSubPath{selector: DistributionBucketOptions_FieldPathSelectorDynamicBuckets, subPath: subpath})
   448  				}
   449  			}
   450  		} else {
   451  			res.Paths = append(res.Paths, &DistributionBucketOptions_FieldTerminalPath{selector: DistributionBucketOptions_FieldPathSelectorDynamicBuckets})
   452  		}
   453  	}
   454  	return res
   455  }
   456  
   457  func (o *Distribution_BucketOptions) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
   458  	return o.MakeDiffFieldMask(other.(*Distribution_BucketOptions))
   459  }
   460  
   461  func (o *Distribution_BucketOptions) Clone() *Distribution_BucketOptions {
   462  	if o == nil {
   463  		return nil
   464  	}
   465  	result := &Distribution_BucketOptions{}
   466  	if o, ok := o.Options.(*Distribution_BucketOptions_LinearBuckets); ok {
   467  		result.Options = (*Distribution_BucketOptions_LinearBuckets)(nil)
   468  		if o != nil {
   469  			result.Options = &Distribution_BucketOptions_LinearBuckets{}
   470  			result := result.Options.(*Distribution_BucketOptions_LinearBuckets)
   471  			result.LinearBuckets = o.LinearBuckets.Clone()
   472  		}
   473  	}
   474  	if o, ok := o.Options.(*Distribution_BucketOptions_ExponentialBuckets); ok {
   475  		result.Options = (*Distribution_BucketOptions_ExponentialBuckets)(nil)
   476  		if o != nil {
   477  			result.Options = &Distribution_BucketOptions_ExponentialBuckets{}
   478  			result := result.Options.(*Distribution_BucketOptions_ExponentialBuckets)
   479  			result.ExponentialBuckets = o.ExponentialBuckets.Clone()
   480  		}
   481  	}
   482  	if o, ok := o.Options.(*Distribution_BucketOptions_ExplicitBuckets); ok {
   483  		result.Options = (*Distribution_BucketOptions_ExplicitBuckets)(nil)
   484  		if o != nil {
   485  			result.Options = &Distribution_BucketOptions_ExplicitBuckets{}
   486  			result := result.Options.(*Distribution_BucketOptions_ExplicitBuckets)
   487  			result.ExplicitBuckets = o.ExplicitBuckets.Clone()
   488  		}
   489  	}
   490  	if o, ok := o.Options.(*Distribution_BucketOptions_DynamicBuckets); ok {
   491  		result.Options = (*Distribution_BucketOptions_DynamicBuckets)(nil)
   492  		if o != nil {
   493  			result.Options = &Distribution_BucketOptions_DynamicBuckets{}
   494  			result := result.Options.(*Distribution_BucketOptions_DynamicBuckets)
   495  			result.DynamicBuckets = o.DynamicBuckets.Clone()
   496  		}
   497  	}
   498  	return result
   499  }
   500  
   501  func (o *Distribution_BucketOptions) CloneRaw() gotenobject.GotenObjectExt {
   502  	return o.Clone()
   503  }
   504  
   505  func (o *Distribution_BucketOptions) Merge(source *Distribution_BucketOptions) {
   506  	if source, ok := source.GetOptions().(*Distribution_BucketOptions_LinearBuckets); ok {
   507  		if dstOneOf, ok := o.Options.(*Distribution_BucketOptions_LinearBuckets); !ok || dstOneOf == nil {
   508  			o.Options = &Distribution_BucketOptions_LinearBuckets{}
   509  		}
   510  		if source != nil {
   511  			o := o.Options.(*Distribution_BucketOptions_LinearBuckets)
   512  			if source.LinearBuckets != nil {
   513  				if o.LinearBuckets == nil {
   514  					o.LinearBuckets = new(Distribution_BucketOptions_Linear)
   515  				}
   516  				o.LinearBuckets.Merge(source.LinearBuckets)
   517  			}
   518  		}
   519  	}
   520  	if source, ok := source.GetOptions().(*Distribution_BucketOptions_ExponentialBuckets); ok {
   521  		if dstOneOf, ok := o.Options.(*Distribution_BucketOptions_ExponentialBuckets); !ok || dstOneOf == nil {
   522  			o.Options = &Distribution_BucketOptions_ExponentialBuckets{}
   523  		}
   524  		if source != nil {
   525  			o := o.Options.(*Distribution_BucketOptions_ExponentialBuckets)
   526  			if source.ExponentialBuckets != nil {
   527  				if o.ExponentialBuckets == nil {
   528  					o.ExponentialBuckets = new(Distribution_BucketOptions_Exponential)
   529  				}
   530  				o.ExponentialBuckets.Merge(source.ExponentialBuckets)
   531  			}
   532  		}
   533  	}
   534  	if source, ok := source.GetOptions().(*Distribution_BucketOptions_ExplicitBuckets); ok {
   535  		if dstOneOf, ok := o.Options.(*Distribution_BucketOptions_ExplicitBuckets); !ok || dstOneOf == nil {
   536  			o.Options = &Distribution_BucketOptions_ExplicitBuckets{}
   537  		}
   538  		if source != nil {
   539  			o := o.Options.(*Distribution_BucketOptions_ExplicitBuckets)
   540  			if source.ExplicitBuckets != nil {
   541  				if o.ExplicitBuckets == nil {
   542  					o.ExplicitBuckets = new(Distribution_BucketOptions_Explicit)
   543  				}
   544  				o.ExplicitBuckets.Merge(source.ExplicitBuckets)
   545  			}
   546  		}
   547  	}
   548  	if source, ok := source.GetOptions().(*Distribution_BucketOptions_DynamicBuckets); ok {
   549  		if dstOneOf, ok := o.Options.(*Distribution_BucketOptions_DynamicBuckets); !ok || dstOneOf == nil {
   550  			o.Options = &Distribution_BucketOptions_DynamicBuckets{}
   551  		}
   552  		if source != nil {
   553  			o := o.Options.(*Distribution_BucketOptions_DynamicBuckets)
   554  			if source.DynamicBuckets != nil {
   555  				if o.DynamicBuckets == nil {
   556  					o.DynamicBuckets = new(Distribution_BucketOptions_Dynamic)
   557  				}
   558  				o.DynamicBuckets.Merge(source.DynamicBuckets)
   559  			}
   560  		}
   561  	}
   562  }
   563  
   564  func (o *Distribution_BucketOptions) MergeRaw(source gotenobject.GotenObjectExt) {
   565  	o.Merge(source.(*Distribution_BucketOptions))
   566  }
   567  
   568  func (o *Distribution_BucketOptions_Linear) GotenObjectExt() {}
   569  
   570  func (o *Distribution_BucketOptions_Linear) MakeFullFieldMask() *Distribution_BucketOptions_Linear_FieldMask {
   571  	return FullDistribution_BucketOptions_Linear_FieldMask()
   572  }
   573  
   574  func (o *Distribution_BucketOptions_Linear) MakeRawFullFieldMask() gotenobject.FieldMask {
   575  	return FullDistribution_BucketOptions_Linear_FieldMask()
   576  }
   577  
   578  func (o *Distribution_BucketOptions_Linear) MakeDiffFieldMask(other *Distribution_BucketOptions_Linear) *Distribution_BucketOptions_Linear_FieldMask {
   579  	if o == nil && other == nil {
   580  		return &Distribution_BucketOptions_Linear_FieldMask{}
   581  	}
   582  	if o == nil || other == nil {
   583  		return FullDistribution_BucketOptions_Linear_FieldMask()
   584  	}
   585  
   586  	res := &Distribution_BucketOptions_Linear_FieldMask{}
   587  	if o.GetNumFiniteBuckets() != other.GetNumFiniteBuckets() {
   588  		res.Paths = append(res.Paths, &DistributionBucketOptionsLinear_FieldTerminalPath{selector: DistributionBucketOptionsLinear_FieldPathSelectorNumFiniteBuckets})
   589  	}
   590  	if o.GetWidth() != other.GetWidth() {
   591  		res.Paths = append(res.Paths, &DistributionBucketOptionsLinear_FieldTerminalPath{selector: DistributionBucketOptionsLinear_FieldPathSelectorWidth})
   592  	}
   593  	if o.GetOffset() != other.GetOffset() {
   594  		res.Paths = append(res.Paths, &DistributionBucketOptionsLinear_FieldTerminalPath{selector: DistributionBucketOptionsLinear_FieldPathSelectorOffset})
   595  	}
   596  	return res
   597  }
   598  
   599  func (o *Distribution_BucketOptions_Linear) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
   600  	return o.MakeDiffFieldMask(other.(*Distribution_BucketOptions_Linear))
   601  }
   602  
   603  func (o *Distribution_BucketOptions_Linear) Clone() *Distribution_BucketOptions_Linear {
   604  	if o == nil {
   605  		return nil
   606  	}
   607  	result := &Distribution_BucketOptions_Linear{}
   608  	result.NumFiniteBuckets = o.NumFiniteBuckets
   609  	result.Width = o.Width
   610  	result.Offset = o.Offset
   611  	return result
   612  }
   613  
   614  func (o *Distribution_BucketOptions_Linear) CloneRaw() gotenobject.GotenObjectExt {
   615  	return o.Clone()
   616  }
   617  
   618  func (o *Distribution_BucketOptions_Linear) Merge(source *Distribution_BucketOptions_Linear) {
   619  	o.NumFiniteBuckets = source.GetNumFiniteBuckets()
   620  	o.Width = source.GetWidth()
   621  	o.Offset = source.GetOffset()
   622  }
   623  
   624  func (o *Distribution_BucketOptions_Linear) MergeRaw(source gotenobject.GotenObjectExt) {
   625  	o.Merge(source.(*Distribution_BucketOptions_Linear))
   626  }
   627  
   628  func (o *Distribution_BucketOptions_Exponential) GotenObjectExt() {}
   629  
   630  func (o *Distribution_BucketOptions_Exponential) MakeFullFieldMask() *Distribution_BucketOptions_Exponential_FieldMask {
   631  	return FullDistribution_BucketOptions_Exponential_FieldMask()
   632  }
   633  
   634  func (o *Distribution_BucketOptions_Exponential) MakeRawFullFieldMask() gotenobject.FieldMask {
   635  	return FullDistribution_BucketOptions_Exponential_FieldMask()
   636  }
   637  
   638  func (o *Distribution_BucketOptions_Exponential) MakeDiffFieldMask(other *Distribution_BucketOptions_Exponential) *Distribution_BucketOptions_Exponential_FieldMask {
   639  	if o == nil && other == nil {
   640  		return &Distribution_BucketOptions_Exponential_FieldMask{}
   641  	}
   642  	if o == nil || other == nil {
   643  		return FullDistribution_BucketOptions_Exponential_FieldMask()
   644  	}
   645  
   646  	res := &Distribution_BucketOptions_Exponential_FieldMask{}
   647  	if o.GetNumFiniteBuckets() != other.GetNumFiniteBuckets() {
   648  		res.Paths = append(res.Paths, &DistributionBucketOptionsExponential_FieldTerminalPath{selector: DistributionBucketOptionsExponential_FieldPathSelectorNumFiniteBuckets})
   649  	}
   650  	if o.GetGrowthFactor() != other.GetGrowthFactor() {
   651  		res.Paths = append(res.Paths, &DistributionBucketOptionsExponential_FieldTerminalPath{selector: DistributionBucketOptionsExponential_FieldPathSelectorGrowthFactor})
   652  	}
   653  	if o.GetScale() != other.GetScale() {
   654  		res.Paths = append(res.Paths, &DistributionBucketOptionsExponential_FieldTerminalPath{selector: DistributionBucketOptionsExponential_FieldPathSelectorScale})
   655  	}
   656  	return res
   657  }
   658  
   659  func (o *Distribution_BucketOptions_Exponential) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
   660  	return o.MakeDiffFieldMask(other.(*Distribution_BucketOptions_Exponential))
   661  }
   662  
   663  func (o *Distribution_BucketOptions_Exponential) Clone() *Distribution_BucketOptions_Exponential {
   664  	if o == nil {
   665  		return nil
   666  	}
   667  	result := &Distribution_BucketOptions_Exponential{}
   668  	result.NumFiniteBuckets = o.NumFiniteBuckets
   669  	result.GrowthFactor = o.GrowthFactor
   670  	result.Scale = o.Scale
   671  	return result
   672  }
   673  
   674  func (o *Distribution_BucketOptions_Exponential) CloneRaw() gotenobject.GotenObjectExt {
   675  	return o.Clone()
   676  }
   677  
   678  func (o *Distribution_BucketOptions_Exponential) Merge(source *Distribution_BucketOptions_Exponential) {
   679  	o.NumFiniteBuckets = source.GetNumFiniteBuckets()
   680  	o.GrowthFactor = source.GetGrowthFactor()
   681  	o.Scale = source.GetScale()
   682  }
   683  
   684  func (o *Distribution_BucketOptions_Exponential) MergeRaw(source gotenobject.GotenObjectExt) {
   685  	o.Merge(source.(*Distribution_BucketOptions_Exponential))
   686  }
   687  
   688  func (o *Distribution_BucketOptions_Explicit) GotenObjectExt() {}
   689  
   690  func (o *Distribution_BucketOptions_Explicit) MakeFullFieldMask() *Distribution_BucketOptions_Explicit_FieldMask {
   691  	return FullDistribution_BucketOptions_Explicit_FieldMask()
   692  }
   693  
   694  func (o *Distribution_BucketOptions_Explicit) MakeRawFullFieldMask() gotenobject.FieldMask {
   695  	return FullDistribution_BucketOptions_Explicit_FieldMask()
   696  }
   697  
   698  func (o *Distribution_BucketOptions_Explicit) MakeDiffFieldMask(other *Distribution_BucketOptions_Explicit) *Distribution_BucketOptions_Explicit_FieldMask {
   699  	if o == nil && other == nil {
   700  		return &Distribution_BucketOptions_Explicit_FieldMask{}
   701  	}
   702  	if o == nil || other == nil {
   703  		return FullDistribution_BucketOptions_Explicit_FieldMask()
   704  	}
   705  
   706  	res := &Distribution_BucketOptions_Explicit_FieldMask{}
   707  
   708  	if len(o.GetBounds()) == len(other.GetBounds()) {
   709  		for i, lValue := range o.GetBounds() {
   710  			rValue := other.GetBounds()[i]
   711  			if lValue != rValue {
   712  				res.Paths = append(res.Paths, &DistributionBucketOptionsExplicit_FieldTerminalPath{selector: DistributionBucketOptionsExplicit_FieldPathSelectorBounds})
   713  				break
   714  			}
   715  		}
   716  	} else {
   717  		res.Paths = append(res.Paths, &DistributionBucketOptionsExplicit_FieldTerminalPath{selector: DistributionBucketOptionsExplicit_FieldPathSelectorBounds})
   718  	}
   719  	return res
   720  }
   721  
   722  func (o *Distribution_BucketOptions_Explicit) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
   723  	return o.MakeDiffFieldMask(other.(*Distribution_BucketOptions_Explicit))
   724  }
   725  
   726  func (o *Distribution_BucketOptions_Explicit) Clone() *Distribution_BucketOptions_Explicit {
   727  	if o == nil {
   728  		return nil
   729  	}
   730  	result := &Distribution_BucketOptions_Explicit{}
   731  	result.Bounds = make([]float64, len(o.Bounds))
   732  	for i, sourceValue := range o.Bounds {
   733  		result.Bounds[i] = sourceValue
   734  	}
   735  	return result
   736  }
   737  
   738  func (o *Distribution_BucketOptions_Explicit) CloneRaw() gotenobject.GotenObjectExt {
   739  	return o.Clone()
   740  }
   741  
   742  func (o *Distribution_BucketOptions_Explicit) Merge(source *Distribution_BucketOptions_Explicit) {
   743  	for _, sourceValue := range source.GetBounds() {
   744  		exists := false
   745  		for _, currentValue := range o.Bounds {
   746  			if currentValue == sourceValue {
   747  				exists = true
   748  				break
   749  			}
   750  		}
   751  		if !exists {
   752  			var newDstElement float64
   753  			newDstElement = sourceValue
   754  			o.Bounds = append(o.Bounds, newDstElement)
   755  		}
   756  	}
   757  
   758  }
   759  
   760  func (o *Distribution_BucketOptions_Explicit) MergeRaw(source gotenobject.GotenObjectExt) {
   761  	o.Merge(source.(*Distribution_BucketOptions_Explicit))
   762  }
   763  
   764  func (o *Distribution_BucketOptions_Dynamic) GotenObjectExt() {}
   765  
   766  func (o *Distribution_BucketOptions_Dynamic) MakeFullFieldMask() *Distribution_BucketOptions_Dynamic_FieldMask {
   767  	return FullDistribution_BucketOptions_Dynamic_FieldMask()
   768  }
   769  
   770  func (o *Distribution_BucketOptions_Dynamic) MakeRawFullFieldMask() gotenobject.FieldMask {
   771  	return FullDistribution_BucketOptions_Dynamic_FieldMask()
   772  }
   773  
   774  func (o *Distribution_BucketOptions_Dynamic) MakeDiffFieldMask(other *Distribution_BucketOptions_Dynamic) *Distribution_BucketOptions_Dynamic_FieldMask {
   775  	if o == nil && other == nil {
   776  		return &Distribution_BucketOptions_Dynamic_FieldMask{}
   777  	}
   778  	if o == nil || other == nil {
   779  		return FullDistribution_BucketOptions_Dynamic_FieldMask()
   780  	}
   781  
   782  	res := &Distribution_BucketOptions_Dynamic_FieldMask{}
   783  	if o.GetCompression() != other.GetCompression() {
   784  		res.Paths = append(res.Paths, &DistributionBucketOptionsDynamic_FieldTerminalPath{selector: DistributionBucketOptionsDynamic_FieldPathSelectorCompression})
   785  	}
   786  
   787  	if len(o.GetMeans()) == len(other.GetMeans()) {
   788  		for i, lValue := range o.GetMeans() {
   789  			rValue := other.GetMeans()[i]
   790  			if lValue != rValue {
   791  				res.Paths = append(res.Paths, &DistributionBucketOptionsDynamic_FieldTerminalPath{selector: DistributionBucketOptionsDynamic_FieldPathSelectorMeans})
   792  				break
   793  			}
   794  		}
   795  	} else {
   796  		res.Paths = append(res.Paths, &DistributionBucketOptionsDynamic_FieldTerminalPath{selector: DistributionBucketOptionsDynamic_FieldPathSelectorMeans})
   797  	}
   798  	return res
   799  }
   800  
   801  func (o *Distribution_BucketOptions_Dynamic) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
   802  	return o.MakeDiffFieldMask(other.(*Distribution_BucketOptions_Dynamic))
   803  }
   804  
   805  func (o *Distribution_BucketOptions_Dynamic) Clone() *Distribution_BucketOptions_Dynamic {
   806  	if o == nil {
   807  		return nil
   808  	}
   809  	result := &Distribution_BucketOptions_Dynamic{}
   810  	result.Compression = o.Compression
   811  	result.Means = make([]float64, len(o.Means))
   812  	for i, sourceValue := range o.Means {
   813  		result.Means[i] = sourceValue
   814  	}
   815  	return result
   816  }
   817  
   818  func (o *Distribution_BucketOptions_Dynamic) CloneRaw() gotenobject.GotenObjectExt {
   819  	return o.Clone()
   820  }
   821  
   822  func (o *Distribution_BucketOptions_Dynamic) Merge(source *Distribution_BucketOptions_Dynamic) {
   823  	o.Compression = source.GetCompression()
   824  	for _, sourceValue := range source.GetMeans() {
   825  		exists := false
   826  		for _, currentValue := range o.Means {
   827  			if currentValue == sourceValue {
   828  				exists = true
   829  				break
   830  			}
   831  		}
   832  		if !exists {
   833  			var newDstElement float64
   834  			newDstElement = sourceValue
   835  			o.Means = append(o.Means, newDstElement)
   836  		}
   837  	}
   838  
   839  }
   840  
   841  func (o *Distribution_BucketOptions_Dynamic) MergeRaw(source gotenobject.GotenObjectExt) {
   842  	o.Merge(source.(*Distribution_BucketOptions_Dynamic))
   843  }
   844  
   845  func (o *TypedValue) GotenObjectExt() {}
   846  
   847  func (o *TypedValue) MakeFullFieldMask() *TypedValue_FieldMask {
   848  	return FullTypedValue_FieldMask()
   849  }
   850  
   851  func (o *TypedValue) MakeRawFullFieldMask() gotenobject.FieldMask {
   852  	return FullTypedValue_FieldMask()
   853  }
   854  
   855  func (o *TypedValue) MakeDiffFieldMask(other *TypedValue) *TypedValue_FieldMask {
   856  	if o == nil && other == nil {
   857  		return &TypedValue_FieldMask{}
   858  	}
   859  	if o == nil || other == nil {
   860  		return FullTypedValue_FieldMask()
   861  	}
   862  
   863  	res := &TypedValue_FieldMask{}
   864  	{
   865  		_, leftSelected := o.Value.(*TypedValue_BoolValue)
   866  		_, rightSelected := other.Value.(*TypedValue_BoolValue)
   867  		if leftSelected == rightSelected {
   868  			if o.GetBoolValue() != other.GetBoolValue() {
   869  				res.Paths = append(res.Paths, &TypedValue_FieldTerminalPath{selector: TypedValue_FieldPathSelectorBoolValue})
   870  			}
   871  		} else {
   872  			res.Paths = append(res.Paths, &TypedValue_FieldTerminalPath{selector: TypedValue_FieldPathSelectorBoolValue})
   873  		}
   874  	}
   875  	{
   876  		_, leftSelected := o.Value.(*TypedValue_Int64Value)
   877  		_, rightSelected := other.Value.(*TypedValue_Int64Value)
   878  		if leftSelected == rightSelected {
   879  			if o.GetInt64Value() != other.GetInt64Value() {
   880  				res.Paths = append(res.Paths, &TypedValue_FieldTerminalPath{selector: TypedValue_FieldPathSelectorInt64Value})
   881  			}
   882  		} else {
   883  			res.Paths = append(res.Paths, &TypedValue_FieldTerminalPath{selector: TypedValue_FieldPathSelectorInt64Value})
   884  		}
   885  	}
   886  	{
   887  		_, leftSelected := o.Value.(*TypedValue_DoubleValue)
   888  		_, rightSelected := other.Value.(*TypedValue_DoubleValue)
   889  		if leftSelected == rightSelected {
   890  			if o.GetDoubleValue() != other.GetDoubleValue() {
   891  				res.Paths = append(res.Paths, &TypedValue_FieldTerminalPath{selector: TypedValue_FieldPathSelectorDoubleValue})
   892  			}
   893  		} else {
   894  			res.Paths = append(res.Paths, &TypedValue_FieldTerminalPath{selector: TypedValue_FieldPathSelectorDoubleValue})
   895  		}
   896  	}
   897  	{
   898  		_, leftSelected := o.Value.(*TypedValue_StringValue)
   899  		_, rightSelected := other.Value.(*TypedValue_StringValue)
   900  		if leftSelected == rightSelected {
   901  			if o.GetStringValue() != other.GetStringValue() {
   902  				res.Paths = append(res.Paths, &TypedValue_FieldTerminalPath{selector: TypedValue_FieldPathSelectorStringValue})
   903  			}
   904  		} else {
   905  			res.Paths = append(res.Paths, &TypedValue_FieldTerminalPath{selector: TypedValue_FieldPathSelectorStringValue})
   906  		}
   907  	}
   908  	{
   909  		_, leftSelected := o.Value.(*TypedValue_DistributionValue)
   910  		_, rightSelected := other.Value.(*TypedValue_DistributionValue)
   911  		if leftSelected == rightSelected {
   912  			subMask := o.GetDistributionValue().MakeDiffFieldMask(other.GetDistributionValue())
   913  			if subMask.IsFull() {
   914  				res.Paths = append(res.Paths, &TypedValue_FieldTerminalPath{selector: TypedValue_FieldPathSelectorDistributionValue})
   915  			} else {
   916  				for _, subpath := range subMask.Paths {
   917  					res.Paths = append(res.Paths, &TypedValue_FieldSubPath{selector: TypedValue_FieldPathSelectorDistributionValue, subPath: subpath})
   918  				}
   919  			}
   920  		} else {
   921  			res.Paths = append(res.Paths, &TypedValue_FieldTerminalPath{selector: TypedValue_FieldPathSelectorDistributionValue})
   922  		}
   923  	}
   924  	return res
   925  }
   926  
   927  func (o *TypedValue) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
   928  	return o.MakeDiffFieldMask(other.(*TypedValue))
   929  }
   930  
   931  func (o *TypedValue) Clone() *TypedValue {
   932  	if o == nil {
   933  		return nil
   934  	}
   935  	result := &TypedValue{}
   936  	if o, ok := o.Value.(*TypedValue_BoolValue); ok {
   937  		result.Value = (*TypedValue_BoolValue)(nil)
   938  		if o != nil {
   939  			result.Value = &TypedValue_BoolValue{}
   940  			result := result.Value.(*TypedValue_BoolValue)
   941  			result.BoolValue = o.BoolValue
   942  		}
   943  	}
   944  	if o, ok := o.Value.(*TypedValue_Int64Value); ok {
   945  		result.Value = (*TypedValue_Int64Value)(nil)
   946  		if o != nil {
   947  			result.Value = &TypedValue_Int64Value{}
   948  			result := result.Value.(*TypedValue_Int64Value)
   949  			result.Int64Value = o.Int64Value
   950  		}
   951  	}
   952  	if o, ok := o.Value.(*TypedValue_DoubleValue); ok {
   953  		result.Value = (*TypedValue_DoubleValue)(nil)
   954  		if o != nil {
   955  			result.Value = &TypedValue_DoubleValue{}
   956  			result := result.Value.(*TypedValue_DoubleValue)
   957  			result.DoubleValue = o.DoubleValue
   958  		}
   959  	}
   960  	if o, ok := o.Value.(*TypedValue_StringValue); ok {
   961  		result.Value = (*TypedValue_StringValue)(nil)
   962  		if o != nil {
   963  			result.Value = &TypedValue_StringValue{}
   964  			result := result.Value.(*TypedValue_StringValue)
   965  			result.StringValue = o.StringValue
   966  		}
   967  	}
   968  	if o, ok := o.Value.(*TypedValue_DistributionValue); ok {
   969  		result.Value = (*TypedValue_DistributionValue)(nil)
   970  		if o != nil {
   971  			result.Value = &TypedValue_DistributionValue{}
   972  			result := result.Value.(*TypedValue_DistributionValue)
   973  			result.DistributionValue = o.DistributionValue.Clone()
   974  		}
   975  	}
   976  	return result
   977  }
   978  
   979  func (o *TypedValue) CloneRaw() gotenobject.GotenObjectExt {
   980  	return o.Clone()
   981  }
   982  
   983  func (o *TypedValue) Merge(source *TypedValue) {
   984  	if source, ok := source.GetValue().(*TypedValue_BoolValue); ok {
   985  		if dstOneOf, ok := o.Value.(*TypedValue_BoolValue); !ok || dstOneOf == nil {
   986  			o.Value = &TypedValue_BoolValue{}
   987  		}
   988  		if source != nil {
   989  			o := o.Value.(*TypedValue_BoolValue)
   990  			o.BoolValue = source.BoolValue
   991  		}
   992  	}
   993  	if source, ok := source.GetValue().(*TypedValue_Int64Value); ok {
   994  		if dstOneOf, ok := o.Value.(*TypedValue_Int64Value); !ok || dstOneOf == nil {
   995  			o.Value = &TypedValue_Int64Value{}
   996  		}
   997  		if source != nil {
   998  			o := o.Value.(*TypedValue_Int64Value)
   999  			o.Int64Value = source.Int64Value
  1000  		}
  1001  	}
  1002  	if source, ok := source.GetValue().(*TypedValue_DoubleValue); ok {
  1003  		if dstOneOf, ok := o.Value.(*TypedValue_DoubleValue); !ok || dstOneOf == nil {
  1004  			o.Value = &TypedValue_DoubleValue{}
  1005  		}
  1006  		if source != nil {
  1007  			o := o.Value.(*TypedValue_DoubleValue)
  1008  			o.DoubleValue = source.DoubleValue
  1009  		}
  1010  	}
  1011  	if source, ok := source.GetValue().(*TypedValue_StringValue); ok {
  1012  		if dstOneOf, ok := o.Value.(*TypedValue_StringValue); !ok || dstOneOf == nil {
  1013  			o.Value = &TypedValue_StringValue{}
  1014  		}
  1015  		if source != nil {
  1016  			o := o.Value.(*TypedValue_StringValue)
  1017  			o.StringValue = source.StringValue
  1018  		}
  1019  	}
  1020  	if source, ok := source.GetValue().(*TypedValue_DistributionValue); ok {
  1021  		if dstOneOf, ok := o.Value.(*TypedValue_DistributionValue); !ok || dstOneOf == nil {
  1022  			o.Value = &TypedValue_DistributionValue{}
  1023  		}
  1024  		if source != nil {
  1025  			o := o.Value.(*TypedValue_DistributionValue)
  1026  			if source.DistributionValue != nil {
  1027  				if o.DistributionValue == nil {
  1028  					o.DistributionValue = new(Distribution)
  1029  				}
  1030  				o.DistributionValue.Merge(source.DistributionValue)
  1031  			}
  1032  		}
  1033  	}
  1034  }
  1035  
  1036  func (o *TypedValue) MergeRaw(source gotenobject.GotenObjectExt) {
  1037  	o.Merge(source.(*TypedValue))
  1038  }
  1039  
  1040  func (o *TimeInterval) GotenObjectExt() {}
  1041  
  1042  func (o *TimeInterval) MakeFullFieldMask() *TimeInterval_FieldMask {
  1043  	return FullTimeInterval_FieldMask()
  1044  }
  1045  
  1046  func (o *TimeInterval) MakeRawFullFieldMask() gotenobject.FieldMask {
  1047  	return FullTimeInterval_FieldMask()
  1048  }
  1049  
  1050  func (o *TimeInterval) MakeDiffFieldMask(other *TimeInterval) *TimeInterval_FieldMask {
  1051  	if o == nil && other == nil {
  1052  		return &TimeInterval_FieldMask{}
  1053  	}
  1054  	if o == nil || other == nil {
  1055  		return FullTimeInterval_FieldMask()
  1056  	}
  1057  
  1058  	res := &TimeInterval_FieldMask{}
  1059  	if !proto.Equal(o.GetEndTime(), other.GetEndTime()) {
  1060  		res.Paths = append(res.Paths, &TimeInterval_FieldTerminalPath{selector: TimeInterval_FieldPathSelectorEndTime})
  1061  	}
  1062  	if !proto.Equal(o.GetStartTime(), other.GetStartTime()) {
  1063  		res.Paths = append(res.Paths, &TimeInterval_FieldTerminalPath{selector: TimeInterval_FieldPathSelectorStartTime})
  1064  	}
  1065  	return res
  1066  }
  1067  
  1068  func (o *TimeInterval) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
  1069  	return o.MakeDiffFieldMask(other.(*TimeInterval))
  1070  }
  1071  
  1072  func (o *TimeInterval) Clone() *TimeInterval {
  1073  	if o == nil {
  1074  		return nil
  1075  	}
  1076  	result := &TimeInterval{}
  1077  	result.EndTime = proto.Clone(o.EndTime).(*timestamppb.Timestamp)
  1078  	result.StartTime = proto.Clone(o.StartTime).(*timestamppb.Timestamp)
  1079  	return result
  1080  }
  1081  
  1082  func (o *TimeInterval) CloneRaw() gotenobject.GotenObjectExt {
  1083  	return o.Clone()
  1084  }
  1085  
  1086  func (o *TimeInterval) Merge(source *TimeInterval) {
  1087  	if source.GetEndTime() != nil {
  1088  		if o.EndTime == nil {
  1089  			o.EndTime = new(timestamppb.Timestamp)
  1090  		}
  1091  		proto.Merge(o.EndTime, source.GetEndTime())
  1092  	}
  1093  	if source.GetStartTime() != nil {
  1094  		if o.StartTime == nil {
  1095  			o.StartTime = new(timestamppb.Timestamp)
  1096  		}
  1097  		proto.Merge(o.StartTime, source.GetStartTime())
  1098  	}
  1099  }
  1100  
  1101  func (o *TimeInterval) MergeRaw(source gotenobject.GotenObjectExt) {
  1102  	o.Merge(source.(*TimeInterval))
  1103  }
  1104  
  1105  func (o *TimeRange) GotenObjectExt() {}
  1106  
  1107  func (o *TimeRange) MakeFullFieldMask() *TimeRange_FieldMask {
  1108  	return FullTimeRange_FieldMask()
  1109  }
  1110  
  1111  func (o *TimeRange) MakeRawFullFieldMask() gotenobject.FieldMask {
  1112  	return FullTimeRange_FieldMask()
  1113  }
  1114  
  1115  func (o *TimeRange) MakeDiffFieldMask(other *TimeRange) *TimeRange_FieldMask {
  1116  	if o == nil && other == nil {
  1117  		return &TimeRange_FieldMask{}
  1118  	}
  1119  	if o == nil || other == nil {
  1120  		return FullTimeRange_FieldMask()
  1121  	}
  1122  
  1123  	res := &TimeRange_FieldMask{}
  1124  	if !proto.Equal(o.GetStartTime(), other.GetStartTime()) {
  1125  		res.Paths = append(res.Paths, &TimeRange_FieldTerminalPath{selector: TimeRange_FieldPathSelectorStartTime})
  1126  	}
  1127  	if !proto.Equal(o.GetEndTime(), other.GetEndTime()) {
  1128  		res.Paths = append(res.Paths, &TimeRange_FieldTerminalPath{selector: TimeRange_FieldPathSelectorEndTime})
  1129  	}
  1130  	return res
  1131  }
  1132  
  1133  func (o *TimeRange) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
  1134  	return o.MakeDiffFieldMask(other.(*TimeRange))
  1135  }
  1136  
  1137  func (o *TimeRange) Clone() *TimeRange {
  1138  	if o == nil {
  1139  		return nil
  1140  	}
  1141  	result := &TimeRange{}
  1142  	result.StartTime = proto.Clone(o.StartTime).(*timestamppb.Timestamp)
  1143  	result.EndTime = proto.Clone(o.EndTime).(*timestamppb.Timestamp)
  1144  	return result
  1145  }
  1146  
  1147  func (o *TimeRange) CloneRaw() gotenobject.GotenObjectExt {
  1148  	return o.Clone()
  1149  }
  1150  
  1151  func (o *TimeRange) Merge(source *TimeRange) {
  1152  	if source.GetStartTime() != nil {
  1153  		if o.StartTime == nil {
  1154  			o.StartTime = new(timestamppb.Timestamp)
  1155  		}
  1156  		proto.Merge(o.StartTime, source.GetStartTime())
  1157  	}
  1158  	if source.GetEndTime() != nil {
  1159  		if o.EndTime == nil {
  1160  			o.EndTime = new(timestamppb.Timestamp)
  1161  		}
  1162  		proto.Merge(o.EndTime, source.GetEndTime())
  1163  	}
  1164  }
  1165  
  1166  func (o *TimeRange) MergeRaw(source gotenobject.GotenObjectExt) {
  1167  	o.Merge(source.(*TimeRange))
  1168  }
  1169  
  1170  func (o *Aggregation) GotenObjectExt() {}
  1171  
  1172  func (o *Aggregation) MakeFullFieldMask() *Aggregation_FieldMask {
  1173  	return FullAggregation_FieldMask()
  1174  }
  1175  
  1176  func (o *Aggregation) MakeRawFullFieldMask() gotenobject.FieldMask {
  1177  	return FullAggregation_FieldMask()
  1178  }
  1179  
  1180  func (o *Aggregation) MakeDiffFieldMask(other *Aggregation) *Aggregation_FieldMask {
  1181  	if o == nil && other == nil {
  1182  		return &Aggregation_FieldMask{}
  1183  	}
  1184  	if o == nil || other == nil {
  1185  		return FullAggregation_FieldMask()
  1186  	}
  1187  
  1188  	res := &Aggregation_FieldMask{}
  1189  	if !proto.Equal(o.GetAlignmentPeriod(), other.GetAlignmentPeriod()) {
  1190  		res.Paths = append(res.Paths, &Aggregation_FieldTerminalPath{selector: Aggregation_FieldPathSelectorAlignmentPeriod})
  1191  	}
  1192  	if o.GetPerSeriesAligner() != other.GetPerSeriesAligner() {
  1193  		res.Paths = append(res.Paths, &Aggregation_FieldTerminalPath{selector: Aggregation_FieldPathSelectorPerSeriesAligner})
  1194  	}
  1195  	if o.GetCrossSeriesReducer() != other.GetCrossSeriesReducer() {
  1196  		res.Paths = append(res.Paths, &Aggregation_FieldTerminalPath{selector: Aggregation_FieldPathSelectorCrossSeriesReducer})
  1197  	}
  1198  
  1199  	if len(o.GetGroupByFields()) == len(other.GetGroupByFields()) {
  1200  		for i, lValue := range o.GetGroupByFields() {
  1201  			rValue := other.GetGroupByFields()[i]
  1202  			if lValue != rValue {
  1203  				res.Paths = append(res.Paths, &Aggregation_FieldTerminalPath{selector: Aggregation_FieldPathSelectorGroupByFields})
  1204  				break
  1205  			}
  1206  		}
  1207  	} else {
  1208  		res.Paths = append(res.Paths, &Aggregation_FieldTerminalPath{selector: Aggregation_FieldPathSelectorGroupByFields})
  1209  	}
  1210  	return res
  1211  }
  1212  
  1213  func (o *Aggregation) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
  1214  	return o.MakeDiffFieldMask(other.(*Aggregation))
  1215  }
  1216  
  1217  func (o *Aggregation) Clone() *Aggregation {
  1218  	if o == nil {
  1219  		return nil
  1220  	}
  1221  	result := &Aggregation{}
  1222  	result.AlignmentPeriod = proto.Clone(o.AlignmentPeriod).(*durationpb.Duration)
  1223  	result.PerSeriesAligner = o.PerSeriesAligner
  1224  	result.CrossSeriesReducer = o.CrossSeriesReducer
  1225  	result.GroupByFields = make([]string, len(o.GroupByFields))
  1226  	for i, sourceValue := range o.GroupByFields {
  1227  		result.GroupByFields[i] = sourceValue
  1228  	}
  1229  	return result
  1230  }
  1231  
  1232  func (o *Aggregation) CloneRaw() gotenobject.GotenObjectExt {
  1233  	return o.Clone()
  1234  }
  1235  
  1236  func (o *Aggregation) Merge(source *Aggregation) {
  1237  	if source.GetAlignmentPeriod() != nil {
  1238  		if o.AlignmentPeriod == nil {
  1239  			o.AlignmentPeriod = new(durationpb.Duration)
  1240  		}
  1241  		proto.Merge(o.AlignmentPeriod, source.GetAlignmentPeriod())
  1242  	}
  1243  	o.PerSeriesAligner = source.GetPerSeriesAligner()
  1244  	o.CrossSeriesReducer = source.GetCrossSeriesReducer()
  1245  	for _, sourceValue := range source.GetGroupByFields() {
  1246  		exists := false
  1247  		for _, currentValue := range o.GroupByFields {
  1248  			if currentValue == sourceValue {
  1249  				exists = true
  1250  				break
  1251  			}
  1252  		}
  1253  		if !exists {
  1254  			var newDstElement string
  1255  			newDstElement = sourceValue
  1256  			o.GroupByFields = append(o.GroupByFields, newDstElement)
  1257  		}
  1258  	}
  1259  
  1260  }
  1261  
  1262  func (o *Aggregation) MergeRaw(source gotenobject.GotenObjectExt) {
  1263  	o.Merge(source.(*Aggregation))
  1264  }
  1265  
  1266  func (o *Pagination) GotenObjectExt() {}
  1267  
  1268  func (o *Pagination) MakeFullFieldMask() *Pagination_FieldMask {
  1269  	return FullPagination_FieldMask()
  1270  }
  1271  
  1272  func (o *Pagination) MakeRawFullFieldMask() gotenobject.FieldMask {
  1273  	return FullPagination_FieldMask()
  1274  }
  1275  
  1276  func (o *Pagination) MakeDiffFieldMask(other *Pagination) *Pagination_FieldMask {
  1277  	if o == nil && other == nil {
  1278  		return &Pagination_FieldMask{}
  1279  	}
  1280  	if o == nil || other == nil {
  1281  		return FullPagination_FieldMask()
  1282  	}
  1283  
  1284  	res := &Pagination_FieldMask{}
  1285  	if o.GetView() != other.GetView() {
  1286  		res.Paths = append(res.Paths, &Pagination_FieldTerminalPath{selector: Pagination_FieldPathSelectorView})
  1287  	}
  1288  	if o.GetFunction() != other.GetFunction() {
  1289  		res.Paths = append(res.Paths, &Pagination_FieldTerminalPath{selector: Pagination_FieldPathSelectorFunction})
  1290  	}
  1291  	if !proto.Equal(o.GetAlignmentPeriod(), other.GetAlignmentPeriod()) {
  1292  		res.Paths = append(res.Paths, &Pagination_FieldTerminalPath{selector: Pagination_FieldPathSelectorAlignmentPeriod})
  1293  	}
  1294  	if o.GetLimit() != other.GetLimit() {
  1295  		res.Paths = append(res.Paths, &Pagination_FieldTerminalPath{selector: Pagination_FieldPathSelectorLimit})
  1296  	}
  1297  	if o.GetOffset() != other.GetOffset() {
  1298  		res.Paths = append(res.Paths, &Pagination_FieldTerminalPath{selector: Pagination_FieldPathSelectorOffset})
  1299  	}
  1300  	return res
  1301  }
  1302  
  1303  func (o *Pagination) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
  1304  	return o.MakeDiffFieldMask(other.(*Pagination))
  1305  }
  1306  
  1307  func (o *Pagination) Clone() *Pagination {
  1308  	if o == nil {
  1309  		return nil
  1310  	}
  1311  	result := &Pagination{}
  1312  	result.View = o.View
  1313  	result.Function = o.Function
  1314  	result.AlignmentPeriod = proto.Clone(o.AlignmentPeriod).(*durationpb.Duration)
  1315  	result.Limit = o.Limit
  1316  	result.Offset = o.Offset
  1317  	return result
  1318  }
  1319  
  1320  func (o *Pagination) CloneRaw() gotenobject.GotenObjectExt {
  1321  	return o.Clone()
  1322  }
  1323  
  1324  func (o *Pagination) Merge(source *Pagination) {
  1325  	o.View = source.GetView()
  1326  	o.Function = source.GetFunction()
  1327  	if source.GetAlignmentPeriod() != nil {
  1328  		if o.AlignmentPeriod == nil {
  1329  			o.AlignmentPeriod = new(durationpb.Duration)
  1330  		}
  1331  		proto.Merge(o.AlignmentPeriod, source.GetAlignmentPeriod())
  1332  	}
  1333  	o.Limit = source.GetLimit()
  1334  	o.Offset = source.GetOffset()
  1335  }
  1336  
  1337  func (o *Pagination) MergeRaw(source gotenobject.GotenObjectExt) {
  1338  	o.Merge(source.(*Pagination))
  1339  }
  1340  
  1341  func (o *Metric) GotenObjectExt() {}
  1342  
  1343  func (o *Metric) MakeFullFieldMask() *Metric_FieldMask {
  1344  	return FullMetric_FieldMask()
  1345  }
  1346  
  1347  func (o *Metric) MakeRawFullFieldMask() gotenobject.FieldMask {
  1348  	return FullMetric_FieldMask()
  1349  }
  1350  
  1351  func (o *Metric) MakeDiffFieldMask(other *Metric) *Metric_FieldMask {
  1352  	if o == nil && other == nil {
  1353  		return &Metric_FieldMask{}
  1354  	}
  1355  	if o == nil || other == nil {
  1356  		return FullMetric_FieldMask()
  1357  	}
  1358  
  1359  	res := &Metric_FieldMask{}
  1360  	if o.GetType() != other.GetType() {
  1361  		res.Paths = append(res.Paths, &Metric_FieldTerminalPath{selector: Metric_FieldPathSelectorType})
  1362  	}
  1363  
  1364  	if len(o.GetLabels()) == len(other.GetLabels()) {
  1365  		for i, lValue := range o.GetLabels() {
  1366  			rValue := other.GetLabels()[i]
  1367  			if lValue != rValue {
  1368  				res.Paths = append(res.Paths, &Metric_FieldTerminalPath{selector: Metric_FieldPathSelectorLabels})
  1369  				break
  1370  			}
  1371  		}
  1372  	} else {
  1373  		res.Paths = append(res.Paths, &Metric_FieldTerminalPath{selector: Metric_FieldPathSelectorLabels})
  1374  	}
  1375  
  1376  	if len(o.GetReducedLabels()) == len(other.GetReducedLabels()) {
  1377  		for i, lValue := range o.GetReducedLabels() {
  1378  			rValue := other.GetReducedLabels()[i]
  1379  			if lValue != rValue {
  1380  				res.Paths = append(res.Paths, &Metric_FieldTerminalPath{selector: Metric_FieldPathSelectorReducedLabels})
  1381  				break
  1382  			}
  1383  		}
  1384  	} else {
  1385  		res.Paths = append(res.Paths, &Metric_FieldTerminalPath{selector: Metric_FieldPathSelectorReducedLabels})
  1386  	}
  1387  	return res
  1388  }
  1389  
  1390  func (o *Metric) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
  1391  	return o.MakeDiffFieldMask(other.(*Metric))
  1392  }
  1393  
  1394  func (o *Metric) Clone() *Metric {
  1395  	if o == nil {
  1396  		return nil
  1397  	}
  1398  	result := &Metric{}
  1399  	result.Type = o.Type
  1400  	result.Labels = map[string]string{}
  1401  	for key, sourceValue := range o.Labels {
  1402  		result.Labels[key] = sourceValue
  1403  	}
  1404  	result.ReducedLabels = make([]string, len(o.ReducedLabels))
  1405  	for i, sourceValue := range o.ReducedLabels {
  1406  		result.ReducedLabels[i] = sourceValue
  1407  	}
  1408  	return result
  1409  }
  1410  
  1411  func (o *Metric) CloneRaw() gotenobject.GotenObjectExt {
  1412  	return o.Clone()
  1413  }
  1414  
  1415  func (o *Metric) Merge(source *Metric) {
  1416  	o.Type = source.GetType()
  1417  	if source.GetLabels() != nil {
  1418  		if o.Labels == nil {
  1419  			o.Labels = make(map[string]string, len(source.GetLabels()))
  1420  		}
  1421  		for key, sourceValue := range source.GetLabels() {
  1422  			o.Labels[key] = sourceValue
  1423  		}
  1424  	}
  1425  	for _, sourceValue := range source.GetReducedLabels() {
  1426  		exists := false
  1427  		for _, currentValue := range o.ReducedLabels {
  1428  			if currentValue == sourceValue {
  1429  				exists = true
  1430  				break
  1431  			}
  1432  		}
  1433  		if !exists {
  1434  			var newDstElement string
  1435  			newDstElement = sourceValue
  1436  			o.ReducedLabels = append(o.ReducedLabels, newDstElement)
  1437  		}
  1438  	}
  1439  
  1440  }
  1441  
  1442  func (o *Metric) MergeRaw(source gotenobject.GotenObjectExt) {
  1443  	o.Merge(source.(*Metric))
  1444  }
  1445  
  1446  func (o *MonitoredResource) GotenObjectExt() {}
  1447  
  1448  func (o *MonitoredResource) MakeFullFieldMask() *MonitoredResource_FieldMask {
  1449  	return FullMonitoredResource_FieldMask()
  1450  }
  1451  
  1452  func (o *MonitoredResource) MakeRawFullFieldMask() gotenobject.FieldMask {
  1453  	return FullMonitoredResource_FieldMask()
  1454  }
  1455  
  1456  func (o *MonitoredResource) MakeDiffFieldMask(other *MonitoredResource) *MonitoredResource_FieldMask {
  1457  	if o == nil && other == nil {
  1458  		return &MonitoredResource_FieldMask{}
  1459  	}
  1460  	if o == nil || other == nil {
  1461  		return FullMonitoredResource_FieldMask()
  1462  	}
  1463  
  1464  	res := &MonitoredResource_FieldMask{}
  1465  	if o.GetType() != other.GetType() {
  1466  		res.Paths = append(res.Paths, &MonitoredResource_FieldTerminalPath{selector: MonitoredResource_FieldPathSelectorType})
  1467  	}
  1468  
  1469  	if len(o.GetLabels()) == len(other.GetLabels()) {
  1470  		for i, lValue := range o.GetLabels() {
  1471  			rValue := other.GetLabels()[i]
  1472  			if lValue != rValue {
  1473  				res.Paths = append(res.Paths, &MonitoredResource_FieldTerminalPath{selector: MonitoredResource_FieldPathSelectorLabels})
  1474  				break
  1475  			}
  1476  		}
  1477  	} else {
  1478  		res.Paths = append(res.Paths, &MonitoredResource_FieldTerminalPath{selector: MonitoredResource_FieldPathSelectorLabels})
  1479  	}
  1480  
  1481  	if len(o.GetReducedLabels()) == len(other.GetReducedLabels()) {
  1482  		for i, lValue := range o.GetReducedLabels() {
  1483  			rValue := other.GetReducedLabels()[i]
  1484  			if lValue != rValue {
  1485  				res.Paths = append(res.Paths, &MonitoredResource_FieldTerminalPath{selector: MonitoredResource_FieldPathSelectorReducedLabels})
  1486  				break
  1487  			}
  1488  		}
  1489  	} else {
  1490  		res.Paths = append(res.Paths, &MonitoredResource_FieldTerminalPath{selector: MonitoredResource_FieldPathSelectorReducedLabels})
  1491  	}
  1492  	return res
  1493  }
  1494  
  1495  func (o *MonitoredResource) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
  1496  	return o.MakeDiffFieldMask(other.(*MonitoredResource))
  1497  }
  1498  
  1499  func (o *MonitoredResource) Clone() *MonitoredResource {
  1500  	if o == nil {
  1501  		return nil
  1502  	}
  1503  	result := &MonitoredResource{}
  1504  	result.Type = o.Type
  1505  	result.Labels = map[string]string{}
  1506  	for key, sourceValue := range o.Labels {
  1507  		result.Labels[key] = sourceValue
  1508  	}
  1509  	result.ReducedLabels = make([]string, len(o.ReducedLabels))
  1510  	for i, sourceValue := range o.ReducedLabels {
  1511  		result.ReducedLabels[i] = sourceValue
  1512  	}
  1513  	return result
  1514  }
  1515  
  1516  func (o *MonitoredResource) CloneRaw() gotenobject.GotenObjectExt {
  1517  	return o.Clone()
  1518  }
  1519  
  1520  func (o *MonitoredResource) Merge(source *MonitoredResource) {
  1521  	o.Type = source.GetType()
  1522  	if source.GetLabels() != nil {
  1523  		if o.Labels == nil {
  1524  			o.Labels = make(map[string]string, len(source.GetLabels()))
  1525  		}
  1526  		for key, sourceValue := range source.GetLabels() {
  1527  			o.Labels[key] = sourceValue
  1528  		}
  1529  	}
  1530  	for _, sourceValue := range source.GetReducedLabels() {
  1531  		exists := false
  1532  		for _, currentValue := range o.ReducedLabels {
  1533  			if currentValue == sourceValue {
  1534  				exists = true
  1535  				break
  1536  			}
  1537  		}
  1538  		if !exists {
  1539  			var newDstElement string
  1540  			newDstElement = sourceValue
  1541  			o.ReducedLabels = append(o.ReducedLabels, newDstElement)
  1542  		}
  1543  	}
  1544  
  1545  }
  1546  
  1547  func (o *MonitoredResource) MergeRaw(source gotenobject.GotenObjectExt) {
  1548  	o.Merge(source.(*MonitoredResource))
  1549  }
  1550  
  1551  func (o *Strings) GotenObjectExt() {}
  1552  
  1553  func (o *Strings) MakeFullFieldMask() *Strings_FieldMask {
  1554  	return FullStrings_FieldMask()
  1555  }
  1556  
  1557  func (o *Strings) MakeRawFullFieldMask() gotenobject.FieldMask {
  1558  	return FullStrings_FieldMask()
  1559  }
  1560  
  1561  func (o *Strings) MakeDiffFieldMask(other *Strings) *Strings_FieldMask {
  1562  	if o == nil && other == nil {
  1563  		return &Strings_FieldMask{}
  1564  	}
  1565  	if o == nil || other == nil {
  1566  		return FullStrings_FieldMask()
  1567  	}
  1568  
  1569  	res := &Strings_FieldMask{}
  1570  
  1571  	if len(o.GetValues()) == len(other.GetValues()) {
  1572  		for i, lValue := range o.GetValues() {
  1573  			rValue := other.GetValues()[i]
  1574  			if lValue != rValue {
  1575  				res.Paths = append(res.Paths, &Strings_FieldTerminalPath{selector: Strings_FieldPathSelectorValues})
  1576  				break
  1577  			}
  1578  		}
  1579  	} else {
  1580  		res.Paths = append(res.Paths, &Strings_FieldTerminalPath{selector: Strings_FieldPathSelectorValues})
  1581  	}
  1582  	return res
  1583  }
  1584  
  1585  func (o *Strings) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
  1586  	return o.MakeDiffFieldMask(other.(*Strings))
  1587  }
  1588  
  1589  func (o *Strings) Clone() *Strings {
  1590  	if o == nil {
  1591  		return nil
  1592  	}
  1593  	result := &Strings{}
  1594  	result.Values = make([]string, len(o.Values))
  1595  	for i, sourceValue := range o.Values {
  1596  		result.Values[i] = sourceValue
  1597  	}
  1598  	return result
  1599  }
  1600  
  1601  func (o *Strings) CloneRaw() gotenobject.GotenObjectExt {
  1602  	return o.Clone()
  1603  }
  1604  
  1605  func (o *Strings) Merge(source *Strings) {
  1606  	for _, sourceValue := range source.GetValues() {
  1607  		exists := false
  1608  		for _, currentValue := range o.Values {
  1609  			if currentValue == sourceValue {
  1610  				exists = true
  1611  				break
  1612  			}
  1613  		}
  1614  		if !exists {
  1615  			var newDstElement string
  1616  			newDstElement = sourceValue
  1617  			o.Values = append(o.Values, newDstElement)
  1618  		}
  1619  	}
  1620  
  1621  }
  1622  
  1623  func (o *Strings) MergeRaw(source gotenobject.GotenObjectExt) {
  1624  	o.Merge(source.(*Strings))
  1625  }
  1626  
  1627  func (o *MonitoredResourceSelector) GotenObjectExt() {}
  1628  
  1629  func (o *MonitoredResourceSelector) MakeFullFieldMask() *MonitoredResourceSelector_FieldMask {
  1630  	return FullMonitoredResourceSelector_FieldMask()
  1631  }
  1632  
  1633  func (o *MonitoredResourceSelector) MakeRawFullFieldMask() gotenobject.FieldMask {
  1634  	return FullMonitoredResourceSelector_FieldMask()
  1635  }
  1636  
  1637  func (o *MonitoredResourceSelector) MakeDiffFieldMask(other *MonitoredResourceSelector) *MonitoredResourceSelector_FieldMask {
  1638  	if o == nil && other == nil {
  1639  		return &MonitoredResourceSelector_FieldMask{}
  1640  	}
  1641  	if o == nil || other == nil {
  1642  		return FullMonitoredResourceSelector_FieldMask()
  1643  	}
  1644  
  1645  	res := &MonitoredResourceSelector_FieldMask{}
  1646  
  1647  	if len(o.GetTypes()) == len(other.GetTypes()) {
  1648  		for i, lValue := range o.GetTypes() {
  1649  			rValue := other.GetTypes()[i]
  1650  			if lValue != rValue {
  1651  				res.Paths = append(res.Paths, &MonitoredResourceSelector_FieldTerminalPath{selector: MonitoredResourceSelector_FieldPathSelectorTypes})
  1652  				break
  1653  			}
  1654  		}
  1655  	} else {
  1656  		res.Paths = append(res.Paths, &MonitoredResourceSelector_FieldTerminalPath{selector: MonitoredResourceSelector_FieldPathSelectorTypes})
  1657  	}
  1658  
  1659  	if len(o.GetLabels()) == len(other.GetLabels()) {
  1660  		for i, lValue := range o.GetLabels() {
  1661  			rValue := other.GetLabels()[i]
  1662  			if len(lValue.MakeDiffFieldMask(rValue).Paths) > 0 {
  1663  				res.Paths = append(res.Paths, &MonitoredResourceSelector_FieldTerminalPath{selector: MonitoredResourceSelector_FieldPathSelectorLabels})
  1664  				break
  1665  			}
  1666  		}
  1667  	} else {
  1668  		res.Paths = append(res.Paths, &MonitoredResourceSelector_FieldTerminalPath{selector: MonitoredResourceSelector_FieldPathSelectorLabels})
  1669  	}
  1670  	return res
  1671  }
  1672  
  1673  func (o *MonitoredResourceSelector) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
  1674  	return o.MakeDiffFieldMask(other.(*MonitoredResourceSelector))
  1675  }
  1676  
  1677  func (o *MonitoredResourceSelector) Clone() *MonitoredResourceSelector {
  1678  	if o == nil {
  1679  		return nil
  1680  	}
  1681  	result := &MonitoredResourceSelector{}
  1682  	result.Types = make([]string, len(o.Types))
  1683  	for i, sourceValue := range o.Types {
  1684  		result.Types[i] = sourceValue
  1685  	}
  1686  	result.Labels = map[string]*Strings{}
  1687  	for key, sourceValue := range o.Labels {
  1688  		result.Labels[key] = sourceValue.Clone()
  1689  	}
  1690  	return result
  1691  }
  1692  
  1693  func (o *MonitoredResourceSelector) CloneRaw() gotenobject.GotenObjectExt {
  1694  	return o.Clone()
  1695  }
  1696  
  1697  func (o *MonitoredResourceSelector) Merge(source *MonitoredResourceSelector) {
  1698  	for _, sourceValue := range source.GetTypes() {
  1699  		exists := false
  1700  		for _, currentValue := range o.Types {
  1701  			if currentValue == sourceValue {
  1702  				exists = true
  1703  				break
  1704  			}
  1705  		}
  1706  		if !exists {
  1707  			var newDstElement string
  1708  			newDstElement = sourceValue
  1709  			o.Types = append(o.Types, newDstElement)
  1710  		}
  1711  	}
  1712  
  1713  	if source.GetLabels() != nil {
  1714  		if o.Labels == nil {
  1715  			o.Labels = make(map[string]*Strings, len(source.GetLabels()))
  1716  		}
  1717  		for key, sourceValue := range source.GetLabels() {
  1718  			if sourceValue != nil {
  1719  				if o.Labels[key] == nil {
  1720  					o.Labels[key] = new(Strings)
  1721  				}
  1722  				o.Labels[key].Merge(sourceValue)
  1723  			}
  1724  		}
  1725  	}
  1726  }
  1727  
  1728  func (o *MonitoredResourceSelector) MergeRaw(source gotenobject.GotenObjectExt) {
  1729  	o.Merge(source.(*MonitoredResourceSelector))
  1730  }
  1731  
  1732  func (o *MetricSelector) GotenObjectExt() {}
  1733  
  1734  func (o *MetricSelector) MakeFullFieldMask() *MetricSelector_FieldMask {
  1735  	return FullMetricSelector_FieldMask()
  1736  }
  1737  
  1738  func (o *MetricSelector) MakeRawFullFieldMask() gotenobject.FieldMask {
  1739  	return FullMetricSelector_FieldMask()
  1740  }
  1741  
  1742  func (o *MetricSelector) MakeDiffFieldMask(other *MetricSelector) *MetricSelector_FieldMask {
  1743  	if o == nil && other == nil {
  1744  		return &MetricSelector_FieldMask{}
  1745  	}
  1746  	if o == nil || other == nil {
  1747  		return FullMetricSelector_FieldMask()
  1748  	}
  1749  
  1750  	res := &MetricSelector_FieldMask{}
  1751  
  1752  	if len(o.GetTypes()) == len(other.GetTypes()) {
  1753  		for i, lValue := range o.GetTypes() {
  1754  			rValue := other.GetTypes()[i]
  1755  			if lValue != rValue {
  1756  				res.Paths = append(res.Paths, &MetricSelector_FieldTerminalPath{selector: MetricSelector_FieldPathSelectorTypes})
  1757  				break
  1758  			}
  1759  		}
  1760  	} else {
  1761  		res.Paths = append(res.Paths, &MetricSelector_FieldTerminalPath{selector: MetricSelector_FieldPathSelectorTypes})
  1762  	}
  1763  
  1764  	if len(o.GetLabels()) == len(other.GetLabels()) {
  1765  		for i, lValue := range o.GetLabels() {
  1766  			rValue := other.GetLabels()[i]
  1767  			if len(lValue.MakeDiffFieldMask(rValue).Paths) > 0 {
  1768  				res.Paths = append(res.Paths, &MetricSelector_FieldTerminalPath{selector: MetricSelector_FieldPathSelectorLabels})
  1769  				break
  1770  			}
  1771  		}
  1772  	} else {
  1773  		res.Paths = append(res.Paths, &MetricSelector_FieldTerminalPath{selector: MetricSelector_FieldPathSelectorLabels})
  1774  	}
  1775  	return res
  1776  }
  1777  
  1778  func (o *MetricSelector) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
  1779  	return o.MakeDiffFieldMask(other.(*MetricSelector))
  1780  }
  1781  
  1782  func (o *MetricSelector) Clone() *MetricSelector {
  1783  	if o == nil {
  1784  		return nil
  1785  	}
  1786  	result := &MetricSelector{}
  1787  	result.Types = make([]string, len(o.Types))
  1788  	for i, sourceValue := range o.Types {
  1789  		result.Types[i] = sourceValue
  1790  	}
  1791  	result.Labels = map[string]*Strings{}
  1792  	for key, sourceValue := range o.Labels {
  1793  		result.Labels[key] = sourceValue.Clone()
  1794  	}
  1795  	return result
  1796  }
  1797  
  1798  func (o *MetricSelector) CloneRaw() gotenobject.GotenObjectExt {
  1799  	return o.Clone()
  1800  }
  1801  
  1802  func (o *MetricSelector) Merge(source *MetricSelector) {
  1803  	for _, sourceValue := range source.GetTypes() {
  1804  		exists := false
  1805  		for _, currentValue := range o.Types {
  1806  			if currentValue == sourceValue {
  1807  				exists = true
  1808  				break
  1809  			}
  1810  		}
  1811  		if !exists {
  1812  			var newDstElement string
  1813  			newDstElement = sourceValue
  1814  			o.Types = append(o.Types, newDstElement)
  1815  		}
  1816  	}
  1817  
  1818  	if source.GetLabels() != nil {
  1819  		if o.Labels == nil {
  1820  			o.Labels = make(map[string]*Strings, len(source.GetLabels()))
  1821  		}
  1822  		for key, sourceValue := range source.GetLabels() {
  1823  			if sourceValue != nil {
  1824  				if o.Labels[key] == nil {
  1825  					o.Labels[key] = new(Strings)
  1826  				}
  1827  				o.Labels[key].Merge(sourceValue)
  1828  			}
  1829  		}
  1830  	}
  1831  }
  1832  
  1833  func (o *MetricSelector) MergeRaw(source gotenobject.GotenObjectExt) {
  1834  	o.Merge(source.(*MetricSelector))
  1835  }
  1836  
  1837  func (o *TimeSeriesSelector) GotenObjectExt() {}
  1838  
  1839  func (o *TimeSeriesSelector) MakeFullFieldMask() *TimeSeriesSelector_FieldMask {
  1840  	return FullTimeSeriesSelector_FieldMask()
  1841  }
  1842  
  1843  func (o *TimeSeriesSelector) MakeRawFullFieldMask() gotenobject.FieldMask {
  1844  	return FullTimeSeriesSelector_FieldMask()
  1845  }
  1846  
  1847  func (o *TimeSeriesSelector) MakeDiffFieldMask(other *TimeSeriesSelector) *TimeSeriesSelector_FieldMask {
  1848  	if o == nil && other == nil {
  1849  		return &TimeSeriesSelector_FieldMask{}
  1850  	}
  1851  	if o == nil || other == nil {
  1852  		return FullTimeSeriesSelector_FieldMask()
  1853  	}
  1854  
  1855  	res := &TimeSeriesSelector_FieldMask{}
  1856  	{
  1857  		subMask := o.GetMetric().MakeDiffFieldMask(other.GetMetric())
  1858  		if subMask.IsFull() {
  1859  			res.Paths = append(res.Paths, &TimeSeriesSelector_FieldTerminalPath{selector: TimeSeriesSelector_FieldPathSelectorMetric})
  1860  		} else {
  1861  			for _, subpath := range subMask.Paths {
  1862  				res.Paths = append(res.Paths, &TimeSeriesSelector_FieldSubPath{selector: TimeSeriesSelector_FieldPathSelectorMetric, subPath: subpath})
  1863  			}
  1864  		}
  1865  	}
  1866  	{
  1867  		subMask := o.GetResource().MakeDiffFieldMask(other.GetResource())
  1868  		if subMask.IsFull() {
  1869  			res.Paths = append(res.Paths, &TimeSeriesSelector_FieldTerminalPath{selector: TimeSeriesSelector_FieldPathSelectorResource})
  1870  		} else {
  1871  			for _, subpath := range subMask.Paths {
  1872  				res.Paths = append(res.Paths, &TimeSeriesSelector_FieldSubPath{selector: TimeSeriesSelector_FieldPathSelectorResource, subPath: subpath})
  1873  			}
  1874  		}
  1875  	}
  1876  	return res
  1877  }
  1878  
  1879  func (o *TimeSeriesSelector) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
  1880  	return o.MakeDiffFieldMask(other.(*TimeSeriesSelector))
  1881  }
  1882  
  1883  func (o *TimeSeriesSelector) Clone() *TimeSeriesSelector {
  1884  	if o == nil {
  1885  		return nil
  1886  	}
  1887  	result := &TimeSeriesSelector{}
  1888  	result.Metric = o.Metric.Clone()
  1889  	result.Resource = o.Resource.Clone()
  1890  	return result
  1891  }
  1892  
  1893  func (o *TimeSeriesSelector) CloneRaw() gotenobject.GotenObjectExt {
  1894  	return o.Clone()
  1895  }
  1896  
  1897  func (o *TimeSeriesSelector) Merge(source *TimeSeriesSelector) {
  1898  	if source.GetMetric() != nil {
  1899  		if o.Metric == nil {
  1900  			o.Metric = new(MetricSelector)
  1901  		}
  1902  		o.Metric.Merge(source.GetMetric())
  1903  	}
  1904  	if source.GetResource() != nil {
  1905  		if o.Resource == nil {
  1906  			o.Resource = new(MonitoredResourceSelector)
  1907  		}
  1908  		o.Resource.Merge(source.GetResource())
  1909  	}
  1910  }
  1911  
  1912  func (o *TimeSeriesSelector) MergeRaw(source gotenobject.GotenObjectExt) {
  1913  	o.Merge(source.(*TimeSeriesSelector))
  1914  }