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

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/limits/proto/v1/plan_assignment.proto
     3  // DO NOT EDIT!!!
     4  
     5  package plan_assignment
     6  
     7  import (
     8  	"encoding/json"
     9  	"fmt"
    10  	"reflect"
    11  	"strings"
    12  	"time"
    13  
    14  	"google.golang.org/grpc/codes"
    15  	"google.golang.org/grpc/status"
    16  	"google.golang.org/protobuf/encoding/protojson"
    17  	"google.golang.org/protobuf/proto"
    18  	"google.golang.org/protobuf/reflect/protoregistry"
    19  
    20  	gotenobject "github.com/cloudwan/goten-sdk/runtime/object"
    21  	"github.com/cloudwan/goten-sdk/runtime/strcase"
    22  )
    23  
    24  // proto imports
    25  import (
    26  	iam_organization "github.com/cloudwan/edgelq-sdk/iam/resources/v1/organization"
    27  	iam_project "github.com/cloudwan/edgelq-sdk/iam/resources/v1/project"
    28  	accepted_plan "github.com/cloudwan/edgelq-sdk/limits/resources/v1/accepted_plan"
    29  	common "github.com/cloudwan/edgelq-sdk/limits/resources/v1/common"
    30  	plan "github.com/cloudwan/edgelq-sdk/limits/resources/v1/plan"
    31  	meta_service "github.com/cloudwan/goten-sdk/meta-service/resources/v1/service"
    32  	meta "github.com/cloudwan/goten-sdk/types/meta"
    33  )
    34  
    35  // ensure the imports are used
    36  var (
    37  	_ = new(json.Marshaler)
    38  	_ = new(fmt.Stringer)
    39  	_ = reflect.DeepEqual
    40  	_ = strings.Builder{}
    41  	_ = time.Second
    42  
    43  	_ = strcase.ToLowerCamel
    44  	_ = codes.NotFound
    45  	_ = status.Status{}
    46  	_ = protojson.UnmarshalOptions{}
    47  	_ = new(proto.Message)
    48  	_ = protoregistry.GlobalTypes
    49  
    50  	_ = new(gotenobject.FieldPath)
    51  )
    52  
    53  // make sure we're using proto imports
    54  var (
    55  	_ = &iam_organization.Organization{}
    56  	_ = &iam_project.Project{}
    57  	_ = &accepted_plan.AcceptedPlan{}
    58  	_ = &common.RegionalPlanAssignment{}
    59  	_ = &plan.Plan{}
    60  	_ = &meta_service.Service{}
    61  	_ = &meta.Meta{}
    62  )
    63  
    64  // FieldPath provides implementation to handle
    65  // https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto
    66  type PlanAssignment_FieldPath interface {
    67  	gotenobject.FieldPath
    68  	Selector() PlanAssignment_FieldPathSelector
    69  	Get(source *PlanAssignment) []interface{}
    70  	GetSingle(source *PlanAssignment) (interface{}, bool)
    71  	ClearValue(item *PlanAssignment)
    72  
    73  	// Those methods build corresponding PlanAssignment_FieldPathValue
    74  	// (or array of values) and holds passed value. Panics if injected type is incorrect.
    75  	WithIValue(value interface{}) PlanAssignment_FieldPathValue
    76  	WithIArrayOfValues(values interface{}) PlanAssignment_FieldPathArrayOfValues
    77  	WithIArrayItemValue(value interface{}) PlanAssignment_FieldPathArrayItemValue
    78  }
    79  
    80  type PlanAssignment_FieldPathSelector int32
    81  
    82  const (
    83  	PlanAssignment_FieldPathSelectorName                      PlanAssignment_FieldPathSelector = 0
    84  	PlanAssignment_FieldPathSelectorMetadata                  PlanAssignment_FieldPathSelector = 1
    85  	PlanAssignment_FieldPathSelectorDefaultRegionalPlan       PlanAssignment_FieldPathSelector = 2
    86  	PlanAssignment_FieldPathSelectorService                   PlanAssignment_FieldPathSelector = 3
    87  	PlanAssignment_FieldPathSelectorRegionalPlanOverrides     PlanAssignment_FieldPathSelector = 4
    88  	PlanAssignment_FieldPathSelectorExtensions                PlanAssignment_FieldPathSelector = 5
    89  	PlanAssignment_FieldPathSelectorAllowances                PlanAssignment_FieldPathSelector = 6
    90  	PlanAssignment_FieldPathSelectorAppliedRegions            PlanAssignment_FieldPathSelector = 7
    91  	PlanAssignment_FieldPathSelectorAppliedPlanSpecGeneration PlanAssignment_FieldPathSelector = 8
    92  	PlanAssignment_FieldPathSelectorSource                    PlanAssignment_FieldPathSelector = 9
    93  )
    94  
    95  func (s PlanAssignment_FieldPathSelector) String() string {
    96  	switch s {
    97  	case PlanAssignment_FieldPathSelectorName:
    98  		return "name"
    99  	case PlanAssignment_FieldPathSelectorMetadata:
   100  		return "metadata"
   101  	case PlanAssignment_FieldPathSelectorDefaultRegionalPlan:
   102  		return "default_regional_plan"
   103  	case PlanAssignment_FieldPathSelectorService:
   104  		return "service"
   105  	case PlanAssignment_FieldPathSelectorRegionalPlanOverrides:
   106  		return "regional_plan_overrides"
   107  	case PlanAssignment_FieldPathSelectorExtensions:
   108  		return "extensions"
   109  	case PlanAssignment_FieldPathSelectorAllowances:
   110  		return "allowances"
   111  	case PlanAssignment_FieldPathSelectorAppliedRegions:
   112  		return "applied_regions"
   113  	case PlanAssignment_FieldPathSelectorAppliedPlanSpecGeneration:
   114  		return "applied_plan_spec_generation"
   115  	case PlanAssignment_FieldPathSelectorSource:
   116  		return "source"
   117  	default:
   118  		panic(fmt.Sprintf("Invalid selector for PlanAssignment: %d", s))
   119  	}
   120  }
   121  
   122  func BuildPlanAssignment_FieldPath(fp gotenobject.RawFieldPath) (PlanAssignment_FieldPath, error) {
   123  	if len(fp) == 0 {
   124  		return nil, status.Error(codes.InvalidArgument, "empty field path for object PlanAssignment")
   125  	}
   126  	if len(fp) == 1 {
   127  		switch fp[0] {
   128  		case "name":
   129  			return &PlanAssignment_FieldTerminalPath{selector: PlanAssignment_FieldPathSelectorName}, nil
   130  		case "metadata":
   131  			return &PlanAssignment_FieldTerminalPath{selector: PlanAssignment_FieldPathSelectorMetadata}, nil
   132  		case "default_regional_plan", "defaultRegionalPlan", "default-regional-plan":
   133  			return &PlanAssignment_FieldTerminalPath{selector: PlanAssignment_FieldPathSelectorDefaultRegionalPlan}, nil
   134  		case "service":
   135  			return &PlanAssignment_FieldTerminalPath{selector: PlanAssignment_FieldPathSelectorService}, nil
   136  		case "regional_plan_overrides", "regionalPlanOverrides", "regional-plan-overrides":
   137  			return &PlanAssignment_FieldTerminalPath{selector: PlanAssignment_FieldPathSelectorRegionalPlanOverrides}, nil
   138  		case "extensions":
   139  			return &PlanAssignment_FieldTerminalPath{selector: PlanAssignment_FieldPathSelectorExtensions}, nil
   140  		case "allowances":
   141  			return &PlanAssignment_FieldTerminalPath{selector: PlanAssignment_FieldPathSelectorAllowances}, nil
   142  		case "applied_regions", "appliedRegions", "applied-regions":
   143  			return &PlanAssignment_FieldTerminalPath{selector: PlanAssignment_FieldPathSelectorAppliedRegions}, nil
   144  		case "applied_plan_spec_generation", "appliedPlanSpecGeneration", "applied-plan-spec-generation":
   145  			return &PlanAssignment_FieldTerminalPath{selector: PlanAssignment_FieldPathSelectorAppliedPlanSpecGeneration}, nil
   146  		case "source":
   147  			return &PlanAssignment_FieldTerminalPath{selector: PlanAssignment_FieldPathSelectorSource}, nil
   148  		}
   149  	} else {
   150  		switch fp[0] {
   151  		case "metadata":
   152  			if subpath, err := meta.BuildMeta_FieldPath(fp[1:]); err != nil {
   153  				return nil, err
   154  			} else {
   155  				return &PlanAssignment_FieldSubPath{selector: PlanAssignment_FieldPathSelectorMetadata, subPath: subpath}, nil
   156  			}
   157  		case "regional_plan_overrides", "regionalPlanOverrides", "regional-plan-overrides":
   158  			if subpath, err := common.BuildRegionalPlanAssignment_FieldPath(fp[1:]); err != nil {
   159  				return nil, err
   160  			} else {
   161  				return &PlanAssignment_FieldSubPath{selector: PlanAssignment_FieldPathSelectorRegionalPlanOverrides, subPath: subpath}, nil
   162  			}
   163  		case "extensions":
   164  			if subpath, err := common.BuildAllowance_FieldPath(fp[1:]); err != nil {
   165  				return nil, err
   166  			} else {
   167  				return &PlanAssignment_FieldSubPath{selector: PlanAssignment_FieldPathSelectorExtensions, subPath: subpath}, nil
   168  			}
   169  		case "allowances":
   170  			if subpath, err := common.BuildAllowance_FieldPath(fp[1:]); err != nil {
   171  				return nil, err
   172  			} else {
   173  				return &PlanAssignment_FieldSubPath{selector: PlanAssignment_FieldPathSelectorAllowances, subPath: subpath}, nil
   174  			}
   175  		}
   176  	}
   177  	return nil, status.Errorf(codes.InvalidArgument, "unknown field path '%s' for object PlanAssignment", fp)
   178  }
   179  
   180  func ParsePlanAssignment_FieldPath(rawField string) (PlanAssignment_FieldPath, error) {
   181  	fp, err := gotenobject.ParseRawFieldPath(rawField)
   182  	if err != nil {
   183  		return nil, err
   184  	}
   185  	return BuildPlanAssignment_FieldPath(fp)
   186  }
   187  
   188  func MustParsePlanAssignment_FieldPath(rawField string) PlanAssignment_FieldPath {
   189  	fp, err := ParsePlanAssignment_FieldPath(rawField)
   190  	if err != nil {
   191  		panic(err)
   192  	}
   193  	return fp
   194  }
   195  
   196  type PlanAssignment_FieldTerminalPath struct {
   197  	selector PlanAssignment_FieldPathSelector
   198  }
   199  
   200  var _ PlanAssignment_FieldPath = (*PlanAssignment_FieldTerminalPath)(nil)
   201  
   202  func (fp *PlanAssignment_FieldTerminalPath) Selector() PlanAssignment_FieldPathSelector {
   203  	return fp.selector
   204  }
   205  
   206  // String returns path representation in proto convention
   207  func (fp *PlanAssignment_FieldTerminalPath) String() string {
   208  	return fp.selector.String()
   209  }
   210  
   211  // JSONString returns path representation is JSON convention
   212  func (fp *PlanAssignment_FieldTerminalPath) JSONString() string {
   213  	return strcase.ToLowerCamel(fp.String())
   214  }
   215  
   216  // Get returns all values pointed by specific field from source PlanAssignment
   217  func (fp *PlanAssignment_FieldTerminalPath) Get(source *PlanAssignment) (values []interface{}) {
   218  	if source != nil {
   219  		switch fp.selector {
   220  		case PlanAssignment_FieldPathSelectorName:
   221  			if source.Name != nil {
   222  				values = append(values, source.Name)
   223  			}
   224  		case PlanAssignment_FieldPathSelectorMetadata:
   225  			if source.Metadata != nil {
   226  				values = append(values, source.Metadata)
   227  			}
   228  		case PlanAssignment_FieldPathSelectorDefaultRegionalPlan:
   229  			if source.DefaultRegionalPlan != nil {
   230  				values = append(values, source.DefaultRegionalPlan)
   231  			}
   232  		case PlanAssignment_FieldPathSelectorService:
   233  			if source.Service != nil {
   234  				values = append(values, source.Service)
   235  			}
   236  		case PlanAssignment_FieldPathSelectorRegionalPlanOverrides:
   237  			for _, value := range source.GetRegionalPlanOverrides() {
   238  				values = append(values, value)
   239  			}
   240  		case PlanAssignment_FieldPathSelectorExtensions:
   241  			for _, value := range source.GetExtensions() {
   242  				values = append(values, value)
   243  			}
   244  		case PlanAssignment_FieldPathSelectorAllowances:
   245  			for _, value := range source.GetAllowances() {
   246  				values = append(values, value)
   247  			}
   248  		case PlanAssignment_FieldPathSelectorAppliedRegions:
   249  			for _, value := range source.GetAppliedRegions() {
   250  				values = append(values, value)
   251  			}
   252  		case PlanAssignment_FieldPathSelectorAppliedPlanSpecGeneration:
   253  			values = append(values, source.AppliedPlanSpecGeneration)
   254  		case PlanAssignment_FieldPathSelectorSource:
   255  			if source.Source != nil {
   256  				values = append(values, source.Source)
   257  			}
   258  		default:
   259  			panic(fmt.Sprintf("Invalid selector for PlanAssignment: %d", fp.selector))
   260  		}
   261  	}
   262  	return
   263  }
   264  
   265  func (fp *PlanAssignment_FieldTerminalPath) GetRaw(source proto.Message) []interface{} {
   266  	return fp.Get(source.(*PlanAssignment))
   267  }
   268  
   269  // GetSingle returns value pointed by specific field of from source PlanAssignment
   270  func (fp *PlanAssignment_FieldTerminalPath) GetSingle(source *PlanAssignment) (interface{}, bool) {
   271  	switch fp.selector {
   272  	case PlanAssignment_FieldPathSelectorName:
   273  		res := source.GetName()
   274  		return res, res != nil
   275  	case PlanAssignment_FieldPathSelectorMetadata:
   276  		res := source.GetMetadata()
   277  		return res, res != nil
   278  	case PlanAssignment_FieldPathSelectorDefaultRegionalPlan:
   279  		res := source.GetDefaultRegionalPlan()
   280  		return res, res != nil
   281  	case PlanAssignment_FieldPathSelectorService:
   282  		res := source.GetService()
   283  		return res, res != nil
   284  	case PlanAssignment_FieldPathSelectorRegionalPlanOverrides:
   285  		res := source.GetRegionalPlanOverrides()
   286  		return res, res != nil
   287  	case PlanAssignment_FieldPathSelectorExtensions:
   288  		res := source.GetExtensions()
   289  		return res, res != nil
   290  	case PlanAssignment_FieldPathSelectorAllowances:
   291  		res := source.GetAllowances()
   292  		return res, res != nil
   293  	case PlanAssignment_FieldPathSelectorAppliedRegions:
   294  		res := source.GetAppliedRegions()
   295  		return res, res != nil
   296  	case PlanAssignment_FieldPathSelectorAppliedPlanSpecGeneration:
   297  		return source.GetAppliedPlanSpecGeneration(), source != nil
   298  	case PlanAssignment_FieldPathSelectorSource:
   299  		res := source.GetSource()
   300  		return res, res != nil
   301  	default:
   302  		panic(fmt.Sprintf("Invalid selector for PlanAssignment: %d", fp.selector))
   303  	}
   304  }
   305  
   306  func (fp *PlanAssignment_FieldTerminalPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
   307  	return fp.GetSingle(source.(*PlanAssignment))
   308  }
   309  
   310  // GetDefault returns a default value of the field type
   311  func (fp *PlanAssignment_FieldTerminalPath) GetDefault() interface{} {
   312  	switch fp.selector {
   313  	case PlanAssignment_FieldPathSelectorName:
   314  		return (*Name)(nil)
   315  	case PlanAssignment_FieldPathSelectorMetadata:
   316  		return (*meta.Meta)(nil)
   317  	case PlanAssignment_FieldPathSelectorDefaultRegionalPlan:
   318  		return (*plan.Reference)(nil)
   319  	case PlanAssignment_FieldPathSelectorService:
   320  		return (*meta_service.Reference)(nil)
   321  	case PlanAssignment_FieldPathSelectorRegionalPlanOverrides:
   322  		return ([]*common.RegionalPlanAssignment)(nil)
   323  	case PlanAssignment_FieldPathSelectorExtensions:
   324  		return ([]*common.Allowance)(nil)
   325  	case PlanAssignment_FieldPathSelectorAllowances:
   326  		return ([]*common.Allowance)(nil)
   327  	case PlanAssignment_FieldPathSelectorAppliedRegions:
   328  		return ([]string)(nil)
   329  	case PlanAssignment_FieldPathSelectorAppliedPlanSpecGeneration:
   330  		return int64(0)
   331  	case PlanAssignment_FieldPathSelectorSource:
   332  		return (*accepted_plan.Reference)(nil)
   333  	default:
   334  		panic(fmt.Sprintf("Invalid selector for PlanAssignment: %d", fp.selector))
   335  	}
   336  }
   337  
   338  func (fp *PlanAssignment_FieldTerminalPath) ClearValue(item *PlanAssignment) {
   339  	if item != nil {
   340  		switch fp.selector {
   341  		case PlanAssignment_FieldPathSelectorName:
   342  			item.Name = nil
   343  		case PlanAssignment_FieldPathSelectorMetadata:
   344  			item.Metadata = nil
   345  		case PlanAssignment_FieldPathSelectorDefaultRegionalPlan:
   346  			item.DefaultRegionalPlan = nil
   347  		case PlanAssignment_FieldPathSelectorService:
   348  			item.Service = nil
   349  		case PlanAssignment_FieldPathSelectorRegionalPlanOverrides:
   350  			item.RegionalPlanOverrides = nil
   351  		case PlanAssignment_FieldPathSelectorExtensions:
   352  			item.Extensions = nil
   353  		case PlanAssignment_FieldPathSelectorAllowances:
   354  			item.Allowances = nil
   355  		case PlanAssignment_FieldPathSelectorAppliedRegions:
   356  			item.AppliedRegions = nil
   357  		case PlanAssignment_FieldPathSelectorAppliedPlanSpecGeneration:
   358  			item.AppliedPlanSpecGeneration = int64(0)
   359  		case PlanAssignment_FieldPathSelectorSource:
   360  			item.Source = nil
   361  		default:
   362  			panic(fmt.Sprintf("Invalid selector for PlanAssignment: %d", fp.selector))
   363  		}
   364  	}
   365  }
   366  
   367  func (fp *PlanAssignment_FieldTerminalPath) ClearValueRaw(item proto.Message) {
   368  	fp.ClearValue(item.(*PlanAssignment))
   369  }
   370  
   371  // IsLeaf - whether field path is holds simple value
   372  func (fp *PlanAssignment_FieldTerminalPath) IsLeaf() bool {
   373  	return fp.selector == PlanAssignment_FieldPathSelectorName ||
   374  		fp.selector == PlanAssignment_FieldPathSelectorDefaultRegionalPlan ||
   375  		fp.selector == PlanAssignment_FieldPathSelectorService ||
   376  		fp.selector == PlanAssignment_FieldPathSelectorAppliedRegions ||
   377  		fp.selector == PlanAssignment_FieldPathSelectorAppliedPlanSpecGeneration ||
   378  		fp.selector == PlanAssignment_FieldPathSelectorSource
   379  }
   380  
   381  func (fp *PlanAssignment_FieldTerminalPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
   382  	return []gotenobject.FieldPath{fp}
   383  }
   384  
   385  func (fp *PlanAssignment_FieldTerminalPath) WithIValue(value interface{}) PlanAssignment_FieldPathValue {
   386  	switch fp.selector {
   387  	case PlanAssignment_FieldPathSelectorName:
   388  		return &PlanAssignment_FieldTerminalPathValue{PlanAssignment_FieldTerminalPath: *fp, value: value.(*Name)}
   389  	case PlanAssignment_FieldPathSelectorMetadata:
   390  		return &PlanAssignment_FieldTerminalPathValue{PlanAssignment_FieldTerminalPath: *fp, value: value.(*meta.Meta)}
   391  	case PlanAssignment_FieldPathSelectorDefaultRegionalPlan:
   392  		return &PlanAssignment_FieldTerminalPathValue{PlanAssignment_FieldTerminalPath: *fp, value: value.(*plan.Reference)}
   393  	case PlanAssignment_FieldPathSelectorService:
   394  		return &PlanAssignment_FieldTerminalPathValue{PlanAssignment_FieldTerminalPath: *fp, value: value.(*meta_service.Reference)}
   395  	case PlanAssignment_FieldPathSelectorRegionalPlanOverrides:
   396  		return &PlanAssignment_FieldTerminalPathValue{PlanAssignment_FieldTerminalPath: *fp, value: value.([]*common.RegionalPlanAssignment)}
   397  	case PlanAssignment_FieldPathSelectorExtensions:
   398  		return &PlanAssignment_FieldTerminalPathValue{PlanAssignment_FieldTerminalPath: *fp, value: value.([]*common.Allowance)}
   399  	case PlanAssignment_FieldPathSelectorAllowances:
   400  		return &PlanAssignment_FieldTerminalPathValue{PlanAssignment_FieldTerminalPath: *fp, value: value.([]*common.Allowance)}
   401  	case PlanAssignment_FieldPathSelectorAppliedRegions:
   402  		return &PlanAssignment_FieldTerminalPathValue{PlanAssignment_FieldTerminalPath: *fp, value: value.([]string)}
   403  	case PlanAssignment_FieldPathSelectorAppliedPlanSpecGeneration:
   404  		return &PlanAssignment_FieldTerminalPathValue{PlanAssignment_FieldTerminalPath: *fp, value: value.(int64)}
   405  	case PlanAssignment_FieldPathSelectorSource:
   406  		return &PlanAssignment_FieldTerminalPathValue{PlanAssignment_FieldTerminalPath: *fp, value: value.(*accepted_plan.Reference)}
   407  	default:
   408  		panic(fmt.Sprintf("Invalid selector for PlanAssignment: %d", fp.selector))
   409  	}
   410  }
   411  
   412  func (fp *PlanAssignment_FieldTerminalPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
   413  	return fp.WithIValue(value)
   414  }
   415  
   416  func (fp *PlanAssignment_FieldTerminalPath) WithIArrayOfValues(values interface{}) PlanAssignment_FieldPathArrayOfValues {
   417  	fpaov := &PlanAssignment_FieldTerminalPathArrayOfValues{PlanAssignment_FieldTerminalPath: *fp}
   418  	switch fp.selector {
   419  	case PlanAssignment_FieldPathSelectorName:
   420  		return &PlanAssignment_FieldTerminalPathArrayOfValues{PlanAssignment_FieldTerminalPath: *fp, values: values.([]*Name)}
   421  	case PlanAssignment_FieldPathSelectorMetadata:
   422  		return &PlanAssignment_FieldTerminalPathArrayOfValues{PlanAssignment_FieldTerminalPath: *fp, values: values.([]*meta.Meta)}
   423  	case PlanAssignment_FieldPathSelectorDefaultRegionalPlan:
   424  		return &PlanAssignment_FieldTerminalPathArrayOfValues{PlanAssignment_FieldTerminalPath: *fp, values: values.([]*plan.Reference)}
   425  	case PlanAssignment_FieldPathSelectorService:
   426  		return &PlanAssignment_FieldTerminalPathArrayOfValues{PlanAssignment_FieldTerminalPath: *fp, values: values.([]*meta_service.Reference)}
   427  	case PlanAssignment_FieldPathSelectorRegionalPlanOverrides:
   428  		return &PlanAssignment_FieldTerminalPathArrayOfValues{PlanAssignment_FieldTerminalPath: *fp, values: values.([][]*common.RegionalPlanAssignment)}
   429  	case PlanAssignment_FieldPathSelectorExtensions:
   430  		return &PlanAssignment_FieldTerminalPathArrayOfValues{PlanAssignment_FieldTerminalPath: *fp, values: values.([][]*common.Allowance)}
   431  	case PlanAssignment_FieldPathSelectorAllowances:
   432  		return &PlanAssignment_FieldTerminalPathArrayOfValues{PlanAssignment_FieldTerminalPath: *fp, values: values.([][]*common.Allowance)}
   433  	case PlanAssignment_FieldPathSelectorAppliedRegions:
   434  		return &PlanAssignment_FieldTerminalPathArrayOfValues{PlanAssignment_FieldTerminalPath: *fp, values: values.([][]string)}
   435  	case PlanAssignment_FieldPathSelectorAppliedPlanSpecGeneration:
   436  		return &PlanAssignment_FieldTerminalPathArrayOfValues{PlanAssignment_FieldTerminalPath: *fp, values: values.([]int64)}
   437  	case PlanAssignment_FieldPathSelectorSource:
   438  		return &PlanAssignment_FieldTerminalPathArrayOfValues{PlanAssignment_FieldTerminalPath: *fp, values: values.([]*accepted_plan.Reference)}
   439  	default:
   440  		panic(fmt.Sprintf("Invalid selector for PlanAssignment: %d", fp.selector))
   441  	}
   442  	return fpaov
   443  }
   444  
   445  func (fp *PlanAssignment_FieldTerminalPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
   446  	return fp.WithIArrayOfValues(values)
   447  }
   448  
   449  func (fp *PlanAssignment_FieldTerminalPath) WithIArrayItemValue(value interface{}) PlanAssignment_FieldPathArrayItemValue {
   450  	switch fp.selector {
   451  	case PlanAssignment_FieldPathSelectorRegionalPlanOverrides:
   452  		return &PlanAssignment_FieldTerminalPathArrayItemValue{PlanAssignment_FieldTerminalPath: *fp, value: value.(*common.RegionalPlanAssignment)}
   453  	case PlanAssignment_FieldPathSelectorExtensions:
   454  		return &PlanAssignment_FieldTerminalPathArrayItemValue{PlanAssignment_FieldTerminalPath: *fp, value: value.(*common.Allowance)}
   455  	case PlanAssignment_FieldPathSelectorAllowances:
   456  		return &PlanAssignment_FieldTerminalPathArrayItemValue{PlanAssignment_FieldTerminalPath: *fp, value: value.(*common.Allowance)}
   457  	case PlanAssignment_FieldPathSelectorAppliedRegions:
   458  		return &PlanAssignment_FieldTerminalPathArrayItemValue{PlanAssignment_FieldTerminalPath: *fp, value: value.(string)}
   459  	default:
   460  		panic(fmt.Sprintf("Invalid selector for PlanAssignment: %d", fp.selector))
   461  	}
   462  }
   463  
   464  func (fp *PlanAssignment_FieldTerminalPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   465  	return fp.WithIArrayItemValue(value)
   466  }
   467  
   468  type PlanAssignment_FieldSubPath struct {
   469  	selector PlanAssignment_FieldPathSelector
   470  	subPath  gotenobject.FieldPath
   471  }
   472  
   473  var _ PlanAssignment_FieldPath = (*PlanAssignment_FieldSubPath)(nil)
   474  
   475  func (fps *PlanAssignment_FieldSubPath) Selector() PlanAssignment_FieldPathSelector {
   476  	return fps.selector
   477  }
   478  func (fps *PlanAssignment_FieldSubPath) AsMetadataSubPath() (meta.Meta_FieldPath, bool) {
   479  	res, ok := fps.subPath.(meta.Meta_FieldPath)
   480  	return res, ok
   481  }
   482  func (fps *PlanAssignment_FieldSubPath) AsRegionalPlanOverridesSubPath() (common.RegionalPlanAssignment_FieldPath, bool) {
   483  	res, ok := fps.subPath.(common.RegionalPlanAssignment_FieldPath)
   484  	return res, ok
   485  }
   486  func (fps *PlanAssignment_FieldSubPath) AsExtensionsSubPath() (common.Allowance_FieldPath, bool) {
   487  	res, ok := fps.subPath.(common.Allowance_FieldPath)
   488  	return res, ok
   489  }
   490  func (fps *PlanAssignment_FieldSubPath) AsAllowancesSubPath() (common.Allowance_FieldPath, bool) {
   491  	res, ok := fps.subPath.(common.Allowance_FieldPath)
   492  	return res, ok
   493  }
   494  
   495  // String returns path representation in proto convention
   496  func (fps *PlanAssignment_FieldSubPath) String() string {
   497  	return fps.selector.String() + "." + fps.subPath.String()
   498  }
   499  
   500  // JSONString returns path representation is JSON convention
   501  func (fps *PlanAssignment_FieldSubPath) JSONString() string {
   502  	return strcase.ToLowerCamel(fps.selector.String()) + "." + fps.subPath.JSONString()
   503  }
   504  
   505  // Get returns all values pointed by selected field from source PlanAssignment
   506  func (fps *PlanAssignment_FieldSubPath) Get(source *PlanAssignment) (values []interface{}) {
   507  	switch fps.selector {
   508  	case PlanAssignment_FieldPathSelectorMetadata:
   509  		values = append(values, fps.subPath.GetRaw(source.GetMetadata())...)
   510  	case PlanAssignment_FieldPathSelectorRegionalPlanOverrides:
   511  		for _, item := range source.GetRegionalPlanOverrides() {
   512  			values = append(values, fps.subPath.GetRaw(item)...)
   513  		}
   514  	case PlanAssignment_FieldPathSelectorExtensions:
   515  		for _, item := range source.GetExtensions() {
   516  			values = append(values, fps.subPath.GetRaw(item)...)
   517  		}
   518  	case PlanAssignment_FieldPathSelectorAllowances:
   519  		for _, item := range source.GetAllowances() {
   520  			values = append(values, fps.subPath.GetRaw(item)...)
   521  		}
   522  	default:
   523  		panic(fmt.Sprintf("Invalid selector for PlanAssignment: %d", fps.selector))
   524  	}
   525  	return
   526  }
   527  
   528  func (fps *PlanAssignment_FieldSubPath) GetRaw(source proto.Message) []interface{} {
   529  	return fps.Get(source.(*PlanAssignment))
   530  }
   531  
   532  // GetSingle returns value of selected field from source PlanAssignment
   533  func (fps *PlanAssignment_FieldSubPath) GetSingle(source *PlanAssignment) (interface{}, bool) {
   534  	switch fps.selector {
   535  	case PlanAssignment_FieldPathSelectorMetadata:
   536  		if source.GetMetadata() == nil {
   537  			return nil, false
   538  		}
   539  		return fps.subPath.GetSingleRaw(source.GetMetadata())
   540  	case PlanAssignment_FieldPathSelectorRegionalPlanOverrides:
   541  		if len(source.GetRegionalPlanOverrides()) == 0 {
   542  			return nil, false
   543  		}
   544  		return fps.subPath.GetSingleRaw(source.GetRegionalPlanOverrides()[0])
   545  	case PlanAssignment_FieldPathSelectorExtensions:
   546  		if len(source.GetExtensions()) == 0 {
   547  			return nil, false
   548  		}
   549  		return fps.subPath.GetSingleRaw(source.GetExtensions()[0])
   550  	case PlanAssignment_FieldPathSelectorAllowances:
   551  		if len(source.GetAllowances()) == 0 {
   552  			return nil, false
   553  		}
   554  		return fps.subPath.GetSingleRaw(source.GetAllowances()[0])
   555  	default:
   556  		panic(fmt.Sprintf("Invalid selector for PlanAssignment: %d", fps.selector))
   557  	}
   558  }
   559  
   560  func (fps *PlanAssignment_FieldSubPath) GetSingleRaw(source proto.Message) (interface{}, bool) {
   561  	return fps.GetSingle(source.(*PlanAssignment))
   562  }
   563  
   564  // GetDefault returns a default value of the field type
   565  func (fps *PlanAssignment_FieldSubPath) GetDefault() interface{} {
   566  	return fps.subPath.GetDefault()
   567  }
   568  
   569  func (fps *PlanAssignment_FieldSubPath) ClearValue(item *PlanAssignment) {
   570  	if item != nil {
   571  		switch fps.selector {
   572  		case PlanAssignment_FieldPathSelectorMetadata:
   573  			fps.subPath.ClearValueRaw(item.Metadata)
   574  		case PlanAssignment_FieldPathSelectorRegionalPlanOverrides:
   575  			for _, subItem := range item.RegionalPlanOverrides {
   576  				fps.subPath.ClearValueRaw(subItem)
   577  			}
   578  		case PlanAssignment_FieldPathSelectorExtensions:
   579  			for _, subItem := range item.Extensions {
   580  				fps.subPath.ClearValueRaw(subItem)
   581  			}
   582  		case PlanAssignment_FieldPathSelectorAllowances:
   583  			for _, subItem := range item.Allowances {
   584  				fps.subPath.ClearValueRaw(subItem)
   585  			}
   586  		default:
   587  			panic(fmt.Sprintf("Invalid selector for PlanAssignment: %d", fps.selector))
   588  		}
   589  	}
   590  }
   591  
   592  func (fps *PlanAssignment_FieldSubPath) ClearValueRaw(item proto.Message) {
   593  	fps.ClearValue(item.(*PlanAssignment))
   594  }
   595  
   596  // IsLeaf - whether field path is holds simple value
   597  func (fps *PlanAssignment_FieldSubPath) IsLeaf() bool {
   598  	return fps.subPath.IsLeaf()
   599  }
   600  
   601  func (fps *PlanAssignment_FieldSubPath) SplitIntoTerminalIPaths() []gotenobject.FieldPath {
   602  	iPaths := []gotenobject.FieldPath{&PlanAssignment_FieldTerminalPath{selector: fps.selector}}
   603  	iPaths = append(iPaths, fps.subPath.SplitIntoTerminalIPaths()...)
   604  	return iPaths
   605  }
   606  
   607  func (fps *PlanAssignment_FieldSubPath) WithIValue(value interface{}) PlanAssignment_FieldPathValue {
   608  	return &PlanAssignment_FieldSubPathValue{fps, fps.subPath.WithRawIValue(value)}
   609  }
   610  
   611  func (fps *PlanAssignment_FieldSubPath) WithRawIValue(value interface{}) gotenobject.FieldPathValue {
   612  	return fps.WithIValue(value)
   613  }
   614  
   615  func (fps *PlanAssignment_FieldSubPath) WithIArrayOfValues(values interface{}) PlanAssignment_FieldPathArrayOfValues {
   616  	return &PlanAssignment_FieldSubPathArrayOfValues{fps, fps.subPath.WithRawIArrayOfValues(values)}
   617  }
   618  
   619  func (fps *PlanAssignment_FieldSubPath) WithRawIArrayOfValues(values interface{}) gotenobject.FieldPathArrayOfValues {
   620  	return fps.WithIArrayOfValues(values)
   621  }
   622  
   623  func (fps *PlanAssignment_FieldSubPath) WithIArrayItemValue(value interface{}) PlanAssignment_FieldPathArrayItemValue {
   624  	return &PlanAssignment_FieldSubPathArrayItemValue{fps, fps.subPath.WithRawIArrayItemValue(value)}
   625  }
   626  
   627  func (fps *PlanAssignment_FieldSubPath) WithRawIArrayItemValue(value interface{}) gotenobject.FieldPathArrayItemValue {
   628  	return fps.WithIArrayItemValue(value)
   629  }
   630  
   631  // PlanAssignment_FieldPathValue allows storing values for PlanAssignment fields according to their type
   632  type PlanAssignment_FieldPathValue interface {
   633  	PlanAssignment_FieldPath
   634  	gotenobject.FieldPathValue
   635  	SetTo(target **PlanAssignment)
   636  	CompareWith(*PlanAssignment) (cmp int, comparable bool)
   637  }
   638  
   639  func ParsePlanAssignment_FieldPathValue(pathStr, valueStr string) (PlanAssignment_FieldPathValue, error) {
   640  	fp, err := ParsePlanAssignment_FieldPath(pathStr)
   641  	if err != nil {
   642  		return nil, err
   643  	}
   644  	fpv, err := gotenobject.ParseFieldPathValue(fp, valueStr)
   645  	if err != nil {
   646  		return nil, status.Errorf(codes.InvalidArgument, "error parsing PlanAssignment field path value from %s: %v", valueStr, err)
   647  	}
   648  	return fpv.(PlanAssignment_FieldPathValue), nil
   649  }
   650  
   651  func MustParsePlanAssignment_FieldPathValue(pathStr, valueStr string) PlanAssignment_FieldPathValue {
   652  	fpv, err := ParsePlanAssignment_FieldPathValue(pathStr, valueStr)
   653  	if err != nil {
   654  		panic(err)
   655  	}
   656  	return fpv
   657  }
   658  
   659  type PlanAssignment_FieldTerminalPathValue struct {
   660  	PlanAssignment_FieldTerminalPath
   661  	value interface{}
   662  }
   663  
   664  var _ PlanAssignment_FieldPathValue = (*PlanAssignment_FieldTerminalPathValue)(nil)
   665  
   666  // GetRawValue returns raw value stored under selected path for 'PlanAssignment' as interface{}
   667  func (fpv *PlanAssignment_FieldTerminalPathValue) GetRawValue() interface{} {
   668  	return fpv.value
   669  }
   670  func (fpv *PlanAssignment_FieldTerminalPathValue) AsNameValue() (*Name, bool) {
   671  	res, ok := fpv.value.(*Name)
   672  	return res, ok
   673  }
   674  func (fpv *PlanAssignment_FieldTerminalPathValue) AsMetadataValue() (*meta.Meta, bool) {
   675  	res, ok := fpv.value.(*meta.Meta)
   676  	return res, ok
   677  }
   678  func (fpv *PlanAssignment_FieldTerminalPathValue) AsDefaultRegionalPlanValue() (*plan.Reference, bool) {
   679  	res, ok := fpv.value.(*plan.Reference)
   680  	return res, ok
   681  }
   682  func (fpv *PlanAssignment_FieldTerminalPathValue) AsServiceValue() (*meta_service.Reference, bool) {
   683  	res, ok := fpv.value.(*meta_service.Reference)
   684  	return res, ok
   685  }
   686  func (fpv *PlanAssignment_FieldTerminalPathValue) AsRegionalPlanOverridesValue() ([]*common.RegionalPlanAssignment, bool) {
   687  	res, ok := fpv.value.([]*common.RegionalPlanAssignment)
   688  	return res, ok
   689  }
   690  func (fpv *PlanAssignment_FieldTerminalPathValue) AsExtensionsValue() ([]*common.Allowance, bool) {
   691  	res, ok := fpv.value.([]*common.Allowance)
   692  	return res, ok
   693  }
   694  func (fpv *PlanAssignment_FieldTerminalPathValue) AsAllowancesValue() ([]*common.Allowance, bool) {
   695  	res, ok := fpv.value.([]*common.Allowance)
   696  	return res, ok
   697  }
   698  func (fpv *PlanAssignment_FieldTerminalPathValue) AsAppliedRegionsValue() ([]string, bool) {
   699  	res, ok := fpv.value.([]string)
   700  	return res, ok
   701  }
   702  func (fpv *PlanAssignment_FieldTerminalPathValue) AsAppliedPlanSpecGenerationValue() (int64, bool) {
   703  	res, ok := fpv.value.(int64)
   704  	return res, ok
   705  }
   706  func (fpv *PlanAssignment_FieldTerminalPathValue) AsSourceValue() (*accepted_plan.Reference, bool) {
   707  	res, ok := fpv.value.(*accepted_plan.Reference)
   708  	return res, ok
   709  }
   710  
   711  // SetTo stores value for selected field for object PlanAssignment
   712  func (fpv *PlanAssignment_FieldTerminalPathValue) SetTo(target **PlanAssignment) {
   713  	if *target == nil {
   714  		*target = new(PlanAssignment)
   715  	}
   716  	switch fpv.selector {
   717  	case PlanAssignment_FieldPathSelectorName:
   718  		(*target).Name = fpv.value.(*Name)
   719  	case PlanAssignment_FieldPathSelectorMetadata:
   720  		(*target).Metadata = fpv.value.(*meta.Meta)
   721  	case PlanAssignment_FieldPathSelectorDefaultRegionalPlan:
   722  		(*target).DefaultRegionalPlan = fpv.value.(*plan.Reference)
   723  	case PlanAssignment_FieldPathSelectorService:
   724  		(*target).Service = fpv.value.(*meta_service.Reference)
   725  	case PlanAssignment_FieldPathSelectorRegionalPlanOverrides:
   726  		(*target).RegionalPlanOverrides = fpv.value.([]*common.RegionalPlanAssignment)
   727  	case PlanAssignment_FieldPathSelectorExtensions:
   728  		(*target).Extensions = fpv.value.([]*common.Allowance)
   729  	case PlanAssignment_FieldPathSelectorAllowances:
   730  		(*target).Allowances = fpv.value.([]*common.Allowance)
   731  	case PlanAssignment_FieldPathSelectorAppliedRegions:
   732  		(*target).AppliedRegions = fpv.value.([]string)
   733  	case PlanAssignment_FieldPathSelectorAppliedPlanSpecGeneration:
   734  		(*target).AppliedPlanSpecGeneration = fpv.value.(int64)
   735  	case PlanAssignment_FieldPathSelectorSource:
   736  		(*target).Source = fpv.value.(*accepted_plan.Reference)
   737  	default:
   738  		panic(fmt.Sprintf("Invalid selector for PlanAssignment: %d", fpv.selector))
   739  	}
   740  }
   741  
   742  func (fpv *PlanAssignment_FieldTerminalPathValue) SetToRaw(target proto.Message) {
   743  	typedObject := target.(*PlanAssignment)
   744  	fpv.SetTo(&typedObject)
   745  }
   746  
   747  // CompareWith compares value in the 'PlanAssignment_FieldTerminalPathValue' with the value under path in 'PlanAssignment'.
   748  func (fpv *PlanAssignment_FieldTerminalPathValue) CompareWith(source *PlanAssignment) (int, bool) {
   749  	switch fpv.selector {
   750  	case PlanAssignment_FieldPathSelectorName:
   751  		leftValue := fpv.value.(*Name)
   752  		rightValue := source.GetName()
   753  		if leftValue == nil {
   754  			if rightValue != nil {
   755  				return -1, true
   756  			}
   757  			return 0, true
   758  		}
   759  		if rightValue == nil {
   760  			return 1, true
   761  		}
   762  		if leftValue.String() == rightValue.String() {
   763  			return 0, true
   764  		} else if leftValue.String() < rightValue.String() {
   765  			return -1, true
   766  		} else {
   767  			return 1, true
   768  		}
   769  	case PlanAssignment_FieldPathSelectorMetadata:
   770  		return 0, false
   771  	case PlanAssignment_FieldPathSelectorDefaultRegionalPlan:
   772  		leftValue := fpv.value.(*plan.Reference)
   773  		rightValue := source.GetDefaultRegionalPlan()
   774  		if leftValue == nil {
   775  			if rightValue != nil {
   776  				return -1, true
   777  			}
   778  			return 0, true
   779  		}
   780  		if rightValue == nil {
   781  			return 1, true
   782  		}
   783  		if leftValue.String() == rightValue.String() {
   784  			return 0, true
   785  		} else if leftValue.String() < rightValue.String() {
   786  			return -1, true
   787  		} else {
   788  			return 1, true
   789  		}
   790  	case PlanAssignment_FieldPathSelectorService:
   791  		leftValue := fpv.value.(*meta_service.Reference)
   792  		rightValue := source.GetService()
   793  		if leftValue == nil {
   794  			if rightValue != nil {
   795  				return -1, true
   796  			}
   797  			return 0, true
   798  		}
   799  		if rightValue == nil {
   800  			return 1, true
   801  		}
   802  		if leftValue.String() == rightValue.String() {
   803  			return 0, true
   804  		} else if leftValue.String() < rightValue.String() {
   805  			return -1, true
   806  		} else {
   807  			return 1, true
   808  		}
   809  	case PlanAssignment_FieldPathSelectorRegionalPlanOverrides:
   810  		return 0, false
   811  	case PlanAssignment_FieldPathSelectorExtensions:
   812  		return 0, false
   813  	case PlanAssignment_FieldPathSelectorAllowances:
   814  		return 0, false
   815  	case PlanAssignment_FieldPathSelectorAppliedRegions:
   816  		return 0, false
   817  	case PlanAssignment_FieldPathSelectorAppliedPlanSpecGeneration:
   818  		leftValue := fpv.value.(int64)
   819  		rightValue := source.GetAppliedPlanSpecGeneration()
   820  		if (leftValue) == (rightValue) {
   821  			return 0, true
   822  		} else if (leftValue) < (rightValue) {
   823  			return -1, true
   824  		} else {
   825  			return 1, true
   826  		}
   827  	case PlanAssignment_FieldPathSelectorSource:
   828  		leftValue := fpv.value.(*accepted_plan.Reference)
   829  		rightValue := source.GetSource()
   830  		if leftValue == nil {
   831  			if rightValue != nil {
   832  				return -1, true
   833  			}
   834  			return 0, true
   835  		}
   836  		if rightValue == nil {
   837  			return 1, true
   838  		}
   839  		if leftValue.String() == rightValue.String() {
   840  			return 0, true
   841  		} else if leftValue.String() < rightValue.String() {
   842  			return -1, true
   843  		} else {
   844  			return 1, true
   845  		}
   846  	default:
   847  		panic(fmt.Sprintf("Invalid selector for PlanAssignment: %d", fpv.selector))
   848  	}
   849  }
   850  
   851  func (fpv *PlanAssignment_FieldTerminalPathValue) CompareWithRaw(source proto.Message) (int, bool) {
   852  	return fpv.CompareWith(source.(*PlanAssignment))
   853  }
   854  
   855  type PlanAssignment_FieldSubPathValue struct {
   856  	PlanAssignment_FieldPath
   857  	subPathValue gotenobject.FieldPathValue
   858  }
   859  
   860  var _ PlanAssignment_FieldPathValue = (*PlanAssignment_FieldSubPathValue)(nil)
   861  
   862  func (fpvs *PlanAssignment_FieldSubPathValue) AsMetadataPathValue() (meta.Meta_FieldPathValue, bool) {
   863  	res, ok := fpvs.subPathValue.(meta.Meta_FieldPathValue)
   864  	return res, ok
   865  }
   866  func (fpvs *PlanAssignment_FieldSubPathValue) AsRegionalPlanOverridesPathValue() (common.RegionalPlanAssignment_FieldPathValue, bool) {
   867  	res, ok := fpvs.subPathValue.(common.RegionalPlanAssignment_FieldPathValue)
   868  	return res, ok
   869  }
   870  func (fpvs *PlanAssignment_FieldSubPathValue) AsExtensionsPathValue() (common.Allowance_FieldPathValue, bool) {
   871  	res, ok := fpvs.subPathValue.(common.Allowance_FieldPathValue)
   872  	return res, ok
   873  }
   874  func (fpvs *PlanAssignment_FieldSubPathValue) AsAllowancesPathValue() (common.Allowance_FieldPathValue, bool) {
   875  	res, ok := fpvs.subPathValue.(common.Allowance_FieldPathValue)
   876  	return res, ok
   877  }
   878  
   879  func (fpvs *PlanAssignment_FieldSubPathValue) SetTo(target **PlanAssignment) {
   880  	if *target == nil {
   881  		*target = new(PlanAssignment)
   882  	}
   883  	switch fpvs.Selector() {
   884  	case PlanAssignment_FieldPathSelectorMetadata:
   885  		fpvs.subPathValue.(meta.Meta_FieldPathValue).SetTo(&(*target).Metadata)
   886  	case PlanAssignment_FieldPathSelectorRegionalPlanOverrides:
   887  		panic("FieldPath setter is unsupported for array subpaths")
   888  	case PlanAssignment_FieldPathSelectorExtensions:
   889  		panic("FieldPath setter is unsupported for array subpaths")
   890  	case PlanAssignment_FieldPathSelectorAllowances:
   891  		panic("FieldPath setter is unsupported for array subpaths")
   892  	default:
   893  		panic(fmt.Sprintf("Invalid selector for PlanAssignment: %d", fpvs.Selector()))
   894  	}
   895  }
   896  
   897  func (fpvs *PlanAssignment_FieldSubPathValue) SetToRaw(target proto.Message) {
   898  	typedObject := target.(*PlanAssignment)
   899  	fpvs.SetTo(&typedObject)
   900  }
   901  
   902  func (fpvs *PlanAssignment_FieldSubPathValue) GetRawValue() interface{} {
   903  	return fpvs.subPathValue.GetRawValue()
   904  }
   905  
   906  func (fpvs *PlanAssignment_FieldSubPathValue) CompareWith(source *PlanAssignment) (int, bool) {
   907  	switch fpvs.Selector() {
   908  	case PlanAssignment_FieldPathSelectorMetadata:
   909  		return fpvs.subPathValue.(meta.Meta_FieldPathValue).CompareWith(source.GetMetadata())
   910  	case PlanAssignment_FieldPathSelectorRegionalPlanOverrides:
   911  		return 0, false // repeated field
   912  	case PlanAssignment_FieldPathSelectorExtensions:
   913  		return 0, false // repeated field
   914  	case PlanAssignment_FieldPathSelectorAllowances:
   915  		return 0, false // repeated field
   916  	default:
   917  		panic(fmt.Sprintf("Invalid selector for PlanAssignment: %d", fpvs.Selector()))
   918  	}
   919  }
   920  
   921  func (fpvs *PlanAssignment_FieldSubPathValue) CompareWithRaw(source proto.Message) (int, bool) {
   922  	return fpvs.CompareWith(source.(*PlanAssignment))
   923  }
   924  
   925  // PlanAssignment_FieldPathArrayItemValue allows storing single item in Path-specific values for PlanAssignment according to their type
   926  // Present only for array (repeated) types.
   927  type PlanAssignment_FieldPathArrayItemValue interface {
   928  	gotenobject.FieldPathArrayItemValue
   929  	PlanAssignment_FieldPath
   930  	ContainsValue(*PlanAssignment) bool
   931  }
   932  
   933  // ParsePlanAssignment_FieldPathArrayItemValue parses string and JSON-encoded value to its Value
   934  func ParsePlanAssignment_FieldPathArrayItemValue(pathStr, valueStr string) (PlanAssignment_FieldPathArrayItemValue, error) {
   935  	fp, err := ParsePlanAssignment_FieldPath(pathStr)
   936  	if err != nil {
   937  		return nil, err
   938  	}
   939  	fpaiv, err := gotenobject.ParseFieldPathArrayItemValue(fp, valueStr)
   940  	if err != nil {
   941  		return nil, status.Errorf(codes.InvalidArgument, "error parsing PlanAssignment field path array item value from %s: %v", valueStr, err)
   942  	}
   943  	return fpaiv.(PlanAssignment_FieldPathArrayItemValue), nil
   944  }
   945  
   946  func MustParsePlanAssignment_FieldPathArrayItemValue(pathStr, valueStr string) PlanAssignment_FieldPathArrayItemValue {
   947  	fpaiv, err := ParsePlanAssignment_FieldPathArrayItemValue(pathStr, valueStr)
   948  	if err != nil {
   949  		panic(err)
   950  	}
   951  	return fpaiv
   952  }
   953  
   954  type PlanAssignment_FieldTerminalPathArrayItemValue struct {
   955  	PlanAssignment_FieldTerminalPath
   956  	value interface{}
   957  }
   958  
   959  var _ PlanAssignment_FieldPathArrayItemValue = (*PlanAssignment_FieldTerminalPathArrayItemValue)(nil)
   960  
   961  // GetRawValue returns stored element value for array in object PlanAssignment as interface{}
   962  func (fpaiv *PlanAssignment_FieldTerminalPathArrayItemValue) GetRawItemValue() interface{} {
   963  	return fpaiv.value
   964  }
   965  func (fpaiv *PlanAssignment_FieldTerminalPathArrayItemValue) AsRegionalPlanOverridesItemValue() (*common.RegionalPlanAssignment, bool) {
   966  	res, ok := fpaiv.value.(*common.RegionalPlanAssignment)
   967  	return res, ok
   968  }
   969  func (fpaiv *PlanAssignment_FieldTerminalPathArrayItemValue) AsExtensionsItemValue() (*common.Allowance, bool) {
   970  	res, ok := fpaiv.value.(*common.Allowance)
   971  	return res, ok
   972  }
   973  func (fpaiv *PlanAssignment_FieldTerminalPathArrayItemValue) AsAllowancesItemValue() (*common.Allowance, bool) {
   974  	res, ok := fpaiv.value.(*common.Allowance)
   975  	return res, ok
   976  }
   977  func (fpaiv *PlanAssignment_FieldTerminalPathArrayItemValue) AsAppliedRegionsItemValue() (string, bool) {
   978  	res, ok := fpaiv.value.(string)
   979  	return res, ok
   980  }
   981  
   982  func (fpaiv *PlanAssignment_FieldTerminalPathArrayItemValue) GetSingle(source *PlanAssignment) (interface{}, bool) {
   983  	return nil, false
   984  }
   985  
   986  func (fpaiv *PlanAssignment_FieldTerminalPathArrayItemValue) GetSingleRaw(source proto.Message) (interface{}, bool) {
   987  	return fpaiv.GetSingle(source.(*PlanAssignment))
   988  }
   989  
   990  // Contains returns a boolean indicating if value that is being held is present in given 'PlanAssignment'
   991  func (fpaiv *PlanAssignment_FieldTerminalPathArrayItemValue) ContainsValue(source *PlanAssignment) bool {
   992  	slice := fpaiv.PlanAssignment_FieldTerminalPath.Get(source)
   993  	for _, v := range slice {
   994  		if asProtoMsg, ok := fpaiv.value.(proto.Message); ok {
   995  			if proto.Equal(asProtoMsg, v.(proto.Message)) {
   996  				return true
   997  			}
   998  		} else if reflect.DeepEqual(v, fpaiv.value) {
   999  			return true
  1000  		}
  1001  	}
  1002  	return false
  1003  }
  1004  
  1005  type PlanAssignment_FieldSubPathArrayItemValue struct {
  1006  	PlanAssignment_FieldPath
  1007  	subPathItemValue gotenobject.FieldPathArrayItemValue
  1008  }
  1009  
  1010  // GetRawValue returns stored array item value
  1011  func (fpaivs *PlanAssignment_FieldSubPathArrayItemValue) GetRawItemValue() interface{} {
  1012  	return fpaivs.subPathItemValue.GetRawItemValue()
  1013  }
  1014  func (fpaivs *PlanAssignment_FieldSubPathArrayItemValue) AsMetadataPathItemValue() (meta.Meta_FieldPathArrayItemValue, bool) {
  1015  	res, ok := fpaivs.subPathItemValue.(meta.Meta_FieldPathArrayItemValue)
  1016  	return res, ok
  1017  }
  1018  func (fpaivs *PlanAssignment_FieldSubPathArrayItemValue) AsRegionalPlanOverridesPathItemValue() (common.RegionalPlanAssignment_FieldPathArrayItemValue, bool) {
  1019  	res, ok := fpaivs.subPathItemValue.(common.RegionalPlanAssignment_FieldPathArrayItemValue)
  1020  	return res, ok
  1021  }
  1022  func (fpaivs *PlanAssignment_FieldSubPathArrayItemValue) AsExtensionsPathItemValue() (common.Allowance_FieldPathArrayItemValue, bool) {
  1023  	res, ok := fpaivs.subPathItemValue.(common.Allowance_FieldPathArrayItemValue)
  1024  	return res, ok
  1025  }
  1026  func (fpaivs *PlanAssignment_FieldSubPathArrayItemValue) AsAllowancesPathItemValue() (common.Allowance_FieldPathArrayItemValue, bool) {
  1027  	res, ok := fpaivs.subPathItemValue.(common.Allowance_FieldPathArrayItemValue)
  1028  	return res, ok
  1029  }
  1030  
  1031  // Contains returns a boolean indicating if value that is being held is present in given 'PlanAssignment'
  1032  func (fpaivs *PlanAssignment_FieldSubPathArrayItemValue) ContainsValue(source *PlanAssignment) bool {
  1033  	switch fpaivs.Selector() {
  1034  	case PlanAssignment_FieldPathSelectorMetadata:
  1035  		return fpaivs.subPathItemValue.(meta.Meta_FieldPathArrayItemValue).ContainsValue(source.GetMetadata())
  1036  	case PlanAssignment_FieldPathSelectorRegionalPlanOverrides:
  1037  		return false // repeated/map field
  1038  	case PlanAssignment_FieldPathSelectorExtensions:
  1039  		return false // repeated/map field
  1040  	case PlanAssignment_FieldPathSelectorAllowances:
  1041  		return false // repeated/map field
  1042  	default:
  1043  		panic(fmt.Sprintf("Invalid selector for PlanAssignment: %d", fpaivs.Selector()))
  1044  	}
  1045  }
  1046  
  1047  // PlanAssignment_FieldPathArrayOfValues allows storing slice of values for PlanAssignment fields according to their type
  1048  type PlanAssignment_FieldPathArrayOfValues interface {
  1049  	gotenobject.FieldPathArrayOfValues
  1050  	PlanAssignment_FieldPath
  1051  }
  1052  
  1053  func ParsePlanAssignment_FieldPathArrayOfValues(pathStr, valuesStr string) (PlanAssignment_FieldPathArrayOfValues, error) {
  1054  	fp, err := ParsePlanAssignment_FieldPath(pathStr)
  1055  	if err != nil {
  1056  		return nil, err
  1057  	}
  1058  	fpaov, err := gotenobject.ParseFieldPathArrayOfValues(fp, valuesStr)
  1059  	if err != nil {
  1060  		return nil, status.Errorf(codes.InvalidArgument, "error parsing PlanAssignment field path array of values from %s: %v", valuesStr, err)
  1061  	}
  1062  	return fpaov.(PlanAssignment_FieldPathArrayOfValues), nil
  1063  }
  1064  
  1065  func MustParsePlanAssignment_FieldPathArrayOfValues(pathStr, valuesStr string) PlanAssignment_FieldPathArrayOfValues {
  1066  	fpaov, err := ParsePlanAssignment_FieldPathArrayOfValues(pathStr, valuesStr)
  1067  	if err != nil {
  1068  		panic(err)
  1069  	}
  1070  	return fpaov
  1071  }
  1072  
  1073  type PlanAssignment_FieldTerminalPathArrayOfValues struct {
  1074  	PlanAssignment_FieldTerminalPath
  1075  	values interface{}
  1076  }
  1077  
  1078  var _ PlanAssignment_FieldPathArrayOfValues = (*PlanAssignment_FieldTerminalPathArrayOfValues)(nil)
  1079  
  1080  func (fpaov *PlanAssignment_FieldTerminalPathArrayOfValues) GetRawValues() (values []interface{}) {
  1081  	switch fpaov.selector {
  1082  	case PlanAssignment_FieldPathSelectorName:
  1083  		for _, v := range fpaov.values.([]*Name) {
  1084  			values = append(values, v)
  1085  		}
  1086  	case PlanAssignment_FieldPathSelectorMetadata:
  1087  		for _, v := range fpaov.values.([]*meta.Meta) {
  1088  			values = append(values, v)
  1089  		}
  1090  	case PlanAssignment_FieldPathSelectorDefaultRegionalPlan:
  1091  		for _, v := range fpaov.values.([]*plan.Reference) {
  1092  			values = append(values, v)
  1093  		}
  1094  	case PlanAssignment_FieldPathSelectorService:
  1095  		for _, v := range fpaov.values.([]*meta_service.Reference) {
  1096  			values = append(values, v)
  1097  		}
  1098  	case PlanAssignment_FieldPathSelectorRegionalPlanOverrides:
  1099  		for _, v := range fpaov.values.([][]*common.RegionalPlanAssignment) {
  1100  			values = append(values, v)
  1101  		}
  1102  	case PlanAssignment_FieldPathSelectorExtensions:
  1103  		for _, v := range fpaov.values.([][]*common.Allowance) {
  1104  			values = append(values, v)
  1105  		}
  1106  	case PlanAssignment_FieldPathSelectorAllowances:
  1107  		for _, v := range fpaov.values.([][]*common.Allowance) {
  1108  			values = append(values, v)
  1109  		}
  1110  	case PlanAssignment_FieldPathSelectorAppliedRegions:
  1111  		for _, v := range fpaov.values.([][]string) {
  1112  			values = append(values, v)
  1113  		}
  1114  	case PlanAssignment_FieldPathSelectorAppliedPlanSpecGeneration:
  1115  		for _, v := range fpaov.values.([]int64) {
  1116  			values = append(values, v)
  1117  		}
  1118  	case PlanAssignment_FieldPathSelectorSource:
  1119  		for _, v := range fpaov.values.([]*accepted_plan.Reference) {
  1120  			values = append(values, v)
  1121  		}
  1122  	}
  1123  	return
  1124  }
  1125  func (fpaov *PlanAssignment_FieldTerminalPathArrayOfValues) AsNameArrayOfValues() ([]*Name, bool) {
  1126  	res, ok := fpaov.values.([]*Name)
  1127  	return res, ok
  1128  }
  1129  func (fpaov *PlanAssignment_FieldTerminalPathArrayOfValues) AsMetadataArrayOfValues() ([]*meta.Meta, bool) {
  1130  	res, ok := fpaov.values.([]*meta.Meta)
  1131  	return res, ok
  1132  }
  1133  func (fpaov *PlanAssignment_FieldTerminalPathArrayOfValues) AsDefaultRegionalPlanArrayOfValues() ([]*plan.Reference, bool) {
  1134  	res, ok := fpaov.values.([]*plan.Reference)
  1135  	return res, ok
  1136  }
  1137  func (fpaov *PlanAssignment_FieldTerminalPathArrayOfValues) AsServiceArrayOfValues() ([]*meta_service.Reference, bool) {
  1138  	res, ok := fpaov.values.([]*meta_service.Reference)
  1139  	return res, ok
  1140  }
  1141  func (fpaov *PlanAssignment_FieldTerminalPathArrayOfValues) AsRegionalPlanOverridesArrayOfValues() ([][]*common.RegionalPlanAssignment, bool) {
  1142  	res, ok := fpaov.values.([][]*common.RegionalPlanAssignment)
  1143  	return res, ok
  1144  }
  1145  func (fpaov *PlanAssignment_FieldTerminalPathArrayOfValues) AsExtensionsArrayOfValues() ([][]*common.Allowance, bool) {
  1146  	res, ok := fpaov.values.([][]*common.Allowance)
  1147  	return res, ok
  1148  }
  1149  func (fpaov *PlanAssignment_FieldTerminalPathArrayOfValues) AsAllowancesArrayOfValues() ([][]*common.Allowance, bool) {
  1150  	res, ok := fpaov.values.([][]*common.Allowance)
  1151  	return res, ok
  1152  }
  1153  func (fpaov *PlanAssignment_FieldTerminalPathArrayOfValues) AsAppliedRegionsArrayOfValues() ([][]string, bool) {
  1154  	res, ok := fpaov.values.([][]string)
  1155  	return res, ok
  1156  }
  1157  func (fpaov *PlanAssignment_FieldTerminalPathArrayOfValues) AsAppliedPlanSpecGenerationArrayOfValues() ([]int64, bool) {
  1158  	res, ok := fpaov.values.([]int64)
  1159  	return res, ok
  1160  }
  1161  func (fpaov *PlanAssignment_FieldTerminalPathArrayOfValues) AsSourceArrayOfValues() ([]*accepted_plan.Reference, bool) {
  1162  	res, ok := fpaov.values.([]*accepted_plan.Reference)
  1163  	return res, ok
  1164  }
  1165  
  1166  type PlanAssignment_FieldSubPathArrayOfValues struct {
  1167  	PlanAssignment_FieldPath
  1168  	subPathArrayOfValues gotenobject.FieldPathArrayOfValues
  1169  }
  1170  
  1171  var _ PlanAssignment_FieldPathArrayOfValues = (*PlanAssignment_FieldSubPathArrayOfValues)(nil)
  1172  
  1173  func (fpsaov *PlanAssignment_FieldSubPathArrayOfValues) GetRawValues() []interface{} {
  1174  	return fpsaov.subPathArrayOfValues.GetRawValues()
  1175  }
  1176  func (fpsaov *PlanAssignment_FieldSubPathArrayOfValues) AsMetadataPathArrayOfValues() (meta.Meta_FieldPathArrayOfValues, bool) {
  1177  	res, ok := fpsaov.subPathArrayOfValues.(meta.Meta_FieldPathArrayOfValues)
  1178  	return res, ok
  1179  }
  1180  func (fpsaov *PlanAssignment_FieldSubPathArrayOfValues) AsRegionalPlanOverridesPathArrayOfValues() (common.RegionalPlanAssignment_FieldPathArrayOfValues, bool) {
  1181  	res, ok := fpsaov.subPathArrayOfValues.(common.RegionalPlanAssignment_FieldPathArrayOfValues)
  1182  	return res, ok
  1183  }
  1184  func (fpsaov *PlanAssignment_FieldSubPathArrayOfValues) AsExtensionsPathArrayOfValues() (common.Allowance_FieldPathArrayOfValues, bool) {
  1185  	res, ok := fpsaov.subPathArrayOfValues.(common.Allowance_FieldPathArrayOfValues)
  1186  	return res, ok
  1187  }
  1188  func (fpsaov *PlanAssignment_FieldSubPathArrayOfValues) AsAllowancesPathArrayOfValues() (common.Allowance_FieldPathArrayOfValues, bool) {
  1189  	res, ok := fpsaov.subPathArrayOfValues.(common.Allowance_FieldPathArrayOfValues)
  1190  	return res, ok
  1191  }