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

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/devices/proto/v1/provisioning_policy.proto
     3  // DO NOT EDIT!!!
     4  
     5  package provisioning_policy
     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  	device "github.com/cloudwan/edgelq-sdk/devices/resources/v1/device"
    27  	project "github.com/cloudwan/edgelq-sdk/devices/resources/v1/project"
    28  	iam_condition "github.com/cloudwan/edgelq-sdk/iam/resources/v1/condition"
    29  	iam_role "github.com/cloudwan/edgelq-sdk/iam/resources/v1/role"
    30  	iam_service_account "github.com/cloudwan/edgelq-sdk/iam/resources/v1/service_account"
    31  	meta "github.com/cloudwan/goten-sdk/types/meta"
    32  	structpb "google.golang.org/protobuf/types/known/structpb"
    33  )
    34  
    35  // ensure the imports are used
    36  var (
    37  	_ = new(json.Marshaler)
    38  	_ = new(fmt.Stringer)
    39  	_ = reflect.DeepEqual
    40  	_ = strings.Builder{}
    41  	_ = time.Second
    42  
    43  	_ = strcase.ToLowerCamel
    44  	_ = codes.NotFound
    45  	_ = status.Status{}
    46  	_ = protojson.UnmarshalOptions{}
    47  	_ = new(proto.Message)
    48  	_ = protoregistry.GlobalTypes
    49  
    50  	_ = new(gotenobject.FieldPath)
    51  )
    52  
    53  // make sure we're using proto imports
    54  var (
    55  	_ = &device.Device{}
    56  	_ = &project.Project{}
    57  	_ = &iam_condition.Condition{}
    58  	_ = &iam_role.Role{}
    59  	_ = &iam_service_account.ServiceAccount{}
    60  	_ = &structpb.Struct{}
    61  	_ = &meta.Meta{}
    62  )
    63  
    64  // FieldPath provides implementation to handle
    65  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
    66  type ProvisioningPolicy_FieldPath interface {
    67  	gotenobject.FieldPath
    68  	Selector() ProvisioningPolicy_FieldPathSelector
    69  	Get(source *ProvisioningPolicy) []interface{}
    70  	GetSingle(source *ProvisioningPolicy) (interface{}, bool)
    71  	ClearValue(item *ProvisioningPolicy)
    72  
    73  	// Those methods build corresponding ProvisioningPolicy_FieldPathValue
    74  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
    75  	WithIValue(value interface{}) ProvisioningPolicy_FieldPathValue
    76  	WithIArrayOfValues(values interface{}) ProvisioningPolicy_FieldPathArrayOfValues
    77  	WithIArrayItemValue(value interface{}) ProvisioningPolicy_FieldPathArrayItemValue
    78  }
    79  
    80  type ProvisioningPolicy_FieldPathSelector int32
    81  
    82  const (
    83  	ProvisioningPolicy_FieldPathSelectorName        ProvisioningPolicy_FieldPathSelector = 0
    84  	ProvisioningPolicy_FieldPathSelectorMetadata    ProvisioningPolicy_FieldPathSelector = 1
    85  	ProvisioningPolicy_FieldPathSelectorDisplayName ProvisioningPolicy_FieldPathSelector = 2
    86  	ProvisioningPolicy_FieldPathSelectorDescription ProvisioningPolicy_FieldPathSelector = 3
    87  	ProvisioningPolicy_FieldPathSelectorSpec        ProvisioningPolicy_FieldPathSelector = 4
    88  	ProvisioningPolicy_FieldPathSelectorStatus      ProvisioningPolicy_FieldPathSelector = 5
    89  )
    90  
    91  func (s ProvisioningPolicy_FieldPathSelector) String() string {
    92  	switch s {
    93  	case ProvisioningPolicy_FieldPathSelectorName:
    94  		return "name"
    95  	case ProvisioningPolicy_FieldPathSelectorMetadata:
    96  		return "metadata"
    97  	case ProvisioningPolicy_FieldPathSelectorDisplayName:
    98  		return "display_name"
    99  	case ProvisioningPolicy_FieldPathSelectorDescription:
   100  		return "description"
   101  	case ProvisioningPolicy_FieldPathSelectorSpec:
   102  		return "spec"
   103  	case ProvisioningPolicy_FieldPathSelectorStatus:
   104  		return "status"
   105  	default:
   106  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy: %d", s))
   107  	}
   108  }
   109  
   110  func BuildProvisioningPolicy_FieldPath(fp gotenobject.RawFieldPath) (ProvisioningPolicy_FieldPath, error) {
   111  	if len(fp) == 0 {
   112  		return nil, status.Error(codes.InvalidArgument, "empty field path for object ProvisioningPolicy")
   113  	}
   114  	if len(fp) == 1 {
   115  		switch fp[0] {
   116  		case "name":
   117  			return &ProvisioningPolicy_FieldTerminalPath{selector: ProvisioningPolicy_FieldPathSelectorName}, nil
   118  		case "metadata":
   119  			return &ProvisioningPolicy_FieldTerminalPath{selector: ProvisioningPolicy_FieldPathSelectorMetadata}, nil
   120  		case "display_name", "displayName", "display-name":
   121  			return &ProvisioningPolicy_FieldTerminalPath{selector: ProvisioningPolicy_FieldPathSelectorDisplayName}, nil
   122  		case "description":
   123  			return &ProvisioningPolicy_FieldTerminalPath{selector: ProvisioningPolicy_FieldPathSelectorDescription}, nil
   124  		case "spec":
   125  			return &ProvisioningPolicy_FieldTerminalPath{selector: ProvisioningPolicy_FieldPathSelectorSpec}, nil
   126  		case "status":
   127  			return &ProvisioningPolicy_FieldTerminalPath{selector: ProvisioningPolicy_FieldPathSelectorStatus}, nil
   128  		}
   129  	} else {
   130  		switch fp[0] {
   131  		case "metadata":
   132  			if subpath, err := meta.BuildMeta_FieldPath(fp[1:]); err != nil {
   133  				return nil, err
   134  			} else {
   135  				return &ProvisioningPolicy_FieldSubPath{selector: ProvisioningPolicy_FieldPathSelectorMetadata, subPath: subpath}, nil
   136  			}
   137  		case "spec":
   138  			if subpath, err := BuildProvisioningPolicySpec_FieldPath(fp[1:]); err != nil {
   139  				return nil, err
   140  			} else {
   141  				return &ProvisioningPolicy_FieldSubPath{selector: ProvisioningPolicy_FieldPathSelectorSpec, subPath: subpath}, nil
   142  			}
   143  		case "status":
   144  			if subpath, err := BuildProvisioningPolicyStatus_FieldPath(fp[1:]); err != nil {
   145  				return nil, err
   146  			} else {
   147  				return &ProvisioningPolicy_FieldSubPath{selector: ProvisioningPolicy_FieldPathSelectorStatus, subPath: subpath}, nil
   148  			}
   149  		}
   150  	}
   151  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object ProvisioningPolicy", fp)
   152  }
   153  
   154  func ParseProvisioningPolicy_FieldPath(rawField string) (ProvisioningPolicy_FieldPath, error) {
   155  	fp, err := gotenobject.ParseRawFieldPath(rawField)
   156  	if err != nil {
   157  		return nil, err
   158  	}
   159  	return BuildProvisioningPolicy_FieldPath(fp)
   160  }
   161  
   162  func MustParseProvisioningPolicy_FieldPath(rawField string) ProvisioningPolicy_FieldPath {
   163  	fp, err := ParseProvisioningPolicy_FieldPath(rawField)
   164  	if err != nil {
   165  		panic(err)
   166  	}
   167  	return fp
   168  }
   169  
   170  type ProvisioningPolicy_FieldTerminalPath struct {
   171  	selector ProvisioningPolicy_FieldPathSelector
   172  }
   173  
   174  var _ ProvisioningPolicy_FieldPath = (*ProvisioningPolicy_FieldTerminalPath)(nil)
   175  
   176  func (fp *ProvisioningPolicy_FieldTerminalPath) Selector() ProvisioningPolicy_FieldPathSelector {
   177  	return fp.selector
   178  }
   179  
   180  // String returns path representation in proto convention
   181  func (fp *ProvisioningPolicy_FieldTerminalPath) String() string {
   182  	return fp.selector.String()
   183  }
   184  
   185  // JSONString returns path representation is JSON convention
   186  func (fp *ProvisioningPolicy_FieldTerminalPath) JSONString() string {
   187  	return strcase.ToLowerCamel(fp.String())
   188  }
   189  
   190  // Get returns all values pointed by specific field from source ProvisioningPolicy
   191  func (fp *ProvisioningPolicy_FieldTerminalPath) Get(source *ProvisioningPolicy) (values []interface{}) {
   192  	if source != nil {
   193  		switch fp.selector {
   194  		case ProvisioningPolicy_FieldPathSelectorName:
   195  			if source.Name != nil {
   196  				values = append(values, source.Name)
   197  			}
   198  		case ProvisioningPolicy_FieldPathSelectorMetadata:
   199  			if source.Metadata != nil {
   200  				values = append(values, source.Metadata)
   201  			}
   202  		case ProvisioningPolicy_FieldPathSelectorDisplayName:
   203  			values = append(values, source.DisplayName)
   204  		case ProvisioningPolicy_FieldPathSelectorDescription:
   205  			values = append(values, source.Description)
   206  		case ProvisioningPolicy_FieldPathSelectorSpec:
   207  			if source.Spec != nil {
   208  				values = append(values, source.Spec)
   209  			}
   210  		case ProvisioningPolicy_FieldPathSelectorStatus:
   211  			if source.Status != nil {
   212  				values = append(values, source.Status)
   213  			}
   214  		default:
   215  			panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy: %d", fp.selector))
   216  		}
   217  	}
   218  	return
   219  }
   220  
   221  func (fp *ProvisioningPolicy_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
   222  	return fp.Get(source.(*ProvisioningPolicy))
   223  }
   224  
   225  // GetSingle returns value pointed by specific field of from source ProvisioningPolicy
   226  func (fp *ProvisioningPolicy_FieldTerminalPath) GetSingle(source *ProvisioningPolicy) (interface{}, bool) {
   227  	switch fp.selector {
   228  	case ProvisioningPolicy_FieldPathSelectorName:
   229  		res := source.GetName()
   230  		return res, res != nil
   231  	case ProvisioningPolicy_FieldPathSelectorMetadata:
   232  		res := source.GetMetadata()
   233  		return res, res != nil
   234  	case ProvisioningPolicy_FieldPathSelectorDisplayName:
   235  		return source.GetDisplayName(), source != nil
   236  	case ProvisioningPolicy_FieldPathSelectorDescription:
   237  		return source.GetDescription(), source != nil
   238  	case ProvisioningPolicy_FieldPathSelectorSpec:
   239  		res := source.GetSpec()
   240  		return res, res != nil
   241  	case ProvisioningPolicy_FieldPathSelectorStatus:
   242  		res := source.GetStatus()
   243  		return res, res != nil
   244  	default:
   245  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy: %d", fp.selector))
   246  	}
   247  }
   248  
   249  func (fp *ProvisioningPolicy_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
   250  	return fp.GetSingle(source.(*ProvisioningPolicy))
   251  }
   252  
   253  // GetDefault returns a default value of the field type
   254  func (fp *ProvisioningPolicy_FieldTerminalPath) GetDefault() interface{} {
   255  	switch fp.selector {
   256  	case ProvisioningPolicy_FieldPathSelectorName:
   257  		return (*Name)(nil)
   258  	case ProvisioningPolicy_FieldPathSelectorMetadata:
   259  		return (*meta.Meta)(nil)
   260  	case ProvisioningPolicy_FieldPathSelectorDisplayName:
   261  		return ""
   262  	case ProvisioningPolicy_FieldPathSelectorDescription:
   263  		return ""
   264  	case ProvisioningPolicy_FieldPathSelectorSpec:
   265  		return (*ProvisioningPolicy_Spec)(nil)
   266  	case ProvisioningPolicy_FieldPathSelectorStatus:
   267  		return (*ProvisioningPolicy_Status)(nil)
   268  	default:
   269  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy: %d", fp.selector))
   270  	}
   271  }
   272  
   273  func (fp *ProvisioningPolicy_FieldTerminalPath) ClearValue(item *ProvisioningPolicy) {
   274  	if item != nil {
   275  		switch fp.selector {
   276  		case ProvisioningPolicy_FieldPathSelectorName:
   277  			item.Name = nil
   278  		case ProvisioningPolicy_FieldPathSelectorMetadata:
   279  			item.Metadata = nil
   280  		case ProvisioningPolicy_FieldPathSelectorDisplayName:
   281  			item.DisplayName = ""
   282  		case ProvisioningPolicy_FieldPathSelectorDescription:
   283  			item.Description = ""
   284  		case ProvisioningPolicy_FieldPathSelectorSpec:
   285  			item.Spec = nil
   286  		case ProvisioningPolicy_FieldPathSelectorStatus:
   287  			item.Status = nil
   288  		default:
   289  			panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy: %d", fp.selector))
   290  		}
   291  	}
   292  }
   293  
   294  func (fp *ProvisioningPolicy_FieldTerminalPath) ClearValueRaw(item proto.Message) {
   295  	fp.ClearValue(item.(*ProvisioningPolicy))
   296  }
   297  
   298  // IsLeaf - whether field path is holds simple value
   299  func (fp *ProvisioningPolicy_FieldTerminalPath) IsLeaf() bool {
   300  	return fp.selector == ProvisioningPolicy_FieldPathSelectorName ||
   301  		fp.selector == ProvisioningPolicy_FieldPathSelectorDisplayName ||
   302  		fp.selector == ProvisioningPolicy_FieldPathSelectorDescription
   303  }
   304  
   305  func (fp *ProvisioningPolicy_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
   306  	return []gotenobject.FieldPath{fp}
   307  }
   308  
   309  func (fp *ProvisioningPolicy_FieldTerminalPath) WithIValue(value interface{}) ProvisioningPolicy_FieldPathValue {
   310  	switch fp.selector {
   311  	case ProvisioningPolicy_FieldPathSelectorName:
   312  		return &ProvisioningPolicy_FieldTerminalPathValue{ProvisioningPolicy_FieldTerminalPath: *fp, value: value.(*Name)}
   313  	case ProvisioningPolicy_FieldPathSelectorMetadata:
   314  		return &ProvisioningPolicy_FieldTerminalPathValue{ProvisioningPolicy_FieldTerminalPath: *fp, value: value.(*meta.Meta)}
   315  	case ProvisioningPolicy_FieldPathSelectorDisplayName:
   316  		return &ProvisioningPolicy_FieldTerminalPathValue{ProvisioningPolicy_FieldTerminalPath: *fp, value: value.(string)}
   317  	case ProvisioningPolicy_FieldPathSelectorDescription:
   318  		return &ProvisioningPolicy_FieldTerminalPathValue{ProvisioningPolicy_FieldTerminalPath: *fp, value: value.(string)}
   319  	case ProvisioningPolicy_FieldPathSelectorSpec:
   320  		return &ProvisioningPolicy_FieldTerminalPathValue{ProvisioningPolicy_FieldTerminalPath: *fp, value: value.(*ProvisioningPolicy_Spec)}
   321  	case ProvisioningPolicy_FieldPathSelectorStatus:
   322  		return &ProvisioningPolicy_FieldTerminalPathValue{ProvisioningPolicy_FieldTerminalPath: *fp, value: value.(*ProvisioningPolicy_Status)}
   323  	default:
   324  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy: %d", fp.selector))
   325  	}
   326  }
   327  
   328  func (fp *ProvisioningPolicy_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
   329  	return fp.WithIValue(value)
   330  }
   331  
   332  func (fp *ProvisioningPolicy_FieldTerminalPath) WithIArrayOfValues(values interface{}) ProvisioningPolicy_FieldPathArrayOfValues {
   333  	fpaov := &ProvisioningPolicy_FieldTerminalPathArrayOfValues{ProvisioningPolicy_FieldTerminalPath: *fp}
   334  	switch fp.selector {
   335  	case ProvisioningPolicy_FieldPathSelectorName:
   336  		return &ProvisioningPolicy_FieldTerminalPathArrayOfValues{ProvisioningPolicy_FieldTerminalPath: *fp, values: values.([]*Name)}
   337  	case ProvisioningPolicy_FieldPathSelectorMetadata:
   338  		return &ProvisioningPolicy_FieldTerminalPathArrayOfValues{ProvisioningPolicy_FieldTerminalPath: *fp, values: values.([]*meta.Meta)}
   339  	case ProvisioningPolicy_FieldPathSelectorDisplayName:
   340  		return &ProvisioningPolicy_FieldTerminalPathArrayOfValues{ProvisioningPolicy_FieldTerminalPath: *fp, values: values.([]string)}
   341  	case ProvisioningPolicy_FieldPathSelectorDescription:
   342  		return &ProvisioningPolicy_FieldTerminalPathArrayOfValues{ProvisioningPolicy_FieldTerminalPath: *fp, values: values.([]string)}
   343  	case ProvisioningPolicy_FieldPathSelectorSpec:
   344  		return &ProvisioningPolicy_FieldTerminalPathArrayOfValues{ProvisioningPolicy_FieldTerminalPath: *fp, values: values.([]*ProvisioningPolicy_Spec)}
   345  	case ProvisioningPolicy_FieldPathSelectorStatus:
   346  		return &ProvisioningPolicy_FieldTerminalPathArrayOfValues{ProvisioningPolicy_FieldTerminalPath: *fp, values: values.([]*ProvisioningPolicy_Status)}
   347  	default:
   348  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy: %d", fp.selector))
   349  	}
   350  	return fpaov
   351  }
   352  
   353  func (fp *ProvisioningPolicy_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
   354  	return fp.WithIArrayOfValues(values)
   355  }
   356  
   357  func (fp *ProvisioningPolicy_FieldTerminalPath) WithIArrayItemValue(value interface{}) ProvisioningPolicy_FieldPathArrayItemValue {
   358  	switch fp.selector {
   359  	default:
   360  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy: %d", fp.selector))
   361  	}
   362  }
   363  
   364  func (fp *ProvisioningPolicy_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   365  	return fp.WithIArrayItemValue(value)
   366  }
   367  
   368  type ProvisioningPolicy_FieldSubPath struct {
   369  	selector ProvisioningPolicy_FieldPathSelector
   370  	subPath  gotenobject.FieldPath
   371  }
   372  
   373  var _ ProvisioningPolicy_FieldPath = (*ProvisioningPolicy_FieldSubPath)(nil)
   374  
   375  func (fps *ProvisioningPolicy_FieldSubPath) Selector() ProvisioningPolicy_FieldPathSelector {
   376  	return fps.selector
   377  }
   378  func (fps *ProvisioningPolicy_FieldSubPath) AsMetadataSubPath() (meta.Meta_FieldPath, bool) {
   379  	res, ok := fps.subPath.(meta.Meta_FieldPath)
   380  	return res, ok
   381  }
   382  func (fps *ProvisioningPolicy_FieldSubPath) AsSpecSubPath() (ProvisioningPolicySpec_FieldPath, bool) {
   383  	res, ok := fps.subPath.(ProvisioningPolicySpec_FieldPath)
   384  	return res, ok
   385  }
   386  func (fps *ProvisioningPolicy_FieldSubPath) AsStatusSubPath() (ProvisioningPolicyStatus_FieldPath, bool) {
   387  	res, ok := fps.subPath.(ProvisioningPolicyStatus_FieldPath)
   388  	return res, ok
   389  }
   390  
   391  // String returns path representation in proto convention
   392  func (fps *ProvisioningPolicy_FieldSubPath) String() string {
   393  	return fps.selector.String() + "." + fps.subPath.String()
   394  }
   395  
   396  // JSONString returns path representation is JSON convention
   397  func (fps *ProvisioningPolicy_FieldSubPath) JSONString() string {
   398  	return strcase.ToLowerCamel(fps.selector.String()) + "." + fps.subPath.JSONString()
   399  }
   400  
   401  // Get returns all values pointed by selected field from source ProvisioningPolicy
   402  func (fps *ProvisioningPolicy_FieldSubPath) Get(source *ProvisioningPolicy) (values []interface{}) {
   403  	switch fps.selector {
   404  	case ProvisioningPolicy_FieldPathSelectorMetadata:
   405  		values = append(values, fps.subPath.GetRaw(source.GetMetadata())...)
   406  	case ProvisioningPolicy_FieldPathSelectorSpec:
   407  		values = append(values, fps.subPath.GetRaw(source.GetSpec())...)
   408  	case ProvisioningPolicy_FieldPathSelectorStatus:
   409  		values = append(values, fps.subPath.GetRaw(source.GetStatus())...)
   410  	default:
   411  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy: %d", fps.selector))
   412  	}
   413  	return
   414  }
   415  
   416  func (fps *ProvisioningPolicy_FieldSubPath) GetRaw(source proto.Message) []interface{} {
   417  	return fps.Get(source.(*ProvisioningPolicy))
   418  }
   419  
   420  // GetSingle returns value of selected field from source ProvisioningPolicy
   421  func (fps *ProvisioningPolicy_FieldSubPath) GetSingle(source *ProvisioningPolicy) (interface{}, bool) {
   422  	switch fps.selector {
   423  	case ProvisioningPolicy_FieldPathSelectorMetadata:
   424  		if source.GetMetadata() == nil {
   425  			return nil, false
   426  		}
   427  		return fps.subPath.GetSingleRaw(source.GetMetadata())
   428  	case ProvisioningPolicy_FieldPathSelectorSpec:
   429  		if source.GetSpec() == nil {
   430  			return nil, false
   431  		}
   432  		return fps.subPath.GetSingleRaw(source.GetSpec())
   433  	case ProvisioningPolicy_FieldPathSelectorStatus:
   434  		if source.GetStatus() == nil {
   435  			return nil, false
   436  		}
   437  		return fps.subPath.GetSingleRaw(source.GetStatus())
   438  	default:
   439  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy: %d", fps.selector))
   440  	}
   441  }
   442  
   443  func (fps *ProvisioningPolicy_FieldSubPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
   444  	return fps.GetSingle(source.(*ProvisioningPolicy))
   445  }
   446  
   447  // GetDefault returns a default value of the field type
   448  func (fps *ProvisioningPolicy_FieldSubPath) GetDefault() interface{} {
   449  	return fps.subPath.GetDefault()
   450  }
   451  
   452  func (fps *ProvisioningPolicy_FieldSubPath) ClearValue(item *ProvisioningPolicy) {
   453  	if item != nil {
   454  		switch fps.selector {
   455  		case ProvisioningPolicy_FieldPathSelectorMetadata:
   456  			fps.subPath.ClearValueRaw(item.Metadata)
   457  		case ProvisioningPolicy_FieldPathSelectorSpec:
   458  			fps.subPath.ClearValueRaw(item.Spec)
   459  		case ProvisioningPolicy_FieldPathSelectorStatus:
   460  			fps.subPath.ClearValueRaw(item.Status)
   461  		default:
   462  			panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy: %d", fps.selector))
   463  		}
   464  	}
   465  }
   466  
   467  func (fps *ProvisioningPolicy_FieldSubPath) ClearValueRaw(item proto.Message) {
   468  	fps.ClearValue(item.(*ProvisioningPolicy))
   469  }
   470  
   471  // IsLeaf - whether field path is holds simple value
   472  func (fps *ProvisioningPolicy_FieldSubPath) IsLeaf() bool {
   473  	return fps.subPath.IsLeaf()
   474  }
   475  
   476  func (fps *ProvisioningPolicy_FieldSubPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
   477  	iPaths := []gotenobject.FieldPath{&ProvisioningPolicy_FieldTerminalPath{selector: fps.selector}}
   478  	iPaths = append(iPaths, fps.subPath.SplitIntoTerminalIPaths()...)
   479  	return iPaths
   480  }
   481  
   482  func (fps *ProvisioningPolicy_FieldSubPath) WithIValue(value interface{}) ProvisioningPolicy_FieldPathValue {
   483  	return &ProvisioningPolicy_FieldSubPathValue{fps, fps.subPath.WithRawIValue(value)}
   484  }
   485  
   486  func (fps *ProvisioningPolicy_FieldSubPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
   487  	return fps.WithIValue(value)
   488  }
   489  
   490  func (fps *ProvisioningPolicy_FieldSubPath) WithIArrayOfValues(values interface{}) ProvisioningPolicy_FieldPathArrayOfValues {
   491  	return &ProvisioningPolicy_FieldSubPathArrayOfValues{fps, fps.subPath.WithRawIArrayOfValues(values)}
   492  }
   493  
   494  func (fps *ProvisioningPolicy_FieldSubPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
   495  	return fps.WithIArrayOfValues(values)
   496  }
   497  
   498  func (fps *ProvisioningPolicy_FieldSubPath) WithIArrayItemValue(value interface{}) ProvisioningPolicy_FieldPathArrayItemValue {
   499  	return &ProvisioningPolicy_FieldSubPathArrayItemValue{fps, fps.subPath.WithRawIArrayItemValue(value)}
   500  }
   501  
   502  func (fps *ProvisioningPolicy_FieldSubPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   503  	return fps.WithIArrayItemValue(value)
   504  }
   505  
   506  // ProvisioningPolicy_FieldPathValue allows storing values for ProvisioningPolicy fields according to their type
   507  type ProvisioningPolicy_FieldPathValue interface {
   508  	ProvisioningPolicy_FieldPath
   509  	gotenobject.FieldPathValue
   510  	SetTo(target **ProvisioningPolicy)
   511  	CompareWith(*ProvisioningPolicy) (cmp int, comparable bool)
   512  }
   513  
   514  func ParseProvisioningPolicy_FieldPathValue(pathStr, valueStr string) (ProvisioningPolicy_FieldPathValue, error) {
   515  	fp, err := ParseProvisioningPolicy_FieldPath(pathStr)
   516  	if err != nil {
   517  		return nil, err
   518  	}
   519  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
   520  	if err != nil {
   521  		return nil, status.Errorf(codes.InvalidArgument, "error parsing ProvisioningPolicy field path value from %s: %v", valueStr, err)
   522  	}
   523  	return fpv.(ProvisioningPolicy_FieldPathValue), nil
   524  }
   525  
   526  func MustParseProvisioningPolicy_FieldPathValue(pathStr, valueStr string) ProvisioningPolicy_FieldPathValue {
   527  	fpv, err := ParseProvisioningPolicy_FieldPathValue(pathStr, valueStr)
   528  	if err != nil {
   529  		panic(err)
   530  	}
   531  	return fpv
   532  }
   533  
   534  type ProvisioningPolicy_FieldTerminalPathValue struct {
   535  	ProvisioningPolicy_FieldTerminalPath
   536  	value interface{}
   537  }
   538  
   539  var _ ProvisioningPolicy_FieldPathValue = (*ProvisioningPolicy_FieldTerminalPathValue)(nil)
   540  
   541  // GetRawValue returns raw value stored under selected path for 'ProvisioningPolicy' as interface{}
   542  func (fpv *ProvisioningPolicy_FieldTerminalPathValue) GetRawValue() interface{} {
   543  	return fpv.value
   544  }
   545  func (fpv *ProvisioningPolicy_FieldTerminalPathValue) AsNameValue() (*Name, bool) {
   546  	res, ok := fpv.value.(*Name)
   547  	return res, ok
   548  }
   549  func (fpv *ProvisioningPolicy_FieldTerminalPathValue) AsMetadataValue() (*meta.Meta, bool) {
   550  	res, ok := fpv.value.(*meta.Meta)
   551  	return res, ok
   552  }
   553  func (fpv *ProvisioningPolicy_FieldTerminalPathValue) AsDisplayNameValue() (string, bool) {
   554  	res, ok := fpv.value.(string)
   555  	return res, ok
   556  }
   557  func (fpv *ProvisioningPolicy_FieldTerminalPathValue) AsDescriptionValue() (string, bool) {
   558  	res, ok := fpv.value.(string)
   559  	return res, ok
   560  }
   561  func (fpv *ProvisioningPolicy_FieldTerminalPathValue) AsSpecValue() (*ProvisioningPolicy_Spec, bool) {
   562  	res, ok := fpv.value.(*ProvisioningPolicy_Spec)
   563  	return res, ok
   564  }
   565  func (fpv *ProvisioningPolicy_FieldTerminalPathValue) AsStatusValue() (*ProvisioningPolicy_Status, bool) {
   566  	res, ok := fpv.value.(*ProvisioningPolicy_Status)
   567  	return res, ok
   568  }
   569  
   570  // SetTo stores value for selected field for object ProvisioningPolicy
   571  func (fpv *ProvisioningPolicy_FieldTerminalPathValue) SetTo(target **ProvisioningPolicy) {
   572  	if *target == nil {
   573  		*target = new(ProvisioningPolicy)
   574  	}
   575  	switch fpv.selector {
   576  	case ProvisioningPolicy_FieldPathSelectorName:
   577  		(*target).Name = fpv.value.(*Name)
   578  	case ProvisioningPolicy_FieldPathSelectorMetadata:
   579  		(*target).Metadata = fpv.value.(*meta.Meta)
   580  	case ProvisioningPolicy_FieldPathSelectorDisplayName:
   581  		(*target).DisplayName = fpv.value.(string)
   582  	case ProvisioningPolicy_FieldPathSelectorDescription:
   583  		(*target).Description = fpv.value.(string)
   584  	case ProvisioningPolicy_FieldPathSelectorSpec:
   585  		(*target).Spec = fpv.value.(*ProvisioningPolicy_Spec)
   586  	case ProvisioningPolicy_FieldPathSelectorStatus:
   587  		(*target).Status = fpv.value.(*ProvisioningPolicy_Status)
   588  	default:
   589  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy: %d", fpv.selector))
   590  	}
   591  }
   592  
   593  func (fpv *ProvisioningPolicy_FieldTerminalPathValue) SetToRaw(target proto.Message) {
   594  	typedObject := target.(*ProvisioningPolicy)
   595  	fpv.SetTo(&typedObject)
   596  }
   597  
   598  // CompareWith compares value in the 'ProvisioningPolicy_FieldTerminalPathValue' with the value under path in 'ProvisioningPolicy'.
   599  func (fpv *ProvisioningPolicy_FieldTerminalPathValue) CompareWith(source *ProvisioningPolicy) (int, bool) {
   600  	switch fpv.selector {
   601  	case ProvisioningPolicy_FieldPathSelectorName:
   602  		leftValue := fpv.value.(*Name)
   603  		rightValue := source.GetName()
   604  		if leftValue == nil {
   605  			if rightValue != nil {
   606  				return -1, true
   607  			}
   608  			return 0, true
   609  		}
   610  		if rightValue == nil {
   611  			return 1, true
   612  		}
   613  		if leftValue.String() == rightValue.String() {
   614  			return 0, true
   615  		} else if leftValue.String() < rightValue.String() {
   616  			return -1, true
   617  		} else {
   618  			return 1, true
   619  		}
   620  	case ProvisioningPolicy_FieldPathSelectorMetadata:
   621  		return 0, false
   622  	case ProvisioningPolicy_FieldPathSelectorDisplayName:
   623  		leftValue := fpv.value.(string)
   624  		rightValue := source.GetDisplayName()
   625  		if (leftValue) == (rightValue) {
   626  			return 0, true
   627  		} else if (leftValue) < (rightValue) {
   628  			return -1, true
   629  		} else {
   630  			return 1, true
   631  		}
   632  	case ProvisioningPolicy_FieldPathSelectorDescription:
   633  		leftValue := fpv.value.(string)
   634  		rightValue := source.GetDescription()
   635  		if (leftValue) == (rightValue) {
   636  			return 0, true
   637  		} else if (leftValue) < (rightValue) {
   638  			return -1, true
   639  		} else {
   640  			return 1, true
   641  		}
   642  	case ProvisioningPolicy_FieldPathSelectorSpec:
   643  		return 0, false
   644  	case ProvisioningPolicy_FieldPathSelectorStatus:
   645  		return 0, false
   646  	default:
   647  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy: %d", fpv.selector))
   648  	}
   649  }
   650  
   651  func (fpv *ProvisioningPolicy_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
   652  	return fpv.CompareWith(source.(*ProvisioningPolicy))
   653  }
   654  
   655  type ProvisioningPolicy_FieldSubPathValue struct {
   656  	ProvisioningPolicy_FieldPath
   657  	subPathValue gotenobject.FieldPathValue
   658  }
   659  
   660  var _ ProvisioningPolicy_FieldPathValue = (*ProvisioningPolicy_FieldSubPathValue)(nil)
   661  
   662  func (fpvs *ProvisioningPolicy_FieldSubPathValue) AsMetadataPathValue() (meta.Meta_FieldPathValue, bool) {
   663  	res, ok := fpvs.subPathValue.(meta.Meta_FieldPathValue)
   664  	return res, ok
   665  }
   666  func (fpvs *ProvisioningPolicy_FieldSubPathValue) AsSpecPathValue() (ProvisioningPolicySpec_FieldPathValue, bool) {
   667  	res, ok := fpvs.subPathValue.(ProvisioningPolicySpec_FieldPathValue)
   668  	return res, ok
   669  }
   670  func (fpvs *ProvisioningPolicy_FieldSubPathValue) AsStatusPathValue() (ProvisioningPolicyStatus_FieldPathValue, bool) {
   671  	res, ok := fpvs.subPathValue.(ProvisioningPolicyStatus_FieldPathValue)
   672  	return res, ok
   673  }
   674  
   675  func (fpvs *ProvisioningPolicy_FieldSubPathValue) SetTo(target **ProvisioningPolicy) {
   676  	if *target == nil {
   677  		*target = new(ProvisioningPolicy)
   678  	}
   679  	switch fpvs.Selector() {
   680  	case ProvisioningPolicy_FieldPathSelectorMetadata:
   681  		fpvs.subPathValue.(meta.Meta_FieldPathValue).SetTo(&(*target).Metadata)
   682  	case ProvisioningPolicy_FieldPathSelectorSpec:
   683  		fpvs.subPathValue.(ProvisioningPolicySpec_FieldPathValue).SetTo(&(*target).Spec)
   684  	case ProvisioningPolicy_FieldPathSelectorStatus:
   685  		fpvs.subPathValue.(ProvisioningPolicyStatus_FieldPathValue).SetTo(&(*target).Status)
   686  	default:
   687  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy: %d", fpvs.Selector()))
   688  	}
   689  }
   690  
   691  func (fpvs *ProvisioningPolicy_FieldSubPathValue) SetToRaw(target proto.Message) {
   692  	typedObject := target.(*ProvisioningPolicy)
   693  	fpvs.SetTo(&typedObject)
   694  }
   695  
   696  func (fpvs *ProvisioningPolicy_FieldSubPathValue) GetRawValue() interface{} {
   697  	return fpvs.subPathValue.GetRawValue()
   698  }
   699  
   700  func (fpvs *ProvisioningPolicy_FieldSubPathValue) CompareWith(source *ProvisioningPolicy) (int, bool) {
   701  	switch fpvs.Selector() {
   702  	case ProvisioningPolicy_FieldPathSelectorMetadata:
   703  		return fpvs.subPathValue.(meta.Meta_FieldPathValue).CompareWith(source.GetMetadata())
   704  	case ProvisioningPolicy_FieldPathSelectorSpec:
   705  		return fpvs.subPathValue.(ProvisioningPolicySpec_FieldPathValue).CompareWith(source.GetSpec())
   706  	case ProvisioningPolicy_FieldPathSelectorStatus:
   707  		return fpvs.subPathValue.(ProvisioningPolicyStatus_FieldPathValue).CompareWith(source.GetStatus())
   708  	default:
   709  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy: %d", fpvs.Selector()))
   710  	}
   711  }
   712  
   713  func (fpvs *ProvisioningPolicy_FieldSubPathValue) CompareWithRaw(source proto.Message) (int, bool) {
   714  	return fpvs.CompareWith(source.(*ProvisioningPolicy))
   715  }
   716  
   717  // ProvisioningPolicy_FieldPathArrayItemValue allows storing single item in Path-specific values for ProvisioningPolicy according to their type
   718  // Present only for array (repeated) types.
   719  type ProvisioningPolicy_FieldPathArrayItemValue interface {
   720  	gotenobject.FieldPathArrayItemValue
   721  	ProvisioningPolicy_FieldPath
   722  	ContainsValue(*ProvisioningPolicy) bool
   723  }
   724  
   725  // ParseProvisioningPolicy_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
   726  func ParseProvisioningPolicy_FieldPathArrayItemValue(pathStr, valueStr string) (ProvisioningPolicy_FieldPathArrayItemValue, error) {
   727  	fp, err := ParseProvisioningPolicy_FieldPath(pathStr)
   728  	if err != nil {
   729  		return nil, err
   730  	}
   731  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
   732  	if err != nil {
   733  		return nil, status.Errorf(codes.InvalidArgument, "error parsing ProvisioningPolicy field path array item value from %s: %v", valueStr, err)
   734  	}
   735  	return fpaiv.(ProvisioningPolicy_FieldPathArrayItemValue), nil
   736  }
   737  
   738  func MustParseProvisioningPolicy_FieldPathArrayItemValue(pathStr, valueStr string) ProvisioningPolicy_FieldPathArrayItemValue {
   739  	fpaiv, err := ParseProvisioningPolicy_FieldPathArrayItemValue(pathStr, valueStr)
   740  	if err != nil {
   741  		panic(err)
   742  	}
   743  	return fpaiv
   744  }
   745  
   746  type ProvisioningPolicy_FieldTerminalPathArrayItemValue struct {
   747  	ProvisioningPolicy_FieldTerminalPath
   748  	value interface{}
   749  }
   750  
   751  var _ ProvisioningPolicy_FieldPathArrayItemValue = (*ProvisioningPolicy_FieldTerminalPathArrayItemValue)(nil)
   752  
   753  // GetRawValue returns stored element value for array in object ProvisioningPolicy as interface{}
   754  func (fpaiv *ProvisioningPolicy_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
   755  	return fpaiv.value
   756  }
   757  
   758  func (fpaiv *ProvisioningPolicy_FieldTerminalPathArrayItemValue) GetSingle(source *ProvisioningPolicy) (interface{}, bool) {
   759  	return nil, false
   760  }
   761  
   762  func (fpaiv *ProvisioningPolicy_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
   763  	return fpaiv.GetSingle(source.(*ProvisioningPolicy))
   764  }
   765  
   766  // Contains returns a boolean indicating if value that is being held is present in given 'ProvisioningPolicy'
   767  func (fpaiv *ProvisioningPolicy_FieldTerminalPathArrayItemValue) ContainsValue(source *ProvisioningPolicy) bool {
   768  	slice := fpaiv.ProvisioningPolicy_FieldTerminalPath.Get(source)
   769  	for _, v := range slice {
   770  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
   771  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
   772  				return true
   773  			}
   774  		} else if reflect.DeepEqual(v, fpaiv.value) {
   775  			return true
   776  		}
   777  	}
   778  	return false
   779  }
   780  
   781  type ProvisioningPolicy_FieldSubPathArrayItemValue struct {
   782  	ProvisioningPolicy_FieldPath
   783  	subPathItemValue gotenobject.FieldPathArrayItemValue
   784  }
   785  
   786  // GetRawValue returns stored array item value
   787  func (fpaivs *ProvisioningPolicy_FieldSubPathArrayItemValue) GetRawItemValue() interface{} {
   788  	return fpaivs.subPathItemValue.GetRawItemValue()
   789  }
   790  func (fpaivs *ProvisioningPolicy_FieldSubPathArrayItemValue) AsMetadataPathItemValue() (meta.Meta_FieldPathArrayItemValue, bool) {
   791  	res, ok := fpaivs.subPathItemValue.(meta.Meta_FieldPathArrayItemValue)
   792  	return res, ok
   793  }
   794  func (fpaivs *ProvisioningPolicy_FieldSubPathArrayItemValue) AsSpecPathItemValue() (ProvisioningPolicySpec_FieldPathArrayItemValue, bool) {
   795  	res, ok := fpaivs.subPathItemValue.(ProvisioningPolicySpec_FieldPathArrayItemValue)
   796  	return res, ok
   797  }
   798  func (fpaivs *ProvisioningPolicy_FieldSubPathArrayItemValue) AsStatusPathItemValue() (ProvisioningPolicyStatus_FieldPathArrayItemValue, bool) {
   799  	res, ok := fpaivs.subPathItemValue.(ProvisioningPolicyStatus_FieldPathArrayItemValue)
   800  	return res, ok
   801  }
   802  
   803  // Contains returns a boolean indicating if value that is being held is present in given 'ProvisioningPolicy'
   804  func (fpaivs *ProvisioningPolicy_FieldSubPathArrayItemValue) ContainsValue(source *ProvisioningPolicy) bool {
   805  	switch fpaivs.Selector() {
   806  	case ProvisioningPolicy_FieldPathSelectorMetadata:
   807  		return fpaivs.subPathItemValue.(meta.Meta_FieldPathArrayItemValue).ContainsValue(source.GetMetadata())
   808  	case ProvisioningPolicy_FieldPathSelectorSpec:
   809  		return fpaivs.subPathItemValue.(ProvisioningPolicySpec_FieldPathArrayItemValue).ContainsValue(source.GetSpec())
   810  	case ProvisioningPolicy_FieldPathSelectorStatus:
   811  		return fpaivs.subPathItemValue.(ProvisioningPolicyStatus_FieldPathArrayItemValue).ContainsValue(source.GetStatus())
   812  	default:
   813  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy: %d", fpaivs.Selector()))
   814  	}
   815  }
   816  
   817  // ProvisioningPolicy_FieldPathArrayOfValues allows storing slice of values for ProvisioningPolicy fields according to their type
   818  type ProvisioningPolicy_FieldPathArrayOfValues interface {
   819  	gotenobject.FieldPathArrayOfValues
   820  	ProvisioningPolicy_FieldPath
   821  }
   822  
   823  func ParseProvisioningPolicy_FieldPathArrayOfValues(pathStr, valuesStr string) (ProvisioningPolicy_FieldPathArrayOfValues, error) {
   824  	fp, err := ParseProvisioningPolicy_FieldPath(pathStr)
   825  	if err != nil {
   826  		return nil, err
   827  	}
   828  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
   829  	if err != nil {
   830  		return nil, status.Errorf(codes.InvalidArgument, "error parsing ProvisioningPolicy field path array of values from %s: %v", valuesStr, err)
   831  	}
   832  	return fpaov.(ProvisioningPolicy_FieldPathArrayOfValues), nil
   833  }
   834  
   835  func MustParseProvisioningPolicy_FieldPathArrayOfValues(pathStr, valuesStr string) ProvisioningPolicy_FieldPathArrayOfValues {
   836  	fpaov, err := ParseProvisioningPolicy_FieldPathArrayOfValues(pathStr, valuesStr)
   837  	if err != nil {
   838  		panic(err)
   839  	}
   840  	return fpaov
   841  }
   842  
   843  type ProvisioningPolicy_FieldTerminalPathArrayOfValues struct {
   844  	ProvisioningPolicy_FieldTerminalPath
   845  	values interface{}
   846  }
   847  
   848  var _ ProvisioningPolicy_FieldPathArrayOfValues = (*ProvisioningPolicy_FieldTerminalPathArrayOfValues)(nil)
   849  
   850  func (fpaov *ProvisioningPolicy_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
   851  	switch fpaov.selector {
   852  	case ProvisioningPolicy_FieldPathSelectorName:
   853  		for _, v := range fpaov.values.([]*Name) {
   854  			values = append(values, v)
   855  		}
   856  	case ProvisioningPolicy_FieldPathSelectorMetadata:
   857  		for _, v := range fpaov.values.([]*meta.Meta) {
   858  			values = append(values, v)
   859  		}
   860  	case ProvisioningPolicy_FieldPathSelectorDisplayName:
   861  		for _, v := range fpaov.values.([]string) {
   862  			values = append(values, v)
   863  		}
   864  	case ProvisioningPolicy_FieldPathSelectorDescription:
   865  		for _, v := range fpaov.values.([]string) {
   866  			values = append(values, v)
   867  		}
   868  	case ProvisioningPolicy_FieldPathSelectorSpec:
   869  		for _, v := range fpaov.values.([]*ProvisioningPolicy_Spec) {
   870  			values = append(values, v)
   871  		}
   872  	case ProvisioningPolicy_FieldPathSelectorStatus:
   873  		for _, v := range fpaov.values.([]*ProvisioningPolicy_Status) {
   874  			values = append(values, v)
   875  		}
   876  	}
   877  	return
   878  }
   879  func (fpaov *ProvisioningPolicy_FieldTerminalPathArrayOfValues) AsNameArrayOfValues() ([]*Name, bool) {
   880  	res, ok := fpaov.values.([]*Name)
   881  	return res, ok
   882  }
   883  func (fpaov *ProvisioningPolicy_FieldTerminalPathArrayOfValues) AsMetadataArrayOfValues() ([]*meta.Meta, bool) {
   884  	res, ok := fpaov.values.([]*meta.Meta)
   885  	return res, ok
   886  }
   887  func (fpaov *ProvisioningPolicy_FieldTerminalPathArrayOfValues) AsDisplayNameArrayOfValues() ([]string, bool) {
   888  	res, ok := fpaov.values.([]string)
   889  	return res, ok
   890  }
   891  func (fpaov *ProvisioningPolicy_FieldTerminalPathArrayOfValues) AsDescriptionArrayOfValues() ([]string, bool) {
   892  	res, ok := fpaov.values.([]string)
   893  	return res, ok
   894  }
   895  func (fpaov *ProvisioningPolicy_FieldTerminalPathArrayOfValues) AsSpecArrayOfValues() ([]*ProvisioningPolicy_Spec, bool) {
   896  	res, ok := fpaov.values.([]*ProvisioningPolicy_Spec)
   897  	return res, ok
   898  }
   899  func (fpaov *ProvisioningPolicy_FieldTerminalPathArrayOfValues) AsStatusArrayOfValues() ([]*ProvisioningPolicy_Status, bool) {
   900  	res, ok := fpaov.values.([]*ProvisioningPolicy_Status)
   901  	return res, ok
   902  }
   903  
   904  type ProvisioningPolicy_FieldSubPathArrayOfValues struct {
   905  	ProvisioningPolicy_FieldPath
   906  	subPathArrayOfValues gotenobject.FieldPathArrayOfValues
   907  }
   908  
   909  var _ ProvisioningPolicy_FieldPathArrayOfValues = (*ProvisioningPolicy_FieldSubPathArrayOfValues)(nil)
   910  
   911  func (fpsaov *ProvisioningPolicy_FieldSubPathArrayOfValues) GetRawValues() []interface{} {
   912  	return fpsaov.subPathArrayOfValues.GetRawValues()
   913  }
   914  func (fpsaov *ProvisioningPolicy_FieldSubPathArrayOfValues) AsMetadataPathArrayOfValues() (meta.Meta_FieldPathArrayOfValues, bool) {
   915  	res, ok := fpsaov.subPathArrayOfValues.(meta.Meta_FieldPathArrayOfValues)
   916  	return res, ok
   917  }
   918  func (fpsaov *ProvisioningPolicy_FieldSubPathArrayOfValues) AsSpecPathArrayOfValues() (ProvisioningPolicySpec_FieldPathArrayOfValues, bool) {
   919  	res, ok := fpsaov.subPathArrayOfValues.(ProvisioningPolicySpec_FieldPathArrayOfValues)
   920  	return res, ok
   921  }
   922  func (fpsaov *ProvisioningPolicy_FieldSubPathArrayOfValues) AsStatusPathArrayOfValues() (ProvisioningPolicyStatus_FieldPathArrayOfValues, bool) {
   923  	res, ok := fpsaov.subPathArrayOfValues.(ProvisioningPolicyStatus_FieldPathArrayOfValues)
   924  	return res, ok
   925  }
   926  
   927  // FieldPath provides implementation to handle
   928  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
   929  type ProvisioningPolicySpec_FieldPath interface {
   930  	gotenobject.FieldPath
   931  	Selector() ProvisioningPolicySpec_FieldPathSelector
   932  	Get(source *ProvisioningPolicy_Spec) []interface{}
   933  	GetSingle(source *ProvisioningPolicy_Spec) (interface{}, bool)
   934  	ClearValue(item *ProvisioningPolicy_Spec)
   935  
   936  	// Those methods build corresponding ProvisioningPolicySpec_FieldPathValue
   937  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
   938  	WithIValue(value interface{}) ProvisioningPolicySpec_FieldPathValue
   939  	WithIArrayOfValues(values interface{}) ProvisioningPolicySpec_FieldPathArrayOfValues
   940  	WithIArrayItemValue(value interface{}) ProvisioningPolicySpec_FieldPathArrayItemValue
   941  }
   942  
   943  type ProvisioningPolicySpec_FieldPathSelector int32
   944  
   945  const (
   946  	ProvisioningPolicySpec_FieldPathSelectorMode                    ProvisioningPolicySpec_FieldPathSelector = 0
   947  	ProvisioningPolicySpec_FieldPathSelectorServiceAccount          ProvisioningPolicySpec_FieldPathSelector = 1
   948  	ProvisioningPolicySpec_FieldPathSelectorDeviceNameFormat        ProvisioningPolicySpec_FieldPathSelector = 2
   949  	ProvisioningPolicySpec_FieldPathSelectorDeviceDisplayNameFormat ProvisioningPolicySpec_FieldPathSelector = 3
   950  	ProvisioningPolicySpec_FieldPathSelectorLabels                  ProvisioningPolicySpec_FieldPathSelector = 4
   951  	ProvisioningPolicySpec_FieldPathSelectorTemplate                ProvisioningPolicySpec_FieldPathSelector = 5
   952  	ProvisioningPolicySpec_FieldPathSelectorIdentityFieldPaths      ProvisioningPolicySpec_FieldPathSelector = 6
   953  	ProvisioningPolicySpec_FieldPathSelectorRole                    ProvisioningPolicySpec_FieldPathSelector = 7
   954  	ProvisioningPolicySpec_FieldPathSelectorScopeParams             ProvisioningPolicySpec_FieldPathSelector = 8
   955  	ProvisioningPolicySpec_FieldPathSelectorCondition               ProvisioningPolicySpec_FieldPathSelector = 9
   956  	ProvisioningPolicySpec_FieldPathSelectorConditionParams         ProvisioningPolicySpec_FieldPathSelector = 10
   957  	ProvisioningPolicySpec_FieldPathSelectorExtraConditions         ProvisioningPolicySpec_FieldPathSelector = 11
   958  )
   959  
   960  func (s ProvisioningPolicySpec_FieldPathSelector) String() string {
   961  	switch s {
   962  	case ProvisioningPolicySpec_FieldPathSelectorMode:
   963  		return "mode"
   964  	case ProvisioningPolicySpec_FieldPathSelectorServiceAccount:
   965  		return "service_account"
   966  	case ProvisioningPolicySpec_FieldPathSelectorDeviceNameFormat:
   967  		return "device_name_format"
   968  	case ProvisioningPolicySpec_FieldPathSelectorDeviceDisplayNameFormat:
   969  		return "device_display_name_format"
   970  	case ProvisioningPolicySpec_FieldPathSelectorLabels:
   971  		return "labels"
   972  	case ProvisioningPolicySpec_FieldPathSelectorTemplate:
   973  		return "template"
   974  	case ProvisioningPolicySpec_FieldPathSelectorIdentityFieldPaths:
   975  		return "identity_field_paths"
   976  	case ProvisioningPolicySpec_FieldPathSelectorRole:
   977  		return "role"
   978  	case ProvisioningPolicySpec_FieldPathSelectorScopeParams:
   979  		return "scope_params"
   980  	case ProvisioningPolicySpec_FieldPathSelectorCondition:
   981  		return "condition"
   982  	case ProvisioningPolicySpec_FieldPathSelectorConditionParams:
   983  		return "condition_params"
   984  	case ProvisioningPolicySpec_FieldPathSelectorExtraConditions:
   985  		return "extra_conditions"
   986  	default:
   987  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec: %d", s))
   988  	}
   989  }
   990  
   991  func BuildProvisioningPolicySpec_FieldPath(fp gotenobject.RawFieldPath) (ProvisioningPolicySpec_FieldPath, error) {
   992  	if len(fp) == 0 {
   993  		return nil, status.Error(codes.InvalidArgument, "empty field path for object ProvisioningPolicy_Spec")
   994  	}
   995  	if len(fp) == 1 {
   996  		switch fp[0] {
   997  		case "mode":
   998  			return &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorMode}, nil
   999  		case "service_account", "serviceAccount", "service-account":
  1000  			return &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorServiceAccount}, nil
  1001  		case "device_name_format", "deviceNameFormat", "device-name-format":
  1002  			return &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorDeviceNameFormat}, nil
  1003  		case "device_display_name_format", "deviceDisplayNameFormat", "device-display-name-format":
  1004  			return &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorDeviceDisplayNameFormat}, nil
  1005  		case "labels":
  1006  			return &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorLabels}, nil
  1007  		case "template":
  1008  			return &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorTemplate}, nil
  1009  		case "identity_field_paths", "identityFieldPaths", "identity-field-paths":
  1010  			return &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorIdentityFieldPaths}, nil
  1011  		case "role":
  1012  			return &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorRole}, nil
  1013  		case "scope_params", "scopeParams", "scope-params":
  1014  			return &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorScopeParams}, nil
  1015  		case "condition":
  1016  			return &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorCondition}, nil
  1017  		case "condition_params", "conditionParams", "condition-params":
  1018  			return &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorConditionParams}, nil
  1019  		case "extra_conditions", "extraConditions", "extra-conditions":
  1020  			return &ProvisioningPolicySpec_FieldTerminalPath{selector: ProvisioningPolicySpec_FieldPathSelectorExtraConditions}, nil
  1021  		}
  1022  	} else {
  1023  		switch fp[0] {
  1024  		case "template":
  1025  			if subpath, err := BuildProvisioningPolicySpecTemplate_FieldPath(fp[1:]); err != nil {
  1026  				return nil, err
  1027  			} else {
  1028  				return &ProvisioningPolicySpec_FieldSubPath{selector: ProvisioningPolicySpec_FieldPathSelectorTemplate, subPath: subpath}, nil
  1029  			}
  1030  		case "scope_params", "scopeParams", "scope-params":
  1031  			if subpath, err := iam_role.BuildScopeParam_FieldPath(fp[1:]); err != nil {
  1032  				return nil, err
  1033  			} else {
  1034  				return &ProvisioningPolicySpec_FieldSubPath{selector: ProvisioningPolicySpec_FieldPathSelectorScopeParams, subPath: subpath}, nil
  1035  			}
  1036  		case "extra_conditions", "extraConditions", "extra-conditions":
  1037  			if subpath, err := iam_condition.BuildExecutableCondition_FieldPath(fp[1:]); err != nil {
  1038  				return nil, err
  1039  			} else {
  1040  				return &ProvisioningPolicySpec_FieldSubPath{selector: ProvisioningPolicySpec_FieldPathSelectorExtraConditions, subPath: subpath}, nil
  1041  			}
  1042  		case "labels":
  1043  			if len(fp) > 2 {
  1044  				return nil, status.Errorf(codes.InvalidArgument, "sub path for maps ('%s') are not supported (object ProvisioningPolicy_Spec)", fp)
  1045  			}
  1046  			return &ProvisioningPolicySpec_FieldPathMap{selector: ProvisioningPolicySpec_FieldPathSelectorLabels, key: fp[1]}, nil
  1047  		}
  1048  	}
  1049  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object ProvisioningPolicy_Spec", fp)
  1050  }
  1051  
  1052  func ParseProvisioningPolicySpec_FieldPath(rawField string) (ProvisioningPolicySpec_FieldPath, error) {
  1053  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  1054  	if err != nil {
  1055  		return nil, err
  1056  	}
  1057  	return BuildProvisioningPolicySpec_FieldPath(fp)
  1058  }
  1059  
  1060  func MustParseProvisioningPolicySpec_FieldPath(rawField string) ProvisioningPolicySpec_FieldPath {
  1061  	fp, err := ParseProvisioningPolicySpec_FieldPath(rawField)
  1062  	if err != nil {
  1063  		panic(err)
  1064  	}
  1065  	return fp
  1066  }
  1067  
  1068  type ProvisioningPolicySpec_FieldTerminalPath struct {
  1069  	selector ProvisioningPolicySpec_FieldPathSelector
  1070  }
  1071  
  1072  var _ ProvisioningPolicySpec_FieldPath = (*ProvisioningPolicySpec_FieldTerminalPath)(nil)
  1073  
  1074  func (fp *ProvisioningPolicySpec_FieldTerminalPath) Selector() ProvisioningPolicySpec_FieldPathSelector {
  1075  	return fp.selector
  1076  }
  1077  
  1078  // String returns path representation in proto convention
  1079  func (fp *ProvisioningPolicySpec_FieldTerminalPath) String() string {
  1080  	return fp.selector.String()
  1081  }
  1082  
  1083  // JSONString returns path representation is JSON convention
  1084  func (fp *ProvisioningPolicySpec_FieldTerminalPath) JSONString() string {
  1085  	return strcase.ToLowerCamel(fp.String())
  1086  }
  1087  
  1088  // Get returns all values pointed by specific field from source ProvisioningPolicy_Spec
  1089  func (fp *ProvisioningPolicySpec_FieldTerminalPath) Get(source *ProvisioningPolicy_Spec) (values []interface{}) {
  1090  	if source != nil {
  1091  		switch fp.selector {
  1092  		case ProvisioningPolicySpec_FieldPathSelectorMode:
  1093  			values = append(values, source.Mode)
  1094  		case ProvisioningPolicySpec_FieldPathSelectorServiceAccount:
  1095  			if source.ServiceAccount != nil {
  1096  				values = append(values, source.ServiceAccount)
  1097  			}
  1098  		case ProvisioningPolicySpec_FieldPathSelectorDeviceNameFormat:
  1099  			values = append(values, source.DeviceNameFormat)
  1100  		case ProvisioningPolicySpec_FieldPathSelectorDeviceDisplayNameFormat:
  1101  			values = append(values, source.DeviceDisplayNameFormat)
  1102  		case ProvisioningPolicySpec_FieldPathSelectorLabels:
  1103  			values = append(values, source.Labels)
  1104  		case ProvisioningPolicySpec_FieldPathSelectorTemplate:
  1105  			if source.Template != nil {
  1106  				values = append(values, source.Template)
  1107  			}
  1108  		case ProvisioningPolicySpec_FieldPathSelectorIdentityFieldPaths:
  1109  			for _, value := range source.GetIdentityFieldPaths() {
  1110  				values = append(values, value)
  1111  			}
  1112  		case ProvisioningPolicySpec_FieldPathSelectorRole:
  1113  			if source.Role != nil {
  1114  				values = append(values, source.Role)
  1115  			}
  1116  		case ProvisioningPolicySpec_FieldPathSelectorScopeParams:
  1117  			for _, value := range source.GetScopeParams() {
  1118  				values = append(values, value)
  1119  			}
  1120  		case ProvisioningPolicySpec_FieldPathSelectorCondition:
  1121  			if source.Condition != nil {
  1122  				values = append(values, source.Condition)
  1123  			}
  1124  		case ProvisioningPolicySpec_FieldPathSelectorConditionParams:
  1125  			if source.ConditionParams != nil {
  1126  				values = append(values, source.ConditionParams)
  1127  			}
  1128  		case ProvisioningPolicySpec_FieldPathSelectorExtraConditions:
  1129  			for _, value := range source.GetExtraConditions() {
  1130  				values = append(values, value)
  1131  			}
  1132  		default:
  1133  			panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec: %d", fp.selector))
  1134  		}
  1135  	}
  1136  	return
  1137  }
  1138  
  1139  func (fp *ProvisioningPolicySpec_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  1140  	return fp.Get(source.(*ProvisioningPolicy_Spec))
  1141  }
  1142  
  1143  // GetSingle returns value pointed by specific field of from source ProvisioningPolicy_Spec
  1144  func (fp *ProvisioningPolicySpec_FieldTerminalPath) GetSingle(source *ProvisioningPolicy_Spec) (interface{}, bool) {
  1145  	switch fp.selector {
  1146  	case ProvisioningPolicySpec_FieldPathSelectorMode:
  1147  		return source.GetMode(), source != nil
  1148  	case ProvisioningPolicySpec_FieldPathSelectorServiceAccount:
  1149  		res := source.GetServiceAccount()
  1150  		return res, res != nil
  1151  	case ProvisioningPolicySpec_FieldPathSelectorDeviceNameFormat:
  1152  		return source.GetDeviceNameFormat(), source != nil
  1153  	case ProvisioningPolicySpec_FieldPathSelectorDeviceDisplayNameFormat:
  1154  		return source.GetDeviceDisplayNameFormat(), source != nil
  1155  	case ProvisioningPolicySpec_FieldPathSelectorLabels:
  1156  		res := source.GetLabels()
  1157  		return res, res != nil
  1158  	case ProvisioningPolicySpec_FieldPathSelectorTemplate:
  1159  		res := source.GetTemplate()
  1160  		return res, res != nil
  1161  	case ProvisioningPolicySpec_FieldPathSelectorIdentityFieldPaths:
  1162  		res := source.GetIdentityFieldPaths()
  1163  		return res, res != nil
  1164  	case ProvisioningPolicySpec_FieldPathSelectorRole:
  1165  		res := source.GetRole()
  1166  		return res, res != nil
  1167  	case ProvisioningPolicySpec_FieldPathSelectorScopeParams:
  1168  		res := source.GetScopeParams()
  1169  		return res, res != nil
  1170  	case ProvisioningPolicySpec_FieldPathSelectorCondition:
  1171  		res := source.GetCondition()
  1172  		return res, res != nil
  1173  	case ProvisioningPolicySpec_FieldPathSelectorConditionParams:
  1174  		res := source.GetConditionParams()
  1175  		return res, res != nil
  1176  	case ProvisioningPolicySpec_FieldPathSelectorExtraConditions:
  1177  		res := source.GetExtraConditions()
  1178  		return res, res != nil
  1179  	default:
  1180  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec: %d", fp.selector))
  1181  	}
  1182  }
  1183  
  1184  func (fp *ProvisioningPolicySpec_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  1185  	return fp.GetSingle(source.(*ProvisioningPolicy_Spec))
  1186  }
  1187  
  1188  // GetDefault returns a default value of the field type
  1189  func (fp *ProvisioningPolicySpec_FieldTerminalPath) GetDefault() interface{} {
  1190  	switch fp.selector {
  1191  	case ProvisioningPolicySpec_FieldPathSelectorMode:
  1192  		return ProvisioningPolicy_MODE_UNSPECIFIED
  1193  	case ProvisioningPolicySpec_FieldPathSelectorServiceAccount:
  1194  		return (*iam_service_account.Reference)(nil)
  1195  	case ProvisioningPolicySpec_FieldPathSelectorDeviceNameFormat:
  1196  		return ""
  1197  	case ProvisioningPolicySpec_FieldPathSelectorDeviceDisplayNameFormat:
  1198  		return ""
  1199  	case ProvisioningPolicySpec_FieldPathSelectorLabels:
  1200  		return (map[string]string)(nil)
  1201  	case ProvisioningPolicySpec_FieldPathSelectorTemplate:
  1202  		return (*ProvisioningPolicy_Spec_Template)(nil)
  1203  	case ProvisioningPolicySpec_FieldPathSelectorIdentityFieldPaths:
  1204  		return ([]string)(nil)
  1205  	case ProvisioningPolicySpec_FieldPathSelectorRole:
  1206  		return (*iam_role.Reference)(nil)
  1207  	case ProvisioningPolicySpec_FieldPathSelectorScopeParams:
  1208  		return ([]*iam_role.ScopeParam)(nil)
  1209  	case ProvisioningPolicySpec_FieldPathSelectorCondition:
  1210  		return (*iam_condition.Reference)(nil)
  1211  	case ProvisioningPolicySpec_FieldPathSelectorConditionParams:
  1212  		return (*structpb.Struct)(nil)
  1213  	case ProvisioningPolicySpec_FieldPathSelectorExtraConditions:
  1214  		return ([]*iam_condition.ExecutableCondition)(nil)
  1215  	default:
  1216  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec: %d", fp.selector))
  1217  	}
  1218  }
  1219  
  1220  func (fp *ProvisioningPolicySpec_FieldTerminalPath) ClearValue(item *ProvisioningPolicy_Spec) {
  1221  	if item != nil {
  1222  		switch fp.selector {
  1223  		case ProvisioningPolicySpec_FieldPathSelectorMode:
  1224  			item.Mode = ProvisioningPolicy_MODE_UNSPECIFIED
  1225  		case ProvisioningPolicySpec_FieldPathSelectorServiceAccount:
  1226  			item.ServiceAccount = nil
  1227  		case ProvisioningPolicySpec_FieldPathSelectorDeviceNameFormat:
  1228  			item.DeviceNameFormat = ""
  1229  		case ProvisioningPolicySpec_FieldPathSelectorDeviceDisplayNameFormat:
  1230  			item.DeviceDisplayNameFormat = ""
  1231  		case ProvisioningPolicySpec_FieldPathSelectorLabels:
  1232  			item.Labels = nil
  1233  		case ProvisioningPolicySpec_FieldPathSelectorTemplate:
  1234  			item.Template = nil
  1235  		case ProvisioningPolicySpec_FieldPathSelectorIdentityFieldPaths:
  1236  			item.IdentityFieldPaths = nil
  1237  		case ProvisioningPolicySpec_FieldPathSelectorRole:
  1238  			item.Role = nil
  1239  		case ProvisioningPolicySpec_FieldPathSelectorScopeParams:
  1240  			item.ScopeParams = nil
  1241  		case ProvisioningPolicySpec_FieldPathSelectorCondition:
  1242  			item.Condition = nil
  1243  		case ProvisioningPolicySpec_FieldPathSelectorConditionParams:
  1244  			item.ConditionParams = nil
  1245  		case ProvisioningPolicySpec_FieldPathSelectorExtraConditions:
  1246  			item.ExtraConditions = nil
  1247  		default:
  1248  			panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec: %d", fp.selector))
  1249  		}
  1250  	}
  1251  }
  1252  
  1253  func (fp *ProvisioningPolicySpec_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  1254  	fp.ClearValue(item.(*ProvisioningPolicy_Spec))
  1255  }
  1256  
  1257  // IsLeaf - whether field path is holds simple value
  1258  func (fp *ProvisioningPolicySpec_FieldTerminalPath) IsLeaf() bool {
  1259  	return fp.selector == ProvisioningPolicySpec_FieldPathSelectorMode ||
  1260  		fp.selector == ProvisioningPolicySpec_FieldPathSelectorServiceAccount ||
  1261  		fp.selector == ProvisioningPolicySpec_FieldPathSelectorDeviceNameFormat ||
  1262  		fp.selector == ProvisioningPolicySpec_FieldPathSelectorDeviceDisplayNameFormat ||
  1263  		fp.selector == ProvisioningPolicySpec_FieldPathSelectorLabels ||
  1264  		fp.selector == ProvisioningPolicySpec_FieldPathSelectorIdentityFieldPaths ||
  1265  		fp.selector == ProvisioningPolicySpec_FieldPathSelectorRole ||
  1266  		fp.selector == ProvisioningPolicySpec_FieldPathSelectorCondition ||
  1267  		fp.selector == ProvisioningPolicySpec_FieldPathSelectorConditionParams
  1268  }
  1269  
  1270  func (fp *ProvisioningPolicySpec_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  1271  	return []gotenobject.FieldPath{fp}
  1272  }
  1273  
  1274  func (fp *ProvisioningPolicySpec_FieldTerminalPath) WithIValue(value interface{}) ProvisioningPolicySpec_FieldPathValue {
  1275  	switch fp.selector {
  1276  	case ProvisioningPolicySpec_FieldPathSelectorMode:
  1277  		return &ProvisioningPolicySpec_FieldTerminalPathValue{ProvisioningPolicySpec_FieldTerminalPath: *fp, value: value.(ProvisioningPolicy_Mode)}
  1278  	case ProvisioningPolicySpec_FieldPathSelectorServiceAccount:
  1279  		return &ProvisioningPolicySpec_FieldTerminalPathValue{ProvisioningPolicySpec_FieldTerminalPath: *fp, value: value.(*iam_service_account.Reference)}
  1280  	case ProvisioningPolicySpec_FieldPathSelectorDeviceNameFormat:
  1281  		return &ProvisioningPolicySpec_FieldTerminalPathValue{ProvisioningPolicySpec_FieldTerminalPath: *fp, value: value.(string)}
  1282  	case ProvisioningPolicySpec_FieldPathSelectorDeviceDisplayNameFormat:
  1283  		return &ProvisioningPolicySpec_FieldTerminalPathValue{ProvisioningPolicySpec_FieldTerminalPath: *fp, value: value.(string)}
  1284  	case ProvisioningPolicySpec_FieldPathSelectorLabels:
  1285  		return &ProvisioningPolicySpec_FieldTerminalPathValue{ProvisioningPolicySpec_FieldTerminalPath: *fp, value: value.(map[string]string)}
  1286  	case ProvisioningPolicySpec_FieldPathSelectorTemplate:
  1287  		return &ProvisioningPolicySpec_FieldTerminalPathValue{ProvisioningPolicySpec_FieldTerminalPath: *fp, value: value.(*ProvisioningPolicy_Spec_Template)}
  1288  	case ProvisioningPolicySpec_FieldPathSelectorIdentityFieldPaths:
  1289  		return &ProvisioningPolicySpec_FieldTerminalPathValue{ProvisioningPolicySpec_FieldTerminalPath: *fp, value: value.([]string)}
  1290  	case ProvisioningPolicySpec_FieldPathSelectorRole:
  1291  		return &ProvisioningPolicySpec_FieldTerminalPathValue{ProvisioningPolicySpec_FieldTerminalPath: *fp, value: value.(*iam_role.Reference)}
  1292  	case ProvisioningPolicySpec_FieldPathSelectorScopeParams:
  1293  		return &ProvisioningPolicySpec_FieldTerminalPathValue{ProvisioningPolicySpec_FieldTerminalPath: *fp, value: value.([]*iam_role.ScopeParam)}
  1294  	case ProvisioningPolicySpec_FieldPathSelectorCondition:
  1295  		return &ProvisioningPolicySpec_FieldTerminalPathValue{ProvisioningPolicySpec_FieldTerminalPath: *fp, value: value.(*iam_condition.Reference)}
  1296  	case ProvisioningPolicySpec_FieldPathSelectorConditionParams:
  1297  		return &ProvisioningPolicySpec_FieldTerminalPathValue{ProvisioningPolicySpec_FieldTerminalPath: *fp, value: value.(*structpb.Struct)}
  1298  	case ProvisioningPolicySpec_FieldPathSelectorExtraConditions:
  1299  		return &ProvisioningPolicySpec_FieldTerminalPathValue{ProvisioningPolicySpec_FieldTerminalPath: *fp, value: value.([]*iam_condition.ExecutableCondition)}
  1300  	default:
  1301  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec: %d", fp.selector))
  1302  	}
  1303  }
  1304  
  1305  func (fp *ProvisioningPolicySpec_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  1306  	return fp.WithIValue(value)
  1307  }
  1308  
  1309  func (fp *ProvisioningPolicySpec_FieldTerminalPath) WithIArrayOfValues(values interface{}) ProvisioningPolicySpec_FieldPathArrayOfValues {
  1310  	fpaov := &ProvisioningPolicySpec_FieldTerminalPathArrayOfValues{ProvisioningPolicySpec_FieldTerminalPath: *fp}
  1311  	switch fp.selector {
  1312  	case ProvisioningPolicySpec_FieldPathSelectorMode:
  1313  		return &ProvisioningPolicySpec_FieldTerminalPathArrayOfValues{ProvisioningPolicySpec_FieldTerminalPath: *fp, values: values.([]ProvisioningPolicy_Mode)}
  1314  	case ProvisioningPolicySpec_FieldPathSelectorServiceAccount:
  1315  		return &ProvisioningPolicySpec_FieldTerminalPathArrayOfValues{ProvisioningPolicySpec_FieldTerminalPath: *fp, values: values.([]*iam_service_account.Reference)}
  1316  	case ProvisioningPolicySpec_FieldPathSelectorDeviceNameFormat:
  1317  		return &ProvisioningPolicySpec_FieldTerminalPathArrayOfValues{ProvisioningPolicySpec_FieldTerminalPath: *fp, values: values.([]string)}
  1318  	case ProvisioningPolicySpec_FieldPathSelectorDeviceDisplayNameFormat:
  1319  		return &ProvisioningPolicySpec_FieldTerminalPathArrayOfValues{ProvisioningPolicySpec_FieldTerminalPath: *fp, values: values.([]string)}
  1320  	case ProvisioningPolicySpec_FieldPathSelectorLabels:
  1321  		return &ProvisioningPolicySpec_FieldTerminalPathArrayOfValues{ProvisioningPolicySpec_FieldTerminalPath: *fp, values: values.([]map[string]string)}
  1322  	case ProvisioningPolicySpec_FieldPathSelectorTemplate:
  1323  		return &ProvisioningPolicySpec_FieldTerminalPathArrayOfValues{ProvisioningPolicySpec_FieldTerminalPath: *fp, values: values.([]*ProvisioningPolicy_Spec_Template)}
  1324  	case ProvisioningPolicySpec_FieldPathSelectorIdentityFieldPaths:
  1325  		return &ProvisioningPolicySpec_FieldTerminalPathArrayOfValues{ProvisioningPolicySpec_FieldTerminalPath: *fp, values: values.([][]string)}
  1326  	case ProvisioningPolicySpec_FieldPathSelectorRole:
  1327  		return &ProvisioningPolicySpec_FieldTerminalPathArrayOfValues{ProvisioningPolicySpec_FieldTerminalPath: *fp, values: values.([]*iam_role.Reference)}
  1328  	case ProvisioningPolicySpec_FieldPathSelectorScopeParams:
  1329  		return &ProvisioningPolicySpec_FieldTerminalPathArrayOfValues{ProvisioningPolicySpec_FieldTerminalPath: *fp, values: values.([][]*iam_role.ScopeParam)}
  1330  	case ProvisioningPolicySpec_FieldPathSelectorCondition:
  1331  		return &ProvisioningPolicySpec_FieldTerminalPathArrayOfValues{ProvisioningPolicySpec_FieldTerminalPath: *fp, values: values.([]*iam_condition.Reference)}
  1332  	case ProvisioningPolicySpec_FieldPathSelectorConditionParams:
  1333  		return &ProvisioningPolicySpec_FieldTerminalPathArrayOfValues{ProvisioningPolicySpec_FieldTerminalPath: *fp, values: values.([]*structpb.Struct)}
  1334  	case ProvisioningPolicySpec_FieldPathSelectorExtraConditions:
  1335  		return &ProvisioningPolicySpec_FieldTerminalPathArrayOfValues{ProvisioningPolicySpec_FieldTerminalPath: *fp, values: values.([][]*iam_condition.ExecutableCondition)}
  1336  	default:
  1337  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec: %d", fp.selector))
  1338  	}
  1339  	return fpaov
  1340  }
  1341  
  1342  func (fp *ProvisioningPolicySpec_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  1343  	return fp.WithIArrayOfValues(values)
  1344  }
  1345  
  1346  func (fp *ProvisioningPolicySpec_FieldTerminalPath) WithIArrayItemValue(value interface{}) ProvisioningPolicySpec_FieldPathArrayItemValue {
  1347  	switch fp.selector {
  1348  	case ProvisioningPolicySpec_FieldPathSelectorIdentityFieldPaths:
  1349  		return &ProvisioningPolicySpec_FieldTerminalPathArrayItemValue{ProvisioningPolicySpec_FieldTerminalPath: *fp, value: value.(string)}
  1350  	case ProvisioningPolicySpec_FieldPathSelectorScopeParams:
  1351  		return &ProvisioningPolicySpec_FieldTerminalPathArrayItemValue{ProvisioningPolicySpec_FieldTerminalPath: *fp, value: value.(*iam_role.ScopeParam)}
  1352  	case ProvisioningPolicySpec_FieldPathSelectorExtraConditions:
  1353  		return &ProvisioningPolicySpec_FieldTerminalPathArrayItemValue{ProvisioningPolicySpec_FieldTerminalPath: *fp, value: value.(*iam_condition.ExecutableCondition)}
  1354  	default:
  1355  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec: %d", fp.selector))
  1356  	}
  1357  }
  1358  
  1359  func (fp *ProvisioningPolicySpec_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  1360  	return fp.WithIArrayItemValue(value)
  1361  }
  1362  
  1363  // FieldPath for map type with additional Key information
  1364  type ProvisioningPolicySpec_FieldPathMap struct {
  1365  	key      string
  1366  	selector ProvisioningPolicySpec_FieldPathSelector
  1367  }
  1368  
  1369  var _ ProvisioningPolicySpec_FieldPath = (*ProvisioningPolicySpec_FieldPathMap)(nil)
  1370  
  1371  func (fpm *ProvisioningPolicySpec_FieldPathMap) Selector() ProvisioningPolicySpec_FieldPathSelector {
  1372  	return fpm.selector
  1373  }
  1374  
  1375  func (fpm *ProvisioningPolicySpec_FieldPathMap) Key() string {
  1376  	return fpm.key
  1377  }
  1378  
  1379  // String returns path representation in proto convention
  1380  func (fpm *ProvisioningPolicySpec_FieldPathMap) String() string {
  1381  	return fpm.selector.String() + "." + fpm.key
  1382  }
  1383  
  1384  // JSONString returns path representation is JSON convention. Note that map keys are not transformed
  1385  func (fpm *ProvisioningPolicySpec_FieldPathMap) JSONString() string {
  1386  	return strcase.ToLowerCamel(fpm.selector.String()) + "." + fpm.key
  1387  }
  1388  
  1389  // Get returns all values pointed by selected field map key from source ProvisioningPolicy_Spec
  1390  func (fpm *ProvisioningPolicySpec_FieldPathMap) Get(source *ProvisioningPolicy_Spec) (values []interface{}) {
  1391  	switch fpm.selector {
  1392  	case ProvisioningPolicySpec_FieldPathSelectorLabels:
  1393  		if value, ok := source.GetLabels()[fpm.key]; ok {
  1394  			values = append(values, value)
  1395  		}
  1396  	default:
  1397  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec: %d", fpm.selector))
  1398  	}
  1399  	return
  1400  }
  1401  
  1402  func (fpm *ProvisioningPolicySpec_FieldPathMap) GetRaw(source proto.Message) []interface{} {
  1403  	return fpm.Get(source.(*ProvisioningPolicy_Spec))
  1404  }
  1405  
  1406  // GetSingle returns value by selected field map key from source ProvisioningPolicy_Spec
  1407  func (fpm *ProvisioningPolicySpec_FieldPathMap) GetSingle(source *ProvisioningPolicy_Spec) (interface{}, bool) {
  1408  	switch fpm.selector {
  1409  	case ProvisioningPolicySpec_FieldPathSelectorLabels:
  1410  		res, ok := source.GetLabels()[fpm.key]
  1411  		return res, ok
  1412  	default:
  1413  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec: %d", fpm.selector))
  1414  	}
  1415  }
  1416  
  1417  func (fpm *ProvisioningPolicySpec_FieldPathMap) GetSingleRaw(source proto.Message) (interface{}, bool) {
  1418  	return fpm.GetSingle(source.(*ProvisioningPolicy_Spec))
  1419  }
  1420  
  1421  // GetDefault returns a default value of the field type
  1422  func (fpm *ProvisioningPolicySpec_FieldPathMap) GetDefault() interface{} {
  1423  	switch fpm.selector {
  1424  	case ProvisioningPolicySpec_FieldPathSelectorLabels:
  1425  		var v string
  1426  		return v
  1427  	default:
  1428  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec: %d", fpm.selector))
  1429  	}
  1430  }
  1431  
  1432  func (fpm *ProvisioningPolicySpec_FieldPathMap) ClearValue(item *ProvisioningPolicy_Spec) {
  1433  	if item != nil {
  1434  		switch fpm.selector {
  1435  		case ProvisioningPolicySpec_FieldPathSelectorLabels:
  1436  			delete(item.Labels, fpm.key)
  1437  		default:
  1438  			panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec: %d", fpm.selector))
  1439  		}
  1440  	}
  1441  }
  1442  
  1443  func (fpm *ProvisioningPolicySpec_FieldPathMap) ClearValueRaw(item proto.Message) {
  1444  	fpm.ClearValue(item.(*ProvisioningPolicy_Spec))
  1445  }
  1446  
  1447  // IsLeaf - whether field path is holds simple value
  1448  func (fpm *ProvisioningPolicySpec_FieldPathMap) IsLeaf() bool {
  1449  	switch fpm.selector {
  1450  	case ProvisioningPolicySpec_FieldPathSelectorLabels:
  1451  		return true
  1452  	default:
  1453  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec: %d", fpm.selector))
  1454  	}
  1455  }
  1456  
  1457  func (fpm *ProvisioningPolicySpec_FieldPathMap) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  1458  	return []gotenobject.FieldPath{fpm}
  1459  }
  1460  
  1461  func (fpm *ProvisioningPolicySpec_FieldPathMap) WithIValue(value interface{}) ProvisioningPolicySpec_FieldPathValue {
  1462  	switch fpm.selector {
  1463  	case ProvisioningPolicySpec_FieldPathSelectorLabels:
  1464  		return &ProvisioningPolicySpec_FieldPathMapValue{ProvisioningPolicySpec_FieldPathMap: *fpm, value: value.(string)}
  1465  	default:
  1466  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec: %d", fpm.selector))
  1467  	}
  1468  }
  1469  
  1470  func (fpm *ProvisioningPolicySpec_FieldPathMap) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  1471  	return fpm.WithIValue(value)
  1472  }
  1473  
  1474  func (fpm *ProvisioningPolicySpec_FieldPathMap) WithIArrayOfValues(values interface{}) ProvisioningPolicySpec_FieldPathArrayOfValues {
  1475  	switch fpm.selector {
  1476  	case ProvisioningPolicySpec_FieldPathSelectorLabels:
  1477  		return &ProvisioningPolicySpec_FieldPathMapArrayOfValues{ProvisioningPolicySpec_FieldPathMap: *fpm, values: values.([]string)}
  1478  	default:
  1479  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec: %d", fpm.selector))
  1480  	}
  1481  }
  1482  
  1483  func (fpm *ProvisioningPolicySpec_FieldPathMap) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  1484  	return fpm.WithIArrayOfValues(values)
  1485  }
  1486  
  1487  func (fpm *ProvisioningPolicySpec_FieldPathMap) WithIArrayItemValue(value interface{}) ProvisioningPolicySpec_FieldPathArrayItemValue {
  1488  	panic("Cannot create array item value from map fieldpath")
  1489  }
  1490  
  1491  func (fpm *ProvisioningPolicySpec_FieldPathMap) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  1492  	return fpm.WithIArrayItemValue(value)
  1493  }
  1494  
  1495  type ProvisioningPolicySpec_FieldSubPath struct {
  1496  	selector ProvisioningPolicySpec_FieldPathSelector
  1497  	subPath  gotenobject.FieldPath
  1498  }
  1499  
  1500  var _ ProvisioningPolicySpec_FieldPath = (*ProvisioningPolicySpec_FieldSubPath)(nil)
  1501  
  1502  func (fps *ProvisioningPolicySpec_FieldSubPath) Selector() ProvisioningPolicySpec_FieldPathSelector {
  1503  	return fps.selector
  1504  }
  1505  func (fps *ProvisioningPolicySpec_FieldSubPath) AsTemplateSubPath() (ProvisioningPolicySpecTemplate_FieldPath, bool) {
  1506  	res, ok := fps.subPath.(ProvisioningPolicySpecTemplate_FieldPath)
  1507  	return res, ok
  1508  }
  1509  func (fps *ProvisioningPolicySpec_FieldSubPath) AsScopeParamsSubPath() (iam_role.ScopeParam_FieldPath, bool) {
  1510  	res, ok := fps.subPath.(iam_role.ScopeParam_FieldPath)
  1511  	return res, ok
  1512  }
  1513  func (fps *ProvisioningPolicySpec_FieldSubPath) AsExtraConditionsSubPath() (iam_condition.ExecutableCondition_FieldPath, bool) {
  1514  	res, ok := fps.subPath.(iam_condition.ExecutableCondition_FieldPath)
  1515  	return res, ok
  1516  }
  1517  
  1518  // String returns path representation in proto convention
  1519  func (fps *ProvisioningPolicySpec_FieldSubPath) String() string {
  1520  	return fps.selector.String() + "." + fps.subPath.String()
  1521  }
  1522  
  1523  // JSONString returns path representation is JSON convention
  1524  func (fps *ProvisioningPolicySpec_FieldSubPath) JSONString() string {
  1525  	return strcase.ToLowerCamel(fps.selector.String()) + "." + fps.subPath.JSONString()
  1526  }
  1527  
  1528  // Get returns all values pointed by selected field from source ProvisioningPolicy_Spec
  1529  func (fps *ProvisioningPolicySpec_FieldSubPath) Get(source *ProvisioningPolicy_Spec) (values []interface{}) {
  1530  	switch fps.selector {
  1531  	case ProvisioningPolicySpec_FieldPathSelectorTemplate:
  1532  		values = append(values, fps.subPath.GetRaw(source.GetTemplate())...)
  1533  	case ProvisioningPolicySpec_FieldPathSelectorScopeParams:
  1534  		for _, item := range source.GetScopeParams() {
  1535  			values = append(values, fps.subPath.GetRaw(item)...)
  1536  		}
  1537  	case ProvisioningPolicySpec_FieldPathSelectorExtraConditions:
  1538  		for _, item := range source.GetExtraConditions() {
  1539  			values = append(values, fps.subPath.GetRaw(item)...)
  1540  		}
  1541  	default:
  1542  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec: %d", fps.selector))
  1543  	}
  1544  	return
  1545  }
  1546  
  1547  func (fps *ProvisioningPolicySpec_FieldSubPath) GetRaw(source proto.Message) []interface{} {
  1548  	return fps.Get(source.(*ProvisioningPolicy_Spec))
  1549  }
  1550  
  1551  // GetSingle returns value of selected field from source ProvisioningPolicy_Spec
  1552  func (fps *ProvisioningPolicySpec_FieldSubPath) GetSingle(source *ProvisioningPolicy_Spec) (interface{}, bool) {
  1553  	switch fps.selector {
  1554  	case ProvisioningPolicySpec_FieldPathSelectorTemplate:
  1555  		if source.GetTemplate() == nil {
  1556  			return nil, false
  1557  		}
  1558  		return fps.subPath.GetSingleRaw(source.GetTemplate())
  1559  	case ProvisioningPolicySpec_FieldPathSelectorScopeParams:
  1560  		if len(source.GetScopeParams()) == 0 {
  1561  			return nil, false
  1562  		}
  1563  		return fps.subPath.GetSingleRaw(source.GetScopeParams()[0])
  1564  	case ProvisioningPolicySpec_FieldPathSelectorExtraConditions:
  1565  		if len(source.GetExtraConditions()) == 0 {
  1566  			return nil, false
  1567  		}
  1568  		return fps.subPath.GetSingleRaw(source.GetExtraConditions()[0])
  1569  	default:
  1570  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec: %d", fps.selector))
  1571  	}
  1572  }
  1573  
  1574  func (fps *ProvisioningPolicySpec_FieldSubPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  1575  	return fps.GetSingle(source.(*ProvisioningPolicy_Spec))
  1576  }
  1577  
  1578  // GetDefault returns a default value of the field type
  1579  func (fps *ProvisioningPolicySpec_FieldSubPath) GetDefault() interface{} {
  1580  	return fps.subPath.GetDefault()
  1581  }
  1582  
  1583  func (fps *ProvisioningPolicySpec_FieldSubPath) ClearValue(item *ProvisioningPolicy_Spec) {
  1584  	if item != nil {
  1585  		switch fps.selector {
  1586  		case ProvisioningPolicySpec_FieldPathSelectorTemplate:
  1587  			fps.subPath.ClearValueRaw(item.Template)
  1588  		case ProvisioningPolicySpec_FieldPathSelectorScopeParams:
  1589  			for _, subItem := range item.ScopeParams {
  1590  				fps.subPath.ClearValueRaw(subItem)
  1591  			}
  1592  		case ProvisioningPolicySpec_FieldPathSelectorExtraConditions:
  1593  			for _, subItem := range item.ExtraConditions {
  1594  				fps.subPath.ClearValueRaw(subItem)
  1595  			}
  1596  		default:
  1597  			panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec: %d", fps.selector))
  1598  		}
  1599  	}
  1600  }
  1601  
  1602  func (fps *ProvisioningPolicySpec_FieldSubPath) ClearValueRaw(item proto.Message) {
  1603  	fps.ClearValue(item.(*ProvisioningPolicy_Spec))
  1604  }
  1605  
  1606  // IsLeaf - whether field path is holds simple value
  1607  func (fps *ProvisioningPolicySpec_FieldSubPath) IsLeaf() bool {
  1608  	return fps.subPath.IsLeaf()
  1609  }
  1610  
  1611  func (fps *ProvisioningPolicySpec_FieldSubPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  1612  	iPaths := []gotenobject.FieldPath{&ProvisioningPolicySpec_FieldTerminalPath{selector: fps.selector}}
  1613  	iPaths = append(iPaths, fps.subPath.SplitIntoTerminalIPaths()...)
  1614  	return iPaths
  1615  }
  1616  
  1617  func (fps *ProvisioningPolicySpec_FieldSubPath) WithIValue(value interface{}) ProvisioningPolicySpec_FieldPathValue {
  1618  	return &ProvisioningPolicySpec_FieldSubPathValue{fps, fps.subPath.WithRawIValue(value)}
  1619  }
  1620  
  1621  func (fps *ProvisioningPolicySpec_FieldSubPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  1622  	return fps.WithIValue(value)
  1623  }
  1624  
  1625  func (fps *ProvisioningPolicySpec_FieldSubPath) WithIArrayOfValues(values interface{}) ProvisioningPolicySpec_FieldPathArrayOfValues {
  1626  	return &ProvisioningPolicySpec_FieldSubPathArrayOfValues{fps, fps.subPath.WithRawIArrayOfValues(values)}
  1627  }
  1628  
  1629  func (fps *ProvisioningPolicySpec_FieldSubPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  1630  	return fps.WithIArrayOfValues(values)
  1631  }
  1632  
  1633  func (fps *ProvisioningPolicySpec_FieldSubPath) WithIArrayItemValue(value interface{}) ProvisioningPolicySpec_FieldPathArrayItemValue {
  1634  	return &ProvisioningPolicySpec_FieldSubPathArrayItemValue{fps, fps.subPath.WithRawIArrayItemValue(value)}
  1635  }
  1636  
  1637  func (fps *ProvisioningPolicySpec_FieldSubPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  1638  	return fps.WithIArrayItemValue(value)
  1639  }
  1640  
  1641  // ProvisioningPolicySpec_FieldPathValue allows storing values for Spec fields according to their type
  1642  type ProvisioningPolicySpec_FieldPathValue interface {
  1643  	ProvisioningPolicySpec_FieldPath
  1644  	gotenobject.FieldPathValue
  1645  	SetTo(target **ProvisioningPolicy_Spec)
  1646  	CompareWith(*ProvisioningPolicy_Spec) (cmp int, comparable bool)
  1647  }
  1648  
  1649  func ParseProvisioningPolicySpec_FieldPathValue(pathStr, valueStr string) (ProvisioningPolicySpec_FieldPathValue, error) {
  1650  	fp, err := ParseProvisioningPolicySpec_FieldPath(pathStr)
  1651  	if err != nil {
  1652  		return nil, err
  1653  	}
  1654  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  1655  	if err != nil {
  1656  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Spec field path value from %s: %v", valueStr, err)
  1657  	}
  1658  	return fpv.(ProvisioningPolicySpec_FieldPathValue), nil
  1659  }
  1660  
  1661  func MustParseProvisioningPolicySpec_FieldPathValue(pathStr, valueStr string) ProvisioningPolicySpec_FieldPathValue {
  1662  	fpv, err := ParseProvisioningPolicySpec_FieldPathValue(pathStr, valueStr)
  1663  	if err != nil {
  1664  		panic(err)
  1665  	}
  1666  	return fpv
  1667  }
  1668  
  1669  type ProvisioningPolicySpec_FieldTerminalPathValue struct {
  1670  	ProvisioningPolicySpec_FieldTerminalPath
  1671  	value interface{}
  1672  }
  1673  
  1674  var _ ProvisioningPolicySpec_FieldPathValue = (*ProvisioningPolicySpec_FieldTerminalPathValue)(nil)
  1675  
  1676  // GetRawValue returns raw value stored under selected path for 'Spec' as interface{}
  1677  func (fpv *ProvisioningPolicySpec_FieldTerminalPathValue) GetRawValue() interface{} {
  1678  	return fpv.value
  1679  }
  1680  func (fpv *ProvisioningPolicySpec_FieldTerminalPathValue) AsModeValue() (ProvisioningPolicy_Mode, bool) {
  1681  	res, ok := fpv.value.(ProvisioningPolicy_Mode)
  1682  	return res, ok
  1683  }
  1684  func (fpv *ProvisioningPolicySpec_FieldTerminalPathValue) AsServiceAccountValue() (*iam_service_account.Reference, bool) {
  1685  	res, ok := fpv.value.(*iam_service_account.Reference)
  1686  	return res, ok
  1687  }
  1688  func (fpv *ProvisioningPolicySpec_FieldTerminalPathValue) AsDeviceNameFormatValue() (string, bool) {
  1689  	res, ok := fpv.value.(string)
  1690  	return res, ok
  1691  }
  1692  func (fpv *ProvisioningPolicySpec_FieldTerminalPathValue) AsDeviceDisplayNameFormatValue() (string, bool) {
  1693  	res, ok := fpv.value.(string)
  1694  	return res, ok
  1695  }
  1696  func (fpv *ProvisioningPolicySpec_FieldTerminalPathValue) AsLabelsValue() (map[string]string, bool) {
  1697  	res, ok := fpv.value.(map[string]string)
  1698  	return res, ok
  1699  }
  1700  func (fpv *ProvisioningPolicySpec_FieldTerminalPathValue) AsTemplateValue() (*ProvisioningPolicy_Spec_Template, bool) {
  1701  	res, ok := fpv.value.(*ProvisioningPolicy_Spec_Template)
  1702  	return res, ok
  1703  }
  1704  func (fpv *ProvisioningPolicySpec_FieldTerminalPathValue) AsIdentityFieldPathsValue() ([]string, bool) {
  1705  	res, ok := fpv.value.([]string)
  1706  	return res, ok
  1707  }
  1708  func (fpv *ProvisioningPolicySpec_FieldTerminalPathValue) AsRoleValue() (*iam_role.Reference, bool) {
  1709  	res, ok := fpv.value.(*iam_role.Reference)
  1710  	return res, ok
  1711  }
  1712  func (fpv *ProvisioningPolicySpec_FieldTerminalPathValue) AsScopeParamsValue() ([]*iam_role.ScopeParam, bool) {
  1713  	res, ok := fpv.value.([]*iam_role.ScopeParam)
  1714  	return res, ok
  1715  }
  1716  func (fpv *ProvisioningPolicySpec_FieldTerminalPathValue) AsConditionValue() (*iam_condition.Reference, bool) {
  1717  	res, ok := fpv.value.(*iam_condition.Reference)
  1718  	return res, ok
  1719  }
  1720  func (fpv *ProvisioningPolicySpec_FieldTerminalPathValue) AsConditionParamsValue() (*structpb.Struct, bool) {
  1721  	res, ok := fpv.value.(*structpb.Struct)
  1722  	return res, ok
  1723  }
  1724  func (fpv *ProvisioningPolicySpec_FieldTerminalPathValue) AsExtraConditionsValue() ([]*iam_condition.ExecutableCondition, bool) {
  1725  	res, ok := fpv.value.([]*iam_condition.ExecutableCondition)
  1726  	return res, ok
  1727  }
  1728  
  1729  // SetTo stores value for selected field for object Spec
  1730  func (fpv *ProvisioningPolicySpec_FieldTerminalPathValue) SetTo(target **ProvisioningPolicy_Spec) {
  1731  	if *target == nil {
  1732  		*target = new(ProvisioningPolicy_Spec)
  1733  	}
  1734  	switch fpv.selector {
  1735  	case ProvisioningPolicySpec_FieldPathSelectorMode:
  1736  		(*target).Mode = fpv.value.(ProvisioningPolicy_Mode)
  1737  	case ProvisioningPolicySpec_FieldPathSelectorServiceAccount:
  1738  		(*target).ServiceAccount = fpv.value.(*iam_service_account.Reference)
  1739  	case ProvisioningPolicySpec_FieldPathSelectorDeviceNameFormat:
  1740  		(*target).DeviceNameFormat = fpv.value.(string)
  1741  	case ProvisioningPolicySpec_FieldPathSelectorDeviceDisplayNameFormat:
  1742  		(*target).DeviceDisplayNameFormat = fpv.value.(string)
  1743  	case ProvisioningPolicySpec_FieldPathSelectorLabels:
  1744  		(*target).Labels = fpv.value.(map[string]string)
  1745  	case ProvisioningPolicySpec_FieldPathSelectorTemplate:
  1746  		(*target).Template = fpv.value.(*ProvisioningPolicy_Spec_Template)
  1747  	case ProvisioningPolicySpec_FieldPathSelectorIdentityFieldPaths:
  1748  		(*target).IdentityFieldPaths = fpv.value.([]string)
  1749  	case ProvisioningPolicySpec_FieldPathSelectorRole:
  1750  		(*target).Role = fpv.value.(*iam_role.Reference)
  1751  	case ProvisioningPolicySpec_FieldPathSelectorScopeParams:
  1752  		(*target).ScopeParams = fpv.value.([]*iam_role.ScopeParam)
  1753  	case ProvisioningPolicySpec_FieldPathSelectorCondition:
  1754  		(*target).Condition = fpv.value.(*iam_condition.Reference)
  1755  	case ProvisioningPolicySpec_FieldPathSelectorConditionParams:
  1756  		(*target).ConditionParams = fpv.value.(*structpb.Struct)
  1757  	case ProvisioningPolicySpec_FieldPathSelectorExtraConditions:
  1758  		(*target).ExtraConditions = fpv.value.([]*iam_condition.ExecutableCondition)
  1759  	default:
  1760  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec: %d", fpv.selector))
  1761  	}
  1762  }
  1763  
  1764  func (fpv *ProvisioningPolicySpec_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  1765  	typedObject := target.(*ProvisioningPolicy_Spec)
  1766  	fpv.SetTo(&typedObject)
  1767  }
  1768  
  1769  // CompareWith compares value in the 'ProvisioningPolicySpec_FieldTerminalPathValue' with the value under path in 'ProvisioningPolicy_Spec'.
  1770  func (fpv *ProvisioningPolicySpec_FieldTerminalPathValue) CompareWith(source *ProvisioningPolicy_Spec) (int, bool) {
  1771  	switch fpv.selector {
  1772  	case ProvisioningPolicySpec_FieldPathSelectorMode:
  1773  		leftValue := fpv.value.(ProvisioningPolicy_Mode)
  1774  		rightValue := source.GetMode()
  1775  		if (leftValue) == (rightValue) {
  1776  			return 0, true
  1777  		} else if (leftValue) < (rightValue) {
  1778  			return -1, true
  1779  		} else {
  1780  			return 1, true
  1781  		}
  1782  	case ProvisioningPolicySpec_FieldPathSelectorServiceAccount:
  1783  		leftValue := fpv.value.(*iam_service_account.Reference)
  1784  		rightValue := source.GetServiceAccount()
  1785  		if leftValue == nil {
  1786  			if rightValue != nil {
  1787  				return -1, true
  1788  			}
  1789  			return 0, true
  1790  		}
  1791  		if rightValue == nil {
  1792  			return 1, true
  1793  		}
  1794  		if leftValue.String() == rightValue.String() {
  1795  			return 0, true
  1796  		} else if leftValue.String() < rightValue.String() {
  1797  			return -1, true
  1798  		} else {
  1799  			return 1, true
  1800  		}
  1801  	case ProvisioningPolicySpec_FieldPathSelectorDeviceNameFormat:
  1802  		leftValue := fpv.value.(string)
  1803  		rightValue := source.GetDeviceNameFormat()
  1804  		if (leftValue) == (rightValue) {
  1805  			return 0, true
  1806  		} else if (leftValue) < (rightValue) {
  1807  			return -1, true
  1808  		} else {
  1809  			return 1, true
  1810  		}
  1811  	case ProvisioningPolicySpec_FieldPathSelectorDeviceDisplayNameFormat:
  1812  		leftValue := fpv.value.(string)
  1813  		rightValue := source.GetDeviceDisplayNameFormat()
  1814  		if (leftValue) == (rightValue) {
  1815  			return 0, true
  1816  		} else if (leftValue) < (rightValue) {
  1817  			return -1, true
  1818  		} else {
  1819  			return 1, true
  1820  		}
  1821  	case ProvisioningPolicySpec_FieldPathSelectorLabels:
  1822  		return 0, false
  1823  	case ProvisioningPolicySpec_FieldPathSelectorTemplate:
  1824  		return 0, false
  1825  	case ProvisioningPolicySpec_FieldPathSelectorIdentityFieldPaths:
  1826  		return 0, false
  1827  	case ProvisioningPolicySpec_FieldPathSelectorRole:
  1828  		leftValue := fpv.value.(*iam_role.Reference)
  1829  		rightValue := source.GetRole()
  1830  		if leftValue == nil {
  1831  			if rightValue != nil {
  1832  				return -1, true
  1833  			}
  1834  			return 0, true
  1835  		}
  1836  		if rightValue == nil {
  1837  			return 1, true
  1838  		}
  1839  		if leftValue.String() == rightValue.String() {
  1840  			return 0, true
  1841  		} else if leftValue.String() < rightValue.String() {
  1842  			return -1, true
  1843  		} else {
  1844  			return 1, true
  1845  		}
  1846  	case ProvisioningPolicySpec_FieldPathSelectorScopeParams:
  1847  		return 0, false
  1848  	case ProvisioningPolicySpec_FieldPathSelectorCondition:
  1849  		leftValue := fpv.value.(*iam_condition.Reference)
  1850  		rightValue := source.GetCondition()
  1851  		if leftValue == nil {
  1852  			if rightValue != nil {
  1853  				return -1, true
  1854  			}
  1855  			return 0, true
  1856  		}
  1857  		if rightValue == nil {
  1858  			return 1, true
  1859  		}
  1860  		if leftValue.String() == rightValue.String() {
  1861  			return 0, true
  1862  		} else if leftValue.String() < rightValue.String() {
  1863  			return -1, true
  1864  		} else {
  1865  			return 1, true
  1866  		}
  1867  	case ProvisioningPolicySpec_FieldPathSelectorConditionParams:
  1868  		return 0, false
  1869  	case ProvisioningPolicySpec_FieldPathSelectorExtraConditions:
  1870  		return 0, false
  1871  	default:
  1872  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec: %d", fpv.selector))
  1873  	}
  1874  }
  1875  
  1876  func (fpv *ProvisioningPolicySpec_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  1877  	return fpv.CompareWith(source.(*ProvisioningPolicy_Spec))
  1878  }
  1879  
  1880  type ProvisioningPolicySpec_FieldPathMapValue struct {
  1881  	ProvisioningPolicySpec_FieldPathMap
  1882  	value interface{}
  1883  }
  1884  
  1885  var _ ProvisioningPolicySpec_FieldPathValue = (*ProvisioningPolicySpec_FieldPathMapValue)(nil)
  1886  
  1887  // GetValue returns value stored under selected field in Spec as interface{}
  1888  func (fpmv *ProvisioningPolicySpec_FieldPathMapValue) GetRawValue() interface{} {
  1889  	return fpmv.value
  1890  }
  1891  func (fpmv *ProvisioningPolicySpec_FieldPathMapValue) AsLabelsElementValue() (string, bool) {
  1892  	res, ok := fpmv.value.(string)
  1893  	return res, ok
  1894  }
  1895  
  1896  // SetTo stores value for selected field in Spec
  1897  func (fpmv *ProvisioningPolicySpec_FieldPathMapValue) SetTo(target **ProvisioningPolicy_Spec) {
  1898  	if *target == nil {
  1899  		*target = new(ProvisioningPolicy_Spec)
  1900  	}
  1901  	switch fpmv.selector {
  1902  	case ProvisioningPolicySpec_FieldPathSelectorLabels:
  1903  		if (*target).Labels == nil {
  1904  			(*target).Labels = make(map[string]string)
  1905  		}
  1906  		(*target).Labels[fpmv.key] = fpmv.value.(string)
  1907  	default:
  1908  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec: %d", fpmv.selector))
  1909  	}
  1910  }
  1911  
  1912  func (fpmv *ProvisioningPolicySpec_FieldPathMapValue) SetToRaw(target proto.Message) {
  1913  	typedObject := target.(*ProvisioningPolicy_Spec)
  1914  	fpmv.SetTo(&typedObject)
  1915  }
  1916  
  1917  // CompareWith compares value in the 'ProvisioningPolicySpec_FieldPathMapValue' with the value under path in 'ProvisioningPolicy_Spec'.
  1918  func (fpmv *ProvisioningPolicySpec_FieldPathMapValue) CompareWith(source *ProvisioningPolicy_Spec) (int, bool) {
  1919  	switch fpmv.selector {
  1920  	case ProvisioningPolicySpec_FieldPathSelectorLabels:
  1921  		leftValue := fpmv.value.(string)
  1922  		rightValue := source.GetLabels()[fpmv.key]
  1923  		if (leftValue) == (rightValue) {
  1924  			return 0, true
  1925  		} else if (leftValue) < (rightValue) {
  1926  			return -1, true
  1927  		} else {
  1928  			return 1, true
  1929  		}
  1930  	default:
  1931  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec: %d", fpmv.selector))
  1932  	}
  1933  }
  1934  
  1935  func (fpmv *ProvisioningPolicySpec_FieldPathMapValue) CompareWithRaw(source proto.Message) (int, bool) {
  1936  	return fpmv.CompareWith(source.(*ProvisioningPolicy_Spec))
  1937  }
  1938  
  1939  type ProvisioningPolicySpec_FieldSubPathValue struct {
  1940  	ProvisioningPolicySpec_FieldPath
  1941  	subPathValue gotenobject.FieldPathValue
  1942  }
  1943  
  1944  var _ ProvisioningPolicySpec_FieldPathValue = (*ProvisioningPolicySpec_FieldSubPathValue)(nil)
  1945  
  1946  func (fpvs *ProvisioningPolicySpec_FieldSubPathValue) AsTemplatePathValue() (ProvisioningPolicySpecTemplate_FieldPathValue, bool) {
  1947  	res, ok := fpvs.subPathValue.(ProvisioningPolicySpecTemplate_FieldPathValue)
  1948  	return res, ok
  1949  }
  1950  func (fpvs *ProvisioningPolicySpec_FieldSubPathValue) AsScopeParamsPathValue() (iam_role.ScopeParam_FieldPathValue, bool) {
  1951  	res, ok := fpvs.subPathValue.(iam_role.ScopeParam_FieldPathValue)
  1952  	return res, ok
  1953  }
  1954  func (fpvs *ProvisioningPolicySpec_FieldSubPathValue) AsExtraConditionsPathValue() (iam_condition.ExecutableCondition_FieldPathValue, bool) {
  1955  	res, ok := fpvs.subPathValue.(iam_condition.ExecutableCondition_FieldPathValue)
  1956  	return res, ok
  1957  }
  1958  
  1959  func (fpvs *ProvisioningPolicySpec_FieldSubPathValue) SetTo(target **ProvisioningPolicy_Spec) {
  1960  	if *target == nil {
  1961  		*target = new(ProvisioningPolicy_Spec)
  1962  	}
  1963  	switch fpvs.Selector() {
  1964  	case ProvisioningPolicySpec_FieldPathSelectorTemplate:
  1965  		fpvs.subPathValue.(ProvisioningPolicySpecTemplate_FieldPathValue).SetTo(&(*target).Template)
  1966  	case ProvisioningPolicySpec_FieldPathSelectorScopeParams:
  1967  		panic("FieldPath setter is unsupported for array subpaths")
  1968  	case ProvisioningPolicySpec_FieldPathSelectorExtraConditions:
  1969  		panic("FieldPath setter is unsupported for array subpaths")
  1970  	default:
  1971  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec: %d", fpvs.Selector()))
  1972  	}
  1973  }
  1974  
  1975  func (fpvs *ProvisioningPolicySpec_FieldSubPathValue) SetToRaw(target proto.Message) {
  1976  	typedObject := target.(*ProvisioningPolicy_Spec)
  1977  	fpvs.SetTo(&typedObject)
  1978  }
  1979  
  1980  func (fpvs *ProvisioningPolicySpec_FieldSubPathValue) GetRawValue() interface{} {
  1981  	return fpvs.subPathValue.GetRawValue()
  1982  }
  1983  
  1984  func (fpvs *ProvisioningPolicySpec_FieldSubPathValue) CompareWith(source *ProvisioningPolicy_Spec) (int, bool) {
  1985  	switch fpvs.Selector() {
  1986  	case ProvisioningPolicySpec_FieldPathSelectorTemplate:
  1987  		return fpvs.subPathValue.(ProvisioningPolicySpecTemplate_FieldPathValue).CompareWith(source.GetTemplate())
  1988  	case ProvisioningPolicySpec_FieldPathSelectorScopeParams:
  1989  		return 0, false // repeated field
  1990  	case ProvisioningPolicySpec_FieldPathSelectorExtraConditions:
  1991  		return 0, false // repeated field
  1992  	default:
  1993  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec: %d", fpvs.Selector()))
  1994  	}
  1995  }
  1996  
  1997  func (fpvs *ProvisioningPolicySpec_FieldSubPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  1998  	return fpvs.CompareWith(source.(*ProvisioningPolicy_Spec))
  1999  }
  2000  
  2001  // ProvisioningPolicySpec_FieldPathArrayItemValue allows storing single item in Path-specific values for Spec according to their type
  2002  // Present only for array (repeated) types.
  2003  type ProvisioningPolicySpec_FieldPathArrayItemValue interface {
  2004  	gotenobject.FieldPathArrayItemValue
  2005  	ProvisioningPolicySpec_FieldPath
  2006  	ContainsValue(*ProvisioningPolicy_Spec) bool
  2007  }
  2008  
  2009  // ParseProvisioningPolicySpec_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  2010  func ParseProvisioningPolicySpec_FieldPathArrayItemValue(pathStr, valueStr string) (ProvisioningPolicySpec_FieldPathArrayItemValue, error) {
  2011  	fp, err := ParseProvisioningPolicySpec_FieldPath(pathStr)
  2012  	if err != nil {
  2013  		return nil, err
  2014  	}
  2015  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  2016  	if err != nil {
  2017  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Spec field path array item value from %s: %v", valueStr, err)
  2018  	}
  2019  	return fpaiv.(ProvisioningPolicySpec_FieldPathArrayItemValue), nil
  2020  }
  2021  
  2022  func MustParseProvisioningPolicySpec_FieldPathArrayItemValue(pathStr, valueStr string) ProvisioningPolicySpec_FieldPathArrayItemValue {
  2023  	fpaiv, err := ParseProvisioningPolicySpec_FieldPathArrayItemValue(pathStr, valueStr)
  2024  	if err != nil {
  2025  		panic(err)
  2026  	}
  2027  	return fpaiv
  2028  }
  2029  
  2030  type ProvisioningPolicySpec_FieldTerminalPathArrayItemValue struct {
  2031  	ProvisioningPolicySpec_FieldTerminalPath
  2032  	value interface{}
  2033  }
  2034  
  2035  var _ ProvisioningPolicySpec_FieldPathArrayItemValue = (*ProvisioningPolicySpec_FieldTerminalPathArrayItemValue)(nil)
  2036  
  2037  // GetRawValue returns stored element value for array in object ProvisioningPolicy_Spec as interface{}
  2038  func (fpaiv *ProvisioningPolicySpec_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  2039  	return fpaiv.value
  2040  }
  2041  func (fpaiv *ProvisioningPolicySpec_FieldTerminalPathArrayItemValue) AsIdentityFieldPathsItemValue() (string, bool) {
  2042  	res, ok := fpaiv.value.(string)
  2043  	return res, ok
  2044  }
  2045  func (fpaiv *ProvisioningPolicySpec_FieldTerminalPathArrayItemValue) AsScopeParamsItemValue() (*iam_role.ScopeParam, bool) {
  2046  	res, ok := fpaiv.value.(*iam_role.ScopeParam)
  2047  	return res, ok
  2048  }
  2049  func (fpaiv *ProvisioningPolicySpec_FieldTerminalPathArrayItemValue) AsExtraConditionsItemValue() (*iam_condition.ExecutableCondition, bool) {
  2050  	res, ok := fpaiv.value.(*iam_condition.ExecutableCondition)
  2051  	return res, ok
  2052  }
  2053  
  2054  func (fpaiv *ProvisioningPolicySpec_FieldTerminalPathArrayItemValue) GetSingle(source *ProvisioningPolicy_Spec) (interface{}, bool) {
  2055  	return nil, false
  2056  }
  2057  
  2058  func (fpaiv *ProvisioningPolicySpec_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  2059  	return fpaiv.GetSingle(source.(*ProvisioningPolicy_Spec))
  2060  }
  2061  
  2062  // Contains returns a boolean indicating if value that is being held is present in given 'Spec'
  2063  func (fpaiv *ProvisioningPolicySpec_FieldTerminalPathArrayItemValue) ContainsValue(source *ProvisioningPolicy_Spec) bool {
  2064  	slice := fpaiv.ProvisioningPolicySpec_FieldTerminalPath.Get(source)
  2065  	for _, v := range slice {
  2066  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  2067  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  2068  				return true
  2069  			}
  2070  		} else if reflect.DeepEqual(v, fpaiv.value) {
  2071  			return true
  2072  		}
  2073  	}
  2074  	return false
  2075  }
  2076  
  2077  type ProvisioningPolicySpec_FieldSubPathArrayItemValue struct {
  2078  	ProvisioningPolicySpec_FieldPath
  2079  	subPathItemValue gotenobject.FieldPathArrayItemValue
  2080  }
  2081  
  2082  // GetRawValue returns stored array item value
  2083  func (fpaivs *ProvisioningPolicySpec_FieldSubPathArrayItemValue) GetRawItemValue() interface{} {
  2084  	return fpaivs.subPathItemValue.GetRawItemValue()
  2085  }
  2086  func (fpaivs *ProvisioningPolicySpec_FieldSubPathArrayItemValue) AsTemplatePathItemValue() (ProvisioningPolicySpecTemplate_FieldPathArrayItemValue, bool) {
  2087  	res, ok := fpaivs.subPathItemValue.(ProvisioningPolicySpecTemplate_FieldPathArrayItemValue)
  2088  	return res, ok
  2089  }
  2090  func (fpaivs *ProvisioningPolicySpec_FieldSubPathArrayItemValue) AsScopeParamsPathItemValue() (iam_role.ScopeParam_FieldPathArrayItemValue, bool) {
  2091  	res, ok := fpaivs.subPathItemValue.(iam_role.ScopeParam_FieldPathArrayItemValue)
  2092  	return res, ok
  2093  }
  2094  func (fpaivs *ProvisioningPolicySpec_FieldSubPathArrayItemValue) AsExtraConditionsPathItemValue() (iam_condition.ExecutableCondition_FieldPathArrayItemValue, bool) {
  2095  	res, ok := fpaivs.subPathItemValue.(iam_condition.ExecutableCondition_FieldPathArrayItemValue)
  2096  	return res, ok
  2097  }
  2098  
  2099  // Contains returns a boolean indicating if value that is being held is present in given 'Spec'
  2100  func (fpaivs *ProvisioningPolicySpec_FieldSubPathArrayItemValue) ContainsValue(source *ProvisioningPolicy_Spec) bool {
  2101  	switch fpaivs.Selector() {
  2102  	case ProvisioningPolicySpec_FieldPathSelectorTemplate:
  2103  		return fpaivs.subPathItemValue.(ProvisioningPolicySpecTemplate_FieldPathArrayItemValue).ContainsValue(source.GetTemplate())
  2104  	case ProvisioningPolicySpec_FieldPathSelectorScopeParams:
  2105  		return false // repeated/map field
  2106  	case ProvisioningPolicySpec_FieldPathSelectorExtraConditions:
  2107  		return false // repeated/map field
  2108  	default:
  2109  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec: %d", fpaivs.Selector()))
  2110  	}
  2111  }
  2112  
  2113  // ProvisioningPolicySpec_FieldPathArrayOfValues allows storing slice of values for Spec fields according to their type
  2114  type ProvisioningPolicySpec_FieldPathArrayOfValues interface {
  2115  	gotenobject.FieldPathArrayOfValues
  2116  	ProvisioningPolicySpec_FieldPath
  2117  }
  2118  
  2119  func ParseProvisioningPolicySpec_FieldPathArrayOfValues(pathStr, valuesStr string) (ProvisioningPolicySpec_FieldPathArrayOfValues, error) {
  2120  	fp, err := ParseProvisioningPolicySpec_FieldPath(pathStr)
  2121  	if err != nil {
  2122  		return nil, err
  2123  	}
  2124  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  2125  	if err != nil {
  2126  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Spec field path array of values from %s: %v", valuesStr, err)
  2127  	}
  2128  	return fpaov.(ProvisioningPolicySpec_FieldPathArrayOfValues), nil
  2129  }
  2130  
  2131  func MustParseProvisioningPolicySpec_FieldPathArrayOfValues(pathStr, valuesStr string) ProvisioningPolicySpec_FieldPathArrayOfValues {
  2132  	fpaov, err := ParseProvisioningPolicySpec_FieldPathArrayOfValues(pathStr, valuesStr)
  2133  	if err != nil {
  2134  		panic(err)
  2135  	}
  2136  	return fpaov
  2137  }
  2138  
  2139  type ProvisioningPolicySpec_FieldTerminalPathArrayOfValues struct {
  2140  	ProvisioningPolicySpec_FieldTerminalPath
  2141  	values interface{}
  2142  }
  2143  
  2144  var _ ProvisioningPolicySpec_FieldPathArrayOfValues = (*ProvisioningPolicySpec_FieldTerminalPathArrayOfValues)(nil)
  2145  
  2146  func (fpaov *ProvisioningPolicySpec_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  2147  	switch fpaov.selector {
  2148  	case ProvisioningPolicySpec_FieldPathSelectorMode:
  2149  		for _, v := range fpaov.values.([]ProvisioningPolicy_Mode) {
  2150  			values = append(values, v)
  2151  		}
  2152  	case ProvisioningPolicySpec_FieldPathSelectorServiceAccount:
  2153  		for _, v := range fpaov.values.([]*iam_service_account.Reference) {
  2154  			values = append(values, v)
  2155  		}
  2156  	case ProvisioningPolicySpec_FieldPathSelectorDeviceNameFormat:
  2157  		for _, v := range fpaov.values.([]string) {
  2158  			values = append(values, v)
  2159  		}
  2160  	case ProvisioningPolicySpec_FieldPathSelectorDeviceDisplayNameFormat:
  2161  		for _, v := range fpaov.values.([]string) {
  2162  			values = append(values, v)
  2163  		}
  2164  	case ProvisioningPolicySpec_FieldPathSelectorLabels:
  2165  		for _, v := range fpaov.values.([]map[string]string) {
  2166  			values = append(values, v)
  2167  		}
  2168  	case ProvisioningPolicySpec_FieldPathSelectorTemplate:
  2169  		for _, v := range fpaov.values.([]*ProvisioningPolicy_Spec_Template) {
  2170  			values = append(values, v)
  2171  		}
  2172  	case ProvisioningPolicySpec_FieldPathSelectorIdentityFieldPaths:
  2173  		for _, v := range fpaov.values.([][]string) {
  2174  			values = append(values, v)
  2175  		}
  2176  	case ProvisioningPolicySpec_FieldPathSelectorRole:
  2177  		for _, v := range fpaov.values.([]*iam_role.Reference) {
  2178  			values = append(values, v)
  2179  		}
  2180  	case ProvisioningPolicySpec_FieldPathSelectorScopeParams:
  2181  		for _, v := range fpaov.values.([][]*iam_role.ScopeParam) {
  2182  			values = append(values, v)
  2183  		}
  2184  	case ProvisioningPolicySpec_FieldPathSelectorCondition:
  2185  		for _, v := range fpaov.values.([]*iam_condition.Reference) {
  2186  			values = append(values, v)
  2187  		}
  2188  	case ProvisioningPolicySpec_FieldPathSelectorConditionParams:
  2189  		for _, v := range fpaov.values.([]*structpb.Struct) {
  2190  			values = append(values, v)
  2191  		}
  2192  	case ProvisioningPolicySpec_FieldPathSelectorExtraConditions:
  2193  		for _, v := range fpaov.values.([][]*iam_condition.ExecutableCondition) {
  2194  			values = append(values, v)
  2195  		}
  2196  	}
  2197  	return
  2198  }
  2199  func (fpaov *ProvisioningPolicySpec_FieldTerminalPathArrayOfValues) AsModeArrayOfValues() ([]ProvisioningPolicy_Mode, bool) {
  2200  	res, ok := fpaov.values.([]ProvisioningPolicy_Mode)
  2201  	return res, ok
  2202  }
  2203  func (fpaov *ProvisioningPolicySpec_FieldTerminalPathArrayOfValues) AsServiceAccountArrayOfValues() ([]*iam_service_account.Reference, bool) {
  2204  	res, ok := fpaov.values.([]*iam_service_account.Reference)
  2205  	return res, ok
  2206  }
  2207  func (fpaov *ProvisioningPolicySpec_FieldTerminalPathArrayOfValues) AsDeviceNameFormatArrayOfValues() ([]string, bool) {
  2208  	res, ok := fpaov.values.([]string)
  2209  	return res, ok
  2210  }
  2211  func (fpaov *ProvisioningPolicySpec_FieldTerminalPathArrayOfValues) AsDeviceDisplayNameFormatArrayOfValues() ([]string, bool) {
  2212  	res, ok := fpaov.values.([]string)
  2213  	return res, ok
  2214  }
  2215  func (fpaov *ProvisioningPolicySpec_FieldTerminalPathArrayOfValues) AsLabelsArrayOfValues() ([]map[string]string, bool) {
  2216  	res, ok := fpaov.values.([]map[string]string)
  2217  	return res, ok
  2218  }
  2219  func (fpaov *ProvisioningPolicySpec_FieldTerminalPathArrayOfValues) AsTemplateArrayOfValues() ([]*ProvisioningPolicy_Spec_Template, bool) {
  2220  	res, ok := fpaov.values.([]*ProvisioningPolicy_Spec_Template)
  2221  	return res, ok
  2222  }
  2223  func (fpaov *ProvisioningPolicySpec_FieldTerminalPathArrayOfValues) AsIdentityFieldPathsArrayOfValues() ([][]string, bool) {
  2224  	res, ok := fpaov.values.([][]string)
  2225  	return res, ok
  2226  }
  2227  func (fpaov *ProvisioningPolicySpec_FieldTerminalPathArrayOfValues) AsRoleArrayOfValues() ([]*iam_role.Reference, bool) {
  2228  	res, ok := fpaov.values.([]*iam_role.Reference)
  2229  	return res, ok
  2230  }
  2231  func (fpaov *ProvisioningPolicySpec_FieldTerminalPathArrayOfValues) AsScopeParamsArrayOfValues() ([][]*iam_role.ScopeParam, bool) {
  2232  	res, ok := fpaov.values.([][]*iam_role.ScopeParam)
  2233  	return res, ok
  2234  }
  2235  func (fpaov *ProvisioningPolicySpec_FieldTerminalPathArrayOfValues) AsConditionArrayOfValues() ([]*iam_condition.Reference, bool) {
  2236  	res, ok := fpaov.values.([]*iam_condition.Reference)
  2237  	return res, ok
  2238  }
  2239  func (fpaov *ProvisioningPolicySpec_FieldTerminalPathArrayOfValues) AsConditionParamsArrayOfValues() ([]*structpb.Struct, bool) {
  2240  	res, ok := fpaov.values.([]*structpb.Struct)
  2241  	return res, ok
  2242  }
  2243  func (fpaov *ProvisioningPolicySpec_FieldTerminalPathArrayOfValues) AsExtraConditionsArrayOfValues() ([][]*iam_condition.ExecutableCondition, bool) {
  2244  	res, ok := fpaov.values.([][]*iam_condition.ExecutableCondition)
  2245  	return res, ok
  2246  }
  2247  
  2248  type ProvisioningPolicySpec_FieldPathMapArrayOfValues struct {
  2249  	ProvisioningPolicySpec_FieldPathMap
  2250  	values interface{}
  2251  }
  2252  
  2253  var _ ProvisioningPolicySpec_FieldPathArrayOfValues = (*ProvisioningPolicySpec_FieldPathMapArrayOfValues)(nil)
  2254  
  2255  func (fpmaov *ProvisioningPolicySpec_FieldPathMapArrayOfValues) GetRawValues() (values []interface{}) {
  2256  	switch fpmaov.selector {
  2257  	case ProvisioningPolicySpec_FieldPathSelectorLabels:
  2258  		for _, v := range fpmaov.values.([]string) {
  2259  			values = append(values, v)
  2260  		}
  2261  	}
  2262  	return
  2263  }
  2264  func (fpmaov *ProvisioningPolicySpec_FieldPathMapArrayOfValues) AsLabelsArrayOfElementValues() ([]string, bool) {
  2265  	res, ok := fpmaov.values.([]string)
  2266  	return res, ok
  2267  }
  2268  
  2269  type ProvisioningPolicySpec_FieldSubPathArrayOfValues struct {
  2270  	ProvisioningPolicySpec_FieldPath
  2271  	subPathArrayOfValues gotenobject.FieldPathArrayOfValues
  2272  }
  2273  
  2274  var _ ProvisioningPolicySpec_FieldPathArrayOfValues = (*ProvisioningPolicySpec_FieldSubPathArrayOfValues)(nil)
  2275  
  2276  func (fpsaov *ProvisioningPolicySpec_FieldSubPathArrayOfValues) GetRawValues() []interface{} {
  2277  	return fpsaov.subPathArrayOfValues.GetRawValues()
  2278  }
  2279  func (fpsaov *ProvisioningPolicySpec_FieldSubPathArrayOfValues) AsTemplatePathArrayOfValues() (ProvisioningPolicySpecTemplate_FieldPathArrayOfValues, bool) {
  2280  	res, ok := fpsaov.subPathArrayOfValues.(ProvisioningPolicySpecTemplate_FieldPathArrayOfValues)
  2281  	return res, ok
  2282  }
  2283  func (fpsaov *ProvisioningPolicySpec_FieldSubPathArrayOfValues) AsScopeParamsPathArrayOfValues() (iam_role.ScopeParam_FieldPathArrayOfValues, bool) {
  2284  	res, ok := fpsaov.subPathArrayOfValues.(iam_role.ScopeParam_FieldPathArrayOfValues)
  2285  	return res, ok
  2286  }
  2287  func (fpsaov *ProvisioningPolicySpec_FieldSubPathArrayOfValues) AsExtraConditionsPathArrayOfValues() (iam_condition.ExecutableCondition_FieldPathArrayOfValues, bool) {
  2288  	res, ok := fpsaov.subPathArrayOfValues.(iam_condition.ExecutableCondition_FieldPathArrayOfValues)
  2289  	return res, ok
  2290  }
  2291  
  2292  // FieldPath provides implementation to handle
  2293  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  2294  type ProvisioningPolicyStatus_FieldPath interface {
  2295  	gotenobject.FieldPath
  2296  	Selector() ProvisioningPolicyStatus_FieldPathSelector
  2297  	Get(source *ProvisioningPolicy_Status) []interface{}
  2298  	GetSingle(source *ProvisioningPolicy_Status) (interface{}, bool)
  2299  	ClearValue(item *ProvisioningPolicy_Status)
  2300  
  2301  	// Those methods build corresponding ProvisioningPolicyStatus_FieldPathValue
  2302  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
  2303  	WithIValue(value interface{}) ProvisioningPolicyStatus_FieldPathValue
  2304  	WithIArrayOfValues(values interface{}) ProvisioningPolicyStatus_FieldPathArrayOfValues
  2305  	WithIArrayItemValue(value interface{}) ProvisioningPolicyStatus_FieldPathArrayItemValue
  2306  }
  2307  
  2308  type ProvisioningPolicyStatus_FieldPathSelector int32
  2309  
  2310  func (s ProvisioningPolicyStatus_FieldPathSelector) String() string {
  2311  	switch s {
  2312  	default:
  2313  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Status: %d", s))
  2314  	}
  2315  }
  2316  
  2317  func BuildProvisioningPolicyStatus_FieldPath(fp gotenobject.RawFieldPath) (ProvisioningPolicyStatus_FieldPath, error) {
  2318  	if len(fp) == 0 {
  2319  		return nil, status.Error(codes.InvalidArgument, "empty field path for object ProvisioningPolicy_Status")
  2320  	}
  2321  	if len(fp) == 1 {
  2322  		switch fp[0] {
  2323  		}
  2324  	}
  2325  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object ProvisioningPolicy_Status", fp)
  2326  }
  2327  
  2328  func ParseProvisioningPolicyStatus_FieldPath(rawField string) (ProvisioningPolicyStatus_FieldPath, error) {
  2329  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  2330  	if err != nil {
  2331  		return nil, err
  2332  	}
  2333  	return BuildProvisioningPolicyStatus_FieldPath(fp)
  2334  }
  2335  
  2336  func MustParseProvisioningPolicyStatus_FieldPath(rawField string) ProvisioningPolicyStatus_FieldPath {
  2337  	fp, err := ParseProvisioningPolicyStatus_FieldPath(rawField)
  2338  	if err != nil {
  2339  		panic(err)
  2340  	}
  2341  	return fp
  2342  }
  2343  
  2344  type ProvisioningPolicyStatus_FieldTerminalPath struct {
  2345  	selector ProvisioningPolicyStatus_FieldPathSelector
  2346  }
  2347  
  2348  var _ ProvisioningPolicyStatus_FieldPath = (*ProvisioningPolicyStatus_FieldTerminalPath)(nil)
  2349  
  2350  func (fp *ProvisioningPolicyStatus_FieldTerminalPath) Selector() ProvisioningPolicyStatus_FieldPathSelector {
  2351  	return fp.selector
  2352  }
  2353  
  2354  // String returns path representation in proto convention
  2355  func (fp *ProvisioningPolicyStatus_FieldTerminalPath) String() string {
  2356  	return fp.selector.String()
  2357  }
  2358  
  2359  // JSONString returns path representation is JSON convention
  2360  func (fp *ProvisioningPolicyStatus_FieldTerminalPath) JSONString() string {
  2361  	return strcase.ToLowerCamel(fp.String())
  2362  }
  2363  
  2364  // Get returns all values pointed by specific field from source ProvisioningPolicy_Status
  2365  func (fp *ProvisioningPolicyStatus_FieldTerminalPath) Get(source *ProvisioningPolicy_Status) (values []interface{}) {
  2366  	if source != nil {
  2367  		switch fp.selector {
  2368  		default:
  2369  			panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Status: %d", fp.selector))
  2370  		}
  2371  	}
  2372  	return
  2373  }
  2374  
  2375  func (fp *ProvisioningPolicyStatus_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  2376  	return fp.Get(source.(*ProvisioningPolicy_Status))
  2377  }
  2378  
  2379  // GetSingle returns value pointed by specific field of from source ProvisioningPolicy_Status
  2380  func (fp *ProvisioningPolicyStatus_FieldTerminalPath) GetSingle(source *ProvisioningPolicy_Status) (interface{}, bool) {
  2381  	switch fp.selector {
  2382  	default:
  2383  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Status: %d", fp.selector))
  2384  	}
  2385  }
  2386  
  2387  func (fp *ProvisioningPolicyStatus_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  2388  	return fp.GetSingle(source.(*ProvisioningPolicy_Status))
  2389  }
  2390  
  2391  // GetDefault returns a default value of the field type
  2392  func (fp *ProvisioningPolicyStatus_FieldTerminalPath) GetDefault() interface{} {
  2393  	switch fp.selector {
  2394  	default:
  2395  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Status: %d", fp.selector))
  2396  	}
  2397  }
  2398  
  2399  func (fp *ProvisioningPolicyStatus_FieldTerminalPath) ClearValue(item *ProvisioningPolicy_Status) {
  2400  	if item != nil {
  2401  		switch fp.selector {
  2402  		default:
  2403  			panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Status: %d", fp.selector))
  2404  		}
  2405  	}
  2406  }
  2407  
  2408  func (fp *ProvisioningPolicyStatus_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  2409  	fp.ClearValue(item.(*ProvisioningPolicy_Status))
  2410  }
  2411  
  2412  // IsLeaf - whether field path is holds simple value
  2413  func (fp *ProvisioningPolicyStatus_FieldTerminalPath) IsLeaf() bool {
  2414  	return false
  2415  }
  2416  
  2417  func (fp *ProvisioningPolicyStatus_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  2418  	return []gotenobject.FieldPath{fp}
  2419  }
  2420  
  2421  func (fp *ProvisioningPolicyStatus_FieldTerminalPath) WithIValue(value interface{}) ProvisioningPolicyStatus_FieldPathValue {
  2422  	switch fp.selector {
  2423  	default:
  2424  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Status: %d", fp.selector))
  2425  	}
  2426  }
  2427  
  2428  func (fp *ProvisioningPolicyStatus_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  2429  	return fp.WithIValue(value)
  2430  }
  2431  
  2432  func (fp *ProvisioningPolicyStatus_FieldTerminalPath) WithIArrayOfValues(values interface{}) ProvisioningPolicyStatus_FieldPathArrayOfValues {
  2433  	fpaov := &ProvisioningPolicyStatus_FieldTerminalPathArrayOfValues{ProvisioningPolicyStatus_FieldTerminalPath: *fp}
  2434  	switch fp.selector {
  2435  	default:
  2436  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Status: %d", fp.selector))
  2437  	}
  2438  	return fpaov
  2439  }
  2440  
  2441  func (fp *ProvisioningPolicyStatus_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  2442  	return fp.WithIArrayOfValues(values)
  2443  }
  2444  
  2445  func (fp *ProvisioningPolicyStatus_FieldTerminalPath) WithIArrayItemValue(value interface{}) ProvisioningPolicyStatus_FieldPathArrayItemValue {
  2446  	switch fp.selector {
  2447  	default:
  2448  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Status: %d", fp.selector))
  2449  	}
  2450  }
  2451  
  2452  func (fp *ProvisioningPolicyStatus_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  2453  	return fp.WithIArrayItemValue(value)
  2454  }
  2455  
  2456  // ProvisioningPolicyStatus_FieldPathValue allows storing values for Status fields according to their type
  2457  type ProvisioningPolicyStatus_FieldPathValue interface {
  2458  	ProvisioningPolicyStatus_FieldPath
  2459  	gotenobject.FieldPathValue
  2460  	SetTo(target **ProvisioningPolicy_Status)
  2461  	CompareWith(*ProvisioningPolicy_Status) (cmp int, comparable bool)
  2462  }
  2463  
  2464  func ParseProvisioningPolicyStatus_FieldPathValue(pathStr, valueStr string) (ProvisioningPolicyStatus_FieldPathValue, error) {
  2465  	fp, err := ParseProvisioningPolicyStatus_FieldPath(pathStr)
  2466  	if err != nil {
  2467  		return nil, err
  2468  	}
  2469  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  2470  	if err != nil {
  2471  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Status field path value from %s: %v", valueStr, err)
  2472  	}
  2473  	return fpv.(ProvisioningPolicyStatus_FieldPathValue), nil
  2474  }
  2475  
  2476  func MustParseProvisioningPolicyStatus_FieldPathValue(pathStr, valueStr string) ProvisioningPolicyStatus_FieldPathValue {
  2477  	fpv, err := ParseProvisioningPolicyStatus_FieldPathValue(pathStr, valueStr)
  2478  	if err != nil {
  2479  		panic(err)
  2480  	}
  2481  	return fpv
  2482  }
  2483  
  2484  type ProvisioningPolicyStatus_FieldTerminalPathValue struct {
  2485  	ProvisioningPolicyStatus_FieldTerminalPath
  2486  	value interface{}
  2487  }
  2488  
  2489  var _ ProvisioningPolicyStatus_FieldPathValue = (*ProvisioningPolicyStatus_FieldTerminalPathValue)(nil)
  2490  
  2491  // GetRawValue returns raw value stored under selected path for 'Status' as interface{}
  2492  func (fpv *ProvisioningPolicyStatus_FieldTerminalPathValue) GetRawValue() interface{} {
  2493  	return fpv.value
  2494  }
  2495  
  2496  // SetTo stores value for selected field for object Status
  2497  func (fpv *ProvisioningPolicyStatus_FieldTerminalPathValue) SetTo(target **ProvisioningPolicy_Status) {
  2498  	if *target == nil {
  2499  		*target = new(ProvisioningPolicy_Status)
  2500  	}
  2501  	switch fpv.selector {
  2502  	default:
  2503  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Status: %d", fpv.selector))
  2504  	}
  2505  }
  2506  
  2507  func (fpv *ProvisioningPolicyStatus_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  2508  	typedObject := target.(*ProvisioningPolicy_Status)
  2509  	fpv.SetTo(&typedObject)
  2510  }
  2511  
  2512  // CompareWith compares value in the 'ProvisioningPolicyStatus_FieldTerminalPathValue' with the value under path in 'ProvisioningPolicy_Status'.
  2513  func (fpv *ProvisioningPolicyStatus_FieldTerminalPathValue) CompareWith(source *ProvisioningPolicy_Status) (int, bool) {
  2514  	switch fpv.selector {
  2515  	default:
  2516  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Status: %d", fpv.selector))
  2517  	}
  2518  }
  2519  
  2520  func (fpv *ProvisioningPolicyStatus_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  2521  	return fpv.CompareWith(source.(*ProvisioningPolicy_Status))
  2522  }
  2523  
  2524  // ProvisioningPolicyStatus_FieldPathArrayItemValue allows storing single item in Path-specific values for Status according to their type
  2525  // Present only for array (repeated) types.
  2526  type ProvisioningPolicyStatus_FieldPathArrayItemValue interface {
  2527  	gotenobject.FieldPathArrayItemValue
  2528  	ProvisioningPolicyStatus_FieldPath
  2529  	ContainsValue(*ProvisioningPolicy_Status) bool
  2530  }
  2531  
  2532  // ParseProvisioningPolicyStatus_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  2533  func ParseProvisioningPolicyStatus_FieldPathArrayItemValue(pathStr, valueStr string) (ProvisioningPolicyStatus_FieldPathArrayItemValue, error) {
  2534  	fp, err := ParseProvisioningPolicyStatus_FieldPath(pathStr)
  2535  	if err != nil {
  2536  		return nil, err
  2537  	}
  2538  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  2539  	if err != nil {
  2540  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Status field path array item value from %s: %v", valueStr, err)
  2541  	}
  2542  	return fpaiv.(ProvisioningPolicyStatus_FieldPathArrayItemValue), nil
  2543  }
  2544  
  2545  func MustParseProvisioningPolicyStatus_FieldPathArrayItemValue(pathStr, valueStr string) ProvisioningPolicyStatus_FieldPathArrayItemValue {
  2546  	fpaiv, err := ParseProvisioningPolicyStatus_FieldPathArrayItemValue(pathStr, valueStr)
  2547  	if err != nil {
  2548  		panic(err)
  2549  	}
  2550  	return fpaiv
  2551  }
  2552  
  2553  type ProvisioningPolicyStatus_FieldTerminalPathArrayItemValue struct {
  2554  	ProvisioningPolicyStatus_FieldTerminalPath
  2555  	value interface{}
  2556  }
  2557  
  2558  var _ ProvisioningPolicyStatus_FieldPathArrayItemValue = (*ProvisioningPolicyStatus_FieldTerminalPathArrayItemValue)(nil)
  2559  
  2560  // GetRawValue returns stored element value for array in object ProvisioningPolicy_Status as interface{}
  2561  func (fpaiv *ProvisioningPolicyStatus_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  2562  	return fpaiv.value
  2563  }
  2564  
  2565  func (fpaiv *ProvisioningPolicyStatus_FieldTerminalPathArrayItemValue) GetSingle(source *ProvisioningPolicy_Status) (interface{}, bool) {
  2566  	return nil, false
  2567  }
  2568  
  2569  func (fpaiv *ProvisioningPolicyStatus_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  2570  	return fpaiv.GetSingle(source.(*ProvisioningPolicy_Status))
  2571  }
  2572  
  2573  // Contains returns a boolean indicating if value that is being held is present in given 'Status'
  2574  func (fpaiv *ProvisioningPolicyStatus_FieldTerminalPathArrayItemValue) ContainsValue(source *ProvisioningPolicy_Status) bool {
  2575  	slice := fpaiv.ProvisioningPolicyStatus_FieldTerminalPath.Get(source)
  2576  	for _, v := range slice {
  2577  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  2578  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  2579  				return true
  2580  			}
  2581  		} else if reflect.DeepEqual(v, fpaiv.value) {
  2582  			return true
  2583  		}
  2584  	}
  2585  	return false
  2586  }
  2587  
  2588  // ProvisioningPolicyStatus_FieldPathArrayOfValues allows storing slice of values for Status fields according to their type
  2589  type ProvisioningPolicyStatus_FieldPathArrayOfValues interface {
  2590  	gotenobject.FieldPathArrayOfValues
  2591  	ProvisioningPolicyStatus_FieldPath
  2592  }
  2593  
  2594  func ParseProvisioningPolicyStatus_FieldPathArrayOfValues(pathStr, valuesStr string) (ProvisioningPolicyStatus_FieldPathArrayOfValues, error) {
  2595  	fp, err := ParseProvisioningPolicyStatus_FieldPath(pathStr)
  2596  	if err != nil {
  2597  		return nil, err
  2598  	}
  2599  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  2600  	if err != nil {
  2601  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Status field path array of values from %s: %v", valuesStr, err)
  2602  	}
  2603  	return fpaov.(ProvisioningPolicyStatus_FieldPathArrayOfValues), nil
  2604  }
  2605  
  2606  func MustParseProvisioningPolicyStatus_FieldPathArrayOfValues(pathStr, valuesStr string) ProvisioningPolicyStatus_FieldPathArrayOfValues {
  2607  	fpaov, err := ParseProvisioningPolicyStatus_FieldPathArrayOfValues(pathStr, valuesStr)
  2608  	if err != nil {
  2609  		panic(err)
  2610  	}
  2611  	return fpaov
  2612  }
  2613  
  2614  type ProvisioningPolicyStatus_FieldTerminalPathArrayOfValues struct {
  2615  	ProvisioningPolicyStatus_FieldTerminalPath
  2616  	values interface{}
  2617  }
  2618  
  2619  var _ ProvisioningPolicyStatus_FieldPathArrayOfValues = (*ProvisioningPolicyStatus_FieldTerminalPathArrayOfValues)(nil)
  2620  
  2621  func (fpaov *ProvisioningPolicyStatus_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  2622  	switch fpaov.selector {
  2623  	}
  2624  	return
  2625  }
  2626  
  2627  // FieldPath provides implementation to handle
  2628  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
  2629  type ProvisioningPolicySpecTemplate_FieldPath interface {
  2630  	gotenobject.FieldPath
  2631  	Selector() ProvisioningPolicySpecTemplate_FieldPathSelector
  2632  	Get(source *ProvisioningPolicy_Spec_Template) []interface{}
  2633  	GetSingle(source *ProvisioningPolicy_Spec_Template) (interface{}, bool)
  2634  	ClearValue(item *ProvisioningPolicy_Spec_Template)
  2635  
  2636  	// Those methods build corresponding ProvisioningPolicySpecTemplate_FieldPathValue
  2637  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
  2638  	WithIValue(value interface{}) ProvisioningPolicySpecTemplate_FieldPathValue
  2639  	WithIArrayOfValues(values interface{}) ProvisioningPolicySpecTemplate_FieldPathArrayOfValues
  2640  	WithIArrayItemValue(value interface{}) ProvisioningPolicySpecTemplate_FieldPathArrayItemValue
  2641  }
  2642  
  2643  type ProvisioningPolicySpecTemplate_FieldPathSelector int32
  2644  
  2645  const (
  2646  	ProvisioningPolicySpecTemplate_FieldPathSelectorMetadata          ProvisioningPolicySpecTemplate_FieldPathSelector = 0
  2647  	ProvisioningPolicySpecTemplate_FieldPathSelectorSpec              ProvisioningPolicySpecTemplate_FieldPathSelector = 1
  2648  	ProvisioningPolicySpecTemplate_FieldPathSelectorPublicListingSpec ProvisioningPolicySpecTemplate_FieldPathSelector = 2
  2649  )
  2650  
  2651  func (s ProvisioningPolicySpecTemplate_FieldPathSelector) String() string {
  2652  	switch s {
  2653  	case ProvisioningPolicySpecTemplate_FieldPathSelectorMetadata:
  2654  		return "metadata"
  2655  	case ProvisioningPolicySpecTemplate_FieldPathSelectorSpec:
  2656  		return "spec"
  2657  	case ProvisioningPolicySpecTemplate_FieldPathSelectorPublicListingSpec:
  2658  		return "public_listing_spec"
  2659  	default:
  2660  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec_Template: %d", s))
  2661  	}
  2662  }
  2663  
  2664  func BuildProvisioningPolicySpecTemplate_FieldPath(fp gotenobject.RawFieldPath) (ProvisioningPolicySpecTemplate_FieldPath, error) {
  2665  	if len(fp) == 0 {
  2666  		return nil, status.Error(codes.InvalidArgument, "empty field path for object ProvisioningPolicy_Spec_Template")
  2667  	}
  2668  	if len(fp) == 1 {
  2669  		switch fp[0] {
  2670  		case "metadata":
  2671  			return &ProvisioningPolicySpecTemplate_FieldTerminalPath{selector: ProvisioningPolicySpecTemplate_FieldPathSelectorMetadata}, nil
  2672  		case "spec":
  2673  			return &ProvisioningPolicySpecTemplate_FieldTerminalPath{selector: ProvisioningPolicySpecTemplate_FieldPathSelectorSpec}, nil
  2674  		case "public_listing_spec", "publicListingSpec", "public-listing-spec":
  2675  			return &ProvisioningPolicySpecTemplate_FieldTerminalPath{selector: ProvisioningPolicySpecTemplate_FieldPathSelectorPublicListingSpec}, nil
  2676  		}
  2677  	} else {
  2678  		switch fp[0] {
  2679  		case "metadata":
  2680  			if subpath, err := meta.BuildMeta_FieldPath(fp[1:]); err != nil {
  2681  				return nil, err
  2682  			} else {
  2683  				return &ProvisioningPolicySpecTemplate_FieldSubPath{selector: ProvisioningPolicySpecTemplate_FieldPathSelectorMetadata, subPath: subpath}, nil
  2684  			}
  2685  		case "spec":
  2686  			if subpath, err := device.BuildDeviceSpec_FieldPath(fp[1:]); err != nil {
  2687  				return nil, err
  2688  			} else {
  2689  				return &ProvisioningPolicySpecTemplate_FieldSubPath{selector: ProvisioningPolicySpecTemplate_FieldPathSelectorSpec, subPath: subpath}, nil
  2690  			}
  2691  		case "public_listing_spec", "publicListingSpec", "public-listing-spec":
  2692  			if subpath, err := device.BuildDevicePublicListingSpec_FieldPath(fp[1:]); err != nil {
  2693  				return nil, err
  2694  			} else {
  2695  				return &ProvisioningPolicySpecTemplate_FieldSubPath{selector: ProvisioningPolicySpecTemplate_FieldPathSelectorPublicListingSpec, subPath: subpath}, nil
  2696  			}
  2697  		}
  2698  	}
  2699  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object ProvisioningPolicy_Spec_Template", fp)
  2700  }
  2701  
  2702  func ParseProvisioningPolicySpecTemplate_FieldPath(rawField string) (ProvisioningPolicySpecTemplate_FieldPath, error) {
  2703  	fp, err := gotenobject.ParseRawFieldPath(rawField)
  2704  	if err != nil {
  2705  		return nil, err
  2706  	}
  2707  	return BuildProvisioningPolicySpecTemplate_FieldPath(fp)
  2708  }
  2709  
  2710  func MustParseProvisioningPolicySpecTemplate_FieldPath(rawField string) ProvisioningPolicySpecTemplate_FieldPath {
  2711  	fp, err := ParseProvisioningPolicySpecTemplate_FieldPath(rawField)
  2712  	if err != nil {
  2713  		panic(err)
  2714  	}
  2715  	return fp
  2716  }
  2717  
  2718  type ProvisioningPolicySpecTemplate_FieldTerminalPath struct {
  2719  	selector ProvisioningPolicySpecTemplate_FieldPathSelector
  2720  }
  2721  
  2722  var _ ProvisioningPolicySpecTemplate_FieldPath = (*ProvisioningPolicySpecTemplate_FieldTerminalPath)(nil)
  2723  
  2724  func (fp *ProvisioningPolicySpecTemplate_FieldTerminalPath) Selector() ProvisioningPolicySpecTemplate_FieldPathSelector {
  2725  	return fp.selector
  2726  }
  2727  
  2728  // String returns path representation in proto convention
  2729  func (fp *ProvisioningPolicySpecTemplate_FieldTerminalPath) String() string {
  2730  	return fp.selector.String()
  2731  }
  2732  
  2733  // JSONString returns path representation is JSON convention
  2734  func (fp *ProvisioningPolicySpecTemplate_FieldTerminalPath) JSONString() string {
  2735  	return strcase.ToLowerCamel(fp.String())
  2736  }
  2737  
  2738  // Get returns all values pointed by specific field from source ProvisioningPolicy_Spec_Template
  2739  func (fp *ProvisioningPolicySpecTemplate_FieldTerminalPath) Get(source *ProvisioningPolicy_Spec_Template) (values []interface{}) {
  2740  	if source != nil {
  2741  		switch fp.selector {
  2742  		case ProvisioningPolicySpecTemplate_FieldPathSelectorMetadata:
  2743  			if source.Metadata != nil {
  2744  				values = append(values, source.Metadata)
  2745  			}
  2746  		case ProvisioningPolicySpecTemplate_FieldPathSelectorSpec:
  2747  			if source.Spec != nil {
  2748  				values = append(values, source.Spec)
  2749  			}
  2750  		case ProvisioningPolicySpecTemplate_FieldPathSelectorPublicListingSpec:
  2751  			if source.PublicListingSpec != nil {
  2752  				values = append(values, source.PublicListingSpec)
  2753  			}
  2754  		default:
  2755  			panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec_Template: %d", fp.selector))
  2756  		}
  2757  	}
  2758  	return
  2759  }
  2760  
  2761  func (fp *ProvisioningPolicySpecTemplate_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
  2762  	return fp.Get(source.(*ProvisioningPolicy_Spec_Template))
  2763  }
  2764  
  2765  // GetSingle returns value pointed by specific field of from source ProvisioningPolicy_Spec_Template
  2766  func (fp *ProvisioningPolicySpecTemplate_FieldTerminalPath) GetSingle(source *ProvisioningPolicy_Spec_Template) (interface{}, bool) {
  2767  	switch fp.selector {
  2768  	case ProvisioningPolicySpecTemplate_FieldPathSelectorMetadata:
  2769  		res := source.GetMetadata()
  2770  		return res, res != nil
  2771  	case ProvisioningPolicySpecTemplate_FieldPathSelectorSpec:
  2772  		res := source.GetSpec()
  2773  		return res, res != nil
  2774  	case ProvisioningPolicySpecTemplate_FieldPathSelectorPublicListingSpec:
  2775  		res := source.GetPublicListingSpec()
  2776  		return res, res != nil
  2777  	default:
  2778  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec_Template: %d", fp.selector))
  2779  	}
  2780  }
  2781  
  2782  func (fp *ProvisioningPolicySpecTemplate_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  2783  	return fp.GetSingle(source.(*ProvisioningPolicy_Spec_Template))
  2784  }
  2785  
  2786  // GetDefault returns a default value of the field type
  2787  func (fp *ProvisioningPolicySpecTemplate_FieldTerminalPath) GetDefault() interface{} {
  2788  	switch fp.selector {
  2789  	case ProvisioningPolicySpecTemplate_FieldPathSelectorMetadata:
  2790  		return (*meta.Meta)(nil)
  2791  	case ProvisioningPolicySpecTemplate_FieldPathSelectorSpec:
  2792  		return (*device.Device_Spec)(nil)
  2793  	case ProvisioningPolicySpecTemplate_FieldPathSelectorPublicListingSpec:
  2794  		return (*device.Device_PublicListingSpec)(nil)
  2795  	default:
  2796  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec_Template: %d", fp.selector))
  2797  	}
  2798  }
  2799  
  2800  func (fp *ProvisioningPolicySpecTemplate_FieldTerminalPath) ClearValue(item *ProvisioningPolicy_Spec_Template) {
  2801  	if item != nil {
  2802  		switch fp.selector {
  2803  		case ProvisioningPolicySpecTemplate_FieldPathSelectorMetadata:
  2804  			item.Metadata = nil
  2805  		case ProvisioningPolicySpecTemplate_FieldPathSelectorSpec:
  2806  			item.Spec = nil
  2807  		case ProvisioningPolicySpecTemplate_FieldPathSelectorPublicListingSpec:
  2808  			item.PublicListingSpec = nil
  2809  		default:
  2810  			panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec_Template: %d", fp.selector))
  2811  		}
  2812  	}
  2813  }
  2814  
  2815  func (fp *ProvisioningPolicySpecTemplate_FieldTerminalPath) ClearValueRaw(item proto.Message) {
  2816  	fp.ClearValue(item.(*ProvisioningPolicy_Spec_Template))
  2817  }
  2818  
  2819  // IsLeaf - whether field path is holds simple value
  2820  func (fp *ProvisioningPolicySpecTemplate_FieldTerminalPath) IsLeaf() bool {
  2821  	return false
  2822  }
  2823  
  2824  func (fp *ProvisioningPolicySpecTemplate_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  2825  	return []gotenobject.FieldPath{fp}
  2826  }
  2827  
  2828  func (fp *ProvisioningPolicySpecTemplate_FieldTerminalPath) WithIValue(value interface{}) ProvisioningPolicySpecTemplate_FieldPathValue {
  2829  	switch fp.selector {
  2830  	case ProvisioningPolicySpecTemplate_FieldPathSelectorMetadata:
  2831  		return &ProvisioningPolicySpecTemplate_FieldTerminalPathValue{ProvisioningPolicySpecTemplate_FieldTerminalPath: *fp, value: value.(*meta.Meta)}
  2832  	case ProvisioningPolicySpecTemplate_FieldPathSelectorSpec:
  2833  		return &ProvisioningPolicySpecTemplate_FieldTerminalPathValue{ProvisioningPolicySpecTemplate_FieldTerminalPath: *fp, value: value.(*device.Device_Spec)}
  2834  	case ProvisioningPolicySpecTemplate_FieldPathSelectorPublicListingSpec:
  2835  		return &ProvisioningPolicySpecTemplate_FieldTerminalPathValue{ProvisioningPolicySpecTemplate_FieldTerminalPath: *fp, value: value.(*device.Device_PublicListingSpec)}
  2836  	default:
  2837  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec_Template: %d", fp.selector))
  2838  	}
  2839  }
  2840  
  2841  func (fp *ProvisioningPolicySpecTemplate_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  2842  	return fp.WithIValue(value)
  2843  }
  2844  
  2845  func (fp *ProvisioningPolicySpecTemplate_FieldTerminalPath) WithIArrayOfValues(values interface{}) ProvisioningPolicySpecTemplate_FieldPathArrayOfValues {
  2846  	fpaov := &ProvisioningPolicySpecTemplate_FieldTerminalPathArrayOfValues{ProvisioningPolicySpecTemplate_FieldTerminalPath: *fp}
  2847  	switch fp.selector {
  2848  	case ProvisioningPolicySpecTemplate_FieldPathSelectorMetadata:
  2849  		return &ProvisioningPolicySpecTemplate_FieldTerminalPathArrayOfValues{ProvisioningPolicySpecTemplate_FieldTerminalPath: *fp, values: values.([]*meta.Meta)}
  2850  	case ProvisioningPolicySpecTemplate_FieldPathSelectorSpec:
  2851  		return &ProvisioningPolicySpecTemplate_FieldTerminalPathArrayOfValues{ProvisioningPolicySpecTemplate_FieldTerminalPath: *fp, values: values.([]*device.Device_Spec)}
  2852  	case ProvisioningPolicySpecTemplate_FieldPathSelectorPublicListingSpec:
  2853  		return &ProvisioningPolicySpecTemplate_FieldTerminalPathArrayOfValues{ProvisioningPolicySpecTemplate_FieldTerminalPath: *fp, values: values.([]*device.Device_PublicListingSpec)}
  2854  	default:
  2855  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec_Template: %d", fp.selector))
  2856  	}
  2857  	return fpaov
  2858  }
  2859  
  2860  func (fp *ProvisioningPolicySpecTemplate_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  2861  	return fp.WithIArrayOfValues(values)
  2862  }
  2863  
  2864  func (fp *ProvisioningPolicySpecTemplate_FieldTerminalPath) WithIArrayItemValue(value interface{}) ProvisioningPolicySpecTemplate_FieldPathArrayItemValue {
  2865  	switch fp.selector {
  2866  	default:
  2867  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec_Template: %d", fp.selector))
  2868  	}
  2869  }
  2870  
  2871  func (fp *ProvisioningPolicySpecTemplate_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  2872  	return fp.WithIArrayItemValue(value)
  2873  }
  2874  
  2875  type ProvisioningPolicySpecTemplate_FieldSubPath struct {
  2876  	selector ProvisioningPolicySpecTemplate_FieldPathSelector
  2877  	subPath  gotenobject.FieldPath
  2878  }
  2879  
  2880  var _ ProvisioningPolicySpecTemplate_FieldPath = (*ProvisioningPolicySpecTemplate_FieldSubPath)(nil)
  2881  
  2882  func (fps *ProvisioningPolicySpecTemplate_FieldSubPath) Selector() ProvisioningPolicySpecTemplate_FieldPathSelector {
  2883  	return fps.selector
  2884  }
  2885  func (fps *ProvisioningPolicySpecTemplate_FieldSubPath) AsMetadataSubPath() (meta.Meta_FieldPath, bool) {
  2886  	res, ok := fps.subPath.(meta.Meta_FieldPath)
  2887  	return res, ok
  2888  }
  2889  func (fps *ProvisioningPolicySpecTemplate_FieldSubPath) AsSpecSubPath() (device.DeviceSpec_FieldPath, bool) {
  2890  	res, ok := fps.subPath.(device.DeviceSpec_FieldPath)
  2891  	return res, ok
  2892  }
  2893  func (fps *ProvisioningPolicySpecTemplate_FieldSubPath) AsPublicListingSpecSubPath() (device.DevicePublicListingSpec_FieldPath, bool) {
  2894  	res, ok := fps.subPath.(device.DevicePublicListingSpec_FieldPath)
  2895  	return res, ok
  2896  }
  2897  
  2898  // String returns path representation in proto convention
  2899  func (fps *ProvisioningPolicySpecTemplate_FieldSubPath) String() string {
  2900  	return fps.selector.String() + "." + fps.subPath.String()
  2901  }
  2902  
  2903  // JSONString returns path representation is JSON convention
  2904  func (fps *ProvisioningPolicySpecTemplate_FieldSubPath) JSONString() string {
  2905  	return strcase.ToLowerCamel(fps.selector.String()) + "." + fps.subPath.JSONString()
  2906  }
  2907  
  2908  // Get returns all values pointed by selected field from source ProvisioningPolicy_Spec_Template
  2909  func (fps *ProvisioningPolicySpecTemplate_FieldSubPath) Get(source *ProvisioningPolicy_Spec_Template) (values []interface{}) {
  2910  	switch fps.selector {
  2911  	case ProvisioningPolicySpecTemplate_FieldPathSelectorMetadata:
  2912  		values = append(values, fps.subPath.GetRaw(source.GetMetadata())...)
  2913  	case ProvisioningPolicySpecTemplate_FieldPathSelectorSpec:
  2914  		values = append(values, fps.subPath.GetRaw(source.GetSpec())...)
  2915  	case ProvisioningPolicySpecTemplate_FieldPathSelectorPublicListingSpec:
  2916  		values = append(values, fps.subPath.GetRaw(source.GetPublicListingSpec())...)
  2917  	default:
  2918  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec_Template: %d", fps.selector))
  2919  	}
  2920  	return
  2921  }
  2922  
  2923  func (fps *ProvisioningPolicySpecTemplate_FieldSubPath) GetRaw(source proto.Message) []interface{} {
  2924  	return fps.Get(source.(*ProvisioningPolicy_Spec_Template))
  2925  }
  2926  
  2927  // GetSingle returns value of selected field from source ProvisioningPolicy_Spec_Template
  2928  func (fps *ProvisioningPolicySpecTemplate_FieldSubPath) GetSingle(source *ProvisioningPolicy_Spec_Template) (interface{}, bool) {
  2929  	switch fps.selector {
  2930  	case ProvisioningPolicySpecTemplate_FieldPathSelectorMetadata:
  2931  		if source.GetMetadata() == nil {
  2932  			return nil, false
  2933  		}
  2934  		return fps.subPath.GetSingleRaw(source.GetMetadata())
  2935  	case ProvisioningPolicySpecTemplate_FieldPathSelectorSpec:
  2936  		if source.GetSpec() == nil {
  2937  			return nil, false
  2938  		}
  2939  		return fps.subPath.GetSingleRaw(source.GetSpec())
  2940  	case ProvisioningPolicySpecTemplate_FieldPathSelectorPublicListingSpec:
  2941  		if source.GetPublicListingSpec() == nil {
  2942  			return nil, false
  2943  		}
  2944  		return fps.subPath.GetSingleRaw(source.GetPublicListingSpec())
  2945  	default:
  2946  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec_Template: %d", fps.selector))
  2947  	}
  2948  }
  2949  
  2950  func (fps *ProvisioningPolicySpecTemplate_FieldSubPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
  2951  	return fps.GetSingle(source.(*ProvisioningPolicy_Spec_Template))
  2952  }
  2953  
  2954  // GetDefault returns a default value of the field type
  2955  func (fps *ProvisioningPolicySpecTemplate_FieldSubPath) GetDefault() interface{} {
  2956  	return fps.subPath.GetDefault()
  2957  }
  2958  
  2959  func (fps *ProvisioningPolicySpecTemplate_FieldSubPath) ClearValue(item *ProvisioningPolicy_Spec_Template) {
  2960  	if item != nil {
  2961  		switch fps.selector {
  2962  		case ProvisioningPolicySpecTemplate_FieldPathSelectorMetadata:
  2963  			fps.subPath.ClearValueRaw(item.Metadata)
  2964  		case ProvisioningPolicySpecTemplate_FieldPathSelectorSpec:
  2965  			fps.subPath.ClearValueRaw(item.Spec)
  2966  		case ProvisioningPolicySpecTemplate_FieldPathSelectorPublicListingSpec:
  2967  			fps.subPath.ClearValueRaw(item.PublicListingSpec)
  2968  		default:
  2969  			panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec_Template: %d", fps.selector))
  2970  		}
  2971  	}
  2972  }
  2973  
  2974  func (fps *ProvisioningPolicySpecTemplate_FieldSubPath) ClearValueRaw(item proto.Message) {
  2975  	fps.ClearValue(item.(*ProvisioningPolicy_Spec_Template))
  2976  }
  2977  
  2978  // IsLeaf - whether field path is holds simple value
  2979  func (fps *ProvisioningPolicySpecTemplate_FieldSubPath) IsLeaf() bool {
  2980  	return fps.subPath.IsLeaf()
  2981  }
  2982  
  2983  func (fps *ProvisioningPolicySpecTemplate_FieldSubPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
  2984  	iPaths := []gotenobject.FieldPath{&ProvisioningPolicySpecTemplate_FieldTerminalPath{selector: fps.selector}}
  2985  	iPaths = append(iPaths, fps.subPath.SplitIntoTerminalIPaths()...)
  2986  	return iPaths
  2987  }
  2988  
  2989  func (fps *ProvisioningPolicySpecTemplate_FieldSubPath) WithIValue(value interface{}) ProvisioningPolicySpecTemplate_FieldPathValue {
  2990  	return &ProvisioningPolicySpecTemplate_FieldSubPathValue{fps, fps.subPath.WithRawIValue(value)}
  2991  }
  2992  
  2993  func (fps *ProvisioningPolicySpecTemplate_FieldSubPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
  2994  	return fps.WithIValue(value)
  2995  }
  2996  
  2997  func (fps *ProvisioningPolicySpecTemplate_FieldSubPath) WithIArrayOfValues(values interface{}) ProvisioningPolicySpecTemplate_FieldPathArrayOfValues {
  2998  	return &ProvisioningPolicySpecTemplate_FieldSubPathArrayOfValues{fps, fps.subPath.WithRawIArrayOfValues(values)}
  2999  }
  3000  
  3001  func (fps *ProvisioningPolicySpecTemplate_FieldSubPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
  3002  	return fps.WithIArrayOfValues(values)
  3003  }
  3004  
  3005  func (fps *ProvisioningPolicySpecTemplate_FieldSubPath) WithIArrayItemValue(value interface{}) ProvisioningPolicySpecTemplate_FieldPathArrayItemValue {
  3006  	return &ProvisioningPolicySpecTemplate_FieldSubPathArrayItemValue{fps, fps.subPath.WithRawIArrayItemValue(value)}
  3007  }
  3008  
  3009  func (fps *ProvisioningPolicySpecTemplate_FieldSubPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
  3010  	return fps.WithIArrayItemValue(value)
  3011  }
  3012  
  3013  // ProvisioningPolicySpecTemplate_FieldPathValue allows storing values for Template fields according to their type
  3014  type ProvisioningPolicySpecTemplate_FieldPathValue interface {
  3015  	ProvisioningPolicySpecTemplate_FieldPath
  3016  	gotenobject.FieldPathValue
  3017  	SetTo(target **ProvisioningPolicy_Spec_Template)
  3018  	CompareWith(*ProvisioningPolicy_Spec_Template) (cmp int, comparable bool)
  3019  }
  3020  
  3021  func ParseProvisioningPolicySpecTemplate_FieldPathValue(pathStr, valueStr string) (ProvisioningPolicySpecTemplate_FieldPathValue, error) {
  3022  	fp, err := ParseProvisioningPolicySpecTemplate_FieldPath(pathStr)
  3023  	if err != nil {
  3024  		return nil, err
  3025  	}
  3026  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
  3027  	if err != nil {
  3028  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Template field path value from %s: %v", valueStr, err)
  3029  	}
  3030  	return fpv.(ProvisioningPolicySpecTemplate_FieldPathValue), nil
  3031  }
  3032  
  3033  func MustParseProvisioningPolicySpecTemplate_FieldPathValue(pathStr, valueStr string) ProvisioningPolicySpecTemplate_FieldPathValue {
  3034  	fpv, err := ParseProvisioningPolicySpecTemplate_FieldPathValue(pathStr, valueStr)
  3035  	if err != nil {
  3036  		panic(err)
  3037  	}
  3038  	return fpv
  3039  }
  3040  
  3041  type ProvisioningPolicySpecTemplate_FieldTerminalPathValue struct {
  3042  	ProvisioningPolicySpecTemplate_FieldTerminalPath
  3043  	value interface{}
  3044  }
  3045  
  3046  var _ ProvisioningPolicySpecTemplate_FieldPathValue = (*ProvisioningPolicySpecTemplate_FieldTerminalPathValue)(nil)
  3047  
  3048  // GetRawValue returns raw value stored under selected path for 'Template' as interface{}
  3049  func (fpv *ProvisioningPolicySpecTemplate_FieldTerminalPathValue) GetRawValue() interface{} {
  3050  	return fpv.value
  3051  }
  3052  func (fpv *ProvisioningPolicySpecTemplate_FieldTerminalPathValue) AsMetadataValue() (*meta.Meta, bool) {
  3053  	res, ok := fpv.value.(*meta.Meta)
  3054  	return res, ok
  3055  }
  3056  func (fpv *ProvisioningPolicySpecTemplate_FieldTerminalPathValue) AsSpecValue() (*device.Device_Spec, bool) {
  3057  	res, ok := fpv.value.(*device.Device_Spec)
  3058  	return res, ok
  3059  }
  3060  func (fpv *ProvisioningPolicySpecTemplate_FieldTerminalPathValue) AsPublicListingSpecValue() (*device.Device_PublicListingSpec, bool) {
  3061  	res, ok := fpv.value.(*device.Device_PublicListingSpec)
  3062  	return res, ok
  3063  }
  3064  
  3065  // SetTo stores value for selected field for object Template
  3066  func (fpv *ProvisioningPolicySpecTemplate_FieldTerminalPathValue) SetTo(target **ProvisioningPolicy_Spec_Template) {
  3067  	if *target == nil {
  3068  		*target = new(ProvisioningPolicy_Spec_Template)
  3069  	}
  3070  	switch fpv.selector {
  3071  	case ProvisioningPolicySpecTemplate_FieldPathSelectorMetadata:
  3072  		(*target).Metadata = fpv.value.(*meta.Meta)
  3073  	case ProvisioningPolicySpecTemplate_FieldPathSelectorSpec:
  3074  		(*target).Spec = fpv.value.(*device.Device_Spec)
  3075  	case ProvisioningPolicySpecTemplate_FieldPathSelectorPublicListingSpec:
  3076  		(*target).PublicListingSpec = fpv.value.(*device.Device_PublicListingSpec)
  3077  	default:
  3078  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec_Template: %d", fpv.selector))
  3079  	}
  3080  }
  3081  
  3082  func (fpv *ProvisioningPolicySpecTemplate_FieldTerminalPathValue) SetToRaw(target proto.Message) {
  3083  	typedObject := target.(*ProvisioningPolicy_Spec_Template)
  3084  	fpv.SetTo(&typedObject)
  3085  }
  3086  
  3087  // CompareWith compares value in the 'ProvisioningPolicySpecTemplate_FieldTerminalPathValue' with the value under path in 'ProvisioningPolicy_Spec_Template'.
  3088  func (fpv *ProvisioningPolicySpecTemplate_FieldTerminalPathValue) CompareWith(source *ProvisioningPolicy_Spec_Template) (int, bool) {
  3089  	switch fpv.selector {
  3090  	case ProvisioningPolicySpecTemplate_FieldPathSelectorMetadata:
  3091  		return 0, false
  3092  	case ProvisioningPolicySpecTemplate_FieldPathSelectorSpec:
  3093  		return 0, false
  3094  	case ProvisioningPolicySpecTemplate_FieldPathSelectorPublicListingSpec:
  3095  		return 0, false
  3096  	default:
  3097  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec_Template: %d", fpv.selector))
  3098  	}
  3099  }
  3100  
  3101  func (fpv *ProvisioningPolicySpecTemplate_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  3102  	return fpv.CompareWith(source.(*ProvisioningPolicy_Spec_Template))
  3103  }
  3104  
  3105  type ProvisioningPolicySpecTemplate_FieldSubPathValue struct {
  3106  	ProvisioningPolicySpecTemplate_FieldPath
  3107  	subPathValue gotenobject.FieldPathValue
  3108  }
  3109  
  3110  var _ ProvisioningPolicySpecTemplate_FieldPathValue = (*ProvisioningPolicySpecTemplate_FieldSubPathValue)(nil)
  3111  
  3112  func (fpvs *ProvisioningPolicySpecTemplate_FieldSubPathValue) AsMetadataPathValue() (meta.Meta_FieldPathValue, bool) {
  3113  	res, ok := fpvs.subPathValue.(meta.Meta_FieldPathValue)
  3114  	return res, ok
  3115  }
  3116  func (fpvs *ProvisioningPolicySpecTemplate_FieldSubPathValue) AsSpecPathValue() (device.DeviceSpec_FieldPathValue, bool) {
  3117  	res, ok := fpvs.subPathValue.(device.DeviceSpec_FieldPathValue)
  3118  	return res, ok
  3119  }
  3120  func (fpvs *ProvisioningPolicySpecTemplate_FieldSubPathValue) AsPublicListingSpecPathValue() (device.DevicePublicListingSpec_FieldPathValue, bool) {
  3121  	res, ok := fpvs.subPathValue.(device.DevicePublicListingSpec_FieldPathValue)
  3122  	return res, ok
  3123  }
  3124  
  3125  func (fpvs *ProvisioningPolicySpecTemplate_FieldSubPathValue) SetTo(target **ProvisioningPolicy_Spec_Template) {
  3126  	if *target == nil {
  3127  		*target = new(ProvisioningPolicy_Spec_Template)
  3128  	}
  3129  	switch fpvs.Selector() {
  3130  	case ProvisioningPolicySpecTemplate_FieldPathSelectorMetadata:
  3131  		fpvs.subPathValue.(meta.Meta_FieldPathValue).SetTo(&(*target).Metadata)
  3132  	case ProvisioningPolicySpecTemplate_FieldPathSelectorSpec:
  3133  		fpvs.subPathValue.(device.DeviceSpec_FieldPathValue).SetTo(&(*target).Spec)
  3134  	case ProvisioningPolicySpecTemplate_FieldPathSelectorPublicListingSpec:
  3135  		fpvs.subPathValue.(device.DevicePublicListingSpec_FieldPathValue).SetTo(&(*target).PublicListingSpec)
  3136  	default:
  3137  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec_Template: %d", fpvs.Selector()))
  3138  	}
  3139  }
  3140  
  3141  func (fpvs *ProvisioningPolicySpecTemplate_FieldSubPathValue) SetToRaw(target proto.Message) {
  3142  	typedObject := target.(*ProvisioningPolicy_Spec_Template)
  3143  	fpvs.SetTo(&typedObject)
  3144  }
  3145  
  3146  func (fpvs *ProvisioningPolicySpecTemplate_FieldSubPathValue) GetRawValue() interface{} {
  3147  	return fpvs.subPathValue.GetRawValue()
  3148  }
  3149  
  3150  func (fpvs *ProvisioningPolicySpecTemplate_FieldSubPathValue) CompareWith(source *ProvisioningPolicy_Spec_Template) (int, bool) {
  3151  	switch fpvs.Selector() {
  3152  	case ProvisioningPolicySpecTemplate_FieldPathSelectorMetadata:
  3153  		return fpvs.subPathValue.(meta.Meta_FieldPathValue).CompareWith(source.GetMetadata())
  3154  	case ProvisioningPolicySpecTemplate_FieldPathSelectorSpec:
  3155  		return fpvs.subPathValue.(device.DeviceSpec_FieldPathValue).CompareWith(source.GetSpec())
  3156  	case ProvisioningPolicySpecTemplate_FieldPathSelectorPublicListingSpec:
  3157  		return fpvs.subPathValue.(device.DevicePublicListingSpec_FieldPathValue).CompareWith(source.GetPublicListingSpec())
  3158  	default:
  3159  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec_Template: %d", fpvs.Selector()))
  3160  	}
  3161  }
  3162  
  3163  func (fpvs *ProvisioningPolicySpecTemplate_FieldSubPathValue) CompareWithRaw(source proto.Message) (int, bool) {
  3164  	return fpvs.CompareWith(source.(*ProvisioningPolicy_Spec_Template))
  3165  }
  3166  
  3167  // ProvisioningPolicySpecTemplate_FieldPathArrayItemValue allows storing single item in Path-specific values for Template according to their type
  3168  // Present only for array (repeated) types.
  3169  type ProvisioningPolicySpecTemplate_FieldPathArrayItemValue interface {
  3170  	gotenobject.FieldPathArrayItemValue
  3171  	ProvisioningPolicySpecTemplate_FieldPath
  3172  	ContainsValue(*ProvisioningPolicy_Spec_Template) bool
  3173  }
  3174  
  3175  // ParseProvisioningPolicySpecTemplate_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
  3176  func ParseProvisioningPolicySpecTemplate_FieldPathArrayItemValue(pathStr, valueStr string) (ProvisioningPolicySpecTemplate_FieldPathArrayItemValue, error) {
  3177  	fp, err := ParseProvisioningPolicySpecTemplate_FieldPath(pathStr)
  3178  	if err != nil {
  3179  		return nil, err
  3180  	}
  3181  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
  3182  	if err != nil {
  3183  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Template field path array item value from %s: %v", valueStr, err)
  3184  	}
  3185  	return fpaiv.(ProvisioningPolicySpecTemplate_FieldPathArrayItemValue), nil
  3186  }
  3187  
  3188  func MustParseProvisioningPolicySpecTemplate_FieldPathArrayItemValue(pathStr, valueStr string) ProvisioningPolicySpecTemplate_FieldPathArrayItemValue {
  3189  	fpaiv, err := ParseProvisioningPolicySpecTemplate_FieldPathArrayItemValue(pathStr, valueStr)
  3190  	if err != nil {
  3191  		panic(err)
  3192  	}
  3193  	return fpaiv
  3194  }
  3195  
  3196  type ProvisioningPolicySpecTemplate_FieldTerminalPathArrayItemValue struct {
  3197  	ProvisioningPolicySpecTemplate_FieldTerminalPath
  3198  	value interface{}
  3199  }
  3200  
  3201  var _ ProvisioningPolicySpecTemplate_FieldPathArrayItemValue = (*ProvisioningPolicySpecTemplate_FieldTerminalPathArrayItemValue)(nil)
  3202  
  3203  // GetRawValue returns stored element value for array in object ProvisioningPolicy_Spec_Template as interface{}
  3204  func (fpaiv *ProvisioningPolicySpecTemplate_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
  3205  	return fpaiv.value
  3206  }
  3207  
  3208  func (fpaiv *ProvisioningPolicySpecTemplate_FieldTerminalPathArrayItemValue) GetSingle(source *ProvisioningPolicy_Spec_Template) (interface{}, bool) {
  3209  	return nil, false
  3210  }
  3211  
  3212  func (fpaiv *ProvisioningPolicySpecTemplate_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
  3213  	return fpaiv.GetSingle(source.(*ProvisioningPolicy_Spec_Template))
  3214  }
  3215  
  3216  // Contains returns a boolean indicating if value that is being held is present in given 'Template'
  3217  func (fpaiv *ProvisioningPolicySpecTemplate_FieldTerminalPathArrayItemValue) ContainsValue(source *ProvisioningPolicy_Spec_Template) bool {
  3218  	slice := fpaiv.ProvisioningPolicySpecTemplate_FieldTerminalPath.Get(source)
  3219  	for _, v := range slice {
  3220  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
  3221  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
  3222  				return true
  3223  			}
  3224  		} else if reflect.DeepEqual(v, fpaiv.value) {
  3225  			return true
  3226  		}
  3227  	}
  3228  	return false
  3229  }
  3230  
  3231  type ProvisioningPolicySpecTemplate_FieldSubPathArrayItemValue struct {
  3232  	ProvisioningPolicySpecTemplate_FieldPath
  3233  	subPathItemValue gotenobject.FieldPathArrayItemValue
  3234  }
  3235  
  3236  // GetRawValue returns stored array item value
  3237  func (fpaivs *ProvisioningPolicySpecTemplate_FieldSubPathArrayItemValue) GetRawItemValue() interface{} {
  3238  	return fpaivs.subPathItemValue.GetRawItemValue()
  3239  }
  3240  func (fpaivs *ProvisioningPolicySpecTemplate_FieldSubPathArrayItemValue) AsMetadataPathItemValue() (meta.Meta_FieldPathArrayItemValue, bool) {
  3241  	res, ok := fpaivs.subPathItemValue.(meta.Meta_FieldPathArrayItemValue)
  3242  	return res, ok
  3243  }
  3244  func (fpaivs *ProvisioningPolicySpecTemplate_FieldSubPathArrayItemValue) AsSpecPathItemValue() (device.DeviceSpec_FieldPathArrayItemValue, bool) {
  3245  	res, ok := fpaivs.subPathItemValue.(device.DeviceSpec_FieldPathArrayItemValue)
  3246  	return res, ok
  3247  }
  3248  func (fpaivs *ProvisioningPolicySpecTemplate_FieldSubPathArrayItemValue) AsPublicListingSpecPathItemValue() (device.DevicePublicListingSpec_FieldPathArrayItemValue, bool) {
  3249  	res, ok := fpaivs.subPathItemValue.(device.DevicePublicListingSpec_FieldPathArrayItemValue)
  3250  	return res, ok
  3251  }
  3252  
  3253  // Contains returns a boolean indicating if value that is being held is present in given 'Template'
  3254  func (fpaivs *ProvisioningPolicySpecTemplate_FieldSubPathArrayItemValue) ContainsValue(source *ProvisioningPolicy_Spec_Template) bool {
  3255  	switch fpaivs.Selector() {
  3256  	case ProvisioningPolicySpecTemplate_FieldPathSelectorMetadata:
  3257  		return fpaivs.subPathItemValue.(meta.Meta_FieldPathArrayItemValue).ContainsValue(source.GetMetadata())
  3258  	case ProvisioningPolicySpecTemplate_FieldPathSelectorSpec:
  3259  		return fpaivs.subPathItemValue.(device.DeviceSpec_FieldPathArrayItemValue).ContainsValue(source.GetSpec())
  3260  	case ProvisioningPolicySpecTemplate_FieldPathSelectorPublicListingSpec:
  3261  		return fpaivs.subPathItemValue.(device.DevicePublicListingSpec_FieldPathArrayItemValue).ContainsValue(source.GetPublicListingSpec())
  3262  	default:
  3263  		panic(fmt.Sprintf("Invalid selector for ProvisioningPolicy_Spec_Template: %d", fpaivs.Selector()))
  3264  	}
  3265  }
  3266  
  3267  // ProvisioningPolicySpecTemplate_FieldPathArrayOfValues allows storing slice of values for Template fields according to their type
  3268  type ProvisioningPolicySpecTemplate_FieldPathArrayOfValues interface {
  3269  	gotenobject.FieldPathArrayOfValues
  3270  	ProvisioningPolicySpecTemplate_FieldPath
  3271  }
  3272  
  3273  func ParseProvisioningPolicySpecTemplate_FieldPathArrayOfValues(pathStr, valuesStr string) (ProvisioningPolicySpecTemplate_FieldPathArrayOfValues, error) {
  3274  	fp, err := ParseProvisioningPolicySpecTemplate_FieldPath(pathStr)
  3275  	if err != nil {
  3276  		return nil, err
  3277  	}
  3278  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  3279  	if err != nil {
  3280  		return nil, status.Errorf(codes.InvalidArgument, "error parsing Template field path array of values from %s: %v", valuesStr, err)
  3281  	}
  3282  	return fpaov.(ProvisioningPolicySpecTemplate_FieldPathArrayOfValues), nil
  3283  }
  3284  
  3285  func MustParseProvisioningPolicySpecTemplate_FieldPathArrayOfValues(pathStr, valuesStr string) ProvisioningPolicySpecTemplate_FieldPathArrayOfValues {
  3286  	fpaov, err := ParseProvisioningPolicySpecTemplate_FieldPathArrayOfValues(pathStr, valuesStr)
  3287  	if err != nil {
  3288  		panic(err)
  3289  	}
  3290  	return fpaov
  3291  }
  3292  
  3293  type ProvisioningPolicySpecTemplate_FieldTerminalPathArrayOfValues struct {
  3294  	ProvisioningPolicySpecTemplate_FieldTerminalPath
  3295  	values interface{}
  3296  }
  3297  
  3298  var _ ProvisioningPolicySpecTemplate_FieldPathArrayOfValues = (*ProvisioningPolicySpecTemplate_FieldTerminalPathArrayOfValues)(nil)
  3299  
  3300  func (fpaov *ProvisioningPolicySpecTemplate_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  3301  	switch fpaov.selector {
  3302  	case ProvisioningPolicySpecTemplate_FieldPathSelectorMetadata:
  3303  		for _, v := range fpaov.values.([]*meta.Meta) {
  3304  			values = append(values, v)
  3305  		}
  3306  	case ProvisioningPolicySpecTemplate_FieldPathSelectorSpec:
  3307  		for _, v := range fpaov.values.([]*device.Device_Spec) {
  3308  			values = append(values, v)
  3309  		}
  3310  	case ProvisioningPolicySpecTemplate_FieldPathSelectorPublicListingSpec:
  3311  		for _, v := range fpaov.values.([]*device.Device_PublicListingSpec) {
  3312  			values = append(values, v)
  3313  		}
  3314  	}
  3315  	return
  3316  }
  3317  func (fpaov *ProvisioningPolicySpecTemplate_FieldTerminalPathArrayOfValues) AsMetadataArrayOfValues() ([]*meta.Meta, bool) {
  3318  	res, ok := fpaov.values.([]*meta.Meta)
  3319  	return res, ok
  3320  }
  3321  func (fpaov *ProvisioningPolicySpecTemplate_FieldTerminalPathArrayOfValues) AsSpecArrayOfValues() ([]*device.Device_Spec, bool) {
  3322  	res, ok := fpaov.values.([]*device.Device_Spec)
  3323  	return res, ok
  3324  }
  3325  func (fpaov *ProvisioningPolicySpecTemplate_FieldTerminalPathArrayOfValues) AsPublicListingSpecArrayOfValues() ([]*device.Device_PublicListingSpec, bool) {
  3326  	res, ok := fpaov.values.([]*device.Device_PublicListingSpec)
  3327  	return res, ok
  3328  }
  3329  
  3330  type ProvisioningPolicySpecTemplate_FieldSubPathArrayOfValues struct {
  3331  	ProvisioningPolicySpecTemplate_FieldPath
  3332  	subPathArrayOfValues gotenobject.FieldPathArrayOfValues
  3333  }
  3334  
  3335  var _ ProvisioningPolicySpecTemplate_FieldPathArrayOfValues = (*ProvisioningPolicySpecTemplate_FieldSubPathArrayOfValues)(nil)
  3336  
  3337  func (fpsaov *ProvisioningPolicySpecTemplate_FieldSubPathArrayOfValues) GetRawValues() []interface{} {
  3338  	return fpsaov.subPathArrayOfValues.GetRawValues()
  3339  }
  3340  func (fpsaov *ProvisioningPolicySpecTemplate_FieldSubPathArrayOfValues) AsMetadataPathArrayOfValues() (meta.Meta_FieldPathArrayOfValues, bool) {
  3341  	res, ok := fpsaov.subPathArrayOfValues.(meta.Meta_FieldPathArrayOfValues)
  3342  	return res, ok
  3343  }
  3344  func (fpsaov *ProvisioningPolicySpecTemplate_FieldSubPathArrayOfValues) AsSpecPathArrayOfValues() (device.DeviceSpec_FieldPathArrayOfValues, bool) {
  3345  	res, ok := fpsaov.subPathArrayOfValues.(device.DeviceSpec_FieldPathArrayOfValues)
  3346  	return res, ok
  3347  }
  3348  func (fpsaov *ProvisioningPolicySpecTemplate_FieldSubPathArrayOfValues) AsPublicListingSpecPathArrayOfValues() (device.DevicePublicListingSpec_FieldPathArrayOfValues, bool) {
  3349  	res, ok := fpsaov.subPathArrayOfValues.(device.DevicePublicListingSpec_FieldPathArrayOfValues)
  3350  	return res, ok
  3351  }