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

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/iam/proto/v1/project.proto
     3  // DO NOT EDIT!!!
     4  
     5  package project
     6  
     7  import (
     8  	"encoding/json"
     9  	"fmt"
    10  	"reflect"
    11  	"strings"
    12  	"time"
    13  
    14  	"google.golang.org/grpc/codes"
    15  	"google.golang.org/grpc/status"
    16  	"google.golang.org/protobuf/encoding/protojson"
    17  	"google.golang.org/protobuf/proto"
    18  	"google.golang.org/protobuf/reflect/protoregistry"
    19  
    20  	gotenobject "github.com/cloudwan/goten-sdk/runtime/object"
    21  	"github.com/cloudwan/goten-sdk/runtime/strcase"
    22  )
    23  
    24  // proto imports
    25  import (
    26  	iam_common "github.com/cloudwan/edgelq-sdk/iam/resources/v1/common"
    27  	organization "github.com/cloudwan/edgelq-sdk/iam/resources/v1/organization"
    28  	meta_service "github.com/cloudwan/goten-sdk/meta-service/resources/v1/service"
    29  	meta "github.com/cloudwan/goten-sdk/types/meta"
    30  	multi_region_policy "github.com/cloudwan/goten-sdk/types/multi_region_policy"
    31  )
    32  
    33  // ensure the imports are used
    34  var (
    35  	_ = new(json.Marshaler)
    36  	_ = new(fmt.Stringer)
    37  	_ = reflect.DeepEqual
    38  	_ = strings.Builder{}
    39  	_ = time.Second
    40  
    41  	_ = strcase.ToLowerCamel
    42  	_ = codes.NotFound
    43  	_ = status.Status{}
    44  	_ = protojson.UnmarshalOptions{}
    45  	_ = new(proto.Message)
    46  	_ = protoregistry.GlobalTypes
    47  
    48  	_ = new(gotenobject.FieldPath)
    49  )
    50  
    51  // make sure we're using proto imports
    52  var (
    53  	_ = &iam_common.PCR{}
    54  	_ = &organization.Organization{}
    55  	_ = &meta_service.Service{}
    56  	_ = &meta.Meta{}
    57  	_ = &multi_region_policy.MultiRegionPolicy{}
    58  )
    59  
    60  // FieldPath provides implementation to handle
    61  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
    62  type Project_FieldPath interface {
    63  	gotenobject.FieldPath
    64  	Selector() Project_FieldPathSelector
    65  	Get(source *Project) []interface{}
    66  	GetSingle(source *Project) (interface{}, bool)
    67  	ClearValue(item *Project)
    68  
    69  	// Those methods build corresponding Project_FieldPathValue
    70  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
    71  	WithIValue(value interface{}) Project_FieldPathValue
    72  	WithIArrayOfValues(values interface{}) Project_FieldPathArrayOfValues
    73  	WithIArrayItemValue(value interface{}) Project_FieldPathArrayItemValue
    74  }
    75  
    76  type Project_FieldPathSelector int32
    77  
    78  const (
    79  	Project_FieldPathSelectorName               Project_FieldPathSelector = 0
    80  	Project_FieldPathSelectorMetadata           Project_FieldPathSelector = 1
    81  	Project_FieldPathSelectorTitle              Project_FieldPathSelector = 2
    82  	Project_FieldPathSelectorDescription        Project_FieldPathSelector = 3
    83  	Project_FieldPathSelectorParentOrganization Project_FieldPathSelector = 4
    84  	Project_FieldPathSelectorMultiRegionPolicy  Project_FieldPathSelector = 5
    85  	Project_FieldPathSelectorEnabledServices    Project_FieldPathSelector = 6
    86  	Project_FieldPathSelectorBusinessTier       Project_FieldPathSelector = 7
    87  	Project_FieldPathSelectorServiceTiers       Project_FieldPathSelector = 8
    88  	Project_FieldPathSelectorRootOrganization   Project_FieldPathSelector = 9
    89  	Project_FieldPathSelectorAncestryPath       Project_FieldPathSelector = 10
    90  	Project_FieldPathSelectorServiceErrors      Project_FieldPathSelector = 11
    91  	Project_FieldPathSelectorServicesGeneration Project_FieldPathSelector = 12
    92  )
    93  
    94  func (s Project_FieldPathSelector) String() string {
    95  	switch s {
    96  	case Project_FieldPathSelectorName:
    97  		return "name"
    98  	case Project_FieldPathSelectorMetadata:
    99  		return "metadata"
   100  	case Project_FieldPathSelectorTitle:
   101  		return "title"
   102  	case Project_FieldPathSelectorDescription:
   103  		return "description"
   104  	case Project_FieldPathSelectorParentOrganization:
   105  		return "parent_organization"
   106  	case Project_FieldPathSelectorMultiRegionPolicy:
   107  		return "multi_region_policy"
   108  	case Project_FieldPathSelectorEnabledServices:
   109  		return "enabled_services"
   110  	case Project_FieldPathSelectorBusinessTier:
   111  		return "business_tier"
   112  	case Project_FieldPathSelectorServiceTiers:
   113  		return "service_tiers"
   114  	case Project_FieldPathSelectorRootOrganization:
   115  		return "root_organization"
   116  	case Project_FieldPathSelectorAncestryPath:
   117  		return "ancestry_path"
   118  	case Project_FieldPathSelectorServiceErrors:
   119  		return "service_errors"
   120  	case Project_FieldPathSelectorServicesGeneration:
   121  		return "services_generation"
   122  	default:
   123  		panic(fmt.Sprintf("Invalid selector for Project: %d", s))
   124  	}
   125  }
   126  
   127  func BuildProject_FieldPath(fp gotenobject.RawFieldPath) (Project_FieldPath, error) {
   128  	if len(fp) == 0 {
   129  		return nil, status.Error(codes.InvalidArgument, "empty field path for object Project")
   130  	}
   131  	if len(fp) == 1 {
   132  		switch fp[0] {
   133  		case "name":
   134  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorName}, nil
   135  		case "metadata":
   136  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorMetadata}, nil
   137  		case "title":
   138  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorTitle}, nil
   139  		case "description":
   140  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorDescription}, nil
   141  		case "parent_organization", "parentOrganization", "parent-organization":
   142  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorParentOrganization}, nil
   143  		case "multi_region_policy", "multiRegionPolicy", "multi-region-policy":
   144  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorMultiRegionPolicy}, nil
   145  		case "enabled_services", "enabledServices", "enabled-services":
   146  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorEnabledServices}, nil
   147  		case "business_tier", "businessTier", "business-tier":
   148  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorBusinessTier}, nil
   149  		case "service_tiers", "serviceTiers", "service-tiers":
   150  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorServiceTiers}, nil
   151  		case "root_organization", "rootOrganization", "root-organization":
   152  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorRootOrganization}, nil
   153  		case "ancestry_path", "ancestryPath", "ancestry-path":
   154  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorAncestryPath}, nil
   155  		case "service_errors", "serviceErrors", "service-errors":
   156  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorServiceErrors}, nil
   157  		case "services_generation", "servicesGeneration", "services-generation":
   158  			return &Project_FieldTerminalPath{selector: Project_FieldPathSelectorServicesGeneration}, nil
   159  		}
   160  	} else {
   161  		switch fp[0] {
   162  		case "metadata":
   163  			if subpath, err := meta.BuildMeta_FieldPath(fp[1:]); err != nil {
   164  				return nil, err
   165  			} else {
   166  				return &Project_FieldSubPath{selector: Project_FieldPathSelectorMetadata, subPath: subpath}, nil
   167  			}
   168  		case "multi_region_policy", "multiRegionPolicy", "multi-region-policy":
   169  			if subpath, err := multi_region_policy.BuildMultiRegionPolicy_FieldPath(fp[1:]); err != nil {
   170  				return nil, err
   171  			} else {
   172  				return &Project_FieldSubPath{selector: Project_FieldPathSelectorMultiRegionPolicy, subPath: subpath}, nil
   173  			}
   174  		case "service_tiers", "serviceTiers", "service-tiers":
   175  			if subpath, err := iam_common.BuildServiceBusinessTier_FieldPath(fp[1:]); err != nil {
   176  				return nil, err
   177  			} else {
   178  				return &Project_FieldSubPath{selector: Project_FieldPathSelectorServiceTiers, subPath: subpath}, nil
   179  			}
   180  		case "service_errors", "serviceErrors", "service-errors":
   181  			if len(fp) > 2 {
   182  				return nil, status.Errorf(codes.InvalidArgument, "sub path for maps ('%s') are not supported (object Project)", fp)
   183  			}
   184  			return &Project_FieldPathMap{selector: Project_FieldPathSelectorServiceErrors, key: fp[1]}, nil
   185  		}
   186  	}
   187  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object Project", fp)
   188  }
   189  
   190  func ParseProject_FieldPath(rawField string) (Project_FieldPath, error) {
   191  	fp, err := gotenobject.ParseRawFieldPath(rawField)
   192  	if err != nil {
   193  		return nil, err
   194  	}
   195  	return BuildProject_FieldPath(fp)
   196  }
   197  
   198  func MustParseProject_FieldPath(rawField string) Project_FieldPath {
   199  	fp, err := ParseProject_FieldPath(rawField)
   200  	if err != nil {
   201  		panic(err)
   202  	}
   203  	return fp
   204  }
   205  
   206  type Project_FieldTerminalPath struct {
   207  	selector Project_FieldPathSelector
   208  }
   209  
   210  var _ Project_FieldPath = (*Project_FieldTerminalPath)(nil)
   211  
   212  func (fp *Project_FieldTerminalPath) Selector() Project_FieldPathSelector {
   213  	return fp.selector
   214  }
   215  
   216  // String returns path representation in proto convention
   217  func (fp *Project_FieldTerminalPath) String() string {
   218  	return fp.selector.String()
   219  }
   220  
   221  // JSONString returns path representation is JSON convention
   222  func (fp *Project_FieldTerminalPath) JSONString() string {
   223  	return strcase.ToLowerCamel(fp.String())
   224  }
   225  
   226  // Get returns all values pointed by specific field from source Project
   227  func (fp *Project_FieldTerminalPath) Get(source *Project) (values []interface{}) {
   228  	if source != nil {
   229  		switch fp.selector {
   230  		case Project_FieldPathSelectorName:
   231  			if source.Name != nil {
   232  				values = append(values, source.Name)
   233  			}
   234  		case Project_FieldPathSelectorMetadata:
   235  			if source.Metadata != nil {
   236  				values = append(values, source.Metadata)
   237  			}
   238  		case Project_FieldPathSelectorTitle:
   239  			values = append(values, source.Title)
   240  		case Project_FieldPathSelectorDescription:
   241  			values = append(values, source.Description)
   242  		case Project_FieldPathSelectorParentOrganization:
   243  			if source.ParentOrganization != nil {
   244  				values = append(values, source.ParentOrganization)
   245  			}
   246  		case Project_FieldPathSelectorMultiRegionPolicy:
   247  			if source.MultiRegionPolicy != nil {
   248  				values = append(values, source.MultiRegionPolicy)
   249  			}
   250  		case Project_FieldPathSelectorEnabledServices:
   251  			for _, value := range source.GetEnabledServices() {
   252  				values = append(values, value)
   253  			}
   254  		case Project_FieldPathSelectorBusinessTier:
   255  			values = append(values, source.BusinessTier)
   256  		case Project_FieldPathSelectorServiceTiers:
   257  			for _, value := range source.GetServiceTiers() {
   258  				values = append(values, value)
   259  			}
   260  		case Project_FieldPathSelectorRootOrganization:
   261  			if source.RootOrganization != nil {
   262  				values = append(values, source.RootOrganization)
   263  			}
   264  		case Project_FieldPathSelectorAncestryPath:
   265  			for _, value := range source.GetAncestryPath() {
   266  				values = append(values, value)
   267  			}
   268  		case Project_FieldPathSelectorServiceErrors:
   269  			if source.ServiceErrors != nil {
   270  				values = append(values, source.ServiceErrors)
   271  			}
   272  		case Project_FieldPathSelectorServicesGeneration:
   273  			values = append(values, source.ServicesGeneration)
   274  		default:
   275  			panic(fmt.Sprintf("Invalid selector for Project: %d", fp.selector))
   276  		}
   277  	}
   278  	return
   279  }
   280  
   281  func (fp *Project_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
   282  	return fp.Get(source.(*Project))
   283  }
   284  
   285  // GetSingle returns value pointed by specific field of from source Project
   286  func (fp *Project_FieldTerminalPath) GetSingle(source *Project) (interface{}, bool) {
   287  	switch fp.selector {
   288  	case Project_FieldPathSelectorName:
   289  		res := source.GetName()
   290  		return res, res != nil
   291  	case Project_FieldPathSelectorMetadata:
   292  		res := source.GetMetadata()
   293  		return res, res != nil
   294  	case Project_FieldPathSelectorTitle:
   295  		return source.GetTitle(), source != nil
   296  	case Project_FieldPathSelectorDescription:
   297  		return source.GetDescription(), source != nil
   298  	case Project_FieldPathSelectorParentOrganization:
   299  		res := source.GetParentOrganization()
   300  		return res, res != nil
   301  	case Project_FieldPathSelectorMultiRegionPolicy:
   302  		res := source.GetMultiRegionPolicy()
   303  		return res, res != nil
   304  	case Project_FieldPathSelectorEnabledServices:
   305  		res := source.GetEnabledServices()
   306  		return res, res != nil
   307  	case Project_FieldPathSelectorBusinessTier:
   308  		return source.GetBusinessTier(), source != nil
   309  	case Project_FieldPathSelectorServiceTiers:
   310  		res := source.GetServiceTiers()
   311  		return res, res != nil
   312  	case Project_FieldPathSelectorRootOrganization:
   313  		res := source.GetRootOrganization()
   314  		return res, res != nil
   315  	case Project_FieldPathSelectorAncestryPath:
   316  		res := source.GetAncestryPath()
   317  		return res, res != nil
   318  	case Project_FieldPathSelectorServiceErrors:
   319  		res := source.GetServiceErrors()
   320  		return res, res != nil
   321  	case Project_FieldPathSelectorServicesGeneration:
   322  		return source.GetServicesGeneration(), source != nil
   323  	default:
   324  		panic(fmt.Sprintf("Invalid selector for Project: %d", fp.selector))
   325  	}
   326  }
   327  
   328  func (fp *Project_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
   329  	return fp.GetSingle(source.(*Project))
   330  }
   331  
   332  // GetDefault returns a default value of the field type
   333  func (fp *Project_FieldTerminalPath) GetDefault() interface{} {
   334  	switch fp.selector {
   335  	case Project_FieldPathSelectorName:
   336  		return (*Name)(nil)
   337  	case Project_FieldPathSelectorMetadata:
   338  		return (*meta.Meta)(nil)
   339  	case Project_FieldPathSelectorTitle:
   340  		return ""
   341  	case Project_FieldPathSelectorDescription:
   342  		return ""
   343  	case Project_FieldPathSelectorParentOrganization:
   344  		return (*organization.Reference)(nil)
   345  	case Project_FieldPathSelectorMultiRegionPolicy:
   346  		return (*multi_region_policy.MultiRegionPolicy)(nil)
   347  	case Project_FieldPathSelectorEnabledServices:
   348  		return ([]*meta_service.Reference)(nil)
   349  	case Project_FieldPathSelectorBusinessTier:
   350  		return iam_common.BusinessTier_UNDEFINED
   351  	case Project_FieldPathSelectorServiceTiers:
   352  		return ([]*iam_common.ServiceBusinessTier)(nil)
   353  	case Project_FieldPathSelectorRootOrganization:
   354  		return (*organization.Name)(nil)
   355  	case Project_FieldPathSelectorAncestryPath:
   356  		return ([]*organization.Name)(nil)
   357  	case Project_FieldPathSelectorServiceErrors:
   358  		return (map[string]*iam_common.ServiceErrors)(nil)
   359  	case Project_FieldPathSelectorServicesGeneration:
   360  		return int64(0)
   361  	default:
   362  		panic(fmt.Sprintf("Invalid selector for Project: %d", fp.selector))
   363  	}
   364  }
   365  
   366  func (fp *Project_FieldTerminalPath) ClearValue(item *Project) {
   367  	if item != nil {
   368  		switch fp.selector {
   369  		case Project_FieldPathSelectorName:
   370  			item.Name = nil
   371  		case Project_FieldPathSelectorMetadata:
   372  			item.Metadata = nil
   373  		case Project_FieldPathSelectorTitle:
   374  			item.Title = ""
   375  		case Project_FieldPathSelectorDescription:
   376  			item.Description = ""
   377  		case Project_FieldPathSelectorParentOrganization:
   378  			item.ParentOrganization = nil
   379  		case Project_FieldPathSelectorMultiRegionPolicy:
   380  			item.MultiRegionPolicy = nil
   381  		case Project_FieldPathSelectorEnabledServices:
   382  			item.EnabledServices = nil
   383  		case Project_FieldPathSelectorBusinessTier:
   384  			item.BusinessTier = iam_common.BusinessTier_UNDEFINED
   385  		case Project_FieldPathSelectorServiceTiers:
   386  			item.ServiceTiers = nil
   387  		case Project_FieldPathSelectorRootOrganization:
   388  			item.RootOrganization = nil
   389  		case Project_FieldPathSelectorAncestryPath:
   390  			item.AncestryPath = nil
   391  		case Project_FieldPathSelectorServiceErrors:
   392  			item.ServiceErrors = nil
   393  		case Project_FieldPathSelectorServicesGeneration:
   394  			item.ServicesGeneration = int64(0)
   395  		default:
   396  			panic(fmt.Sprintf("Invalid selector for Project: %d", fp.selector))
   397  		}
   398  	}
   399  }
   400  
   401  func (fp *Project_FieldTerminalPath) ClearValueRaw(item proto.Message) {
   402  	fp.ClearValue(item.(*Project))
   403  }
   404  
   405  // IsLeaf - whether field path is holds simple value
   406  func (fp *Project_FieldTerminalPath) IsLeaf() bool {
   407  	return fp.selector == Project_FieldPathSelectorName ||
   408  		fp.selector == Project_FieldPathSelectorTitle ||
   409  		fp.selector == Project_FieldPathSelectorDescription ||
   410  		fp.selector == Project_FieldPathSelectorParentOrganization ||
   411  		fp.selector == Project_FieldPathSelectorEnabledServices ||
   412  		fp.selector == Project_FieldPathSelectorBusinessTier ||
   413  		fp.selector == Project_FieldPathSelectorRootOrganization ||
   414  		fp.selector == Project_FieldPathSelectorAncestryPath ||
   415  		fp.selector == Project_FieldPathSelectorServicesGeneration
   416  }
   417  
   418  func (fp *Project_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
   419  	return []gotenobject.FieldPath{fp}
   420  }
   421  
   422  func (fp *Project_FieldTerminalPath) WithIValue(value interface{}) Project_FieldPathValue {
   423  	switch fp.selector {
   424  	case Project_FieldPathSelectorName:
   425  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.(*Name)}
   426  	case Project_FieldPathSelectorMetadata:
   427  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.(*meta.Meta)}
   428  	case Project_FieldPathSelectorTitle:
   429  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.(string)}
   430  	case Project_FieldPathSelectorDescription:
   431  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.(string)}
   432  	case Project_FieldPathSelectorParentOrganization:
   433  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.(*organization.Reference)}
   434  	case Project_FieldPathSelectorMultiRegionPolicy:
   435  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.(*multi_region_policy.MultiRegionPolicy)}
   436  	case Project_FieldPathSelectorEnabledServices:
   437  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.([]*meta_service.Reference)}
   438  	case Project_FieldPathSelectorBusinessTier:
   439  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.(iam_common.BusinessTier)}
   440  	case Project_FieldPathSelectorServiceTiers:
   441  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.([]*iam_common.ServiceBusinessTier)}
   442  	case Project_FieldPathSelectorRootOrganization:
   443  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.(*organization.Name)}
   444  	case Project_FieldPathSelectorAncestryPath:
   445  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.([]*organization.Name)}
   446  	case Project_FieldPathSelectorServiceErrors:
   447  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.(map[string]*iam_common.ServiceErrors)}
   448  	case Project_FieldPathSelectorServicesGeneration:
   449  		return &Project_FieldTerminalPathValue{Project_FieldTerminalPath: *fp, value: value.(int64)}
   450  	default:
   451  		panic(fmt.Sprintf("Invalid selector for Project: %d", fp.selector))
   452  	}
   453  }
   454  
   455  func (fp *Project_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
   456  	return fp.WithIValue(value)
   457  }
   458  
   459  func (fp *Project_FieldTerminalPath) WithIArrayOfValues(values interface{}) Project_FieldPathArrayOfValues {
   460  	fpaov := &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp}
   461  	switch fp.selector {
   462  	case Project_FieldPathSelectorName:
   463  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([]*Name)}
   464  	case Project_FieldPathSelectorMetadata:
   465  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([]*meta.Meta)}
   466  	case Project_FieldPathSelectorTitle:
   467  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([]string)}
   468  	case Project_FieldPathSelectorDescription:
   469  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([]string)}
   470  	case Project_FieldPathSelectorParentOrganization:
   471  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([]*organization.Reference)}
   472  	case Project_FieldPathSelectorMultiRegionPolicy:
   473  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([]*multi_region_policy.MultiRegionPolicy)}
   474  	case Project_FieldPathSelectorEnabledServices:
   475  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([][]*meta_service.Reference)}
   476  	case Project_FieldPathSelectorBusinessTier:
   477  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([]iam_common.BusinessTier)}
   478  	case Project_FieldPathSelectorServiceTiers:
   479  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([][]*iam_common.ServiceBusinessTier)}
   480  	case Project_FieldPathSelectorRootOrganization:
   481  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([]*organization.Name)}
   482  	case Project_FieldPathSelectorAncestryPath:
   483  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([][]*organization.Name)}
   484  	case Project_FieldPathSelectorServiceErrors:
   485  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([]map[string]*iam_common.ServiceErrors)}
   486  	case Project_FieldPathSelectorServicesGeneration:
   487  		return &Project_FieldTerminalPathArrayOfValues{Project_FieldTerminalPath: *fp, values: values.([]int64)}
   488  	default:
   489  		panic(fmt.Sprintf("Invalid selector for Project: %d", fp.selector))
   490  	}
   491  	return fpaov
   492  }
   493  
   494  func (fp *Project_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
   495  	return fp.WithIArrayOfValues(values)
   496  }
   497  
   498  func (fp *Project_FieldTerminalPath) WithIArrayItemValue(value interface{}) Project_FieldPathArrayItemValue {
   499  	switch fp.selector {
   500  	case Project_FieldPathSelectorEnabledServices:
   501  		return &Project_FieldTerminalPathArrayItemValue{Project_FieldTerminalPath: *fp, value: value.(*meta_service.Reference)}
   502  	case Project_FieldPathSelectorServiceTiers:
   503  		return &Project_FieldTerminalPathArrayItemValue{Project_FieldTerminalPath: *fp, value: value.(*iam_common.ServiceBusinessTier)}
   504  	case Project_FieldPathSelectorAncestryPath:
   505  		return &Project_FieldTerminalPathArrayItemValue{Project_FieldTerminalPath: *fp, value: value.(*organization.Name)}
   506  	default:
   507  		panic(fmt.Sprintf("Invalid selector for Project: %d", fp.selector))
   508  	}
   509  }
   510  
   511  func (fp *Project_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   512  	return fp.WithIArrayItemValue(value)
   513  }
   514  
   515  // FieldPath for map type with additional Key information
   516  type Project_FieldPathMap struct {
   517  	key      string
   518  	selector Project_FieldPathSelector
   519  }
   520  
   521  var _ Project_FieldPath = (*Project_FieldPathMap)(nil)
   522  
   523  func (fpm *Project_FieldPathMap) Selector() Project_FieldPathSelector {
   524  	return fpm.selector
   525  }
   526  
   527  func (fpm *Project_FieldPathMap) Key() string {
   528  	return fpm.key
   529  }
   530  
   531  // String returns path representation in proto convention
   532  func (fpm *Project_FieldPathMap) String() string {
   533  	return fpm.selector.String() + "." + fpm.key
   534  }
   535  
   536  // JSONString returns path representation is JSON convention. Note that map keys are not transformed
   537  func (fpm *Project_FieldPathMap) JSONString() string {
   538  	return strcase.ToLowerCamel(fpm.selector.String()) + "." + fpm.key
   539  }
   540  
   541  // Get returns all values pointed by selected field map key from source Project
   542  func (fpm *Project_FieldPathMap) Get(source *Project) (values []interface{}) {
   543  	switch fpm.selector {
   544  	case Project_FieldPathSelectorServiceErrors:
   545  		if value, ok := source.GetServiceErrors()[fpm.key]; ok {
   546  			values = append(values, value)
   547  		}
   548  	default:
   549  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpm.selector))
   550  	}
   551  	return
   552  }
   553  
   554  func (fpm *Project_FieldPathMap) GetRaw(source proto.Message) []interface{} {
   555  	return fpm.Get(source.(*Project))
   556  }
   557  
   558  // GetSingle returns value by selected field map key from source Project
   559  func (fpm *Project_FieldPathMap) GetSingle(source *Project) (interface{}, bool) {
   560  	switch fpm.selector {
   561  	case Project_FieldPathSelectorServiceErrors:
   562  		res, ok := source.GetServiceErrors()[fpm.key]
   563  		return res, ok
   564  	default:
   565  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpm.selector))
   566  	}
   567  }
   568  
   569  func (fpm *Project_FieldPathMap) GetSingleRaw(source proto.Message) (interface{}, bool) {
   570  	return fpm.GetSingle(source.(*Project))
   571  }
   572  
   573  // GetDefault returns a default value of the field type
   574  func (fpm *Project_FieldPathMap) GetDefault() interface{} {
   575  	switch fpm.selector {
   576  	case Project_FieldPathSelectorServiceErrors:
   577  		var v *iam_common.ServiceErrors
   578  		return v
   579  	default:
   580  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpm.selector))
   581  	}
   582  }
   583  
   584  func (fpm *Project_FieldPathMap) ClearValue(item *Project) {
   585  	if item != nil {
   586  		switch fpm.selector {
   587  		case Project_FieldPathSelectorServiceErrors:
   588  			delete(item.ServiceErrors, fpm.key)
   589  		default:
   590  			panic(fmt.Sprintf("Invalid selector for Project: %d", fpm.selector))
   591  		}
   592  	}
   593  }
   594  
   595  func (fpm *Project_FieldPathMap) ClearValueRaw(item proto.Message) {
   596  	fpm.ClearValue(item.(*Project))
   597  }
   598  
   599  // IsLeaf - whether field path is holds simple value
   600  func (fpm *Project_FieldPathMap) IsLeaf() bool {
   601  	switch fpm.selector {
   602  	case Project_FieldPathSelectorServiceErrors:
   603  		return false
   604  	default:
   605  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpm.selector))
   606  	}
   607  }
   608  
   609  func (fpm *Project_FieldPathMap) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
   610  	return []gotenobject.FieldPath{fpm}
   611  }
   612  
   613  func (fpm *Project_FieldPathMap) WithIValue(value interface{}) Project_FieldPathValue {
   614  	switch fpm.selector {
   615  	case Project_FieldPathSelectorServiceErrors:
   616  		return &Project_FieldPathMapValue{Project_FieldPathMap: *fpm, value: value.(*iam_common.ServiceErrors)}
   617  	default:
   618  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpm.selector))
   619  	}
   620  }
   621  
   622  func (fpm *Project_FieldPathMap) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
   623  	return fpm.WithIValue(value)
   624  }
   625  
   626  func (fpm *Project_FieldPathMap) WithIArrayOfValues(values interface{}) Project_FieldPathArrayOfValues {
   627  	switch fpm.selector {
   628  	case Project_FieldPathSelectorServiceErrors:
   629  		return &Project_FieldPathMapArrayOfValues{Project_FieldPathMap: *fpm, values: values.([]*iam_common.ServiceErrors)}
   630  	default:
   631  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpm.selector))
   632  	}
   633  }
   634  
   635  func (fpm *Project_FieldPathMap) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
   636  	return fpm.WithIArrayOfValues(values)
   637  }
   638  
   639  func (fpm *Project_FieldPathMap) WithIArrayItemValue(value interface{}) Project_FieldPathArrayItemValue {
   640  	panic("Cannot create array item value from map fieldpath")
   641  }
   642  
   643  func (fpm *Project_FieldPathMap) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   644  	return fpm.WithIArrayItemValue(value)
   645  }
   646  
   647  type Project_FieldSubPath struct {
   648  	selector Project_FieldPathSelector
   649  	subPath  gotenobject.FieldPath
   650  }
   651  
   652  var _ Project_FieldPath = (*Project_FieldSubPath)(nil)
   653  
   654  func (fps *Project_FieldSubPath) Selector() Project_FieldPathSelector {
   655  	return fps.selector
   656  }
   657  func (fps *Project_FieldSubPath) AsMetadataSubPath() (meta.Meta_FieldPath, bool) {
   658  	res, ok := fps.subPath.(meta.Meta_FieldPath)
   659  	return res, ok
   660  }
   661  func (fps *Project_FieldSubPath) AsMultiRegionPolicySubPath() (multi_region_policy.MultiRegionPolicy_FieldPath, bool) {
   662  	res, ok := fps.subPath.(multi_region_policy.MultiRegionPolicy_FieldPath)
   663  	return res, ok
   664  }
   665  func (fps *Project_FieldSubPath) AsServiceTiersSubPath() (iam_common.ServiceBusinessTier_FieldPath, bool) {
   666  	res, ok := fps.subPath.(iam_common.ServiceBusinessTier_FieldPath)
   667  	return res, ok
   668  }
   669  
   670  // String returns path representation in proto convention
   671  func (fps *Project_FieldSubPath) String() string {
   672  	return fps.selector.String() + "." + fps.subPath.String()
   673  }
   674  
   675  // JSONString returns path representation is JSON convention
   676  func (fps *Project_FieldSubPath) JSONString() string {
   677  	return strcase.ToLowerCamel(fps.selector.String()) + "." + fps.subPath.JSONString()
   678  }
   679  
   680  // Get returns all values pointed by selected field from source Project
   681  func (fps *Project_FieldSubPath) Get(source *Project) (values []interface{}) {
   682  	switch fps.selector {
   683  	case Project_FieldPathSelectorMetadata:
   684  		values = append(values, fps.subPath.GetRaw(source.GetMetadata())...)
   685  	case Project_FieldPathSelectorMultiRegionPolicy:
   686  		values = append(values, fps.subPath.GetRaw(source.GetMultiRegionPolicy())...)
   687  	case Project_FieldPathSelectorServiceTiers:
   688  		for _, item := range source.GetServiceTiers() {
   689  			values = append(values, fps.subPath.GetRaw(item)...)
   690  		}
   691  	default:
   692  		panic(fmt.Sprintf("Invalid selector for Project: %d", fps.selector))
   693  	}
   694  	return
   695  }
   696  
   697  func (fps *Project_FieldSubPath) GetRaw(source proto.Message) []interface{} {
   698  	return fps.Get(source.(*Project))
   699  }
   700  
   701  // GetSingle returns value of selected field from source Project
   702  func (fps *Project_FieldSubPath) GetSingle(source *Project) (interface{}, bool) {
   703  	switch fps.selector {
   704  	case Project_FieldPathSelectorMetadata:
   705  		if source.GetMetadata() == nil {
   706  			return nil, false
   707  		}
   708  		return fps.subPath.GetSingleRaw(source.GetMetadata())
   709  	case Project_FieldPathSelectorMultiRegionPolicy:
   710  		if source.GetMultiRegionPolicy() == nil {
   711  			return nil, false
   712  		}
   713  		return fps.subPath.GetSingleRaw(source.GetMultiRegionPolicy())
   714  	case Project_FieldPathSelectorServiceTiers:
   715  		if len(source.GetServiceTiers()) == 0 {
   716  			return nil, false
   717  		}
   718  		return fps.subPath.GetSingleRaw(source.GetServiceTiers()[0])
   719  	default:
   720  		panic(fmt.Sprintf("Invalid selector for Project: %d", fps.selector))
   721  	}
   722  }
   723  
   724  func (fps *Project_FieldSubPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
   725  	return fps.GetSingle(source.(*Project))
   726  }
   727  
   728  // GetDefault returns a default value of the field type
   729  func (fps *Project_FieldSubPath) GetDefault() interface{} {
   730  	return fps.subPath.GetDefault()
   731  }
   732  
   733  func (fps *Project_FieldSubPath) ClearValue(item *Project) {
   734  	if item != nil {
   735  		switch fps.selector {
   736  		case Project_FieldPathSelectorMetadata:
   737  			fps.subPath.ClearValueRaw(item.Metadata)
   738  		case Project_FieldPathSelectorMultiRegionPolicy:
   739  			fps.subPath.ClearValueRaw(item.MultiRegionPolicy)
   740  		case Project_FieldPathSelectorServiceTiers:
   741  			for _, subItem := range item.ServiceTiers {
   742  				fps.subPath.ClearValueRaw(subItem)
   743  			}
   744  		default:
   745  			panic(fmt.Sprintf("Invalid selector for Project: %d", fps.selector))
   746  		}
   747  	}
   748  }
   749  
   750  func (fps *Project_FieldSubPath) ClearValueRaw(item proto.Message) {
   751  	fps.ClearValue(item.(*Project))
   752  }
   753  
   754  // IsLeaf - whether field path is holds simple value
   755  func (fps *Project_FieldSubPath) IsLeaf() bool {
   756  	return fps.subPath.IsLeaf()
   757  }
   758  
   759  func (fps *Project_FieldSubPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
   760  	iPaths := []gotenobject.FieldPath{&Project_FieldTerminalPath{selector: fps.selector}}
   761  	iPaths = append(iPaths, fps.subPath.SplitIntoTerminalIPaths()...)
   762  	return iPaths
   763  }
   764  
   765  func (fps *Project_FieldSubPath) WithIValue(value interface{}) Project_FieldPathValue {
   766  	return &Project_FieldSubPathValue{fps, fps.subPath.WithRawIValue(value)}
   767  }
   768  
   769  func (fps *Project_FieldSubPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
   770  	return fps.WithIValue(value)
   771  }
   772  
   773  func (fps *Project_FieldSubPath) WithIArrayOfValues(values interface{}) Project_FieldPathArrayOfValues {
   774  	return &Project_FieldSubPathArrayOfValues{fps, fps.subPath.WithRawIArrayOfValues(values)}
   775  }
   776  
   777  func (fps *Project_FieldSubPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
   778  	return fps.WithIArrayOfValues(values)
   779  }
   780  
   781  func (fps *Project_FieldSubPath) WithIArrayItemValue(value interface{}) Project_FieldPathArrayItemValue {
   782  	return &Project_FieldSubPathArrayItemValue{fps, fps.subPath.WithRawIArrayItemValue(value)}
   783  }
   784  
   785  func (fps *Project_FieldSubPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   786  	return fps.WithIArrayItemValue(value)
   787  }
   788  
   789  // Project_FieldPathValue allows storing values for Project fields according to their type
   790  type Project_FieldPathValue interface {
   791  	Project_FieldPath
   792  	gotenobject.FieldPathValue
   793  	SetTo(target **Project)
   794  	CompareWith(*Project) (cmp int, comparable bool)
   795  }
   796  
   797  func ParseProject_FieldPathValue(pathStr, valueStr string) (Project_FieldPathValue, error) {
   798  	fp, err := ParseProject_FieldPath(pathStr)
   799  	if err != nil {
   800  		return nil, err
   801  	}
   802  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
   803  	if err != nil {
   804  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Project field path value from %s: %v", valueStr, err)
   805  	}
   806  	return fpv.(Project_FieldPathValue), nil
   807  }
   808  
   809  func MustParseProject_FieldPathValue(pathStr, valueStr string) Project_FieldPathValue {
   810  	fpv, err := ParseProject_FieldPathValue(pathStr, valueStr)
   811  	if err != nil {
   812  		panic(err)
   813  	}
   814  	return fpv
   815  }
   816  
   817  type Project_FieldTerminalPathValue struct {
   818  	Project_FieldTerminalPath
   819  	value interface{}
   820  }
   821  
   822  var _ Project_FieldPathValue = (*Project_FieldTerminalPathValue)(nil)
   823  
   824  // GetRawValue returns raw value stored under selected path for 'Project' as interface{}
   825  func (fpv *Project_FieldTerminalPathValue) GetRawValue() interface{} {
   826  	return fpv.value
   827  }
   828  func (fpv *Project_FieldTerminalPathValue) AsNameValue() (*Name, bool) {
   829  	res, ok := fpv.value.(*Name)
   830  	return res, ok
   831  }
   832  func (fpv *Project_FieldTerminalPathValue) AsMetadataValue() (*meta.Meta, bool) {
   833  	res, ok := fpv.value.(*meta.Meta)
   834  	return res, ok
   835  }
   836  func (fpv *Project_FieldTerminalPathValue) AsTitleValue() (string, bool) {
   837  	res, ok := fpv.value.(string)
   838  	return res, ok
   839  }
   840  func (fpv *Project_FieldTerminalPathValue) AsDescriptionValue() (string, bool) {
   841  	res, ok := fpv.value.(string)
   842  	return res, ok
   843  }
   844  func (fpv *Project_FieldTerminalPathValue) AsParentOrganizationValue() (*organization.Reference, bool) {
   845  	res, ok := fpv.value.(*organization.Reference)
   846  	return res, ok
   847  }
   848  func (fpv *Project_FieldTerminalPathValue) AsMultiRegionPolicyValue() (*multi_region_policy.MultiRegionPolicy, bool) {
   849  	res, ok := fpv.value.(*multi_region_policy.MultiRegionPolicy)
   850  	return res, ok
   851  }
   852  func (fpv *Project_FieldTerminalPathValue) AsEnabledServicesValue() ([]*meta_service.Reference, bool) {
   853  	res, ok := fpv.value.([]*meta_service.Reference)
   854  	return res, ok
   855  }
   856  func (fpv *Project_FieldTerminalPathValue) AsBusinessTierValue() (iam_common.BusinessTier, bool) {
   857  	res, ok := fpv.value.(iam_common.BusinessTier)
   858  	return res, ok
   859  }
   860  func (fpv *Project_FieldTerminalPathValue) AsServiceTiersValue() ([]*iam_common.ServiceBusinessTier, bool) {
   861  	res, ok := fpv.value.([]*iam_common.ServiceBusinessTier)
   862  	return res, ok
   863  }
   864  func (fpv *Project_FieldTerminalPathValue) AsRootOrganizationValue() (*organization.Name, bool) {
   865  	res, ok := fpv.value.(*organization.Name)
   866  	return res, ok
   867  }
   868  func (fpv *Project_FieldTerminalPathValue) AsAncestryPathValue() ([]*organization.Name, bool) {
   869  	res, ok := fpv.value.([]*organization.Name)
   870  	return res, ok
   871  }
   872  func (fpv *Project_FieldTerminalPathValue) AsServiceErrorsValue() (map[string]*iam_common.ServiceErrors, bool) {
   873  	res, ok := fpv.value.(map[string]*iam_common.ServiceErrors)
   874  	return res, ok
   875  }
   876  func (fpv *Project_FieldTerminalPathValue) AsServicesGenerationValue() (int64, bool) {
   877  	res, ok := fpv.value.(int64)
   878  	return res, ok
   879  }
   880  
   881  // SetTo stores value for selected field for object Project
   882  func (fpv *Project_FieldTerminalPathValue) SetTo(target **Project) {
   883  	if *target == nil {
   884  		*target = new(Project)
   885  	}
   886  	switch fpv.selector {
   887  	case Project_FieldPathSelectorName:
   888  		(*target).Name = fpv.value.(*Name)
   889  	case Project_FieldPathSelectorMetadata:
   890  		(*target).Metadata = fpv.value.(*meta.Meta)
   891  	case Project_FieldPathSelectorTitle:
   892  		(*target).Title = fpv.value.(string)
   893  	case Project_FieldPathSelectorDescription:
   894  		(*target).Description = fpv.value.(string)
   895  	case Project_FieldPathSelectorParentOrganization:
   896  		(*target).ParentOrganization = fpv.value.(*organization.Reference)
   897  	case Project_FieldPathSelectorMultiRegionPolicy:
   898  		(*target).MultiRegionPolicy = fpv.value.(*multi_region_policy.MultiRegionPolicy)
   899  	case Project_FieldPathSelectorEnabledServices:
   900  		(*target).EnabledServices = fpv.value.([]*meta_service.Reference)
   901  	case Project_FieldPathSelectorBusinessTier:
   902  		(*target).BusinessTier = fpv.value.(iam_common.BusinessTier)
   903  	case Project_FieldPathSelectorServiceTiers:
   904  		(*target).ServiceTiers = fpv.value.([]*iam_common.ServiceBusinessTier)
   905  	case Project_FieldPathSelectorRootOrganization:
   906  		(*target).RootOrganization = fpv.value.(*organization.Name)
   907  	case Project_FieldPathSelectorAncestryPath:
   908  		(*target).AncestryPath = fpv.value.([]*organization.Name)
   909  	case Project_FieldPathSelectorServiceErrors:
   910  		(*target).ServiceErrors = fpv.value.(map[string]*iam_common.ServiceErrors)
   911  	case Project_FieldPathSelectorServicesGeneration:
   912  		(*target).ServicesGeneration = fpv.value.(int64)
   913  	default:
   914  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpv.selector))
   915  	}
   916  }
   917  
   918  func (fpv *Project_FieldTerminalPathValue) SetToRaw(target proto.Message) {
   919  	typedObject := target.(*Project)
   920  	fpv.SetTo(&typedObject)
   921  }
   922  
   923  // CompareWith compares value in the 'Project_FieldTerminalPathValue' with the value under path in 'Project'.
   924  func (fpv *Project_FieldTerminalPathValue) CompareWith(source *Project) (int, bool) {
   925  	switch fpv.selector {
   926  	case Project_FieldPathSelectorName:
   927  		leftValue := fpv.value.(*Name)
   928  		rightValue := source.GetName()
   929  		if leftValue == nil {
   930  			if rightValue != nil {
   931  				return -1, true
   932  			}
   933  			return 0, true
   934  		}
   935  		if rightValue == nil {
   936  			return 1, true
   937  		}
   938  		if leftValue.String() == rightValue.String() {
   939  			return 0, true
   940  		} else if leftValue.String() < rightValue.String() {
   941  			return -1, true
   942  		} else {
   943  			return 1, true
   944  		}
   945  	case Project_FieldPathSelectorMetadata:
   946  		return 0, false
   947  	case Project_FieldPathSelectorTitle:
   948  		leftValue := fpv.value.(string)
   949  		rightValue := source.GetTitle()
   950  		if (leftValue) == (rightValue) {
   951  			return 0, true
   952  		} else if (leftValue) < (rightValue) {
   953  			return -1, true
   954  		} else {
   955  			return 1, true
   956  		}
   957  	case Project_FieldPathSelectorDescription:
   958  		leftValue := fpv.value.(string)
   959  		rightValue := source.GetDescription()
   960  		if (leftValue) == (rightValue) {
   961  			return 0, true
   962  		} else if (leftValue) < (rightValue) {
   963  			return -1, true
   964  		} else {
   965  			return 1, true
   966  		}
   967  	case Project_FieldPathSelectorParentOrganization:
   968  		leftValue := fpv.value.(*organization.Reference)
   969  		rightValue := source.GetParentOrganization()
   970  		if leftValue == nil {
   971  			if rightValue != nil {
   972  				return -1, true
   973  			}
   974  			return 0, true
   975  		}
   976  		if rightValue == nil {
   977  			return 1, true
   978  		}
   979  		if leftValue.String() == rightValue.String() {
   980  			return 0, true
   981  		} else if leftValue.String() < rightValue.String() {
   982  			return -1, true
   983  		} else {
   984  			return 1, true
   985  		}
   986  	case Project_FieldPathSelectorMultiRegionPolicy:
   987  		return 0, false
   988  	case Project_FieldPathSelectorEnabledServices:
   989  		return 0, false
   990  	case Project_FieldPathSelectorBusinessTier:
   991  		leftValue := fpv.value.(iam_common.BusinessTier)
   992  		rightValue := source.GetBusinessTier()
   993  		if (leftValue) == (rightValue) {
   994  			return 0, true
   995  		} else if (leftValue) < (rightValue) {
   996  			return -1, true
   997  		} else {
   998  			return 1, true
   999  		}
  1000  	case Project_FieldPathSelectorServiceTiers:
  1001  		return 0, false
  1002  	case Project_FieldPathSelectorRootOrganization:
  1003  		leftValue := fpv.value.(*organization.Name)
  1004  		rightValue := source.GetRootOrganization()
  1005  		if leftValue == nil {
  1006  			if rightValue != nil {
  1007  				return -1, true
  1008  			}
  1009  			return 0, true
  1010  		}
  1011  		if rightValue == nil {
  1012  			return 1, true
  1013  		}
  1014  		if leftValue.String() == rightValue.String() {
  1015  			return 0, true
  1016  		} else if leftValue.String() < rightValue.String() {
  1017  			return -1, true
  1018  		} else {
  1019  			return 1, true
  1020  		}
  1021  	case Project_FieldPathSelectorAncestryPath:
  1022  		return 0, false
  1023  	case Project_FieldPathSelectorServiceErrors:
  1024  		return 0, false
  1025  	case Project_FieldPathSelectorServicesGeneration:
  1026  		leftValue := fpv.value.(int64)
  1027  		rightValue := source.GetServicesGeneration()
  1028  		if (leftValue) == (rightValue) {
  1029  			return 0, true
  1030  		} else if (leftValue) < (rightValue) {
  1031  			return -1, true
  1032  		} else {
  1033  			return 1, true
  1034  		}
  1035  	default:
  1036  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpv.selector))
  1037  	}
  1038  }
  1039  
  1040  func (fpv *Project_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  1041  	return fpv.CompareWith(source.(*Project))
  1042  }
  1043  
  1044  type Project_FieldPathMapValue struct {
  1045  	Project_FieldPathMap
  1046  	value interface{}
  1047  }
  1048  
  1049  var _ Project_FieldPathValue = (*Project_FieldPathMapValue)(nil)
  1050  
  1051  // GetValue returns value stored under selected field in Project as interface{}
  1052  func (fpmv *Project_FieldPathMapValue) GetRawValue() interface{} {
  1053  	return fpmv.value
  1054  }
  1055  func (fpmv *Project_FieldPathMapValue) AsServiceErrorsElementValue() (*iam_common.ServiceErrors, bool) {
  1056  	res, ok := fpmv.value.(*iam_common.ServiceErrors)
  1057  	return res, ok
  1058  }
  1059  
  1060  // SetTo stores value for selected field in Project
  1061  func (fpmv *Project_FieldPathMapValue) SetTo(target **Project) {
  1062  	if *target == nil {
  1063  		*target = new(Project)
  1064  	}
  1065  	switch fpmv.selector {
  1066  	case Project_FieldPathSelectorServiceErrors:
  1067  		if (*target).ServiceErrors == nil {
  1068  			(*target).ServiceErrors = make(map[string]*iam_common.ServiceErrors)
  1069  		}
  1070  		(*target).ServiceErrors[fpmv.key] = fpmv.value.(*iam_common.ServiceErrors)
  1071  	default:
  1072  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpmv.selector))
  1073  	}
  1074  }
  1075  
  1076  func (fpmv *Project_FieldPathMapValue) SetToRaw(target proto.Message) {
  1077  	typedObject := target.(*Project)
  1078  	fpmv.SetTo(&typedObject)
  1079  }
  1080  
  1081  // CompareWith compares value in the 'Project_FieldPathMapValue' with the value under path in 'Project'.
  1082  func (fpmv *Project_FieldPathMapValue) CompareWith(source *Project) (int, bool) {
  1083  	switch fpmv.selector {
  1084  	case Project_FieldPathSelectorServiceErrors:
  1085  		return 0, false
  1086  	default:
  1087  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpmv.selector))
  1088  	}
  1089  }
  1090  
  1091  func (fpmv *Project_FieldPathMapValue) CompareWithRaw(source proto.Message) (int, bool) {
  1092  	return fpmv.CompareWith(source.(*Project))
  1093  }
  1094  
  1095  type Project_FieldSubPathValue struct {
  1096  	Project_FieldPath
  1097  	subPathValue gotenobject.FieldPathValue
  1098  }
  1099  
  1100  var _ Project_FieldPathValue = (*Project_FieldSubPathValue)(nil)
  1101  
  1102  func (fpvs *Project_FieldSubPathValue) AsMetadataPathValue() (meta.Meta_FieldPathValue, bool) {
  1103  	res, ok := fpvs.subPathValue.(meta.Meta_FieldPathValue)
  1104  	return res, ok
  1105  }
  1106  func (fpvs *Project_FieldSubPathValue) AsMultiRegionPolicyPathValue() (multi_region_policy.MultiRegionPolicy_FieldPathValue, bool) {
  1107  	res, ok := fpvs.subPathValue.(multi_region_policy.MultiRegionPolicy_FieldPathValue)
  1108  	return res, ok
  1109  }
  1110  func (fpvs *Project_FieldSubPathValue) AsServiceTiersPathValue() (iam_common.ServiceBusinessTier_FieldPathValue, bool) {
  1111  	res, ok := fpvs.subPathValue.(iam_common.ServiceBusinessTier_FieldPathValue)
  1112  	return res, ok
  1113  }
  1114  
  1115  func (fpvs *Project_FieldSubPathValue) SetTo(target **Project) {
  1116  	if *target == nil {
  1117  		*target = new(Project)
  1118  	}
  1119  	switch fpvs.Selector() {
  1120  	case Project_FieldPathSelectorMetadata:
  1121  		fpvs.subPathValue.(meta.Meta_FieldPathValue).SetTo(&(*target).Metadata)
  1122  	case Project_FieldPathSelectorMultiRegionPolicy:
  1123  		fpvs.subPathValue.(multi_region_policy.MultiRegionPolicy_FieldPathValue).SetTo(&(*target).MultiRegionPolicy)
  1124  	case Project_FieldPathSelectorServiceTiers:
  1125  		panic("FieldPath setter is unsupported for array subpaths")
  1126  	default:
  1127  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpvs.Selector()))
  1128  	}
  1129  }
  1130  
  1131  func (fpvs *Project_FieldSubPathValue) SetToRaw(target proto.Message) {
  1132  	typedObject := target.(*Project)
  1133  	fpvs.SetTo(&typedObject)
  1134  }
  1135  
  1136  func (fpvs *Project_FieldSubPathValue) GetRawValue() interface{} {
  1137  	return fpvs.subPathValue.GetRawValue()
  1138  }
  1139  
  1140  func (fpvs *Project_FieldSubPathValue) CompareWith(source *Project) (int, bool) {
  1141  	switch fpvs.Selector() {
  1142  	case Project_FieldPathSelectorMetadata:
  1143  		return fpvs.subPathValue.(meta.Meta_FieldPathValue).CompareWith(source.GetMetadata())
  1144  	case Project_FieldPathSelectorMultiRegionPolicy:
  1145  		return fpvs.subPathValue.(multi_region_policy.MultiRegionPolicy_FieldPathValue).CompareWith(source.GetMultiRegionPolicy())
  1146  	case Project_FieldPathSelectorServiceTiers:
  1147  		return 0, false // repeated field
  1148  	default:
  1149  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpvs.Selector()))
  1150  	}
  1151  }
  1152  
  1153  func (fpvs *Project_FieldSubPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  1154  	return fpvs.CompareWith(source.(*Project))
  1155  }
  1156  
  1157  // Project_FieldPathArrayItemValue allows storing single item in Path-specific values for Project according to their type
  1158  // Present only for array (repeated) types.
  1159  type Project_FieldPathArrayItemValue interface {
  1160  	gotenobject.FieldPathArrayItemValue
  1161  	Project_FieldPath
  1162  	ContainsValue(*Project) bool
  1163  }
  1164  
  1165  // ParseProject_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  1166  func ParseProject_FieldPathArrayItemValue(pathStr, valueStr string) (Project_FieldPathArrayItemValue, error) {
  1167  	fp, err := ParseProject_FieldPath(pathStr)
  1168  	if err != nil {
  1169  		return nil, err
  1170  	}
  1171  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  1172  	if err != nil {
  1173  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Project field path array item value from %s: %v", valueStr, err)
  1174  	}
  1175  	return fpaiv.(Project_FieldPathArrayItemValue), nil
  1176  }
  1177  
  1178  func MustParseProject_FieldPathArrayItemValue(pathStr, valueStr string) Project_FieldPathArrayItemValue {
  1179  	fpaiv, err := ParseProject_FieldPathArrayItemValue(pathStr, valueStr)
  1180  	if err != nil {
  1181  		panic(err)
  1182  	}
  1183  	return fpaiv
  1184  }
  1185  
  1186  type Project_FieldTerminalPathArrayItemValue struct {
  1187  	Project_FieldTerminalPath
  1188  	value interface{}
  1189  }
  1190  
  1191  var _ Project_FieldPathArrayItemValue = (*Project_FieldTerminalPathArrayItemValue)(nil)
  1192  
  1193  // GetRawValue returns stored element value for array in object Project as interface{}
  1194  func (fpaiv *Project_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  1195  	return fpaiv.value
  1196  }
  1197  func (fpaiv *Project_FieldTerminalPathArrayItemValue) AsEnabledServicesItemValue() (*meta_service.Reference, bool) {
  1198  	res, ok := fpaiv.value.(*meta_service.Reference)
  1199  	return res, ok
  1200  }
  1201  func (fpaiv *Project_FieldTerminalPathArrayItemValue) AsServiceTiersItemValue() (*iam_common.ServiceBusinessTier, bool) {
  1202  	res, ok := fpaiv.value.(*iam_common.ServiceBusinessTier)
  1203  	return res, ok
  1204  }
  1205  func (fpaiv *Project_FieldTerminalPathArrayItemValue) AsAncestryPathItemValue() (*organization.Name, bool) {
  1206  	res, ok := fpaiv.value.(*organization.Name)
  1207  	return res, ok
  1208  }
  1209  
  1210  func (fpaiv *Project_FieldTerminalPathArrayItemValue) GetSingle(source *Project) (interface{}, bool) {
  1211  	return nil, false
  1212  }
  1213  
  1214  func (fpaiv *Project_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  1215  	return fpaiv.GetSingle(source.(*Project))
  1216  }
  1217  
  1218  // Contains returns a boolean indicating if value that is being held is present in given 'Project'
  1219  func (fpaiv *Project_FieldTerminalPathArrayItemValue) ContainsValue(source *Project) bool {
  1220  	slice := fpaiv.Project_FieldTerminalPath.Get(source)
  1221  	for _, v := range slice {
  1222  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  1223  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  1224  				return true
  1225  			}
  1226  		} else if reflect.DeepEqual(v, fpaiv.value) {
  1227  			return true
  1228  		}
  1229  	}
  1230  	return false
  1231  }
  1232  
  1233  type Project_FieldSubPathArrayItemValue struct {
  1234  	Project_FieldPath
  1235  	subPathItemValue gotenobject.FieldPathArrayItemValue
  1236  }
  1237  
  1238  // GetRawValue returns stored array item value
  1239  func (fpaivs *Project_FieldSubPathArrayItemValue) GetRawItemValue() interface{} {
  1240  	return fpaivs.subPathItemValue.GetRawItemValue()
  1241  }
  1242  func (fpaivs *Project_FieldSubPathArrayItemValue) AsMetadataPathItemValue() (meta.Meta_FieldPathArrayItemValue, bool) {
  1243  	res, ok := fpaivs.subPathItemValue.(meta.Meta_FieldPathArrayItemValue)
  1244  	return res, ok
  1245  }
  1246  func (fpaivs *Project_FieldSubPathArrayItemValue) AsMultiRegionPolicyPathItemValue() (multi_region_policy.MultiRegionPolicy_FieldPathArrayItemValue, bool) {
  1247  	res, ok := fpaivs.subPathItemValue.(multi_region_policy.MultiRegionPolicy_FieldPathArrayItemValue)
  1248  	return res, ok
  1249  }
  1250  func (fpaivs *Project_FieldSubPathArrayItemValue) AsServiceTiersPathItemValue() (iam_common.ServiceBusinessTier_FieldPathArrayItemValue, bool) {
  1251  	res, ok := fpaivs.subPathItemValue.(iam_common.ServiceBusinessTier_FieldPathArrayItemValue)
  1252  	return res, ok
  1253  }
  1254  
  1255  // Contains returns a boolean indicating if value that is being held is present in given 'Project'
  1256  func (fpaivs *Project_FieldSubPathArrayItemValue) ContainsValue(source *Project) bool {
  1257  	switch fpaivs.Selector() {
  1258  	case Project_FieldPathSelectorMetadata:
  1259  		return fpaivs.subPathItemValue.(meta.Meta_FieldPathArrayItemValue).ContainsValue(source.GetMetadata())
  1260  	case Project_FieldPathSelectorMultiRegionPolicy:
  1261  		return fpaivs.subPathItemValue.(multi_region_policy.MultiRegionPolicy_FieldPathArrayItemValue).ContainsValue(source.GetMultiRegionPolicy())
  1262  	case Project_FieldPathSelectorServiceTiers:
  1263  		return false // repeated/map field
  1264  	default:
  1265  		panic(fmt.Sprintf("Invalid selector for Project: %d", fpaivs.Selector()))
  1266  	}
  1267  }
  1268  
  1269  // Project_FieldPathArrayOfValues allows storing slice of values for Project fields according to their type
  1270  type Project_FieldPathArrayOfValues interface {
  1271  	gotenobject.FieldPathArrayOfValues
  1272  	Project_FieldPath
  1273  }
  1274  
  1275  func ParseProject_FieldPathArrayOfValues(pathStr, valuesStr string) (Project_FieldPathArrayOfValues, error) {
  1276  	fp, err := ParseProject_FieldPath(pathStr)
  1277  	if err != nil {
  1278  		return nil, err
  1279  	}
  1280  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  1281  	if err != nil {
  1282  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Project field path array of values from %s: %v", valuesStr, err)
  1283  	}
  1284  	return fpaov.(Project_FieldPathArrayOfValues), nil
  1285  }
  1286  
  1287  func MustParseProject_FieldPathArrayOfValues(pathStr, valuesStr string) Project_FieldPathArrayOfValues {
  1288  	fpaov, err := ParseProject_FieldPathArrayOfValues(pathStr, valuesStr)
  1289  	if err != nil {
  1290  		panic(err)
  1291  	}
  1292  	return fpaov
  1293  }
  1294  
  1295  type Project_FieldTerminalPathArrayOfValues struct {
  1296  	Project_FieldTerminalPath
  1297  	values interface{}
  1298  }
  1299  
  1300  var _ Project_FieldPathArrayOfValues = (*Project_FieldTerminalPathArrayOfValues)(nil)
  1301  
  1302  func (fpaov *Project_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  1303  	switch fpaov.selector {
  1304  	case Project_FieldPathSelectorName:
  1305  		for _, v := range fpaov.values.([]*Name) {
  1306  			values = append(values, v)
  1307  		}
  1308  	case Project_FieldPathSelectorMetadata:
  1309  		for _, v := range fpaov.values.([]*meta.Meta) {
  1310  			values = append(values, v)
  1311  		}
  1312  	case Project_FieldPathSelectorTitle:
  1313  		for _, v := range fpaov.values.([]string) {
  1314  			values = append(values, v)
  1315  		}
  1316  	case Project_FieldPathSelectorDescription:
  1317  		for _, v := range fpaov.values.([]string) {
  1318  			values = append(values, v)
  1319  		}
  1320  	case Project_FieldPathSelectorParentOrganization:
  1321  		for _, v := range fpaov.values.([]*organization.Reference) {
  1322  			values = append(values, v)
  1323  		}
  1324  	case Project_FieldPathSelectorMultiRegionPolicy:
  1325  		for _, v := range fpaov.values.([]*multi_region_policy.MultiRegionPolicy) {
  1326  			values = append(values, v)
  1327  		}
  1328  	case Project_FieldPathSelectorEnabledServices:
  1329  		for _, v := range fpaov.values.([][]*meta_service.Reference) {
  1330  			values = append(values, v)
  1331  		}
  1332  	case Project_FieldPathSelectorBusinessTier:
  1333  		for _, v := range fpaov.values.([]iam_common.BusinessTier) {
  1334  			values = append(values, v)
  1335  		}
  1336  	case Project_FieldPathSelectorServiceTiers:
  1337  		for _, v := range fpaov.values.([][]*iam_common.ServiceBusinessTier) {
  1338  			values = append(values, v)
  1339  		}
  1340  	case Project_FieldPathSelectorRootOrganization:
  1341  		for _, v := range fpaov.values.([]*organization.Name) {
  1342  			values = append(values, v)
  1343  		}
  1344  	case Project_FieldPathSelectorAncestryPath:
  1345  		for _, v := range fpaov.values.([][]*organization.Name) {
  1346  			values = append(values, v)
  1347  		}
  1348  	case Project_FieldPathSelectorServiceErrors:
  1349  		for _, v := range fpaov.values.([]map[string]*iam_common.ServiceErrors) {
  1350  			values = append(values, v)
  1351  		}
  1352  	case Project_FieldPathSelectorServicesGeneration:
  1353  		for _, v := range fpaov.values.([]int64) {
  1354  			values = append(values, v)
  1355  		}
  1356  	}
  1357  	return
  1358  }
  1359  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsNameArrayOfValues() ([]*Name, bool) {
  1360  	res, ok := fpaov.values.([]*Name)
  1361  	return res, ok
  1362  }
  1363  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsMetadataArrayOfValues() ([]*meta.Meta, bool) {
  1364  	res, ok := fpaov.values.([]*meta.Meta)
  1365  	return res, ok
  1366  }
  1367  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsTitleArrayOfValues() ([]string, bool) {
  1368  	res, ok := fpaov.values.([]string)
  1369  	return res, ok
  1370  }
  1371  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsDescriptionArrayOfValues() ([]string, bool) {
  1372  	res, ok := fpaov.values.([]string)
  1373  	return res, ok
  1374  }
  1375  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsParentOrganizationArrayOfValues() ([]*organization.Reference, bool) {
  1376  	res, ok := fpaov.values.([]*organization.Reference)
  1377  	return res, ok
  1378  }
  1379  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsMultiRegionPolicyArrayOfValues() ([]*multi_region_policy.MultiRegionPolicy, bool) {
  1380  	res, ok := fpaov.values.([]*multi_region_policy.MultiRegionPolicy)
  1381  	return res, ok
  1382  }
  1383  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsEnabledServicesArrayOfValues() ([][]*meta_service.Reference, bool) {
  1384  	res, ok := fpaov.values.([][]*meta_service.Reference)
  1385  	return res, ok
  1386  }
  1387  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsBusinessTierArrayOfValues() ([]iam_common.BusinessTier, bool) {
  1388  	res, ok := fpaov.values.([]iam_common.BusinessTier)
  1389  	return res, ok
  1390  }
  1391  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsServiceTiersArrayOfValues() ([][]*iam_common.ServiceBusinessTier, bool) {
  1392  	res, ok := fpaov.values.([][]*iam_common.ServiceBusinessTier)
  1393  	return res, ok
  1394  }
  1395  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsRootOrganizationArrayOfValues() ([]*organization.Name, bool) {
  1396  	res, ok := fpaov.values.([]*organization.Name)
  1397  	return res, ok
  1398  }
  1399  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsAncestryPathArrayOfValues() ([][]*organization.Name, bool) {
  1400  	res, ok := fpaov.values.([][]*organization.Name)
  1401  	return res, ok
  1402  }
  1403  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsServiceErrorsArrayOfValues() ([]map[string]*iam_common.ServiceErrors, bool) {
  1404  	res, ok := fpaov.values.([]map[string]*iam_common.ServiceErrors)
  1405  	return res, ok
  1406  }
  1407  func (fpaov *Project_FieldTerminalPathArrayOfValues) AsServicesGenerationArrayOfValues() ([]int64, bool) {
  1408  	res, ok := fpaov.values.([]int64)
  1409  	return res, ok
  1410  }
  1411  
  1412  type Project_FieldPathMapArrayOfValues struct {
  1413  	Project_FieldPathMap
  1414  	values interface{}
  1415  }
  1416  
  1417  var _ Project_FieldPathArrayOfValues = (*Project_FieldPathMapArrayOfValues)(nil)
  1418  
  1419  func (fpmaov *Project_FieldPathMapArrayOfValues) GetRawValues() (values []interface{}) {
  1420  	switch fpmaov.selector {
  1421  	case Project_FieldPathSelectorServiceErrors:
  1422  		for _, v := range fpmaov.values.([]*iam_common.ServiceErrors) {
  1423  			values = append(values, v)
  1424  		}
  1425  	}
  1426  	return
  1427  }
  1428  func (fpmaov *Project_FieldPathMapArrayOfValues) AsServiceErrorsArrayOfElementValues() ([]*iam_common.ServiceErrors, bool) {
  1429  	res, ok := fpmaov.values.([]*iam_common.ServiceErrors)
  1430  	return res, ok
  1431  }
  1432  
  1433  type Project_FieldSubPathArrayOfValues struct {
  1434  	Project_FieldPath
  1435  	subPathArrayOfValues gotenobject.FieldPathArrayOfValues
  1436  }
  1437  
  1438  var _ Project_FieldPathArrayOfValues = (*Project_FieldSubPathArrayOfValues)(nil)
  1439  
  1440  func (fpsaov *Project_FieldSubPathArrayOfValues) GetRawValues() []interface{} {
  1441  	return fpsaov.subPathArrayOfValues.GetRawValues()
  1442  }
  1443  func (fpsaov *Project_FieldSubPathArrayOfValues) AsMetadataPathArrayOfValues() (meta.Meta_FieldPathArrayOfValues, bool) {
  1444  	res, ok := fpsaov.subPathArrayOfValues.(meta.Meta_FieldPathArrayOfValues)
  1445  	return res, ok
  1446  }
  1447  func (fpsaov *Project_FieldSubPathArrayOfValues) AsMultiRegionPolicyPathArrayOfValues() (multi_region_policy.MultiRegionPolicy_FieldPathArrayOfValues, bool) {
  1448  	res, ok := fpsaov.subPathArrayOfValues.(multi_region_policy.MultiRegionPolicy_FieldPathArrayOfValues)
  1449  	return res, ok
  1450  }
  1451  func (fpsaov *Project_FieldSubPathArrayOfValues) AsServiceTiersPathArrayOfValues() (iam_common.ServiceBusinessTier_FieldPathArrayOfValues, bool) {
  1452  	res, ok := fpsaov.subPathArrayOfValues.(iam_common.ServiceBusinessTier_FieldPathArrayOfValues)
  1453  	return res, ok
  1454  }