github.com/cloudwan/edgelq-sdk@v1.15.4/monitoring/resources/v3/common/common.pb.fieldmask.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  	"strings"
    10  
    11  	"google.golang.org/grpc/codes"
    12  	"google.golang.org/grpc/status"
    13  	"google.golang.org/protobuf/proto"
    14  	preflect "google.golang.org/protobuf/reflect/protoreflect"
    15  	googlefieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
    16  
    17  	gotenobject "github.com/cloudwan/goten-sdk/runtime/object"
    18  )
    19  
    20  // proto imports
    21  import (
    22  	durationpb "google.golang.org/protobuf/types/known/durationpb"
    23  	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
    24  )
    25  
    26  // ensure the imports are used
    27  var (
    28  	_ = new(json.Marshaler)
    29  	_ = strings.Builder{}
    30  
    31  	_ = codes.NotFound
    32  	_ = status.Status{}
    33  	_ = new(proto.Message)
    34  	_ = new(preflect.Message)
    35  	_ = googlefieldmaskpb.FieldMask{}
    36  
    37  	_ = new(gotenobject.FieldMask)
    38  )
    39  
    40  // make sure we're using proto imports
    41  var (
    42  	_ = &durationpb.Duration{}
    43  	_ = &timestamppb.Timestamp{}
    44  )
    45  
    46  type LabelDescriptor_FieldMask struct {
    47  	Paths []LabelDescriptor_FieldPath
    48  }
    49  
    50  func FullLabelDescriptor_FieldMask() *LabelDescriptor_FieldMask {
    51  	res := &LabelDescriptor_FieldMask{}
    52  	res.Paths = append(res.Paths, &LabelDescriptor_FieldTerminalPath{selector: LabelDescriptor_FieldPathSelectorKey})
    53  	res.Paths = append(res.Paths, &LabelDescriptor_FieldTerminalPath{selector: LabelDescriptor_FieldPathSelectorValueType})
    54  	res.Paths = append(res.Paths, &LabelDescriptor_FieldTerminalPath{selector: LabelDescriptor_FieldPathSelectorDescription})
    55  	res.Paths = append(res.Paths, &LabelDescriptor_FieldTerminalPath{selector: LabelDescriptor_FieldPathSelectorDefaultValue})
    56  	res.Paths = append(res.Paths, &LabelDescriptor_FieldTerminalPath{selector: LabelDescriptor_FieldPathSelectorDisabled})
    57  	return res
    58  }
    59  
    60  func (fieldMask *LabelDescriptor_FieldMask) String() string {
    61  	if fieldMask == nil {
    62  		return "<nil>"
    63  	}
    64  	pathsStr := make([]string, 0, len(fieldMask.Paths))
    65  	for _, path := range fieldMask.Paths {
    66  		pathsStr = append(pathsStr, path.String())
    67  	}
    68  	return strings.Join(pathsStr, ", ")
    69  }
    70  
    71  func (fieldMask *LabelDescriptor_FieldMask) IsFull() bool {
    72  	if fieldMask == nil {
    73  		return false
    74  	}
    75  	presentSelectors := make([]bool, 5)
    76  	for _, path := range fieldMask.Paths {
    77  		if asFinal, ok := path.(*LabelDescriptor_FieldTerminalPath); ok {
    78  			presentSelectors[int(asFinal.selector)] = true
    79  		}
    80  	}
    81  	for _, flag := range presentSelectors {
    82  		if !flag {
    83  			return false
    84  		}
    85  	}
    86  	return true
    87  }
    88  
    89  func (fieldMask *LabelDescriptor_FieldMask) ProtoReflect() preflect.Message {
    90  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
    91  		return ParseLabelDescriptor_FieldPath(raw)
    92  	})
    93  }
    94  
    95  func (fieldMask *LabelDescriptor_FieldMask) ProtoMessage() {}
    96  
    97  func (fieldMask *LabelDescriptor_FieldMask) Reset() {
    98  	if fieldMask != nil {
    99  		fieldMask.Paths = nil
   100  	}
   101  }
   102  
   103  func (fieldMask *LabelDescriptor_FieldMask) Subtract(other *LabelDescriptor_FieldMask) *LabelDescriptor_FieldMask {
   104  	result := &LabelDescriptor_FieldMask{}
   105  	removedSelectors := make([]bool, 5)
   106  
   107  	for _, path := range other.GetPaths() {
   108  		switch tp := path.(type) {
   109  		case *LabelDescriptor_FieldTerminalPath:
   110  			removedSelectors[int(tp.selector)] = true
   111  		}
   112  	}
   113  	for _, path := range fieldMask.GetPaths() {
   114  		if !removedSelectors[int(path.Selector())] {
   115  			result.Paths = append(result.Paths, path)
   116  		}
   117  	}
   118  
   119  	if len(result.Paths) == 0 {
   120  		return nil
   121  	}
   122  	return result
   123  }
   124  
   125  func (fieldMask *LabelDescriptor_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   126  	return fieldMask.Subtract(other.(*LabelDescriptor_FieldMask))
   127  }
   128  
   129  // FilterInputFields generates copy of field paths with output_only field paths removed
   130  func (fieldMask *LabelDescriptor_FieldMask) FilterInputFields() *LabelDescriptor_FieldMask {
   131  	result := &LabelDescriptor_FieldMask{}
   132  	result.Paths = append(result.Paths, fieldMask.Paths...)
   133  	return result
   134  }
   135  
   136  // ToFieldMask is used for proto conversions
   137  func (fieldMask *LabelDescriptor_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   138  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   139  	for _, path := range fieldMask.Paths {
   140  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   141  	}
   142  	return protoFieldMask
   143  }
   144  
   145  func (fieldMask *LabelDescriptor_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   146  	if fieldMask == nil {
   147  		return status.Error(codes.Internal, "target field mask is nil")
   148  	}
   149  	fieldMask.Paths = make([]LabelDescriptor_FieldPath, 0, len(protoFieldMask.Paths))
   150  	for _, strPath := range protoFieldMask.Paths {
   151  		path, err := ParseLabelDescriptor_FieldPath(strPath)
   152  		if err != nil {
   153  			return err
   154  		}
   155  		fieldMask.Paths = append(fieldMask.Paths, path)
   156  	}
   157  	return nil
   158  }
   159  
   160  // implement methods required by customType
   161  func (fieldMask LabelDescriptor_FieldMask) Marshal() ([]byte, error) {
   162  	protoFieldMask := fieldMask.ToProtoFieldMask()
   163  	return proto.Marshal(protoFieldMask)
   164  }
   165  
   166  func (fieldMask *LabelDescriptor_FieldMask) Unmarshal(data []byte) error {
   167  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   168  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   169  		return err
   170  	}
   171  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   172  		return err
   173  	}
   174  	return nil
   175  }
   176  
   177  func (fieldMask *LabelDescriptor_FieldMask) Size() int {
   178  	return proto.Size(fieldMask.ToProtoFieldMask())
   179  }
   180  
   181  func (fieldMask LabelDescriptor_FieldMask) MarshalJSON() ([]byte, error) {
   182  	return json.Marshal(fieldMask.ToProtoFieldMask())
   183  }
   184  
   185  func (fieldMask *LabelDescriptor_FieldMask) UnmarshalJSON(data []byte) error {
   186  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   187  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   188  		return err
   189  	}
   190  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   191  		return err
   192  	}
   193  	return nil
   194  }
   195  
   196  func (fieldMask *LabelDescriptor_FieldMask) AppendPath(path LabelDescriptor_FieldPath) {
   197  	fieldMask.Paths = append(fieldMask.Paths, path)
   198  }
   199  
   200  func (fieldMask *LabelDescriptor_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   201  	fieldMask.Paths = append(fieldMask.Paths, path.(LabelDescriptor_FieldPath))
   202  }
   203  
   204  func (fieldMask *LabelDescriptor_FieldMask) GetPaths() []LabelDescriptor_FieldPath {
   205  	if fieldMask == nil {
   206  		return nil
   207  	}
   208  	return fieldMask.Paths
   209  }
   210  
   211  func (fieldMask *LabelDescriptor_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   212  	if fieldMask == nil {
   213  		return nil
   214  	}
   215  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   216  	for _, path := range fieldMask.Paths {
   217  		rawPaths = append(rawPaths, path)
   218  	}
   219  	return rawPaths
   220  }
   221  
   222  func (fieldMask *LabelDescriptor_FieldMask) SetFromCliFlag(raw string) error {
   223  	path, err := ParseLabelDescriptor_FieldPath(raw)
   224  	if err != nil {
   225  		return err
   226  	}
   227  	fieldMask.Paths = append(fieldMask.Paths, path)
   228  	return nil
   229  }
   230  
   231  func (fieldMask *LabelDescriptor_FieldMask) Set(target, source *LabelDescriptor) {
   232  	for _, path := range fieldMask.Paths {
   233  		val, _ := path.GetSingle(source)
   234  		// if val is nil, then field does not exist in source, skip
   235  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   236  		if val != nil {
   237  			path.WithIValue(val).SetTo(&target)
   238  		}
   239  	}
   240  }
   241  
   242  func (fieldMask *LabelDescriptor_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   243  	fieldMask.Set(target.(*LabelDescriptor), source.(*LabelDescriptor))
   244  }
   245  
   246  func (fieldMask *LabelDescriptor_FieldMask) Project(source *LabelDescriptor) *LabelDescriptor {
   247  	if source == nil {
   248  		return nil
   249  	}
   250  	if fieldMask == nil {
   251  		return source
   252  	}
   253  	result := &LabelDescriptor{}
   254  
   255  	for _, p := range fieldMask.Paths {
   256  		switch tp := p.(type) {
   257  		case *LabelDescriptor_FieldTerminalPath:
   258  			switch tp.selector {
   259  			case LabelDescriptor_FieldPathSelectorKey:
   260  				result.Key = source.Key
   261  			case LabelDescriptor_FieldPathSelectorValueType:
   262  				result.ValueType = source.ValueType
   263  			case LabelDescriptor_FieldPathSelectorDescription:
   264  				result.Description = source.Description
   265  			case LabelDescriptor_FieldPathSelectorDefaultValue:
   266  				result.DefaultValue = source.DefaultValue
   267  			case LabelDescriptor_FieldPathSelectorDisabled:
   268  				result.Disabled = source.Disabled
   269  			}
   270  		}
   271  	}
   272  	return result
   273  }
   274  
   275  func (fieldMask *LabelDescriptor_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   276  	return fieldMask.Project(source.(*LabelDescriptor))
   277  }
   278  
   279  func (fieldMask *LabelDescriptor_FieldMask) PathsCount() int {
   280  	if fieldMask == nil {
   281  		return 0
   282  	}
   283  	return len(fieldMask.Paths)
   284  }
   285  
   286  type LabelKeySet_FieldMask struct {
   287  	Paths []LabelKeySet_FieldPath
   288  }
   289  
   290  func FullLabelKeySet_FieldMask() *LabelKeySet_FieldMask {
   291  	res := &LabelKeySet_FieldMask{}
   292  	res.Paths = append(res.Paths, &LabelKeySet_FieldTerminalPath{selector: LabelKeySet_FieldPathSelectorLabelKeys})
   293  	res.Paths = append(res.Paths, &LabelKeySet_FieldTerminalPath{selector: LabelKeySet_FieldPathSelectorWriteOnly})
   294  	return res
   295  }
   296  
   297  func (fieldMask *LabelKeySet_FieldMask) String() string {
   298  	if fieldMask == nil {
   299  		return "<nil>"
   300  	}
   301  	pathsStr := make([]string, 0, len(fieldMask.Paths))
   302  	for _, path := range fieldMask.Paths {
   303  		pathsStr = append(pathsStr, path.String())
   304  	}
   305  	return strings.Join(pathsStr, ", ")
   306  }
   307  
   308  func (fieldMask *LabelKeySet_FieldMask) IsFull() bool {
   309  	if fieldMask == nil {
   310  		return false
   311  	}
   312  	presentSelectors := make([]bool, 2)
   313  	for _, path := range fieldMask.Paths {
   314  		if asFinal, ok := path.(*LabelKeySet_FieldTerminalPath); ok {
   315  			presentSelectors[int(asFinal.selector)] = true
   316  		}
   317  	}
   318  	for _, flag := range presentSelectors {
   319  		if !flag {
   320  			return false
   321  		}
   322  	}
   323  	return true
   324  }
   325  
   326  func (fieldMask *LabelKeySet_FieldMask) ProtoReflect() preflect.Message {
   327  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
   328  		return ParseLabelKeySet_FieldPath(raw)
   329  	})
   330  }
   331  
   332  func (fieldMask *LabelKeySet_FieldMask) ProtoMessage() {}
   333  
   334  func (fieldMask *LabelKeySet_FieldMask) Reset() {
   335  	if fieldMask != nil {
   336  		fieldMask.Paths = nil
   337  	}
   338  }
   339  
   340  func (fieldMask *LabelKeySet_FieldMask) Subtract(other *LabelKeySet_FieldMask) *LabelKeySet_FieldMask {
   341  	result := &LabelKeySet_FieldMask{}
   342  	removedSelectors := make([]bool, 2)
   343  
   344  	for _, path := range other.GetPaths() {
   345  		switch tp := path.(type) {
   346  		case *LabelKeySet_FieldTerminalPath:
   347  			removedSelectors[int(tp.selector)] = true
   348  		}
   349  	}
   350  	for _, path := range fieldMask.GetPaths() {
   351  		if !removedSelectors[int(path.Selector())] {
   352  			result.Paths = append(result.Paths, path)
   353  		}
   354  	}
   355  
   356  	if len(result.Paths) == 0 {
   357  		return nil
   358  	}
   359  	return result
   360  }
   361  
   362  func (fieldMask *LabelKeySet_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   363  	return fieldMask.Subtract(other.(*LabelKeySet_FieldMask))
   364  }
   365  
   366  // FilterInputFields generates copy of field paths with output_only field paths removed
   367  func (fieldMask *LabelKeySet_FieldMask) FilterInputFields() *LabelKeySet_FieldMask {
   368  	result := &LabelKeySet_FieldMask{}
   369  	result.Paths = append(result.Paths, fieldMask.Paths...)
   370  	return result
   371  }
   372  
   373  // ToFieldMask is used for proto conversions
   374  func (fieldMask *LabelKeySet_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   375  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   376  	for _, path := range fieldMask.Paths {
   377  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   378  	}
   379  	return protoFieldMask
   380  }
   381  
   382  func (fieldMask *LabelKeySet_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   383  	if fieldMask == nil {
   384  		return status.Error(codes.Internal, "target field mask is nil")
   385  	}
   386  	fieldMask.Paths = make([]LabelKeySet_FieldPath, 0, len(protoFieldMask.Paths))
   387  	for _, strPath := range protoFieldMask.Paths {
   388  		path, err := ParseLabelKeySet_FieldPath(strPath)
   389  		if err != nil {
   390  			return err
   391  		}
   392  		fieldMask.Paths = append(fieldMask.Paths, path)
   393  	}
   394  	return nil
   395  }
   396  
   397  // implement methods required by customType
   398  func (fieldMask LabelKeySet_FieldMask) Marshal() ([]byte, error) {
   399  	protoFieldMask := fieldMask.ToProtoFieldMask()
   400  	return proto.Marshal(protoFieldMask)
   401  }
   402  
   403  func (fieldMask *LabelKeySet_FieldMask) Unmarshal(data []byte) error {
   404  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   405  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   406  		return err
   407  	}
   408  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   409  		return err
   410  	}
   411  	return nil
   412  }
   413  
   414  func (fieldMask *LabelKeySet_FieldMask) Size() int {
   415  	return proto.Size(fieldMask.ToProtoFieldMask())
   416  }
   417  
   418  func (fieldMask LabelKeySet_FieldMask) MarshalJSON() ([]byte, error) {
   419  	return json.Marshal(fieldMask.ToProtoFieldMask())
   420  }
   421  
   422  func (fieldMask *LabelKeySet_FieldMask) UnmarshalJSON(data []byte) error {
   423  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   424  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   425  		return err
   426  	}
   427  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   428  		return err
   429  	}
   430  	return nil
   431  }
   432  
   433  func (fieldMask *LabelKeySet_FieldMask) AppendPath(path LabelKeySet_FieldPath) {
   434  	fieldMask.Paths = append(fieldMask.Paths, path)
   435  }
   436  
   437  func (fieldMask *LabelKeySet_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   438  	fieldMask.Paths = append(fieldMask.Paths, path.(LabelKeySet_FieldPath))
   439  }
   440  
   441  func (fieldMask *LabelKeySet_FieldMask) GetPaths() []LabelKeySet_FieldPath {
   442  	if fieldMask == nil {
   443  		return nil
   444  	}
   445  	return fieldMask.Paths
   446  }
   447  
   448  func (fieldMask *LabelKeySet_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   449  	if fieldMask == nil {
   450  		return nil
   451  	}
   452  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   453  	for _, path := range fieldMask.Paths {
   454  		rawPaths = append(rawPaths, path)
   455  	}
   456  	return rawPaths
   457  }
   458  
   459  func (fieldMask *LabelKeySet_FieldMask) SetFromCliFlag(raw string) error {
   460  	path, err := ParseLabelKeySet_FieldPath(raw)
   461  	if err != nil {
   462  		return err
   463  	}
   464  	fieldMask.Paths = append(fieldMask.Paths, path)
   465  	return nil
   466  }
   467  
   468  func (fieldMask *LabelKeySet_FieldMask) Set(target, source *LabelKeySet) {
   469  	for _, path := range fieldMask.Paths {
   470  		val, _ := path.GetSingle(source)
   471  		// if val is nil, then field does not exist in source, skip
   472  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   473  		if val != nil {
   474  			path.WithIValue(val).SetTo(&target)
   475  		}
   476  	}
   477  }
   478  
   479  func (fieldMask *LabelKeySet_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   480  	fieldMask.Set(target.(*LabelKeySet), source.(*LabelKeySet))
   481  }
   482  
   483  func (fieldMask *LabelKeySet_FieldMask) Project(source *LabelKeySet) *LabelKeySet {
   484  	if source == nil {
   485  		return nil
   486  	}
   487  	if fieldMask == nil {
   488  		return source
   489  	}
   490  	result := &LabelKeySet{}
   491  
   492  	for _, p := range fieldMask.Paths {
   493  		switch tp := p.(type) {
   494  		case *LabelKeySet_FieldTerminalPath:
   495  			switch tp.selector {
   496  			case LabelKeySet_FieldPathSelectorLabelKeys:
   497  				result.LabelKeys = source.LabelKeys
   498  			case LabelKeySet_FieldPathSelectorWriteOnly:
   499  				result.WriteOnly = source.WriteOnly
   500  			}
   501  		}
   502  	}
   503  	return result
   504  }
   505  
   506  func (fieldMask *LabelKeySet_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   507  	return fieldMask.Project(source.(*LabelKeySet))
   508  }
   509  
   510  func (fieldMask *LabelKeySet_FieldMask) PathsCount() int {
   511  	if fieldMask == nil {
   512  		return 0
   513  	}
   514  	return len(fieldMask.Paths)
   515  }
   516  
   517  type Distribution_FieldMask struct {
   518  	Paths []Distribution_FieldPath
   519  }
   520  
   521  func FullDistribution_FieldMask() *Distribution_FieldMask {
   522  	res := &Distribution_FieldMask{}
   523  	res.Paths = append(res.Paths, &Distribution_FieldTerminalPath{selector: Distribution_FieldPathSelectorCount})
   524  	res.Paths = append(res.Paths, &Distribution_FieldTerminalPath{selector: Distribution_FieldPathSelectorMean})
   525  	res.Paths = append(res.Paths, &Distribution_FieldTerminalPath{selector: Distribution_FieldPathSelectorSumOfSquaredDeviation})
   526  	res.Paths = append(res.Paths, &Distribution_FieldTerminalPath{selector: Distribution_FieldPathSelectorRange})
   527  	res.Paths = append(res.Paths, &Distribution_FieldTerminalPath{selector: Distribution_FieldPathSelectorBucketOptions})
   528  	res.Paths = append(res.Paths, &Distribution_FieldTerminalPath{selector: Distribution_FieldPathSelectorBucketCounts})
   529  	return res
   530  }
   531  
   532  func (fieldMask *Distribution_FieldMask) String() string {
   533  	if fieldMask == nil {
   534  		return "<nil>"
   535  	}
   536  	pathsStr := make([]string, 0, len(fieldMask.Paths))
   537  	for _, path := range fieldMask.Paths {
   538  		pathsStr = append(pathsStr, path.String())
   539  	}
   540  	return strings.Join(pathsStr, ", ")
   541  }
   542  
   543  func (fieldMask *Distribution_FieldMask) IsFull() bool {
   544  	if fieldMask == nil {
   545  		return false
   546  	}
   547  	presentSelectors := make([]bool, 6)
   548  	for _, path := range fieldMask.Paths {
   549  		if asFinal, ok := path.(*Distribution_FieldTerminalPath); ok {
   550  			presentSelectors[int(asFinal.selector)] = true
   551  		}
   552  	}
   553  	for _, flag := range presentSelectors {
   554  		if !flag {
   555  			return false
   556  		}
   557  	}
   558  	return true
   559  }
   560  
   561  func (fieldMask *Distribution_FieldMask) ProtoReflect() preflect.Message {
   562  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
   563  		return ParseDistribution_FieldPath(raw)
   564  	})
   565  }
   566  
   567  func (fieldMask *Distribution_FieldMask) ProtoMessage() {}
   568  
   569  func (fieldMask *Distribution_FieldMask) Reset() {
   570  	if fieldMask != nil {
   571  		fieldMask.Paths = nil
   572  	}
   573  }
   574  
   575  func (fieldMask *Distribution_FieldMask) Subtract(other *Distribution_FieldMask) *Distribution_FieldMask {
   576  	result := &Distribution_FieldMask{}
   577  	removedSelectors := make([]bool, 6)
   578  	otherSubMasks := map[Distribution_FieldPathSelector]gotenobject.FieldMask{
   579  		Distribution_FieldPathSelectorRange:         &Distribution_Range_FieldMask{},
   580  		Distribution_FieldPathSelectorBucketOptions: &Distribution_BucketOptions_FieldMask{},
   581  	}
   582  	mySubMasks := map[Distribution_FieldPathSelector]gotenobject.FieldMask{
   583  		Distribution_FieldPathSelectorRange:         &Distribution_Range_FieldMask{},
   584  		Distribution_FieldPathSelectorBucketOptions: &Distribution_BucketOptions_FieldMask{},
   585  	}
   586  
   587  	for _, path := range other.GetPaths() {
   588  		switch tp := path.(type) {
   589  		case *Distribution_FieldTerminalPath:
   590  			removedSelectors[int(tp.selector)] = true
   591  		case *Distribution_FieldSubPath:
   592  			otherSubMasks[tp.selector].AppendRawPath(tp.subPath)
   593  		}
   594  	}
   595  	for _, path := range fieldMask.GetPaths() {
   596  		if !removedSelectors[int(path.Selector())] {
   597  			if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 {
   598  				if tp, ok := path.(*Distribution_FieldTerminalPath); ok {
   599  					switch tp.selector {
   600  					case Distribution_FieldPathSelectorRange:
   601  						mySubMasks[Distribution_FieldPathSelectorRange] = FullDistribution_Range_FieldMask()
   602  					case Distribution_FieldPathSelectorBucketOptions:
   603  						mySubMasks[Distribution_FieldPathSelectorBucketOptions] = FullDistribution_BucketOptions_FieldMask()
   604  					}
   605  				} else if tp, ok := path.(*Distribution_FieldSubPath); ok {
   606  					mySubMasks[tp.selector].AppendRawPath(tp.subPath)
   607  				}
   608  			} else {
   609  				result.Paths = append(result.Paths, path)
   610  			}
   611  		}
   612  	}
   613  	for selector, mySubMask := range mySubMasks {
   614  		if mySubMask.PathsCount() > 0 {
   615  			for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() {
   616  				result.Paths = append(result.Paths, &Distribution_FieldSubPath{selector: selector, subPath: allowedPath})
   617  			}
   618  		}
   619  	}
   620  
   621  	if len(result.Paths) == 0 {
   622  		return nil
   623  	}
   624  	return result
   625  }
   626  
   627  func (fieldMask *Distribution_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   628  	return fieldMask.Subtract(other.(*Distribution_FieldMask))
   629  }
   630  
   631  // FilterInputFields generates copy of field paths with output_only field paths removed
   632  func (fieldMask *Distribution_FieldMask) FilterInputFields() *Distribution_FieldMask {
   633  	result := &Distribution_FieldMask{}
   634  	result.Paths = append(result.Paths, fieldMask.Paths...)
   635  	return result
   636  }
   637  
   638  // ToFieldMask is used for proto conversions
   639  func (fieldMask *Distribution_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   640  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   641  	for _, path := range fieldMask.Paths {
   642  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   643  	}
   644  	return protoFieldMask
   645  }
   646  
   647  func (fieldMask *Distribution_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   648  	if fieldMask == nil {
   649  		return status.Error(codes.Internal, "target field mask is nil")
   650  	}
   651  	fieldMask.Paths = make([]Distribution_FieldPath, 0, len(protoFieldMask.Paths))
   652  	for _, strPath := range protoFieldMask.Paths {
   653  		path, err := ParseDistribution_FieldPath(strPath)
   654  		if err != nil {
   655  			return err
   656  		}
   657  		fieldMask.Paths = append(fieldMask.Paths, path)
   658  	}
   659  	return nil
   660  }
   661  
   662  // implement methods required by customType
   663  func (fieldMask Distribution_FieldMask) Marshal() ([]byte, error) {
   664  	protoFieldMask := fieldMask.ToProtoFieldMask()
   665  	return proto.Marshal(protoFieldMask)
   666  }
   667  
   668  func (fieldMask *Distribution_FieldMask) Unmarshal(data []byte) error {
   669  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   670  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   671  		return err
   672  	}
   673  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   674  		return err
   675  	}
   676  	return nil
   677  }
   678  
   679  func (fieldMask *Distribution_FieldMask) Size() int {
   680  	return proto.Size(fieldMask.ToProtoFieldMask())
   681  }
   682  
   683  func (fieldMask Distribution_FieldMask) MarshalJSON() ([]byte, error) {
   684  	return json.Marshal(fieldMask.ToProtoFieldMask())
   685  }
   686  
   687  func (fieldMask *Distribution_FieldMask) UnmarshalJSON(data []byte) error {
   688  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   689  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   690  		return err
   691  	}
   692  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   693  		return err
   694  	}
   695  	return nil
   696  }
   697  
   698  func (fieldMask *Distribution_FieldMask) AppendPath(path Distribution_FieldPath) {
   699  	fieldMask.Paths = append(fieldMask.Paths, path)
   700  }
   701  
   702  func (fieldMask *Distribution_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   703  	fieldMask.Paths = append(fieldMask.Paths, path.(Distribution_FieldPath))
   704  }
   705  
   706  func (fieldMask *Distribution_FieldMask) GetPaths() []Distribution_FieldPath {
   707  	if fieldMask == nil {
   708  		return nil
   709  	}
   710  	return fieldMask.Paths
   711  }
   712  
   713  func (fieldMask *Distribution_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   714  	if fieldMask == nil {
   715  		return nil
   716  	}
   717  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   718  	for _, path := range fieldMask.Paths {
   719  		rawPaths = append(rawPaths, path)
   720  	}
   721  	return rawPaths
   722  }
   723  
   724  func (fieldMask *Distribution_FieldMask) SetFromCliFlag(raw string) error {
   725  	path, err := ParseDistribution_FieldPath(raw)
   726  	if err != nil {
   727  		return err
   728  	}
   729  	fieldMask.Paths = append(fieldMask.Paths, path)
   730  	return nil
   731  }
   732  
   733  func (fieldMask *Distribution_FieldMask) Set(target, source *Distribution) {
   734  	for _, path := range fieldMask.Paths {
   735  		val, _ := path.GetSingle(source)
   736  		// if val is nil, then field does not exist in source, skip
   737  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   738  		if val != nil {
   739  			path.WithIValue(val).SetTo(&target)
   740  		}
   741  	}
   742  }
   743  
   744  func (fieldMask *Distribution_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   745  	fieldMask.Set(target.(*Distribution), source.(*Distribution))
   746  }
   747  
   748  func (fieldMask *Distribution_FieldMask) Project(source *Distribution) *Distribution {
   749  	if source == nil {
   750  		return nil
   751  	}
   752  	if fieldMask == nil {
   753  		return source
   754  	}
   755  	result := &Distribution{}
   756  	rangeMask := &Distribution_Range_FieldMask{}
   757  	wholeRangeAccepted := false
   758  	bucketOptionsMask := &Distribution_BucketOptions_FieldMask{}
   759  	wholeBucketOptionsAccepted := false
   760  
   761  	for _, p := range fieldMask.Paths {
   762  		switch tp := p.(type) {
   763  		case *Distribution_FieldTerminalPath:
   764  			switch tp.selector {
   765  			case Distribution_FieldPathSelectorCount:
   766  				result.Count = source.Count
   767  			case Distribution_FieldPathSelectorMean:
   768  				result.Mean = source.Mean
   769  			case Distribution_FieldPathSelectorSumOfSquaredDeviation:
   770  				result.SumOfSquaredDeviation = source.SumOfSquaredDeviation
   771  			case Distribution_FieldPathSelectorRange:
   772  				result.Range = source.Range
   773  				wholeRangeAccepted = true
   774  			case Distribution_FieldPathSelectorBucketOptions:
   775  				result.BucketOptions = source.BucketOptions
   776  				wholeBucketOptionsAccepted = true
   777  			case Distribution_FieldPathSelectorBucketCounts:
   778  				result.BucketCounts = source.BucketCounts
   779  			}
   780  		case *Distribution_FieldSubPath:
   781  			switch tp.selector {
   782  			case Distribution_FieldPathSelectorRange:
   783  				rangeMask.AppendPath(tp.subPath.(DistributionRange_FieldPath))
   784  			case Distribution_FieldPathSelectorBucketOptions:
   785  				bucketOptionsMask.AppendPath(tp.subPath.(DistributionBucketOptions_FieldPath))
   786  			}
   787  		}
   788  	}
   789  	if wholeRangeAccepted == false && len(rangeMask.Paths) > 0 {
   790  		result.Range = rangeMask.Project(source.GetRange())
   791  	}
   792  	if wholeBucketOptionsAccepted == false && len(bucketOptionsMask.Paths) > 0 {
   793  		result.BucketOptions = bucketOptionsMask.Project(source.GetBucketOptions())
   794  	}
   795  	return result
   796  }
   797  
   798  func (fieldMask *Distribution_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   799  	return fieldMask.Project(source.(*Distribution))
   800  }
   801  
   802  func (fieldMask *Distribution_FieldMask) PathsCount() int {
   803  	if fieldMask == nil {
   804  		return 0
   805  	}
   806  	return len(fieldMask.Paths)
   807  }
   808  
   809  type Distribution_Range_FieldMask struct {
   810  	Paths []DistributionRange_FieldPath
   811  }
   812  
   813  func FullDistribution_Range_FieldMask() *Distribution_Range_FieldMask {
   814  	res := &Distribution_Range_FieldMask{}
   815  	res.Paths = append(res.Paths, &DistributionRange_FieldTerminalPath{selector: DistributionRange_FieldPathSelectorMin})
   816  	res.Paths = append(res.Paths, &DistributionRange_FieldTerminalPath{selector: DistributionRange_FieldPathSelectorMax})
   817  	return res
   818  }
   819  
   820  func (fieldMask *Distribution_Range_FieldMask) String() string {
   821  	if fieldMask == nil {
   822  		return "<nil>"
   823  	}
   824  	pathsStr := make([]string, 0, len(fieldMask.Paths))
   825  	for _, path := range fieldMask.Paths {
   826  		pathsStr = append(pathsStr, path.String())
   827  	}
   828  	return strings.Join(pathsStr, ", ")
   829  }
   830  
   831  func (fieldMask *Distribution_Range_FieldMask) IsFull() bool {
   832  	if fieldMask == nil {
   833  		return false
   834  	}
   835  	presentSelectors := make([]bool, 2)
   836  	for _, path := range fieldMask.Paths {
   837  		if asFinal, ok := path.(*DistributionRange_FieldTerminalPath); ok {
   838  			presentSelectors[int(asFinal.selector)] = true
   839  		}
   840  	}
   841  	for _, flag := range presentSelectors {
   842  		if !flag {
   843  			return false
   844  		}
   845  	}
   846  	return true
   847  }
   848  
   849  func (fieldMask *Distribution_Range_FieldMask) ProtoReflect() preflect.Message {
   850  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
   851  		return ParseDistributionRange_FieldPath(raw)
   852  	})
   853  }
   854  
   855  func (fieldMask *Distribution_Range_FieldMask) ProtoMessage() {}
   856  
   857  func (fieldMask *Distribution_Range_FieldMask) Reset() {
   858  	if fieldMask != nil {
   859  		fieldMask.Paths = nil
   860  	}
   861  }
   862  
   863  func (fieldMask *Distribution_Range_FieldMask) Subtract(other *Distribution_Range_FieldMask) *Distribution_Range_FieldMask {
   864  	result := &Distribution_Range_FieldMask{}
   865  	removedSelectors := make([]bool, 2)
   866  
   867  	for _, path := range other.GetPaths() {
   868  		switch tp := path.(type) {
   869  		case *DistributionRange_FieldTerminalPath:
   870  			removedSelectors[int(tp.selector)] = true
   871  		}
   872  	}
   873  	for _, path := range fieldMask.GetPaths() {
   874  		if !removedSelectors[int(path.Selector())] {
   875  			result.Paths = append(result.Paths, path)
   876  		}
   877  	}
   878  
   879  	if len(result.Paths) == 0 {
   880  		return nil
   881  	}
   882  	return result
   883  }
   884  
   885  func (fieldMask *Distribution_Range_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   886  	return fieldMask.Subtract(other.(*Distribution_Range_FieldMask))
   887  }
   888  
   889  // FilterInputFields generates copy of field paths with output_only field paths removed
   890  func (fieldMask *Distribution_Range_FieldMask) FilterInputFields() *Distribution_Range_FieldMask {
   891  	result := &Distribution_Range_FieldMask{}
   892  	result.Paths = append(result.Paths, fieldMask.Paths...)
   893  	return result
   894  }
   895  
   896  // ToFieldMask is used for proto conversions
   897  func (fieldMask *Distribution_Range_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   898  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   899  	for _, path := range fieldMask.Paths {
   900  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   901  	}
   902  	return protoFieldMask
   903  }
   904  
   905  func (fieldMask *Distribution_Range_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   906  	if fieldMask == nil {
   907  		return status.Error(codes.Internal, "target field mask is nil")
   908  	}
   909  	fieldMask.Paths = make([]DistributionRange_FieldPath, 0, len(protoFieldMask.Paths))
   910  	for _, strPath := range protoFieldMask.Paths {
   911  		path, err := ParseDistributionRange_FieldPath(strPath)
   912  		if err != nil {
   913  			return err
   914  		}
   915  		fieldMask.Paths = append(fieldMask.Paths, path)
   916  	}
   917  	return nil
   918  }
   919  
   920  // implement methods required by customType
   921  func (fieldMask Distribution_Range_FieldMask) Marshal() ([]byte, error) {
   922  	protoFieldMask := fieldMask.ToProtoFieldMask()
   923  	return proto.Marshal(protoFieldMask)
   924  }
   925  
   926  func (fieldMask *Distribution_Range_FieldMask) Unmarshal(data []byte) error {
   927  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   928  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   929  		return err
   930  	}
   931  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   932  		return err
   933  	}
   934  	return nil
   935  }
   936  
   937  func (fieldMask *Distribution_Range_FieldMask) Size() int {
   938  	return proto.Size(fieldMask.ToProtoFieldMask())
   939  }
   940  
   941  func (fieldMask Distribution_Range_FieldMask) MarshalJSON() ([]byte, error) {
   942  	return json.Marshal(fieldMask.ToProtoFieldMask())
   943  }
   944  
   945  func (fieldMask *Distribution_Range_FieldMask) UnmarshalJSON(data []byte) error {
   946  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   947  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   948  		return err
   949  	}
   950  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   951  		return err
   952  	}
   953  	return nil
   954  }
   955  
   956  func (fieldMask *Distribution_Range_FieldMask) AppendPath(path DistributionRange_FieldPath) {
   957  	fieldMask.Paths = append(fieldMask.Paths, path)
   958  }
   959  
   960  func (fieldMask *Distribution_Range_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   961  	fieldMask.Paths = append(fieldMask.Paths, path.(DistributionRange_FieldPath))
   962  }
   963  
   964  func (fieldMask *Distribution_Range_FieldMask) GetPaths() []DistributionRange_FieldPath {
   965  	if fieldMask == nil {
   966  		return nil
   967  	}
   968  	return fieldMask.Paths
   969  }
   970  
   971  func (fieldMask *Distribution_Range_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   972  	if fieldMask == nil {
   973  		return nil
   974  	}
   975  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   976  	for _, path := range fieldMask.Paths {
   977  		rawPaths = append(rawPaths, path)
   978  	}
   979  	return rawPaths
   980  }
   981  
   982  func (fieldMask *Distribution_Range_FieldMask) SetFromCliFlag(raw string) error {
   983  	path, err := ParseDistributionRange_FieldPath(raw)
   984  	if err != nil {
   985  		return err
   986  	}
   987  	fieldMask.Paths = append(fieldMask.Paths, path)
   988  	return nil
   989  }
   990  
   991  func (fieldMask *Distribution_Range_FieldMask) Set(target, source *Distribution_Range) {
   992  	for _, path := range fieldMask.Paths {
   993  		val, _ := path.GetSingle(source)
   994  		// if val is nil, then field does not exist in source, skip
   995  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   996  		if val != nil {
   997  			path.WithIValue(val).SetTo(&target)
   998  		}
   999  	}
  1000  }
  1001  
  1002  func (fieldMask *Distribution_Range_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
  1003  	fieldMask.Set(target.(*Distribution_Range), source.(*Distribution_Range))
  1004  }
  1005  
  1006  func (fieldMask *Distribution_Range_FieldMask) Project(source *Distribution_Range) *Distribution_Range {
  1007  	if source == nil {
  1008  		return nil
  1009  	}
  1010  	if fieldMask == nil {
  1011  		return source
  1012  	}
  1013  	result := &Distribution_Range{}
  1014  
  1015  	for _, p := range fieldMask.Paths {
  1016  		switch tp := p.(type) {
  1017  		case *DistributionRange_FieldTerminalPath:
  1018  			switch tp.selector {
  1019  			case DistributionRange_FieldPathSelectorMin:
  1020  				result.Min = source.Min
  1021  			case DistributionRange_FieldPathSelectorMax:
  1022  				result.Max = source.Max
  1023  			}
  1024  		}
  1025  	}
  1026  	return result
  1027  }
  1028  
  1029  func (fieldMask *Distribution_Range_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
  1030  	return fieldMask.Project(source.(*Distribution_Range))
  1031  }
  1032  
  1033  func (fieldMask *Distribution_Range_FieldMask) PathsCount() int {
  1034  	if fieldMask == nil {
  1035  		return 0
  1036  	}
  1037  	return len(fieldMask.Paths)
  1038  }
  1039  
  1040  type Distribution_BucketOptions_FieldMask struct {
  1041  	Paths []DistributionBucketOptions_FieldPath
  1042  }
  1043  
  1044  func FullDistribution_BucketOptions_FieldMask() *Distribution_BucketOptions_FieldMask {
  1045  	res := &Distribution_BucketOptions_FieldMask{}
  1046  	res.Paths = append(res.Paths, &DistributionBucketOptions_FieldTerminalPath{selector: DistributionBucketOptions_FieldPathSelectorLinearBuckets})
  1047  	res.Paths = append(res.Paths, &DistributionBucketOptions_FieldTerminalPath{selector: DistributionBucketOptions_FieldPathSelectorExponentialBuckets})
  1048  	res.Paths = append(res.Paths, &DistributionBucketOptions_FieldTerminalPath{selector: DistributionBucketOptions_FieldPathSelectorExplicitBuckets})
  1049  	res.Paths = append(res.Paths, &DistributionBucketOptions_FieldTerminalPath{selector: DistributionBucketOptions_FieldPathSelectorDynamicBuckets})
  1050  	return res
  1051  }
  1052  
  1053  func (fieldMask *Distribution_BucketOptions_FieldMask) String() string {
  1054  	if fieldMask == nil {
  1055  		return "<nil>"
  1056  	}
  1057  	pathsStr := make([]string, 0, len(fieldMask.Paths))
  1058  	for _, path := range fieldMask.Paths {
  1059  		pathsStr = append(pathsStr, path.String())
  1060  	}
  1061  	return strings.Join(pathsStr, ", ")
  1062  }
  1063  
  1064  func (fieldMask *Distribution_BucketOptions_FieldMask) IsFull() bool {
  1065  	if fieldMask == nil {
  1066  		return false
  1067  	}
  1068  	presentSelectors := make([]bool, 4)
  1069  	for _, path := range fieldMask.Paths {
  1070  		if asFinal, ok := path.(*DistributionBucketOptions_FieldTerminalPath); ok {
  1071  			presentSelectors[int(asFinal.selector)] = true
  1072  		}
  1073  	}
  1074  	for _, flag := range presentSelectors {
  1075  		if !flag {
  1076  			return false
  1077  		}
  1078  	}
  1079  	return true
  1080  }
  1081  
  1082  func (fieldMask *Distribution_BucketOptions_FieldMask) ProtoReflect() preflect.Message {
  1083  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
  1084  		return ParseDistributionBucketOptions_FieldPath(raw)
  1085  	})
  1086  }
  1087  
  1088  func (fieldMask *Distribution_BucketOptions_FieldMask) ProtoMessage() {}
  1089  
  1090  func (fieldMask *Distribution_BucketOptions_FieldMask) Reset() {
  1091  	if fieldMask != nil {
  1092  		fieldMask.Paths = nil
  1093  	}
  1094  }
  1095  
  1096  func (fieldMask *Distribution_BucketOptions_FieldMask) Subtract(other *Distribution_BucketOptions_FieldMask) *Distribution_BucketOptions_FieldMask {
  1097  	result := &Distribution_BucketOptions_FieldMask{}
  1098  	removedSelectors := make([]bool, 4)
  1099  	otherSubMasks := map[DistributionBucketOptions_FieldPathSelector]gotenobject.FieldMask{
  1100  		DistributionBucketOptions_FieldPathSelectorLinearBuckets:      &Distribution_BucketOptions_Linear_FieldMask{},
  1101  		DistributionBucketOptions_FieldPathSelectorExponentialBuckets: &Distribution_BucketOptions_Exponential_FieldMask{},
  1102  		DistributionBucketOptions_FieldPathSelectorExplicitBuckets:    &Distribution_BucketOptions_Explicit_FieldMask{},
  1103  		DistributionBucketOptions_FieldPathSelectorDynamicBuckets:     &Distribution_BucketOptions_Dynamic_FieldMask{},
  1104  	}
  1105  	mySubMasks := map[DistributionBucketOptions_FieldPathSelector]gotenobject.FieldMask{
  1106  		DistributionBucketOptions_FieldPathSelectorLinearBuckets:      &Distribution_BucketOptions_Linear_FieldMask{},
  1107  		DistributionBucketOptions_FieldPathSelectorExponentialBuckets: &Distribution_BucketOptions_Exponential_FieldMask{},
  1108  		DistributionBucketOptions_FieldPathSelectorExplicitBuckets:    &Distribution_BucketOptions_Explicit_FieldMask{},
  1109  		DistributionBucketOptions_FieldPathSelectorDynamicBuckets:     &Distribution_BucketOptions_Dynamic_FieldMask{},
  1110  	}
  1111  
  1112  	for _, path := range other.GetPaths() {
  1113  		switch tp := path.(type) {
  1114  		case *DistributionBucketOptions_FieldTerminalPath:
  1115  			removedSelectors[int(tp.selector)] = true
  1116  		case *DistributionBucketOptions_FieldSubPath:
  1117  			otherSubMasks[tp.selector].AppendRawPath(tp.subPath)
  1118  		}
  1119  	}
  1120  	for _, path := range fieldMask.GetPaths() {
  1121  		if !removedSelectors[int(path.Selector())] {
  1122  			if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 {
  1123  				if tp, ok := path.(*DistributionBucketOptions_FieldTerminalPath); ok {
  1124  					switch tp.selector {
  1125  					case DistributionBucketOptions_FieldPathSelectorLinearBuckets:
  1126  						mySubMasks[DistributionBucketOptions_FieldPathSelectorLinearBuckets] = FullDistribution_BucketOptions_Linear_FieldMask()
  1127  					case DistributionBucketOptions_FieldPathSelectorExponentialBuckets:
  1128  						mySubMasks[DistributionBucketOptions_FieldPathSelectorExponentialBuckets] = FullDistribution_BucketOptions_Exponential_FieldMask()
  1129  					case DistributionBucketOptions_FieldPathSelectorExplicitBuckets:
  1130  						mySubMasks[DistributionBucketOptions_FieldPathSelectorExplicitBuckets] = FullDistribution_BucketOptions_Explicit_FieldMask()
  1131  					case DistributionBucketOptions_FieldPathSelectorDynamicBuckets:
  1132  						mySubMasks[DistributionBucketOptions_FieldPathSelectorDynamicBuckets] = FullDistribution_BucketOptions_Dynamic_FieldMask()
  1133  					}
  1134  				} else if tp, ok := path.(*DistributionBucketOptions_FieldSubPath); ok {
  1135  					mySubMasks[tp.selector].AppendRawPath(tp.subPath)
  1136  				}
  1137  			} else {
  1138  				result.Paths = append(result.Paths, path)
  1139  			}
  1140  		}
  1141  	}
  1142  	for selector, mySubMask := range mySubMasks {
  1143  		if mySubMask.PathsCount() > 0 {
  1144  			for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() {
  1145  				result.Paths = append(result.Paths, &DistributionBucketOptions_FieldSubPath{selector: selector, subPath: allowedPath})
  1146  			}
  1147  		}
  1148  	}
  1149  
  1150  	if len(result.Paths) == 0 {
  1151  		return nil
  1152  	}
  1153  	return result
  1154  }
  1155  
  1156  func (fieldMask *Distribution_BucketOptions_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
  1157  	return fieldMask.Subtract(other.(*Distribution_BucketOptions_FieldMask))
  1158  }
  1159  
  1160  // FilterInputFields generates copy of field paths with output_only field paths removed
  1161  func (fieldMask *Distribution_BucketOptions_FieldMask) FilterInputFields() *Distribution_BucketOptions_FieldMask {
  1162  	result := &Distribution_BucketOptions_FieldMask{}
  1163  	result.Paths = append(result.Paths, fieldMask.Paths...)
  1164  	return result
  1165  }
  1166  
  1167  // ToFieldMask is used for proto conversions
  1168  func (fieldMask *Distribution_BucketOptions_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
  1169  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1170  	for _, path := range fieldMask.Paths {
  1171  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
  1172  	}
  1173  	return protoFieldMask
  1174  }
  1175  
  1176  func (fieldMask *Distribution_BucketOptions_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
  1177  	if fieldMask == nil {
  1178  		return status.Error(codes.Internal, "target field mask is nil")
  1179  	}
  1180  	fieldMask.Paths = make([]DistributionBucketOptions_FieldPath, 0, len(protoFieldMask.Paths))
  1181  	for _, strPath := range protoFieldMask.Paths {
  1182  		path, err := ParseDistributionBucketOptions_FieldPath(strPath)
  1183  		if err != nil {
  1184  			return err
  1185  		}
  1186  		fieldMask.Paths = append(fieldMask.Paths, path)
  1187  	}
  1188  	return nil
  1189  }
  1190  
  1191  // implement methods required by customType
  1192  func (fieldMask Distribution_BucketOptions_FieldMask) Marshal() ([]byte, error) {
  1193  	protoFieldMask := fieldMask.ToProtoFieldMask()
  1194  	return proto.Marshal(protoFieldMask)
  1195  }
  1196  
  1197  func (fieldMask *Distribution_BucketOptions_FieldMask) Unmarshal(data []byte) error {
  1198  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1199  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
  1200  		return err
  1201  	}
  1202  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  1203  		return err
  1204  	}
  1205  	return nil
  1206  }
  1207  
  1208  func (fieldMask *Distribution_BucketOptions_FieldMask) Size() int {
  1209  	return proto.Size(fieldMask.ToProtoFieldMask())
  1210  }
  1211  
  1212  func (fieldMask Distribution_BucketOptions_FieldMask) MarshalJSON() ([]byte, error) {
  1213  	return json.Marshal(fieldMask.ToProtoFieldMask())
  1214  }
  1215  
  1216  func (fieldMask *Distribution_BucketOptions_FieldMask) UnmarshalJSON(data []byte) error {
  1217  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1218  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
  1219  		return err
  1220  	}
  1221  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  1222  		return err
  1223  	}
  1224  	return nil
  1225  }
  1226  
  1227  func (fieldMask *Distribution_BucketOptions_FieldMask) AppendPath(path DistributionBucketOptions_FieldPath) {
  1228  	fieldMask.Paths = append(fieldMask.Paths, path)
  1229  }
  1230  
  1231  func (fieldMask *Distribution_BucketOptions_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
  1232  	fieldMask.Paths = append(fieldMask.Paths, path.(DistributionBucketOptions_FieldPath))
  1233  }
  1234  
  1235  func (fieldMask *Distribution_BucketOptions_FieldMask) GetPaths() []DistributionBucketOptions_FieldPath {
  1236  	if fieldMask == nil {
  1237  		return nil
  1238  	}
  1239  	return fieldMask.Paths
  1240  }
  1241  
  1242  func (fieldMask *Distribution_BucketOptions_FieldMask) GetRawPaths() []gotenobject.FieldPath {
  1243  	if fieldMask == nil {
  1244  		return nil
  1245  	}
  1246  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
  1247  	for _, path := range fieldMask.Paths {
  1248  		rawPaths = append(rawPaths, path)
  1249  	}
  1250  	return rawPaths
  1251  }
  1252  
  1253  func (fieldMask *Distribution_BucketOptions_FieldMask) SetFromCliFlag(raw string) error {
  1254  	path, err := ParseDistributionBucketOptions_FieldPath(raw)
  1255  	if err != nil {
  1256  		return err
  1257  	}
  1258  	fieldMask.Paths = append(fieldMask.Paths, path)
  1259  	return nil
  1260  }
  1261  
  1262  func (fieldMask *Distribution_BucketOptions_FieldMask) Set(target, source *Distribution_BucketOptions) {
  1263  	for _, path := range fieldMask.Paths {
  1264  		val, _ := path.GetSingle(source)
  1265  		// if val is nil, then field does not exist in source, skip
  1266  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
  1267  		if val != nil {
  1268  			path.WithIValue(val).SetTo(&target)
  1269  		}
  1270  	}
  1271  }
  1272  
  1273  func (fieldMask *Distribution_BucketOptions_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
  1274  	fieldMask.Set(target.(*Distribution_BucketOptions), source.(*Distribution_BucketOptions))
  1275  }
  1276  
  1277  func (fieldMask *Distribution_BucketOptions_FieldMask) Project(source *Distribution_BucketOptions) *Distribution_BucketOptions {
  1278  	if source == nil {
  1279  		return nil
  1280  	}
  1281  	if fieldMask == nil {
  1282  		return source
  1283  	}
  1284  	result := &Distribution_BucketOptions{}
  1285  	linearBucketsMask := &Distribution_BucketOptions_Linear_FieldMask{}
  1286  	wholeLinearBucketsAccepted := false
  1287  	exponentialBucketsMask := &Distribution_BucketOptions_Exponential_FieldMask{}
  1288  	wholeExponentialBucketsAccepted := false
  1289  	explicitBucketsMask := &Distribution_BucketOptions_Explicit_FieldMask{}
  1290  	wholeExplicitBucketsAccepted := false
  1291  	dynamicBucketsMask := &Distribution_BucketOptions_Dynamic_FieldMask{}
  1292  	wholeDynamicBucketsAccepted := false
  1293  
  1294  	for _, p := range fieldMask.Paths {
  1295  		switch tp := p.(type) {
  1296  		case *DistributionBucketOptions_FieldTerminalPath:
  1297  			switch tp.selector {
  1298  			case DistributionBucketOptions_FieldPathSelectorLinearBuckets:
  1299  				if source, ok := source.Options.(*Distribution_BucketOptions_LinearBuckets); ok {
  1300  					result.Options = &Distribution_BucketOptions_LinearBuckets{
  1301  						LinearBuckets: source.LinearBuckets,
  1302  					}
  1303  				}
  1304  				wholeLinearBucketsAccepted = true
  1305  			case DistributionBucketOptions_FieldPathSelectorExponentialBuckets:
  1306  				if source, ok := source.Options.(*Distribution_BucketOptions_ExponentialBuckets); ok {
  1307  					result.Options = &Distribution_BucketOptions_ExponentialBuckets{
  1308  						ExponentialBuckets: source.ExponentialBuckets,
  1309  					}
  1310  				}
  1311  				wholeExponentialBucketsAccepted = true
  1312  			case DistributionBucketOptions_FieldPathSelectorExplicitBuckets:
  1313  				if source, ok := source.Options.(*Distribution_BucketOptions_ExplicitBuckets); ok {
  1314  					result.Options = &Distribution_BucketOptions_ExplicitBuckets{
  1315  						ExplicitBuckets: source.ExplicitBuckets,
  1316  					}
  1317  				}
  1318  				wholeExplicitBucketsAccepted = true
  1319  			case DistributionBucketOptions_FieldPathSelectorDynamicBuckets:
  1320  				if source, ok := source.Options.(*Distribution_BucketOptions_DynamicBuckets); ok {
  1321  					result.Options = &Distribution_BucketOptions_DynamicBuckets{
  1322  						DynamicBuckets: source.DynamicBuckets,
  1323  					}
  1324  				}
  1325  				wholeDynamicBucketsAccepted = true
  1326  			}
  1327  		case *DistributionBucketOptions_FieldSubPath:
  1328  			switch tp.selector {
  1329  			case DistributionBucketOptions_FieldPathSelectorLinearBuckets:
  1330  				linearBucketsMask.AppendPath(tp.subPath.(DistributionBucketOptionsLinear_FieldPath))
  1331  			case DistributionBucketOptions_FieldPathSelectorExponentialBuckets:
  1332  				exponentialBucketsMask.AppendPath(tp.subPath.(DistributionBucketOptionsExponential_FieldPath))
  1333  			case DistributionBucketOptions_FieldPathSelectorExplicitBuckets:
  1334  				explicitBucketsMask.AppendPath(tp.subPath.(DistributionBucketOptionsExplicit_FieldPath))
  1335  			case DistributionBucketOptions_FieldPathSelectorDynamicBuckets:
  1336  				dynamicBucketsMask.AppendPath(tp.subPath.(DistributionBucketOptionsDynamic_FieldPath))
  1337  			}
  1338  		}
  1339  	}
  1340  	if wholeLinearBucketsAccepted == false && len(linearBucketsMask.Paths) > 0 {
  1341  		if asOneOf, ok := source.Options.(*Distribution_BucketOptions_LinearBuckets); ok {
  1342  			result.Options = (*Distribution_BucketOptions_LinearBuckets)(nil)
  1343  			if asOneOf != nil {
  1344  				oneOfRes := &Distribution_BucketOptions_LinearBuckets{}
  1345  				oneOfRes.LinearBuckets = linearBucketsMask.Project(asOneOf.LinearBuckets)
  1346  				result.Options = oneOfRes
  1347  			}
  1348  		}
  1349  	}
  1350  	if wholeExponentialBucketsAccepted == false && len(exponentialBucketsMask.Paths) > 0 {
  1351  		if asOneOf, ok := source.Options.(*Distribution_BucketOptions_ExponentialBuckets); ok {
  1352  			result.Options = (*Distribution_BucketOptions_ExponentialBuckets)(nil)
  1353  			if asOneOf != nil {
  1354  				oneOfRes := &Distribution_BucketOptions_ExponentialBuckets{}
  1355  				oneOfRes.ExponentialBuckets = exponentialBucketsMask.Project(asOneOf.ExponentialBuckets)
  1356  				result.Options = oneOfRes
  1357  			}
  1358  		}
  1359  	}
  1360  	if wholeExplicitBucketsAccepted == false && len(explicitBucketsMask.Paths) > 0 {
  1361  		if asOneOf, ok := source.Options.(*Distribution_BucketOptions_ExplicitBuckets); ok {
  1362  			result.Options = (*Distribution_BucketOptions_ExplicitBuckets)(nil)
  1363  			if asOneOf != nil {
  1364  				oneOfRes := &Distribution_BucketOptions_ExplicitBuckets{}
  1365  				oneOfRes.ExplicitBuckets = explicitBucketsMask.Project(asOneOf.ExplicitBuckets)
  1366  				result.Options = oneOfRes
  1367  			}
  1368  		}
  1369  	}
  1370  	if wholeDynamicBucketsAccepted == false && len(dynamicBucketsMask.Paths) > 0 {
  1371  		if asOneOf, ok := source.Options.(*Distribution_BucketOptions_DynamicBuckets); ok {
  1372  			result.Options = (*Distribution_BucketOptions_DynamicBuckets)(nil)
  1373  			if asOneOf != nil {
  1374  				oneOfRes := &Distribution_BucketOptions_DynamicBuckets{}
  1375  				oneOfRes.DynamicBuckets = dynamicBucketsMask.Project(asOneOf.DynamicBuckets)
  1376  				result.Options = oneOfRes
  1377  			}
  1378  		}
  1379  	}
  1380  	return result
  1381  }
  1382  
  1383  func (fieldMask *Distribution_BucketOptions_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
  1384  	return fieldMask.Project(source.(*Distribution_BucketOptions))
  1385  }
  1386  
  1387  func (fieldMask *Distribution_BucketOptions_FieldMask) PathsCount() int {
  1388  	if fieldMask == nil {
  1389  		return 0
  1390  	}
  1391  	return len(fieldMask.Paths)
  1392  }
  1393  
  1394  type Distribution_BucketOptions_Linear_FieldMask struct {
  1395  	Paths []DistributionBucketOptionsLinear_FieldPath
  1396  }
  1397  
  1398  func FullDistribution_BucketOptions_Linear_FieldMask() *Distribution_BucketOptions_Linear_FieldMask {
  1399  	res := &Distribution_BucketOptions_Linear_FieldMask{}
  1400  	res.Paths = append(res.Paths, &DistributionBucketOptionsLinear_FieldTerminalPath{selector: DistributionBucketOptionsLinear_FieldPathSelectorNumFiniteBuckets})
  1401  	res.Paths = append(res.Paths, &DistributionBucketOptionsLinear_FieldTerminalPath{selector: DistributionBucketOptionsLinear_FieldPathSelectorWidth})
  1402  	res.Paths = append(res.Paths, &DistributionBucketOptionsLinear_FieldTerminalPath{selector: DistributionBucketOptionsLinear_FieldPathSelectorOffset})
  1403  	return res
  1404  }
  1405  
  1406  func (fieldMask *Distribution_BucketOptions_Linear_FieldMask) String() string {
  1407  	if fieldMask == nil {
  1408  		return "<nil>"
  1409  	}
  1410  	pathsStr := make([]string, 0, len(fieldMask.Paths))
  1411  	for _, path := range fieldMask.Paths {
  1412  		pathsStr = append(pathsStr, path.String())
  1413  	}
  1414  	return strings.Join(pathsStr, ", ")
  1415  }
  1416  
  1417  func (fieldMask *Distribution_BucketOptions_Linear_FieldMask) IsFull() bool {
  1418  	if fieldMask == nil {
  1419  		return false
  1420  	}
  1421  	presentSelectors := make([]bool, 3)
  1422  	for _, path := range fieldMask.Paths {
  1423  		if asFinal, ok := path.(*DistributionBucketOptionsLinear_FieldTerminalPath); ok {
  1424  			presentSelectors[int(asFinal.selector)] = true
  1425  		}
  1426  	}
  1427  	for _, flag := range presentSelectors {
  1428  		if !flag {
  1429  			return false
  1430  		}
  1431  	}
  1432  	return true
  1433  }
  1434  
  1435  func (fieldMask *Distribution_BucketOptions_Linear_FieldMask) ProtoReflect() preflect.Message {
  1436  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
  1437  		return ParseDistributionBucketOptionsLinear_FieldPath(raw)
  1438  	})
  1439  }
  1440  
  1441  func (fieldMask *Distribution_BucketOptions_Linear_FieldMask) ProtoMessage() {}
  1442  
  1443  func (fieldMask *Distribution_BucketOptions_Linear_FieldMask) Reset() {
  1444  	if fieldMask != nil {
  1445  		fieldMask.Paths = nil
  1446  	}
  1447  }
  1448  
  1449  func (fieldMask *Distribution_BucketOptions_Linear_FieldMask) Subtract(other *Distribution_BucketOptions_Linear_FieldMask) *Distribution_BucketOptions_Linear_FieldMask {
  1450  	result := &Distribution_BucketOptions_Linear_FieldMask{}
  1451  	removedSelectors := make([]bool, 3)
  1452  
  1453  	for _, path := range other.GetPaths() {
  1454  		switch tp := path.(type) {
  1455  		case *DistributionBucketOptionsLinear_FieldTerminalPath:
  1456  			removedSelectors[int(tp.selector)] = true
  1457  		}
  1458  	}
  1459  	for _, path := range fieldMask.GetPaths() {
  1460  		if !removedSelectors[int(path.Selector())] {
  1461  			result.Paths = append(result.Paths, path)
  1462  		}
  1463  	}
  1464  
  1465  	if len(result.Paths) == 0 {
  1466  		return nil
  1467  	}
  1468  	return result
  1469  }
  1470  
  1471  func (fieldMask *Distribution_BucketOptions_Linear_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
  1472  	return fieldMask.Subtract(other.(*Distribution_BucketOptions_Linear_FieldMask))
  1473  }
  1474  
  1475  // FilterInputFields generates copy of field paths with output_only field paths removed
  1476  func (fieldMask *Distribution_BucketOptions_Linear_FieldMask) FilterInputFields() *Distribution_BucketOptions_Linear_FieldMask {
  1477  	result := &Distribution_BucketOptions_Linear_FieldMask{}
  1478  	result.Paths = append(result.Paths, fieldMask.Paths...)
  1479  	return result
  1480  }
  1481  
  1482  // ToFieldMask is used for proto conversions
  1483  func (fieldMask *Distribution_BucketOptions_Linear_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
  1484  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1485  	for _, path := range fieldMask.Paths {
  1486  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
  1487  	}
  1488  	return protoFieldMask
  1489  }
  1490  
  1491  func (fieldMask *Distribution_BucketOptions_Linear_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
  1492  	if fieldMask == nil {
  1493  		return status.Error(codes.Internal, "target field mask is nil")
  1494  	}
  1495  	fieldMask.Paths = make([]DistributionBucketOptionsLinear_FieldPath, 0, len(protoFieldMask.Paths))
  1496  	for _, strPath := range protoFieldMask.Paths {
  1497  		path, err := ParseDistributionBucketOptionsLinear_FieldPath(strPath)
  1498  		if err != nil {
  1499  			return err
  1500  		}
  1501  		fieldMask.Paths = append(fieldMask.Paths, path)
  1502  	}
  1503  	return nil
  1504  }
  1505  
  1506  // implement methods required by customType
  1507  func (fieldMask Distribution_BucketOptions_Linear_FieldMask) Marshal() ([]byte, error) {
  1508  	protoFieldMask := fieldMask.ToProtoFieldMask()
  1509  	return proto.Marshal(protoFieldMask)
  1510  }
  1511  
  1512  func (fieldMask *Distribution_BucketOptions_Linear_FieldMask) Unmarshal(data []byte) error {
  1513  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1514  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
  1515  		return err
  1516  	}
  1517  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  1518  		return err
  1519  	}
  1520  	return nil
  1521  }
  1522  
  1523  func (fieldMask *Distribution_BucketOptions_Linear_FieldMask) Size() int {
  1524  	return proto.Size(fieldMask.ToProtoFieldMask())
  1525  }
  1526  
  1527  func (fieldMask Distribution_BucketOptions_Linear_FieldMask) MarshalJSON() ([]byte, error) {
  1528  	return json.Marshal(fieldMask.ToProtoFieldMask())
  1529  }
  1530  
  1531  func (fieldMask *Distribution_BucketOptions_Linear_FieldMask) UnmarshalJSON(data []byte) error {
  1532  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1533  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
  1534  		return err
  1535  	}
  1536  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  1537  		return err
  1538  	}
  1539  	return nil
  1540  }
  1541  
  1542  func (fieldMask *Distribution_BucketOptions_Linear_FieldMask) AppendPath(path DistributionBucketOptionsLinear_FieldPath) {
  1543  	fieldMask.Paths = append(fieldMask.Paths, path)
  1544  }
  1545  
  1546  func (fieldMask *Distribution_BucketOptions_Linear_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
  1547  	fieldMask.Paths = append(fieldMask.Paths, path.(DistributionBucketOptionsLinear_FieldPath))
  1548  }
  1549  
  1550  func (fieldMask *Distribution_BucketOptions_Linear_FieldMask) GetPaths() []DistributionBucketOptionsLinear_FieldPath {
  1551  	if fieldMask == nil {
  1552  		return nil
  1553  	}
  1554  	return fieldMask.Paths
  1555  }
  1556  
  1557  func (fieldMask *Distribution_BucketOptions_Linear_FieldMask) GetRawPaths() []gotenobject.FieldPath {
  1558  	if fieldMask == nil {
  1559  		return nil
  1560  	}
  1561  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
  1562  	for _, path := range fieldMask.Paths {
  1563  		rawPaths = append(rawPaths, path)
  1564  	}
  1565  	return rawPaths
  1566  }
  1567  
  1568  func (fieldMask *Distribution_BucketOptions_Linear_FieldMask) SetFromCliFlag(raw string) error {
  1569  	path, err := ParseDistributionBucketOptionsLinear_FieldPath(raw)
  1570  	if err != nil {
  1571  		return err
  1572  	}
  1573  	fieldMask.Paths = append(fieldMask.Paths, path)
  1574  	return nil
  1575  }
  1576  
  1577  func (fieldMask *Distribution_BucketOptions_Linear_FieldMask) Set(target, source *Distribution_BucketOptions_Linear) {
  1578  	for _, path := range fieldMask.Paths {
  1579  		val, _ := path.GetSingle(source)
  1580  		// if val is nil, then field does not exist in source, skip
  1581  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
  1582  		if val != nil {
  1583  			path.WithIValue(val).SetTo(&target)
  1584  		}
  1585  	}
  1586  }
  1587  
  1588  func (fieldMask *Distribution_BucketOptions_Linear_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
  1589  	fieldMask.Set(target.(*Distribution_BucketOptions_Linear), source.(*Distribution_BucketOptions_Linear))
  1590  }
  1591  
  1592  func (fieldMask *Distribution_BucketOptions_Linear_FieldMask) Project(source *Distribution_BucketOptions_Linear) *Distribution_BucketOptions_Linear {
  1593  	if source == nil {
  1594  		return nil
  1595  	}
  1596  	if fieldMask == nil {
  1597  		return source
  1598  	}
  1599  	result := &Distribution_BucketOptions_Linear{}
  1600  
  1601  	for _, p := range fieldMask.Paths {
  1602  		switch tp := p.(type) {
  1603  		case *DistributionBucketOptionsLinear_FieldTerminalPath:
  1604  			switch tp.selector {
  1605  			case DistributionBucketOptionsLinear_FieldPathSelectorNumFiniteBuckets:
  1606  				result.NumFiniteBuckets = source.NumFiniteBuckets
  1607  			case DistributionBucketOptionsLinear_FieldPathSelectorWidth:
  1608  				result.Width = source.Width
  1609  			case DistributionBucketOptionsLinear_FieldPathSelectorOffset:
  1610  				result.Offset = source.Offset
  1611  			}
  1612  		}
  1613  	}
  1614  	return result
  1615  }
  1616  
  1617  func (fieldMask *Distribution_BucketOptions_Linear_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
  1618  	return fieldMask.Project(source.(*Distribution_BucketOptions_Linear))
  1619  }
  1620  
  1621  func (fieldMask *Distribution_BucketOptions_Linear_FieldMask) PathsCount() int {
  1622  	if fieldMask == nil {
  1623  		return 0
  1624  	}
  1625  	return len(fieldMask.Paths)
  1626  }
  1627  
  1628  type Distribution_BucketOptions_Exponential_FieldMask struct {
  1629  	Paths []DistributionBucketOptionsExponential_FieldPath
  1630  }
  1631  
  1632  func FullDistribution_BucketOptions_Exponential_FieldMask() *Distribution_BucketOptions_Exponential_FieldMask {
  1633  	res := &Distribution_BucketOptions_Exponential_FieldMask{}
  1634  	res.Paths = append(res.Paths, &DistributionBucketOptionsExponential_FieldTerminalPath{selector: DistributionBucketOptionsExponential_FieldPathSelectorNumFiniteBuckets})
  1635  	res.Paths = append(res.Paths, &DistributionBucketOptionsExponential_FieldTerminalPath{selector: DistributionBucketOptionsExponential_FieldPathSelectorGrowthFactor})
  1636  	res.Paths = append(res.Paths, &DistributionBucketOptionsExponential_FieldTerminalPath{selector: DistributionBucketOptionsExponential_FieldPathSelectorScale})
  1637  	return res
  1638  }
  1639  
  1640  func (fieldMask *Distribution_BucketOptions_Exponential_FieldMask) String() string {
  1641  	if fieldMask == nil {
  1642  		return "<nil>"
  1643  	}
  1644  	pathsStr := make([]string, 0, len(fieldMask.Paths))
  1645  	for _, path := range fieldMask.Paths {
  1646  		pathsStr = append(pathsStr, path.String())
  1647  	}
  1648  	return strings.Join(pathsStr, ", ")
  1649  }
  1650  
  1651  func (fieldMask *Distribution_BucketOptions_Exponential_FieldMask) IsFull() bool {
  1652  	if fieldMask == nil {
  1653  		return false
  1654  	}
  1655  	presentSelectors := make([]bool, 3)
  1656  	for _, path := range fieldMask.Paths {
  1657  		if asFinal, ok := path.(*DistributionBucketOptionsExponential_FieldTerminalPath); ok {
  1658  			presentSelectors[int(asFinal.selector)] = true
  1659  		}
  1660  	}
  1661  	for _, flag := range presentSelectors {
  1662  		if !flag {
  1663  			return false
  1664  		}
  1665  	}
  1666  	return true
  1667  }
  1668  
  1669  func (fieldMask *Distribution_BucketOptions_Exponential_FieldMask) ProtoReflect() preflect.Message {
  1670  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
  1671  		return ParseDistributionBucketOptionsExponential_FieldPath(raw)
  1672  	})
  1673  }
  1674  
  1675  func (fieldMask *Distribution_BucketOptions_Exponential_FieldMask) ProtoMessage() {}
  1676  
  1677  func (fieldMask *Distribution_BucketOptions_Exponential_FieldMask) Reset() {
  1678  	if fieldMask != nil {
  1679  		fieldMask.Paths = nil
  1680  	}
  1681  }
  1682  
  1683  func (fieldMask *Distribution_BucketOptions_Exponential_FieldMask) Subtract(other *Distribution_BucketOptions_Exponential_FieldMask) *Distribution_BucketOptions_Exponential_FieldMask {
  1684  	result := &Distribution_BucketOptions_Exponential_FieldMask{}
  1685  	removedSelectors := make([]bool, 3)
  1686  
  1687  	for _, path := range other.GetPaths() {
  1688  		switch tp := path.(type) {
  1689  		case *DistributionBucketOptionsExponential_FieldTerminalPath:
  1690  			removedSelectors[int(tp.selector)] = true
  1691  		}
  1692  	}
  1693  	for _, path := range fieldMask.GetPaths() {
  1694  		if !removedSelectors[int(path.Selector())] {
  1695  			result.Paths = append(result.Paths, path)
  1696  		}
  1697  	}
  1698  
  1699  	if len(result.Paths) == 0 {
  1700  		return nil
  1701  	}
  1702  	return result
  1703  }
  1704  
  1705  func (fieldMask *Distribution_BucketOptions_Exponential_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
  1706  	return fieldMask.Subtract(other.(*Distribution_BucketOptions_Exponential_FieldMask))
  1707  }
  1708  
  1709  // FilterInputFields generates copy of field paths with output_only field paths removed
  1710  func (fieldMask *Distribution_BucketOptions_Exponential_FieldMask) FilterInputFields() *Distribution_BucketOptions_Exponential_FieldMask {
  1711  	result := &Distribution_BucketOptions_Exponential_FieldMask{}
  1712  	result.Paths = append(result.Paths, fieldMask.Paths...)
  1713  	return result
  1714  }
  1715  
  1716  // ToFieldMask is used for proto conversions
  1717  func (fieldMask *Distribution_BucketOptions_Exponential_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
  1718  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1719  	for _, path := range fieldMask.Paths {
  1720  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
  1721  	}
  1722  	return protoFieldMask
  1723  }
  1724  
  1725  func (fieldMask *Distribution_BucketOptions_Exponential_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
  1726  	if fieldMask == nil {
  1727  		return status.Error(codes.Internal, "target field mask is nil")
  1728  	}
  1729  	fieldMask.Paths = make([]DistributionBucketOptionsExponential_FieldPath, 0, len(protoFieldMask.Paths))
  1730  	for _, strPath := range protoFieldMask.Paths {
  1731  		path, err := ParseDistributionBucketOptionsExponential_FieldPath(strPath)
  1732  		if err != nil {
  1733  			return err
  1734  		}
  1735  		fieldMask.Paths = append(fieldMask.Paths, path)
  1736  	}
  1737  	return nil
  1738  }
  1739  
  1740  // implement methods required by customType
  1741  func (fieldMask Distribution_BucketOptions_Exponential_FieldMask) Marshal() ([]byte, error) {
  1742  	protoFieldMask := fieldMask.ToProtoFieldMask()
  1743  	return proto.Marshal(protoFieldMask)
  1744  }
  1745  
  1746  func (fieldMask *Distribution_BucketOptions_Exponential_FieldMask) Unmarshal(data []byte) error {
  1747  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1748  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
  1749  		return err
  1750  	}
  1751  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  1752  		return err
  1753  	}
  1754  	return nil
  1755  }
  1756  
  1757  func (fieldMask *Distribution_BucketOptions_Exponential_FieldMask) Size() int {
  1758  	return proto.Size(fieldMask.ToProtoFieldMask())
  1759  }
  1760  
  1761  func (fieldMask Distribution_BucketOptions_Exponential_FieldMask) MarshalJSON() ([]byte, error) {
  1762  	return json.Marshal(fieldMask.ToProtoFieldMask())
  1763  }
  1764  
  1765  func (fieldMask *Distribution_BucketOptions_Exponential_FieldMask) UnmarshalJSON(data []byte) error {
  1766  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1767  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
  1768  		return err
  1769  	}
  1770  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  1771  		return err
  1772  	}
  1773  	return nil
  1774  }
  1775  
  1776  func (fieldMask *Distribution_BucketOptions_Exponential_FieldMask) AppendPath(path DistributionBucketOptionsExponential_FieldPath) {
  1777  	fieldMask.Paths = append(fieldMask.Paths, path)
  1778  }
  1779  
  1780  func (fieldMask *Distribution_BucketOptions_Exponential_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
  1781  	fieldMask.Paths = append(fieldMask.Paths, path.(DistributionBucketOptionsExponential_FieldPath))
  1782  }
  1783  
  1784  func (fieldMask *Distribution_BucketOptions_Exponential_FieldMask) GetPaths() []DistributionBucketOptionsExponential_FieldPath {
  1785  	if fieldMask == nil {
  1786  		return nil
  1787  	}
  1788  	return fieldMask.Paths
  1789  }
  1790  
  1791  func (fieldMask *Distribution_BucketOptions_Exponential_FieldMask) GetRawPaths() []gotenobject.FieldPath {
  1792  	if fieldMask == nil {
  1793  		return nil
  1794  	}
  1795  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
  1796  	for _, path := range fieldMask.Paths {
  1797  		rawPaths = append(rawPaths, path)
  1798  	}
  1799  	return rawPaths
  1800  }
  1801  
  1802  func (fieldMask *Distribution_BucketOptions_Exponential_FieldMask) SetFromCliFlag(raw string) error {
  1803  	path, err := ParseDistributionBucketOptionsExponential_FieldPath(raw)
  1804  	if err != nil {
  1805  		return err
  1806  	}
  1807  	fieldMask.Paths = append(fieldMask.Paths, path)
  1808  	return nil
  1809  }
  1810  
  1811  func (fieldMask *Distribution_BucketOptions_Exponential_FieldMask) Set(target, source *Distribution_BucketOptions_Exponential) {
  1812  	for _, path := range fieldMask.Paths {
  1813  		val, _ := path.GetSingle(source)
  1814  		// if val is nil, then field does not exist in source, skip
  1815  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
  1816  		if val != nil {
  1817  			path.WithIValue(val).SetTo(&target)
  1818  		}
  1819  	}
  1820  }
  1821  
  1822  func (fieldMask *Distribution_BucketOptions_Exponential_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
  1823  	fieldMask.Set(target.(*Distribution_BucketOptions_Exponential), source.(*Distribution_BucketOptions_Exponential))
  1824  }
  1825  
  1826  func (fieldMask *Distribution_BucketOptions_Exponential_FieldMask) Project(source *Distribution_BucketOptions_Exponential) *Distribution_BucketOptions_Exponential {
  1827  	if source == nil {
  1828  		return nil
  1829  	}
  1830  	if fieldMask == nil {
  1831  		return source
  1832  	}
  1833  	result := &Distribution_BucketOptions_Exponential{}
  1834  
  1835  	for _, p := range fieldMask.Paths {
  1836  		switch tp := p.(type) {
  1837  		case *DistributionBucketOptionsExponential_FieldTerminalPath:
  1838  			switch tp.selector {
  1839  			case DistributionBucketOptionsExponential_FieldPathSelectorNumFiniteBuckets:
  1840  				result.NumFiniteBuckets = source.NumFiniteBuckets
  1841  			case DistributionBucketOptionsExponential_FieldPathSelectorGrowthFactor:
  1842  				result.GrowthFactor = source.GrowthFactor
  1843  			case DistributionBucketOptionsExponential_FieldPathSelectorScale:
  1844  				result.Scale = source.Scale
  1845  			}
  1846  		}
  1847  	}
  1848  	return result
  1849  }
  1850  
  1851  func (fieldMask *Distribution_BucketOptions_Exponential_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
  1852  	return fieldMask.Project(source.(*Distribution_BucketOptions_Exponential))
  1853  }
  1854  
  1855  func (fieldMask *Distribution_BucketOptions_Exponential_FieldMask) PathsCount() int {
  1856  	if fieldMask == nil {
  1857  		return 0
  1858  	}
  1859  	return len(fieldMask.Paths)
  1860  }
  1861  
  1862  type Distribution_BucketOptions_Explicit_FieldMask struct {
  1863  	Paths []DistributionBucketOptionsExplicit_FieldPath
  1864  }
  1865  
  1866  func FullDistribution_BucketOptions_Explicit_FieldMask() *Distribution_BucketOptions_Explicit_FieldMask {
  1867  	res := &Distribution_BucketOptions_Explicit_FieldMask{}
  1868  	res.Paths = append(res.Paths, &DistributionBucketOptionsExplicit_FieldTerminalPath{selector: DistributionBucketOptionsExplicit_FieldPathSelectorBounds})
  1869  	return res
  1870  }
  1871  
  1872  func (fieldMask *Distribution_BucketOptions_Explicit_FieldMask) String() string {
  1873  	if fieldMask == nil {
  1874  		return "<nil>"
  1875  	}
  1876  	pathsStr := make([]string, 0, len(fieldMask.Paths))
  1877  	for _, path := range fieldMask.Paths {
  1878  		pathsStr = append(pathsStr, path.String())
  1879  	}
  1880  	return strings.Join(pathsStr, ", ")
  1881  }
  1882  
  1883  func (fieldMask *Distribution_BucketOptions_Explicit_FieldMask) IsFull() bool {
  1884  	if fieldMask == nil {
  1885  		return false
  1886  	}
  1887  	presentSelectors := make([]bool, 1)
  1888  	for _, path := range fieldMask.Paths {
  1889  		if asFinal, ok := path.(*DistributionBucketOptionsExplicit_FieldTerminalPath); ok {
  1890  			presentSelectors[int(asFinal.selector)] = true
  1891  		}
  1892  	}
  1893  	for _, flag := range presentSelectors {
  1894  		if !flag {
  1895  			return false
  1896  		}
  1897  	}
  1898  	return true
  1899  }
  1900  
  1901  func (fieldMask *Distribution_BucketOptions_Explicit_FieldMask) ProtoReflect() preflect.Message {
  1902  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
  1903  		return ParseDistributionBucketOptionsExplicit_FieldPath(raw)
  1904  	})
  1905  }
  1906  
  1907  func (fieldMask *Distribution_BucketOptions_Explicit_FieldMask) ProtoMessage() {}
  1908  
  1909  func (fieldMask *Distribution_BucketOptions_Explicit_FieldMask) Reset() {
  1910  	if fieldMask != nil {
  1911  		fieldMask.Paths = nil
  1912  	}
  1913  }
  1914  
  1915  func (fieldMask *Distribution_BucketOptions_Explicit_FieldMask) Subtract(other *Distribution_BucketOptions_Explicit_FieldMask) *Distribution_BucketOptions_Explicit_FieldMask {
  1916  	result := &Distribution_BucketOptions_Explicit_FieldMask{}
  1917  	removedSelectors := make([]bool, 1)
  1918  
  1919  	for _, path := range other.GetPaths() {
  1920  		switch tp := path.(type) {
  1921  		case *DistributionBucketOptionsExplicit_FieldTerminalPath:
  1922  			removedSelectors[int(tp.selector)] = true
  1923  		}
  1924  	}
  1925  	for _, path := range fieldMask.GetPaths() {
  1926  		if !removedSelectors[int(path.Selector())] {
  1927  			result.Paths = append(result.Paths, path)
  1928  		}
  1929  	}
  1930  
  1931  	if len(result.Paths) == 0 {
  1932  		return nil
  1933  	}
  1934  	return result
  1935  }
  1936  
  1937  func (fieldMask *Distribution_BucketOptions_Explicit_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
  1938  	return fieldMask.Subtract(other.(*Distribution_BucketOptions_Explicit_FieldMask))
  1939  }
  1940  
  1941  // FilterInputFields generates copy of field paths with output_only field paths removed
  1942  func (fieldMask *Distribution_BucketOptions_Explicit_FieldMask) FilterInputFields() *Distribution_BucketOptions_Explicit_FieldMask {
  1943  	result := &Distribution_BucketOptions_Explicit_FieldMask{}
  1944  	result.Paths = append(result.Paths, fieldMask.Paths...)
  1945  	return result
  1946  }
  1947  
  1948  // ToFieldMask is used for proto conversions
  1949  func (fieldMask *Distribution_BucketOptions_Explicit_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
  1950  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1951  	for _, path := range fieldMask.Paths {
  1952  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
  1953  	}
  1954  	return protoFieldMask
  1955  }
  1956  
  1957  func (fieldMask *Distribution_BucketOptions_Explicit_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
  1958  	if fieldMask == nil {
  1959  		return status.Error(codes.Internal, "target field mask is nil")
  1960  	}
  1961  	fieldMask.Paths = make([]DistributionBucketOptionsExplicit_FieldPath, 0, len(protoFieldMask.Paths))
  1962  	for _, strPath := range protoFieldMask.Paths {
  1963  		path, err := ParseDistributionBucketOptionsExplicit_FieldPath(strPath)
  1964  		if err != nil {
  1965  			return err
  1966  		}
  1967  		fieldMask.Paths = append(fieldMask.Paths, path)
  1968  	}
  1969  	return nil
  1970  }
  1971  
  1972  // implement methods required by customType
  1973  func (fieldMask Distribution_BucketOptions_Explicit_FieldMask) Marshal() ([]byte, error) {
  1974  	protoFieldMask := fieldMask.ToProtoFieldMask()
  1975  	return proto.Marshal(protoFieldMask)
  1976  }
  1977  
  1978  func (fieldMask *Distribution_BucketOptions_Explicit_FieldMask) Unmarshal(data []byte) error {
  1979  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1980  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
  1981  		return err
  1982  	}
  1983  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  1984  		return err
  1985  	}
  1986  	return nil
  1987  }
  1988  
  1989  func (fieldMask *Distribution_BucketOptions_Explicit_FieldMask) Size() int {
  1990  	return proto.Size(fieldMask.ToProtoFieldMask())
  1991  }
  1992  
  1993  func (fieldMask Distribution_BucketOptions_Explicit_FieldMask) MarshalJSON() ([]byte, error) {
  1994  	return json.Marshal(fieldMask.ToProtoFieldMask())
  1995  }
  1996  
  1997  func (fieldMask *Distribution_BucketOptions_Explicit_FieldMask) UnmarshalJSON(data []byte) error {
  1998  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1999  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
  2000  		return err
  2001  	}
  2002  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  2003  		return err
  2004  	}
  2005  	return nil
  2006  }
  2007  
  2008  func (fieldMask *Distribution_BucketOptions_Explicit_FieldMask) AppendPath(path DistributionBucketOptionsExplicit_FieldPath) {
  2009  	fieldMask.Paths = append(fieldMask.Paths, path)
  2010  }
  2011  
  2012  func (fieldMask *Distribution_BucketOptions_Explicit_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
  2013  	fieldMask.Paths = append(fieldMask.Paths, path.(DistributionBucketOptionsExplicit_FieldPath))
  2014  }
  2015  
  2016  func (fieldMask *Distribution_BucketOptions_Explicit_FieldMask) GetPaths() []DistributionBucketOptionsExplicit_FieldPath {
  2017  	if fieldMask == nil {
  2018  		return nil
  2019  	}
  2020  	return fieldMask.Paths
  2021  }
  2022  
  2023  func (fieldMask *Distribution_BucketOptions_Explicit_FieldMask) GetRawPaths() []gotenobject.FieldPath {
  2024  	if fieldMask == nil {
  2025  		return nil
  2026  	}
  2027  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
  2028  	for _, path := range fieldMask.Paths {
  2029  		rawPaths = append(rawPaths, path)
  2030  	}
  2031  	return rawPaths
  2032  }
  2033  
  2034  func (fieldMask *Distribution_BucketOptions_Explicit_FieldMask) SetFromCliFlag(raw string) error {
  2035  	path, err := ParseDistributionBucketOptionsExplicit_FieldPath(raw)
  2036  	if err != nil {
  2037  		return err
  2038  	}
  2039  	fieldMask.Paths = append(fieldMask.Paths, path)
  2040  	return nil
  2041  }
  2042  
  2043  func (fieldMask *Distribution_BucketOptions_Explicit_FieldMask) Set(target, source *Distribution_BucketOptions_Explicit) {
  2044  	for _, path := range fieldMask.Paths {
  2045  		val, _ := path.GetSingle(source)
  2046  		// if val is nil, then field does not exist in source, skip
  2047  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
  2048  		if val != nil {
  2049  			path.WithIValue(val).SetTo(&target)
  2050  		}
  2051  	}
  2052  }
  2053  
  2054  func (fieldMask *Distribution_BucketOptions_Explicit_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
  2055  	fieldMask.Set(target.(*Distribution_BucketOptions_Explicit), source.(*Distribution_BucketOptions_Explicit))
  2056  }
  2057  
  2058  func (fieldMask *Distribution_BucketOptions_Explicit_FieldMask) Project(source *Distribution_BucketOptions_Explicit) *Distribution_BucketOptions_Explicit {
  2059  	if source == nil {
  2060  		return nil
  2061  	}
  2062  	if fieldMask == nil {
  2063  		return source
  2064  	}
  2065  	result := &Distribution_BucketOptions_Explicit{}
  2066  
  2067  	for _, p := range fieldMask.Paths {
  2068  		switch tp := p.(type) {
  2069  		case *DistributionBucketOptionsExplicit_FieldTerminalPath:
  2070  			switch tp.selector {
  2071  			case DistributionBucketOptionsExplicit_FieldPathSelectorBounds:
  2072  				result.Bounds = source.Bounds
  2073  			}
  2074  		}
  2075  	}
  2076  	return result
  2077  }
  2078  
  2079  func (fieldMask *Distribution_BucketOptions_Explicit_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
  2080  	return fieldMask.Project(source.(*Distribution_BucketOptions_Explicit))
  2081  }
  2082  
  2083  func (fieldMask *Distribution_BucketOptions_Explicit_FieldMask) PathsCount() int {
  2084  	if fieldMask == nil {
  2085  		return 0
  2086  	}
  2087  	return len(fieldMask.Paths)
  2088  }
  2089  
  2090  type Distribution_BucketOptions_Dynamic_FieldMask struct {
  2091  	Paths []DistributionBucketOptionsDynamic_FieldPath
  2092  }
  2093  
  2094  func FullDistribution_BucketOptions_Dynamic_FieldMask() *Distribution_BucketOptions_Dynamic_FieldMask {
  2095  	res := &Distribution_BucketOptions_Dynamic_FieldMask{}
  2096  	res.Paths = append(res.Paths, &DistributionBucketOptionsDynamic_FieldTerminalPath{selector: DistributionBucketOptionsDynamic_FieldPathSelectorCompression})
  2097  	res.Paths = append(res.Paths, &DistributionBucketOptionsDynamic_FieldTerminalPath{selector: DistributionBucketOptionsDynamic_FieldPathSelectorMeans})
  2098  	return res
  2099  }
  2100  
  2101  func (fieldMask *Distribution_BucketOptions_Dynamic_FieldMask) String() string {
  2102  	if fieldMask == nil {
  2103  		return "<nil>"
  2104  	}
  2105  	pathsStr := make([]string, 0, len(fieldMask.Paths))
  2106  	for _, path := range fieldMask.Paths {
  2107  		pathsStr = append(pathsStr, path.String())
  2108  	}
  2109  	return strings.Join(pathsStr, ", ")
  2110  }
  2111  
  2112  func (fieldMask *Distribution_BucketOptions_Dynamic_FieldMask) IsFull() bool {
  2113  	if fieldMask == nil {
  2114  		return false
  2115  	}
  2116  	presentSelectors := make([]bool, 2)
  2117  	for _, path := range fieldMask.Paths {
  2118  		if asFinal, ok := path.(*DistributionBucketOptionsDynamic_FieldTerminalPath); ok {
  2119  			presentSelectors[int(asFinal.selector)] = true
  2120  		}
  2121  	}
  2122  	for _, flag := range presentSelectors {
  2123  		if !flag {
  2124  			return false
  2125  		}
  2126  	}
  2127  	return true
  2128  }
  2129  
  2130  func (fieldMask *Distribution_BucketOptions_Dynamic_FieldMask) ProtoReflect() preflect.Message {
  2131  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
  2132  		return ParseDistributionBucketOptionsDynamic_FieldPath(raw)
  2133  	})
  2134  }
  2135  
  2136  func (fieldMask *Distribution_BucketOptions_Dynamic_FieldMask) ProtoMessage() {}
  2137  
  2138  func (fieldMask *Distribution_BucketOptions_Dynamic_FieldMask) Reset() {
  2139  	if fieldMask != nil {
  2140  		fieldMask.Paths = nil
  2141  	}
  2142  }
  2143  
  2144  func (fieldMask *Distribution_BucketOptions_Dynamic_FieldMask) Subtract(other *Distribution_BucketOptions_Dynamic_FieldMask) *Distribution_BucketOptions_Dynamic_FieldMask {
  2145  	result := &Distribution_BucketOptions_Dynamic_FieldMask{}
  2146  	removedSelectors := make([]bool, 2)
  2147  
  2148  	for _, path := range other.GetPaths() {
  2149  		switch tp := path.(type) {
  2150  		case *DistributionBucketOptionsDynamic_FieldTerminalPath:
  2151  			removedSelectors[int(tp.selector)] = true
  2152  		}
  2153  	}
  2154  	for _, path := range fieldMask.GetPaths() {
  2155  		if !removedSelectors[int(path.Selector())] {
  2156  			result.Paths = append(result.Paths, path)
  2157  		}
  2158  	}
  2159  
  2160  	if len(result.Paths) == 0 {
  2161  		return nil
  2162  	}
  2163  	return result
  2164  }
  2165  
  2166  func (fieldMask *Distribution_BucketOptions_Dynamic_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
  2167  	return fieldMask.Subtract(other.(*Distribution_BucketOptions_Dynamic_FieldMask))
  2168  }
  2169  
  2170  // FilterInputFields generates copy of field paths with output_only field paths removed
  2171  func (fieldMask *Distribution_BucketOptions_Dynamic_FieldMask) FilterInputFields() *Distribution_BucketOptions_Dynamic_FieldMask {
  2172  	result := &Distribution_BucketOptions_Dynamic_FieldMask{}
  2173  	result.Paths = append(result.Paths, fieldMask.Paths...)
  2174  	return result
  2175  }
  2176  
  2177  // ToFieldMask is used for proto conversions
  2178  func (fieldMask *Distribution_BucketOptions_Dynamic_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
  2179  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  2180  	for _, path := range fieldMask.Paths {
  2181  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
  2182  	}
  2183  	return protoFieldMask
  2184  }
  2185  
  2186  func (fieldMask *Distribution_BucketOptions_Dynamic_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
  2187  	if fieldMask == nil {
  2188  		return status.Error(codes.Internal, "target field mask is nil")
  2189  	}
  2190  	fieldMask.Paths = make([]DistributionBucketOptionsDynamic_FieldPath, 0, len(protoFieldMask.Paths))
  2191  	for _, strPath := range protoFieldMask.Paths {
  2192  		path, err := ParseDistributionBucketOptionsDynamic_FieldPath(strPath)
  2193  		if err != nil {
  2194  			return err
  2195  		}
  2196  		fieldMask.Paths = append(fieldMask.Paths, path)
  2197  	}
  2198  	return nil
  2199  }
  2200  
  2201  // implement methods required by customType
  2202  func (fieldMask Distribution_BucketOptions_Dynamic_FieldMask) Marshal() ([]byte, error) {
  2203  	protoFieldMask := fieldMask.ToProtoFieldMask()
  2204  	return proto.Marshal(protoFieldMask)
  2205  }
  2206  
  2207  func (fieldMask *Distribution_BucketOptions_Dynamic_FieldMask) Unmarshal(data []byte) error {
  2208  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  2209  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
  2210  		return err
  2211  	}
  2212  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  2213  		return err
  2214  	}
  2215  	return nil
  2216  }
  2217  
  2218  func (fieldMask *Distribution_BucketOptions_Dynamic_FieldMask) Size() int {
  2219  	return proto.Size(fieldMask.ToProtoFieldMask())
  2220  }
  2221  
  2222  func (fieldMask Distribution_BucketOptions_Dynamic_FieldMask) MarshalJSON() ([]byte, error) {
  2223  	return json.Marshal(fieldMask.ToProtoFieldMask())
  2224  }
  2225  
  2226  func (fieldMask *Distribution_BucketOptions_Dynamic_FieldMask) UnmarshalJSON(data []byte) error {
  2227  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  2228  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
  2229  		return err
  2230  	}
  2231  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  2232  		return err
  2233  	}
  2234  	return nil
  2235  }
  2236  
  2237  func (fieldMask *Distribution_BucketOptions_Dynamic_FieldMask) AppendPath(path DistributionBucketOptionsDynamic_FieldPath) {
  2238  	fieldMask.Paths = append(fieldMask.Paths, path)
  2239  }
  2240  
  2241  func (fieldMask *Distribution_BucketOptions_Dynamic_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
  2242  	fieldMask.Paths = append(fieldMask.Paths, path.(DistributionBucketOptionsDynamic_FieldPath))
  2243  }
  2244  
  2245  func (fieldMask *Distribution_BucketOptions_Dynamic_FieldMask) GetPaths() []DistributionBucketOptionsDynamic_FieldPath {
  2246  	if fieldMask == nil {
  2247  		return nil
  2248  	}
  2249  	return fieldMask.Paths
  2250  }
  2251  
  2252  func (fieldMask *Distribution_BucketOptions_Dynamic_FieldMask) GetRawPaths() []gotenobject.FieldPath {
  2253  	if fieldMask == nil {
  2254  		return nil
  2255  	}
  2256  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
  2257  	for _, path := range fieldMask.Paths {
  2258  		rawPaths = append(rawPaths, path)
  2259  	}
  2260  	return rawPaths
  2261  }
  2262  
  2263  func (fieldMask *Distribution_BucketOptions_Dynamic_FieldMask) SetFromCliFlag(raw string) error {
  2264  	path, err := ParseDistributionBucketOptionsDynamic_FieldPath(raw)
  2265  	if err != nil {
  2266  		return err
  2267  	}
  2268  	fieldMask.Paths = append(fieldMask.Paths, path)
  2269  	return nil
  2270  }
  2271  
  2272  func (fieldMask *Distribution_BucketOptions_Dynamic_FieldMask) Set(target, source *Distribution_BucketOptions_Dynamic) {
  2273  	for _, path := range fieldMask.Paths {
  2274  		val, _ := path.GetSingle(source)
  2275  		// if val is nil, then field does not exist in source, skip
  2276  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
  2277  		if val != nil {
  2278  			path.WithIValue(val).SetTo(&target)
  2279  		}
  2280  	}
  2281  }
  2282  
  2283  func (fieldMask *Distribution_BucketOptions_Dynamic_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
  2284  	fieldMask.Set(target.(*Distribution_BucketOptions_Dynamic), source.(*Distribution_BucketOptions_Dynamic))
  2285  }
  2286  
  2287  func (fieldMask *Distribution_BucketOptions_Dynamic_FieldMask) Project(source *Distribution_BucketOptions_Dynamic) *Distribution_BucketOptions_Dynamic {
  2288  	if source == nil {
  2289  		return nil
  2290  	}
  2291  	if fieldMask == nil {
  2292  		return source
  2293  	}
  2294  	result := &Distribution_BucketOptions_Dynamic{}
  2295  
  2296  	for _, p := range fieldMask.Paths {
  2297  		switch tp := p.(type) {
  2298  		case *DistributionBucketOptionsDynamic_FieldTerminalPath:
  2299  			switch tp.selector {
  2300  			case DistributionBucketOptionsDynamic_FieldPathSelectorCompression:
  2301  				result.Compression = source.Compression
  2302  			case DistributionBucketOptionsDynamic_FieldPathSelectorMeans:
  2303  				result.Means = source.Means
  2304  			}
  2305  		}
  2306  	}
  2307  	return result
  2308  }
  2309  
  2310  func (fieldMask *Distribution_BucketOptions_Dynamic_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
  2311  	return fieldMask.Project(source.(*Distribution_BucketOptions_Dynamic))
  2312  }
  2313  
  2314  func (fieldMask *Distribution_BucketOptions_Dynamic_FieldMask) PathsCount() int {
  2315  	if fieldMask == nil {
  2316  		return 0
  2317  	}
  2318  	return len(fieldMask.Paths)
  2319  }
  2320  
  2321  type TypedValue_FieldMask struct {
  2322  	Paths []TypedValue_FieldPath
  2323  }
  2324  
  2325  func FullTypedValue_FieldMask() *TypedValue_FieldMask {
  2326  	res := &TypedValue_FieldMask{}
  2327  	res.Paths = append(res.Paths, &TypedValue_FieldTerminalPath{selector: TypedValue_FieldPathSelectorBoolValue})
  2328  	res.Paths = append(res.Paths, &TypedValue_FieldTerminalPath{selector: TypedValue_FieldPathSelectorInt64Value})
  2329  	res.Paths = append(res.Paths, &TypedValue_FieldTerminalPath{selector: TypedValue_FieldPathSelectorDoubleValue})
  2330  	res.Paths = append(res.Paths, &TypedValue_FieldTerminalPath{selector: TypedValue_FieldPathSelectorStringValue})
  2331  	res.Paths = append(res.Paths, &TypedValue_FieldTerminalPath{selector: TypedValue_FieldPathSelectorDistributionValue})
  2332  	return res
  2333  }
  2334  
  2335  func (fieldMask *TypedValue_FieldMask) String() string {
  2336  	if fieldMask == nil {
  2337  		return "<nil>"
  2338  	}
  2339  	pathsStr := make([]string, 0, len(fieldMask.Paths))
  2340  	for _, path := range fieldMask.Paths {
  2341  		pathsStr = append(pathsStr, path.String())
  2342  	}
  2343  	return strings.Join(pathsStr, ", ")
  2344  }
  2345  
  2346  func (fieldMask *TypedValue_FieldMask) IsFull() bool {
  2347  	if fieldMask == nil {
  2348  		return false
  2349  	}
  2350  	presentSelectors := make([]bool, 5)
  2351  	for _, path := range fieldMask.Paths {
  2352  		if asFinal, ok := path.(*TypedValue_FieldTerminalPath); ok {
  2353  			presentSelectors[int(asFinal.selector)] = true
  2354  		}
  2355  	}
  2356  	for _, flag := range presentSelectors {
  2357  		if !flag {
  2358  			return false
  2359  		}
  2360  	}
  2361  	return true
  2362  }
  2363  
  2364  func (fieldMask *TypedValue_FieldMask) ProtoReflect() preflect.Message {
  2365  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
  2366  		return ParseTypedValue_FieldPath(raw)
  2367  	})
  2368  }
  2369  
  2370  func (fieldMask *TypedValue_FieldMask) ProtoMessage() {}
  2371  
  2372  func (fieldMask *TypedValue_FieldMask) Reset() {
  2373  	if fieldMask != nil {
  2374  		fieldMask.Paths = nil
  2375  	}
  2376  }
  2377  
  2378  func (fieldMask *TypedValue_FieldMask) Subtract(other *TypedValue_FieldMask) *TypedValue_FieldMask {
  2379  	result := &TypedValue_FieldMask{}
  2380  	removedSelectors := make([]bool, 5)
  2381  	otherSubMasks := map[TypedValue_FieldPathSelector]gotenobject.FieldMask{
  2382  		TypedValue_FieldPathSelectorDistributionValue: &Distribution_FieldMask{},
  2383  	}
  2384  	mySubMasks := map[TypedValue_FieldPathSelector]gotenobject.FieldMask{
  2385  		TypedValue_FieldPathSelectorDistributionValue: &Distribution_FieldMask{},
  2386  	}
  2387  
  2388  	for _, path := range other.GetPaths() {
  2389  		switch tp := path.(type) {
  2390  		case *TypedValue_FieldTerminalPath:
  2391  			removedSelectors[int(tp.selector)] = true
  2392  		case *TypedValue_FieldSubPath:
  2393  			otherSubMasks[tp.selector].AppendRawPath(tp.subPath)
  2394  		}
  2395  	}
  2396  	for _, path := range fieldMask.GetPaths() {
  2397  		if !removedSelectors[int(path.Selector())] {
  2398  			if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 {
  2399  				if tp, ok := path.(*TypedValue_FieldTerminalPath); ok {
  2400  					switch tp.selector {
  2401  					case TypedValue_FieldPathSelectorDistributionValue:
  2402  						mySubMasks[TypedValue_FieldPathSelectorDistributionValue] = FullDistribution_FieldMask()
  2403  					}
  2404  				} else if tp, ok := path.(*TypedValue_FieldSubPath); ok {
  2405  					mySubMasks[tp.selector].AppendRawPath(tp.subPath)
  2406  				}
  2407  			} else {
  2408  				result.Paths = append(result.Paths, path)
  2409  			}
  2410  		}
  2411  	}
  2412  	for selector, mySubMask := range mySubMasks {
  2413  		if mySubMask.PathsCount() > 0 {
  2414  			for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() {
  2415  				result.Paths = append(result.Paths, &TypedValue_FieldSubPath{selector: selector, subPath: allowedPath})
  2416  			}
  2417  		}
  2418  	}
  2419  
  2420  	if len(result.Paths) == 0 {
  2421  		return nil
  2422  	}
  2423  	return result
  2424  }
  2425  
  2426  func (fieldMask *TypedValue_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
  2427  	return fieldMask.Subtract(other.(*TypedValue_FieldMask))
  2428  }
  2429  
  2430  // FilterInputFields generates copy of field paths with output_only field paths removed
  2431  func (fieldMask *TypedValue_FieldMask) FilterInputFields() *TypedValue_FieldMask {
  2432  	result := &TypedValue_FieldMask{}
  2433  	result.Paths = append(result.Paths, fieldMask.Paths...)
  2434  	return result
  2435  }
  2436  
  2437  // ToFieldMask is used for proto conversions
  2438  func (fieldMask *TypedValue_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
  2439  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  2440  	for _, path := range fieldMask.Paths {
  2441  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
  2442  	}
  2443  	return protoFieldMask
  2444  }
  2445  
  2446  func (fieldMask *TypedValue_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
  2447  	if fieldMask == nil {
  2448  		return status.Error(codes.Internal, "target field mask is nil")
  2449  	}
  2450  	fieldMask.Paths = make([]TypedValue_FieldPath, 0, len(protoFieldMask.Paths))
  2451  	for _, strPath := range protoFieldMask.Paths {
  2452  		path, err := ParseTypedValue_FieldPath(strPath)
  2453  		if err != nil {
  2454  			return err
  2455  		}
  2456  		fieldMask.Paths = append(fieldMask.Paths, path)
  2457  	}
  2458  	return nil
  2459  }
  2460  
  2461  // implement methods required by customType
  2462  func (fieldMask TypedValue_FieldMask) Marshal() ([]byte, error) {
  2463  	protoFieldMask := fieldMask.ToProtoFieldMask()
  2464  	return proto.Marshal(protoFieldMask)
  2465  }
  2466  
  2467  func (fieldMask *TypedValue_FieldMask) Unmarshal(data []byte) error {
  2468  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  2469  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
  2470  		return err
  2471  	}
  2472  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  2473  		return err
  2474  	}
  2475  	return nil
  2476  }
  2477  
  2478  func (fieldMask *TypedValue_FieldMask) Size() int {
  2479  	return proto.Size(fieldMask.ToProtoFieldMask())
  2480  }
  2481  
  2482  func (fieldMask TypedValue_FieldMask) MarshalJSON() ([]byte, error) {
  2483  	return json.Marshal(fieldMask.ToProtoFieldMask())
  2484  }
  2485  
  2486  func (fieldMask *TypedValue_FieldMask) UnmarshalJSON(data []byte) error {
  2487  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  2488  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
  2489  		return err
  2490  	}
  2491  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  2492  		return err
  2493  	}
  2494  	return nil
  2495  }
  2496  
  2497  func (fieldMask *TypedValue_FieldMask) AppendPath(path TypedValue_FieldPath) {
  2498  	fieldMask.Paths = append(fieldMask.Paths, path)
  2499  }
  2500  
  2501  func (fieldMask *TypedValue_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
  2502  	fieldMask.Paths = append(fieldMask.Paths, path.(TypedValue_FieldPath))
  2503  }
  2504  
  2505  func (fieldMask *TypedValue_FieldMask) GetPaths() []TypedValue_FieldPath {
  2506  	if fieldMask == nil {
  2507  		return nil
  2508  	}
  2509  	return fieldMask.Paths
  2510  }
  2511  
  2512  func (fieldMask *TypedValue_FieldMask) GetRawPaths() []gotenobject.FieldPath {
  2513  	if fieldMask == nil {
  2514  		return nil
  2515  	}
  2516  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
  2517  	for _, path := range fieldMask.Paths {
  2518  		rawPaths = append(rawPaths, path)
  2519  	}
  2520  	return rawPaths
  2521  }
  2522  
  2523  func (fieldMask *TypedValue_FieldMask) SetFromCliFlag(raw string) error {
  2524  	path, err := ParseTypedValue_FieldPath(raw)
  2525  	if err != nil {
  2526  		return err
  2527  	}
  2528  	fieldMask.Paths = append(fieldMask.Paths, path)
  2529  	return nil
  2530  }
  2531  
  2532  func (fieldMask *TypedValue_FieldMask) Set(target, source *TypedValue) {
  2533  	for _, path := range fieldMask.Paths {
  2534  		val, _ := path.GetSingle(source)
  2535  		// if val is nil, then field does not exist in source, skip
  2536  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
  2537  		if val != nil {
  2538  			path.WithIValue(val).SetTo(&target)
  2539  		}
  2540  	}
  2541  }
  2542  
  2543  func (fieldMask *TypedValue_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
  2544  	fieldMask.Set(target.(*TypedValue), source.(*TypedValue))
  2545  }
  2546  
  2547  func (fieldMask *TypedValue_FieldMask) Project(source *TypedValue) *TypedValue {
  2548  	if source == nil {
  2549  		return nil
  2550  	}
  2551  	if fieldMask == nil {
  2552  		return source
  2553  	}
  2554  	result := &TypedValue{}
  2555  	distributionValueMask := &Distribution_FieldMask{}
  2556  	wholeDistributionValueAccepted := false
  2557  
  2558  	for _, p := range fieldMask.Paths {
  2559  		switch tp := p.(type) {
  2560  		case *TypedValue_FieldTerminalPath:
  2561  			switch tp.selector {
  2562  			case TypedValue_FieldPathSelectorBoolValue:
  2563  				if source, ok := source.Value.(*TypedValue_BoolValue); ok {
  2564  					result.Value = &TypedValue_BoolValue{
  2565  						BoolValue: source.BoolValue,
  2566  					}
  2567  				}
  2568  			case TypedValue_FieldPathSelectorInt64Value:
  2569  				if source, ok := source.Value.(*TypedValue_Int64Value); ok {
  2570  					result.Value = &TypedValue_Int64Value{
  2571  						Int64Value: source.Int64Value,
  2572  					}
  2573  				}
  2574  			case TypedValue_FieldPathSelectorDoubleValue:
  2575  				if source, ok := source.Value.(*TypedValue_DoubleValue); ok {
  2576  					result.Value = &TypedValue_DoubleValue{
  2577  						DoubleValue: source.DoubleValue,
  2578  					}
  2579  				}
  2580  			case TypedValue_FieldPathSelectorStringValue:
  2581  				if source, ok := source.Value.(*TypedValue_StringValue); ok {
  2582  					result.Value = &TypedValue_StringValue{
  2583  						StringValue: source.StringValue,
  2584  					}
  2585  				}
  2586  			case TypedValue_FieldPathSelectorDistributionValue:
  2587  				if source, ok := source.Value.(*TypedValue_DistributionValue); ok {
  2588  					result.Value = &TypedValue_DistributionValue{
  2589  						DistributionValue: source.DistributionValue,
  2590  					}
  2591  				}
  2592  				wholeDistributionValueAccepted = true
  2593  			}
  2594  		case *TypedValue_FieldSubPath:
  2595  			switch tp.selector {
  2596  			case TypedValue_FieldPathSelectorDistributionValue:
  2597  				distributionValueMask.AppendPath(tp.subPath.(Distribution_FieldPath))
  2598  			}
  2599  		}
  2600  	}
  2601  	if wholeDistributionValueAccepted == false && len(distributionValueMask.Paths) > 0 {
  2602  		if asOneOf, ok := source.Value.(*TypedValue_DistributionValue); ok {
  2603  			result.Value = (*TypedValue_DistributionValue)(nil)
  2604  			if asOneOf != nil {
  2605  				oneOfRes := &TypedValue_DistributionValue{}
  2606  				oneOfRes.DistributionValue = distributionValueMask.Project(asOneOf.DistributionValue)
  2607  				result.Value = oneOfRes
  2608  			}
  2609  		}
  2610  	}
  2611  	return result
  2612  }
  2613  
  2614  func (fieldMask *TypedValue_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
  2615  	return fieldMask.Project(source.(*TypedValue))
  2616  }
  2617  
  2618  func (fieldMask *TypedValue_FieldMask) PathsCount() int {
  2619  	if fieldMask == nil {
  2620  		return 0
  2621  	}
  2622  	return len(fieldMask.Paths)
  2623  }
  2624  
  2625  type TimeInterval_FieldMask struct {
  2626  	Paths []TimeInterval_FieldPath
  2627  }
  2628  
  2629  func FullTimeInterval_FieldMask() *TimeInterval_FieldMask {
  2630  	res := &TimeInterval_FieldMask{}
  2631  	res.Paths = append(res.Paths, &TimeInterval_FieldTerminalPath{selector: TimeInterval_FieldPathSelectorEndTime})
  2632  	res.Paths = append(res.Paths, &TimeInterval_FieldTerminalPath{selector: TimeInterval_FieldPathSelectorStartTime})
  2633  	return res
  2634  }
  2635  
  2636  func (fieldMask *TimeInterval_FieldMask) String() string {
  2637  	if fieldMask == nil {
  2638  		return "<nil>"
  2639  	}
  2640  	pathsStr := make([]string, 0, len(fieldMask.Paths))
  2641  	for _, path := range fieldMask.Paths {
  2642  		pathsStr = append(pathsStr, path.String())
  2643  	}
  2644  	return strings.Join(pathsStr, ", ")
  2645  }
  2646  
  2647  func (fieldMask *TimeInterval_FieldMask) IsFull() bool {
  2648  	if fieldMask == nil {
  2649  		return false
  2650  	}
  2651  	presentSelectors := make([]bool, 2)
  2652  	for _, path := range fieldMask.Paths {
  2653  		if asFinal, ok := path.(*TimeInterval_FieldTerminalPath); ok {
  2654  			presentSelectors[int(asFinal.selector)] = true
  2655  		}
  2656  	}
  2657  	for _, flag := range presentSelectors {
  2658  		if !flag {
  2659  			return false
  2660  		}
  2661  	}
  2662  	return true
  2663  }
  2664  
  2665  func (fieldMask *TimeInterval_FieldMask) ProtoReflect() preflect.Message {
  2666  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
  2667  		return ParseTimeInterval_FieldPath(raw)
  2668  	})
  2669  }
  2670  
  2671  func (fieldMask *TimeInterval_FieldMask) ProtoMessage() {}
  2672  
  2673  func (fieldMask *TimeInterval_FieldMask) Reset() {
  2674  	if fieldMask != nil {
  2675  		fieldMask.Paths = nil
  2676  	}
  2677  }
  2678  
  2679  func (fieldMask *TimeInterval_FieldMask) Subtract(other *TimeInterval_FieldMask) *TimeInterval_FieldMask {
  2680  	result := &TimeInterval_FieldMask{}
  2681  	removedSelectors := make([]bool, 2)
  2682  
  2683  	for _, path := range other.GetPaths() {
  2684  		switch tp := path.(type) {
  2685  		case *TimeInterval_FieldTerminalPath:
  2686  			removedSelectors[int(tp.selector)] = true
  2687  		}
  2688  	}
  2689  	for _, path := range fieldMask.GetPaths() {
  2690  		if !removedSelectors[int(path.Selector())] {
  2691  			result.Paths = append(result.Paths, path)
  2692  		}
  2693  	}
  2694  
  2695  	if len(result.Paths) == 0 {
  2696  		return nil
  2697  	}
  2698  	return result
  2699  }
  2700  
  2701  func (fieldMask *TimeInterval_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
  2702  	return fieldMask.Subtract(other.(*TimeInterval_FieldMask))
  2703  }
  2704  
  2705  // FilterInputFields generates copy of field paths with output_only field paths removed
  2706  func (fieldMask *TimeInterval_FieldMask) FilterInputFields() *TimeInterval_FieldMask {
  2707  	result := &TimeInterval_FieldMask{}
  2708  	result.Paths = append(result.Paths, fieldMask.Paths...)
  2709  	return result
  2710  }
  2711  
  2712  // ToFieldMask is used for proto conversions
  2713  func (fieldMask *TimeInterval_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
  2714  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  2715  	for _, path := range fieldMask.Paths {
  2716  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
  2717  	}
  2718  	return protoFieldMask
  2719  }
  2720  
  2721  func (fieldMask *TimeInterval_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
  2722  	if fieldMask == nil {
  2723  		return status.Error(codes.Internal, "target field mask is nil")
  2724  	}
  2725  	fieldMask.Paths = make([]TimeInterval_FieldPath, 0, len(protoFieldMask.Paths))
  2726  	for _, strPath := range protoFieldMask.Paths {
  2727  		path, err := ParseTimeInterval_FieldPath(strPath)
  2728  		if err != nil {
  2729  			return err
  2730  		}
  2731  		fieldMask.Paths = append(fieldMask.Paths, path)
  2732  	}
  2733  	return nil
  2734  }
  2735  
  2736  // implement methods required by customType
  2737  func (fieldMask TimeInterval_FieldMask) Marshal() ([]byte, error) {
  2738  	protoFieldMask := fieldMask.ToProtoFieldMask()
  2739  	return proto.Marshal(protoFieldMask)
  2740  }
  2741  
  2742  func (fieldMask *TimeInterval_FieldMask) Unmarshal(data []byte) error {
  2743  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  2744  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
  2745  		return err
  2746  	}
  2747  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  2748  		return err
  2749  	}
  2750  	return nil
  2751  }
  2752  
  2753  func (fieldMask *TimeInterval_FieldMask) Size() int {
  2754  	return proto.Size(fieldMask.ToProtoFieldMask())
  2755  }
  2756  
  2757  func (fieldMask TimeInterval_FieldMask) MarshalJSON() ([]byte, error) {
  2758  	return json.Marshal(fieldMask.ToProtoFieldMask())
  2759  }
  2760  
  2761  func (fieldMask *TimeInterval_FieldMask) UnmarshalJSON(data []byte) error {
  2762  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  2763  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
  2764  		return err
  2765  	}
  2766  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  2767  		return err
  2768  	}
  2769  	return nil
  2770  }
  2771  
  2772  func (fieldMask *TimeInterval_FieldMask) AppendPath(path TimeInterval_FieldPath) {
  2773  	fieldMask.Paths = append(fieldMask.Paths, path)
  2774  }
  2775  
  2776  func (fieldMask *TimeInterval_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
  2777  	fieldMask.Paths = append(fieldMask.Paths, path.(TimeInterval_FieldPath))
  2778  }
  2779  
  2780  func (fieldMask *TimeInterval_FieldMask) GetPaths() []TimeInterval_FieldPath {
  2781  	if fieldMask == nil {
  2782  		return nil
  2783  	}
  2784  	return fieldMask.Paths
  2785  }
  2786  
  2787  func (fieldMask *TimeInterval_FieldMask) GetRawPaths() []gotenobject.FieldPath {
  2788  	if fieldMask == nil {
  2789  		return nil
  2790  	}
  2791  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
  2792  	for _, path := range fieldMask.Paths {
  2793  		rawPaths = append(rawPaths, path)
  2794  	}
  2795  	return rawPaths
  2796  }
  2797  
  2798  func (fieldMask *TimeInterval_FieldMask) SetFromCliFlag(raw string) error {
  2799  	path, err := ParseTimeInterval_FieldPath(raw)
  2800  	if err != nil {
  2801  		return err
  2802  	}
  2803  	fieldMask.Paths = append(fieldMask.Paths, path)
  2804  	return nil
  2805  }
  2806  
  2807  func (fieldMask *TimeInterval_FieldMask) Set(target, source *TimeInterval) {
  2808  	for _, path := range fieldMask.Paths {
  2809  		val, _ := path.GetSingle(source)
  2810  		// if val is nil, then field does not exist in source, skip
  2811  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
  2812  		if val != nil {
  2813  			path.WithIValue(val).SetTo(&target)
  2814  		}
  2815  	}
  2816  }
  2817  
  2818  func (fieldMask *TimeInterval_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
  2819  	fieldMask.Set(target.(*TimeInterval), source.(*TimeInterval))
  2820  }
  2821  
  2822  func (fieldMask *TimeInterval_FieldMask) Project(source *TimeInterval) *TimeInterval {
  2823  	if source == nil {
  2824  		return nil
  2825  	}
  2826  	if fieldMask == nil {
  2827  		return source
  2828  	}
  2829  	result := &TimeInterval{}
  2830  
  2831  	for _, p := range fieldMask.Paths {
  2832  		switch tp := p.(type) {
  2833  		case *TimeInterval_FieldTerminalPath:
  2834  			switch tp.selector {
  2835  			case TimeInterval_FieldPathSelectorEndTime:
  2836  				result.EndTime = source.EndTime
  2837  			case TimeInterval_FieldPathSelectorStartTime:
  2838  				result.StartTime = source.StartTime
  2839  			}
  2840  		}
  2841  	}
  2842  	return result
  2843  }
  2844  
  2845  func (fieldMask *TimeInterval_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
  2846  	return fieldMask.Project(source.(*TimeInterval))
  2847  }
  2848  
  2849  func (fieldMask *TimeInterval_FieldMask) PathsCount() int {
  2850  	if fieldMask == nil {
  2851  		return 0
  2852  	}
  2853  	return len(fieldMask.Paths)
  2854  }
  2855  
  2856  type TimeRange_FieldMask struct {
  2857  	Paths []TimeRange_FieldPath
  2858  }
  2859  
  2860  func FullTimeRange_FieldMask() *TimeRange_FieldMask {
  2861  	res := &TimeRange_FieldMask{}
  2862  	res.Paths = append(res.Paths, &TimeRange_FieldTerminalPath{selector: TimeRange_FieldPathSelectorStartTime})
  2863  	res.Paths = append(res.Paths, &TimeRange_FieldTerminalPath{selector: TimeRange_FieldPathSelectorEndTime})
  2864  	return res
  2865  }
  2866  
  2867  func (fieldMask *TimeRange_FieldMask) String() string {
  2868  	if fieldMask == nil {
  2869  		return "<nil>"
  2870  	}
  2871  	pathsStr := make([]string, 0, len(fieldMask.Paths))
  2872  	for _, path := range fieldMask.Paths {
  2873  		pathsStr = append(pathsStr, path.String())
  2874  	}
  2875  	return strings.Join(pathsStr, ", ")
  2876  }
  2877  
  2878  func (fieldMask *TimeRange_FieldMask) IsFull() bool {
  2879  	if fieldMask == nil {
  2880  		return false
  2881  	}
  2882  	presentSelectors := make([]bool, 2)
  2883  	for _, path := range fieldMask.Paths {
  2884  		if asFinal, ok := path.(*TimeRange_FieldTerminalPath); ok {
  2885  			presentSelectors[int(asFinal.selector)] = true
  2886  		}
  2887  	}
  2888  	for _, flag := range presentSelectors {
  2889  		if !flag {
  2890  			return false
  2891  		}
  2892  	}
  2893  	return true
  2894  }
  2895  
  2896  func (fieldMask *TimeRange_FieldMask) ProtoReflect() preflect.Message {
  2897  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
  2898  		return ParseTimeRange_FieldPath(raw)
  2899  	})
  2900  }
  2901  
  2902  func (fieldMask *TimeRange_FieldMask) ProtoMessage() {}
  2903  
  2904  func (fieldMask *TimeRange_FieldMask) Reset() {
  2905  	if fieldMask != nil {
  2906  		fieldMask.Paths = nil
  2907  	}
  2908  }
  2909  
  2910  func (fieldMask *TimeRange_FieldMask) Subtract(other *TimeRange_FieldMask) *TimeRange_FieldMask {
  2911  	result := &TimeRange_FieldMask{}
  2912  	removedSelectors := make([]bool, 2)
  2913  
  2914  	for _, path := range other.GetPaths() {
  2915  		switch tp := path.(type) {
  2916  		case *TimeRange_FieldTerminalPath:
  2917  			removedSelectors[int(tp.selector)] = true
  2918  		}
  2919  	}
  2920  	for _, path := range fieldMask.GetPaths() {
  2921  		if !removedSelectors[int(path.Selector())] {
  2922  			result.Paths = append(result.Paths, path)
  2923  		}
  2924  	}
  2925  
  2926  	if len(result.Paths) == 0 {
  2927  		return nil
  2928  	}
  2929  	return result
  2930  }
  2931  
  2932  func (fieldMask *TimeRange_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
  2933  	return fieldMask.Subtract(other.(*TimeRange_FieldMask))
  2934  }
  2935  
  2936  // FilterInputFields generates copy of field paths with output_only field paths removed
  2937  func (fieldMask *TimeRange_FieldMask) FilterInputFields() *TimeRange_FieldMask {
  2938  	result := &TimeRange_FieldMask{}
  2939  	result.Paths = append(result.Paths, fieldMask.Paths...)
  2940  	return result
  2941  }
  2942  
  2943  // ToFieldMask is used for proto conversions
  2944  func (fieldMask *TimeRange_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
  2945  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  2946  	for _, path := range fieldMask.Paths {
  2947  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
  2948  	}
  2949  	return protoFieldMask
  2950  }
  2951  
  2952  func (fieldMask *TimeRange_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
  2953  	if fieldMask == nil {
  2954  		return status.Error(codes.Internal, "target field mask is nil")
  2955  	}
  2956  	fieldMask.Paths = make([]TimeRange_FieldPath, 0, len(protoFieldMask.Paths))
  2957  	for _, strPath := range protoFieldMask.Paths {
  2958  		path, err := ParseTimeRange_FieldPath(strPath)
  2959  		if err != nil {
  2960  			return err
  2961  		}
  2962  		fieldMask.Paths = append(fieldMask.Paths, path)
  2963  	}
  2964  	return nil
  2965  }
  2966  
  2967  // implement methods required by customType
  2968  func (fieldMask TimeRange_FieldMask) Marshal() ([]byte, error) {
  2969  	protoFieldMask := fieldMask.ToProtoFieldMask()
  2970  	return proto.Marshal(protoFieldMask)
  2971  }
  2972  
  2973  func (fieldMask *TimeRange_FieldMask) Unmarshal(data []byte) error {
  2974  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  2975  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
  2976  		return err
  2977  	}
  2978  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  2979  		return err
  2980  	}
  2981  	return nil
  2982  }
  2983  
  2984  func (fieldMask *TimeRange_FieldMask) Size() int {
  2985  	return proto.Size(fieldMask.ToProtoFieldMask())
  2986  }
  2987  
  2988  func (fieldMask TimeRange_FieldMask) MarshalJSON() ([]byte, error) {
  2989  	return json.Marshal(fieldMask.ToProtoFieldMask())
  2990  }
  2991  
  2992  func (fieldMask *TimeRange_FieldMask) UnmarshalJSON(data []byte) error {
  2993  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  2994  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
  2995  		return err
  2996  	}
  2997  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  2998  		return err
  2999  	}
  3000  	return nil
  3001  }
  3002  
  3003  func (fieldMask *TimeRange_FieldMask) AppendPath(path TimeRange_FieldPath) {
  3004  	fieldMask.Paths = append(fieldMask.Paths, path)
  3005  }
  3006  
  3007  func (fieldMask *TimeRange_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
  3008  	fieldMask.Paths = append(fieldMask.Paths, path.(TimeRange_FieldPath))
  3009  }
  3010  
  3011  func (fieldMask *TimeRange_FieldMask) GetPaths() []TimeRange_FieldPath {
  3012  	if fieldMask == nil {
  3013  		return nil
  3014  	}
  3015  	return fieldMask.Paths
  3016  }
  3017  
  3018  func (fieldMask *TimeRange_FieldMask) GetRawPaths() []gotenobject.FieldPath {
  3019  	if fieldMask == nil {
  3020  		return nil
  3021  	}
  3022  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
  3023  	for _, path := range fieldMask.Paths {
  3024  		rawPaths = append(rawPaths, path)
  3025  	}
  3026  	return rawPaths
  3027  }
  3028  
  3029  func (fieldMask *TimeRange_FieldMask) SetFromCliFlag(raw string) error {
  3030  	path, err := ParseTimeRange_FieldPath(raw)
  3031  	if err != nil {
  3032  		return err
  3033  	}
  3034  	fieldMask.Paths = append(fieldMask.Paths, path)
  3035  	return nil
  3036  }
  3037  
  3038  func (fieldMask *TimeRange_FieldMask) Set(target, source *TimeRange) {
  3039  	for _, path := range fieldMask.Paths {
  3040  		val, _ := path.GetSingle(source)
  3041  		// if val is nil, then field does not exist in source, skip
  3042  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
  3043  		if val != nil {
  3044  			path.WithIValue(val).SetTo(&target)
  3045  		}
  3046  	}
  3047  }
  3048  
  3049  func (fieldMask *TimeRange_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
  3050  	fieldMask.Set(target.(*TimeRange), source.(*TimeRange))
  3051  }
  3052  
  3053  func (fieldMask *TimeRange_FieldMask) Project(source *TimeRange) *TimeRange {
  3054  	if source == nil {
  3055  		return nil
  3056  	}
  3057  	if fieldMask == nil {
  3058  		return source
  3059  	}
  3060  	result := &TimeRange{}
  3061  
  3062  	for _, p := range fieldMask.Paths {
  3063  		switch tp := p.(type) {
  3064  		case *TimeRange_FieldTerminalPath:
  3065  			switch tp.selector {
  3066  			case TimeRange_FieldPathSelectorStartTime:
  3067  				result.StartTime = source.StartTime
  3068  			case TimeRange_FieldPathSelectorEndTime:
  3069  				result.EndTime = source.EndTime
  3070  			}
  3071  		}
  3072  	}
  3073  	return result
  3074  }
  3075  
  3076  func (fieldMask *TimeRange_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
  3077  	return fieldMask.Project(source.(*TimeRange))
  3078  }
  3079  
  3080  func (fieldMask *TimeRange_FieldMask) PathsCount() int {
  3081  	if fieldMask == nil {
  3082  		return 0
  3083  	}
  3084  	return len(fieldMask.Paths)
  3085  }
  3086  
  3087  type Aggregation_FieldMask struct {
  3088  	Paths []Aggregation_FieldPath
  3089  }
  3090  
  3091  func FullAggregation_FieldMask() *Aggregation_FieldMask {
  3092  	res := &Aggregation_FieldMask{}
  3093  	res.Paths = append(res.Paths, &Aggregation_FieldTerminalPath{selector: Aggregation_FieldPathSelectorAlignmentPeriod})
  3094  	res.Paths = append(res.Paths, &Aggregation_FieldTerminalPath{selector: Aggregation_FieldPathSelectorPerSeriesAligner})
  3095  	res.Paths = append(res.Paths, &Aggregation_FieldTerminalPath{selector: Aggregation_FieldPathSelectorCrossSeriesReducer})
  3096  	res.Paths = append(res.Paths, &Aggregation_FieldTerminalPath{selector: Aggregation_FieldPathSelectorGroupByFields})
  3097  	return res
  3098  }
  3099  
  3100  func (fieldMask *Aggregation_FieldMask) String() string {
  3101  	if fieldMask == nil {
  3102  		return "<nil>"
  3103  	}
  3104  	pathsStr := make([]string, 0, len(fieldMask.Paths))
  3105  	for _, path := range fieldMask.Paths {
  3106  		pathsStr = append(pathsStr, path.String())
  3107  	}
  3108  	return strings.Join(pathsStr, ", ")
  3109  }
  3110  
  3111  func (fieldMask *Aggregation_FieldMask) IsFull() bool {
  3112  	if fieldMask == nil {
  3113  		return false
  3114  	}
  3115  	presentSelectors := make([]bool, 4)
  3116  	for _, path := range fieldMask.Paths {
  3117  		if asFinal, ok := path.(*Aggregation_FieldTerminalPath); ok {
  3118  			presentSelectors[int(asFinal.selector)] = true
  3119  		}
  3120  	}
  3121  	for _, flag := range presentSelectors {
  3122  		if !flag {
  3123  			return false
  3124  		}
  3125  	}
  3126  	return true
  3127  }
  3128  
  3129  func (fieldMask *Aggregation_FieldMask) ProtoReflect() preflect.Message {
  3130  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
  3131  		return ParseAggregation_FieldPath(raw)
  3132  	})
  3133  }
  3134  
  3135  func (fieldMask *Aggregation_FieldMask) ProtoMessage() {}
  3136  
  3137  func (fieldMask *Aggregation_FieldMask) Reset() {
  3138  	if fieldMask != nil {
  3139  		fieldMask.Paths = nil
  3140  	}
  3141  }
  3142  
  3143  func (fieldMask *Aggregation_FieldMask) Subtract(other *Aggregation_FieldMask) *Aggregation_FieldMask {
  3144  	result := &Aggregation_FieldMask{}
  3145  	removedSelectors := make([]bool, 4)
  3146  
  3147  	for _, path := range other.GetPaths() {
  3148  		switch tp := path.(type) {
  3149  		case *Aggregation_FieldTerminalPath:
  3150  			removedSelectors[int(tp.selector)] = true
  3151  		}
  3152  	}
  3153  	for _, path := range fieldMask.GetPaths() {
  3154  		if !removedSelectors[int(path.Selector())] {
  3155  			result.Paths = append(result.Paths, path)
  3156  		}
  3157  	}
  3158  
  3159  	if len(result.Paths) == 0 {
  3160  		return nil
  3161  	}
  3162  	return result
  3163  }
  3164  
  3165  func (fieldMask *Aggregation_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
  3166  	return fieldMask.Subtract(other.(*Aggregation_FieldMask))
  3167  }
  3168  
  3169  // FilterInputFields generates copy of field paths with output_only field paths removed
  3170  func (fieldMask *Aggregation_FieldMask) FilterInputFields() *Aggregation_FieldMask {
  3171  	result := &Aggregation_FieldMask{}
  3172  	result.Paths = append(result.Paths, fieldMask.Paths...)
  3173  	return result
  3174  }
  3175  
  3176  // ToFieldMask is used for proto conversions
  3177  func (fieldMask *Aggregation_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
  3178  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  3179  	for _, path := range fieldMask.Paths {
  3180  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
  3181  	}
  3182  	return protoFieldMask
  3183  }
  3184  
  3185  func (fieldMask *Aggregation_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
  3186  	if fieldMask == nil {
  3187  		return status.Error(codes.Internal, "target field mask is nil")
  3188  	}
  3189  	fieldMask.Paths = make([]Aggregation_FieldPath, 0, len(protoFieldMask.Paths))
  3190  	for _, strPath := range protoFieldMask.Paths {
  3191  		path, err := ParseAggregation_FieldPath(strPath)
  3192  		if err != nil {
  3193  			return err
  3194  		}
  3195  		fieldMask.Paths = append(fieldMask.Paths, path)
  3196  	}
  3197  	return nil
  3198  }
  3199  
  3200  // implement methods required by customType
  3201  func (fieldMask Aggregation_FieldMask) Marshal() ([]byte, error) {
  3202  	protoFieldMask := fieldMask.ToProtoFieldMask()
  3203  	return proto.Marshal(protoFieldMask)
  3204  }
  3205  
  3206  func (fieldMask *Aggregation_FieldMask) Unmarshal(data []byte) error {
  3207  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  3208  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
  3209  		return err
  3210  	}
  3211  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  3212  		return err
  3213  	}
  3214  	return nil
  3215  }
  3216  
  3217  func (fieldMask *Aggregation_FieldMask) Size() int {
  3218  	return proto.Size(fieldMask.ToProtoFieldMask())
  3219  }
  3220  
  3221  func (fieldMask Aggregation_FieldMask) MarshalJSON() ([]byte, error) {
  3222  	return json.Marshal(fieldMask.ToProtoFieldMask())
  3223  }
  3224  
  3225  func (fieldMask *Aggregation_FieldMask) UnmarshalJSON(data []byte) error {
  3226  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  3227  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
  3228  		return err
  3229  	}
  3230  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  3231  		return err
  3232  	}
  3233  	return nil
  3234  }
  3235  
  3236  func (fieldMask *Aggregation_FieldMask) AppendPath(path Aggregation_FieldPath) {
  3237  	fieldMask.Paths = append(fieldMask.Paths, path)
  3238  }
  3239  
  3240  func (fieldMask *Aggregation_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
  3241  	fieldMask.Paths = append(fieldMask.Paths, path.(Aggregation_FieldPath))
  3242  }
  3243  
  3244  func (fieldMask *Aggregation_FieldMask) GetPaths() []Aggregation_FieldPath {
  3245  	if fieldMask == nil {
  3246  		return nil
  3247  	}
  3248  	return fieldMask.Paths
  3249  }
  3250  
  3251  func (fieldMask *Aggregation_FieldMask) GetRawPaths() []gotenobject.FieldPath {
  3252  	if fieldMask == nil {
  3253  		return nil
  3254  	}
  3255  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
  3256  	for _, path := range fieldMask.Paths {
  3257  		rawPaths = append(rawPaths, path)
  3258  	}
  3259  	return rawPaths
  3260  }
  3261  
  3262  func (fieldMask *Aggregation_FieldMask) SetFromCliFlag(raw string) error {
  3263  	path, err := ParseAggregation_FieldPath(raw)
  3264  	if err != nil {
  3265  		return err
  3266  	}
  3267  	fieldMask.Paths = append(fieldMask.Paths, path)
  3268  	return nil
  3269  }
  3270  
  3271  func (fieldMask *Aggregation_FieldMask) Set(target, source *Aggregation) {
  3272  	for _, path := range fieldMask.Paths {
  3273  		val, _ := path.GetSingle(source)
  3274  		// if val is nil, then field does not exist in source, skip
  3275  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
  3276  		if val != nil {
  3277  			path.WithIValue(val).SetTo(&target)
  3278  		}
  3279  	}
  3280  }
  3281  
  3282  func (fieldMask *Aggregation_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
  3283  	fieldMask.Set(target.(*Aggregation), source.(*Aggregation))
  3284  }
  3285  
  3286  func (fieldMask *Aggregation_FieldMask) Project(source *Aggregation) *Aggregation {
  3287  	if source == nil {
  3288  		return nil
  3289  	}
  3290  	if fieldMask == nil {
  3291  		return source
  3292  	}
  3293  	result := &Aggregation{}
  3294  
  3295  	for _, p := range fieldMask.Paths {
  3296  		switch tp := p.(type) {
  3297  		case *Aggregation_FieldTerminalPath:
  3298  			switch tp.selector {
  3299  			case Aggregation_FieldPathSelectorAlignmentPeriod:
  3300  				result.AlignmentPeriod = source.AlignmentPeriod
  3301  			case Aggregation_FieldPathSelectorPerSeriesAligner:
  3302  				result.PerSeriesAligner = source.PerSeriesAligner
  3303  			case Aggregation_FieldPathSelectorCrossSeriesReducer:
  3304  				result.CrossSeriesReducer = source.CrossSeriesReducer
  3305  			case Aggregation_FieldPathSelectorGroupByFields:
  3306  				result.GroupByFields = source.GroupByFields
  3307  			}
  3308  		}
  3309  	}
  3310  	return result
  3311  }
  3312  
  3313  func (fieldMask *Aggregation_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
  3314  	return fieldMask.Project(source.(*Aggregation))
  3315  }
  3316  
  3317  func (fieldMask *Aggregation_FieldMask) PathsCount() int {
  3318  	if fieldMask == nil {
  3319  		return 0
  3320  	}
  3321  	return len(fieldMask.Paths)
  3322  }
  3323  
  3324  type Pagination_FieldMask struct {
  3325  	Paths []Pagination_FieldPath
  3326  }
  3327  
  3328  func FullPagination_FieldMask() *Pagination_FieldMask {
  3329  	res := &Pagination_FieldMask{}
  3330  	res.Paths = append(res.Paths, &Pagination_FieldTerminalPath{selector: Pagination_FieldPathSelectorView})
  3331  	res.Paths = append(res.Paths, &Pagination_FieldTerminalPath{selector: Pagination_FieldPathSelectorFunction})
  3332  	res.Paths = append(res.Paths, &Pagination_FieldTerminalPath{selector: Pagination_FieldPathSelectorAlignmentPeriod})
  3333  	res.Paths = append(res.Paths, &Pagination_FieldTerminalPath{selector: Pagination_FieldPathSelectorLimit})
  3334  	res.Paths = append(res.Paths, &Pagination_FieldTerminalPath{selector: Pagination_FieldPathSelectorOffset})
  3335  	return res
  3336  }
  3337  
  3338  func (fieldMask *Pagination_FieldMask) String() string {
  3339  	if fieldMask == nil {
  3340  		return "<nil>"
  3341  	}
  3342  	pathsStr := make([]string, 0, len(fieldMask.Paths))
  3343  	for _, path := range fieldMask.Paths {
  3344  		pathsStr = append(pathsStr, path.String())
  3345  	}
  3346  	return strings.Join(pathsStr, ", ")
  3347  }
  3348  
  3349  func (fieldMask *Pagination_FieldMask) IsFull() bool {
  3350  	if fieldMask == nil {
  3351  		return false
  3352  	}
  3353  	presentSelectors := make([]bool, 5)
  3354  	for _, path := range fieldMask.Paths {
  3355  		if asFinal, ok := path.(*Pagination_FieldTerminalPath); ok {
  3356  			presentSelectors[int(asFinal.selector)] = true
  3357  		}
  3358  	}
  3359  	for _, flag := range presentSelectors {
  3360  		if !flag {
  3361  			return false
  3362  		}
  3363  	}
  3364  	return true
  3365  }
  3366  
  3367  func (fieldMask *Pagination_FieldMask) ProtoReflect() preflect.Message {
  3368  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
  3369  		return ParsePagination_FieldPath(raw)
  3370  	})
  3371  }
  3372  
  3373  func (fieldMask *Pagination_FieldMask) ProtoMessage() {}
  3374  
  3375  func (fieldMask *Pagination_FieldMask) Reset() {
  3376  	if fieldMask != nil {
  3377  		fieldMask.Paths = nil
  3378  	}
  3379  }
  3380  
  3381  func (fieldMask *Pagination_FieldMask) Subtract(other *Pagination_FieldMask) *Pagination_FieldMask {
  3382  	result := &Pagination_FieldMask{}
  3383  	removedSelectors := make([]bool, 5)
  3384  
  3385  	for _, path := range other.GetPaths() {
  3386  		switch tp := path.(type) {
  3387  		case *Pagination_FieldTerminalPath:
  3388  			removedSelectors[int(tp.selector)] = true
  3389  		}
  3390  	}
  3391  	for _, path := range fieldMask.GetPaths() {
  3392  		if !removedSelectors[int(path.Selector())] {
  3393  			result.Paths = append(result.Paths, path)
  3394  		}
  3395  	}
  3396  
  3397  	if len(result.Paths) == 0 {
  3398  		return nil
  3399  	}
  3400  	return result
  3401  }
  3402  
  3403  func (fieldMask *Pagination_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
  3404  	return fieldMask.Subtract(other.(*Pagination_FieldMask))
  3405  }
  3406  
  3407  // FilterInputFields generates copy of field paths with output_only field paths removed
  3408  func (fieldMask *Pagination_FieldMask) FilterInputFields() *Pagination_FieldMask {
  3409  	result := &Pagination_FieldMask{}
  3410  	result.Paths = append(result.Paths, fieldMask.Paths...)
  3411  	return result
  3412  }
  3413  
  3414  // ToFieldMask is used for proto conversions
  3415  func (fieldMask *Pagination_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
  3416  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  3417  	for _, path := range fieldMask.Paths {
  3418  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
  3419  	}
  3420  	return protoFieldMask
  3421  }
  3422  
  3423  func (fieldMask *Pagination_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
  3424  	if fieldMask == nil {
  3425  		return status.Error(codes.Internal, "target field mask is nil")
  3426  	}
  3427  	fieldMask.Paths = make([]Pagination_FieldPath, 0, len(protoFieldMask.Paths))
  3428  	for _, strPath := range protoFieldMask.Paths {
  3429  		path, err := ParsePagination_FieldPath(strPath)
  3430  		if err != nil {
  3431  			return err
  3432  		}
  3433  		fieldMask.Paths = append(fieldMask.Paths, path)
  3434  	}
  3435  	return nil
  3436  }
  3437  
  3438  // implement methods required by customType
  3439  func (fieldMask Pagination_FieldMask) Marshal() ([]byte, error) {
  3440  	protoFieldMask := fieldMask.ToProtoFieldMask()
  3441  	return proto.Marshal(protoFieldMask)
  3442  }
  3443  
  3444  func (fieldMask *Pagination_FieldMask) Unmarshal(data []byte) error {
  3445  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  3446  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
  3447  		return err
  3448  	}
  3449  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  3450  		return err
  3451  	}
  3452  	return nil
  3453  }
  3454  
  3455  func (fieldMask *Pagination_FieldMask) Size() int {
  3456  	return proto.Size(fieldMask.ToProtoFieldMask())
  3457  }
  3458  
  3459  func (fieldMask Pagination_FieldMask) MarshalJSON() ([]byte, error) {
  3460  	return json.Marshal(fieldMask.ToProtoFieldMask())
  3461  }
  3462  
  3463  func (fieldMask *Pagination_FieldMask) UnmarshalJSON(data []byte) error {
  3464  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  3465  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
  3466  		return err
  3467  	}
  3468  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  3469  		return err
  3470  	}
  3471  	return nil
  3472  }
  3473  
  3474  func (fieldMask *Pagination_FieldMask) AppendPath(path Pagination_FieldPath) {
  3475  	fieldMask.Paths = append(fieldMask.Paths, path)
  3476  }
  3477  
  3478  func (fieldMask *Pagination_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
  3479  	fieldMask.Paths = append(fieldMask.Paths, path.(Pagination_FieldPath))
  3480  }
  3481  
  3482  func (fieldMask *Pagination_FieldMask) GetPaths() []Pagination_FieldPath {
  3483  	if fieldMask == nil {
  3484  		return nil
  3485  	}
  3486  	return fieldMask.Paths
  3487  }
  3488  
  3489  func (fieldMask *Pagination_FieldMask) GetRawPaths() []gotenobject.FieldPath {
  3490  	if fieldMask == nil {
  3491  		return nil
  3492  	}
  3493  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
  3494  	for _, path := range fieldMask.Paths {
  3495  		rawPaths = append(rawPaths, path)
  3496  	}
  3497  	return rawPaths
  3498  }
  3499  
  3500  func (fieldMask *Pagination_FieldMask) SetFromCliFlag(raw string) error {
  3501  	path, err := ParsePagination_FieldPath(raw)
  3502  	if err != nil {
  3503  		return err
  3504  	}
  3505  	fieldMask.Paths = append(fieldMask.Paths, path)
  3506  	return nil
  3507  }
  3508  
  3509  func (fieldMask *Pagination_FieldMask) Set(target, source *Pagination) {
  3510  	for _, path := range fieldMask.Paths {
  3511  		val, _ := path.GetSingle(source)
  3512  		// if val is nil, then field does not exist in source, skip
  3513  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
  3514  		if val != nil {
  3515  			path.WithIValue(val).SetTo(&target)
  3516  		}
  3517  	}
  3518  }
  3519  
  3520  func (fieldMask *Pagination_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
  3521  	fieldMask.Set(target.(*Pagination), source.(*Pagination))
  3522  }
  3523  
  3524  func (fieldMask *Pagination_FieldMask) Project(source *Pagination) *Pagination {
  3525  	if source == nil {
  3526  		return nil
  3527  	}
  3528  	if fieldMask == nil {
  3529  		return source
  3530  	}
  3531  	result := &Pagination{}
  3532  
  3533  	for _, p := range fieldMask.Paths {
  3534  		switch tp := p.(type) {
  3535  		case *Pagination_FieldTerminalPath:
  3536  			switch tp.selector {
  3537  			case Pagination_FieldPathSelectorView:
  3538  				result.View = source.View
  3539  			case Pagination_FieldPathSelectorFunction:
  3540  				result.Function = source.Function
  3541  			case Pagination_FieldPathSelectorAlignmentPeriod:
  3542  				result.AlignmentPeriod = source.AlignmentPeriod
  3543  			case Pagination_FieldPathSelectorLimit:
  3544  				result.Limit = source.Limit
  3545  			case Pagination_FieldPathSelectorOffset:
  3546  				result.Offset = source.Offset
  3547  			}
  3548  		}
  3549  	}
  3550  	return result
  3551  }
  3552  
  3553  func (fieldMask *Pagination_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
  3554  	return fieldMask.Project(source.(*Pagination))
  3555  }
  3556  
  3557  func (fieldMask *Pagination_FieldMask) PathsCount() int {
  3558  	if fieldMask == nil {
  3559  		return 0
  3560  	}
  3561  	return len(fieldMask.Paths)
  3562  }
  3563  
  3564  type Metric_FieldMask struct {
  3565  	Paths []Metric_FieldPath
  3566  }
  3567  
  3568  func FullMetric_FieldMask() *Metric_FieldMask {
  3569  	res := &Metric_FieldMask{}
  3570  	res.Paths = append(res.Paths, &Metric_FieldTerminalPath{selector: Metric_FieldPathSelectorType})
  3571  	res.Paths = append(res.Paths, &Metric_FieldTerminalPath{selector: Metric_FieldPathSelectorLabels})
  3572  	res.Paths = append(res.Paths, &Metric_FieldTerminalPath{selector: Metric_FieldPathSelectorReducedLabels})
  3573  	return res
  3574  }
  3575  
  3576  func (fieldMask *Metric_FieldMask) String() string {
  3577  	if fieldMask == nil {
  3578  		return "<nil>"
  3579  	}
  3580  	pathsStr := make([]string, 0, len(fieldMask.Paths))
  3581  	for _, path := range fieldMask.Paths {
  3582  		pathsStr = append(pathsStr, path.String())
  3583  	}
  3584  	return strings.Join(pathsStr, ", ")
  3585  }
  3586  
  3587  func (fieldMask *Metric_FieldMask) IsFull() bool {
  3588  	if fieldMask == nil {
  3589  		return false
  3590  	}
  3591  	presentSelectors := make([]bool, 3)
  3592  	for _, path := range fieldMask.Paths {
  3593  		if asFinal, ok := path.(*Metric_FieldTerminalPath); ok {
  3594  			presentSelectors[int(asFinal.selector)] = true
  3595  		}
  3596  	}
  3597  	for _, flag := range presentSelectors {
  3598  		if !flag {
  3599  			return false
  3600  		}
  3601  	}
  3602  	return true
  3603  }
  3604  
  3605  func (fieldMask *Metric_FieldMask) ProtoReflect() preflect.Message {
  3606  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
  3607  		return ParseMetric_FieldPath(raw)
  3608  	})
  3609  }
  3610  
  3611  func (fieldMask *Metric_FieldMask) ProtoMessage() {}
  3612  
  3613  func (fieldMask *Metric_FieldMask) Reset() {
  3614  	if fieldMask != nil {
  3615  		fieldMask.Paths = nil
  3616  	}
  3617  }
  3618  
  3619  func (fieldMask *Metric_FieldMask) Subtract(other *Metric_FieldMask) *Metric_FieldMask {
  3620  	result := &Metric_FieldMask{}
  3621  	removedSelectors := make([]bool, 3)
  3622  
  3623  	for _, path := range other.GetPaths() {
  3624  		switch tp := path.(type) {
  3625  		case *Metric_FieldTerminalPath:
  3626  			removedSelectors[int(tp.selector)] = true
  3627  		}
  3628  	}
  3629  	for _, path := range fieldMask.GetPaths() {
  3630  		if !removedSelectors[int(path.Selector())] {
  3631  			result.Paths = append(result.Paths, path)
  3632  		}
  3633  	}
  3634  
  3635  	if len(result.Paths) == 0 {
  3636  		return nil
  3637  	}
  3638  	return result
  3639  }
  3640  
  3641  func (fieldMask *Metric_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
  3642  	return fieldMask.Subtract(other.(*Metric_FieldMask))
  3643  }
  3644  
  3645  // FilterInputFields generates copy of field paths with output_only field paths removed
  3646  func (fieldMask *Metric_FieldMask) FilterInputFields() *Metric_FieldMask {
  3647  	result := &Metric_FieldMask{}
  3648  	result.Paths = append(result.Paths, fieldMask.Paths...)
  3649  	return result
  3650  }
  3651  
  3652  // ToFieldMask is used for proto conversions
  3653  func (fieldMask *Metric_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
  3654  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  3655  	for _, path := range fieldMask.Paths {
  3656  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
  3657  	}
  3658  	return protoFieldMask
  3659  }
  3660  
  3661  func (fieldMask *Metric_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
  3662  	if fieldMask == nil {
  3663  		return status.Error(codes.Internal, "target field mask is nil")
  3664  	}
  3665  	fieldMask.Paths = make([]Metric_FieldPath, 0, len(protoFieldMask.Paths))
  3666  	for _, strPath := range protoFieldMask.Paths {
  3667  		path, err := ParseMetric_FieldPath(strPath)
  3668  		if err != nil {
  3669  			return err
  3670  		}
  3671  		fieldMask.Paths = append(fieldMask.Paths, path)
  3672  	}
  3673  	return nil
  3674  }
  3675  
  3676  // implement methods required by customType
  3677  func (fieldMask Metric_FieldMask) Marshal() ([]byte, error) {
  3678  	protoFieldMask := fieldMask.ToProtoFieldMask()
  3679  	return proto.Marshal(protoFieldMask)
  3680  }
  3681  
  3682  func (fieldMask *Metric_FieldMask) Unmarshal(data []byte) error {
  3683  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  3684  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
  3685  		return err
  3686  	}
  3687  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  3688  		return err
  3689  	}
  3690  	return nil
  3691  }
  3692  
  3693  func (fieldMask *Metric_FieldMask) Size() int {
  3694  	return proto.Size(fieldMask.ToProtoFieldMask())
  3695  }
  3696  
  3697  func (fieldMask Metric_FieldMask) MarshalJSON() ([]byte, error) {
  3698  	return json.Marshal(fieldMask.ToProtoFieldMask())
  3699  }
  3700  
  3701  func (fieldMask *Metric_FieldMask) UnmarshalJSON(data []byte) error {
  3702  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  3703  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
  3704  		return err
  3705  	}
  3706  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  3707  		return err
  3708  	}
  3709  	return nil
  3710  }
  3711  
  3712  func (fieldMask *Metric_FieldMask) AppendPath(path Metric_FieldPath) {
  3713  	fieldMask.Paths = append(fieldMask.Paths, path)
  3714  }
  3715  
  3716  func (fieldMask *Metric_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
  3717  	fieldMask.Paths = append(fieldMask.Paths, path.(Metric_FieldPath))
  3718  }
  3719  
  3720  func (fieldMask *Metric_FieldMask) GetPaths() []Metric_FieldPath {
  3721  	if fieldMask == nil {
  3722  		return nil
  3723  	}
  3724  	return fieldMask.Paths
  3725  }
  3726  
  3727  func (fieldMask *Metric_FieldMask) GetRawPaths() []gotenobject.FieldPath {
  3728  	if fieldMask == nil {
  3729  		return nil
  3730  	}
  3731  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
  3732  	for _, path := range fieldMask.Paths {
  3733  		rawPaths = append(rawPaths, path)
  3734  	}
  3735  	return rawPaths
  3736  }
  3737  
  3738  func (fieldMask *Metric_FieldMask) SetFromCliFlag(raw string) error {
  3739  	path, err := ParseMetric_FieldPath(raw)
  3740  	if err != nil {
  3741  		return err
  3742  	}
  3743  	fieldMask.Paths = append(fieldMask.Paths, path)
  3744  	return nil
  3745  }
  3746  
  3747  func (fieldMask *Metric_FieldMask) Set(target, source *Metric) {
  3748  	for _, path := range fieldMask.Paths {
  3749  		val, _ := path.GetSingle(source)
  3750  		// if val is nil, then field does not exist in source, skip
  3751  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
  3752  		if val != nil {
  3753  			path.WithIValue(val).SetTo(&target)
  3754  		}
  3755  	}
  3756  }
  3757  
  3758  func (fieldMask *Metric_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
  3759  	fieldMask.Set(target.(*Metric), source.(*Metric))
  3760  }
  3761  
  3762  func (fieldMask *Metric_FieldMask) Project(source *Metric) *Metric {
  3763  	if source == nil {
  3764  		return nil
  3765  	}
  3766  	if fieldMask == nil {
  3767  		return source
  3768  	}
  3769  	result := &Metric{}
  3770  	var labelsMapKeys []string
  3771  	wholeLabelsAccepted := false
  3772  
  3773  	for _, p := range fieldMask.Paths {
  3774  		switch tp := p.(type) {
  3775  		case *Metric_FieldTerminalPath:
  3776  			switch tp.selector {
  3777  			case Metric_FieldPathSelectorType:
  3778  				result.Type = source.Type
  3779  			case Metric_FieldPathSelectorLabels:
  3780  				result.Labels = source.Labels
  3781  				wholeLabelsAccepted = true
  3782  			case Metric_FieldPathSelectorReducedLabels:
  3783  				result.ReducedLabels = source.ReducedLabels
  3784  			}
  3785  		case *Metric_FieldPathMap:
  3786  			switch tp.selector {
  3787  			case Metric_FieldPathSelectorLabels:
  3788  				labelsMapKeys = append(labelsMapKeys, tp.key)
  3789  			}
  3790  		}
  3791  	}
  3792  	if wholeLabelsAccepted == false && len(labelsMapKeys) > 0 && source.GetLabels() != nil {
  3793  		copiedMap := map[string]string{}
  3794  		sourceMap := source.GetLabels()
  3795  		for _, key := range labelsMapKeys {
  3796  			copiedMap[key] = sourceMap[key]
  3797  		}
  3798  		result.Labels = copiedMap
  3799  	}
  3800  	return result
  3801  }
  3802  
  3803  func (fieldMask *Metric_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
  3804  	return fieldMask.Project(source.(*Metric))
  3805  }
  3806  
  3807  func (fieldMask *Metric_FieldMask) PathsCount() int {
  3808  	if fieldMask == nil {
  3809  		return 0
  3810  	}
  3811  	return len(fieldMask.Paths)
  3812  }
  3813  
  3814  type MonitoredResource_FieldMask struct {
  3815  	Paths []MonitoredResource_FieldPath
  3816  }
  3817  
  3818  func FullMonitoredResource_FieldMask() *MonitoredResource_FieldMask {
  3819  	res := &MonitoredResource_FieldMask{}
  3820  	res.Paths = append(res.Paths, &MonitoredResource_FieldTerminalPath{selector: MonitoredResource_FieldPathSelectorType})
  3821  	res.Paths = append(res.Paths, &MonitoredResource_FieldTerminalPath{selector: MonitoredResource_FieldPathSelectorLabels})
  3822  	res.Paths = append(res.Paths, &MonitoredResource_FieldTerminalPath{selector: MonitoredResource_FieldPathSelectorReducedLabels})
  3823  	return res
  3824  }
  3825  
  3826  func (fieldMask *MonitoredResource_FieldMask) String() string {
  3827  	if fieldMask == nil {
  3828  		return "<nil>"
  3829  	}
  3830  	pathsStr := make([]string, 0, len(fieldMask.Paths))
  3831  	for _, path := range fieldMask.Paths {
  3832  		pathsStr = append(pathsStr, path.String())
  3833  	}
  3834  	return strings.Join(pathsStr, ", ")
  3835  }
  3836  
  3837  func (fieldMask *MonitoredResource_FieldMask) IsFull() bool {
  3838  	if fieldMask == nil {
  3839  		return false
  3840  	}
  3841  	presentSelectors := make([]bool, 3)
  3842  	for _, path := range fieldMask.Paths {
  3843  		if asFinal, ok := path.(*MonitoredResource_FieldTerminalPath); ok {
  3844  			presentSelectors[int(asFinal.selector)] = true
  3845  		}
  3846  	}
  3847  	for _, flag := range presentSelectors {
  3848  		if !flag {
  3849  			return false
  3850  		}
  3851  	}
  3852  	return true
  3853  }
  3854  
  3855  func (fieldMask *MonitoredResource_FieldMask) ProtoReflect() preflect.Message {
  3856  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
  3857  		return ParseMonitoredResource_FieldPath(raw)
  3858  	})
  3859  }
  3860  
  3861  func (fieldMask *MonitoredResource_FieldMask) ProtoMessage() {}
  3862  
  3863  func (fieldMask *MonitoredResource_FieldMask) Reset() {
  3864  	if fieldMask != nil {
  3865  		fieldMask.Paths = nil
  3866  	}
  3867  }
  3868  
  3869  func (fieldMask *MonitoredResource_FieldMask) Subtract(other *MonitoredResource_FieldMask) *MonitoredResource_FieldMask {
  3870  	result := &MonitoredResource_FieldMask{}
  3871  	removedSelectors := make([]bool, 3)
  3872  
  3873  	for _, path := range other.GetPaths() {
  3874  		switch tp := path.(type) {
  3875  		case *MonitoredResource_FieldTerminalPath:
  3876  			removedSelectors[int(tp.selector)] = true
  3877  		}
  3878  	}
  3879  	for _, path := range fieldMask.GetPaths() {
  3880  		if !removedSelectors[int(path.Selector())] {
  3881  			result.Paths = append(result.Paths, path)
  3882  		}
  3883  	}
  3884  
  3885  	if len(result.Paths) == 0 {
  3886  		return nil
  3887  	}
  3888  	return result
  3889  }
  3890  
  3891  func (fieldMask *MonitoredResource_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
  3892  	return fieldMask.Subtract(other.(*MonitoredResource_FieldMask))
  3893  }
  3894  
  3895  // FilterInputFields generates copy of field paths with output_only field paths removed
  3896  func (fieldMask *MonitoredResource_FieldMask) FilterInputFields() *MonitoredResource_FieldMask {
  3897  	result := &MonitoredResource_FieldMask{}
  3898  	result.Paths = append(result.Paths, fieldMask.Paths...)
  3899  	return result
  3900  }
  3901  
  3902  // ToFieldMask is used for proto conversions
  3903  func (fieldMask *MonitoredResource_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
  3904  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  3905  	for _, path := range fieldMask.Paths {
  3906  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
  3907  	}
  3908  	return protoFieldMask
  3909  }
  3910  
  3911  func (fieldMask *MonitoredResource_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
  3912  	if fieldMask == nil {
  3913  		return status.Error(codes.Internal, "target field mask is nil")
  3914  	}
  3915  	fieldMask.Paths = make([]MonitoredResource_FieldPath, 0, len(protoFieldMask.Paths))
  3916  	for _, strPath := range protoFieldMask.Paths {
  3917  		path, err := ParseMonitoredResource_FieldPath(strPath)
  3918  		if err != nil {
  3919  			return err
  3920  		}
  3921  		fieldMask.Paths = append(fieldMask.Paths, path)
  3922  	}
  3923  	return nil
  3924  }
  3925  
  3926  // implement methods required by customType
  3927  func (fieldMask MonitoredResource_FieldMask) Marshal() ([]byte, error) {
  3928  	protoFieldMask := fieldMask.ToProtoFieldMask()
  3929  	return proto.Marshal(protoFieldMask)
  3930  }
  3931  
  3932  func (fieldMask *MonitoredResource_FieldMask) Unmarshal(data []byte) error {
  3933  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  3934  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
  3935  		return err
  3936  	}
  3937  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  3938  		return err
  3939  	}
  3940  	return nil
  3941  }
  3942  
  3943  func (fieldMask *MonitoredResource_FieldMask) Size() int {
  3944  	return proto.Size(fieldMask.ToProtoFieldMask())
  3945  }
  3946  
  3947  func (fieldMask MonitoredResource_FieldMask) MarshalJSON() ([]byte, error) {
  3948  	return json.Marshal(fieldMask.ToProtoFieldMask())
  3949  }
  3950  
  3951  func (fieldMask *MonitoredResource_FieldMask) UnmarshalJSON(data []byte) error {
  3952  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  3953  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
  3954  		return err
  3955  	}
  3956  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  3957  		return err
  3958  	}
  3959  	return nil
  3960  }
  3961  
  3962  func (fieldMask *MonitoredResource_FieldMask) AppendPath(path MonitoredResource_FieldPath) {
  3963  	fieldMask.Paths = append(fieldMask.Paths, path)
  3964  }
  3965  
  3966  func (fieldMask *MonitoredResource_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
  3967  	fieldMask.Paths = append(fieldMask.Paths, path.(MonitoredResource_FieldPath))
  3968  }
  3969  
  3970  func (fieldMask *MonitoredResource_FieldMask) GetPaths() []MonitoredResource_FieldPath {
  3971  	if fieldMask == nil {
  3972  		return nil
  3973  	}
  3974  	return fieldMask.Paths
  3975  }
  3976  
  3977  func (fieldMask *MonitoredResource_FieldMask) GetRawPaths() []gotenobject.FieldPath {
  3978  	if fieldMask == nil {
  3979  		return nil
  3980  	}
  3981  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
  3982  	for _, path := range fieldMask.Paths {
  3983  		rawPaths = append(rawPaths, path)
  3984  	}
  3985  	return rawPaths
  3986  }
  3987  
  3988  func (fieldMask *MonitoredResource_FieldMask) SetFromCliFlag(raw string) error {
  3989  	path, err := ParseMonitoredResource_FieldPath(raw)
  3990  	if err != nil {
  3991  		return err
  3992  	}
  3993  	fieldMask.Paths = append(fieldMask.Paths, path)
  3994  	return nil
  3995  }
  3996  
  3997  func (fieldMask *MonitoredResource_FieldMask) Set(target, source *MonitoredResource) {
  3998  	for _, path := range fieldMask.Paths {
  3999  		val, _ := path.GetSingle(source)
  4000  		// if val is nil, then field does not exist in source, skip
  4001  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
  4002  		if val != nil {
  4003  			path.WithIValue(val).SetTo(&target)
  4004  		}
  4005  	}
  4006  }
  4007  
  4008  func (fieldMask *MonitoredResource_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
  4009  	fieldMask.Set(target.(*MonitoredResource), source.(*MonitoredResource))
  4010  }
  4011  
  4012  func (fieldMask *MonitoredResource_FieldMask) Project(source *MonitoredResource) *MonitoredResource {
  4013  	if source == nil {
  4014  		return nil
  4015  	}
  4016  	if fieldMask == nil {
  4017  		return source
  4018  	}
  4019  	result := &MonitoredResource{}
  4020  	var labelsMapKeys []string
  4021  	wholeLabelsAccepted := false
  4022  
  4023  	for _, p := range fieldMask.Paths {
  4024  		switch tp := p.(type) {
  4025  		case *MonitoredResource_FieldTerminalPath:
  4026  			switch tp.selector {
  4027  			case MonitoredResource_FieldPathSelectorType:
  4028  				result.Type = source.Type
  4029  			case MonitoredResource_FieldPathSelectorLabels:
  4030  				result.Labels = source.Labels
  4031  				wholeLabelsAccepted = true
  4032  			case MonitoredResource_FieldPathSelectorReducedLabels:
  4033  				result.ReducedLabels = source.ReducedLabels
  4034  			}
  4035  		case *MonitoredResource_FieldPathMap:
  4036  			switch tp.selector {
  4037  			case MonitoredResource_FieldPathSelectorLabels:
  4038  				labelsMapKeys = append(labelsMapKeys, tp.key)
  4039  			}
  4040  		}
  4041  	}
  4042  	if wholeLabelsAccepted == false && len(labelsMapKeys) > 0 && source.GetLabels() != nil {
  4043  		copiedMap := map[string]string{}
  4044  		sourceMap := source.GetLabels()
  4045  		for _, key := range labelsMapKeys {
  4046  			copiedMap[key] = sourceMap[key]
  4047  		}
  4048  		result.Labels = copiedMap
  4049  	}
  4050  	return result
  4051  }
  4052  
  4053  func (fieldMask *MonitoredResource_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
  4054  	return fieldMask.Project(source.(*MonitoredResource))
  4055  }
  4056  
  4057  func (fieldMask *MonitoredResource_FieldMask) PathsCount() int {
  4058  	if fieldMask == nil {
  4059  		return 0
  4060  	}
  4061  	return len(fieldMask.Paths)
  4062  }
  4063  
  4064  type Strings_FieldMask struct {
  4065  	Paths []Strings_FieldPath
  4066  }
  4067  
  4068  func FullStrings_FieldMask() *Strings_FieldMask {
  4069  	res := &Strings_FieldMask{}
  4070  	res.Paths = append(res.Paths, &Strings_FieldTerminalPath{selector: Strings_FieldPathSelectorValues})
  4071  	return res
  4072  }
  4073  
  4074  func (fieldMask *Strings_FieldMask) String() string {
  4075  	if fieldMask == nil {
  4076  		return "<nil>"
  4077  	}
  4078  	pathsStr := make([]string, 0, len(fieldMask.Paths))
  4079  	for _, path := range fieldMask.Paths {
  4080  		pathsStr = append(pathsStr, path.String())
  4081  	}
  4082  	return strings.Join(pathsStr, ", ")
  4083  }
  4084  
  4085  func (fieldMask *Strings_FieldMask) IsFull() bool {
  4086  	if fieldMask == nil {
  4087  		return false
  4088  	}
  4089  	presentSelectors := make([]bool, 1)
  4090  	for _, path := range fieldMask.Paths {
  4091  		if asFinal, ok := path.(*Strings_FieldTerminalPath); ok {
  4092  			presentSelectors[int(asFinal.selector)] = true
  4093  		}
  4094  	}
  4095  	for _, flag := range presentSelectors {
  4096  		if !flag {
  4097  			return false
  4098  		}
  4099  	}
  4100  	return true
  4101  }
  4102  
  4103  func (fieldMask *Strings_FieldMask) ProtoReflect() preflect.Message {
  4104  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
  4105  		return ParseStrings_FieldPath(raw)
  4106  	})
  4107  }
  4108  
  4109  func (fieldMask *Strings_FieldMask) ProtoMessage() {}
  4110  
  4111  func (fieldMask *Strings_FieldMask) Reset() {
  4112  	if fieldMask != nil {
  4113  		fieldMask.Paths = nil
  4114  	}
  4115  }
  4116  
  4117  func (fieldMask *Strings_FieldMask) Subtract(other *Strings_FieldMask) *Strings_FieldMask {
  4118  	result := &Strings_FieldMask{}
  4119  	removedSelectors := make([]bool, 1)
  4120  
  4121  	for _, path := range other.GetPaths() {
  4122  		switch tp := path.(type) {
  4123  		case *Strings_FieldTerminalPath:
  4124  			removedSelectors[int(tp.selector)] = true
  4125  		}
  4126  	}
  4127  	for _, path := range fieldMask.GetPaths() {
  4128  		if !removedSelectors[int(path.Selector())] {
  4129  			result.Paths = append(result.Paths, path)
  4130  		}
  4131  	}
  4132  
  4133  	if len(result.Paths) == 0 {
  4134  		return nil
  4135  	}
  4136  	return result
  4137  }
  4138  
  4139  func (fieldMask *Strings_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
  4140  	return fieldMask.Subtract(other.(*Strings_FieldMask))
  4141  }
  4142  
  4143  // FilterInputFields generates copy of field paths with output_only field paths removed
  4144  func (fieldMask *Strings_FieldMask) FilterInputFields() *Strings_FieldMask {
  4145  	result := &Strings_FieldMask{}
  4146  	result.Paths = append(result.Paths, fieldMask.Paths...)
  4147  	return result
  4148  }
  4149  
  4150  // ToFieldMask is used for proto conversions
  4151  func (fieldMask *Strings_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
  4152  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  4153  	for _, path := range fieldMask.Paths {
  4154  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
  4155  	}
  4156  	return protoFieldMask
  4157  }
  4158  
  4159  func (fieldMask *Strings_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
  4160  	if fieldMask == nil {
  4161  		return status.Error(codes.Internal, "target field mask is nil")
  4162  	}
  4163  	fieldMask.Paths = make([]Strings_FieldPath, 0, len(protoFieldMask.Paths))
  4164  	for _, strPath := range protoFieldMask.Paths {
  4165  		path, err := ParseStrings_FieldPath(strPath)
  4166  		if err != nil {
  4167  			return err
  4168  		}
  4169  		fieldMask.Paths = append(fieldMask.Paths, path)
  4170  	}
  4171  	return nil
  4172  }
  4173  
  4174  // implement methods required by customType
  4175  func (fieldMask Strings_FieldMask) Marshal() ([]byte, error) {
  4176  	protoFieldMask := fieldMask.ToProtoFieldMask()
  4177  	return proto.Marshal(protoFieldMask)
  4178  }
  4179  
  4180  func (fieldMask *Strings_FieldMask) Unmarshal(data []byte) error {
  4181  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  4182  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
  4183  		return err
  4184  	}
  4185  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  4186  		return err
  4187  	}
  4188  	return nil
  4189  }
  4190  
  4191  func (fieldMask *Strings_FieldMask) Size() int {
  4192  	return proto.Size(fieldMask.ToProtoFieldMask())
  4193  }
  4194  
  4195  func (fieldMask Strings_FieldMask) MarshalJSON() ([]byte, error) {
  4196  	return json.Marshal(fieldMask.ToProtoFieldMask())
  4197  }
  4198  
  4199  func (fieldMask *Strings_FieldMask) UnmarshalJSON(data []byte) error {
  4200  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  4201  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
  4202  		return err
  4203  	}
  4204  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  4205  		return err
  4206  	}
  4207  	return nil
  4208  }
  4209  
  4210  func (fieldMask *Strings_FieldMask) AppendPath(path Strings_FieldPath) {
  4211  	fieldMask.Paths = append(fieldMask.Paths, path)
  4212  }
  4213  
  4214  func (fieldMask *Strings_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
  4215  	fieldMask.Paths = append(fieldMask.Paths, path.(Strings_FieldPath))
  4216  }
  4217  
  4218  func (fieldMask *Strings_FieldMask) GetPaths() []Strings_FieldPath {
  4219  	if fieldMask == nil {
  4220  		return nil
  4221  	}
  4222  	return fieldMask.Paths
  4223  }
  4224  
  4225  func (fieldMask *Strings_FieldMask) GetRawPaths() []gotenobject.FieldPath {
  4226  	if fieldMask == nil {
  4227  		return nil
  4228  	}
  4229  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
  4230  	for _, path := range fieldMask.Paths {
  4231  		rawPaths = append(rawPaths, path)
  4232  	}
  4233  	return rawPaths
  4234  }
  4235  
  4236  func (fieldMask *Strings_FieldMask) SetFromCliFlag(raw string) error {
  4237  	path, err := ParseStrings_FieldPath(raw)
  4238  	if err != nil {
  4239  		return err
  4240  	}
  4241  	fieldMask.Paths = append(fieldMask.Paths, path)
  4242  	return nil
  4243  }
  4244  
  4245  func (fieldMask *Strings_FieldMask) Set(target, source *Strings) {
  4246  	for _, path := range fieldMask.Paths {
  4247  		val, _ := path.GetSingle(source)
  4248  		// if val is nil, then field does not exist in source, skip
  4249  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
  4250  		if val != nil {
  4251  			path.WithIValue(val).SetTo(&target)
  4252  		}
  4253  	}
  4254  }
  4255  
  4256  func (fieldMask *Strings_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
  4257  	fieldMask.Set(target.(*Strings), source.(*Strings))
  4258  }
  4259  
  4260  func (fieldMask *Strings_FieldMask) Project(source *Strings) *Strings {
  4261  	if source == nil {
  4262  		return nil
  4263  	}
  4264  	if fieldMask == nil {
  4265  		return source
  4266  	}
  4267  	result := &Strings{}
  4268  
  4269  	for _, p := range fieldMask.Paths {
  4270  		switch tp := p.(type) {
  4271  		case *Strings_FieldTerminalPath:
  4272  			switch tp.selector {
  4273  			case Strings_FieldPathSelectorValues:
  4274  				result.Values = source.Values
  4275  			}
  4276  		}
  4277  	}
  4278  	return result
  4279  }
  4280  
  4281  func (fieldMask *Strings_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
  4282  	return fieldMask.Project(source.(*Strings))
  4283  }
  4284  
  4285  func (fieldMask *Strings_FieldMask) PathsCount() int {
  4286  	if fieldMask == nil {
  4287  		return 0
  4288  	}
  4289  	return len(fieldMask.Paths)
  4290  }
  4291  
  4292  type MonitoredResourceSelector_FieldMask struct {
  4293  	Paths []MonitoredResourceSelector_FieldPath
  4294  }
  4295  
  4296  func FullMonitoredResourceSelector_FieldMask() *MonitoredResourceSelector_FieldMask {
  4297  	res := &MonitoredResourceSelector_FieldMask{}
  4298  	res.Paths = append(res.Paths, &MonitoredResourceSelector_FieldTerminalPath{selector: MonitoredResourceSelector_FieldPathSelectorTypes})
  4299  	res.Paths = append(res.Paths, &MonitoredResourceSelector_FieldTerminalPath{selector: MonitoredResourceSelector_FieldPathSelectorLabels})
  4300  	return res
  4301  }
  4302  
  4303  func (fieldMask *MonitoredResourceSelector_FieldMask) String() string {
  4304  	if fieldMask == nil {
  4305  		return "<nil>"
  4306  	}
  4307  	pathsStr := make([]string, 0, len(fieldMask.Paths))
  4308  	for _, path := range fieldMask.Paths {
  4309  		pathsStr = append(pathsStr, path.String())
  4310  	}
  4311  	return strings.Join(pathsStr, ", ")
  4312  }
  4313  
  4314  func (fieldMask *MonitoredResourceSelector_FieldMask) IsFull() bool {
  4315  	if fieldMask == nil {
  4316  		return false
  4317  	}
  4318  	presentSelectors := make([]bool, 2)
  4319  	for _, path := range fieldMask.Paths {
  4320  		if asFinal, ok := path.(*MonitoredResourceSelector_FieldTerminalPath); ok {
  4321  			presentSelectors[int(asFinal.selector)] = true
  4322  		}
  4323  	}
  4324  	for _, flag := range presentSelectors {
  4325  		if !flag {
  4326  			return false
  4327  		}
  4328  	}
  4329  	return true
  4330  }
  4331  
  4332  func (fieldMask *MonitoredResourceSelector_FieldMask) ProtoReflect() preflect.Message {
  4333  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
  4334  		return ParseMonitoredResourceSelector_FieldPath(raw)
  4335  	})
  4336  }
  4337  
  4338  func (fieldMask *MonitoredResourceSelector_FieldMask) ProtoMessage() {}
  4339  
  4340  func (fieldMask *MonitoredResourceSelector_FieldMask) Reset() {
  4341  	if fieldMask != nil {
  4342  		fieldMask.Paths = nil
  4343  	}
  4344  }
  4345  
  4346  func (fieldMask *MonitoredResourceSelector_FieldMask) Subtract(other *MonitoredResourceSelector_FieldMask) *MonitoredResourceSelector_FieldMask {
  4347  	result := &MonitoredResourceSelector_FieldMask{}
  4348  	removedSelectors := make([]bool, 2)
  4349  
  4350  	for _, path := range other.GetPaths() {
  4351  		switch tp := path.(type) {
  4352  		case *MonitoredResourceSelector_FieldTerminalPath:
  4353  			removedSelectors[int(tp.selector)] = true
  4354  		}
  4355  	}
  4356  	for _, path := range fieldMask.GetPaths() {
  4357  		if !removedSelectors[int(path.Selector())] {
  4358  			result.Paths = append(result.Paths, path)
  4359  		}
  4360  	}
  4361  
  4362  	if len(result.Paths) == 0 {
  4363  		return nil
  4364  	}
  4365  	return result
  4366  }
  4367  
  4368  func (fieldMask *MonitoredResourceSelector_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
  4369  	return fieldMask.Subtract(other.(*MonitoredResourceSelector_FieldMask))
  4370  }
  4371  
  4372  // FilterInputFields generates copy of field paths with output_only field paths removed
  4373  func (fieldMask *MonitoredResourceSelector_FieldMask) FilterInputFields() *MonitoredResourceSelector_FieldMask {
  4374  	result := &MonitoredResourceSelector_FieldMask{}
  4375  	result.Paths = append(result.Paths, fieldMask.Paths...)
  4376  	return result
  4377  }
  4378  
  4379  // ToFieldMask is used for proto conversions
  4380  func (fieldMask *MonitoredResourceSelector_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
  4381  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  4382  	for _, path := range fieldMask.Paths {
  4383  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
  4384  	}
  4385  	return protoFieldMask
  4386  }
  4387  
  4388  func (fieldMask *MonitoredResourceSelector_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
  4389  	if fieldMask == nil {
  4390  		return status.Error(codes.Internal, "target field mask is nil")
  4391  	}
  4392  	fieldMask.Paths = make([]MonitoredResourceSelector_FieldPath, 0, len(protoFieldMask.Paths))
  4393  	for _, strPath := range protoFieldMask.Paths {
  4394  		path, err := ParseMonitoredResourceSelector_FieldPath(strPath)
  4395  		if err != nil {
  4396  			return err
  4397  		}
  4398  		fieldMask.Paths = append(fieldMask.Paths, path)
  4399  	}
  4400  	return nil
  4401  }
  4402  
  4403  // implement methods required by customType
  4404  func (fieldMask MonitoredResourceSelector_FieldMask) Marshal() ([]byte, error) {
  4405  	protoFieldMask := fieldMask.ToProtoFieldMask()
  4406  	return proto.Marshal(protoFieldMask)
  4407  }
  4408  
  4409  func (fieldMask *MonitoredResourceSelector_FieldMask) Unmarshal(data []byte) error {
  4410  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  4411  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
  4412  		return err
  4413  	}
  4414  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  4415  		return err
  4416  	}
  4417  	return nil
  4418  }
  4419  
  4420  func (fieldMask *MonitoredResourceSelector_FieldMask) Size() int {
  4421  	return proto.Size(fieldMask.ToProtoFieldMask())
  4422  }
  4423  
  4424  func (fieldMask MonitoredResourceSelector_FieldMask) MarshalJSON() ([]byte, error) {
  4425  	return json.Marshal(fieldMask.ToProtoFieldMask())
  4426  }
  4427  
  4428  func (fieldMask *MonitoredResourceSelector_FieldMask) UnmarshalJSON(data []byte) error {
  4429  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  4430  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
  4431  		return err
  4432  	}
  4433  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  4434  		return err
  4435  	}
  4436  	return nil
  4437  }
  4438  
  4439  func (fieldMask *MonitoredResourceSelector_FieldMask) AppendPath(path MonitoredResourceSelector_FieldPath) {
  4440  	fieldMask.Paths = append(fieldMask.Paths, path)
  4441  }
  4442  
  4443  func (fieldMask *MonitoredResourceSelector_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
  4444  	fieldMask.Paths = append(fieldMask.Paths, path.(MonitoredResourceSelector_FieldPath))
  4445  }
  4446  
  4447  func (fieldMask *MonitoredResourceSelector_FieldMask) GetPaths() []MonitoredResourceSelector_FieldPath {
  4448  	if fieldMask == nil {
  4449  		return nil
  4450  	}
  4451  	return fieldMask.Paths
  4452  }
  4453  
  4454  func (fieldMask *MonitoredResourceSelector_FieldMask) GetRawPaths() []gotenobject.FieldPath {
  4455  	if fieldMask == nil {
  4456  		return nil
  4457  	}
  4458  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
  4459  	for _, path := range fieldMask.Paths {
  4460  		rawPaths = append(rawPaths, path)
  4461  	}
  4462  	return rawPaths
  4463  }
  4464  
  4465  func (fieldMask *MonitoredResourceSelector_FieldMask) SetFromCliFlag(raw string) error {
  4466  	path, err := ParseMonitoredResourceSelector_FieldPath(raw)
  4467  	if err != nil {
  4468  		return err
  4469  	}
  4470  	fieldMask.Paths = append(fieldMask.Paths, path)
  4471  	return nil
  4472  }
  4473  
  4474  func (fieldMask *MonitoredResourceSelector_FieldMask) Set(target, source *MonitoredResourceSelector) {
  4475  	for _, path := range fieldMask.Paths {
  4476  		val, _ := path.GetSingle(source)
  4477  		// if val is nil, then field does not exist in source, skip
  4478  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
  4479  		if val != nil {
  4480  			path.WithIValue(val).SetTo(&target)
  4481  		}
  4482  	}
  4483  }
  4484  
  4485  func (fieldMask *MonitoredResourceSelector_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
  4486  	fieldMask.Set(target.(*MonitoredResourceSelector), source.(*MonitoredResourceSelector))
  4487  }
  4488  
  4489  func (fieldMask *MonitoredResourceSelector_FieldMask) Project(source *MonitoredResourceSelector) *MonitoredResourceSelector {
  4490  	if source == nil {
  4491  		return nil
  4492  	}
  4493  	if fieldMask == nil {
  4494  		return source
  4495  	}
  4496  	result := &MonitoredResourceSelector{}
  4497  	var labelsMapKeys []string
  4498  	wholeLabelsAccepted := false
  4499  
  4500  	for _, p := range fieldMask.Paths {
  4501  		switch tp := p.(type) {
  4502  		case *MonitoredResourceSelector_FieldTerminalPath:
  4503  			switch tp.selector {
  4504  			case MonitoredResourceSelector_FieldPathSelectorTypes:
  4505  				result.Types = source.Types
  4506  			case MonitoredResourceSelector_FieldPathSelectorLabels:
  4507  				result.Labels = source.Labels
  4508  				wholeLabelsAccepted = true
  4509  			}
  4510  		case *MonitoredResourceSelector_FieldPathMap:
  4511  			switch tp.selector {
  4512  			case MonitoredResourceSelector_FieldPathSelectorLabels:
  4513  				labelsMapKeys = append(labelsMapKeys, tp.key)
  4514  			}
  4515  		}
  4516  	}
  4517  	if wholeLabelsAccepted == false && len(labelsMapKeys) > 0 && source.GetLabels() != nil {
  4518  		copiedMap := map[string]*Strings{}
  4519  		sourceMap := source.GetLabels()
  4520  		for _, key := range labelsMapKeys {
  4521  			copiedMap[key] = sourceMap[key]
  4522  		}
  4523  		result.Labels = copiedMap
  4524  	}
  4525  	return result
  4526  }
  4527  
  4528  func (fieldMask *MonitoredResourceSelector_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
  4529  	return fieldMask.Project(source.(*MonitoredResourceSelector))
  4530  }
  4531  
  4532  func (fieldMask *MonitoredResourceSelector_FieldMask) PathsCount() int {
  4533  	if fieldMask == nil {
  4534  		return 0
  4535  	}
  4536  	return len(fieldMask.Paths)
  4537  }
  4538  
  4539  type MetricSelector_FieldMask struct {
  4540  	Paths []MetricSelector_FieldPath
  4541  }
  4542  
  4543  func FullMetricSelector_FieldMask() *MetricSelector_FieldMask {
  4544  	res := &MetricSelector_FieldMask{}
  4545  	res.Paths = append(res.Paths, &MetricSelector_FieldTerminalPath{selector: MetricSelector_FieldPathSelectorTypes})
  4546  	res.Paths = append(res.Paths, &MetricSelector_FieldTerminalPath{selector: MetricSelector_FieldPathSelectorLabels})
  4547  	return res
  4548  }
  4549  
  4550  func (fieldMask *MetricSelector_FieldMask) String() string {
  4551  	if fieldMask == nil {
  4552  		return "<nil>"
  4553  	}
  4554  	pathsStr := make([]string, 0, len(fieldMask.Paths))
  4555  	for _, path := range fieldMask.Paths {
  4556  		pathsStr = append(pathsStr, path.String())
  4557  	}
  4558  	return strings.Join(pathsStr, ", ")
  4559  }
  4560  
  4561  func (fieldMask *MetricSelector_FieldMask) IsFull() bool {
  4562  	if fieldMask == nil {
  4563  		return false
  4564  	}
  4565  	presentSelectors := make([]bool, 2)
  4566  	for _, path := range fieldMask.Paths {
  4567  		if asFinal, ok := path.(*MetricSelector_FieldTerminalPath); ok {
  4568  			presentSelectors[int(asFinal.selector)] = true
  4569  		}
  4570  	}
  4571  	for _, flag := range presentSelectors {
  4572  		if !flag {
  4573  			return false
  4574  		}
  4575  	}
  4576  	return true
  4577  }
  4578  
  4579  func (fieldMask *MetricSelector_FieldMask) ProtoReflect() preflect.Message {
  4580  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
  4581  		return ParseMetricSelector_FieldPath(raw)
  4582  	})
  4583  }
  4584  
  4585  func (fieldMask *MetricSelector_FieldMask) ProtoMessage() {}
  4586  
  4587  func (fieldMask *MetricSelector_FieldMask) Reset() {
  4588  	if fieldMask != nil {
  4589  		fieldMask.Paths = nil
  4590  	}
  4591  }
  4592  
  4593  func (fieldMask *MetricSelector_FieldMask) Subtract(other *MetricSelector_FieldMask) *MetricSelector_FieldMask {
  4594  	result := &MetricSelector_FieldMask{}
  4595  	removedSelectors := make([]bool, 2)
  4596  
  4597  	for _, path := range other.GetPaths() {
  4598  		switch tp := path.(type) {
  4599  		case *MetricSelector_FieldTerminalPath:
  4600  			removedSelectors[int(tp.selector)] = true
  4601  		}
  4602  	}
  4603  	for _, path := range fieldMask.GetPaths() {
  4604  		if !removedSelectors[int(path.Selector())] {
  4605  			result.Paths = append(result.Paths, path)
  4606  		}
  4607  	}
  4608  
  4609  	if len(result.Paths) == 0 {
  4610  		return nil
  4611  	}
  4612  	return result
  4613  }
  4614  
  4615  func (fieldMask *MetricSelector_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
  4616  	return fieldMask.Subtract(other.(*MetricSelector_FieldMask))
  4617  }
  4618  
  4619  // FilterInputFields generates copy of field paths with output_only field paths removed
  4620  func (fieldMask *MetricSelector_FieldMask) FilterInputFields() *MetricSelector_FieldMask {
  4621  	result := &MetricSelector_FieldMask{}
  4622  	result.Paths = append(result.Paths, fieldMask.Paths...)
  4623  	return result
  4624  }
  4625  
  4626  // ToFieldMask is used for proto conversions
  4627  func (fieldMask *MetricSelector_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
  4628  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  4629  	for _, path := range fieldMask.Paths {
  4630  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
  4631  	}
  4632  	return protoFieldMask
  4633  }
  4634  
  4635  func (fieldMask *MetricSelector_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
  4636  	if fieldMask == nil {
  4637  		return status.Error(codes.Internal, "target field mask is nil")
  4638  	}
  4639  	fieldMask.Paths = make([]MetricSelector_FieldPath, 0, len(protoFieldMask.Paths))
  4640  	for _, strPath := range protoFieldMask.Paths {
  4641  		path, err := ParseMetricSelector_FieldPath(strPath)
  4642  		if err != nil {
  4643  			return err
  4644  		}
  4645  		fieldMask.Paths = append(fieldMask.Paths, path)
  4646  	}
  4647  	return nil
  4648  }
  4649  
  4650  // implement methods required by customType
  4651  func (fieldMask MetricSelector_FieldMask) Marshal() ([]byte, error) {
  4652  	protoFieldMask := fieldMask.ToProtoFieldMask()
  4653  	return proto.Marshal(protoFieldMask)
  4654  }
  4655  
  4656  func (fieldMask *MetricSelector_FieldMask) Unmarshal(data []byte) error {
  4657  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  4658  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
  4659  		return err
  4660  	}
  4661  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  4662  		return err
  4663  	}
  4664  	return nil
  4665  }
  4666  
  4667  func (fieldMask *MetricSelector_FieldMask) Size() int {
  4668  	return proto.Size(fieldMask.ToProtoFieldMask())
  4669  }
  4670  
  4671  func (fieldMask MetricSelector_FieldMask) MarshalJSON() ([]byte, error) {
  4672  	return json.Marshal(fieldMask.ToProtoFieldMask())
  4673  }
  4674  
  4675  func (fieldMask *MetricSelector_FieldMask) UnmarshalJSON(data []byte) error {
  4676  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  4677  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
  4678  		return err
  4679  	}
  4680  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  4681  		return err
  4682  	}
  4683  	return nil
  4684  }
  4685  
  4686  func (fieldMask *MetricSelector_FieldMask) AppendPath(path MetricSelector_FieldPath) {
  4687  	fieldMask.Paths = append(fieldMask.Paths, path)
  4688  }
  4689  
  4690  func (fieldMask *MetricSelector_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
  4691  	fieldMask.Paths = append(fieldMask.Paths, path.(MetricSelector_FieldPath))
  4692  }
  4693  
  4694  func (fieldMask *MetricSelector_FieldMask) GetPaths() []MetricSelector_FieldPath {
  4695  	if fieldMask == nil {
  4696  		return nil
  4697  	}
  4698  	return fieldMask.Paths
  4699  }
  4700  
  4701  func (fieldMask *MetricSelector_FieldMask) GetRawPaths() []gotenobject.FieldPath {
  4702  	if fieldMask == nil {
  4703  		return nil
  4704  	}
  4705  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
  4706  	for _, path := range fieldMask.Paths {
  4707  		rawPaths = append(rawPaths, path)
  4708  	}
  4709  	return rawPaths
  4710  }
  4711  
  4712  func (fieldMask *MetricSelector_FieldMask) SetFromCliFlag(raw string) error {
  4713  	path, err := ParseMetricSelector_FieldPath(raw)
  4714  	if err != nil {
  4715  		return err
  4716  	}
  4717  	fieldMask.Paths = append(fieldMask.Paths, path)
  4718  	return nil
  4719  }
  4720  
  4721  func (fieldMask *MetricSelector_FieldMask) Set(target, source *MetricSelector) {
  4722  	for _, path := range fieldMask.Paths {
  4723  		val, _ := path.GetSingle(source)
  4724  		// if val is nil, then field does not exist in source, skip
  4725  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
  4726  		if val != nil {
  4727  			path.WithIValue(val).SetTo(&target)
  4728  		}
  4729  	}
  4730  }
  4731  
  4732  func (fieldMask *MetricSelector_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
  4733  	fieldMask.Set(target.(*MetricSelector), source.(*MetricSelector))
  4734  }
  4735  
  4736  func (fieldMask *MetricSelector_FieldMask) Project(source *MetricSelector) *MetricSelector {
  4737  	if source == nil {
  4738  		return nil
  4739  	}
  4740  	if fieldMask == nil {
  4741  		return source
  4742  	}
  4743  	result := &MetricSelector{}
  4744  	var labelsMapKeys []string
  4745  	wholeLabelsAccepted := false
  4746  
  4747  	for _, p := range fieldMask.Paths {
  4748  		switch tp := p.(type) {
  4749  		case *MetricSelector_FieldTerminalPath:
  4750  			switch tp.selector {
  4751  			case MetricSelector_FieldPathSelectorTypes:
  4752  				result.Types = source.Types
  4753  			case MetricSelector_FieldPathSelectorLabels:
  4754  				result.Labels = source.Labels
  4755  				wholeLabelsAccepted = true
  4756  			}
  4757  		case *MetricSelector_FieldPathMap:
  4758  			switch tp.selector {
  4759  			case MetricSelector_FieldPathSelectorLabels:
  4760  				labelsMapKeys = append(labelsMapKeys, tp.key)
  4761  			}
  4762  		}
  4763  	}
  4764  	if wholeLabelsAccepted == false && len(labelsMapKeys) > 0 && source.GetLabels() != nil {
  4765  		copiedMap := map[string]*Strings{}
  4766  		sourceMap := source.GetLabels()
  4767  		for _, key := range labelsMapKeys {
  4768  			copiedMap[key] = sourceMap[key]
  4769  		}
  4770  		result.Labels = copiedMap
  4771  	}
  4772  	return result
  4773  }
  4774  
  4775  func (fieldMask *MetricSelector_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
  4776  	return fieldMask.Project(source.(*MetricSelector))
  4777  }
  4778  
  4779  func (fieldMask *MetricSelector_FieldMask) PathsCount() int {
  4780  	if fieldMask == nil {
  4781  		return 0
  4782  	}
  4783  	return len(fieldMask.Paths)
  4784  }
  4785  
  4786  type TimeSeriesSelector_FieldMask struct {
  4787  	Paths []TimeSeriesSelector_FieldPath
  4788  }
  4789  
  4790  func FullTimeSeriesSelector_FieldMask() *TimeSeriesSelector_FieldMask {
  4791  	res := &TimeSeriesSelector_FieldMask{}
  4792  	res.Paths = append(res.Paths, &TimeSeriesSelector_FieldTerminalPath{selector: TimeSeriesSelector_FieldPathSelectorMetric})
  4793  	res.Paths = append(res.Paths, &TimeSeriesSelector_FieldTerminalPath{selector: TimeSeriesSelector_FieldPathSelectorResource})
  4794  	return res
  4795  }
  4796  
  4797  func (fieldMask *TimeSeriesSelector_FieldMask) String() string {
  4798  	if fieldMask == nil {
  4799  		return "<nil>"
  4800  	}
  4801  	pathsStr := make([]string, 0, len(fieldMask.Paths))
  4802  	for _, path := range fieldMask.Paths {
  4803  		pathsStr = append(pathsStr, path.String())
  4804  	}
  4805  	return strings.Join(pathsStr, ", ")
  4806  }
  4807  
  4808  func (fieldMask *TimeSeriesSelector_FieldMask) IsFull() bool {
  4809  	if fieldMask == nil {
  4810  		return false
  4811  	}
  4812  	presentSelectors := make([]bool, 2)
  4813  	for _, path := range fieldMask.Paths {
  4814  		if asFinal, ok := path.(*TimeSeriesSelector_FieldTerminalPath); ok {
  4815  			presentSelectors[int(asFinal.selector)] = true
  4816  		}
  4817  	}
  4818  	for _, flag := range presentSelectors {
  4819  		if !flag {
  4820  			return false
  4821  		}
  4822  	}
  4823  	return true
  4824  }
  4825  
  4826  func (fieldMask *TimeSeriesSelector_FieldMask) ProtoReflect() preflect.Message {
  4827  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
  4828  		return ParseTimeSeriesSelector_FieldPath(raw)
  4829  	})
  4830  }
  4831  
  4832  func (fieldMask *TimeSeriesSelector_FieldMask) ProtoMessage() {}
  4833  
  4834  func (fieldMask *TimeSeriesSelector_FieldMask) Reset() {
  4835  	if fieldMask != nil {
  4836  		fieldMask.Paths = nil
  4837  	}
  4838  }
  4839  
  4840  func (fieldMask *TimeSeriesSelector_FieldMask) Subtract(other *TimeSeriesSelector_FieldMask) *TimeSeriesSelector_FieldMask {
  4841  	result := &TimeSeriesSelector_FieldMask{}
  4842  	removedSelectors := make([]bool, 2)
  4843  	otherSubMasks := map[TimeSeriesSelector_FieldPathSelector]gotenobject.FieldMask{
  4844  		TimeSeriesSelector_FieldPathSelectorMetric:   &MetricSelector_FieldMask{},
  4845  		TimeSeriesSelector_FieldPathSelectorResource: &MonitoredResourceSelector_FieldMask{},
  4846  	}
  4847  	mySubMasks := map[TimeSeriesSelector_FieldPathSelector]gotenobject.FieldMask{
  4848  		TimeSeriesSelector_FieldPathSelectorMetric:   &MetricSelector_FieldMask{},
  4849  		TimeSeriesSelector_FieldPathSelectorResource: &MonitoredResourceSelector_FieldMask{},
  4850  	}
  4851  
  4852  	for _, path := range other.GetPaths() {
  4853  		switch tp := path.(type) {
  4854  		case *TimeSeriesSelector_FieldTerminalPath:
  4855  			removedSelectors[int(tp.selector)] = true
  4856  		case *TimeSeriesSelector_FieldSubPath:
  4857  			otherSubMasks[tp.selector].AppendRawPath(tp.subPath)
  4858  		}
  4859  	}
  4860  	for _, path := range fieldMask.GetPaths() {
  4861  		if !removedSelectors[int(path.Selector())] {
  4862  			if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 {
  4863  				if tp, ok := path.(*TimeSeriesSelector_FieldTerminalPath); ok {
  4864  					switch tp.selector {
  4865  					case TimeSeriesSelector_FieldPathSelectorMetric:
  4866  						mySubMasks[TimeSeriesSelector_FieldPathSelectorMetric] = FullMetricSelector_FieldMask()
  4867  					case TimeSeriesSelector_FieldPathSelectorResource:
  4868  						mySubMasks[TimeSeriesSelector_FieldPathSelectorResource] = FullMonitoredResourceSelector_FieldMask()
  4869  					}
  4870  				} else if tp, ok := path.(*TimeSeriesSelector_FieldSubPath); ok {
  4871  					mySubMasks[tp.selector].AppendRawPath(tp.subPath)
  4872  				}
  4873  			} else {
  4874  				result.Paths = append(result.Paths, path)
  4875  			}
  4876  		}
  4877  	}
  4878  	for selector, mySubMask := range mySubMasks {
  4879  		if mySubMask.PathsCount() > 0 {
  4880  			for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() {
  4881  				result.Paths = append(result.Paths, &TimeSeriesSelector_FieldSubPath{selector: selector, subPath: allowedPath})
  4882  			}
  4883  		}
  4884  	}
  4885  
  4886  	if len(result.Paths) == 0 {
  4887  		return nil
  4888  	}
  4889  	return result
  4890  }
  4891  
  4892  func (fieldMask *TimeSeriesSelector_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
  4893  	return fieldMask.Subtract(other.(*TimeSeriesSelector_FieldMask))
  4894  }
  4895  
  4896  // FilterInputFields generates copy of field paths with output_only field paths removed
  4897  func (fieldMask *TimeSeriesSelector_FieldMask) FilterInputFields() *TimeSeriesSelector_FieldMask {
  4898  	result := &TimeSeriesSelector_FieldMask{}
  4899  	result.Paths = append(result.Paths, fieldMask.Paths...)
  4900  	return result
  4901  }
  4902  
  4903  // ToFieldMask is used for proto conversions
  4904  func (fieldMask *TimeSeriesSelector_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
  4905  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  4906  	for _, path := range fieldMask.Paths {
  4907  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
  4908  	}
  4909  	return protoFieldMask
  4910  }
  4911  
  4912  func (fieldMask *TimeSeriesSelector_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
  4913  	if fieldMask == nil {
  4914  		return status.Error(codes.Internal, "target field mask is nil")
  4915  	}
  4916  	fieldMask.Paths = make([]TimeSeriesSelector_FieldPath, 0, len(protoFieldMask.Paths))
  4917  	for _, strPath := range protoFieldMask.Paths {
  4918  		path, err := ParseTimeSeriesSelector_FieldPath(strPath)
  4919  		if err != nil {
  4920  			return err
  4921  		}
  4922  		fieldMask.Paths = append(fieldMask.Paths, path)
  4923  	}
  4924  	return nil
  4925  }
  4926  
  4927  // implement methods required by customType
  4928  func (fieldMask TimeSeriesSelector_FieldMask) Marshal() ([]byte, error) {
  4929  	protoFieldMask := fieldMask.ToProtoFieldMask()
  4930  	return proto.Marshal(protoFieldMask)
  4931  }
  4932  
  4933  func (fieldMask *TimeSeriesSelector_FieldMask) Unmarshal(data []byte) error {
  4934  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  4935  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
  4936  		return err
  4937  	}
  4938  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  4939  		return err
  4940  	}
  4941  	return nil
  4942  }
  4943  
  4944  func (fieldMask *TimeSeriesSelector_FieldMask) Size() int {
  4945  	return proto.Size(fieldMask.ToProtoFieldMask())
  4946  }
  4947  
  4948  func (fieldMask TimeSeriesSelector_FieldMask) MarshalJSON() ([]byte, error) {
  4949  	return json.Marshal(fieldMask.ToProtoFieldMask())
  4950  }
  4951  
  4952  func (fieldMask *TimeSeriesSelector_FieldMask) UnmarshalJSON(data []byte) error {
  4953  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  4954  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
  4955  		return err
  4956  	}
  4957  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  4958  		return err
  4959  	}
  4960  	return nil
  4961  }
  4962  
  4963  func (fieldMask *TimeSeriesSelector_FieldMask) AppendPath(path TimeSeriesSelector_FieldPath) {
  4964  	fieldMask.Paths = append(fieldMask.Paths, path)
  4965  }
  4966  
  4967  func (fieldMask *TimeSeriesSelector_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
  4968  	fieldMask.Paths = append(fieldMask.Paths, path.(TimeSeriesSelector_FieldPath))
  4969  }
  4970  
  4971  func (fieldMask *TimeSeriesSelector_FieldMask) GetPaths() []TimeSeriesSelector_FieldPath {
  4972  	if fieldMask == nil {
  4973  		return nil
  4974  	}
  4975  	return fieldMask.Paths
  4976  }
  4977  
  4978  func (fieldMask *TimeSeriesSelector_FieldMask) GetRawPaths() []gotenobject.FieldPath {
  4979  	if fieldMask == nil {
  4980  		return nil
  4981  	}
  4982  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
  4983  	for _, path := range fieldMask.Paths {
  4984  		rawPaths = append(rawPaths, path)
  4985  	}
  4986  	return rawPaths
  4987  }
  4988  
  4989  func (fieldMask *TimeSeriesSelector_FieldMask) SetFromCliFlag(raw string) error {
  4990  	path, err := ParseTimeSeriesSelector_FieldPath(raw)
  4991  	if err != nil {
  4992  		return err
  4993  	}
  4994  	fieldMask.Paths = append(fieldMask.Paths, path)
  4995  	return nil
  4996  }
  4997  
  4998  func (fieldMask *TimeSeriesSelector_FieldMask) Set(target, source *TimeSeriesSelector) {
  4999  	for _, path := range fieldMask.Paths {
  5000  		val, _ := path.GetSingle(source)
  5001  		// if val is nil, then field does not exist in source, skip
  5002  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
  5003  		if val != nil {
  5004  			path.WithIValue(val).SetTo(&target)
  5005  		}
  5006  	}
  5007  }
  5008  
  5009  func (fieldMask *TimeSeriesSelector_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
  5010  	fieldMask.Set(target.(*TimeSeriesSelector), source.(*TimeSeriesSelector))
  5011  }
  5012  
  5013  func (fieldMask *TimeSeriesSelector_FieldMask) Project(source *TimeSeriesSelector) *TimeSeriesSelector {
  5014  	if source == nil {
  5015  		return nil
  5016  	}
  5017  	if fieldMask == nil {
  5018  		return source
  5019  	}
  5020  	result := &TimeSeriesSelector{}
  5021  	metricMask := &MetricSelector_FieldMask{}
  5022  	wholeMetricAccepted := false
  5023  	resourceMask := &MonitoredResourceSelector_FieldMask{}
  5024  	wholeResourceAccepted := false
  5025  
  5026  	for _, p := range fieldMask.Paths {
  5027  		switch tp := p.(type) {
  5028  		case *TimeSeriesSelector_FieldTerminalPath:
  5029  			switch tp.selector {
  5030  			case TimeSeriesSelector_FieldPathSelectorMetric:
  5031  				result.Metric = source.Metric
  5032  				wholeMetricAccepted = true
  5033  			case TimeSeriesSelector_FieldPathSelectorResource:
  5034  				result.Resource = source.Resource
  5035  				wholeResourceAccepted = true
  5036  			}
  5037  		case *TimeSeriesSelector_FieldSubPath:
  5038  			switch tp.selector {
  5039  			case TimeSeriesSelector_FieldPathSelectorMetric:
  5040  				metricMask.AppendPath(tp.subPath.(MetricSelector_FieldPath))
  5041  			case TimeSeriesSelector_FieldPathSelectorResource:
  5042  				resourceMask.AppendPath(tp.subPath.(MonitoredResourceSelector_FieldPath))
  5043  			}
  5044  		}
  5045  	}
  5046  	if wholeMetricAccepted == false && len(metricMask.Paths) > 0 {
  5047  		result.Metric = metricMask.Project(source.GetMetric())
  5048  	}
  5049  	if wholeResourceAccepted == false && len(resourceMask.Paths) > 0 {
  5050  		result.Resource = resourceMask.Project(source.GetResource())
  5051  	}
  5052  	return result
  5053  }
  5054  
  5055  func (fieldMask *TimeSeriesSelector_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
  5056  	return fieldMask.Project(source.(*TimeSeriesSelector))
  5057  }
  5058  
  5059  func (fieldMask *TimeSeriesSelector_FieldMask) PathsCount() int {
  5060  	if fieldMask == nil {
  5061  		return 0
  5062  	}
  5063  	return len(fieldMask.Paths)
  5064  }