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

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