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

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/iam/proto/v1/role.proto
     3  // DO NOT EDIT!!!
     4  
     5  package role
     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  	condition "github.com/cloudwan/edgelq-sdk/iam/resources/v1/condition"
    23  	organization "github.com/cloudwan/edgelq-sdk/iam/resources/v1/organization"
    24  	permission "github.com/cloudwan/edgelq-sdk/iam/resources/v1/permission"
    25  	project "github.com/cloudwan/edgelq-sdk/iam/resources/v1/project"
    26  	meta_service "github.com/cloudwan/goten-sdk/meta-service/resources/v1/service"
    27  	meta "github.com/cloudwan/goten-sdk/types/meta"
    28  )
    29  
    30  // ensure the imports are used
    31  var (
    32  	_ = new(json.Marshaler)
    33  	_ = strings.Builder{}
    34  
    35  	_ = codes.NotFound
    36  	_ = status.Status{}
    37  	_ = new(proto.Message)
    38  	_ = new(preflect.Message)
    39  	_ = googlefieldmaskpb.FieldMask{}
    40  
    41  	_ = new(gotenobject.FieldMask)
    42  )
    43  
    44  // make sure we're using proto imports
    45  var (
    46  	_ = &condition.Condition{}
    47  	_ = &organization.Organization{}
    48  	_ = &permission.Permission{}
    49  	_ = &project.Project{}
    50  	_ = &meta_service.Service{}
    51  	_ = &meta.Meta{}
    52  )
    53  
    54  type Role_FieldMask struct {
    55  	Paths []Role_FieldPath
    56  }
    57  
    58  func FullRole_FieldMask() *Role_FieldMask {
    59  	res := &Role_FieldMask{}
    60  	res.Paths = append(res.Paths, &Role_FieldTerminalPath{selector: Role_FieldPathSelectorName})
    61  	res.Paths = append(res.Paths, &Role_FieldTerminalPath{selector: Role_FieldPathSelectorMetadata})
    62  	res.Paths = append(res.Paths, &Role_FieldTerminalPath{selector: Role_FieldPathSelectorDisplayName})
    63  	res.Paths = append(res.Paths, &Role_FieldTerminalPath{selector: Role_FieldPathSelectorDescription})
    64  	res.Paths = append(res.Paths, &Role_FieldTerminalPath{selector: Role_FieldPathSelectorCategory})
    65  	res.Paths = append(res.Paths, &Role_FieldTerminalPath{selector: Role_FieldPathSelectorScopeParams})
    66  	res.Paths = append(res.Paths, &Role_FieldTerminalPath{selector: Role_FieldPathSelectorConstValues})
    67  	res.Paths = append(res.Paths, &Role_FieldTerminalPath{selector: Role_FieldPathSelectorDefaultValues})
    68  	res.Paths = append(res.Paths, &Role_FieldTerminalPath{selector: Role_FieldPathSelectorGrants})
    69  	res.Paths = append(res.Paths, &Role_FieldTerminalPath{selector: Role_FieldPathSelectorOwnedObjects})
    70  	res.Paths = append(res.Paths, &Role_FieldTerminalPath{selector: Role_FieldPathSelectorServices})
    71  	res.Paths = append(res.Paths, &Role_FieldTerminalPath{selector: Role_FieldPathSelectorRbSpecGeneration})
    72  	return res
    73  }
    74  
    75  func (fieldMask *Role_FieldMask) String() string {
    76  	if fieldMask == nil {
    77  		return "<nil>"
    78  	}
    79  	pathsStr := make([]string, 0, len(fieldMask.Paths))
    80  	for _, path := range fieldMask.Paths {
    81  		pathsStr = append(pathsStr, path.String())
    82  	}
    83  	return strings.Join(pathsStr, ", ")
    84  }
    85  
    86  func (fieldMask *Role_FieldMask) IsFull() bool {
    87  	if fieldMask == nil {
    88  		return false
    89  	}
    90  	presentSelectors := make([]bool, 12)
    91  	for _, path := range fieldMask.Paths {
    92  		if asFinal, ok := path.(*Role_FieldTerminalPath); ok {
    93  			presentSelectors[int(asFinal.selector)] = true
    94  		}
    95  	}
    96  	for _, flag := range presentSelectors {
    97  		if !flag {
    98  			return false
    99  		}
   100  	}
   101  	return true
   102  }
   103  
   104  func (fieldMask *Role_FieldMask) ProtoReflect() preflect.Message {
   105  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
   106  		return ParseRole_FieldPath(raw)
   107  	})
   108  }
   109  
   110  func (fieldMask *Role_FieldMask) ProtoMessage() {}
   111  
   112  func (fieldMask *Role_FieldMask) Reset() {
   113  	if fieldMask != nil {
   114  		fieldMask.Paths = nil
   115  	}
   116  }
   117  
   118  func (fieldMask *Role_FieldMask) Subtract(other *Role_FieldMask) *Role_FieldMask {
   119  	result := &Role_FieldMask{}
   120  	removedSelectors := make([]bool, 12)
   121  	otherSubMasks := map[Role_FieldPathSelector]gotenobject.FieldMask{
   122  		Role_FieldPathSelectorMetadata:      &meta.Meta_FieldMask{},
   123  		Role_FieldPathSelectorScopeParams:   &Role_ScopeParamType_FieldMask{},
   124  		Role_FieldPathSelectorConstValues:   &ScopeParam_FieldMask{},
   125  		Role_FieldPathSelectorDefaultValues: &ScopeParam_FieldMask{},
   126  		Role_FieldPathSelectorGrants:        &Role_Grant_FieldMask{},
   127  	}
   128  	mySubMasks := map[Role_FieldPathSelector]gotenobject.FieldMask{
   129  		Role_FieldPathSelectorMetadata:      &meta.Meta_FieldMask{},
   130  		Role_FieldPathSelectorScopeParams:   &Role_ScopeParamType_FieldMask{},
   131  		Role_FieldPathSelectorConstValues:   &ScopeParam_FieldMask{},
   132  		Role_FieldPathSelectorDefaultValues: &ScopeParam_FieldMask{},
   133  		Role_FieldPathSelectorGrants:        &Role_Grant_FieldMask{},
   134  	}
   135  
   136  	for _, path := range other.GetPaths() {
   137  		switch tp := path.(type) {
   138  		case *Role_FieldTerminalPath:
   139  			removedSelectors[int(tp.selector)] = true
   140  		case *Role_FieldSubPath:
   141  			otherSubMasks[tp.selector].AppendRawPath(tp.subPath)
   142  		}
   143  	}
   144  	for _, path := range fieldMask.GetPaths() {
   145  		if !removedSelectors[int(path.Selector())] {
   146  			if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 {
   147  				if tp, ok := path.(*Role_FieldTerminalPath); ok {
   148  					switch tp.selector {
   149  					case Role_FieldPathSelectorMetadata:
   150  						mySubMasks[Role_FieldPathSelectorMetadata] = meta.FullMeta_FieldMask()
   151  					case Role_FieldPathSelectorScopeParams:
   152  						mySubMasks[Role_FieldPathSelectorScopeParams] = FullRole_ScopeParamType_FieldMask()
   153  					case Role_FieldPathSelectorConstValues:
   154  						mySubMasks[Role_FieldPathSelectorConstValues] = FullScopeParam_FieldMask()
   155  					case Role_FieldPathSelectorDefaultValues:
   156  						mySubMasks[Role_FieldPathSelectorDefaultValues] = FullScopeParam_FieldMask()
   157  					case Role_FieldPathSelectorGrants:
   158  						mySubMasks[Role_FieldPathSelectorGrants] = FullRole_Grant_FieldMask()
   159  					}
   160  				} else if tp, ok := path.(*Role_FieldSubPath); ok {
   161  					mySubMasks[tp.selector].AppendRawPath(tp.subPath)
   162  				}
   163  			} else {
   164  				result.Paths = append(result.Paths, path)
   165  			}
   166  		}
   167  	}
   168  	for selector, mySubMask := range mySubMasks {
   169  		if mySubMask.PathsCount() > 0 {
   170  			for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() {
   171  				result.Paths = append(result.Paths, &Role_FieldSubPath{selector: selector, subPath: allowedPath})
   172  			}
   173  		}
   174  	}
   175  
   176  	if len(result.Paths) == 0 {
   177  		return nil
   178  	}
   179  	return result
   180  }
   181  
   182  func (fieldMask *Role_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   183  	return fieldMask.Subtract(other.(*Role_FieldMask))
   184  }
   185  
   186  // FilterInputFields generates copy of field paths with output_only field paths removed
   187  func (fieldMask *Role_FieldMask) FilterInputFields() *Role_FieldMask {
   188  	result := &Role_FieldMask{}
   189  	for _, path := range fieldMask.Paths {
   190  		switch path.Selector() {
   191  		case Role_FieldPathSelectorServices:
   192  		case Role_FieldPathSelectorRbSpecGeneration:
   193  		case Role_FieldPathSelectorMetadata:
   194  			if _, ok := path.(*Role_FieldTerminalPath); ok {
   195  				for _, subpath := range meta.FullMeta_FieldMask().FilterInputFields().Paths {
   196  					result.Paths = append(result.Paths, &Role_FieldSubPath{selector: path.Selector(), subPath: subpath})
   197  				}
   198  			} else if sub, ok := path.(*Role_FieldSubPath); ok {
   199  				selectedMask := &meta.Meta_FieldMask{
   200  					Paths: []meta.Meta_FieldPath{sub.subPath.(meta.Meta_FieldPath)},
   201  				}
   202  				for _, allowedPath := range selectedMask.FilterInputFields().Paths {
   203  					result.Paths = append(result.Paths, &Role_FieldSubPath{selector: Role_FieldPathSelectorMetadata, subPath: allowedPath})
   204  				}
   205  			}
   206  		default:
   207  			result.Paths = append(result.Paths, path)
   208  		}
   209  	}
   210  	return result
   211  }
   212  
   213  // ToFieldMask is used for proto conversions
   214  func (fieldMask *Role_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   215  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   216  	for _, path := range fieldMask.Paths {
   217  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   218  	}
   219  	return protoFieldMask
   220  }
   221  
   222  func (fieldMask *Role_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   223  	if fieldMask == nil {
   224  		return status.Error(codes.Internal, "target field mask is nil")
   225  	}
   226  	fieldMask.Paths = make([]Role_FieldPath, 0, len(protoFieldMask.Paths))
   227  	for _, strPath := range protoFieldMask.Paths {
   228  		path, err := ParseRole_FieldPath(strPath)
   229  		if err != nil {
   230  			return err
   231  		}
   232  		fieldMask.Paths = append(fieldMask.Paths, path)
   233  	}
   234  	return nil
   235  }
   236  
   237  // implement methods required by customType
   238  func (fieldMask Role_FieldMask) Marshal() ([]byte, error) {
   239  	protoFieldMask := fieldMask.ToProtoFieldMask()
   240  	return proto.Marshal(protoFieldMask)
   241  }
   242  
   243  func (fieldMask *Role_FieldMask) Unmarshal(data []byte) error {
   244  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   245  	if err := proto.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 *Role_FieldMask) Size() int {
   255  	return proto.Size(fieldMask.ToProtoFieldMask())
   256  }
   257  
   258  func (fieldMask Role_FieldMask) MarshalJSON() ([]byte, error) {
   259  	return json.Marshal(fieldMask.ToProtoFieldMask())
   260  }
   261  
   262  func (fieldMask *Role_FieldMask) UnmarshalJSON(data []byte) error {
   263  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   264  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   265  		return err
   266  	}
   267  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   268  		return err
   269  	}
   270  	return nil
   271  }
   272  
   273  func (fieldMask *Role_FieldMask) AppendPath(path Role_FieldPath) {
   274  	fieldMask.Paths = append(fieldMask.Paths, path)
   275  }
   276  
   277  func (fieldMask *Role_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   278  	fieldMask.Paths = append(fieldMask.Paths, path.(Role_FieldPath))
   279  }
   280  
   281  func (fieldMask *Role_FieldMask) GetPaths() []Role_FieldPath {
   282  	if fieldMask == nil {
   283  		return nil
   284  	}
   285  	return fieldMask.Paths
   286  }
   287  
   288  func (fieldMask *Role_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   289  	if fieldMask == nil {
   290  		return nil
   291  	}
   292  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   293  	for _, path := range fieldMask.Paths {
   294  		rawPaths = append(rawPaths, path)
   295  	}
   296  	return rawPaths
   297  }
   298  
   299  func (fieldMask *Role_FieldMask) SetFromCliFlag(raw string) error {
   300  	path, err := ParseRole_FieldPath(raw)
   301  	if err != nil {
   302  		return err
   303  	}
   304  	fieldMask.Paths = append(fieldMask.Paths, path)
   305  	return nil
   306  }
   307  
   308  func (fieldMask *Role_FieldMask) Set(target, source *Role) {
   309  	for _, path := range fieldMask.Paths {
   310  		val, _ := path.GetSingle(source)
   311  		// if val is nil, then field does not exist in source, skip
   312  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   313  		if val != nil {
   314  			path.WithIValue(val).SetTo(&target)
   315  		}
   316  	}
   317  }
   318  
   319  func (fieldMask *Role_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   320  	fieldMask.Set(target.(*Role), source.(*Role))
   321  }
   322  
   323  func (fieldMask *Role_FieldMask) Project(source *Role) *Role {
   324  	if source == nil {
   325  		return nil
   326  	}
   327  	if fieldMask == nil {
   328  		return source
   329  	}
   330  	result := &Role{}
   331  	metadataMask := &meta.Meta_FieldMask{}
   332  	wholeMetadataAccepted := false
   333  	scopeParamsMask := &Role_ScopeParamType_FieldMask{}
   334  	wholeScopeParamsAccepted := false
   335  	constValuesMask := &ScopeParam_FieldMask{}
   336  	wholeConstValuesAccepted := false
   337  	defaultValuesMask := &ScopeParam_FieldMask{}
   338  	wholeDefaultValuesAccepted := false
   339  	grantsMask := &Role_Grant_FieldMask{}
   340  	wholeGrantsAccepted := false
   341  
   342  	for _, p := range fieldMask.Paths {
   343  		switch tp := p.(type) {
   344  		case *Role_FieldTerminalPath:
   345  			switch tp.selector {
   346  			case Role_FieldPathSelectorName:
   347  				result.Name = source.Name
   348  			case Role_FieldPathSelectorMetadata:
   349  				result.Metadata = source.Metadata
   350  				wholeMetadataAccepted = true
   351  			case Role_FieldPathSelectorDisplayName:
   352  				result.DisplayName = source.DisplayName
   353  			case Role_FieldPathSelectorDescription:
   354  				result.Description = source.Description
   355  			case Role_FieldPathSelectorCategory:
   356  				result.Category = source.Category
   357  			case Role_FieldPathSelectorScopeParams:
   358  				result.ScopeParams = source.ScopeParams
   359  				wholeScopeParamsAccepted = true
   360  			case Role_FieldPathSelectorConstValues:
   361  				result.ConstValues = source.ConstValues
   362  				wholeConstValuesAccepted = true
   363  			case Role_FieldPathSelectorDefaultValues:
   364  				result.DefaultValues = source.DefaultValues
   365  				wholeDefaultValuesAccepted = true
   366  			case Role_FieldPathSelectorGrants:
   367  				result.Grants = source.Grants
   368  				wholeGrantsAccepted = true
   369  			case Role_FieldPathSelectorOwnedObjects:
   370  				result.OwnedObjects = source.OwnedObjects
   371  			case Role_FieldPathSelectorServices:
   372  				result.Services = source.Services
   373  			case Role_FieldPathSelectorRbSpecGeneration:
   374  				result.RbSpecGeneration = source.RbSpecGeneration
   375  			}
   376  		case *Role_FieldSubPath:
   377  			switch tp.selector {
   378  			case Role_FieldPathSelectorMetadata:
   379  				metadataMask.AppendPath(tp.subPath.(meta.Meta_FieldPath))
   380  			case Role_FieldPathSelectorScopeParams:
   381  				scopeParamsMask.AppendPath(tp.subPath.(RoleScopeParamType_FieldPath))
   382  			case Role_FieldPathSelectorConstValues:
   383  				constValuesMask.AppendPath(tp.subPath.(ScopeParam_FieldPath))
   384  			case Role_FieldPathSelectorDefaultValues:
   385  				defaultValuesMask.AppendPath(tp.subPath.(ScopeParam_FieldPath))
   386  			case Role_FieldPathSelectorGrants:
   387  				grantsMask.AppendPath(tp.subPath.(RoleGrant_FieldPath))
   388  			}
   389  		}
   390  	}
   391  	if wholeMetadataAccepted == false && len(metadataMask.Paths) > 0 {
   392  		result.Metadata = metadataMask.Project(source.GetMetadata())
   393  	}
   394  	if wholeScopeParamsAccepted == false && len(scopeParamsMask.Paths) > 0 {
   395  		for _, sourceItem := range source.GetScopeParams() {
   396  			result.ScopeParams = append(result.ScopeParams, scopeParamsMask.Project(sourceItem))
   397  		}
   398  	}
   399  	if wholeConstValuesAccepted == false && len(constValuesMask.Paths) > 0 {
   400  		for _, sourceItem := range source.GetConstValues() {
   401  			result.ConstValues = append(result.ConstValues, constValuesMask.Project(sourceItem))
   402  		}
   403  	}
   404  	if wholeDefaultValuesAccepted == false && len(defaultValuesMask.Paths) > 0 {
   405  		for _, sourceItem := range source.GetDefaultValues() {
   406  			result.DefaultValues = append(result.DefaultValues, defaultValuesMask.Project(sourceItem))
   407  		}
   408  	}
   409  	if wholeGrantsAccepted == false && len(grantsMask.Paths) > 0 {
   410  		for _, sourceItem := range source.GetGrants() {
   411  			result.Grants = append(result.Grants, grantsMask.Project(sourceItem))
   412  		}
   413  	}
   414  	return result
   415  }
   416  
   417  func (fieldMask *Role_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   418  	return fieldMask.Project(source.(*Role))
   419  }
   420  
   421  func (fieldMask *Role_FieldMask) PathsCount() int {
   422  	if fieldMask == nil {
   423  		return 0
   424  	}
   425  	return len(fieldMask.Paths)
   426  }
   427  
   428  type Role_ScopeParamType_FieldMask struct {
   429  	Paths []RoleScopeParamType_FieldPath
   430  }
   431  
   432  func FullRole_ScopeParamType_FieldMask() *Role_ScopeParamType_FieldMask {
   433  	res := &Role_ScopeParamType_FieldMask{}
   434  	res.Paths = append(res.Paths, &RoleScopeParamType_FieldTerminalPath{selector: RoleScopeParamType_FieldPathSelectorName})
   435  	res.Paths = append(res.Paths, &RoleScopeParamType_FieldTerminalPath{selector: RoleScopeParamType_FieldPathSelectorType})
   436  	return res
   437  }
   438  
   439  func (fieldMask *Role_ScopeParamType_FieldMask) String() string {
   440  	if fieldMask == nil {
   441  		return "<nil>"
   442  	}
   443  	pathsStr := make([]string, 0, len(fieldMask.Paths))
   444  	for _, path := range fieldMask.Paths {
   445  		pathsStr = append(pathsStr, path.String())
   446  	}
   447  	return strings.Join(pathsStr, ", ")
   448  }
   449  
   450  func (fieldMask *Role_ScopeParamType_FieldMask) IsFull() bool {
   451  	if fieldMask == nil {
   452  		return false
   453  	}
   454  	presentSelectors := make([]bool, 2)
   455  	for _, path := range fieldMask.Paths {
   456  		if asFinal, ok := path.(*RoleScopeParamType_FieldTerminalPath); ok {
   457  			presentSelectors[int(asFinal.selector)] = true
   458  		}
   459  	}
   460  	for _, flag := range presentSelectors {
   461  		if !flag {
   462  			return false
   463  		}
   464  	}
   465  	return true
   466  }
   467  
   468  func (fieldMask *Role_ScopeParamType_FieldMask) ProtoReflect() preflect.Message {
   469  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
   470  		return ParseRoleScopeParamType_FieldPath(raw)
   471  	})
   472  }
   473  
   474  func (fieldMask *Role_ScopeParamType_FieldMask) ProtoMessage() {}
   475  
   476  func (fieldMask *Role_ScopeParamType_FieldMask) Reset() {
   477  	if fieldMask != nil {
   478  		fieldMask.Paths = nil
   479  	}
   480  }
   481  
   482  func (fieldMask *Role_ScopeParamType_FieldMask) Subtract(other *Role_ScopeParamType_FieldMask) *Role_ScopeParamType_FieldMask {
   483  	result := &Role_ScopeParamType_FieldMask{}
   484  	removedSelectors := make([]bool, 2)
   485  
   486  	for _, path := range other.GetPaths() {
   487  		switch tp := path.(type) {
   488  		case *RoleScopeParamType_FieldTerminalPath:
   489  			removedSelectors[int(tp.selector)] = true
   490  		}
   491  	}
   492  	for _, path := range fieldMask.GetPaths() {
   493  		if !removedSelectors[int(path.Selector())] {
   494  			result.Paths = append(result.Paths, path)
   495  		}
   496  	}
   497  
   498  	if len(result.Paths) == 0 {
   499  		return nil
   500  	}
   501  	return result
   502  }
   503  
   504  func (fieldMask *Role_ScopeParamType_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   505  	return fieldMask.Subtract(other.(*Role_ScopeParamType_FieldMask))
   506  }
   507  
   508  // FilterInputFields generates copy of field paths with output_only field paths removed
   509  func (fieldMask *Role_ScopeParamType_FieldMask) FilterInputFields() *Role_ScopeParamType_FieldMask {
   510  	result := &Role_ScopeParamType_FieldMask{}
   511  	result.Paths = append(result.Paths, fieldMask.Paths...)
   512  	return result
   513  }
   514  
   515  // ToFieldMask is used for proto conversions
   516  func (fieldMask *Role_ScopeParamType_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   517  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   518  	for _, path := range fieldMask.Paths {
   519  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   520  	}
   521  	return protoFieldMask
   522  }
   523  
   524  func (fieldMask *Role_ScopeParamType_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   525  	if fieldMask == nil {
   526  		return status.Error(codes.Internal, "target field mask is nil")
   527  	}
   528  	fieldMask.Paths = make([]RoleScopeParamType_FieldPath, 0, len(protoFieldMask.Paths))
   529  	for _, strPath := range protoFieldMask.Paths {
   530  		path, err := ParseRoleScopeParamType_FieldPath(strPath)
   531  		if err != nil {
   532  			return err
   533  		}
   534  		fieldMask.Paths = append(fieldMask.Paths, path)
   535  	}
   536  	return nil
   537  }
   538  
   539  // implement methods required by customType
   540  func (fieldMask Role_ScopeParamType_FieldMask) Marshal() ([]byte, error) {
   541  	protoFieldMask := fieldMask.ToProtoFieldMask()
   542  	return proto.Marshal(protoFieldMask)
   543  }
   544  
   545  func (fieldMask *Role_ScopeParamType_FieldMask) Unmarshal(data []byte) error {
   546  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   547  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   548  		return err
   549  	}
   550  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   551  		return err
   552  	}
   553  	return nil
   554  }
   555  
   556  func (fieldMask *Role_ScopeParamType_FieldMask) Size() int {
   557  	return proto.Size(fieldMask.ToProtoFieldMask())
   558  }
   559  
   560  func (fieldMask Role_ScopeParamType_FieldMask) MarshalJSON() ([]byte, error) {
   561  	return json.Marshal(fieldMask.ToProtoFieldMask())
   562  }
   563  
   564  func (fieldMask *Role_ScopeParamType_FieldMask) UnmarshalJSON(data []byte) error {
   565  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   566  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   567  		return err
   568  	}
   569  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   570  		return err
   571  	}
   572  	return nil
   573  }
   574  
   575  func (fieldMask *Role_ScopeParamType_FieldMask) AppendPath(path RoleScopeParamType_FieldPath) {
   576  	fieldMask.Paths = append(fieldMask.Paths, path)
   577  }
   578  
   579  func (fieldMask *Role_ScopeParamType_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   580  	fieldMask.Paths = append(fieldMask.Paths, path.(RoleScopeParamType_FieldPath))
   581  }
   582  
   583  func (fieldMask *Role_ScopeParamType_FieldMask) GetPaths() []RoleScopeParamType_FieldPath {
   584  	if fieldMask == nil {
   585  		return nil
   586  	}
   587  	return fieldMask.Paths
   588  }
   589  
   590  func (fieldMask *Role_ScopeParamType_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   591  	if fieldMask == nil {
   592  		return nil
   593  	}
   594  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   595  	for _, path := range fieldMask.Paths {
   596  		rawPaths = append(rawPaths, path)
   597  	}
   598  	return rawPaths
   599  }
   600  
   601  func (fieldMask *Role_ScopeParamType_FieldMask) SetFromCliFlag(raw string) error {
   602  	path, err := ParseRoleScopeParamType_FieldPath(raw)
   603  	if err != nil {
   604  		return err
   605  	}
   606  	fieldMask.Paths = append(fieldMask.Paths, path)
   607  	return nil
   608  }
   609  
   610  func (fieldMask *Role_ScopeParamType_FieldMask) Set(target, source *Role_ScopeParamType) {
   611  	for _, path := range fieldMask.Paths {
   612  		val, _ := path.GetSingle(source)
   613  		// if val is nil, then field does not exist in source, skip
   614  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   615  		if val != nil {
   616  			path.WithIValue(val).SetTo(&target)
   617  		}
   618  	}
   619  }
   620  
   621  func (fieldMask *Role_ScopeParamType_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   622  	fieldMask.Set(target.(*Role_ScopeParamType), source.(*Role_ScopeParamType))
   623  }
   624  
   625  func (fieldMask *Role_ScopeParamType_FieldMask) Project(source *Role_ScopeParamType) *Role_ScopeParamType {
   626  	if source == nil {
   627  		return nil
   628  	}
   629  	if fieldMask == nil {
   630  		return source
   631  	}
   632  	result := &Role_ScopeParamType{}
   633  
   634  	for _, p := range fieldMask.Paths {
   635  		switch tp := p.(type) {
   636  		case *RoleScopeParamType_FieldTerminalPath:
   637  			switch tp.selector {
   638  			case RoleScopeParamType_FieldPathSelectorName:
   639  				result.Name = source.Name
   640  			case RoleScopeParamType_FieldPathSelectorType:
   641  				result.Type = source.Type
   642  			}
   643  		}
   644  	}
   645  	return result
   646  }
   647  
   648  func (fieldMask *Role_ScopeParamType_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   649  	return fieldMask.Project(source.(*Role_ScopeParamType))
   650  }
   651  
   652  func (fieldMask *Role_ScopeParamType_FieldMask) PathsCount() int {
   653  	if fieldMask == nil {
   654  		return 0
   655  	}
   656  	return len(fieldMask.Paths)
   657  }
   658  
   659  type Role_Grant_FieldMask struct {
   660  	Paths []RoleGrant_FieldPath
   661  }
   662  
   663  func FullRole_Grant_FieldMask() *Role_Grant_FieldMask {
   664  	res := &Role_Grant_FieldMask{}
   665  	res.Paths = append(res.Paths, &RoleGrant_FieldTerminalPath{selector: RoleGrant_FieldPathSelectorSubScope})
   666  	res.Paths = append(res.Paths, &RoleGrant_FieldTerminalPath{selector: RoleGrant_FieldPathSelectorPermissions})
   667  	res.Paths = append(res.Paths, &RoleGrant_FieldTerminalPath{selector: RoleGrant_FieldPathSelectorResourceFieldConditions})
   668  	res.Paths = append(res.Paths, &RoleGrant_FieldTerminalPath{selector: RoleGrant_FieldPathSelectorRequestFieldConditions})
   669  	res.Paths = append(res.Paths, &RoleGrant_FieldTerminalPath{selector: RoleGrant_FieldPathSelectorExecutableConditions})
   670  	return res
   671  }
   672  
   673  func (fieldMask *Role_Grant_FieldMask) String() string {
   674  	if fieldMask == nil {
   675  		return "<nil>"
   676  	}
   677  	pathsStr := make([]string, 0, len(fieldMask.Paths))
   678  	for _, path := range fieldMask.Paths {
   679  		pathsStr = append(pathsStr, path.String())
   680  	}
   681  	return strings.Join(pathsStr, ", ")
   682  }
   683  
   684  func (fieldMask *Role_Grant_FieldMask) IsFull() bool {
   685  	if fieldMask == nil {
   686  		return false
   687  	}
   688  	presentSelectors := make([]bool, 5)
   689  	for _, path := range fieldMask.Paths {
   690  		if asFinal, ok := path.(*RoleGrant_FieldTerminalPath); ok {
   691  			presentSelectors[int(asFinal.selector)] = true
   692  		}
   693  	}
   694  	for _, flag := range presentSelectors {
   695  		if !flag {
   696  			return false
   697  		}
   698  	}
   699  	return true
   700  }
   701  
   702  func (fieldMask *Role_Grant_FieldMask) ProtoReflect() preflect.Message {
   703  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
   704  		return ParseRoleGrant_FieldPath(raw)
   705  	})
   706  }
   707  
   708  func (fieldMask *Role_Grant_FieldMask) ProtoMessage() {}
   709  
   710  func (fieldMask *Role_Grant_FieldMask) Reset() {
   711  	if fieldMask != nil {
   712  		fieldMask.Paths = nil
   713  	}
   714  }
   715  
   716  func (fieldMask *Role_Grant_FieldMask) Subtract(other *Role_Grant_FieldMask) *Role_Grant_FieldMask {
   717  	result := &Role_Grant_FieldMask{}
   718  	removedSelectors := make([]bool, 5)
   719  	otherSubMasks := map[RoleGrant_FieldPathSelector]gotenobject.FieldMask{
   720  		RoleGrant_FieldPathSelectorResourceFieldConditions: &Role_Grant_FieldCondition_FieldMask{},
   721  		RoleGrant_FieldPathSelectorRequestFieldConditions:  &Role_Grant_FieldCondition_FieldMask{},
   722  		RoleGrant_FieldPathSelectorExecutableConditions:    &condition.ExecutableCondition_FieldMask{},
   723  	}
   724  	mySubMasks := map[RoleGrant_FieldPathSelector]gotenobject.FieldMask{
   725  		RoleGrant_FieldPathSelectorResourceFieldConditions: &Role_Grant_FieldCondition_FieldMask{},
   726  		RoleGrant_FieldPathSelectorRequestFieldConditions:  &Role_Grant_FieldCondition_FieldMask{},
   727  		RoleGrant_FieldPathSelectorExecutableConditions:    &condition.ExecutableCondition_FieldMask{},
   728  	}
   729  
   730  	for _, path := range other.GetPaths() {
   731  		switch tp := path.(type) {
   732  		case *RoleGrant_FieldTerminalPath:
   733  			removedSelectors[int(tp.selector)] = true
   734  		case *RoleGrant_FieldSubPath:
   735  			otherSubMasks[tp.selector].AppendRawPath(tp.subPath)
   736  		}
   737  	}
   738  	for _, path := range fieldMask.GetPaths() {
   739  		if !removedSelectors[int(path.Selector())] {
   740  			if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 {
   741  				if tp, ok := path.(*RoleGrant_FieldTerminalPath); ok {
   742  					switch tp.selector {
   743  					case RoleGrant_FieldPathSelectorResourceFieldConditions:
   744  						mySubMasks[RoleGrant_FieldPathSelectorResourceFieldConditions] = FullRole_Grant_FieldCondition_FieldMask()
   745  					case RoleGrant_FieldPathSelectorRequestFieldConditions:
   746  						mySubMasks[RoleGrant_FieldPathSelectorRequestFieldConditions] = FullRole_Grant_FieldCondition_FieldMask()
   747  					case RoleGrant_FieldPathSelectorExecutableConditions:
   748  						mySubMasks[RoleGrant_FieldPathSelectorExecutableConditions] = condition.FullExecutableCondition_FieldMask()
   749  					}
   750  				} else if tp, ok := path.(*RoleGrant_FieldSubPath); ok {
   751  					mySubMasks[tp.selector].AppendRawPath(tp.subPath)
   752  				}
   753  			} else {
   754  				result.Paths = append(result.Paths, path)
   755  			}
   756  		}
   757  	}
   758  	for selector, mySubMask := range mySubMasks {
   759  		if mySubMask.PathsCount() > 0 {
   760  			for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() {
   761  				result.Paths = append(result.Paths, &RoleGrant_FieldSubPath{selector: selector, subPath: allowedPath})
   762  			}
   763  		}
   764  	}
   765  
   766  	if len(result.Paths) == 0 {
   767  		return nil
   768  	}
   769  	return result
   770  }
   771  
   772  func (fieldMask *Role_Grant_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   773  	return fieldMask.Subtract(other.(*Role_Grant_FieldMask))
   774  }
   775  
   776  // FilterInputFields generates copy of field paths with output_only field paths removed
   777  func (fieldMask *Role_Grant_FieldMask) FilterInputFields() *Role_Grant_FieldMask {
   778  	result := &Role_Grant_FieldMask{}
   779  	result.Paths = append(result.Paths, fieldMask.Paths...)
   780  	return result
   781  }
   782  
   783  // ToFieldMask is used for proto conversions
   784  func (fieldMask *Role_Grant_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   785  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   786  	for _, path := range fieldMask.Paths {
   787  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   788  	}
   789  	return protoFieldMask
   790  }
   791  
   792  func (fieldMask *Role_Grant_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   793  	if fieldMask == nil {
   794  		return status.Error(codes.Internal, "target field mask is nil")
   795  	}
   796  	fieldMask.Paths = make([]RoleGrant_FieldPath, 0, len(protoFieldMask.Paths))
   797  	for _, strPath := range protoFieldMask.Paths {
   798  		path, err := ParseRoleGrant_FieldPath(strPath)
   799  		if err != nil {
   800  			return err
   801  		}
   802  		fieldMask.Paths = append(fieldMask.Paths, path)
   803  	}
   804  	return nil
   805  }
   806  
   807  // implement methods required by customType
   808  func (fieldMask Role_Grant_FieldMask) Marshal() ([]byte, error) {
   809  	protoFieldMask := fieldMask.ToProtoFieldMask()
   810  	return proto.Marshal(protoFieldMask)
   811  }
   812  
   813  func (fieldMask *Role_Grant_FieldMask) Unmarshal(data []byte) error {
   814  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   815  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   816  		return err
   817  	}
   818  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   819  		return err
   820  	}
   821  	return nil
   822  }
   823  
   824  func (fieldMask *Role_Grant_FieldMask) Size() int {
   825  	return proto.Size(fieldMask.ToProtoFieldMask())
   826  }
   827  
   828  func (fieldMask Role_Grant_FieldMask) MarshalJSON() ([]byte, error) {
   829  	return json.Marshal(fieldMask.ToProtoFieldMask())
   830  }
   831  
   832  func (fieldMask *Role_Grant_FieldMask) UnmarshalJSON(data []byte) error {
   833  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   834  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   835  		return err
   836  	}
   837  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   838  		return err
   839  	}
   840  	return nil
   841  }
   842  
   843  func (fieldMask *Role_Grant_FieldMask) AppendPath(path RoleGrant_FieldPath) {
   844  	fieldMask.Paths = append(fieldMask.Paths, path)
   845  }
   846  
   847  func (fieldMask *Role_Grant_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   848  	fieldMask.Paths = append(fieldMask.Paths, path.(RoleGrant_FieldPath))
   849  }
   850  
   851  func (fieldMask *Role_Grant_FieldMask) GetPaths() []RoleGrant_FieldPath {
   852  	if fieldMask == nil {
   853  		return nil
   854  	}
   855  	return fieldMask.Paths
   856  }
   857  
   858  func (fieldMask *Role_Grant_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   859  	if fieldMask == nil {
   860  		return nil
   861  	}
   862  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   863  	for _, path := range fieldMask.Paths {
   864  		rawPaths = append(rawPaths, path)
   865  	}
   866  	return rawPaths
   867  }
   868  
   869  func (fieldMask *Role_Grant_FieldMask) SetFromCliFlag(raw string) error {
   870  	path, err := ParseRoleGrant_FieldPath(raw)
   871  	if err != nil {
   872  		return err
   873  	}
   874  	fieldMask.Paths = append(fieldMask.Paths, path)
   875  	return nil
   876  }
   877  
   878  func (fieldMask *Role_Grant_FieldMask) Set(target, source *Role_Grant) {
   879  	for _, path := range fieldMask.Paths {
   880  		val, _ := path.GetSingle(source)
   881  		// if val is nil, then field does not exist in source, skip
   882  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   883  		if val != nil {
   884  			path.WithIValue(val).SetTo(&target)
   885  		}
   886  	}
   887  }
   888  
   889  func (fieldMask *Role_Grant_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   890  	fieldMask.Set(target.(*Role_Grant), source.(*Role_Grant))
   891  }
   892  
   893  func (fieldMask *Role_Grant_FieldMask) Project(source *Role_Grant) *Role_Grant {
   894  	if source == nil {
   895  		return nil
   896  	}
   897  	if fieldMask == nil {
   898  		return source
   899  	}
   900  	result := &Role_Grant{}
   901  	resourceFieldConditionsMask := &Role_Grant_FieldCondition_FieldMask{}
   902  	wholeResourceFieldConditionsAccepted := false
   903  	requestFieldConditionsMask := &Role_Grant_FieldCondition_FieldMask{}
   904  	wholeRequestFieldConditionsAccepted := false
   905  	executableConditionsMask := &condition.ExecutableCondition_FieldMask{}
   906  	wholeExecutableConditionsAccepted := false
   907  
   908  	for _, p := range fieldMask.Paths {
   909  		switch tp := p.(type) {
   910  		case *RoleGrant_FieldTerminalPath:
   911  			switch tp.selector {
   912  			case RoleGrant_FieldPathSelectorSubScope:
   913  				result.SubScope = source.SubScope
   914  			case RoleGrant_FieldPathSelectorPermissions:
   915  				result.Permissions = source.Permissions
   916  			case RoleGrant_FieldPathSelectorResourceFieldConditions:
   917  				result.ResourceFieldConditions = source.ResourceFieldConditions
   918  				wholeResourceFieldConditionsAccepted = true
   919  			case RoleGrant_FieldPathSelectorRequestFieldConditions:
   920  				result.RequestFieldConditions = source.RequestFieldConditions
   921  				wholeRequestFieldConditionsAccepted = true
   922  			case RoleGrant_FieldPathSelectorExecutableConditions:
   923  				result.ExecutableConditions = source.ExecutableConditions
   924  				wholeExecutableConditionsAccepted = true
   925  			}
   926  		case *RoleGrant_FieldSubPath:
   927  			switch tp.selector {
   928  			case RoleGrant_FieldPathSelectorResourceFieldConditions:
   929  				resourceFieldConditionsMask.AppendPath(tp.subPath.(RoleGrantFieldCondition_FieldPath))
   930  			case RoleGrant_FieldPathSelectorRequestFieldConditions:
   931  				requestFieldConditionsMask.AppendPath(tp.subPath.(RoleGrantFieldCondition_FieldPath))
   932  			case RoleGrant_FieldPathSelectorExecutableConditions:
   933  				executableConditionsMask.AppendPath(tp.subPath.(condition.ExecutableCondition_FieldPath))
   934  			}
   935  		}
   936  	}
   937  	if wholeResourceFieldConditionsAccepted == false && len(resourceFieldConditionsMask.Paths) > 0 {
   938  		for _, sourceItem := range source.GetResourceFieldConditions() {
   939  			result.ResourceFieldConditions = append(result.ResourceFieldConditions, resourceFieldConditionsMask.Project(sourceItem))
   940  		}
   941  	}
   942  	if wholeRequestFieldConditionsAccepted == false && len(requestFieldConditionsMask.Paths) > 0 {
   943  		for _, sourceItem := range source.GetRequestFieldConditions() {
   944  			result.RequestFieldConditions = append(result.RequestFieldConditions, requestFieldConditionsMask.Project(sourceItem))
   945  		}
   946  	}
   947  	if wholeExecutableConditionsAccepted == false && len(executableConditionsMask.Paths) > 0 {
   948  		for _, sourceItem := range source.GetExecutableConditions() {
   949  			result.ExecutableConditions = append(result.ExecutableConditions, executableConditionsMask.Project(sourceItem))
   950  		}
   951  	}
   952  	return result
   953  }
   954  
   955  func (fieldMask *Role_Grant_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   956  	return fieldMask.Project(source.(*Role_Grant))
   957  }
   958  
   959  func (fieldMask *Role_Grant_FieldMask) PathsCount() int {
   960  	if fieldMask == nil {
   961  		return 0
   962  	}
   963  	return len(fieldMask.Paths)
   964  }
   965  
   966  type Role_Grant_FieldCondition_FieldMask struct {
   967  	Paths []RoleGrantFieldCondition_FieldPath
   968  }
   969  
   970  func FullRole_Grant_FieldCondition_FieldMask() *Role_Grant_FieldCondition_FieldMask {
   971  	res := &Role_Grant_FieldCondition_FieldMask{}
   972  	res.Paths = append(res.Paths, &RoleGrantFieldCondition_FieldTerminalPath{selector: RoleGrantFieldCondition_FieldPathSelectorPath})
   973  	res.Paths = append(res.Paths, &RoleGrantFieldCondition_FieldTerminalPath{selector: RoleGrantFieldCondition_FieldPathSelectorValue})
   974  	return res
   975  }
   976  
   977  func (fieldMask *Role_Grant_FieldCondition_FieldMask) String() string {
   978  	if fieldMask == nil {
   979  		return "<nil>"
   980  	}
   981  	pathsStr := make([]string, 0, len(fieldMask.Paths))
   982  	for _, path := range fieldMask.Paths {
   983  		pathsStr = append(pathsStr, path.String())
   984  	}
   985  	return strings.Join(pathsStr, ", ")
   986  }
   987  
   988  func (fieldMask *Role_Grant_FieldCondition_FieldMask) IsFull() bool {
   989  	if fieldMask == nil {
   990  		return false
   991  	}
   992  	presentSelectors := make([]bool, 2)
   993  	for _, path := range fieldMask.Paths {
   994  		if asFinal, ok := path.(*RoleGrantFieldCondition_FieldTerminalPath); ok {
   995  			presentSelectors[int(asFinal.selector)] = true
   996  		}
   997  	}
   998  	for _, flag := range presentSelectors {
   999  		if !flag {
  1000  			return false
  1001  		}
  1002  	}
  1003  	return true
  1004  }
  1005  
  1006  func (fieldMask *Role_Grant_FieldCondition_FieldMask) ProtoReflect() preflect.Message {
  1007  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
  1008  		return ParseRoleGrantFieldCondition_FieldPath(raw)
  1009  	})
  1010  }
  1011  
  1012  func (fieldMask *Role_Grant_FieldCondition_FieldMask) ProtoMessage() {}
  1013  
  1014  func (fieldMask *Role_Grant_FieldCondition_FieldMask) Reset() {
  1015  	if fieldMask != nil {
  1016  		fieldMask.Paths = nil
  1017  	}
  1018  }
  1019  
  1020  func (fieldMask *Role_Grant_FieldCondition_FieldMask) Subtract(other *Role_Grant_FieldCondition_FieldMask) *Role_Grant_FieldCondition_FieldMask {
  1021  	result := &Role_Grant_FieldCondition_FieldMask{}
  1022  	removedSelectors := make([]bool, 2)
  1023  
  1024  	for _, path := range other.GetPaths() {
  1025  		switch tp := path.(type) {
  1026  		case *RoleGrantFieldCondition_FieldTerminalPath:
  1027  			removedSelectors[int(tp.selector)] = true
  1028  		}
  1029  	}
  1030  	for _, path := range fieldMask.GetPaths() {
  1031  		if !removedSelectors[int(path.Selector())] {
  1032  			result.Paths = append(result.Paths, path)
  1033  		}
  1034  	}
  1035  
  1036  	if len(result.Paths) == 0 {
  1037  		return nil
  1038  	}
  1039  	return result
  1040  }
  1041  
  1042  func (fieldMask *Role_Grant_FieldCondition_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
  1043  	return fieldMask.Subtract(other.(*Role_Grant_FieldCondition_FieldMask))
  1044  }
  1045  
  1046  // FilterInputFields generates copy of field paths with output_only field paths removed
  1047  func (fieldMask *Role_Grant_FieldCondition_FieldMask) FilterInputFields() *Role_Grant_FieldCondition_FieldMask {
  1048  	result := &Role_Grant_FieldCondition_FieldMask{}
  1049  	result.Paths = append(result.Paths, fieldMask.Paths...)
  1050  	return result
  1051  }
  1052  
  1053  // ToFieldMask is used for proto conversions
  1054  func (fieldMask *Role_Grant_FieldCondition_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
  1055  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1056  	for _, path := range fieldMask.Paths {
  1057  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
  1058  	}
  1059  	return protoFieldMask
  1060  }
  1061  
  1062  func (fieldMask *Role_Grant_FieldCondition_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
  1063  	if fieldMask == nil {
  1064  		return status.Error(codes.Internal, "target field mask is nil")
  1065  	}
  1066  	fieldMask.Paths = make([]RoleGrantFieldCondition_FieldPath, 0, len(protoFieldMask.Paths))
  1067  	for _, strPath := range protoFieldMask.Paths {
  1068  		path, err := ParseRoleGrantFieldCondition_FieldPath(strPath)
  1069  		if err != nil {
  1070  			return err
  1071  		}
  1072  		fieldMask.Paths = append(fieldMask.Paths, path)
  1073  	}
  1074  	return nil
  1075  }
  1076  
  1077  // implement methods required by customType
  1078  func (fieldMask Role_Grant_FieldCondition_FieldMask) Marshal() ([]byte, error) {
  1079  	protoFieldMask := fieldMask.ToProtoFieldMask()
  1080  	return proto.Marshal(protoFieldMask)
  1081  }
  1082  
  1083  func (fieldMask *Role_Grant_FieldCondition_FieldMask) Unmarshal(data []byte) error {
  1084  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1085  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
  1086  		return err
  1087  	}
  1088  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  1089  		return err
  1090  	}
  1091  	return nil
  1092  }
  1093  
  1094  func (fieldMask *Role_Grant_FieldCondition_FieldMask) Size() int {
  1095  	return proto.Size(fieldMask.ToProtoFieldMask())
  1096  }
  1097  
  1098  func (fieldMask Role_Grant_FieldCondition_FieldMask) MarshalJSON() ([]byte, error) {
  1099  	return json.Marshal(fieldMask.ToProtoFieldMask())
  1100  }
  1101  
  1102  func (fieldMask *Role_Grant_FieldCondition_FieldMask) UnmarshalJSON(data []byte) error {
  1103  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1104  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
  1105  		return err
  1106  	}
  1107  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  1108  		return err
  1109  	}
  1110  	return nil
  1111  }
  1112  
  1113  func (fieldMask *Role_Grant_FieldCondition_FieldMask) AppendPath(path RoleGrantFieldCondition_FieldPath) {
  1114  	fieldMask.Paths = append(fieldMask.Paths, path)
  1115  }
  1116  
  1117  func (fieldMask *Role_Grant_FieldCondition_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
  1118  	fieldMask.Paths = append(fieldMask.Paths, path.(RoleGrantFieldCondition_FieldPath))
  1119  }
  1120  
  1121  func (fieldMask *Role_Grant_FieldCondition_FieldMask) GetPaths() []RoleGrantFieldCondition_FieldPath {
  1122  	if fieldMask == nil {
  1123  		return nil
  1124  	}
  1125  	return fieldMask.Paths
  1126  }
  1127  
  1128  func (fieldMask *Role_Grant_FieldCondition_FieldMask) GetRawPaths() []gotenobject.FieldPath {
  1129  	if fieldMask == nil {
  1130  		return nil
  1131  	}
  1132  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
  1133  	for _, path := range fieldMask.Paths {
  1134  		rawPaths = append(rawPaths, path)
  1135  	}
  1136  	return rawPaths
  1137  }
  1138  
  1139  func (fieldMask *Role_Grant_FieldCondition_FieldMask) SetFromCliFlag(raw string) error {
  1140  	path, err := ParseRoleGrantFieldCondition_FieldPath(raw)
  1141  	if err != nil {
  1142  		return err
  1143  	}
  1144  	fieldMask.Paths = append(fieldMask.Paths, path)
  1145  	return nil
  1146  }
  1147  
  1148  func (fieldMask *Role_Grant_FieldCondition_FieldMask) Set(target, source *Role_Grant_FieldCondition) {
  1149  	for _, path := range fieldMask.Paths {
  1150  		val, _ := path.GetSingle(source)
  1151  		// if val is nil, then field does not exist in source, skip
  1152  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
  1153  		if val != nil {
  1154  			path.WithIValue(val).SetTo(&target)
  1155  		}
  1156  	}
  1157  }
  1158  
  1159  func (fieldMask *Role_Grant_FieldCondition_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
  1160  	fieldMask.Set(target.(*Role_Grant_FieldCondition), source.(*Role_Grant_FieldCondition))
  1161  }
  1162  
  1163  func (fieldMask *Role_Grant_FieldCondition_FieldMask) Project(source *Role_Grant_FieldCondition) *Role_Grant_FieldCondition {
  1164  	if source == nil {
  1165  		return nil
  1166  	}
  1167  	if fieldMask == nil {
  1168  		return source
  1169  	}
  1170  	result := &Role_Grant_FieldCondition{}
  1171  
  1172  	for _, p := range fieldMask.Paths {
  1173  		switch tp := p.(type) {
  1174  		case *RoleGrantFieldCondition_FieldTerminalPath:
  1175  			switch tp.selector {
  1176  			case RoleGrantFieldCondition_FieldPathSelectorPath:
  1177  				result.Path = source.Path
  1178  			case RoleGrantFieldCondition_FieldPathSelectorValue:
  1179  				result.Value = source.Value
  1180  			}
  1181  		}
  1182  	}
  1183  	return result
  1184  }
  1185  
  1186  func (fieldMask *Role_Grant_FieldCondition_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
  1187  	return fieldMask.Project(source.(*Role_Grant_FieldCondition))
  1188  }
  1189  
  1190  func (fieldMask *Role_Grant_FieldCondition_FieldMask) PathsCount() int {
  1191  	if fieldMask == nil {
  1192  		return 0
  1193  	}
  1194  	return len(fieldMask.Paths)
  1195  }
  1196  
  1197  type ScopeParam_FieldMask struct {
  1198  	Paths []ScopeParam_FieldPath
  1199  }
  1200  
  1201  func FullScopeParam_FieldMask() *ScopeParam_FieldMask {
  1202  	res := &ScopeParam_FieldMask{}
  1203  	res.Paths = append(res.Paths, &ScopeParam_FieldTerminalPath{selector: ScopeParam_FieldPathSelectorName})
  1204  	res.Paths = append(res.Paths, &ScopeParam_FieldTerminalPath{selector: ScopeParam_FieldPathSelectorString})
  1205  	res.Paths = append(res.Paths, &ScopeParam_FieldTerminalPath{selector: ScopeParam_FieldPathSelectorStrings})
  1206  	res.Paths = append(res.Paths, &ScopeParam_FieldTerminalPath{selector: ScopeParam_FieldPathSelectorValueFrom})
  1207  	return res
  1208  }
  1209  
  1210  func (fieldMask *ScopeParam_FieldMask) String() string {
  1211  	if fieldMask == nil {
  1212  		return "<nil>"
  1213  	}
  1214  	pathsStr := make([]string, 0, len(fieldMask.Paths))
  1215  	for _, path := range fieldMask.Paths {
  1216  		pathsStr = append(pathsStr, path.String())
  1217  	}
  1218  	return strings.Join(pathsStr, ", ")
  1219  }
  1220  
  1221  func (fieldMask *ScopeParam_FieldMask) IsFull() bool {
  1222  	if fieldMask == nil {
  1223  		return false
  1224  	}
  1225  	presentSelectors := make([]bool, 4)
  1226  	for _, path := range fieldMask.Paths {
  1227  		if asFinal, ok := path.(*ScopeParam_FieldTerminalPath); ok {
  1228  			presentSelectors[int(asFinal.selector)] = true
  1229  		}
  1230  	}
  1231  	for _, flag := range presentSelectors {
  1232  		if !flag {
  1233  			return false
  1234  		}
  1235  	}
  1236  	return true
  1237  }
  1238  
  1239  func (fieldMask *ScopeParam_FieldMask) ProtoReflect() preflect.Message {
  1240  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
  1241  		return ParseScopeParam_FieldPath(raw)
  1242  	})
  1243  }
  1244  
  1245  func (fieldMask *ScopeParam_FieldMask) ProtoMessage() {}
  1246  
  1247  func (fieldMask *ScopeParam_FieldMask) Reset() {
  1248  	if fieldMask != nil {
  1249  		fieldMask.Paths = nil
  1250  	}
  1251  }
  1252  
  1253  func (fieldMask *ScopeParam_FieldMask) Subtract(other *ScopeParam_FieldMask) *ScopeParam_FieldMask {
  1254  	result := &ScopeParam_FieldMask{}
  1255  	removedSelectors := make([]bool, 4)
  1256  	otherSubMasks := map[ScopeParam_FieldPathSelector]gotenobject.FieldMask{
  1257  		ScopeParam_FieldPathSelectorString:    &ScopeParam_StringValue_FieldMask{},
  1258  		ScopeParam_FieldPathSelectorStrings:   &ScopeParam_ArrayOfStringsValue_FieldMask{},
  1259  		ScopeParam_FieldPathSelectorValueFrom: &ScopeParam_FromValue_FieldMask{},
  1260  	}
  1261  	mySubMasks := map[ScopeParam_FieldPathSelector]gotenobject.FieldMask{
  1262  		ScopeParam_FieldPathSelectorString:    &ScopeParam_StringValue_FieldMask{},
  1263  		ScopeParam_FieldPathSelectorStrings:   &ScopeParam_ArrayOfStringsValue_FieldMask{},
  1264  		ScopeParam_FieldPathSelectorValueFrom: &ScopeParam_FromValue_FieldMask{},
  1265  	}
  1266  
  1267  	for _, path := range other.GetPaths() {
  1268  		switch tp := path.(type) {
  1269  		case *ScopeParam_FieldTerminalPath:
  1270  			removedSelectors[int(tp.selector)] = true
  1271  		case *ScopeParam_FieldSubPath:
  1272  			otherSubMasks[tp.selector].AppendRawPath(tp.subPath)
  1273  		}
  1274  	}
  1275  	for _, path := range fieldMask.GetPaths() {
  1276  		if !removedSelectors[int(path.Selector())] {
  1277  			if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 {
  1278  				if tp, ok := path.(*ScopeParam_FieldTerminalPath); ok {
  1279  					switch tp.selector {
  1280  					case ScopeParam_FieldPathSelectorString:
  1281  						mySubMasks[ScopeParam_FieldPathSelectorString] = FullScopeParam_StringValue_FieldMask()
  1282  					case ScopeParam_FieldPathSelectorStrings:
  1283  						mySubMasks[ScopeParam_FieldPathSelectorStrings] = FullScopeParam_ArrayOfStringsValue_FieldMask()
  1284  					case ScopeParam_FieldPathSelectorValueFrom:
  1285  						mySubMasks[ScopeParam_FieldPathSelectorValueFrom] = FullScopeParam_FromValue_FieldMask()
  1286  					}
  1287  				} else if tp, ok := path.(*ScopeParam_FieldSubPath); ok {
  1288  					mySubMasks[tp.selector].AppendRawPath(tp.subPath)
  1289  				}
  1290  			} else {
  1291  				result.Paths = append(result.Paths, path)
  1292  			}
  1293  		}
  1294  	}
  1295  	for selector, mySubMask := range mySubMasks {
  1296  		if mySubMask.PathsCount() > 0 {
  1297  			for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() {
  1298  				result.Paths = append(result.Paths, &ScopeParam_FieldSubPath{selector: selector, subPath: allowedPath})
  1299  			}
  1300  		}
  1301  	}
  1302  
  1303  	if len(result.Paths) == 0 {
  1304  		return nil
  1305  	}
  1306  	return result
  1307  }
  1308  
  1309  func (fieldMask *ScopeParam_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
  1310  	return fieldMask.Subtract(other.(*ScopeParam_FieldMask))
  1311  }
  1312  
  1313  // FilterInputFields generates copy of field paths with output_only field paths removed
  1314  func (fieldMask *ScopeParam_FieldMask) FilterInputFields() *ScopeParam_FieldMask {
  1315  	result := &ScopeParam_FieldMask{}
  1316  	result.Paths = append(result.Paths, fieldMask.Paths...)
  1317  	return result
  1318  }
  1319  
  1320  // ToFieldMask is used for proto conversions
  1321  func (fieldMask *ScopeParam_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
  1322  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1323  	for _, path := range fieldMask.Paths {
  1324  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
  1325  	}
  1326  	return protoFieldMask
  1327  }
  1328  
  1329  func (fieldMask *ScopeParam_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
  1330  	if fieldMask == nil {
  1331  		return status.Error(codes.Internal, "target field mask is nil")
  1332  	}
  1333  	fieldMask.Paths = make([]ScopeParam_FieldPath, 0, len(protoFieldMask.Paths))
  1334  	for _, strPath := range protoFieldMask.Paths {
  1335  		path, err := ParseScopeParam_FieldPath(strPath)
  1336  		if err != nil {
  1337  			return err
  1338  		}
  1339  		fieldMask.Paths = append(fieldMask.Paths, path)
  1340  	}
  1341  	return nil
  1342  }
  1343  
  1344  // implement methods required by customType
  1345  func (fieldMask ScopeParam_FieldMask) Marshal() ([]byte, error) {
  1346  	protoFieldMask := fieldMask.ToProtoFieldMask()
  1347  	return proto.Marshal(protoFieldMask)
  1348  }
  1349  
  1350  func (fieldMask *ScopeParam_FieldMask) Unmarshal(data []byte) error {
  1351  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1352  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
  1353  		return err
  1354  	}
  1355  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  1356  		return err
  1357  	}
  1358  	return nil
  1359  }
  1360  
  1361  func (fieldMask *ScopeParam_FieldMask) Size() int {
  1362  	return proto.Size(fieldMask.ToProtoFieldMask())
  1363  }
  1364  
  1365  func (fieldMask ScopeParam_FieldMask) MarshalJSON() ([]byte, error) {
  1366  	return json.Marshal(fieldMask.ToProtoFieldMask())
  1367  }
  1368  
  1369  func (fieldMask *ScopeParam_FieldMask) UnmarshalJSON(data []byte) error {
  1370  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1371  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
  1372  		return err
  1373  	}
  1374  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  1375  		return err
  1376  	}
  1377  	return nil
  1378  }
  1379  
  1380  func (fieldMask *ScopeParam_FieldMask) AppendPath(path ScopeParam_FieldPath) {
  1381  	fieldMask.Paths = append(fieldMask.Paths, path)
  1382  }
  1383  
  1384  func (fieldMask *ScopeParam_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
  1385  	fieldMask.Paths = append(fieldMask.Paths, path.(ScopeParam_FieldPath))
  1386  }
  1387  
  1388  func (fieldMask *ScopeParam_FieldMask) GetPaths() []ScopeParam_FieldPath {
  1389  	if fieldMask == nil {
  1390  		return nil
  1391  	}
  1392  	return fieldMask.Paths
  1393  }
  1394  
  1395  func (fieldMask *ScopeParam_FieldMask) GetRawPaths() []gotenobject.FieldPath {
  1396  	if fieldMask == nil {
  1397  		return nil
  1398  	}
  1399  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
  1400  	for _, path := range fieldMask.Paths {
  1401  		rawPaths = append(rawPaths, path)
  1402  	}
  1403  	return rawPaths
  1404  }
  1405  
  1406  func (fieldMask *ScopeParam_FieldMask) SetFromCliFlag(raw string) error {
  1407  	path, err := ParseScopeParam_FieldPath(raw)
  1408  	if err != nil {
  1409  		return err
  1410  	}
  1411  	fieldMask.Paths = append(fieldMask.Paths, path)
  1412  	return nil
  1413  }
  1414  
  1415  func (fieldMask *ScopeParam_FieldMask) Set(target, source *ScopeParam) {
  1416  	for _, path := range fieldMask.Paths {
  1417  		val, _ := path.GetSingle(source)
  1418  		// if val is nil, then field does not exist in source, skip
  1419  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
  1420  		if val != nil {
  1421  			path.WithIValue(val).SetTo(&target)
  1422  		}
  1423  	}
  1424  }
  1425  
  1426  func (fieldMask *ScopeParam_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
  1427  	fieldMask.Set(target.(*ScopeParam), source.(*ScopeParam))
  1428  }
  1429  
  1430  func (fieldMask *ScopeParam_FieldMask) Project(source *ScopeParam) *ScopeParam {
  1431  	if source == nil {
  1432  		return nil
  1433  	}
  1434  	if fieldMask == nil {
  1435  		return source
  1436  	}
  1437  	result := &ScopeParam{}
  1438  	stringMask := &ScopeParam_StringValue_FieldMask{}
  1439  	wholeStringAccepted := false
  1440  	stringsMask := &ScopeParam_ArrayOfStringsValue_FieldMask{}
  1441  	wholeStringsAccepted := false
  1442  	valueFromMask := &ScopeParam_FromValue_FieldMask{}
  1443  	wholeValueFromAccepted := false
  1444  
  1445  	for _, p := range fieldMask.Paths {
  1446  		switch tp := p.(type) {
  1447  		case *ScopeParam_FieldTerminalPath:
  1448  			switch tp.selector {
  1449  			case ScopeParam_FieldPathSelectorName:
  1450  				result.Name = source.Name
  1451  			case ScopeParam_FieldPathSelectorString:
  1452  				if source, ok := source.Value.(*ScopeParam_String_); ok {
  1453  					result.Value = &ScopeParam_String_{
  1454  						String_: source.String_,
  1455  					}
  1456  				}
  1457  				wholeStringAccepted = true
  1458  			case ScopeParam_FieldPathSelectorStrings:
  1459  				if source, ok := source.Value.(*ScopeParam_Strings); ok {
  1460  					result.Value = &ScopeParam_Strings{
  1461  						Strings: source.Strings,
  1462  					}
  1463  				}
  1464  				wholeStringsAccepted = true
  1465  			case ScopeParam_FieldPathSelectorValueFrom:
  1466  				if source, ok := source.Value.(*ScopeParam_ValueFrom); ok {
  1467  					result.Value = &ScopeParam_ValueFrom{
  1468  						ValueFrom: source.ValueFrom,
  1469  					}
  1470  				}
  1471  				wholeValueFromAccepted = true
  1472  			}
  1473  		case *ScopeParam_FieldSubPath:
  1474  			switch tp.selector {
  1475  			case ScopeParam_FieldPathSelectorString:
  1476  				stringMask.AppendPath(tp.subPath.(ScopeParamStringValue_FieldPath))
  1477  			case ScopeParam_FieldPathSelectorStrings:
  1478  				stringsMask.AppendPath(tp.subPath.(ScopeParamArrayOfStringsValue_FieldPath))
  1479  			case ScopeParam_FieldPathSelectorValueFrom:
  1480  				valueFromMask.AppendPath(tp.subPath.(ScopeParamFromValue_FieldPath))
  1481  			}
  1482  		}
  1483  	}
  1484  	if wholeStringAccepted == false && len(stringMask.Paths) > 0 {
  1485  		if asOneOf, ok := source.Value.(*ScopeParam_String_); ok {
  1486  			result.Value = (*ScopeParam_String_)(nil)
  1487  			if asOneOf != nil {
  1488  				oneOfRes := &ScopeParam_String_{}
  1489  				oneOfRes.String_ = stringMask.Project(asOneOf.String_)
  1490  				result.Value = oneOfRes
  1491  			}
  1492  		}
  1493  	}
  1494  	if wholeStringsAccepted == false && len(stringsMask.Paths) > 0 {
  1495  		if asOneOf, ok := source.Value.(*ScopeParam_Strings); ok {
  1496  			result.Value = (*ScopeParam_Strings)(nil)
  1497  			if asOneOf != nil {
  1498  				oneOfRes := &ScopeParam_Strings{}
  1499  				oneOfRes.Strings = stringsMask.Project(asOneOf.Strings)
  1500  				result.Value = oneOfRes
  1501  			}
  1502  		}
  1503  	}
  1504  	if wholeValueFromAccepted == false && len(valueFromMask.Paths) > 0 {
  1505  		if asOneOf, ok := source.Value.(*ScopeParam_ValueFrom); ok {
  1506  			result.Value = (*ScopeParam_ValueFrom)(nil)
  1507  			if asOneOf != nil {
  1508  				oneOfRes := &ScopeParam_ValueFrom{}
  1509  				oneOfRes.ValueFrom = valueFromMask.Project(asOneOf.ValueFrom)
  1510  				result.Value = oneOfRes
  1511  			}
  1512  		}
  1513  	}
  1514  	return result
  1515  }
  1516  
  1517  func (fieldMask *ScopeParam_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
  1518  	return fieldMask.Project(source.(*ScopeParam))
  1519  }
  1520  
  1521  func (fieldMask *ScopeParam_FieldMask) PathsCount() int {
  1522  	if fieldMask == nil {
  1523  		return 0
  1524  	}
  1525  	return len(fieldMask.Paths)
  1526  }
  1527  
  1528  type ScopeParam_StringValue_FieldMask struct {
  1529  	Paths []ScopeParamStringValue_FieldPath
  1530  }
  1531  
  1532  func FullScopeParam_StringValue_FieldMask() *ScopeParam_StringValue_FieldMask {
  1533  	res := &ScopeParam_StringValue_FieldMask{}
  1534  	res.Paths = append(res.Paths, &ScopeParamStringValue_FieldTerminalPath{selector: ScopeParamStringValue_FieldPathSelectorValue})
  1535  	return res
  1536  }
  1537  
  1538  func (fieldMask *ScopeParam_StringValue_FieldMask) String() string {
  1539  	if fieldMask == nil {
  1540  		return "<nil>"
  1541  	}
  1542  	pathsStr := make([]string, 0, len(fieldMask.Paths))
  1543  	for _, path := range fieldMask.Paths {
  1544  		pathsStr = append(pathsStr, path.String())
  1545  	}
  1546  	return strings.Join(pathsStr, ", ")
  1547  }
  1548  
  1549  func (fieldMask *ScopeParam_StringValue_FieldMask) IsFull() bool {
  1550  	if fieldMask == nil {
  1551  		return false
  1552  	}
  1553  	presentSelectors := make([]bool, 1)
  1554  	for _, path := range fieldMask.Paths {
  1555  		if asFinal, ok := path.(*ScopeParamStringValue_FieldTerminalPath); ok {
  1556  			presentSelectors[int(asFinal.selector)] = true
  1557  		}
  1558  	}
  1559  	for _, flag := range presentSelectors {
  1560  		if !flag {
  1561  			return false
  1562  		}
  1563  	}
  1564  	return true
  1565  }
  1566  
  1567  func (fieldMask *ScopeParam_StringValue_FieldMask) ProtoReflect() preflect.Message {
  1568  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
  1569  		return ParseScopeParamStringValue_FieldPath(raw)
  1570  	})
  1571  }
  1572  
  1573  func (fieldMask *ScopeParam_StringValue_FieldMask) ProtoMessage() {}
  1574  
  1575  func (fieldMask *ScopeParam_StringValue_FieldMask) Reset() {
  1576  	if fieldMask != nil {
  1577  		fieldMask.Paths = nil
  1578  	}
  1579  }
  1580  
  1581  func (fieldMask *ScopeParam_StringValue_FieldMask) Subtract(other *ScopeParam_StringValue_FieldMask) *ScopeParam_StringValue_FieldMask {
  1582  	result := &ScopeParam_StringValue_FieldMask{}
  1583  	removedSelectors := make([]bool, 1)
  1584  
  1585  	for _, path := range other.GetPaths() {
  1586  		switch tp := path.(type) {
  1587  		case *ScopeParamStringValue_FieldTerminalPath:
  1588  			removedSelectors[int(tp.selector)] = true
  1589  		}
  1590  	}
  1591  	for _, path := range fieldMask.GetPaths() {
  1592  		if !removedSelectors[int(path.Selector())] {
  1593  			result.Paths = append(result.Paths, path)
  1594  		}
  1595  	}
  1596  
  1597  	if len(result.Paths) == 0 {
  1598  		return nil
  1599  	}
  1600  	return result
  1601  }
  1602  
  1603  func (fieldMask *ScopeParam_StringValue_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
  1604  	return fieldMask.Subtract(other.(*ScopeParam_StringValue_FieldMask))
  1605  }
  1606  
  1607  // FilterInputFields generates copy of field paths with output_only field paths removed
  1608  func (fieldMask *ScopeParam_StringValue_FieldMask) FilterInputFields() *ScopeParam_StringValue_FieldMask {
  1609  	result := &ScopeParam_StringValue_FieldMask{}
  1610  	result.Paths = append(result.Paths, fieldMask.Paths...)
  1611  	return result
  1612  }
  1613  
  1614  // ToFieldMask is used for proto conversions
  1615  func (fieldMask *ScopeParam_StringValue_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
  1616  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1617  	for _, path := range fieldMask.Paths {
  1618  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
  1619  	}
  1620  	return protoFieldMask
  1621  }
  1622  
  1623  func (fieldMask *ScopeParam_StringValue_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
  1624  	if fieldMask == nil {
  1625  		return status.Error(codes.Internal, "target field mask is nil")
  1626  	}
  1627  	fieldMask.Paths = make([]ScopeParamStringValue_FieldPath, 0, len(protoFieldMask.Paths))
  1628  	for _, strPath := range protoFieldMask.Paths {
  1629  		path, err := ParseScopeParamStringValue_FieldPath(strPath)
  1630  		if err != nil {
  1631  			return err
  1632  		}
  1633  		fieldMask.Paths = append(fieldMask.Paths, path)
  1634  	}
  1635  	return nil
  1636  }
  1637  
  1638  // implement methods required by customType
  1639  func (fieldMask ScopeParam_StringValue_FieldMask) Marshal() ([]byte, error) {
  1640  	protoFieldMask := fieldMask.ToProtoFieldMask()
  1641  	return proto.Marshal(protoFieldMask)
  1642  }
  1643  
  1644  func (fieldMask *ScopeParam_StringValue_FieldMask) Unmarshal(data []byte) error {
  1645  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1646  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
  1647  		return err
  1648  	}
  1649  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  1650  		return err
  1651  	}
  1652  	return nil
  1653  }
  1654  
  1655  func (fieldMask *ScopeParam_StringValue_FieldMask) Size() int {
  1656  	return proto.Size(fieldMask.ToProtoFieldMask())
  1657  }
  1658  
  1659  func (fieldMask ScopeParam_StringValue_FieldMask) MarshalJSON() ([]byte, error) {
  1660  	return json.Marshal(fieldMask.ToProtoFieldMask())
  1661  }
  1662  
  1663  func (fieldMask *ScopeParam_StringValue_FieldMask) UnmarshalJSON(data []byte) error {
  1664  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1665  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
  1666  		return err
  1667  	}
  1668  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  1669  		return err
  1670  	}
  1671  	return nil
  1672  }
  1673  
  1674  func (fieldMask *ScopeParam_StringValue_FieldMask) AppendPath(path ScopeParamStringValue_FieldPath) {
  1675  	fieldMask.Paths = append(fieldMask.Paths, path)
  1676  }
  1677  
  1678  func (fieldMask *ScopeParam_StringValue_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
  1679  	fieldMask.Paths = append(fieldMask.Paths, path.(ScopeParamStringValue_FieldPath))
  1680  }
  1681  
  1682  func (fieldMask *ScopeParam_StringValue_FieldMask) GetPaths() []ScopeParamStringValue_FieldPath {
  1683  	if fieldMask == nil {
  1684  		return nil
  1685  	}
  1686  	return fieldMask.Paths
  1687  }
  1688  
  1689  func (fieldMask *ScopeParam_StringValue_FieldMask) GetRawPaths() []gotenobject.FieldPath {
  1690  	if fieldMask == nil {
  1691  		return nil
  1692  	}
  1693  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
  1694  	for _, path := range fieldMask.Paths {
  1695  		rawPaths = append(rawPaths, path)
  1696  	}
  1697  	return rawPaths
  1698  }
  1699  
  1700  func (fieldMask *ScopeParam_StringValue_FieldMask) SetFromCliFlag(raw string) error {
  1701  	path, err := ParseScopeParamStringValue_FieldPath(raw)
  1702  	if err != nil {
  1703  		return err
  1704  	}
  1705  	fieldMask.Paths = append(fieldMask.Paths, path)
  1706  	return nil
  1707  }
  1708  
  1709  func (fieldMask *ScopeParam_StringValue_FieldMask) Set(target, source *ScopeParam_StringValue) {
  1710  	for _, path := range fieldMask.Paths {
  1711  		val, _ := path.GetSingle(source)
  1712  		// if val is nil, then field does not exist in source, skip
  1713  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
  1714  		if val != nil {
  1715  			path.WithIValue(val).SetTo(&target)
  1716  		}
  1717  	}
  1718  }
  1719  
  1720  func (fieldMask *ScopeParam_StringValue_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
  1721  	fieldMask.Set(target.(*ScopeParam_StringValue), source.(*ScopeParam_StringValue))
  1722  }
  1723  
  1724  func (fieldMask *ScopeParam_StringValue_FieldMask) Project(source *ScopeParam_StringValue) *ScopeParam_StringValue {
  1725  	if source == nil {
  1726  		return nil
  1727  	}
  1728  	if fieldMask == nil {
  1729  		return source
  1730  	}
  1731  	result := &ScopeParam_StringValue{}
  1732  
  1733  	for _, p := range fieldMask.Paths {
  1734  		switch tp := p.(type) {
  1735  		case *ScopeParamStringValue_FieldTerminalPath:
  1736  			switch tp.selector {
  1737  			case ScopeParamStringValue_FieldPathSelectorValue:
  1738  				result.Value = source.Value
  1739  			}
  1740  		}
  1741  	}
  1742  	return result
  1743  }
  1744  
  1745  func (fieldMask *ScopeParam_StringValue_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
  1746  	return fieldMask.Project(source.(*ScopeParam_StringValue))
  1747  }
  1748  
  1749  func (fieldMask *ScopeParam_StringValue_FieldMask) PathsCount() int {
  1750  	if fieldMask == nil {
  1751  		return 0
  1752  	}
  1753  	return len(fieldMask.Paths)
  1754  }
  1755  
  1756  type ScopeParam_ArrayOfStringsValue_FieldMask struct {
  1757  	Paths []ScopeParamArrayOfStringsValue_FieldPath
  1758  }
  1759  
  1760  func FullScopeParam_ArrayOfStringsValue_FieldMask() *ScopeParam_ArrayOfStringsValue_FieldMask {
  1761  	res := &ScopeParam_ArrayOfStringsValue_FieldMask{}
  1762  	res.Paths = append(res.Paths, &ScopeParamArrayOfStringsValue_FieldTerminalPath{selector: ScopeParamArrayOfStringsValue_FieldPathSelectorValues})
  1763  	return res
  1764  }
  1765  
  1766  func (fieldMask *ScopeParam_ArrayOfStringsValue_FieldMask) String() string {
  1767  	if fieldMask == nil {
  1768  		return "<nil>"
  1769  	}
  1770  	pathsStr := make([]string, 0, len(fieldMask.Paths))
  1771  	for _, path := range fieldMask.Paths {
  1772  		pathsStr = append(pathsStr, path.String())
  1773  	}
  1774  	return strings.Join(pathsStr, ", ")
  1775  }
  1776  
  1777  func (fieldMask *ScopeParam_ArrayOfStringsValue_FieldMask) IsFull() bool {
  1778  	if fieldMask == nil {
  1779  		return false
  1780  	}
  1781  	presentSelectors := make([]bool, 1)
  1782  	for _, path := range fieldMask.Paths {
  1783  		if asFinal, ok := path.(*ScopeParamArrayOfStringsValue_FieldTerminalPath); ok {
  1784  			presentSelectors[int(asFinal.selector)] = true
  1785  		}
  1786  	}
  1787  	for _, flag := range presentSelectors {
  1788  		if !flag {
  1789  			return false
  1790  		}
  1791  	}
  1792  	return true
  1793  }
  1794  
  1795  func (fieldMask *ScopeParam_ArrayOfStringsValue_FieldMask) ProtoReflect() preflect.Message {
  1796  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
  1797  		return ParseScopeParamArrayOfStringsValue_FieldPath(raw)
  1798  	})
  1799  }
  1800  
  1801  func (fieldMask *ScopeParam_ArrayOfStringsValue_FieldMask) ProtoMessage() {}
  1802  
  1803  func (fieldMask *ScopeParam_ArrayOfStringsValue_FieldMask) Reset() {
  1804  	if fieldMask != nil {
  1805  		fieldMask.Paths = nil
  1806  	}
  1807  }
  1808  
  1809  func (fieldMask *ScopeParam_ArrayOfStringsValue_FieldMask) Subtract(other *ScopeParam_ArrayOfStringsValue_FieldMask) *ScopeParam_ArrayOfStringsValue_FieldMask {
  1810  	result := &ScopeParam_ArrayOfStringsValue_FieldMask{}
  1811  	removedSelectors := make([]bool, 1)
  1812  
  1813  	for _, path := range other.GetPaths() {
  1814  		switch tp := path.(type) {
  1815  		case *ScopeParamArrayOfStringsValue_FieldTerminalPath:
  1816  			removedSelectors[int(tp.selector)] = true
  1817  		}
  1818  	}
  1819  	for _, path := range fieldMask.GetPaths() {
  1820  		if !removedSelectors[int(path.Selector())] {
  1821  			result.Paths = append(result.Paths, path)
  1822  		}
  1823  	}
  1824  
  1825  	if len(result.Paths) == 0 {
  1826  		return nil
  1827  	}
  1828  	return result
  1829  }
  1830  
  1831  func (fieldMask *ScopeParam_ArrayOfStringsValue_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
  1832  	return fieldMask.Subtract(other.(*ScopeParam_ArrayOfStringsValue_FieldMask))
  1833  }
  1834  
  1835  // FilterInputFields generates copy of field paths with output_only field paths removed
  1836  func (fieldMask *ScopeParam_ArrayOfStringsValue_FieldMask) FilterInputFields() *ScopeParam_ArrayOfStringsValue_FieldMask {
  1837  	result := &ScopeParam_ArrayOfStringsValue_FieldMask{}
  1838  	result.Paths = append(result.Paths, fieldMask.Paths...)
  1839  	return result
  1840  }
  1841  
  1842  // ToFieldMask is used for proto conversions
  1843  func (fieldMask *ScopeParam_ArrayOfStringsValue_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
  1844  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1845  	for _, path := range fieldMask.Paths {
  1846  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
  1847  	}
  1848  	return protoFieldMask
  1849  }
  1850  
  1851  func (fieldMask *ScopeParam_ArrayOfStringsValue_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
  1852  	if fieldMask == nil {
  1853  		return status.Error(codes.Internal, "target field mask is nil")
  1854  	}
  1855  	fieldMask.Paths = make([]ScopeParamArrayOfStringsValue_FieldPath, 0, len(protoFieldMask.Paths))
  1856  	for _, strPath := range protoFieldMask.Paths {
  1857  		path, err := ParseScopeParamArrayOfStringsValue_FieldPath(strPath)
  1858  		if err != nil {
  1859  			return err
  1860  		}
  1861  		fieldMask.Paths = append(fieldMask.Paths, path)
  1862  	}
  1863  	return nil
  1864  }
  1865  
  1866  // implement methods required by customType
  1867  func (fieldMask ScopeParam_ArrayOfStringsValue_FieldMask) Marshal() ([]byte, error) {
  1868  	protoFieldMask := fieldMask.ToProtoFieldMask()
  1869  	return proto.Marshal(protoFieldMask)
  1870  }
  1871  
  1872  func (fieldMask *ScopeParam_ArrayOfStringsValue_FieldMask) Unmarshal(data []byte) error {
  1873  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1874  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
  1875  		return err
  1876  	}
  1877  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  1878  		return err
  1879  	}
  1880  	return nil
  1881  }
  1882  
  1883  func (fieldMask *ScopeParam_ArrayOfStringsValue_FieldMask) Size() int {
  1884  	return proto.Size(fieldMask.ToProtoFieldMask())
  1885  }
  1886  
  1887  func (fieldMask ScopeParam_ArrayOfStringsValue_FieldMask) MarshalJSON() ([]byte, error) {
  1888  	return json.Marshal(fieldMask.ToProtoFieldMask())
  1889  }
  1890  
  1891  func (fieldMask *ScopeParam_ArrayOfStringsValue_FieldMask) UnmarshalJSON(data []byte) error {
  1892  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  1893  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
  1894  		return err
  1895  	}
  1896  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  1897  		return err
  1898  	}
  1899  	return nil
  1900  }
  1901  
  1902  func (fieldMask *ScopeParam_ArrayOfStringsValue_FieldMask) AppendPath(path ScopeParamArrayOfStringsValue_FieldPath) {
  1903  	fieldMask.Paths = append(fieldMask.Paths, path)
  1904  }
  1905  
  1906  func (fieldMask *ScopeParam_ArrayOfStringsValue_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
  1907  	fieldMask.Paths = append(fieldMask.Paths, path.(ScopeParamArrayOfStringsValue_FieldPath))
  1908  }
  1909  
  1910  func (fieldMask *ScopeParam_ArrayOfStringsValue_FieldMask) GetPaths() []ScopeParamArrayOfStringsValue_FieldPath {
  1911  	if fieldMask == nil {
  1912  		return nil
  1913  	}
  1914  	return fieldMask.Paths
  1915  }
  1916  
  1917  func (fieldMask *ScopeParam_ArrayOfStringsValue_FieldMask) GetRawPaths() []gotenobject.FieldPath {
  1918  	if fieldMask == nil {
  1919  		return nil
  1920  	}
  1921  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
  1922  	for _, path := range fieldMask.Paths {
  1923  		rawPaths = append(rawPaths, path)
  1924  	}
  1925  	return rawPaths
  1926  }
  1927  
  1928  func (fieldMask *ScopeParam_ArrayOfStringsValue_FieldMask) SetFromCliFlag(raw string) error {
  1929  	path, err := ParseScopeParamArrayOfStringsValue_FieldPath(raw)
  1930  	if err != nil {
  1931  		return err
  1932  	}
  1933  	fieldMask.Paths = append(fieldMask.Paths, path)
  1934  	return nil
  1935  }
  1936  
  1937  func (fieldMask *ScopeParam_ArrayOfStringsValue_FieldMask) Set(target, source *ScopeParam_ArrayOfStringsValue) {
  1938  	for _, path := range fieldMask.Paths {
  1939  		val, _ := path.GetSingle(source)
  1940  		// if val is nil, then field does not exist in source, skip
  1941  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
  1942  		if val != nil {
  1943  			path.WithIValue(val).SetTo(&target)
  1944  		}
  1945  	}
  1946  }
  1947  
  1948  func (fieldMask *ScopeParam_ArrayOfStringsValue_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
  1949  	fieldMask.Set(target.(*ScopeParam_ArrayOfStringsValue), source.(*ScopeParam_ArrayOfStringsValue))
  1950  }
  1951  
  1952  func (fieldMask *ScopeParam_ArrayOfStringsValue_FieldMask) Project(source *ScopeParam_ArrayOfStringsValue) *ScopeParam_ArrayOfStringsValue {
  1953  	if source == nil {
  1954  		return nil
  1955  	}
  1956  	if fieldMask == nil {
  1957  		return source
  1958  	}
  1959  	result := &ScopeParam_ArrayOfStringsValue{}
  1960  
  1961  	for _, p := range fieldMask.Paths {
  1962  		switch tp := p.(type) {
  1963  		case *ScopeParamArrayOfStringsValue_FieldTerminalPath:
  1964  			switch tp.selector {
  1965  			case ScopeParamArrayOfStringsValue_FieldPathSelectorValues:
  1966  				result.Values = source.Values
  1967  			}
  1968  		}
  1969  	}
  1970  	return result
  1971  }
  1972  
  1973  func (fieldMask *ScopeParam_ArrayOfStringsValue_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
  1974  	return fieldMask.Project(source.(*ScopeParam_ArrayOfStringsValue))
  1975  }
  1976  
  1977  func (fieldMask *ScopeParam_ArrayOfStringsValue_FieldMask) PathsCount() int {
  1978  	if fieldMask == nil {
  1979  		return 0
  1980  	}
  1981  	return len(fieldMask.Paths)
  1982  }
  1983  
  1984  type ScopeParam_FromValue_FieldMask struct {
  1985  	Paths []ScopeParamFromValue_FieldPath
  1986  }
  1987  
  1988  func FullScopeParam_FromValue_FieldMask() *ScopeParam_FromValue_FieldMask {
  1989  	res := &ScopeParam_FromValue_FieldMask{}
  1990  	res.Paths = append(res.Paths, &ScopeParamFromValue_FieldTerminalPath{selector: ScopeParamFromValue_FieldPathSelectorSource})
  1991  	res.Paths = append(res.Paths, &ScopeParamFromValue_FieldTerminalPath{selector: ScopeParamFromValue_FieldPathSelectorPath})
  1992  	return res
  1993  }
  1994  
  1995  func (fieldMask *ScopeParam_FromValue_FieldMask) String() string {
  1996  	if fieldMask == nil {
  1997  		return "<nil>"
  1998  	}
  1999  	pathsStr := make([]string, 0, len(fieldMask.Paths))
  2000  	for _, path := range fieldMask.Paths {
  2001  		pathsStr = append(pathsStr, path.String())
  2002  	}
  2003  	return strings.Join(pathsStr, ", ")
  2004  }
  2005  
  2006  func (fieldMask *ScopeParam_FromValue_FieldMask) IsFull() bool {
  2007  	if fieldMask == nil {
  2008  		return false
  2009  	}
  2010  	presentSelectors := make([]bool, 2)
  2011  	for _, path := range fieldMask.Paths {
  2012  		if asFinal, ok := path.(*ScopeParamFromValue_FieldTerminalPath); ok {
  2013  			presentSelectors[int(asFinal.selector)] = true
  2014  		}
  2015  	}
  2016  	for _, flag := range presentSelectors {
  2017  		if !flag {
  2018  			return false
  2019  		}
  2020  	}
  2021  	return true
  2022  }
  2023  
  2024  func (fieldMask *ScopeParam_FromValue_FieldMask) ProtoReflect() preflect.Message {
  2025  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
  2026  		return ParseScopeParamFromValue_FieldPath(raw)
  2027  	})
  2028  }
  2029  
  2030  func (fieldMask *ScopeParam_FromValue_FieldMask) ProtoMessage() {}
  2031  
  2032  func (fieldMask *ScopeParam_FromValue_FieldMask) Reset() {
  2033  	if fieldMask != nil {
  2034  		fieldMask.Paths = nil
  2035  	}
  2036  }
  2037  
  2038  func (fieldMask *ScopeParam_FromValue_FieldMask) Subtract(other *ScopeParam_FromValue_FieldMask) *ScopeParam_FromValue_FieldMask {
  2039  	result := &ScopeParam_FromValue_FieldMask{}
  2040  	removedSelectors := make([]bool, 2)
  2041  
  2042  	for _, path := range other.GetPaths() {
  2043  		switch tp := path.(type) {
  2044  		case *ScopeParamFromValue_FieldTerminalPath:
  2045  			removedSelectors[int(tp.selector)] = true
  2046  		}
  2047  	}
  2048  	for _, path := range fieldMask.GetPaths() {
  2049  		if !removedSelectors[int(path.Selector())] {
  2050  			result.Paths = append(result.Paths, path)
  2051  		}
  2052  	}
  2053  
  2054  	if len(result.Paths) == 0 {
  2055  		return nil
  2056  	}
  2057  	return result
  2058  }
  2059  
  2060  func (fieldMask *ScopeParam_FromValue_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
  2061  	return fieldMask.Subtract(other.(*ScopeParam_FromValue_FieldMask))
  2062  }
  2063  
  2064  // FilterInputFields generates copy of field paths with output_only field paths removed
  2065  func (fieldMask *ScopeParam_FromValue_FieldMask) FilterInputFields() *ScopeParam_FromValue_FieldMask {
  2066  	result := &ScopeParam_FromValue_FieldMask{}
  2067  	result.Paths = append(result.Paths, fieldMask.Paths...)
  2068  	return result
  2069  }
  2070  
  2071  // ToFieldMask is used for proto conversions
  2072  func (fieldMask *ScopeParam_FromValue_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
  2073  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  2074  	for _, path := range fieldMask.Paths {
  2075  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
  2076  	}
  2077  	return protoFieldMask
  2078  }
  2079  
  2080  func (fieldMask *ScopeParam_FromValue_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
  2081  	if fieldMask == nil {
  2082  		return status.Error(codes.Internal, "target field mask is nil")
  2083  	}
  2084  	fieldMask.Paths = make([]ScopeParamFromValue_FieldPath, 0, len(protoFieldMask.Paths))
  2085  	for _, strPath := range protoFieldMask.Paths {
  2086  		path, err := ParseScopeParamFromValue_FieldPath(strPath)
  2087  		if err != nil {
  2088  			return err
  2089  		}
  2090  		fieldMask.Paths = append(fieldMask.Paths, path)
  2091  	}
  2092  	return nil
  2093  }
  2094  
  2095  // implement methods required by customType
  2096  func (fieldMask ScopeParam_FromValue_FieldMask) Marshal() ([]byte, error) {
  2097  	protoFieldMask := fieldMask.ToProtoFieldMask()
  2098  	return proto.Marshal(protoFieldMask)
  2099  }
  2100  
  2101  func (fieldMask *ScopeParam_FromValue_FieldMask) Unmarshal(data []byte) error {
  2102  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  2103  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
  2104  		return err
  2105  	}
  2106  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  2107  		return err
  2108  	}
  2109  	return nil
  2110  }
  2111  
  2112  func (fieldMask *ScopeParam_FromValue_FieldMask) Size() int {
  2113  	return proto.Size(fieldMask.ToProtoFieldMask())
  2114  }
  2115  
  2116  func (fieldMask ScopeParam_FromValue_FieldMask) MarshalJSON() ([]byte, error) {
  2117  	return json.Marshal(fieldMask.ToProtoFieldMask())
  2118  }
  2119  
  2120  func (fieldMask *ScopeParam_FromValue_FieldMask) UnmarshalJSON(data []byte) error {
  2121  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
  2122  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
  2123  		return err
  2124  	}
  2125  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
  2126  		return err
  2127  	}
  2128  	return nil
  2129  }
  2130  
  2131  func (fieldMask *ScopeParam_FromValue_FieldMask) AppendPath(path ScopeParamFromValue_FieldPath) {
  2132  	fieldMask.Paths = append(fieldMask.Paths, path)
  2133  }
  2134  
  2135  func (fieldMask *ScopeParam_FromValue_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
  2136  	fieldMask.Paths = append(fieldMask.Paths, path.(ScopeParamFromValue_FieldPath))
  2137  }
  2138  
  2139  func (fieldMask *ScopeParam_FromValue_FieldMask) GetPaths() []ScopeParamFromValue_FieldPath {
  2140  	if fieldMask == nil {
  2141  		return nil
  2142  	}
  2143  	return fieldMask.Paths
  2144  }
  2145  
  2146  func (fieldMask *ScopeParam_FromValue_FieldMask) GetRawPaths() []gotenobject.FieldPath {
  2147  	if fieldMask == nil {
  2148  		return nil
  2149  	}
  2150  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
  2151  	for _, path := range fieldMask.Paths {
  2152  		rawPaths = append(rawPaths, path)
  2153  	}
  2154  	return rawPaths
  2155  }
  2156  
  2157  func (fieldMask *ScopeParam_FromValue_FieldMask) SetFromCliFlag(raw string) error {
  2158  	path, err := ParseScopeParamFromValue_FieldPath(raw)
  2159  	if err != nil {
  2160  		return err
  2161  	}
  2162  	fieldMask.Paths = append(fieldMask.Paths, path)
  2163  	return nil
  2164  }
  2165  
  2166  func (fieldMask *ScopeParam_FromValue_FieldMask) Set(target, source *ScopeParam_FromValue) {
  2167  	for _, path := range fieldMask.Paths {
  2168  		val, _ := path.GetSingle(source)
  2169  		// if val is nil, then field does not exist in source, skip
  2170  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
  2171  		if val != nil {
  2172  			path.WithIValue(val).SetTo(&target)
  2173  		}
  2174  	}
  2175  }
  2176  
  2177  func (fieldMask *ScopeParam_FromValue_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
  2178  	fieldMask.Set(target.(*ScopeParam_FromValue), source.(*ScopeParam_FromValue))
  2179  }
  2180  
  2181  func (fieldMask *ScopeParam_FromValue_FieldMask) Project(source *ScopeParam_FromValue) *ScopeParam_FromValue {
  2182  	if source == nil {
  2183  		return nil
  2184  	}
  2185  	if fieldMask == nil {
  2186  		return source
  2187  	}
  2188  	result := &ScopeParam_FromValue{}
  2189  
  2190  	for _, p := range fieldMask.Paths {
  2191  		switch tp := p.(type) {
  2192  		case *ScopeParamFromValue_FieldTerminalPath:
  2193  			switch tp.selector {
  2194  			case ScopeParamFromValue_FieldPathSelectorSource:
  2195  				result.Source = source.Source
  2196  			case ScopeParamFromValue_FieldPathSelectorPath:
  2197  				result.Path = source.Path
  2198  			}
  2199  		}
  2200  	}
  2201  	return result
  2202  }
  2203  
  2204  func (fieldMask *ScopeParam_FromValue_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
  2205  	return fieldMask.Project(source.(*ScopeParam_FromValue))
  2206  }
  2207  
  2208  func (fieldMask *ScopeParam_FromValue_FieldMask) PathsCount() int {
  2209  	if fieldMask == nil {
  2210  		return 0
  2211  	}
  2212  	return len(fieldMask.Paths)
  2213  }