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

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