github.com/cloudwan/edgelq-sdk@v1.15.4/limits/resources/v1/plan_assignment_request/plan_assignment_request.pb.fieldmask.go (about)

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