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

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/monitoring/proto/v3/notification.proto
     3  // DO NOT EDIT!!!
     4  
     5  package notification
     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  	alert "github.com/cloudwan/edgelq-sdk/monitoring/resources/v3/alert"
    23  	alerting_condition "github.com/cloudwan/edgelq-sdk/monitoring/resources/v3/alerting_condition"
    24  	alerting_policy "github.com/cloudwan/edgelq-sdk/monitoring/resources/v3/alerting_policy"
    25  	common "github.com/cloudwan/edgelq-sdk/monitoring/resources/v3/common"
    26  	notification_channel "github.com/cloudwan/edgelq-sdk/monitoring/resources/v3/notification_channel"
    27  	project "github.com/cloudwan/edgelq-sdk/monitoring/resources/v3/project"
    28  	meta "github.com/cloudwan/goten-sdk/types/meta"
    29  )
    30  
    31  // ensure the imports are used
    32  var (
    33  	_ = new(json.Marshaler)
    34  	_ = strings.Builder{}
    35  
    36  	_ = codes.NotFound
    37  	_ = status.Status{}
    38  	_ = new(proto.Message)
    39  	_ = new(preflect.Message)
    40  	_ = googlefieldmaskpb.FieldMask{}
    41  
    42  	_ = new(gotenobject.FieldMask)
    43  )
    44  
    45  // make sure we're using proto imports
    46  var (
    47  	_ = &alert.Alert{}
    48  	_ = &alerting_condition.AlertingCondition{}
    49  	_ = &alerting_policy.AlertingPolicy{}
    50  	_ = &common.LabelDescriptor{}
    51  	_ = &notification_channel.NotificationChannel{}
    52  	_ = &project.Project{}
    53  	_ = &meta.Meta{}
    54  )
    55  
    56  type Notification_FieldMask struct {
    57  	Paths []Notification_FieldPath
    58  }
    59  
    60  func FullNotification_FieldMask() *Notification_FieldMask {
    61  	res := &Notification_FieldMask{}
    62  	res.Paths = append(res.Paths, &Notification_FieldTerminalPath{selector: Notification_FieldPathSelectorName})
    63  	res.Paths = append(res.Paths, &Notification_FieldTerminalPath{selector: Notification_FieldPathSelectorMetadata})
    64  	res.Paths = append(res.Paths, &Notification_FieldTerminalPath{selector: Notification_FieldPathSelectorAlertingPolicy})
    65  	res.Paths = append(res.Paths, &Notification_FieldTerminalPath{selector: Notification_FieldPathSelectorAlerts})
    66  	res.Paths = append(res.Paths, &Notification_FieldTerminalPath{selector: Notification_FieldPathSelectorState})
    67  	return res
    68  }
    69  
    70  func (fieldMask *Notification_FieldMask) String() string {
    71  	if fieldMask == nil {
    72  		return "<nil>"
    73  	}
    74  	pathsStr := make([]string, 0, len(fieldMask.Paths))
    75  	for _, path := range fieldMask.Paths {
    76  		pathsStr = append(pathsStr, path.String())
    77  	}
    78  	return strings.Join(pathsStr, ", ")
    79  }
    80  
    81  func (fieldMask *Notification_FieldMask) IsFull() bool {
    82  	if fieldMask == nil {
    83  		return false
    84  	}
    85  	presentSelectors := make([]bool, 5)
    86  	for _, path := range fieldMask.Paths {
    87  		if asFinal, ok := path.(*Notification_FieldTerminalPath); ok {
    88  			presentSelectors[int(asFinal.selector)] = true
    89  		}
    90  	}
    91  	for _, flag := range presentSelectors {
    92  		if !flag {
    93  			return false
    94  		}
    95  	}
    96  	return true
    97  }
    98  
    99  func (fieldMask *Notification_FieldMask) ProtoReflect() preflect.Message {
   100  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
   101  		return ParseNotification_FieldPath(raw)
   102  	})
   103  }
   104  
   105  func (fieldMask *Notification_FieldMask) ProtoMessage() {}
   106  
   107  func (fieldMask *Notification_FieldMask) Reset() {
   108  	if fieldMask != nil {
   109  		fieldMask.Paths = nil
   110  	}
   111  }
   112  
   113  func (fieldMask *Notification_FieldMask) Subtract(other *Notification_FieldMask) *Notification_FieldMask {
   114  	result := &Notification_FieldMask{}
   115  	removedSelectors := make([]bool, 5)
   116  	otherSubMasks := map[Notification_FieldPathSelector]gotenobject.FieldMask{
   117  		Notification_FieldPathSelectorMetadata: &meta.Meta_FieldMask{},
   118  		Notification_FieldPathSelectorState:    &Notification_State_FieldMask{},
   119  	}
   120  	mySubMasks := map[Notification_FieldPathSelector]gotenobject.FieldMask{
   121  		Notification_FieldPathSelectorMetadata: &meta.Meta_FieldMask{},
   122  		Notification_FieldPathSelectorState:    &Notification_State_FieldMask{},
   123  	}
   124  
   125  	for _, path := range other.GetPaths() {
   126  		switch tp := path.(type) {
   127  		case *Notification_FieldTerminalPath:
   128  			removedSelectors[int(tp.selector)] = true
   129  		case *Notification_FieldSubPath:
   130  			otherSubMasks[tp.selector].AppendRawPath(tp.subPath)
   131  		}
   132  	}
   133  	for _, path := range fieldMask.GetPaths() {
   134  		if !removedSelectors[int(path.Selector())] {
   135  			if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 {
   136  				if tp, ok := path.(*Notification_FieldTerminalPath); ok {
   137  					switch tp.selector {
   138  					case Notification_FieldPathSelectorMetadata:
   139  						mySubMasks[Notification_FieldPathSelectorMetadata] = meta.FullMeta_FieldMask()
   140  					case Notification_FieldPathSelectorState:
   141  						mySubMasks[Notification_FieldPathSelectorState] = FullNotification_State_FieldMask()
   142  					}
   143  				} else if tp, ok := path.(*Notification_FieldSubPath); ok {
   144  					mySubMasks[tp.selector].AppendRawPath(tp.subPath)
   145  				}
   146  			} else {
   147  				result.Paths = append(result.Paths, path)
   148  			}
   149  		}
   150  	}
   151  	for selector, mySubMask := range mySubMasks {
   152  		if mySubMask.PathsCount() > 0 {
   153  			for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() {
   154  				result.Paths = append(result.Paths, &Notification_FieldSubPath{selector: selector, subPath: allowedPath})
   155  			}
   156  		}
   157  	}
   158  
   159  	if len(result.Paths) == 0 {
   160  		return nil
   161  	}
   162  	return result
   163  }
   164  
   165  func (fieldMask *Notification_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   166  	return fieldMask.Subtract(other.(*Notification_FieldMask))
   167  }
   168  
   169  // FilterInputFields generates copy of field paths with output_only field paths removed
   170  func (fieldMask *Notification_FieldMask) FilterInputFields() *Notification_FieldMask {
   171  	result := &Notification_FieldMask{}
   172  	for _, path := range fieldMask.Paths {
   173  		switch path.Selector() {
   174  		case Notification_FieldPathSelectorMetadata:
   175  			if _, ok := path.(*Notification_FieldTerminalPath); ok {
   176  				for _, subpath := range meta.FullMeta_FieldMask().FilterInputFields().Paths {
   177  					result.Paths = append(result.Paths, &Notification_FieldSubPath{selector: path.Selector(), subPath: subpath})
   178  				}
   179  			} else if sub, ok := path.(*Notification_FieldSubPath); ok {
   180  				selectedMask := &meta.Meta_FieldMask{
   181  					Paths: []meta.Meta_FieldPath{sub.subPath.(meta.Meta_FieldPath)},
   182  				}
   183  				for _, allowedPath := range selectedMask.FilterInputFields().Paths {
   184  					result.Paths = append(result.Paths, &Notification_FieldSubPath{selector: Notification_FieldPathSelectorMetadata, subPath: allowedPath})
   185  				}
   186  			}
   187  		default:
   188  			result.Paths = append(result.Paths, path)
   189  		}
   190  	}
   191  	return result
   192  }
   193  
   194  // ToFieldMask is used for proto conversions
   195  func (fieldMask *Notification_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   196  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   197  	for _, path := range fieldMask.Paths {
   198  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   199  	}
   200  	return protoFieldMask
   201  }
   202  
   203  func (fieldMask *Notification_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   204  	if fieldMask == nil {
   205  		return status.Error(codes.Internal, "target field mask is nil")
   206  	}
   207  	fieldMask.Paths = make([]Notification_FieldPath, 0, len(protoFieldMask.Paths))
   208  	for _, strPath := range protoFieldMask.Paths {
   209  		path, err := ParseNotification_FieldPath(strPath)
   210  		if err != nil {
   211  			return err
   212  		}
   213  		fieldMask.Paths = append(fieldMask.Paths, path)
   214  	}
   215  	return nil
   216  }
   217  
   218  // implement methods required by customType
   219  func (fieldMask Notification_FieldMask) Marshal() ([]byte, error) {
   220  	protoFieldMask := fieldMask.ToProtoFieldMask()
   221  	return proto.Marshal(protoFieldMask)
   222  }
   223  
   224  func (fieldMask *Notification_FieldMask) Unmarshal(data []byte) error {
   225  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   226  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   227  		return err
   228  	}
   229  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   230  		return err
   231  	}
   232  	return nil
   233  }
   234  
   235  func (fieldMask *Notification_FieldMask) Size() int {
   236  	return proto.Size(fieldMask.ToProtoFieldMask())
   237  }
   238  
   239  func (fieldMask Notification_FieldMask) MarshalJSON() ([]byte, error) {
   240  	return json.Marshal(fieldMask.ToProtoFieldMask())
   241  }
   242  
   243  func (fieldMask *Notification_FieldMask) UnmarshalJSON(data []byte) error {
   244  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   245  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   246  		return err
   247  	}
   248  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   249  		return err
   250  	}
   251  	return nil
   252  }
   253  
   254  func (fieldMask *Notification_FieldMask) AppendPath(path Notification_FieldPath) {
   255  	fieldMask.Paths = append(fieldMask.Paths, path)
   256  }
   257  
   258  func (fieldMask *Notification_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   259  	fieldMask.Paths = append(fieldMask.Paths, path.(Notification_FieldPath))
   260  }
   261  
   262  func (fieldMask *Notification_FieldMask) GetPaths() []Notification_FieldPath {
   263  	if fieldMask == nil {
   264  		return nil
   265  	}
   266  	return fieldMask.Paths
   267  }
   268  
   269  func (fieldMask *Notification_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   270  	if fieldMask == nil {
   271  		return nil
   272  	}
   273  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   274  	for _, path := range fieldMask.Paths {
   275  		rawPaths = append(rawPaths, path)
   276  	}
   277  	return rawPaths
   278  }
   279  
   280  func (fieldMask *Notification_FieldMask) SetFromCliFlag(raw string) error {
   281  	path, err := ParseNotification_FieldPath(raw)
   282  	if err != nil {
   283  		return err
   284  	}
   285  	fieldMask.Paths = append(fieldMask.Paths, path)
   286  	return nil
   287  }
   288  
   289  func (fieldMask *Notification_FieldMask) Set(target, source *Notification) {
   290  	for _, path := range fieldMask.Paths {
   291  		val, _ := path.GetSingle(source)
   292  		// if val is nil, then field does not exist in source, skip
   293  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   294  		if val != nil {
   295  			path.WithIValue(val).SetTo(&target)
   296  		}
   297  	}
   298  }
   299  
   300  func (fieldMask *Notification_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   301  	fieldMask.Set(target.(*Notification), source.(*Notification))
   302  }
   303  
   304  func (fieldMask *Notification_FieldMask) Project(source *Notification) *Notification {
   305  	if source == nil {
   306  		return nil
   307  	}
   308  	if fieldMask == nil {
   309  		return source
   310  	}
   311  	result := &Notification{}
   312  	metadataMask := &meta.Meta_FieldMask{}
   313  	wholeMetadataAccepted := false
   314  	stateMask := &Notification_State_FieldMask{}
   315  	wholeStateAccepted := false
   316  
   317  	for _, p := range fieldMask.Paths {
   318  		switch tp := p.(type) {
   319  		case *Notification_FieldTerminalPath:
   320  			switch tp.selector {
   321  			case Notification_FieldPathSelectorName:
   322  				result.Name = source.Name
   323  			case Notification_FieldPathSelectorMetadata:
   324  				result.Metadata = source.Metadata
   325  				wholeMetadataAccepted = true
   326  			case Notification_FieldPathSelectorAlertingPolicy:
   327  				result.AlertingPolicy = source.AlertingPolicy
   328  			case Notification_FieldPathSelectorAlerts:
   329  				result.Alerts = source.Alerts
   330  			case Notification_FieldPathSelectorState:
   331  				result.State = source.State
   332  				wholeStateAccepted = true
   333  			}
   334  		case *Notification_FieldSubPath:
   335  			switch tp.selector {
   336  			case Notification_FieldPathSelectorMetadata:
   337  				metadataMask.AppendPath(tp.subPath.(meta.Meta_FieldPath))
   338  			case Notification_FieldPathSelectorState:
   339  				stateMask.AppendPath(tp.subPath.(NotificationState_FieldPath))
   340  			}
   341  		}
   342  	}
   343  	if wholeMetadataAccepted == false && len(metadataMask.Paths) > 0 {
   344  		result.Metadata = metadataMask.Project(source.GetMetadata())
   345  	}
   346  	if wholeStateAccepted == false && len(stateMask.Paths) > 0 {
   347  		result.State = stateMask.Project(source.GetState())
   348  	}
   349  	return result
   350  }
   351  
   352  func (fieldMask *Notification_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   353  	return fieldMask.Project(source.(*Notification))
   354  }
   355  
   356  func (fieldMask *Notification_FieldMask) PathsCount() int {
   357  	if fieldMask == nil {
   358  		return 0
   359  	}
   360  	return len(fieldMask.Paths)
   361  }
   362  
   363  type Notification_State_FieldMask struct {
   364  	Paths []NotificationState_FieldPath
   365  }
   366  
   367  func FullNotification_State_FieldMask() *Notification_State_FieldMask {
   368  	res := &Notification_State_FieldMask{}
   369  	res.Paths = append(res.Paths, &NotificationState_FieldTerminalPath{selector: NotificationState_FieldPathSelectorIsResolved})
   370  	res.Paths = append(res.Paths, &NotificationState_FieldTerminalPath{selector: NotificationState_FieldPathSelectorNotificationState})
   371  	res.Paths = append(res.Paths, &NotificationState_FieldTerminalPath{selector: NotificationState_FieldPathSelectorIncidentNotifyAttemptsDone})
   372  	res.Paths = append(res.Paths, &NotificationState_FieldTerminalPath{selector: NotificationState_FieldPathSelectorResolutionNotifyAttemptsDone})
   373  	res.Paths = append(res.Paths, &NotificationState_FieldTerminalPath{selector: NotificationState_FieldPathSelectorAlertsLifetime})
   374  	res.Paths = append(res.Paths, &NotificationState_FieldTerminalPath{selector: NotificationState_FieldPathSelectorResolutionNotificationState})
   375  	res.Paths = append(res.Paths, &NotificationState_FieldTerminalPath{selector: NotificationState_FieldPathSelectorLifecycleCompleted})
   376  	return res
   377  }
   378  
   379  func (fieldMask *Notification_State_FieldMask) String() string {
   380  	if fieldMask == nil {
   381  		return "<nil>"
   382  	}
   383  	pathsStr := make([]string, 0, len(fieldMask.Paths))
   384  	for _, path := range fieldMask.Paths {
   385  		pathsStr = append(pathsStr, path.String())
   386  	}
   387  	return strings.Join(pathsStr, ", ")
   388  }
   389  
   390  func (fieldMask *Notification_State_FieldMask) IsFull() bool {
   391  	if fieldMask == nil {
   392  		return false
   393  	}
   394  	presentSelectors := make([]bool, 7)
   395  	for _, path := range fieldMask.Paths {
   396  		if asFinal, ok := path.(*NotificationState_FieldTerminalPath); ok {
   397  			presentSelectors[int(asFinal.selector)] = true
   398  		}
   399  	}
   400  	for _, flag := range presentSelectors {
   401  		if !flag {
   402  			return false
   403  		}
   404  	}
   405  	return true
   406  }
   407  
   408  func (fieldMask *Notification_State_FieldMask) ProtoReflect() preflect.Message {
   409  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
   410  		return ParseNotificationState_FieldPath(raw)
   411  	})
   412  }
   413  
   414  func (fieldMask *Notification_State_FieldMask) ProtoMessage() {}
   415  
   416  func (fieldMask *Notification_State_FieldMask) Reset() {
   417  	if fieldMask != nil {
   418  		fieldMask.Paths = nil
   419  	}
   420  }
   421  
   422  func (fieldMask *Notification_State_FieldMask) Subtract(other *Notification_State_FieldMask) *Notification_State_FieldMask {
   423  	result := &Notification_State_FieldMask{}
   424  	removedSelectors := make([]bool, 7)
   425  	otherSubMasks := map[NotificationState_FieldPathSelector]gotenobject.FieldMask{
   426  		NotificationState_FieldPathSelectorNotificationState:           &Notification_State_NotificationState_FieldMask{},
   427  		NotificationState_FieldPathSelectorAlertsLifetime:              &common.TimeRange_FieldMask{},
   428  		NotificationState_FieldPathSelectorResolutionNotificationState: &Notification_State_NotificationState_FieldMask{},
   429  	}
   430  	mySubMasks := map[NotificationState_FieldPathSelector]gotenobject.FieldMask{
   431  		NotificationState_FieldPathSelectorNotificationState:           &Notification_State_NotificationState_FieldMask{},
   432  		NotificationState_FieldPathSelectorAlertsLifetime:              &common.TimeRange_FieldMask{},
   433  		NotificationState_FieldPathSelectorResolutionNotificationState: &Notification_State_NotificationState_FieldMask{},
   434  	}
   435  
   436  	for _, path := range other.GetPaths() {
   437  		switch tp := path.(type) {
   438  		case *NotificationState_FieldTerminalPath:
   439  			removedSelectors[int(tp.selector)] = true
   440  		case *NotificationState_FieldSubPath:
   441  			otherSubMasks[tp.selector].AppendRawPath(tp.subPath)
   442  		}
   443  	}
   444  	for _, path := range fieldMask.GetPaths() {
   445  		if !removedSelectors[int(path.Selector())] {
   446  			if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 {
   447  				if tp, ok := path.(*NotificationState_FieldTerminalPath); ok {
   448  					switch tp.selector {
   449  					case NotificationState_FieldPathSelectorNotificationState:
   450  						mySubMasks[NotificationState_FieldPathSelectorNotificationState] = FullNotification_State_NotificationState_FieldMask()
   451  					case NotificationState_FieldPathSelectorAlertsLifetime:
   452  						mySubMasks[NotificationState_FieldPathSelectorAlertsLifetime] = common.FullTimeRange_FieldMask()
   453  					case NotificationState_FieldPathSelectorResolutionNotificationState:
   454  						mySubMasks[NotificationState_FieldPathSelectorResolutionNotificationState] = FullNotification_State_NotificationState_FieldMask()
   455  					}
   456  				} else if tp, ok := path.(*NotificationState_FieldSubPath); ok {
   457  					mySubMasks[tp.selector].AppendRawPath(tp.subPath)
   458  				}
   459  			} else {
   460  				result.Paths = append(result.Paths, path)
   461  			}
   462  		}
   463  	}
   464  	for selector, mySubMask := range mySubMasks {
   465  		if mySubMask.PathsCount() > 0 {
   466  			for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() {
   467  				result.Paths = append(result.Paths, &NotificationState_FieldSubPath{selector: selector, subPath: allowedPath})
   468  			}
   469  		}
   470  	}
   471  
   472  	if len(result.Paths) == 0 {
   473  		return nil
   474  	}
   475  	return result
   476  }
   477  
   478  func (fieldMask *Notification_State_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   479  	return fieldMask.Subtract(other.(*Notification_State_FieldMask))
   480  }
   481  
   482  // FilterInputFields generates copy of field paths with output_only field paths removed
   483  func (fieldMask *Notification_State_FieldMask) FilterInputFields() *Notification_State_FieldMask {
   484  	result := &Notification_State_FieldMask{}
   485  	result.Paths = append(result.Paths, fieldMask.Paths...)
   486  	return result
   487  }
   488  
   489  // ToFieldMask is used for proto conversions
   490  func (fieldMask *Notification_State_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   491  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   492  	for _, path := range fieldMask.Paths {
   493  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   494  	}
   495  	return protoFieldMask
   496  }
   497  
   498  func (fieldMask *Notification_State_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   499  	if fieldMask == nil {
   500  		return status.Error(codes.Internal, "target field mask is nil")
   501  	}
   502  	fieldMask.Paths = make([]NotificationState_FieldPath, 0, len(protoFieldMask.Paths))
   503  	for _, strPath := range protoFieldMask.Paths {
   504  		path, err := ParseNotificationState_FieldPath(strPath)
   505  		if err != nil {
   506  			return err
   507  		}
   508  		fieldMask.Paths = append(fieldMask.Paths, path)
   509  	}
   510  	return nil
   511  }
   512  
   513  // implement methods required by customType
   514  func (fieldMask Notification_State_FieldMask) Marshal() ([]byte, error) {
   515  	protoFieldMask := fieldMask.ToProtoFieldMask()
   516  	return proto.Marshal(protoFieldMask)
   517  }
   518  
   519  func (fieldMask *Notification_State_FieldMask) Unmarshal(data []byte) error {
   520  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   521  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   522  		return err
   523  	}
   524  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   525  		return err
   526  	}
   527  	return nil
   528  }
   529  
   530  func (fieldMask *Notification_State_FieldMask) Size() int {
   531  	return proto.Size(fieldMask.ToProtoFieldMask())
   532  }
   533  
   534  func (fieldMask Notification_State_FieldMask) MarshalJSON() ([]byte, error) {
   535  	return json.Marshal(fieldMask.ToProtoFieldMask())
   536  }
   537  
   538  func (fieldMask *Notification_State_FieldMask) UnmarshalJSON(data []byte) error {
   539  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   540  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   541  		return err
   542  	}
   543  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   544  		return err
   545  	}
   546  	return nil
   547  }
   548  
   549  func (fieldMask *Notification_State_FieldMask) AppendPath(path NotificationState_FieldPath) {
   550  	fieldMask.Paths = append(fieldMask.Paths, path)
   551  }
   552  
   553  func (fieldMask *Notification_State_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   554  	fieldMask.Paths = append(fieldMask.Paths, path.(NotificationState_FieldPath))
   555  }
   556  
   557  func (fieldMask *Notification_State_FieldMask) GetPaths() []NotificationState_FieldPath {
   558  	if fieldMask == nil {
   559  		return nil
   560  	}
   561  	return fieldMask.Paths
   562  }
   563  
   564  func (fieldMask *Notification_State_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   565  	if fieldMask == nil {
   566  		return nil
   567  	}
   568  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   569  	for _, path := range fieldMask.Paths {
   570  		rawPaths = append(rawPaths, path)
   571  	}
   572  	return rawPaths
   573  }
   574  
   575  func (fieldMask *Notification_State_FieldMask) SetFromCliFlag(raw string) error {
   576  	path, err := ParseNotificationState_FieldPath(raw)
   577  	if err != nil {
   578  		return err
   579  	}
   580  	fieldMask.Paths = append(fieldMask.Paths, path)
   581  	return nil
   582  }
   583  
   584  func (fieldMask *Notification_State_FieldMask) Set(target, source *Notification_State) {
   585  	for _, path := range fieldMask.Paths {
   586  		val, _ := path.GetSingle(source)
   587  		// if val is nil, then field does not exist in source, skip
   588  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   589  		if val != nil {
   590  			path.WithIValue(val).SetTo(&target)
   591  		}
   592  	}
   593  }
   594  
   595  func (fieldMask *Notification_State_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   596  	fieldMask.Set(target.(*Notification_State), source.(*Notification_State))
   597  }
   598  
   599  func (fieldMask *Notification_State_FieldMask) Project(source *Notification_State) *Notification_State {
   600  	if source == nil {
   601  		return nil
   602  	}
   603  	if fieldMask == nil {
   604  		return source
   605  	}
   606  	result := &Notification_State{}
   607  	notificationStateMask := &Notification_State_NotificationState_FieldMask{}
   608  	wholeNotificationStateAccepted := false
   609  	alertsLifetimeMask := &common.TimeRange_FieldMask{}
   610  	wholeAlertsLifetimeAccepted := false
   611  	resolutionNotificationStateMask := &Notification_State_NotificationState_FieldMask{}
   612  	wholeResolutionNotificationStateAccepted := false
   613  
   614  	for _, p := range fieldMask.Paths {
   615  		switch tp := p.(type) {
   616  		case *NotificationState_FieldTerminalPath:
   617  			switch tp.selector {
   618  			case NotificationState_FieldPathSelectorIsResolved:
   619  				result.IsResolved = source.IsResolved
   620  			case NotificationState_FieldPathSelectorNotificationState:
   621  				result.NotificationState = source.NotificationState
   622  				wholeNotificationStateAccepted = true
   623  			case NotificationState_FieldPathSelectorIncidentNotifyAttemptsDone:
   624  				result.IncidentNotifyAttemptsDone = source.IncidentNotifyAttemptsDone
   625  			case NotificationState_FieldPathSelectorResolutionNotifyAttemptsDone:
   626  				result.ResolutionNotifyAttemptsDone = source.ResolutionNotifyAttemptsDone
   627  			case NotificationState_FieldPathSelectorAlertsLifetime:
   628  				result.AlertsLifetime = source.AlertsLifetime
   629  				wholeAlertsLifetimeAccepted = true
   630  			case NotificationState_FieldPathSelectorResolutionNotificationState:
   631  				result.ResolutionNotificationState = source.ResolutionNotificationState
   632  				wholeResolutionNotificationStateAccepted = true
   633  			case NotificationState_FieldPathSelectorLifecycleCompleted:
   634  				result.LifecycleCompleted = source.LifecycleCompleted
   635  			}
   636  		case *NotificationState_FieldSubPath:
   637  			switch tp.selector {
   638  			case NotificationState_FieldPathSelectorNotificationState:
   639  				notificationStateMask.AppendPath(tp.subPath.(NotificationStateNotificationState_FieldPath))
   640  			case NotificationState_FieldPathSelectorAlertsLifetime:
   641  				alertsLifetimeMask.AppendPath(tp.subPath.(common.TimeRange_FieldPath))
   642  			case NotificationState_FieldPathSelectorResolutionNotificationState:
   643  				resolutionNotificationStateMask.AppendPath(tp.subPath.(NotificationStateNotificationState_FieldPath))
   644  			}
   645  		}
   646  	}
   647  	if wholeNotificationStateAccepted == false && len(notificationStateMask.Paths) > 0 {
   648  		for _, sourceItem := range source.GetNotificationState() {
   649  			result.NotificationState = append(result.NotificationState, notificationStateMask.Project(sourceItem))
   650  		}
   651  	}
   652  	if wholeAlertsLifetimeAccepted == false && len(alertsLifetimeMask.Paths) > 0 {
   653  		result.AlertsLifetime = alertsLifetimeMask.Project(source.GetAlertsLifetime())
   654  	}
   655  	if wholeResolutionNotificationStateAccepted == false && len(resolutionNotificationStateMask.Paths) > 0 {
   656  		for _, sourceItem := range source.GetResolutionNotificationState() {
   657  			result.ResolutionNotificationState = append(result.ResolutionNotificationState, resolutionNotificationStateMask.Project(sourceItem))
   658  		}
   659  	}
   660  	return result
   661  }
   662  
   663  func (fieldMask *Notification_State_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   664  	return fieldMask.Project(source.(*Notification_State))
   665  }
   666  
   667  func (fieldMask *Notification_State_FieldMask) PathsCount() int {
   668  	if fieldMask == nil {
   669  		return 0
   670  	}
   671  	return len(fieldMask.Paths)
   672  }
   673  
   674  type Notification_State_NotificationState_FieldMask struct {
   675  	Paths []NotificationStateNotificationState_FieldPath
   676  }
   677  
   678  func FullNotification_State_NotificationState_FieldMask() *Notification_State_NotificationState_FieldMask {
   679  	res := &Notification_State_NotificationState_FieldMask{}
   680  	res.Paths = append(res.Paths, &NotificationStateNotificationState_FieldTerminalPath{selector: NotificationStateNotificationState_FieldPathSelectorNotificationChannel})
   681  	res.Paths = append(res.Paths, &NotificationStateNotificationState_FieldTerminalPath{selector: NotificationStateNotificationState_FieldPathSelectorStatus})
   682  	res.Paths = append(res.Paths, &NotificationStateNotificationState_FieldTerminalPath{selector: NotificationStateNotificationState_FieldPathSelectorError})
   683  	res.Paths = append(res.Paths, &NotificationStateNotificationState_FieldTerminalPath{selector: NotificationStateNotificationState_FieldPathSelectorProviderData})
   684  	res.Paths = append(res.Paths, &NotificationStateNotificationState_FieldTerminalPath{selector: NotificationStateNotificationState_FieldPathSelectorNotifyAttempts})
   685  	return res
   686  }
   687  
   688  func (fieldMask *Notification_State_NotificationState_FieldMask) String() string {
   689  	if fieldMask == nil {
   690  		return "<nil>"
   691  	}
   692  	pathsStr := make([]string, 0, len(fieldMask.Paths))
   693  	for _, path := range fieldMask.Paths {
   694  		pathsStr = append(pathsStr, path.String())
   695  	}
   696  	return strings.Join(pathsStr, ", ")
   697  }
   698  
   699  func (fieldMask *Notification_State_NotificationState_FieldMask) IsFull() bool {
   700  	if fieldMask == nil {
   701  		return false
   702  	}
   703  	presentSelectors := make([]bool, 5)
   704  	for _, path := range fieldMask.Paths {
   705  		if asFinal, ok := path.(*NotificationStateNotificationState_FieldTerminalPath); ok {
   706  			presentSelectors[int(asFinal.selector)] = true
   707  		}
   708  	}
   709  	for _, flag := range presentSelectors {
   710  		if !flag {
   711  			return false
   712  		}
   713  	}
   714  	return true
   715  }
   716  
   717  func (fieldMask *Notification_State_NotificationState_FieldMask) ProtoReflect() preflect.Message {
   718  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
   719  		return ParseNotificationStateNotificationState_FieldPath(raw)
   720  	})
   721  }
   722  
   723  func (fieldMask *Notification_State_NotificationState_FieldMask) ProtoMessage() {}
   724  
   725  func (fieldMask *Notification_State_NotificationState_FieldMask) Reset() {
   726  	if fieldMask != nil {
   727  		fieldMask.Paths = nil
   728  	}
   729  }
   730  
   731  func (fieldMask *Notification_State_NotificationState_FieldMask) Subtract(other *Notification_State_NotificationState_FieldMask) *Notification_State_NotificationState_FieldMask {
   732  	result := &Notification_State_NotificationState_FieldMask{}
   733  	removedSelectors := make([]bool, 5)
   734  	otherSubMasks := map[NotificationStateNotificationState_FieldPathSelector]gotenobject.FieldMask{
   735  		NotificationStateNotificationState_FieldPathSelectorProviderData: &Notification_State_NotificationState_ProviderData_FieldMask{},
   736  	}
   737  	mySubMasks := map[NotificationStateNotificationState_FieldPathSelector]gotenobject.FieldMask{
   738  		NotificationStateNotificationState_FieldPathSelectorProviderData: &Notification_State_NotificationState_ProviderData_FieldMask{},
   739  	}
   740  
   741  	for _, path := range other.GetPaths() {
   742  		switch tp := path.(type) {
   743  		case *NotificationStateNotificationState_FieldTerminalPath:
   744  			removedSelectors[int(tp.selector)] = true
   745  		case *NotificationStateNotificationState_FieldSubPath:
   746  			otherSubMasks[tp.selector].AppendRawPath(tp.subPath)
   747  		}
   748  	}
   749  	for _, path := range fieldMask.GetPaths() {
   750  		if !removedSelectors[int(path.Selector())] {
   751  			if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 {
   752  				if tp, ok := path.(*NotificationStateNotificationState_FieldTerminalPath); ok {
   753  					switch tp.selector {
   754  					case NotificationStateNotificationState_FieldPathSelectorProviderData:
   755  						mySubMasks[NotificationStateNotificationState_FieldPathSelectorProviderData] = FullNotification_State_NotificationState_ProviderData_FieldMask()
   756  					}
   757  				} else if tp, ok := path.(*NotificationStateNotificationState_FieldSubPath); ok {
   758  					mySubMasks[tp.selector].AppendRawPath(tp.subPath)
   759  				}
   760  			} else {
   761  				result.Paths = append(result.Paths, path)
   762  			}
   763  		}
   764  	}
   765  	for selector, mySubMask := range mySubMasks {
   766  		if mySubMask.PathsCount() > 0 {
   767  			for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() {
   768  				result.Paths = append(result.Paths, &NotificationStateNotificationState_FieldSubPath{selector: selector, subPath: allowedPath})
   769  			}
   770  		}
   771  	}
   772  
   773  	if len(result.Paths) == 0 {
   774  		return nil
   775  	}
   776  	return result
   777  }
   778  
   779  func (fieldMask *Notification_State_NotificationState_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   780  	return fieldMask.Subtract(other.(*Notification_State_NotificationState_FieldMask))
   781  }
   782  
   783  // FilterInputFields generates copy of field paths with output_only field paths removed
   784  func (fieldMask *Notification_State_NotificationState_FieldMask) FilterInputFields() *Notification_State_NotificationState_FieldMask {
   785  	result := &Notification_State_NotificationState_FieldMask{}
   786  	result.Paths = append(result.Paths, fieldMask.Paths...)
   787  	return result
   788  }
   789  
   790  // ToFieldMask is used for proto conversions
   791  func (fieldMask *Notification_State_NotificationState_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   792  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   793  	for _, path := range fieldMask.Paths {
   794  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   795  	}
   796  	return protoFieldMask
   797  }
   798  
   799  func (fieldMask *Notification_State_NotificationState_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   800  	if fieldMask == nil {
   801  		return status.Error(codes.Internal, "target field mask is nil")
   802  	}
   803  	fieldMask.Paths = make([]NotificationStateNotificationState_FieldPath, 0, len(protoFieldMask.Paths))
   804  	for _, strPath := range protoFieldMask.Paths {
   805  		path, err := ParseNotificationStateNotificationState_FieldPath(strPath)
   806  		if err != nil {
   807  			return err
   808  		}
   809  		fieldMask.Paths = append(fieldMask.Paths, path)
   810  	}
   811  	return nil
   812  }
   813  
   814  // implement methods required by customType
   815  func (fieldMask Notification_State_NotificationState_FieldMask) Marshal() ([]byte, error) {
   816  	protoFieldMask := fieldMask.ToProtoFieldMask()
   817  	return proto.Marshal(protoFieldMask)
   818  }
   819  
   820  func (fieldMask *Notification_State_NotificationState_FieldMask) Unmarshal(data []byte) error {
   821  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   822  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   823  		return err
   824  	}
   825  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   826  		return err
   827  	}
   828  	return nil
   829  }
   830  
   831  func (fieldMask *Notification_State_NotificationState_FieldMask) Size() int {
   832  	return proto.Size(fieldMask.ToProtoFieldMask())
   833  }
   834  
   835  func (fieldMask Notification_State_NotificationState_FieldMask) MarshalJSON() ([]byte, error) {
   836  	return json.Marshal(fieldMask.ToProtoFieldMask())
   837  }
   838  
   839  func (fieldMask *Notification_State_NotificationState_FieldMask) UnmarshalJSON(data []byte) error {
   840  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   841  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   842  		return err
   843  	}
   844  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   845  		return err
   846  	}
   847  	return nil
   848  }
   849  
   850  func (fieldMask *Notification_State_NotificationState_FieldMask) AppendPath(path NotificationStateNotificationState_FieldPath) {
   851  	fieldMask.Paths = append(fieldMask.Paths, path)
   852  }
   853  
   854  func (fieldMask *Notification_State_NotificationState_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   855  	fieldMask.Paths = append(fieldMask.Paths, path.(NotificationStateNotificationState_FieldPath))
   856  }
   857  
   858  func (fieldMask *Notification_State_NotificationState_FieldMask) GetPaths() []NotificationStateNotificationState_FieldPath {
   859  	if fieldMask == nil {
   860  		return nil
   861  	}
   862  	return fieldMask.Paths
   863  }
   864  
   865  func (fieldMask *Notification_State_NotificationState_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   866  	if fieldMask == nil {
   867  		return nil
   868  	}
   869  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   870  	for _, path := range fieldMask.Paths {
   871  		rawPaths = append(rawPaths, path)
   872  	}
   873  	return rawPaths
   874  }
   875  
   876  func (fieldMask *Notification_State_NotificationState_FieldMask) SetFromCliFlag(raw string) error {
   877  	path, err := ParseNotificationStateNotificationState_FieldPath(raw)
   878  	if err != nil {
   879  		return err
   880  	}
   881  	fieldMask.Paths = append(fieldMask.Paths, path)
   882  	return nil
   883  }
   884  
   885  func (fieldMask *Notification_State_NotificationState_FieldMask) Set(target, source *Notification_State_NotificationState) {
   886  	for _, path := range fieldMask.Paths {
   887  		val, _ := path.GetSingle(source)
   888  		// if val is nil, then field does not exist in source, skip
   889  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   890  		if val != nil {
   891  			path.WithIValue(val).SetTo(&target)
   892  		}
   893  	}
   894  }
   895  
   896  func (fieldMask *Notification_State_NotificationState_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   897  	fieldMask.Set(target.(*Notification_State_NotificationState), source.(*Notification_State_NotificationState))
   898  }
   899  
   900  func (fieldMask *Notification_State_NotificationState_FieldMask) Project(source *Notification_State_NotificationState) *Notification_State_NotificationState {
   901  	if source == nil {
   902  		return nil
   903  	}
   904  	if fieldMask == nil {
   905  		return source
   906  	}
   907  	result := &Notification_State_NotificationState{}
   908  	providerDataMask := &Notification_State_NotificationState_ProviderData_FieldMask{}
   909  	wholeProviderDataAccepted := false
   910  
   911  	for _, p := range fieldMask.Paths {
   912  		switch tp := p.(type) {
   913  		case *NotificationStateNotificationState_FieldTerminalPath:
   914  			switch tp.selector {
   915  			case NotificationStateNotificationState_FieldPathSelectorNotificationChannel:
   916  				result.NotificationChannel = source.NotificationChannel
   917  			case NotificationStateNotificationState_FieldPathSelectorStatus:
   918  				result.Status = source.Status
   919  			case NotificationStateNotificationState_FieldPathSelectorError:
   920  				result.Error = source.Error
   921  			case NotificationStateNotificationState_FieldPathSelectorProviderData:
   922  				result.ProviderData = source.ProviderData
   923  				wholeProviderDataAccepted = true
   924  			case NotificationStateNotificationState_FieldPathSelectorNotifyAttempts:
   925  				result.NotifyAttempts = source.NotifyAttempts
   926  			}
   927  		case *NotificationStateNotificationState_FieldSubPath:
   928  			switch tp.selector {
   929  			case NotificationStateNotificationState_FieldPathSelectorProviderData:
   930  				providerDataMask.AppendPath(tp.subPath.(NotificationStateNotificationStateProviderData_FieldPath))
   931  			}
   932  		}
   933  	}
   934  	if wholeProviderDataAccepted == false && len(providerDataMask.Paths) > 0 {
   935  		result.ProviderData = providerDataMask.Project(source.GetProviderData())
   936  	}
   937  	return result
   938  }
   939  
   940  func (fieldMask *Notification_State_NotificationState_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   941  	return fieldMask.Project(source.(*Notification_State_NotificationState))
   942  }
   943  
   944  func (fieldMask *Notification_State_NotificationState_FieldMask) PathsCount() int {
   945  	if fieldMask == nil {
   946  		return 0
   947  	}
   948  	return len(fieldMask.Paths)
   949  }
   950  
   951  type Notification_State_NotificationState_ProviderData_FieldMask struct {
   952  	Paths []NotificationStateNotificationStateProviderData_FieldPath
   953  }
   954  
   955  func FullNotification_State_NotificationState_ProviderData_FieldMask() *Notification_State_NotificationState_ProviderData_FieldMask {
   956  	res := &Notification_State_NotificationState_ProviderData_FieldMask{}
   957  	res.Paths = append(res.Paths, &NotificationStateNotificationStateProviderData_FieldTerminalPath{selector: NotificationStateNotificationStateProviderData_FieldPathSelectorSlack})
   958  	res.Paths = append(res.Paths, &NotificationStateNotificationStateProviderData_FieldTerminalPath{selector: NotificationStateNotificationStateProviderData_FieldPathSelectorPagerDuty})
   959  	return res
   960  }
   961  
   962  func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) String() string {
   963  	if fieldMask == nil {
   964  		return "<nil>"
   965  	}
   966  	pathsStr := make([]string, 0, len(fieldMask.Paths))
   967  	for _, path := range fieldMask.Paths {
   968  		pathsStr = append(pathsStr, path.String())
   969  	}
   970  	return strings.Join(pathsStr, ", ")
   971  }
   972  
   973  func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) IsFull() bool {
   974  	if fieldMask == nil {
   975  		return false
   976  	}
   977  	presentSelectors := make([]bool, 2)
   978  	for _, path := range fieldMask.Paths {
   979  		if asFinal, ok := path.(*NotificationStateNotificationStateProviderData_FieldTerminalPath); ok {
   980  			presentSelectors[int(asFinal.selector)] = true
   981  		}
   982  	}
   983  	for _, flag := range presentSelectors {
   984  		if !flag {
   985  			return false
   986  		}
   987  	}
   988  	return true
   989  }
   990  
   991  func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) ProtoReflect() preflect.Message {
   992  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
   993  		return ParseNotificationStateNotificationStateProviderData_FieldPath(raw)
   994  	})
   995  }
   996  
   997  func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) ProtoMessage() {}
   998  
   999  func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) Reset() {
  1000  	if fieldMask != nil {
  1001  		fieldMask.Paths = nil
  1002  	}
  1003  }
  1004  
  1005  func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) Subtract(other *Notification_State_NotificationState_ProviderData_FieldMask) *Notification_State_NotificationState_ProviderData_FieldMask {
  1006  	result := &Notification_State_NotificationState_ProviderData_FieldMask{}
  1007  	removedSelectors := make([]bool, 2)
  1008  	otherSubMasks := map[NotificationStateNotificationStateProviderData_FieldPathSelector]gotenobject.FieldMask{
  1009  		NotificationStateNotificationStateProviderData_FieldPathSelectorSlack:     &Notification_State_NotificationState_ProviderData_Slack_FieldMask{},
  1010  		NotificationStateNotificationStateProviderData_FieldPathSelectorPagerDuty: &Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask{},
  1011  	}
  1012  	mySubMasks := map[NotificationStateNotificationStateProviderData_FieldPathSelector]gotenobject.FieldMask{
  1013  		NotificationStateNotificationStateProviderData_FieldPathSelectorSlack:     &Notification_State_NotificationState_ProviderData_Slack_FieldMask{},
  1014  		NotificationStateNotificationStateProviderData_FieldPathSelectorPagerDuty: &Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask{},
  1015  	}
  1016  
  1017  	for _, path := range other.GetPaths() {
  1018  		switch tp := path.(type) {
  1019  		case *NotificationStateNotificationStateProviderData_FieldTerminalPath:
  1020  			removedSelectors[int(tp.selector)] = true
  1021  		case *NotificationStateNotificationStateProviderData_FieldSubPath:
  1022  			otherSubMasks[tp.selector].AppendRawPath(tp.subPath)
  1023  		}
  1024  	}
  1025  	for _, path := range fieldMask.GetPaths() {
  1026  		if !removedSelectors[int(path.Selector())] {
  1027  			if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 {
  1028  				if tp, ok := path.(*NotificationStateNotificationStateProviderData_FieldTerminalPath); ok {
  1029  					switch tp.selector {
  1030  					case NotificationStateNotificationStateProviderData_FieldPathSelectorSlack:
  1031  						mySubMasks[NotificationStateNotificationStateProviderData_FieldPathSelectorSlack] = FullNotification_State_NotificationState_ProviderData_Slack_FieldMask()
  1032  					case NotificationStateNotificationStateProviderData_FieldPathSelectorPagerDuty:
  1033  						mySubMasks[NotificationStateNotificationStateProviderData_FieldPathSelectorPagerDuty] = FullNotification_State_NotificationState_ProviderData_PagerDuty_FieldMask()
  1034  					}
  1035  				} else if tp, ok := path.(*NotificationStateNotificationStateProviderData_FieldSubPath); ok {
  1036  					mySubMasks[tp.selector].AppendRawPath(tp.subPath)
  1037  				}
  1038  			} else {
  1039  				result.Paths = append(result.Paths, path)
  1040  			}
  1041  		}
  1042  	}
  1043  	for selector, mySubMask := range mySubMasks {
  1044  		if mySubMask.PathsCount() > 0 {
  1045  			for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() {
  1046  				result.Paths = append(result.Paths, &NotificationStateNotificationStateProviderData_FieldSubPath{selector: selector, subPath: allowedPath})
  1047  			}
  1048  		}
  1049  	}
  1050  
  1051  	if len(result.Paths) == 0 {
  1052  		return nil
  1053  	}
  1054  	return result
  1055  }
  1056  
  1057  func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
  1058  	return fieldMask.Subtract(other.(*Notification_State_NotificationState_ProviderData_FieldMask))
  1059  }
  1060  
  1061  // FilterInputFields generates copy of field paths with output_only field paths removed
  1062  func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) FilterInputFields() *Notification_State_NotificationState_ProviderData_FieldMask {
  1063  	result := &Notification_State_NotificationState_ProviderData_FieldMask{}
  1064  	result.Paths = append(result.Paths, fieldMask.Paths...)
  1065  	return result
  1066  }
  1067  
  1068  // ToFieldMask is used for proto conversions
  1069  func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
  1070  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1071  	for _, path := range fieldMask.Paths {
  1072  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
  1073  	}
  1074  	return protoFieldMask
  1075  }
  1076  
  1077  func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
  1078  	if fieldMask == nil {
  1079  		return status.Error(codes.Internal, "target field mask is nil")
  1080  	}
  1081  	fieldMask.Paths = make([]NotificationStateNotificationStateProviderData_FieldPath, 0, len(protoFieldMask.Paths))
  1082  	for _, strPath := range protoFieldMask.Paths {
  1083  		path, err := ParseNotificationStateNotificationStateProviderData_FieldPath(strPath)
  1084  		if err != nil {
  1085  			return err
  1086  		}
  1087  		fieldMask.Paths = append(fieldMask.Paths, path)
  1088  	}
  1089  	return nil
  1090  }
  1091  
  1092  // implement methods required by customType
  1093  func (fieldMask Notification_State_NotificationState_ProviderData_FieldMask) Marshal() ([]byte, error) {
  1094  	protoFieldMask := fieldMask.ToProtoFieldMask()
  1095  	return proto.Marshal(protoFieldMask)
  1096  }
  1097  
  1098  func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) Unmarshal(data []byte) error {
  1099  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1100  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
  1101  		return err
  1102  	}
  1103  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  1104  		return err
  1105  	}
  1106  	return nil
  1107  }
  1108  
  1109  func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) Size() int {
  1110  	return proto.Size(fieldMask.ToProtoFieldMask())
  1111  }
  1112  
  1113  func (fieldMask Notification_State_NotificationState_ProviderData_FieldMask) MarshalJSON() ([]byte, error) {
  1114  	return json.Marshal(fieldMask.ToProtoFieldMask())
  1115  }
  1116  
  1117  func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) UnmarshalJSON(data []byte) error {
  1118  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1119  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
  1120  		return err
  1121  	}
  1122  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  1123  		return err
  1124  	}
  1125  	return nil
  1126  }
  1127  
  1128  func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) AppendPath(path NotificationStateNotificationStateProviderData_FieldPath) {
  1129  	fieldMask.Paths = append(fieldMask.Paths, path)
  1130  }
  1131  
  1132  func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
  1133  	fieldMask.Paths = append(fieldMask.Paths, path.(NotificationStateNotificationStateProviderData_FieldPath))
  1134  }
  1135  
  1136  func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) GetPaths() []NotificationStateNotificationStateProviderData_FieldPath {
  1137  	if fieldMask == nil {
  1138  		return nil
  1139  	}
  1140  	return fieldMask.Paths
  1141  }
  1142  
  1143  func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) GetRawPaths() []gotenobject.FieldPath {
  1144  	if fieldMask == nil {
  1145  		return nil
  1146  	}
  1147  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
  1148  	for _, path := range fieldMask.Paths {
  1149  		rawPaths = append(rawPaths, path)
  1150  	}
  1151  	return rawPaths
  1152  }
  1153  
  1154  func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) SetFromCliFlag(raw string) error {
  1155  	path, err := ParseNotificationStateNotificationStateProviderData_FieldPath(raw)
  1156  	if err != nil {
  1157  		return err
  1158  	}
  1159  	fieldMask.Paths = append(fieldMask.Paths, path)
  1160  	return nil
  1161  }
  1162  
  1163  func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) Set(target, source *Notification_State_NotificationState_ProviderData) {
  1164  	for _, path := range fieldMask.Paths {
  1165  		val, _ := path.GetSingle(source)
  1166  		// if val is nil, then field does not exist in source, skip
  1167  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
  1168  		if val != nil {
  1169  			path.WithIValue(val).SetTo(&target)
  1170  		}
  1171  	}
  1172  }
  1173  
  1174  func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
  1175  	fieldMask.Set(target.(*Notification_State_NotificationState_ProviderData), source.(*Notification_State_NotificationState_ProviderData))
  1176  }
  1177  
  1178  func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) Project(source *Notification_State_NotificationState_ProviderData) *Notification_State_NotificationState_ProviderData {
  1179  	if source == nil {
  1180  		return nil
  1181  	}
  1182  	if fieldMask == nil {
  1183  		return source
  1184  	}
  1185  	result := &Notification_State_NotificationState_ProviderData{}
  1186  	slackMask := &Notification_State_NotificationState_ProviderData_Slack_FieldMask{}
  1187  	wholeSlackAccepted := false
  1188  	pagerDutyMask := &Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask{}
  1189  	wholePagerDutyAccepted := false
  1190  
  1191  	for _, p := range fieldMask.Paths {
  1192  		switch tp := p.(type) {
  1193  		case *NotificationStateNotificationStateProviderData_FieldTerminalPath:
  1194  			switch tp.selector {
  1195  			case NotificationStateNotificationStateProviderData_FieldPathSelectorSlack:
  1196  				result.Slack = source.Slack
  1197  				wholeSlackAccepted = true
  1198  			case NotificationStateNotificationStateProviderData_FieldPathSelectorPagerDuty:
  1199  				result.PagerDuty = source.PagerDuty
  1200  				wholePagerDutyAccepted = true
  1201  			}
  1202  		case *NotificationStateNotificationStateProviderData_FieldSubPath:
  1203  			switch tp.selector {
  1204  			case NotificationStateNotificationStateProviderData_FieldPathSelectorSlack:
  1205  				slackMask.AppendPath(tp.subPath.(NotificationStateNotificationStateProviderDataSlack_FieldPath))
  1206  			case NotificationStateNotificationStateProviderData_FieldPathSelectorPagerDuty:
  1207  				pagerDutyMask.AppendPath(tp.subPath.(NotificationStateNotificationStateProviderDataPagerDuty_FieldPath))
  1208  			}
  1209  		}
  1210  	}
  1211  	if wholeSlackAccepted == false && len(slackMask.Paths) > 0 {
  1212  		result.Slack = slackMask.Project(source.GetSlack())
  1213  	}
  1214  	if wholePagerDutyAccepted == false && len(pagerDutyMask.Paths) > 0 {
  1215  		result.PagerDuty = pagerDutyMask.Project(source.GetPagerDuty())
  1216  	}
  1217  	return result
  1218  }
  1219  
  1220  func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
  1221  	return fieldMask.Project(source.(*Notification_State_NotificationState_ProviderData))
  1222  }
  1223  
  1224  func (fieldMask *Notification_State_NotificationState_ProviderData_FieldMask) PathsCount() int {
  1225  	if fieldMask == nil {
  1226  		return 0
  1227  	}
  1228  	return len(fieldMask.Paths)
  1229  }
  1230  
  1231  type Notification_State_NotificationState_ProviderData_Slack_FieldMask struct {
  1232  	Paths []NotificationStateNotificationStateProviderDataSlack_FieldPath
  1233  }
  1234  
  1235  func FullNotification_State_NotificationState_ProviderData_Slack_FieldMask() *Notification_State_NotificationState_ProviderData_Slack_FieldMask {
  1236  	res := &Notification_State_NotificationState_ProviderData_Slack_FieldMask{}
  1237  	res.Paths = append(res.Paths, &NotificationStateNotificationStateProviderDataSlack_FieldTerminalPath{selector: NotificationStateNotificationStateProviderDataSlack_FieldPathSelectorTs})
  1238  	return res
  1239  }
  1240  
  1241  func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) String() string {
  1242  	if fieldMask == nil {
  1243  		return "<nil>"
  1244  	}
  1245  	pathsStr := make([]string, 0, len(fieldMask.Paths))
  1246  	for _, path := range fieldMask.Paths {
  1247  		pathsStr = append(pathsStr, path.String())
  1248  	}
  1249  	return strings.Join(pathsStr, ", ")
  1250  }
  1251  
  1252  func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) IsFull() bool {
  1253  	if fieldMask == nil {
  1254  		return false
  1255  	}
  1256  	presentSelectors := make([]bool, 1)
  1257  	for _, path := range fieldMask.Paths {
  1258  		if asFinal, ok := path.(*NotificationStateNotificationStateProviderDataSlack_FieldTerminalPath); ok {
  1259  			presentSelectors[int(asFinal.selector)] = true
  1260  		}
  1261  	}
  1262  	for _, flag := range presentSelectors {
  1263  		if !flag {
  1264  			return false
  1265  		}
  1266  	}
  1267  	return true
  1268  }
  1269  
  1270  func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) ProtoReflect() preflect.Message {
  1271  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
  1272  		return ParseNotificationStateNotificationStateProviderDataSlack_FieldPath(raw)
  1273  	})
  1274  }
  1275  
  1276  func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) ProtoMessage() {}
  1277  
  1278  func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) Reset() {
  1279  	if fieldMask != nil {
  1280  		fieldMask.Paths = nil
  1281  	}
  1282  }
  1283  
  1284  func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) Subtract(other *Notification_State_NotificationState_ProviderData_Slack_FieldMask) *Notification_State_NotificationState_ProviderData_Slack_FieldMask {
  1285  	result := &Notification_State_NotificationState_ProviderData_Slack_FieldMask{}
  1286  	removedSelectors := make([]bool, 1)
  1287  
  1288  	for _, path := range other.GetPaths() {
  1289  		switch tp := path.(type) {
  1290  		case *NotificationStateNotificationStateProviderDataSlack_FieldTerminalPath:
  1291  			removedSelectors[int(tp.selector)] = true
  1292  		}
  1293  	}
  1294  	for _, path := range fieldMask.GetPaths() {
  1295  		if !removedSelectors[int(path.Selector())] {
  1296  			result.Paths = append(result.Paths, path)
  1297  		}
  1298  	}
  1299  
  1300  	if len(result.Paths) == 0 {
  1301  		return nil
  1302  	}
  1303  	return result
  1304  }
  1305  
  1306  func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
  1307  	return fieldMask.Subtract(other.(*Notification_State_NotificationState_ProviderData_Slack_FieldMask))
  1308  }
  1309  
  1310  // FilterInputFields generates copy of field paths with output_only field paths removed
  1311  func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) FilterInputFields() *Notification_State_NotificationState_ProviderData_Slack_FieldMask {
  1312  	result := &Notification_State_NotificationState_ProviderData_Slack_FieldMask{}
  1313  	result.Paths = append(result.Paths, fieldMask.Paths...)
  1314  	return result
  1315  }
  1316  
  1317  // ToFieldMask is used for proto conversions
  1318  func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
  1319  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1320  	for _, path := range fieldMask.Paths {
  1321  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
  1322  	}
  1323  	return protoFieldMask
  1324  }
  1325  
  1326  func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
  1327  	if fieldMask == nil {
  1328  		return status.Error(codes.Internal, "target field mask is nil")
  1329  	}
  1330  	fieldMask.Paths = make([]NotificationStateNotificationStateProviderDataSlack_FieldPath, 0, len(protoFieldMask.Paths))
  1331  	for _, strPath := range protoFieldMask.Paths {
  1332  		path, err := ParseNotificationStateNotificationStateProviderDataSlack_FieldPath(strPath)
  1333  		if err != nil {
  1334  			return err
  1335  		}
  1336  		fieldMask.Paths = append(fieldMask.Paths, path)
  1337  	}
  1338  	return nil
  1339  }
  1340  
  1341  // implement methods required by customType
  1342  func (fieldMask Notification_State_NotificationState_ProviderData_Slack_FieldMask) Marshal() ([]byte, error) {
  1343  	protoFieldMask := fieldMask.ToProtoFieldMask()
  1344  	return proto.Marshal(protoFieldMask)
  1345  }
  1346  
  1347  func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) Unmarshal(data []byte) error {
  1348  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1349  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
  1350  		return err
  1351  	}
  1352  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  1353  		return err
  1354  	}
  1355  	return nil
  1356  }
  1357  
  1358  func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) Size() int {
  1359  	return proto.Size(fieldMask.ToProtoFieldMask())
  1360  }
  1361  
  1362  func (fieldMask Notification_State_NotificationState_ProviderData_Slack_FieldMask) MarshalJSON() ([]byte, error) {
  1363  	return json.Marshal(fieldMask.ToProtoFieldMask())
  1364  }
  1365  
  1366  func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) UnmarshalJSON(data []byte) error {
  1367  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1368  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
  1369  		return err
  1370  	}
  1371  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  1372  		return err
  1373  	}
  1374  	return nil
  1375  }
  1376  
  1377  func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) AppendPath(path NotificationStateNotificationStateProviderDataSlack_FieldPath) {
  1378  	fieldMask.Paths = append(fieldMask.Paths, path)
  1379  }
  1380  
  1381  func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
  1382  	fieldMask.Paths = append(fieldMask.Paths, path.(NotificationStateNotificationStateProviderDataSlack_FieldPath))
  1383  }
  1384  
  1385  func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) GetPaths() []NotificationStateNotificationStateProviderDataSlack_FieldPath {
  1386  	if fieldMask == nil {
  1387  		return nil
  1388  	}
  1389  	return fieldMask.Paths
  1390  }
  1391  
  1392  func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) GetRawPaths() []gotenobject.FieldPath {
  1393  	if fieldMask == nil {
  1394  		return nil
  1395  	}
  1396  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
  1397  	for _, path := range fieldMask.Paths {
  1398  		rawPaths = append(rawPaths, path)
  1399  	}
  1400  	return rawPaths
  1401  }
  1402  
  1403  func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) SetFromCliFlag(raw string) error {
  1404  	path, err := ParseNotificationStateNotificationStateProviderDataSlack_FieldPath(raw)
  1405  	if err != nil {
  1406  		return err
  1407  	}
  1408  	fieldMask.Paths = append(fieldMask.Paths, path)
  1409  	return nil
  1410  }
  1411  
  1412  func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) Set(target, source *Notification_State_NotificationState_ProviderData_Slack) {
  1413  	for _, path := range fieldMask.Paths {
  1414  		val, _ := path.GetSingle(source)
  1415  		// if val is nil, then field does not exist in source, skip
  1416  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
  1417  		if val != nil {
  1418  			path.WithIValue(val).SetTo(&target)
  1419  		}
  1420  	}
  1421  }
  1422  
  1423  func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
  1424  	fieldMask.Set(target.(*Notification_State_NotificationState_ProviderData_Slack), source.(*Notification_State_NotificationState_ProviderData_Slack))
  1425  }
  1426  
  1427  func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) Project(source *Notification_State_NotificationState_ProviderData_Slack) *Notification_State_NotificationState_ProviderData_Slack {
  1428  	if source == nil {
  1429  		return nil
  1430  	}
  1431  	if fieldMask == nil {
  1432  		return source
  1433  	}
  1434  	result := &Notification_State_NotificationState_ProviderData_Slack{}
  1435  
  1436  	for _, p := range fieldMask.Paths {
  1437  		switch tp := p.(type) {
  1438  		case *NotificationStateNotificationStateProviderDataSlack_FieldTerminalPath:
  1439  			switch tp.selector {
  1440  			case NotificationStateNotificationStateProviderDataSlack_FieldPathSelectorTs:
  1441  				result.Ts = source.Ts
  1442  			}
  1443  		}
  1444  	}
  1445  	return result
  1446  }
  1447  
  1448  func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
  1449  	return fieldMask.Project(source.(*Notification_State_NotificationState_ProviderData_Slack))
  1450  }
  1451  
  1452  func (fieldMask *Notification_State_NotificationState_ProviderData_Slack_FieldMask) PathsCount() int {
  1453  	if fieldMask == nil {
  1454  		return 0
  1455  	}
  1456  	return len(fieldMask.Paths)
  1457  }
  1458  
  1459  type Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask struct {
  1460  	Paths []NotificationStateNotificationStateProviderDataPagerDuty_FieldPath
  1461  }
  1462  
  1463  func FullNotification_State_NotificationState_ProviderData_PagerDuty_FieldMask() *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask {
  1464  	res := &Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask{}
  1465  	res.Paths = append(res.Paths, &NotificationStateNotificationStateProviderDataPagerDuty_FieldTerminalPath{selector: NotificationStateNotificationStateProviderDataPagerDuty_FieldPathSelectorIncidentKey})
  1466  	return res
  1467  }
  1468  
  1469  func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) String() string {
  1470  	if fieldMask == nil {
  1471  		return "<nil>"
  1472  	}
  1473  	pathsStr := make([]string, 0, len(fieldMask.Paths))
  1474  	for _, path := range fieldMask.Paths {
  1475  		pathsStr = append(pathsStr, path.String())
  1476  	}
  1477  	return strings.Join(pathsStr, ", ")
  1478  }
  1479  
  1480  func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) IsFull() bool {
  1481  	if fieldMask == nil {
  1482  		return false
  1483  	}
  1484  	presentSelectors := make([]bool, 1)
  1485  	for _, path := range fieldMask.Paths {
  1486  		if asFinal, ok := path.(*NotificationStateNotificationStateProviderDataPagerDuty_FieldTerminalPath); ok {
  1487  			presentSelectors[int(asFinal.selector)] = true
  1488  		}
  1489  	}
  1490  	for _, flag := range presentSelectors {
  1491  		if !flag {
  1492  			return false
  1493  		}
  1494  	}
  1495  	return true
  1496  }
  1497  
  1498  func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) ProtoReflect() preflect.Message {
  1499  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
  1500  		return ParseNotificationStateNotificationStateProviderDataPagerDuty_FieldPath(raw)
  1501  	})
  1502  }
  1503  
  1504  func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) ProtoMessage() {
  1505  }
  1506  
  1507  func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) Reset() {
  1508  	if fieldMask != nil {
  1509  		fieldMask.Paths = nil
  1510  	}
  1511  }
  1512  
  1513  func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) Subtract(other *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask {
  1514  	result := &Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask{}
  1515  	removedSelectors := make([]bool, 1)
  1516  
  1517  	for _, path := range other.GetPaths() {
  1518  		switch tp := path.(type) {
  1519  		case *NotificationStateNotificationStateProviderDataPagerDuty_FieldTerminalPath:
  1520  			removedSelectors[int(tp.selector)] = true
  1521  		}
  1522  	}
  1523  	for _, path := range fieldMask.GetPaths() {
  1524  		if !removedSelectors[int(path.Selector())] {
  1525  			result.Paths = append(result.Paths, path)
  1526  		}
  1527  	}
  1528  
  1529  	if len(result.Paths) == 0 {
  1530  		return nil
  1531  	}
  1532  	return result
  1533  }
  1534  
  1535  func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
  1536  	return fieldMask.Subtract(other.(*Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask))
  1537  }
  1538  
  1539  // FilterInputFields generates copy of field paths with output_only field paths removed
  1540  func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) FilterInputFields() *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask {
  1541  	result := &Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask{}
  1542  	result.Paths = append(result.Paths, fieldMask.Paths...)
  1543  	return result
  1544  }
  1545  
  1546  // ToFieldMask is used for proto conversions
  1547  func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
  1548  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1549  	for _, path := range fieldMask.Paths {
  1550  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
  1551  	}
  1552  	return protoFieldMask
  1553  }
  1554  
  1555  func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
  1556  	if fieldMask == nil {
  1557  		return status.Error(codes.Internal, "target field mask is nil")
  1558  	}
  1559  	fieldMask.Paths = make([]NotificationStateNotificationStateProviderDataPagerDuty_FieldPath, 0, len(protoFieldMask.Paths))
  1560  	for _, strPath := range protoFieldMask.Paths {
  1561  		path, err := ParseNotificationStateNotificationStateProviderDataPagerDuty_FieldPath(strPath)
  1562  		if err != nil {
  1563  			return err
  1564  		}
  1565  		fieldMask.Paths = append(fieldMask.Paths, path)
  1566  	}
  1567  	return nil
  1568  }
  1569  
  1570  // implement methods required by customType
  1571  func (fieldMask Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) Marshal() ([]byte, error) {
  1572  	protoFieldMask := fieldMask.ToProtoFieldMask()
  1573  	return proto.Marshal(protoFieldMask)
  1574  }
  1575  
  1576  func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) Unmarshal(data []byte) error {
  1577  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1578  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
  1579  		return err
  1580  	}
  1581  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  1582  		return err
  1583  	}
  1584  	return nil
  1585  }
  1586  
  1587  func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) Size() int {
  1588  	return proto.Size(fieldMask.ToProtoFieldMask())
  1589  }
  1590  
  1591  func (fieldMask Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) MarshalJSON() ([]byte, error) {
  1592  	return json.Marshal(fieldMask.ToProtoFieldMask())
  1593  }
  1594  
  1595  func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) UnmarshalJSON(data []byte) error {
  1596  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1597  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
  1598  		return err
  1599  	}
  1600  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  1601  		return err
  1602  	}
  1603  	return nil
  1604  }
  1605  
  1606  func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) AppendPath(path NotificationStateNotificationStateProviderDataPagerDuty_FieldPath) {
  1607  	fieldMask.Paths = append(fieldMask.Paths, path)
  1608  }
  1609  
  1610  func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
  1611  	fieldMask.Paths = append(fieldMask.Paths, path.(NotificationStateNotificationStateProviderDataPagerDuty_FieldPath))
  1612  }
  1613  
  1614  func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) GetPaths() []NotificationStateNotificationStateProviderDataPagerDuty_FieldPath {
  1615  	if fieldMask == nil {
  1616  		return nil
  1617  	}
  1618  	return fieldMask.Paths
  1619  }
  1620  
  1621  func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) GetRawPaths() []gotenobject.FieldPath {
  1622  	if fieldMask == nil {
  1623  		return nil
  1624  	}
  1625  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
  1626  	for _, path := range fieldMask.Paths {
  1627  		rawPaths = append(rawPaths, path)
  1628  	}
  1629  	return rawPaths
  1630  }
  1631  
  1632  func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) SetFromCliFlag(raw string) error {
  1633  	path, err := ParseNotificationStateNotificationStateProviderDataPagerDuty_FieldPath(raw)
  1634  	if err != nil {
  1635  		return err
  1636  	}
  1637  	fieldMask.Paths = append(fieldMask.Paths, path)
  1638  	return nil
  1639  }
  1640  
  1641  func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) Set(target, source *Notification_State_NotificationState_ProviderData_PagerDuty) {
  1642  	for _, path := range fieldMask.Paths {
  1643  		val, _ := path.GetSingle(source)
  1644  		// if val is nil, then field does not exist in source, skip
  1645  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
  1646  		if val != nil {
  1647  			path.WithIValue(val).SetTo(&target)
  1648  		}
  1649  	}
  1650  }
  1651  
  1652  func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
  1653  	fieldMask.Set(target.(*Notification_State_NotificationState_ProviderData_PagerDuty), source.(*Notification_State_NotificationState_ProviderData_PagerDuty))
  1654  }
  1655  
  1656  func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) Project(source *Notification_State_NotificationState_ProviderData_PagerDuty) *Notification_State_NotificationState_ProviderData_PagerDuty {
  1657  	if source == nil {
  1658  		return nil
  1659  	}
  1660  	if fieldMask == nil {
  1661  		return source
  1662  	}
  1663  	result := &Notification_State_NotificationState_ProviderData_PagerDuty{}
  1664  
  1665  	for _, p := range fieldMask.Paths {
  1666  		switch tp := p.(type) {
  1667  		case *NotificationStateNotificationStateProviderDataPagerDuty_FieldTerminalPath:
  1668  			switch tp.selector {
  1669  			case NotificationStateNotificationStateProviderDataPagerDuty_FieldPathSelectorIncidentKey:
  1670  				result.IncidentKey = source.IncidentKey
  1671  			}
  1672  		}
  1673  	}
  1674  	return result
  1675  }
  1676  
  1677  func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
  1678  	return fieldMask.Project(source.(*Notification_State_NotificationState_ProviderData_PagerDuty))
  1679  }
  1680  
  1681  func (fieldMask *Notification_State_NotificationState_ProviderData_PagerDuty_FieldMask) PathsCount() int {
  1682  	if fieldMask == nil {
  1683  		return 0
  1684  	}
  1685  	return len(fieldMask.Paths)
  1686  }