github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v6@v6.2.0/models_serde.go (about)

     1  //go:build go1.18
     2  // +build go1.18
     3  
     4  // Copyright (c) Microsoft Corporation. All rights reserved.
     5  // Licensed under the MIT License. See License.txt in the project root for license information.
     6  // Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT.
     7  // Changes may cause incorrect behavior and will be lost if the code is regenerated.
     8  
     9  package armnetwork
    10  
    11  import (
    12  	"encoding/json"
    13  	"fmt"
    14  	"github.com/Azure/azure-sdk-for-go/sdk/azcore"
    15  	"reflect"
    16  )
    17  
    18  // MarshalJSON implements the json.Marshaller interface for type AADAuthenticationParameters.
    19  func (a AADAuthenticationParameters) MarshalJSON() ([]byte, error) {
    20  	objectMap := make(map[string]any)
    21  	populate(objectMap, "aadAudience", a.AADAudience)
    22  	populate(objectMap, "aadIssuer", a.AADIssuer)
    23  	populate(objectMap, "aadTenant", a.AADTenant)
    24  	return json.Marshal(objectMap)
    25  }
    26  
    27  // UnmarshalJSON implements the json.Unmarshaller interface for type AADAuthenticationParameters.
    28  func (a *AADAuthenticationParameters) UnmarshalJSON(data []byte) error {
    29  	var rawMsg map[string]json.RawMessage
    30  	if err := json.Unmarshal(data, &rawMsg); err != nil {
    31  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
    32  	}
    33  	for key, val := range rawMsg {
    34  		var err error
    35  		switch key {
    36  		case "aadAudience":
    37  			err = unpopulate(val, "AADAudience", &a.AADAudience)
    38  			delete(rawMsg, key)
    39  		case "aadIssuer":
    40  			err = unpopulate(val, "AADIssuer", &a.AADIssuer)
    41  			delete(rawMsg, key)
    42  		case "aadTenant":
    43  			err = unpopulate(val, "AADTenant", &a.AADTenant)
    44  			delete(rawMsg, key)
    45  		}
    46  		if err != nil {
    47  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
    48  		}
    49  	}
    50  	return nil
    51  }
    52  
    53  // MarshalJSON implements the json.Marshaller interface for type Action.
    54  func (a Action) MarshalJSON() ([]byte, error) {
    55  	objectMap := make(map[string]any)
    56  	populate(objectMap, "parameters", a.Parameters)
    57  	populate(objectMap, "type", a.Type)
    58  	return json.Marshal(objectMap)
    59  }
    60  
    61  // UnmarshalJSON implements the json.Unmarshaller interface for type Action.
    62  func (a *Action) UnmarshalJSON(data []byte) error {
    63  	var rawMsg map[string]json.RawMessage
    64  	if err := json.Unmarshal(data, &rawMsg); err != nil {
    65  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
    66  	}
    67  	for key, val := range rawMsg {
    68  		var err error
    69  		switch key {
    70  		case "parameters":
    71  			err = unpopulate(val, "Parameters", &a.Parameters)
    72  			delete(rawMsg, key)
    73  		case "type":
    74  			err = unpopulate(val, "Type", &a.Type)
    75  			delete(rawMsg, key)
    76  		}
    77  		if err != nil {
    78  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
    79  		}
    80  	}
    81  	return nil
    82  }
    83  
    84  // MarshalJSON implements the json.Marshaller interface for type ActiveBaseSecurityAdminRule.
    85  func (a ActiveBaseSecurityAdminRule) MarshalJSON() ([]byte, error) {
    86  	objectMap := make(map[string]any)
    87  	populateDateTimeRFC3339(objectMap, "commitTime", a.CommitTime)
    88  	populate(objectMap, "configurationDescription", a.ConfigurationDescription)
    89  	populate(objectMap, "id", a.ID)
    90  	objectMap["kind"] = a.Kind
    91  	populate(objectMap, "region", a.Region)
    92  	populate(objectMap, "ruleCollectionAppliesToGroups", a.RuleCollectionAppliesToGroups)
    93  	populate(objectMap, "ruleCollectionDescription", a.RuleCollectionDescription)
    94  	populate(objectMap, "ruleGroups", a.RuleGroups)
    95  	return json.Marshal(objectMap)
    96  }
    97  
    98  // UnmarshalJSON implements the json.Unmarshaller interface for type ActiveBaseSecurityAdminRule.
    99  func (a *ActiveBaseSecurityAdminRule) UnmarshalJSON(data []byte) error {
   100  	var rawMsg map[string]json.RawMessage
   101  	if err := json.Unmarshal(data, &rawMsg); err != nil {
   102  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
   103  	}
   104  	for key, val := range rawMsg {
   105  		var err error
   106  		switch key {
   107  		case "commitTime":
   108  			err = unpopulateDateTimeRFC3339(val, "CommitTime", &a.CommitTime)
   109  			delete(rawMsg, key)
   110  		case "configurationDescription":
   111  			err = unpopulate(val, "ConfigurationDescription", &a.ConfigurationDescription)
   112  			delete(rawMsg, key)
   113  		case "id":
   114  			err = unpopulate(val, "ID", &a.ID)
   115  			delete(rawMsg, key)
   116  		case "kind":
   117  			err = unpopulate(val, "Kind", &a.Kind)
   118  			delete(rawMsg, key)
   119  		case "region":
   120  			err = unpopulate(val, "Region", &a.Region)
   121  			delete(rawMsg, key)
   122  		case "ruleCollectionAppliesToGroups":
   123  			err = unpopulate(val, "RuleCollectionAppliesToGroups", &a.RuleCollectionAppliesToGroups)
   124  			delete(rawMsg, key)
   125  		case "ruleCollectionDescription":
   126  			err = unpopulate(val, "RuleCollectionDescription", &a.RuleCollectionDescription)
   127  			delete(rawMsg, key)
   128  		case "ruleGroups":
   129  			err = unpopulate(val, "RuleGroups", &a.RuleGroups)
   130  			delete(rawMsg, key)
   131  		}
   132  		if err != nil {
   133  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
   134  		}
   135  	}
   136  	return nil
   137  }
   138  
   139  // MarshalJSON implements the json.Marshaller interface for type ActiveConfigurationParameter.
   140  func (a ActiveConfigurationParameter) MarshalJSON() ([]byte, error) {
   141  	objectMap := make(map[string]any)
   142  	populate(objectMap, "regions", a.Regions)
   143  	populate(objectMap, "skipToken", a.SkipToken)
   144  	return json.Marshal(objectMap)
   145  }
   146  
   147  // UnmarshalJSON implements the json.Unmarshaller interface for type ActiveConfigurationParameter.
   148  func (a *ActiveConfigurationParameter) UnmarshalJSON(data []byte) error {
   149  	var rawMsg map[string]json.RawMessage
   150  	if err := json.Unmarshal(data, &rawMsg); err != nil {
   151  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
   152  	}
   153  	for key, val := range rawMsg {
   154  		var err error
   155  		switch key {
   156  		case "regions":
   157  			err = unpopulate(val, "Regions", &a.Regions)
   158  			delete(rawMsg, key)
   159  		case "skipToken":
   160  			err = unpopulate(val, "SkipToken", &a.SkipToken)
   161  			delete(rawMsg, key)
   162  		}
   163  		if err != nil {
   164  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
   165  		}
   166  	}
   167  	return nil
   168  }
   169  
   170  // MarshalJSON implements the json.Marshaller interface for type ActiveConnectivityConfiguration.
   171  func (a ActiveConnectivityConfiguration) MarshalJSON() ([]byte, error) {
   172  	objectMap := make(map[string]any)
   173  	populateDateTimeRFC3339(objectMap, "commitTime", a.CommitTime)
   174  	populate(objectMap, "configurationGroups", a.ConfigurationGroups)
   175  	populate(objectMap, "id", a.ID)
   176  	populate(objectMap, "properties", a.Properties)
   177  	populate(objectMap, "region", a.Region)
   178  	return json.Marshal(objectMap)
   179  }
   180  
   181  // UnmarshalJSON implements the json.Unmarshaller interface for type ActiveConnectivityConfiguration.
   182  func (a *ActiveConnectivityConfiguration) UnmarshalJSON(data []byte) error {
   183  	var rawMsg map[string]json.RawMessage
   184  	if err := json.Unmarshal(data, &rawMsg); err != nil {
   185  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
   186  	}
   187  	for key, val := range rawMsg {
   188  		var err error
   189  		switch key {
   190  		case "commitTime":
   191  			err = unpopulateDateTimeRFC3339(val, "CommitTime", &a.CommitTime)
   192  			delete(rawMsg, key)
   193  		case "configurationGroups":
   194  			err = unpopulate(val, "ConfigurationGroups", &a.ConfigurationGroups)
   195  			delete(rawMsg, key)
   196  		case "id":
   197  			err = unpopulate(val, "ID", &a.ID)
   198  			delete(rawMsg, key)
   199  		case "properties":
   200  			err = unpopulate(val, "Properties", &a.Properties)
   201  			delete(rawMsg, key)
   202  		case "region":
   203  			err = unpopulate(val, "Region", &a.Region)
   204  			delete(rawMsg, key)
   205  		}
   206  		if err != nil {
   207  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
   208  		}
   209  	}
   210  	return nil
   211  }
   212  
   213  // MarshalJSON implements the json.Marshaller interface for type ActiveConnectivityConfigurationsListResult.
   214  func (a ActiveConnectivityConfigurationsListResult) MarshalJSON() ([]byte, error) {
   215  	objectMap := make(map[string]any)
   216  	populate(objectMap, "skipToken", a.SkipToken)
   217  	populate(objectMap, "value", a.Value)
   218  	return json.Marshal(objectMap)
   219  }
   220  
   221  // UnmarshalJSON implements the json.Unmarshaller interface for type ActiveConnectivityConfigurationsListResult.
   222  func (a *ActiveConnectivityConfigurationsListResult) UnmarshalJSON(data []byte) error {
   223  	var rawMsg map[string]json.RawMessage
   224  	if err := json.Unmarshal(data, &rawMsg); err != nil {
   225  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
   226  	}
   227  	for key, val := range rawMsg {
   228  		var err error
   229  		switch key {
   230  		case "skipToken":
   231  			err = unpopulate(val, "SkipToken", &a.SkipToken)
   232  			delete(rawMsg, key)
   233  		case "value":
   234  			err = unpopulate(val, "Value", &a.Value)
   235  			delete(rawMsg, key)
   236  		}
   237  		if err != nil {
   238  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
   239  		}
   240  	}
   241  	return nil
   242  }
   243  
   244  // MarshalJSON implements the json.Marshaller interface for type ActiveDefaultSecurityAdminRule.
   245  func (a ActiveDefaultSecurityAdminRule) MarshalJSON() ([]byte, error) {
   246  	objectMap := make(map[string]any)
   247  	populateDateTimeRFC3339(objectMap, "commitTime", a.CommitTime)
   248  	populate(objectMap, "configurationDescription", a.ConfigurationDescription)
   249  	populate(objectMap, "id", a.ID)
   250  	objectMap["kind"] = EffectiveAdminRuleKindDefault
   251  	populate(objectMap, "properties", a.Properties)
   252  	populate(objectMap, "region", a.Region)
   253  	populate(objectMap, "ruleCollectionAppliesToGroups", a.RuleCollectionAppliesToGroups)
   254  	populate(objectMap, "ruleCollectionDescription", a.RuleCollectionDescription)
   255  	populate(objectMap, "ruleGroups", a.RuleGroups)
   256  	return json.Marshal(objectMap)
   257  }
   258  
   259  // UnmarshalJSON implements the json.Unmarshaller interface for type ActiveDefaultSecurityAdminRule.
   260  func (a *ActiveDefaultSecurityAdminRule) UnmarshalJSON(data []byte) error {
   261  	var rawMsg map[string]json.RawMessage
   262  	if err := json.Unmarshal(data, &rawMsg); err != nil {
   263  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
   264  	}
   265  	for key, val := range rawMsg {
   266  		var err error
   267  		switch key {
   268  		case "commitTime":
   269  			err = unpopulateDateTimeRFC3339(val, "CommitTime", &a.CommitTime)
   270  			delete(rawMsg, key)
   271  		case "configurationDescription":
   272  			err = unpopulate(val, "ConfigurationDescription", &a.ConfigurationDescription)
   273  			delete(rawMsg, key)
   274  		case "id":
   275  			err = unpopulate(val, "ID", &a.ID)
   276  			delete(rawMsg, key)
   277  		case "kind":
   278  			err = unpopulate(val, "Kind", &a.Kind)
   279  			delete(rawMsg, key)
   280  		case "properties":
   281  			err = unpopulate(val, "Properties", &a.Properties)
   282  			delete(rawMsg, key)
   283  		case "region":
   284  			err = unpopulate(val, "Region", &a.Region)
   285  			delete(rawMsg, key)
   286  		case "ruleCollectionAppliesToGroups":
   287  			err = unpopulate(val, "RuleCollectionAppliesToGroups", &a.RuleCollectionAppliesToGroups)
   288  			delete(rawMsg, key)
   289  		case "ruleCollectionDescription":
   290  			err = unpopulate(val, "RuleCollectionDescription", &a.RuleCollectionDescription)
   291  			delete(rawMsg, key)
   292  		case "ruleGroups":
   293  			err = unpopulate(val, "RuleGroups", &a.RuleGroups)
   294  			delete(rawMsg, key)
   295  		}
   296  		if err != nil {
   297  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
   298  		}
   299  	}
   300  	return nil
   301  }
   302  
   303  // MarshalJSON implements the json.Marshaller interface for type ActiveSecurityAdminRule.
   304  func (a ActiveSecurityAdminRule) MarshalJSON() ([]byte, error) {
   305  	objectMap := make(map[string]any)
   306  	populateDateTimeRFC3339(objectMap, "commitTime", a.CommitTime)
   307  	populate(objectMap, "configurationDescription", a.ConfigurationDescription)
   308  	populate(objectMap, "id", a.ID)
   309  	objectMap["kind"] = EffectiveAdminRuleKindCustom
   310  	populate(objectMap, "properties", a.Properties)
   311  	populate(objectMap, "region", a.Region)
   312  	populate(objectMap, "ruleCollectionAppliesToGroups", a.RuleCollectionAppliesToGroups)
   313  	populate(objectMap, "ruleCollectionDescription", a.RuleCollectionDescription)
   314  	populate(objectMap, "ruleGroups", a.RuleGroups)
   315  	return json.Marshal(objectMap)
   316  }
   317  
   318  // UnmarshalJSON implements the json.Unmarshaller interface for type ActiveSecurityAdminRule.
   319  func (a *ActiveSecurityAdminRule) UnmarshalJSON(data []byte) error {
   320  	var rawMsg map[string]json.RawMessage
   321  	if err := json.Unmarshal(data, &rawMsg); err != nil {
   322  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
   323  	}
   324  	for key, val := range rawMsg {
   325  		var err error
   326  		switch key {
   327  		case "commitTime":
   328  			err = unpopulateDateTimeRFC3339(val, "CommitTime", &a.CommitTime)
   329  			delete(rawMsg, key)
   330  		case "configurationDescription":
   331  			err = unpopulate(val, "ConfigurationDescription", &a.ConfigurationDescription)
   332  			delete(rawMsg, key)
   333  		case "id":
   334  			err = unpopulate(val, "ID", &a.ID)
   335  			delete(rawMsg, key)
   336  		case "kind":
   337  			err = unpopulate(val, "Kind", &a.Kind)
   338  			delete(rawMsg, key)
   339  		case "properties":
   340  			err = unpopulate(val, "Properties", &a.Properties)
   341  			delete(rawMsg, key)
   342  		case "region":
   343  			err = unpopulate(val, "Region", &a.Region)
   344  			delete(rawMsg, key)
   345  		case "ruleCollectionAppliesToGroups":
   346  			err = unpopulate(val, "RuleCollectionAppliesToGroups", &a.RuleCollectionAppliesToGroups)
   347  			delete(rawMsg, key)
   348  		case "ruleCollectionDescription":
   349  			err = unpopulate(val, "RuleCollectionDescription", &a.RuleCollectionDescription)
   350  			delete(rawMsg, key)
   351  		case "ruleGroups":
   352  			err = unpopulate(val, "RuleGroups", &a.RuleGroups)
   353  			delete(rawMsg, key)
   354  		}
   355  		if err != nil {
   356  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
   357  		}
   358  	}
   359  	return nil
   360  }
   361  
   362  // MarshalJSON implements the json.Marshaller interface for type ActiveSecurityAdminRulesListResult.
   363  func (a ActiveSecurityAdminRulesListResult) MarshalJSON() ([]byte, error) {
   364  	objectMap := make(map[string]any)
   365  	populate(objectMap, "skipToken", a.SkipToken)
   366  	populate(objectMap, "value", a.Value)
   367  	return json.Marshal(objectMap)
   368  }
   369  
   370  // UnmarshalJSON implements the json.Unmarshaller interface for type ActiveSecurityAdminRulesListResult.
   371  func (a *ActiveSecurityAdminRulesListResult) UnmarshalJSON(data []byte) error {
   372  	var rawMsg map[string]json.RawMessage
   373  	if err := json.Unmarshal(data, &rawMsg); err != nil {
   374  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
   375  	}
   376  	for key, val := range rawMsg {
   377  		var err error
   378  		switch key {
   379  		case "skipToken":
   380  			err = unpopulate(val, "SkipToken", &a.SkipToken)
   381  			delete(rawMsg, key)
   382  		case "value":
   383  			a.Value, err = unmarshalActiveBaseSecurityAdminRuleClassificationArray(val)
   384  			delete(rawMsg, key)
   385  		}
   386  		if err != nil {
   387  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
   388  		}
   389  	}
   390  	return nil
   391  }
   392  
   393  // MarshalJSON implements the json.Marshaller interface for type AddressPrefixItem.
   394  func (a AddressPrefixItem) MarshalJSON() ([]byte, error) {
   395  	objectMap := make(map[string]any)
   396  	populate(objectMap, "addressPrefix", a.AddressPrefix)
   397  	populate(objectMap, "addressPrefixType", a.AddressPrefixType)
   398  	return json.Marshal(objectMap)
   399  }
   400  
   401  // UnmarshalJSON implements the json.Unmarshaller interface for type AddressPrefixItem.
   402  func (a *AddressPrefixItem) UnmarshalJSON(data []byte) error {
   403  	var rawMsg map[string]json.RawMessage
   404  	if err := json.Unmarshal(data, &rawMsg); err != nil {
   405  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
   406  	}
   407  	for key, val := range rawMsg {
   408  		var err error
   409  		switch key {
   410  		case "addressPrefix":
   411  			err = unpopulate(val, "AddressPrefix", &a.AddressPrefix)
   412  			delete(rawMsg, key)
   413  		case "addressPrefixType":
   414  			err = unpopulate(val, "AddressPrefixType", &a.AddressPrefixType)
   415  			delete(rawMsg, key)
   416  		}
   417  		if err != nil {
   418  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
   419  		}
   420  	}
   421  	return nil
   422  }
   423  
   424  // MarshalJSON implements the json.Marshaller interface for type AddressSpace.
   425  func (a AddressSpace) MarshalJSON() ([]byte, error) {
   426  	objectMap := make(map[string]any)
   427  	populate(objectMap, "addressPrefixes", a.AddressPrefixes)
   428  	populate(objectMap, "ipamPoolPrefixAllocations", a.IpamPoolPrefixAllocations)
   429  	return json.Marshal(objectMap)
   430  }
   431  
   432  // UnmarshalJSON implements the json.Unmarshaller interface for type AddressSpace.
   433  func (a *AddressSpace) UnmarshalJSON(data []byte) error {
   434  	var rawMsg map[string]json.RawMessage
   435  	if err := json.Unmarshal(data, &rawMsg); err != nil {
   436  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
   437  	}
   438  	for key, val := range rawMsg {
   439  		var err error
   440  		switch key {
   441  		case "addressPrefixes":
   442  			err = unpopulate(val, "AddressPrefixes", &a.AddressPrefixes)
   443  			delete(rawMsg, key)
   444  		case "ipamPoolPrefixAllocations":
   445  			err = unpopulate(val, "IpamPoolPrefixAllocations", &a.IpamPoolPrefixAllocations)
   446  			delete(rawMsg, key)
   447  		}
   448  		if err != nil {
   449  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
   450  		}
   451  	}
   452  	return nil
   453  }
   454  
   455  // MarshalJSON implements the json.Marshaller interface for type AdminPropertiesFormat.
   456  func (a AdminPropertiesFormat) MarshalJSON() ([]byte, error) {
   457  	objectMap := make(map[string]any)
   458  	populate(objectMap, "access", a.Access)
   459  	populate(objectMap, "description", a.Description)
   460  	populate(objectMap, "destinationPortRanges", a.DestinationPortRanges)
   461  	populate(objectMap, "destinations", a.Destinations)
   462  	populate(objectMap, "direction", a.Direction)
   463  	populate(objectMap, "priority", a.Priority)
   464  	populate(objectMap, "protocol", a.Protocol)
   465  	populate(objectMap, "provisioningState", a.ProvisioningState)
   466  	populate(objectMap, "resourceGuid", a.ResourceGUID)
   467  	populate(objectMap, "sourcePortRanges", a.SourcePortRanges)
   468  	populate(objectMap, "sources", a.Sources)
   469  	return json.Marshal(objectMap)
   470  }
   471  
   472  // UnmarshalJSON implements the json.Unmarshaller interface for type AdminPropertiesFormat.
   473  func (a *AdminPropertiesFormat) UnmarshalJSON(data []byte) error {
   474  	var rawMsg map[string]json.RawMessage
   475  	if err := json.Unmarshal(data, &rawMsg); err != nil {
   476  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
   477  	}
   478  	for key, val := range rawMsg {
   479  		var err error
   480  		switch key {
   481  		case "access":
   482  			err = unpopulate(val, "Access", &a.Access)
   483  			delete(rawMsg, key)
   484  		case "description":
   485  			err = unpopulate(val, "Description", &a.Description)
   486  			delete(rawMsg, key)
   487  		case "destinationPortRanges":
   488  			err = unpopulate(val, "DestinationPortRanges", &a.DestinationPortRanges)
   489  			delete(rawMsg, key)
   490  		case "destinations":
   491  			err = unpopulate(val, "Destinations", &a.Destinations)
   492  			delete(rawMsg, key)
   493  		case "direction":
   494  			err = unpopulate(val, "Direction", &a.Direction)
   495  			delete(rawMsg, key)
   496  		case "priority":
   497  			err = unpopulate(val, "Priority", &a.Priority)
   498  			delete(rawMsg, key)
   499  		case "protocol":
   500  			err = unpopulate(val, "Protocol", &a.Protocol)
   501  			delete(rawMsg, key)
   502  		case "provisioningState":
   503  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
   504  			delete(rawMsg, key)
   505  		case "resourceGuid":
   506  			err = unpopulate(val, "ResourceGUID", &a.ResourceGUID)
   507  			delete(rawMsg, key)
   508  		case "sourcePortRanges":
   509  			err = unpopulate(val, "SourcePortRanges", &a.SourcePortRanges)
   510  			delete(rawMsg, key)
   511  		case "sources":
   512  			err = unpopulate(val, "Sources", &a.Sources)
   513  			delete(rawMsg, key)
   514  		}
   515  		if err != nil {
   516  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
   517  		}
   518  	}
   519  	return nil
   520  }
   521  
   522  // MarshalJSON implements the json.Marshaller interface for type AdminRule.
   523  func (a AdminRule) MarshalJSON() ([]byte, error) {
   524  	objectMap := make(map[string]any)
   525  	populate(objectMap, "etag", a.Etag)
   526  	populate(objectMap, "id", a.ID)
   527  	objectMap["kind"] = AdminRuleKindCustom
   528  	populate(objectMap, "name", a.Name)
   529  	populate(objectMap, "properties", a.Properties)
   530  	populate(objectMap, "systemData", a.SystemData)
   531  	populate(objectMap, "type", a.Type)
   532  	return json.Marshal(objectMap)
   533  }
   534  
   535  // UnmarshalJSON implements the json.Unmarshaller interface for type AdminRule.
   536  func (a *AdminRule) UnmarshalJSON(data []byte) error {
   537  	var rawMsg map[string]json.RawMessage
   538  	if err := json.Unmarshal(data, &rawMsg); err != nil {
   539  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
   540  	}
   541  	for key, val := range rawMsg {
   542  		var err error
   543  		switch key {
   544  		case "etag":
   545  			err = unpopulate(val, "Etag", &a.Etag)
   546  			delete(rawMsg, key)
   547  		case "id":
   548  			err = unpopulate(val, "ID", &a.ID)
   549  			delete(rawMsg, key)
   550  		case "kind":
   551  			err = unpopulate(val, "Kind", &a.Kind)
   552  			delete(rawMsg, key)
   553  		case "name":
   554  			err = unpopulate(val, "Name", &a.Name)
   555  			delete(rawMsg, key)
   556  		case "properties":
   557  			err = unpopulate(val, "Properties", &a.Properties)
   558  			delete(rawMsg, key)
   559  		case "systemData":
   560  			err = unpopulate(val, "SystemData", &a.SystemData)
   561  			delete(rawMsg, key)
   562  		case "type":
   563  			err = unpopulate(val, "Type", &a.Type)
   564  			delete(rawMsg, key)
   565  		}
   566  		if err != nil {
   567  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
   568  		}
   569  	}
   570  	return nil
   571  }
   572  
   573  // MarshalJSON implements the json.Marshaller interface for type AdminRuleCollection.
   574  func (a AdminRuleCollection) MarshalJSON() ([]byte, error) {
   575  	objectMap := make(map[string]any)
   576  	populate(objectMap, "etag", a.Etag)
   577  	populate(objectMap, "id", a.ID)
   578  	populate(objectMap, "name", a.Name)
   579  	populate(objectMap, "properties", a.Properties)
   580  	populate(objectMap, "systemData", a.SystemData)
   581  	populate(objectMap, "type", a.Type)
   582  	return json.Marshal(objectMap)
   583  }
   584  
   585  // UnmarshalJSON implements the json.Unmarshaller interface for type AdminRuleCollection.
   586  func (a *AdminRuleCollection) UnmarshalJSON(data []byte) error {
   587  	var rawMsg map[string]json.RawMessage
   588  	if err := json.Unmarshal(data, &rawMsg); err != nil {
   589  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
   590  	}
   591  	for key, val := range rawMsg {
   592  		var err error
   593  		switch key {
   594  		case "etag":
   595  			err = unpopulate(val, "Etag", &a.Etag)
   596  			delete(rawMsg, key)
   597  		case "id":
   598  			err = unpopulate(val, "ID", &a.ID)
   599  			delete(rawMsg, key)
   600  		case "name":
   601  			err = unpopulate(val, "Name", &a.Name)
   602  			delete(rawMsg, key)
   603  		case "properties":
   604  			err = unpopulate(val, "Properties", &a.Properties)
   605  			delete(rawMsg, key)
   606  		case "systemData":
   607  			err = unpopulate(val, "SystemData", &a.SystemData)
   608  			delete(rawMsg, key)
   609  		case "type":
   610  			err = unpopulate(val, "Type", &a.Type)
   611  			delete(rawMsg, key)
   612  		}
   613  		if err != nil {
   614  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
   615  		}
   616  	}
   617  	return nil
   618  }
   619  
   620  // MarshalJSON implements the json.Marshaller interface for type AdminRuleCollectionListResult.
   621  func (a AdminRuleCollectionListResult) MarshalJSON() ([]byte, error) {
   622  	objectMap := make(map[string]any)
   623  	populate(objectMap, "nextLink", a.NextLink)
   624  	populate(objectMap, "value", a.Value)
   625  	return json.Marshal(objectMap)
   626  }
   627  
   628  // UnmarshalJSON implements the json.Unmarshaller interface for type AdminRuleCollectionListResult.
   629  func (a *AdminRuleCollectionListResult) UnmarshalJSON(data []byte) error {
   630  	var rawMsg map[string]json.RawMessage
   631  	if err := json.Unmarshal(data, &rawMsg); err != nil {
   632  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
   633  	}
   634  	for key, val := range rawMsg {
   635  		var err error
   636  		switch key {
   637  		case "nextLink":
   638  			err = unpopulate(val, "NextLink", &a.NextLink)
   639  			delete(rawMsg, key)
   640  		case "value":
   641  			err = unpopulate(val, "Value", &a.Value)
   642  			delete(rawMsg, key)
   643  		}
   644  		if err != nil {
   645  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
   646  		}
   647  	}
   648  	return nil
   649  }
   650  
   651  // MarshalJSON implements the json.Marshaller interface for type AdminRuleCollectionPropertiesFormat.
   652  func (a AdminRuleCollectionPropertiesFormat) MarshalJSON() ([]byte, error) {
   653  	objectMap := make(map[string]any)
   654  	populate(objectMap, "appliesToGroups", a.AppliesToGroups)
   655  	populate(objectMap, "description", a.Description)
   656  	populate(objectMap, "provisioningState", a.ProvisioningState)
   657  	populate(objectMap, "resourceGuid", a.ResourceGUID)
   658  	return json.Marshal(objectMap)
   659  }
   660  
   661  // UnmarshalJSON implements the json.Unmarshaller interface for type AdminRuleCollectionPropertiesFormat.
   662  func (a *AdminRuleCollectionPropertiesFormat) UnmarshalJSON(data []byte) error {
   663  	var rawMsg map[string]json.RawMessage
   664  	if err := json.Unmarshal(data, &rawMsg); err != nil {
   665  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
   666  	}
   667  	for key, val := range rawMsg {
   668  		var err error
   669  		switch key {
   670  		case "appliesToGroups":
   671  			err = unpopulate(val, "AppliesToGroups", &a.AppliesToGroups)
   672  			delete(rawMsg, key)
   673  		case "description":
   674  			err = unpopulate(val, "Description", &a.Description)
   675  			delete(rawMsg, key)
   676  		case "provisioningState":
   677  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
   678  			delete(rawMsg, key)
   679  		case "resourceGuid":
   680  			err = unpopulate(val, "ResourceGUID", &a.ResourceGUID)
   681  			delete(rawMsg, key)
   682  		}
   683  		if err != nil {
   684  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
   685  		}
   686  	}
   687  	return nil
   688  }
   689  
   690  // MarshalJSON implements the json.Marshaller interface for type AdminRuleListResult.
   691  func (a AdminRuleListResult) MarshalJSON() ([]byte, error) {
   692  	objectMap := make(map[string]any)
   693  	populate(objectMap, "nextLink", a.NextLink)
   694  	populate(objectMap, "value", a.Value)
   695  	return json.Marshal(objectMap)
   696  }
   697  
   698  // UnmarshalJSON implements the json.Unmarshaller interface for type AdminRuleListResult.
   699  func (a *AdminRuleListResult) UnmarshalJSON(data []byte) error {
   700  	var rawMsg map[string]json.RawMessage
   701  	if err := json.Unmarshal(data, &rawMsg); err != nil {
   702  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
   703  	}
   704  	for key, val := range rawMsg {
   705  		var err error
   706  		switch key {
   707  		case "nextLink":
   708  			err = unpopulate(val, "NextLink", &a.NextLink)
   709  			delete(rawMsg, key)
   710  		case "value":
   711  			a.Value, err = unmarshalBaseAdminRuleClassificationArray(val)
   712  			delete(rawMsg, key)
   713  		}
   714  		if err != nil {
   715  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
   716  		}
   717  	}
   718  	return nil
   719  }
   720  
   721  // MarshalJSON implements the json.Marshaller interface for type ApplicationGateway.
   722  func (a ApplicationGateway) MarshalJSON() ([]byte, error) {
   723  	objectMap := make(map[string]any)
   724  	populate(objectMap, "etag", a.Etag)
   725  	populate(objectMap, "id", a.ID)
   726  	populate(objectMap, "identity", a.Identity)
   727  	populate(objectMap, "location", a.Location)
   728  	populate(objectMap, "name", a.Name)
   729  	populate(objectMap, "properties", a.Properties)
   730  	populate(objectMap, "tags", a.Tags)
   731  	populate(objectMap, "type", a.Type)
   732  	populate(objectMap, "zones", a.Zones)
   733  	return json.Marshal(objectMap)
   734  }
   735  
   736  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGateway.
   737  func (a *ApplicationGateway) UnmarshalJSON(data []byte) error {
   738  	var rawMsg map[string]json.RawMessage
   739  	if err := json.Unmarshal(data, &rawMsg); err != nil {
   740  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
   741  	}
   742  	for key, val := range rawMsg {
   743  		var err error
   744  		switch key {
   745  		case "etag":
   746  			err = unpopulate(val, "Etag", &a.Etag)
   747  			delete(rawMsg, key)
   748  		case "id":
   749  			err = unpopulate(val, "ID", &a.ID)
   750  			delete(rawMsg, key)
   751  		case "identity":
   752  			err = unpopulate(val, "Identity", &a.Identity)
   753  			delete(rawMsg, key)
   754  		case "location":
   755  			err = unpopulate(val, "Location", &a.Location)
   756  			delete(rawMsg, key)
   757  		case "name":
   758  			err = unpopulate(val, "Name", &a.Name)
   759  			delete(rawMsg, key)
   760  		case "properties":
   761  			err = unpopulate(val, "Properties", &a.Properties)
   762  			delete(rawMsg, key)
   763  		case "tags":
   764  			err = unpopulate(val, "Tags", &a.Tags)
   765  			delete(rawMsg, key)
   766  		case "type":
   767  			err = unpopulate(val, "Type", &a.Type)
   768  			delete(rawMsg, key)
   769  		case "zones":
   770  			err = unpopulate(val, "Zones", &a.Zones)
   771  			delete(rawMsg, key)
   772  		}
   773  		if err != nil {
   774  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
   775  		}
   776  	}
   777  	return nil
   778  }
   779  
   780  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayAuthenticationCertificate.
   781  func (a ApplicationGatewayAuthenticationCertificate) MarshalJSON() ([]byte, error) {
   782  	objectMap := make(map[string]any)
   783  	populate(objectMap, "etag", a.Etag)
   784  	populate(objectMap, "id", a.ID)
   785  	populate(objectMap, "name", a.Name)
   786  	populate(objectMap, "properties", a.Properties)
   787  	populate(objectMap, "type", a.Type)
   788  	return json.Marshal(objectMap)
   789  }
   790  
   791  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayAuthenticationCertificate.
   792  func (a *ApplicationGatewayAuthenticationCertificate) UnmarshalJSON(data []byte) error {
   793  	var rawMsg map[string]json.RawMessage
   794  	if err := json.Unmarshal(data, &rawMsg); err != nil {
   795  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
   796  	}
   797  	for key, val := range rawMsg {
   798  		var err error
   799  		switch key {
   800  		case "etag":
   801  			err = unpopulate(val, "Etag", &a.Etag)
   802  			delete(rawMsg, key)
   803  		case "id":
   804  			err = unpopulate(val, "ID", &a.ID)
   805  			delete(rawMsg, key)
   806  		case "name":
   807  			err = unpopulate(val, "Name", &a.Name)
   808  			delete(rawMsg, key)
   809  		case "properties":
   810  			err = unpopulate(val, "Properties", &a.Properties)
   811  			delete(rawMsg, key)
   812  		case "type":
   813  			err = unpopulate(val, "Type", &a.Type)
   814  			delete(rawMsg, key)
   815  		}
   816  		if err != nil {
   817  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
   818  		}
   819  	}
   820  	return nil
   821  }
   822  
   823  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayAuthenticationCertificatePropertiesFormat.
   824  func (a ApplicationGatewayAuthenticationCertificatePropertiesFormat) MarshalJSON() ([]byte, error) {
   825  	objectMap := make(map[string]any)
   826  	populate(objectMap, "data", a.Data)
   827  	populate(objectMap, "provisioningState", a.ProvisioningState)
   828  	return json.Marshal(objectMap)
   829  }
   830  
   831  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayAuthenticationCertificatePropertiesFormat.
   832  func (a *ApplicationGatewayAuthenticationCertificatePropertiesFormat) UnmarshalJSON(data []byte) error {
   833  	var rawMsg map[string]json.RawMessage
   834  	if err := json.Unmarshal(data, &rawMsg); err != nil {
   835  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
   836  	}
   837  	for key, val := range rawMsg {
   838  		var err error
   839  		switch key {
   840  		case "data":
   841  			err = unpopulate(val, "Data", &a.Data)
   842  			delete(rawMsg, key)
   843  		case "provisioningState":
   844  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
   845  			delete(rawMsg, key)
   846  		}
   847  		if err != nil {
   848  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
   849  		}
   850  	}
   851  	return nil
   852  }
   853  
   854  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayAutoscaleConfiguration.
   855  func (a ApplicationGatewayAutoscaleConfiguration) MarshalJSON() ([]byte, error) {
   856  	objectMap := make(map[string]any)
   857  	populate(objectMap, "maxCapacity", a.MaxCapacity)
   858  	populate(objectMap, "minCapacity", a.MinCapacity)
   859  	return json.Marshal(objectMap)
   860  }
   861  
   862  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayAutoscaleConfiguration.
   863  func (a *ApplicationGatewayAutoscaleConfiguration) UnmarshalJSON(data []byte) error {
   864  	var rawMsg map[string]json.RawMessage
   865  	if err := json.Unmarshal(data, &rawMsg); err != nil {
   866  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
   867  	}
   868  	for key, val := range rawMsg {
   869  		var err error
   870  		switch key {
   871  		case "maxCapacity":
   872  			err = unpopulate(val, "MaxCapacity", &a.MaxCapacity)
   873  			delete(rawMsg, key)
   874  		case "minCapacity":
   875  			err = unpopulate(val, "MinCapacity", &a.MinCapacity)
   876  			delete(rawMsg, key)
   877  		}
   878  		if err != nil {
   879  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
   880  		}
   881  	}
   882  	return nil
   883  }
   884  
   885  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayAvailableSSLOptions.
   886  func (a ApplicationGatewayAvailableSSLOptions) MarshalJSON() ([]byte, error) {
   887  	objectMap := make(map[string]any)
   888  	populate(objectMap, "id", a.ID)
   889  	populate(objectMap, "location", a.Location)
   890  	populate(objectMap, "name", a.Name)
   891  	populate(objectMap, "properties", a.Properties)
   892  	populate(objectMap, "tags", a.Tags)
   893  	populate(objectMap, "type", a.Type)
   894  	return json.Marshal(objectMap)
   895  }
   896  
   897  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayAvailableSSLOptions.
   898  func (a *ApplicationGatewayAvailableSSLOptions) UnmarshalJSON(data []byte) error {
   899  	var rawMsg map[string]json.RawMessage
   900  	if err := json.Unmarshal(data, &rawMsg); err != nil {
   901  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
   902  	}
   903  	for key, val := range rawMsg {
   904  		var err error
   905  		switch key {
   906  		case "id":
   907  			err = unpopulate(val, "ID", &a.ID)
   908  			delete(rawMsg, key)
   909  		case "location":
   910  			err = unpopulate(val, "Location", &a.Location)
   911  			delete(rawMsg, key)
   912  		case "name":
   913  			err = unpopulate(val, "Name", &a.Name)
   914  			delete(rawMsg, key)
   915  		case "properties":
   916  			err = unpopulate(val, "Properties", &a.Properties)
   917  			delete(rawMsg, key)
   918  		case "tags":
   919  			err = unpopulate(val, "Tags", &a.Tags)
   920  			delete(rawMsg, key)
   921  		case "type":
   922  			err = unpopulate(val, "Type", &a.Type)
   923  			delete(rawMsg, key)
   924  		}
   925  		if err != nil {
   926  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
   927  		}
   928  	}
   929  	return nil
   930  }
   931  
   932  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayAvailableSSLOptionsPropertiesFormat.
   933  func (a ApplicationGatewayAvailableSSLOptionsPropertiesFormat) MarshalJSON() ([]byte, error) {
   934  	objectMap := make(map[string]any)
   935  	populate(objectMap, "availableCipherSuites", a.AvailableCipherSuites)
   936  	populate(objectMap, "availableProtocols", a.AvailableProtocols)
   937  	populate(objectMap, "defaultPolicy", a.DefaultPolicy)
   938  	populate(objectMap, "predefinedPolicies", a.PredefinedPolicies)
   939  	return json.Marshal(objectMap)
   940  }
   941  
   942  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayAvailableSSLOptionsPropertiesFormat.
   943  func (a *ApplicationGatewayAvailableSSLOptionsPropertiesFormat) UnmarshalJSON(data []byte) error {
   944  	var rawMsg map[string]json.RawMessage
   945  	if err := json.Unmarshal(data, &rawMsg); err != nil {
   946  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
   947  	}
   948  	for key, val := range rawMsg {
   949  		var err error
   950  		switch key {
   951  		case "availableCipherSuites":
   952  			err = unpopulate(val, "AvailableCipherSuites", &a.AvailableCipherSuites)
   953  			delete(rawMsg, key)
   954  		case "availableProtocols":
   955  			err = unpopulate(val, "AvailableProtocols", &a.AvailableProtocols)
   956  			delete(rawMsg, key)
   957  		case "defaultPolicy":
   958  			err = unpopulate(val, "DefaultPolicy", &a.DefaultPolicy)
   959  			delete(rawMsg, key)
   960  		case "predefinedPolicies":
   961  			err = unpopulate(val, "PredefinedPolicies", &a.PredefinedPolicies)
   962  			delete(rawMsg, key)
   963  		}
   964  		if err != nil {
   965  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
   966  		}
   967  	}
   968  	return nil
   969  }
   970  
   971  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayAvailableSSLPredefinedPolicies.
   972  func (a ApplicationGatewayAvailableSSLPredefinedPolicies) MarshalJSON() ([]byte, error) {
   973  	objectMap := make(map[string]any)
   974  	populate(objectMap, "nextLink", a.NextLink)
   975  	populate(objectMap, "value", a.Value)
   976  	return json.Marshal(objectMap)
   977  }
   978  
   979  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayAvailableSSLPredefinedPolicies.
   980  func (a *ApplicationGatewayAvailableSSLPredefinedPolicies) UnmarshalJSON(data []byte) error {
   981  	var rawMsg map[string]json.RawMessage
   982  	if err := json.Unmarshal(data, &rawMsg); err != nil {
   983  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
   984  	}
   985  	for key, val := range rawMsg {
   986  		var err error
   987  		switch key {
   988  		case "nextLink":
   989  			err = unpopulate(val, "NextLink", &a.NextLink)
   990  			delete(rawMsg, key)
   991  		case "value":
   992  			err = unpopulate(val, "Value", &a.Value)
   993  			delete(rawMsg, key)
   994  		}
   995  		if err != nil {
   996  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
   997  		}
   998  	}
   999  	return nil
  1000  }
  1001  
  1002  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayAvailableWafRuleSetsResult.
  1003  func (a ApplicationGatewayAvailableWafRuleSetsResult) MarshalJSON() ([]byte, error) {
  1004  	objectMap := make(map[string]any)
  1005  	populate(objectMap, "value", a.Value)
  1006  	return json.Marshal(objectMap)
  1007  }
  1008  
  1009  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayAvailableWafRuleSetsResult.
  1010  func (a *ApplicationGatewayAvailableWafRuleSetsResult) UnmarshalJSON(data []byte) error {
  1011  	var rawMsg map[string]json.RawMessage
  1012  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  1013  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1014  	}
  1015  	for key, val := range rawMsg {
  1016  		var err error
  1017  		switch key {
  1018  		case "value":
  1019  			err = unpopulate(val, "Value", &a.Value)
  1020  			delete(rawMsg, key)
  1021  		}
  1022  		if err != nil {
  1023  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1024  		}
  1025  	}
  1026  	return nil
  1027  }
  1028  
  1029  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayBackendAddress.
  1030  func (a ApplicationGatewayBackendAddress) MarshalJSON() ([]byte, error) {
  1031  	objectMap := make(map[string]any)
  1032  	populate(objectMap, "fqdn", a.Fqdn)
  1033  	populate(objectMap, "ipAddress", a.IPAddress)
  1034  	return json.Marshal(objectMap)
  1035  }
  1036  
  1037  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayBackendAddress.
  1038  func (a *ApplicationGatewayBackendAddress) UnmarshalJSON(data []byte) error {
  1039  	var rawMsg map[string]json.RawMessage
  1040  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  1041  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1042  	}
  1043  	for key, val := range rawMsg {
  1044  		var err error
  1045  		switch key {
  1046  		case "fqdn":
  1047  			err = unpopulate(val, "Fqdn", &a.Fqdn)
  1048  			delete(rawMsg, key)
  1049  		case "ipAddress":
  1050  			err = unpopulate(val, "IPAddress", &a.IPAddress)
  1051  			delete(rawMsg, key)
  1052  		}
  1053  		if err != nil {
  1054  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1055  		}
  1056  	}
  1057  	return nil
  1058  }
  1059  
  1060  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayBackendAddressPool.
  1061  func (a ApplicationGatewayBackendAddressPool) MarshalJSON() ([]byte, error) {
  1062  	objectMap := make(map[string]any)
  1063  	populate(objectMap, "etag", a.Etag)
  1064  	populate(objectMap, "id", a.ID)
  1065  	populate(objectMap, "name", a.Name)
  1066  	populate(objectMap, "properties", a.Properties)
  1067  	populate(objectMap, "type", a.Type)
  1068  	return json.Marshal(objectMap)
  1069  }
  1070  
  1071  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayBackendAddressPool.
  1072  func (a *ApplicationGatewayBackendAddressPool) UnmarshalJSON(data []byte) error {
  1073  	var rawMsg map[string]json.RawMessage
  1074  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  1075  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1076  	}
  1077  	for key, val := range rawMsg {
  1078  		var err error
  1079  		switch key {
  1080  		case "etag":
  1081  			err = unpopulate(val, "Etag", &a.Etag)
  1082  			delete(rawMsg, key)
  1083  		case "id":
  1084  			err = unpopulate(val, "ID", &a.ID)
  1085  			delete(rawMsg, key)
  1086  		case "name":
  1087  			err = unpopulate(val, "Name", &a.Name)
  1088  			delete(rawMsg, key)
  1089  		case "properties":
  1090  			err = unpopulate(val, "Properties", &a.Properties)
  1091  			delete(rawMsg, key)
  1092  		case "type":
  1093  			err = unpopulate(val, "Type", &a.Type)
  1094  			delete(rawMsg, key)
  1095  		}
  1096  		if err != nil {
  1097  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1098  		}
  1099  	}
  1100  	return nil
  1101  }
  1102  
  1103  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayBackendAddressPoolPropertiesFormat.
  1104  func (a ApplicationGatewayBackendAddressPoolPropertiesFormat) MarshalJSON() ([]byte, error) {
  1105  	objectMap := make(map[string]any)
  1106  	populate(objectMap, "backendAddresses", a.BackendAddresses)
  1107  	populate(objectMap, "backendIPConfigurations", a.BackendIPConfigurations)
  1108  	populate(objectMap, "provisioningState", a.ProvisioningState)
  1109  	return json.Marshal(objectMap)
  1110  }
  1111  
  1112  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayBackendAddressPoolPropertiesFormat.
  1113  func (a *ApplicationGatewayBackendAddressPoolPropertiesFormat) UnmarshalJSON(data []byte) error {
  1114  	var rawMsg map[string]json.RawMessage
  1115  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  1116  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1117  	}
  1118  	for key, val := range rawMsg {
  1119  		var err error
  1120  		switch key {
  1121  		case "backendAddresses":
  1122  			err = unpopulate(val, "BackendAddresses", &a.BackendAddresses)
  1123  			delete(rawMsg, key)
  1124  		case "backendIPConfigurations":
  1125  			err = unpopulate(val, "BackendIPConfigurations", &a.BackendIPConfigurations)
  1126  			delete(rawMsg, key)
  1127  		case "provisioningState":
  1128  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  1129  			delete(rawMsg, key)
  1130  		}
  1131  		if err != nil {
  1132  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1133  		}
  1134  	}
  1135  	return nil
  1136  }
  1137  
  1138  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayBackendHTTPSettings.
  1139  func (a ApplicationGatewayBackendHTTPSettings) MarshalJSON() ([]byte, error) {
  1140  	objectMap := make(map[string]any)
  1141  	populate(objectMap, "etag", a.Etag)
  1142  	populate(objectMap, "id", a.ID)
  1143  	populate(objectMap, "name", a.Name)
  1144  	populate(objectMap, "properties", a.Properties)
  1145  	populate(objectMap, "type", a.Type)
  1146  	return json.Marshal(objectMap)
  1147  }
  1148  
  1149  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayBackendHTTPSettings.
  1150  func (a *ApplicationGatewayBackendHTTPSettings) UnmarshalJSON(data []byte) error {
  1151  	var rawMsg map[string]json.RawMessage
  1152  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  1153  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1154  	}
  1155  	for key, val := range rawMsg {
  1156  		var err error
  1157  		switch key {
  1158  		case "etag":
  1159  			err = unpopulate(val, "Etag", &a.Etag)
  1160  			delete(rawMsg, key)
  1161  		case "id":
  1162  			err = unpopulate(val, "ID", &a.ID)
  1163  			delete(rawMsg, key)
  1164  		case "name":
  1165  			err = unpopulate(val, "Name", &a.Name)
  1166  			delete(rawMsg, key)
  1167  		case "properties":
  1168  			err = unpopulate(val, "Properties", &a.Properties)
  1169  			delete(rawMsg, key)
  1170  		case "type":
  1171  			err = unpopulate(val, "Type", &a.Type)
  1172  			delete(rawMsg, key)
  1173  		}
  1174  		if err != nil {
  1175  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1176  		}
  1177  	}
  1178  	return nil
  1179  }
  1180  
  1181  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayBackendHTTPSettingsPropertiesFormat.
  1182  func (a ApplicationGatewayBackendHTTPSettingsPropertiesFormat) MarshalJSON() ([]byte, error) {
  1183  	objectMap := make(map[string]any)
  1184  	populate(objectMap, "affinityCookieName", a.AffinityCookieName)
  1185  	populate(objectMap, "authenticationCertificates", a.AuthenticationCertificates)
  1186  	populate(objectMap, "connectionDraining", a.ConnectionDraining)
  1187  	populate(objectMap, "cookieBasedAffinity", a.CookieBasedAffinity)
  1188  	populate(objectMap, "hostName", a.HostName)
  1189  	populate(objectMap, "path", a.Path)
  1190  	populate(objectMap, "pickHostNameFromBackendAddress", a.PickHostNameFromBackendAddress)
  1191  	populate(objectMap, "port", a.Port)
  1192  	populate(objectMap, "probe", a.Probe)
  1193  	populate(objectMap, "probeEnabled", a.ProbeEnabled)
  1194  	populate(objectMap, "protocol", a.Protocol)
  1195  	populate(objectMap, "provisioningState", a.ProvisioningState)
  1196  	populate(objectMap, "requestTimeout", a.RequestTimeout)
  1197  	populate(objectMap, "trustedRootCertificates", a.TrustedRootCertificates)
  1198  	return json.Marshal(objectMap)
  1199  }
  1200  
  1201  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayBackendHTTPSettingsPropertiesFormat.
  1202  func (a *ApplicationGatewayBackendHTTPSettingsPropertiesFormat) UnmarshalJSON(data []byte) error {
  1203  	var rawMsg map[string]json.RawMessage
  1204  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  1205  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1206  	}
  1207  	for key, val := range rawMsg {
  1208  		var err error
  1209  		switch key {
  1210  		case "affinityCookieName":
  1211  			err = unpopulate(val, "AffinityCookieName", &a.AffinityCookieName)
  1212  			delete(rawMsg, key)
  1213  		case "authenticationCertificates":
  1214  			err = unpopulate(val, "AuthenticationCertificates", &a.AuthenticationCertificates)
  1215  			delete(rawMsg, key)
  1216  		case "connectionDraining":
  1217  			err = unpopulate(val, "ConnectionDraining", &a.ConnectionDraining)
  1218  			delete(rawMsg, key)
  1219  		case "cookieBasedAffinity":
  1220  			err = unpopulate(val, "CookieBasedAffinity", &a.CookieBasedAffinity)
  1221  			delete(rawMsg, key)
  1222  		case "hostName":
  1223  			err = unpopulate(val, "HostName", &a.HostName)
  1224  			delete(rawMsg, key)
  1225  		case "path":
  1226  			err = unpopulate(val, "Path", &a.Path)
  1227  			delete(rawMsg, key)
  1228  		case "pickHostNameFromBackendAddress":
  1229  			err = unpopulate(val, "PickHostNameFromBackendAddress", &a.PickHostNameFromBackendAddress)
  1230  			delete(rawMsg, key)
  1231  		case "port":
  1232  			err = unpopulate(val, "Port", &a.Port)
  1233  			delete(rawMsg, key)
  1234  		case "probe":
  1235  			err = unpopulate(val, "Probe", &a.Probe)
  1236  			delete(rawMsg, key)
  1237  		case "probeEnabled":
  1238  			err = unpopulate(val, "ProbeEnabled", &a.ProbeEnabled)
  1239  			delete(rawMsg, key)
  1240  		case "protocol":
  1241  			err = unpopulate(val, "Protocol", &a.Protocol)
  1242  			delete(rawMsg, key)
  1243  		case "provisioningState":
  1244  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  1245  			delete(rawMsg, key)
  1246  		case "requestTimeout":
  1247  			err = unpopulate(val, "RequestTimeout", &a.RequestTimeout)
  1248  			delete(rawMsg, key)
  1249  		case "trustedRootCertificates":
  1250  			err = unpopulate(val, "TrustedRootCertificates", &a.TrustedRootCertificates)
  1251  			delete(rawMsg, key)
  1252  		}
  1253  		if err != nil {
  1254  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1255  		}
  1256  	}
  1257  	return nil
  1258  }
  1259  
  1260  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayBackendHealth.
  1261  func (a ApplicationGatewayBackendHealth) MarshalJSON() ([]byte, error) {
  1262  	objectMap := make(map[string]any)
  1263  	populate(objectMap, "backendAddressPools", a.BackendAddressPools)
  1264  	return json.Marshal(objectMap)
  1265  }
  1266  
  1267  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayBackendHealth.
  1268  func (a *ApplicationGatewayBackendHealth) UnmarshalJSON(data []byte) error {
  1269  	var rawMsg map[string]json.RawMessage
  1270  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  1271  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1272  	}
  1273  	for key, val := range rawMsg {
  1274  		var err error
  1275  		switch key {
  1276  		case "backendAddressPools":
  1277  			err = unpopulate(val, "BackendAddressPools", &a.BackendAddressPools)
  1278  			delete(rawMsg, key)
  1279  		}
  1280  		if err != nil {
  1281  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1282  		}
  1283  	}
  1284  	return nil
  1285  }
  1286  
  1287  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayBackendHealthHTTPSettings.
  1288  func (a ApplicationGatewayBackendHealthHTTPSettings) MarshalJSON() ([]byte, error) {
  1289  	objectMap := make(map[string]any)
  1290  	populate(objectMap, "backendHttpSettings", a.BackendHTTPSettings)
  1291  	populate(objectMap, "servers", a.Servers)
  1292  	return json.Marshal(objectMap)
  1293  }
  1294  
  1295  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayBackendHealthHTTPSettings.
  1296  func (a *ApplicationGatewayBackendHealthHTTPSettings) UnmarshalJSON(data []byte) error {
  1297  	var rawMsg map[string]json.RawMessage
  1298  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  1299  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1300  	}
  1301  	for key, val := range rawMsg {
  1302  		var err error
  1303  		switch key {
  1304  		case "backendHttpSettings":
  1305  			err = unpopulate(val, "BackendHTTPSettings", &a.BackendHTTPSettings)
  1306  			delete(rawMsg, key)
  1307  		case "servers":
  1308  			err = unpopulate(val, "Servers", &a.Servers)
  1309  			delete(rawMsg, key)
  1310  		}
  1311  		if err != nil {
  1312  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1313  		}
  1314  	}
  1315  	return nil
  1316  }
  1317  
  1318  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayBackendHealthOnDemand.
  1319  func (a ApplicationGatewayBackendHealthOnDemand) MarshalJSON() ([]byte, error) {
  1320  	objectMap := make(map[string]any)
  1321  	populate(objectMap, "backendAddressPool", a.BackendAddressPool)
  1322  	populate(objectMap, "backendHealthHttpSettings", a.BackendHealthHTTPSettings)
  1323  	return json.Marshal(objectMap)
  1324  }
  1325  
  1326  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayBackendHealthOnDemand.
  1327  func (a *ApplicationGatewayBackendHealthOnDemand) UnmarshalJSON(data []byte) error {
  1328  	var rawMsg map[string]json.RawMessage
  1329  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  1330  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1331  	}
  1332  	for key, val := range rawMsg {
  1333  		var err error
  1334  		switch key {
  1335  		case "backendAddressPool":
  1336  			err = unpopulate(val, "BackendAddressPool", &a.BackendAddressPool)
  1337  			delete(rawMsg, key)
  1338  		case "backendHealthHttpSettings":
  1339  			err = unpopulate(val, "BackendHealthHTTPSettings", &a.BackendHealthHTTPSettings)
  1340  			delete(rawMsg, key)
  1341  		}
  1342  		if err != nil {
  1343  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1344  		}
  1345  	}
  1346  	return nil
  1347  }
  1348  
  1349  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayBackendHealthPool.
  1350  func (a ApplicationGatewayBackendHealthPool) MarshalJSON() ([]byte, error) {
  1351  	objectMap := make(map[string]any)
  1352  	populate(objectMap, "backendAddressPool", a.BackendAddressPool)
  1353  	populate(objectMap, "backendHttpSettingsCollection", a.BackendHTTPSettingsCollection)
  1354  	return json.Marshal(objectMap)
  1355  }
  1356  
  1357  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayBackendHealthPool.
  1358  func (a *ApplicationGatewayBackendHealthPool) UnmarshalJSON(data []byte) error {
  1359  	var rawMsg map[string]json.RawMessage
  1360  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  1361  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1362  	}
  1363  	for key, val := range rawMsg {
  1364  		var err error
  1365  		switch key {
  1366  		case "backendAddressPool":
  1367  			err = unpopulate(val, "BackendAddressPool", &a.BackendAddressPool)
  1368  			delete(rawMsg, key)
  1369  		case "backendHttpSettingsCollection":
  1370  			err = unpopulate(val, "BackendHTTPSettingsCollection", &a.BackendHTTPSettingsCollection)
  1371  			delete(rawMsg, key)
  1372  		}
  1373  		if err != nil {
  1374  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1375  		}
  1376  	}
  1377  	return nil
  1378  }
  1379  
  1380  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayBackendHealthServer.
  1381  func (a ApplicationGatewayBackendHealthServer) MarshalJSON() ([]byte, error) {
  1382  	objectMap := make(map[string]any)
  1383  	populate(objectMap, "address", a.Address)
  1384  	populate(objectMap, "health", a.Health)
  1385  	populate(objectMap, "healthProbeLog", a.HealthProbeLog)
  1386  	populate(objectMap, "ipConfiguration", a.IPConfiguration)
  1387  	return json.Marshal(objectMap)
  1388  }
  1389  
  1390  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayBackendHealthServer.
  1391  func (a *ApplicationGatewayBackendHealthServer) UnmarshalJSON(data []byte) error {
  1392  	var rawMsg map[string]json.RawMessage
  1393  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  1394  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1395  	}
  1396  	for key, val := range rawMsg {
  1397  		var err error
  1398  		switch key {
  1399  		case "address":
  1400  			err = unpopulate(val, "Address", &a.Address)
  1401  			delete(rawMsg, key)
  1402  		case "health":
  1403  			err = unpopulate(val, "Health", &a.Health)
  1404  			delete(rawMsg, key)
  1405  		case "healthProbeLog":
  1406  			err = unpopulate(val, "HealthProbeLog", &a.HealthProbeLog)
  1407  			delete(rawMsg, key)
  1408  		case "ipConfiguration":
  1409  			err = unpopulate(val, "IPConfiguration", &a.IPConfiguration)
  1410  			delete(rawMsg, key)
  1411  		}
  1412  		if err != nil {
  1413  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1414  		}
  1415  	}
  1416  	return nil
  1417  }
  1418  
  1419  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayBackendSettings.
  1420  func (a ApplicationGatewayBackendSettings) MarshalJSON() ([]byte, error) {
  1421  	objectMap := make(map[string]any)
  1422  	populate(objectMap, "etag", a.Etag)
  1423  	populate(objectMap, "id", a.ID)
  1424  	populate(objectMap, "name", a.Name)
  1425  	populate(objectMap, "properties", a.Properties)
  1426  	populate(objectMap, "type", a.Type)
  1427  	return json.Marshal(objectMap)
  1428  }
  1429  
  1430  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayBackendSettings.
  1431  func (a *ApplicationGatewayBackendSettings) UnmarshalJSON(data []byte) error {
  1432  	var rawMsg map[string]json.RawMessage
  1433  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  1434  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1435  	}
  1436  	for key, val := range rawMsg {
  1437  		var err error
  1438  		switch key {
  1439  		case "etag":
  1440  			err = unpopulate(val, "Etag", &a.Etag)
  1441  			delete(rawMsg, key)
  1442  		case "id":
  1443  			err = unpopulate(val, "ID", &a.ID)
  1444  			delete(rawMsg, key)
  1445  		case "name":
  1446  			err = unpopulate(val, "Name", &a.Name)
  1447  			delete(rawMsg, key)
  1448  		case "properties":
  1449  			err = unpopulate(val, "Properties", &a.Properties)
  1450  			delete(rawMsg, key)
  1451  		case "type":
  1452  			err = unpopulate(val, "Type", &a.Type)
  1453  			delete(rawMsg, key)
  1454  		}
  1455  		if err != nil {
  1456  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1457  		}
  1458  	}
  1459  	return nil
  1460  }
  1461  
  1462  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayBackendSettingsPropertiesFormat.
  1463  func (a ApplicationGatewayBackendSettingsPropertiesFormat) MarshalJSON() ([]byte, error) {
  1464  	objectMap := make(map[string]any)
  1465  	populate(objectMap, "hostName", a.HostName)
  1466  	populate(objectMap, "pickHostNameFromBackendAddress", a.PickHostNameFromBackendAddress)
  1467  	populate(objectMap, "port", a.Port)
  1468  	populate(objectMap, "probe", a.Probe)
  1469  	populate(objectMap, "protocol", a.Protocol)
  1470  	populate(objectMap, "provisioningState", a.ProvisioningState)
  1471  	populate(objectMap, "timeout", a.Timeout)
  1472  	populate(objectMap, "trustedRootCertificates", a.TrustedRootCertificates)
  1473  	return json.Marshal(objectMap)
  1474  }
  1475  
  1476  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayBackendSettingsPropertiesFormat.
  1477  func (a *ApplicationGatewayBackendSettingsPropertiesFormat) UnmarshalJSON(data []byte) error {
  1478  	var rawMsg map[string]json.RawMessage
  1479  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  1480  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1481  	}
  1482  	for key, val := range rawMsg {
  1483  		var err error
  1484  		switch key {
  1485  		case "hostName":
  1486  			err = unpopulate(val, "HostName", &a.HostName)
  1487  			delete(rawMsg, key)
  1488  		case "pickHostNameFromBackendAddress":
  1489  			err = unpopulate(val, "PickHostNameFromBackendAddress", &a.PickHostNameFromBackendAddress)
  1490  			delete(rawMsg, key)
  1491  		case "port":
  1492  			err = unpopulate(val, "Port", &a.Port)
  1493  			delete(rawMsg, key)
  1494  		case "probe":
  1495  			err = unpopulate(val, "Probe", &a.Probe)
  1496  			delete(rawMsg, key)
  1497  		case "protocol":
  1498  			err = unpopulate(val, "Protocol", &a.Protocol)
  1499  			delete(rawMsg, key)
  1500  		case "provisioningState":
  1501  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  1502  			delete(rawMsg, key)
  1503  		case "timeout":
  1504  			err = unpopulate(val, "Timeout", &a.Timeout)
  1505  			delete(rawMsg, key)
  1506  		case "trustedRootCertificates":
  1507  			err = unpopulate(val, "TrustedRootCertificates", &a.TrustedRootCertificates)
  1508  			delete(rawMsg, key)
  1509  		}
  1510  		if err != nil {
  1511  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1512  		}
  1513  	}
  1514  	return nil
  1515  }
  1516  
  1517  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayClientAuthConfiguration.
  1518  func (a ApplicationGatewayClientAuthConfiguration) MarshalJSON() ([]byte, error) {
  1519  	objectMap := make(map[string]any)
  1520  	populate(objectMap, "verifyClientCertIssuerDN", a.VerifyClientCertIssuerDN)
  1521  	populate(objectMap, "verifyClientRevocation", a.VerifyClientRevocation)
  1522  	return json.Marshal(objectMap)
  1523  }
  1524  
  1525  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayClientAuthConfiguration.
  1526  func (a *ApplicationGatewayClientAuthConfiguration) UnmarshalJSON(data []byte) error {
  1527  	var rawMsg map[string]json.RawMessage
  1528  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  1529  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1530  	}
  1531  	for key, val := range rawMsg {
  1532  		var err error
  1533  		switch key {
  1534  		case "verifyClientCertIssuerDN":
  1535  			err = unpopulate(val, "VerifyClientCertIssuerDN", &a.VerifyClientCertIssuerDN)
  1536  			delete(rawMsg, key)
  1537  		case "verifyClientRevocation":
  1538  			err = unpopulate(val, "VerifyClientRevocation", &a.VerifyClientRevocation)
  1539  			delete(rawMsg, key)
  1540  		}
  1541  		if err != nil {
  1542  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1543  		}
  1544  	}
  1545  	return nil
  1546  }
  1547  
  1548  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayConnectionDraining.
  1549  func (a ApplicationGatewayConnectionDraining) MarshalJSON() ([]byte, error) {
  1550  	objectMap := make(map[string]any)
  1551  	populate(objectMap, "drainTimeoutInSec", a.DrainTimeoutInSec)
  1552  	populate(objectMap, "enabled", a.Enabled)
  1553  	return json.Marshal(objectMap)
  1554  }
  1555  
  1556  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayConnectionDraining.
  1557  func (a *ApplicationGatewayConnectionDraining) UnmarshalJSON(data []byte) error {
  1558  	var rawMsg map[string]json.RawMessage
  1559  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  1560  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1561  	}
  1562  	for key, val := range rawMsg {
  1563  		var err error
  1564  		switch key {
  1565  		case "drainTimeoutInSec":
  1566  			err = unpopulate(val, "DrainTimeoutInSec", &a.DrainTimeoutInSec)
  1567  			delete(rawMsg, key)
  1568  		case "enabled":
  1569  			err = unpopulate(val, "Enabled", &a.Enabled)
  1570  			delete(rawMsg, key)
  1571  		}
  1572  		if err != nil {
  1573  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1574  		}
  1575  	}
  1576  	return nil
  1577  }
  1578  
  1579  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayCustomError.
  1580  func (a ApplicationGatewayCustomError) MarshalJSON() ([]byte, error) {
  1581  	objectMap := make(map[string]any)
  1582  	populate(objectMap, "customErrorPageUrl", a.CustomErrorPageURL)
  1583  	populate(objectMap, "statusCode", a.StatusCode)
  1584  	return json.Marshal(objectMap)
  1585  }
  1586  
  1587  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayCustomError.
  1588  func (a *ApplicationGatewayCustomError) UnmarshalJSON(data []byte) error {
  1589  	var rawMsg map[string]json.RawMessage
  1590  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  1591  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1592  	}
  1593  	for key, val := range rawMsg {
  1594  		var err error
  1595  		switch key {
  1596  		case "customErrorPageUrl":
  1597  			err = unpopulate(val, "CustomErrorPageURL", &a.CustomErrorPageURL)
  1598  			delete(rawMsg, key)
  1599  		case "statusCode":
  1600  			err = unpopulate(val, "StatusCode", &a.StatusCode)
  1601  			delete(rawMsg, key)
  1602  		}
  1603  		if err != nil {
  1604  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1605  		}
  1606  	}
  1607  	return nil
  1608  }
  1609  
  1610  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayFirewallDisabledRuleGroup.
  1611  func (a ApplicationGatewayFirewallDisabledRuleGroup) MarshalJSON() ([]byte, error) {
  1612  	objectMap := make(map[string]any)
  1613  	populate(objectMap, "ruleGroupName", a.RuleGroupName)
  1614  	populate(objectMap, "rules", a.Rules)
  1615  	return json.Marshal(objectMap)
  1616  }
  1617  
  1618  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayFirewallDisabledRuleGroup.
  1619  func (a *ApplicationGatewayFirewallDisabledRuleGroup) UnmarshalJSON(data []byte) error {
  1620  	var rawMsg map[string]json.RawMessage
  1621  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  1622  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1623  	}
  1624  	for key, val := range rawMsg {
  1625  		var err error
  1626  		switch key {
  1627  		case "ruleGroupName":
  1628  			err = unpopulate(val, "RuleGroupName", &a.RuleGroupName)
  1629  			delete(rawMsg, key)
  1630  		case "rules":
  1631  			err = unpopulate(val, "Rules", &a.Rules)
  1632  			delete(rawMsg, key)
  1633  		}
  1634  		if err != nil {
  1635  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1636  		}
  1637  	}
  1638  	return nil
  1639  }
  1640  
  1641  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayFirewallExclusion.
  1642  func (a ApplicationGatewayFirewallExclusion) MarshalJSON() ([]byte, error) {
  1643  	objectMap := make(map[string]any)
  1644  	populate(objectMap, "matchVariable", a.MatchVariable)
  1645  	populate(objectMap, "selector", a.Selector)
  1646  	populate(objectMap, "selectorMatchOperator", a.SelectorMatchOperator)
  1647  	return json.Marshal(objectMap)
  1648  }
  1649  
  1650  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayFirewallExclusion.
  1651  func (a *ApplicationGatewayFirewallExclusion) UnmarshalJSON(data []byte) error {
  1652  	var rawMsg map[string]json.RawMessage
  1653  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  1654  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1655  	}
  1656  	for key, val := range rawMsg {
  1657  		var err error
  1658  		switch key {
  1659  		case "matchVariable":
  1660  			err = unpopulate(val, "MatchVariable", &a.MatchVariable)
  1661  			delete(rawMsg, key)
  1662  		case "selector":
  1663  			err = unpopulate(val, "Selector", &a.Selector)
  1664  			delete(rawMsg, key)
  1665  		case "selectorMatchOperator":
  1666  			err = unpopulate(val, "SelectorMatchOperator", &a.SelectorMatchOperator)
  1667  			delete(rawMsg, key)
  1668  		}
  1669  		if err != nil {
  1670  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1671  		}
  1672  	}
  1673  	return nil
  1674  }
  1675  
  1676  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayFirewallManifestRuleSet.
  1677  func (a ApplicationGatewayFirewallManifestRuleSet) MarshalJSON() ([]byte, error) {
  1678  	objectMap := make(map[string]any)
  1679  	populate(objectMap, "ruleGroups", a.RuleGroups)
  1680  	populate(objectMap, "ruleSetType", a.RuleSetType)
  1681  	populate(objectMap, "ruleSetVersion", a.RuleSetVersion)
  1682  	populate(objectMap, "status", a.Status)
  1683  	populate(objectMap, "tiers", a.Tiers)
  1684  	return json.Marshal(objectMap)
  1685  }
  1686  
  1687  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayFirewallManifestRuleSet.
  1688  func (a *ApplicationGatewayFirewallManifestRuleSet) UnmarshalJSON(data []byte) error {
  1689  	var rawMsg map[string]json.RawMessage
  1690  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  1691  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1692  	}
  1693  	for key, val := range rawMsg {
  1694  		var err error
  1695  		switch key {
  1696  		case "ruleGroups":
  1697  			err = unpopulate(val, "RuleGroups", &a.RuleGroups)
  1698  			delete(rawMsg, key)
  1699  		case "ruleSetType":
  1700  			err = unpopulate(val, "RuleSetType", &a.RuleSetType)
  1701  			delete(rawMsg, key)
  1702  		case "ruleSetVersion":
  1703  			err = unpopulate(val, "RuleSetVersion", &a.RuleSetVersion)
  1704  			delete(rawMsg, key)
  1705  		case "status":
  1706  			err = unpopulate(val, "Status", &a.Status)
  1707  			delete(rawMsg, key)
  1708  		case "tiers":
  1709  			err = unpopulate(val, "Tiers", &a.Tiers)
  1710  			delete(rawMsg, key)
  1711  		}
  1712  		if err != nil {
  1713  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1714  		}
  1715  	}
  1716  	return nil
  1717  }
  1718  
  1719  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayFirewallRule.
  1720  func (a ApplicationGatewayFirewallRule) MarshalJSON() ([]byte, error) {
  1721  	objectMap := make(map[string]any)
  1722  	populate(objectMap, "action", a.Action)
  1723  	populate(objectMap, "description", a.Description)
  1724  	populate(objectMap, "ruleId", a.RuleID)
  1725  	populate(objectMap, "ruleIdString", a.RuleIDString)
  1726  	populate(objectMap, "sensitivity", a.Sensitivity)
  1727  	populate(objectMap, "state", a.State)
  1728  	return json.Marshal(objectMap)
  1729  }
  1730  
  1731  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayFirewallRule.
  1732  func (a *ApplicationGatewayFirewallRule) UnmarshalJSON(data []byte) error {
  1733  	var rawMsg map[string]json.RawMessage
  1734  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  1735  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1736  	}
  1737  	for key, val := range rawMsg {
  1738  		var err error
  1739  		switch key {
  1740  		case "action":
  1741  			err = unpopulate(val, "Action", &a.Action)
  1742  			delete(rawMsg, key)
  1743  		case "description":
  1744  			err = unpopulate(val, "Description", &a.Description)
  1745  			delete(rawMsg, key)
  1746  		case "ruleId":
  1747  			err = unpopulate(val, "RuleID", &a.RuleID)
  1748  			delete(rawMsg, key)
  1749  		case "ruleIdString":
  1750  			err = unpopulate(val, "RuleIDString", &a.RuleIDString)
  1751  			delete(rawMsg, key)
  1752  		case "sensitivity":
  1753  			err = unpopulate(val, "Sensitivity", &a.Sensitivity)
  1754  			delete(rawMsg, key)
  1755  		case "state":
  1756  			err = unpopulate(val, "State", &a.State)
  1757  			delete(rawMsg, key)
  1758  		}
  1759  		if err != nil {
  1760  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1761  		}
  1762  	}
  1763  	return nil
  1764  }
  1765  
  1766  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayFirewallRuleGroup.
  1767  func (a ApplicationGatewayFirewallRuleGroup) MarshalJSON() ([]byte, error) {
  1768  	objectMap := make(map[string]any)
  1769  	populate(objectMap, "description", a.Description)
  1770  	populate(objectMap, "ruleGroupName", a.RuleGroupName)
  1771  	populate(objectMap, "rules", a.Rules)
  1772  	return json.Marshal(objectMap)
  1773  }
  1774  
  1775  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayFirewallRuleGroup.
  1776  func (a *ApplicationGatewayFirewallRuleGroup) UnmarshalJSON(data []byte) error {
  1777  	var rawMsg map[string]json.RawMessage
  1778  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  1779  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1780  	}
  1781  	for key, val := range rawMsg {
  1782  		var err error
  1783  		switch key {
  1784  		case "description":
  1785  			err = unpopulate(val, "Description", &a.Description)
  1786  			delete(rawMsg, key)
  1787  		case "ruleGroupName":
  1788  			err = unpopulate(val, "RuleGroupName", &a.RuleGroupName)
  1789  			delete(rawMsg, key)
  1790  		case "rules":
  1791  			err = unpopulate(val, "Rules", &a.Rules)
  1792  			delete(rawMsg, key)
  1793  		}
  1794  		if err != nil {
  1795  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1796  		}
  1797  	}
  1798  	return nil
  1799  }
  1800  
  1801  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayFirewallRuleSet.
  1802  func (a ApplicationGatewayFirewallRuleSet) MarshalJSON() ([]byte, error) {
  1803  	objectMap := make(map[string]any)
  1804  	populate(objectMap, "id", a.ID)
  1805  	populate(objectMap, "location", a.Location)
  1806  	populate(objectMap, "name", a.Name)
  1807  	populate(objectMap, "properties", a.Properties)
  1808  	populate(objectMap, "tags", a.Tags)
  1809  	populate(objectMap, "type", a.Type)
  1810  	return json.Marshal(objectMap)
  1811  }
  1812  
  1813  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayFirewallRuleSet.
  1814  func (a *ApplicationGatewayFirewallRuleSet) UnmarshalJSON(data []byte) error {
  1815  	var rawMsg map[string]json.RawMessage
  1816  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  1817  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1818  	}
  1819  	for key, val := range rawMsg {
  1820  		var err error
  1821  		switch key {
  1822  		case "id":
  1823  			err = unpopulate(val, "ID", &a.ID)
  1824  			delete(rawMsg, key)
  1825  		case "location":
  1826  			err = unpopulate(val, "Location", &a.Location)
  1827  			delete(rawMsg, key)
  1828  		case "name":
  1829  			err = unpopulate(val, "Name", &a.Name)
  1830  			delete(rawMsg, key)
  1831  		case "properties":
  1832  			err = unpopulate(val, "Properties", &a.Properties)
  1833  			delete(rawMsg, key)
  1834  		case "tags":
  1835  			err = unpopulate(val, "Tags", &a.Tags)
  1836  			delete(rawMsg, key)
  1837  		case "type":
  1838  			err = unpopulate(val, "Type", &a.Type)
  1839  			delete(rawMsg, key)
  1840  		}
  1841  		if err != nil {
  1842  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1843  		}
  1844  	}
  1845  	return nil
  1846  }
  1847  
  1848  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayFirewallRuleSetPropertiesFormat.
  1849  func (a ApplicationGatewayFirewallRuleSetPropertiesFormat) MarshalJSON() ([]byte, error) {
  1850  	objectMap := make(map[string]any)
  1851  	populate(objectMap, "provisioningState", a.ProvisioningState)
  1852  	populate(objectMap, "ruleGroups", a.RuleGroups)
  1853  	populate(objectMap, "ruleSetType", a.RuleSetType)
  1854  	populate(objectMap, "ruleSetVersion", a.RuleSetVersion)
  1855  	populate(objectMap, "tiers", a.Tiers)
  1856  	return json.Marshal(objectMap)
  1857  }
  1858  
  1859  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayFirewallRuleSetPropertiesFormat.
  1860  func (a *ApplicationGatewayFirewallRuleSetPropertiesFormat) UnmarshalJSON(data []byte) error {
  1861  	var rawMsg map[string]json.RawMessage
  1862  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  1863  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1864  	}
  1865  	for key, val := range rawMsg {
  1866  		var err error
  1867  		switch key {
  1868  		case "provisioningState":
  1869  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  1870  			delete(rawMsg, key)
  1871  		case "ruleGroups":
  1872  			err = unpopulate(val, "RuleGroups", &a.RuleGroups)
  1873  			delete(rawMsg, key)
  1874  		case "ruleSetType":
  1875  			err = unpopulate(val, "RuleSetType", &a.RuleSetType)
  1876  			delete(rawMsg, key)
  1877  		case "ruleSetVersion":
  1878  			err = unpopulate(val, "RuleSetVersion", &a.RuleSetVersion)
  1879  			delete(rawMsg, key)
  1880  		case "tiers":
  1881  			err = unpopulate(val, "Tiers", &a.Tiers)
  1882  			delete(rawMsg, key)
  1883  		}
  1884  		if err != nil {
  1885  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1886  		}
  1887  	}
  1888  	return nil
  1889  }
  1890  
  1891  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayForContainersReferenceDefinition.
  1892  func (a ApplicationGatewayForContainersReferenceDefinition) MarshalJSON() ([]byte, error) {
  1893  	objectMap := make(map[string]any)
  1894  	populate(objectMap, "id", a.ID)
  1895  	return json.Marshal(objectMap)
  1896  }
  1897  
  1898  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayForContainersReferenceDefinition.
  1899  func (a *ApplicationGatewayForContainersReferenceDefinition) UnmarshalJSON(data []byte) error {
  1900  	var rawMsg map[string]json.RawMessage
  1901  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  1902  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1903  	}
  1904  	for key, val := range rawMsg {
  1905  		var err error
  1906  		switch key {
  1907  		case "id":
  1908  			err = unpopulate(val, "ID", &a.ID)
  1909  			delete(rawMsg, key)
  1910  		}
  1911  		if err != nil {
  1912  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1913  		}
  1914  	}
  1915  	return nil
  1916  }
  1917  
  1918  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayFrontendIPConfiguration.
  1919  func (a ApplicationGatewayFrontendIPConfiguration) MarshalJSON() ([]byte, error) {
  1920  	objectMap := make(map[string]any)
  1921  	populate(objectMap, "etag", a.Etag)
  1922  	populate(objectMap, "id", a.ID)
  1923  	populate(objectMap, "name", a.Name)
  1924  	populate(objectMap, "properties", a.Properties)
  1925  	populate(objectMap, "type", a.Type)
  1926  	return json.Marshal(objectMap)
  1927  }
  1928  
  1929  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayFrontendIPConfiguration.
  1930  func (a *ApplicationGatewayFrontendIPConfiguration) UnmarshalJSON(data []byte) error {
  1931  	var rawMsg map[string]json.RawMessage
  1932  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  1933  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1934  	}
  1935  	for key, val := range rawMsg {
  1936  		var err error
  1937  		switch key {
  1938  		case "etag":
  1939  			err = unpopulate(val, "Etag", &a.Etag)
  1940  			delete(rawMsg, key)
  1941  		case "id":
  1942  			err = unpopulate(val, "ID", &a.ID)
  1943  			delete(rawMsg, key)
  1944  		case "name":
  1945  			err = unpopulate(val, "Name", &a.Name)
  1946  			delete(rawMsg, key)
  1947  		case "properties":
  1948  			err = unpopulate(val, "Properties", &a.Properties)
  1949  			delete(rawMsg, key)
  1950  		case "type":
  1951  			err = unpopulate(val, "Type", &a.Type)
  1952  			delete(rawMsg, key)
  1953  		}
  1954  		if err != nil {
  1955  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1956  		}
  1957  	}
  1958  	return nil
  1959  }
  1960  
  1961  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayFrontendIPConfigurationPropertiesFormat.
  1962  func (a ApplicationGatewayFrontendIPConfigurationPropertiesFormat) MarshalJSON() ([]byte, error) {
  1963  	objectMap := make(map[string]any)
  1964  	populate(objectMap, "privateIPAddress", a.PrivateIPAddress)
  1965  	populate(objectMap, "privateIPAllocationMethod", a.PrivateIPAllocationMethod)
  1966  	populate(objectMap, "privateLinkConfiguration", a.PrivateLinkConfiguration)
  1967  	populate(objectMap, "provisioningState", a.ProvisioningState)
  1968  	populate(objectMap, "publicIPAddress", a.PublicIPAddress)
  1969  	populate(objectMap, "subnet", a.Subnet)
  1970  	return json.Marshal(objectMap)
  1971  }
  1972  
  1973  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayFrontendIPConfigurationPropertiesFormat.
  1974  func (a *ApplicationGatewayFrontendIPConfigurationPropertiesFormat) UnmarshalJSON(data []byte) error {
  1975  	var rawMsg map[string]json.RawMessage
  1976  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  1977  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  1978  	}
  1979  	for key, val := range rawMsg {
  1980  		var err error
  1981  		switch key {
  1982  		case "privateIPAddress":
  1983  			err = unpopulate(val, "PrivateIPAddress", &a.PrivateIPAddress)
  1984  			delete(rawMsg, key)
  1985  		case "privateIPAllocationMethod":
  1986  			err = unpopulate(val, "PrivateIPAllocationMethod", &a.PrivateIPAllocationMethod)
  1987  			delete(rawMsg, key)
  1988  		case "privateLinkConfiguration":
  1989  			err = unpopulate(val, "PrivateLinkConfiguration", &a.PrivateLinkConfiguration)
  1990  			delete(rawMsg, key)
  1991  		case "provisioningState":
  1992  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  1993  			delete(rawMsg, key)
  1994  		case "publicIPAddress":
  1995  			err = unpopulate(val, "PublicIPAddress", &a.PublicIPAddress)
  1996  			delete(rawMsg, key)
  1997  		case "subnet":
  1998  			err = unpopulate(val, "Subnet", &a.Subnet)
  1999  			delete(rawMsg, key)
  2000  		}
  2001  		if err != nil {
  2002  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2003  		}
  2004  	}
  2005  	return nil
  2006  }
  2007  
  2008  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayFrontendPort.
  2009  func (a ApplicationGatewayFrontendPort) MarshalJSON() ([]byte, error) {
  2010  	objectMap := make(map[string]any)
  2011  	populate(objectMap, "etag", a.Etag)
  2012  	populate(objectMap, "id", a.ID)
  2013  	populate(objectMap, "name", a.Name)
  2014  	populate(objectMap, "properties", a.Properties)
  2015  	populate(objectMap, "type", a.Type)
  2016  	return json.Marshal(objectMap)
  2017  }
  2018  
  2019  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayFrontendPort.
  2020  func (a *ApplicationGatewayFrontendPort) UnmarshalJSON(data []byte) error {
  2021  	var rawMsg map[string]json.RawMessage
  2022  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  2023  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2024  	}
  2025  	for key, val := range rawMsg {
  2026  		var err error
  2027  		switch key {
  2028  		case "etag":
  2029  			err = unpopulate(val, "Etag", &a.Etag)
  2030  			delete(rawMsg, key)
  2031  		case "id":
  2032  			err = unpopulate(val, "ID", &a.ID)
  2033  			delete(rawMsg, key)
  2034  		case "name":
  2035  			err = unpopulate(val, "Name", &a.Name)
  2036  			delete(rawMsg, key)
  2037  		case "properties":
  2038  			err = unpopulate(val, "Properties", &a.Properties)
  2039  			delete(rawMsg, key)
  2040  		case "type":
  2041  			err = unpopulate(val, "Type", &a.Type)
  2042  			delete(rawMsg, key)
  2043  		}
  2044  		if err != nil {
  2045  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2046  		}
  2047  	}
  2048  	return nil
  2049  }
  2050  
  2051  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayFrontendPortPropertiesFormat.
  2052  func (a ApplicationGatewayFrontendPortPropertiesFormat) MarshalJSON() ([]byte, error) {
  2053  	objectMap := make(map[string]any)
  2054  	populate(objectMap, "port", a.Port)
  2055  	populate(objectMap, "provisioningState", a.ProvisioningState)
  2056  	return json.Marshal(objectMap)
  2057  }
  2058  
  2059  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayFrontendPortPropertiesFormat.
  2060  func (a *ApplicationGatewayFrontendPortPropertiesFormat) UnmarshalJSON(data []byte) error {
  2061  	var rawMsg map[string]json.RawMessage
  2062  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  2063  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2064  	}
  2065  	for key, val := range rawMsg {
  2066  		var err error
  2067  		switch key {
  2068  		case "port":
  2069  			err = unpopulate(val, "Port", &a.Port)
  2070  			delete(rawMsg, key)
  2071  		case "provisioningState":
  2072  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  2073  			delete(rawMsg, key)
  2074  		}
  2075  		if err != nil {
  2076  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2077  		}
  2078  	}
  2079  	return nil
  2080  }
  2081  
  2082  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayGlobalConfiguration.
  2083  func (a ApplicationGatewayGlobalConfiguration) MarshalJSON() ([]byte, error) {
  2084  	objectMap := make(map[string]any)
  2085  	populate(objectMap, "enableRequestBuffering", a.EnableRequestBuffering)
  2086  	populate(objectMap, "enableResponseBuffering", a.EnableResponseBuffering)
  2087  	return json.Marshal(objectMap)
  2088  }
  2089  
  2090  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayGlobalConfiguration.
  2091  func (a *ApplicationGatewayGlobalConfiguration) UnmarshalJSON(data []byte) error {
  2092  	var rawMsg map[string]json.RawMessage
  2093  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  2094  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2095  	}
  2096  	for key, val := range rawMsg {
  2097  		var err error
  2098  		switch key {
  2099  		case "enableRequestBuffering":
  2100  			err = unpopulate(val, "EnableRequestBuffering", &a.EnableRequestBuffering)
  2101  			delete(rawMsg, key)
  2102  		case "enableResponseBuffering":
  2103  			err = unpopulate(val, "EnableResponseBuffering", &a.EnableResponseBuffering)
  2104  			delete(rawMsg, key)
  2105  		}
  2106  		if err != nil {
  2107  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2108  		}
  2109  	}
  2110  	return nil
  2111  }
  2112  
  2113  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayHTTPListener.
  2114  func (a ApplicationGatewayHTTPListener) MarshalJSON() ([]byte, error) {
  2115  	objectMap := make(map[string]any)
  2116  	populate(objectMap, "etag", a.Etag)
  2117  	populate(objectMap, "id", a.ID)
  2118  	populate(objectMap, "name", a.Name)
  2119  	populate(objectMap, "properties", a.Properties)
  2120  	populate(objectMap, "type", a.Type)
  2121  	return json.Marshal(objectMap)
  2122  }
  2123  
  2124  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayHTTPListener.
  2125  func (a *ApplicationGatewayHTTPListener) UnmarshalJSON(data []byte) error {
  2126  	var rawMsg map[string]json.RawMessage
  2127  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  2128  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2129  	}
  2130  	for key, val := range rawMsg {
  2131  		var err error
  2132  		switch key {
  2133  		case "etag":
  2134  			err = unpopulate(val, "Etag", &a.Etag)
  2135  			delete(rawMsg, key)
  2136  		case "id":
  2137  			err = unpopulate(val, "ID", &a.ID)
  2138  			delete(rawMsg, key)
  2139  		case "name":
  2140  			err = unpopulate(val, "Name", &a.Name)
  2141  			delete(rawMsg, key)
  2142  		case "properties":
  2143  			err = unpopulate(val, "Properties", &a.Properties)
  2144  			delete(rawMsg, key)
  2145  		case "type":
  2146  			err = unpopulate(val, "Type", &a.Type)
  2147  			delete(rawMsg, key)
  2148  		}
  2149  		if err != nil {
  2150  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2151  		}
  2152  	}
  2153  	return nil
  2154  }
  2155  
  2156  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayHTTPListenerPropertiesFormat.
  2157  func (a ApplicationGatewayHTTPListenerPropertiesFormat) MarshalJSON() ([]byte, error) {
  2158  	objectMap := make(map[string]any)
  2159  	populate(objectMap, "customErrorConfigurations", a.CustomErrorConfigurations)
  2160  	populate(objectMap, "firewallPolicy", a.FirewallPolicy)
  2161  	populate(objectMap, "frontendIPConfiguration", a.FrontendIPConfiguration)
  2162  	populate(objectMap, "frontendPort", a.FrontendPort)
  2163  	populate(objectMap, "hostName", a.HostName)
  2164  	populate(objectMap, "hostNames", a.HostNames)
  2165  	populate(objectMap, "protocol", a.Protocol)
  2166  	populate(objectMap, "provisioningState", a.ProvisioningState)
  2167  	populate(objectMap, "requireServerNameIndication", a.RequireServerNameIndication)
  2168  	populate(objectMap, "sslCertificate", a.SSLCertificate)
  2169  	populate(objectMap, "sslProfile", a.SSLProfile)
  2170  	return json.Marshal(objectMap)
  2171  }
  2172  
  2173  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayHTTPListenerPropertiesFormat.
  2174  func (a *ApplicationGatewayHTTPListenerPropertiesFormat) UnmarshalJSON(data []byte) error {
  2175  	var rawMsg map[string]json.RawMessage
  2176  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  2177  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2178  	}
  2179  	for key, val := range rawMsg {
  2180  		var err error
  2181  		switch key {
  2182  		case "customErrorConfigurations":
  2183  			err = unpopulate(val, "CustomErrorConfigurations", &a.CustomErrorConfigurations)
  2184  			delete(rawMsg, key)
  2185  		case "firewallPolicy":
  2186  			err = unpopulate(val, "FirewallPolicy", &a.FirewallPolicy)
  2187  			delete(rawMsg, key)
  2188  		case "frontendIPConfiguration":
  2189  			err = unpopulate(val, "FrontendIPConfiguration", &a.FrontendIPConfiguration)
  2190  			delete(rawMsg, key)
  2191  		case "frontendPort":
  2192  			err = unpopulate(val, "FrontendPort", &a.FrontendPort)
  2193  			delete(rawMsg, key)
  2194  		case "hostName":
  2195  			err = unpopulate(val, "HostName", &a.HostName)
  2196  			delete(rawMsg, key)
  2197  		case "hostNames":
  2198  			err = unpopulate(val, "HostNames", &a.HostNames)
  2199  			delete(rawMsg, key)
  2200  		case "protocol":
  2201  			err = unpopulate(val, "Protocol", &a.Protocol)
  2202  			delete(rawMsg, key)
  2203  		case "provisioningState":
  2204  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  2205  			delete(rawMsg, key)
  2206  		case "requireServerNameIndication":
  2207  			err = unpopulate(val, "RequireServerNameIndication", &a.RequireServerNameIndication)
  2208  			delete(rawMsg, key)
  2209  		case "sslCertificate":
  2210  			err = unpopulate(val, "SSLCertificate", &a.SSLCertificate)
  2211  			delete(rawMsg, key)
  2212  		case "sslProfile":
  2213  			err = unpopulate(val, "SSLProfile", &a.SSLProfile)
  2214  			delete(rawMsg, key)
  2215  		}
  2216  		if err != nil {
  2217  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2218  		}
  2219  	}
  2220  	return nil
  2221  }
  2222  
  2223  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayHeaderConfiguration.
  2224  func (a ApplicationGatewayHeaderConfiguration) MarshalJSON() ([]byte, error) {
  2225  	objectMap := make(map[string]any)
  2226  	populate(objectMap, "headerName", a.HeaderName)
  2227  	populate(objectMap, "headerValue", a.HeaderValue)
  2228  	populate(objectMap, "headerValueMatcher", a.HeaderValueMatcher)
  2229  	return json.Marshal(objectMap)
  2230  }
  2231  
  2232  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayHeaderConfiguration.
  2233  func (a *ApplicationGatewayHeaderConfiguration) UnmarshalJSON(data []byte) error {
  2234  	var rawMsg map[string]json.RawMessage
  2235  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  2236  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2237  	}
  2238  	for key, val := range rawMsg {
  2239  		var err error
  2240  		switch key {
  2241  		case "headerName":
  2242  			err = unpopulate(val, "HeaderName", &a.HeaderName)
  2243  			delete(rawMsg, key)
  2244  		case "headerValue":
  2245  			err = unpopulate(val, "HeaderValue", &a.HeaderValue)
  2246  			delete(rawMsg, key)
  2247  		case "headerValueMatcher":
  2248  			err = unpopulate(val, "HeaderValueMatcher", &a.HeaderValueMatcher)
  2249  			delete(rawMsg, key)
  2250  		}
  2251  		if err != nil {
  2252  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2253  		}
  2254  	}
  2255  	return nil
  2256  }
  2257  
  2258  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayIPConfiguration.
  2259  func (a ApplicationGatewayIPConfiguration) MarshalJSON() ([]byte, error) {
  2260  	objectMap := make(map[string]any)
  2261  	populate(objectMap, "etag", a.Etag)
  2262  	populate(objectMap, "id", a.ID)
  2263  	populate(objectMap, "name", a.Name)
  2264  	populate(objectMap, "properties", a.Properties)
  2265  	populate(objectMap, "type", a.Type)
  2266  	return json.Marshal(objectMap)
  2267  }
  2268  
  2269  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayIPConfiguration.
  2270  func (a *ApplicationGatewayIPConfiguration) UnmarshalJSON(data []byte) error {
  2271  	var rawMsg map[string]json.RawMessage
  2272  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  2273  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2274  	}
  2275  	for key, val := range rawMsg {
  2276  		var err error
  2277  		switch key {
  2278  		case "etag":
  2279  			err = unpopulate(val, "Etag", &a.Etag)
  2280  			delete(rawMsg, key)
  2281  		case "id":
  2282  			err = unpopulate(val, "ID", &a.ID)
  2283  			delete(rawMsg, key)
  2284  		case "name":
  2285  			err = unpopulate(val, "Name", &a.Name)
  2286  			delete(rawMsg, key)
  2287  		case "properties":
  2288  			err = unpopulate(val, "Properties", &a.Properties)
  2289  			delete(rawMsg, key)
  2290  		case "type":
  2291  			err = unpopulate(val, "Type", &a.Type)
  2292  			delete(rawMsg, key)
  2293  		}
  2294  		if err != nil {
  2295  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2296  		}
  2297  	}
  2298  	return nil
  2299  }
  2300  
  2301  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayIPConfigurationPropertiesFormat.
  2302  func (a ApplicationGatewayIPConfigurationPropertiesFormat) MarshalJSON() ([]byte, error) {
  2303  	objectMap := make(map[string]any)
  2304  	populate(objectMap, "provisioningState", a.ProvisioningState)
  2305  	populate(objectMap, "subnet", a.Subnet)
  2306  	return json.Marshal(objectMap)
  2307  }
  2308  
  2309  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayIPConfigurationPropertiesFormat.
  2310  func (a *ApplicationGatewayIPConfigurationPropertiesFormat) UnmarshalJSON(data []byte) error {
  2311  	var rawMsg map[string]json.RawMessage
  2312  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  2313  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2314  	}
  2315  	for key, val := range rawMsg {
  2316  		var err error
  2317  		switch key {
  2318  		case "provisioningState":
  2319  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  2320  			delete(rawMsg, key)
  2321  		case "subnet":
  2322  			err = unpopulate(val, "Subnet", &a.Subnet)
  2323  			delete(rawMsg, key)
  2324  		}
  2325  		if err != nil {
  2326  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2327  		}
  2328  	}
  2329  	return nil
  2330  }
  2331  
  2332  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayListResult.
  2333  func (a ApplicationGatewayListResult) MarshalJSON() ([]byte, error) {
  2334  	objectMap := make(map[string]any)
  2335  	populate(objectMap, "nextLink", a.NextLink)
  2336  	populate(objectMap, "value", a.Value)
  2337  	return json.Marshal(objectMap)
  2338  }
  2339  
  2340  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayListResult.
  2341  func (a *ApplicationGatewayListResult) UnmarshalJSON(data []byte) error {
  2342  	var rawMsg map[string]json.RawMessage
  2343  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  2344  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2345  	}
  2346  	for key, val := range rawMsg {
  2347  		var err error
  2348  		switch key {
  2349  		case "nextLink":
  2350  			err = unpopulate(val, "NextLink", &a.NextLink)
  2351  			delete(rawMsg, key)
  2352  		case "value":
  2353  			err = unpopulate(val, "Value", &a.Value)
  2354  			delete(rawMsg, key)
  2355  		}
  2356  		if err != nil {
  2357  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2358  		}
  2359  	}
  2360  	return nil
  2361  }
  2362  
  2363  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayListener.
  2364  func (a ApplicationGatewayListener) MarshalJSON() ([]byte, error) {
  2365  	objectMap := make(map[string]any)
  2366  	populate(objectMap, "etag", a.Etag)
  2367  	populate(objectMap, "id", a.ID)
  2368  	populate(objectMap, "name", a.Name)
  2369  	populate(objectMap, "properties", a.Properties)
  2370  	populate(objectMap, "type", a.Type)
  2371  	return json.Marshal(objectMap)
  2372  }
  2373  
  2374  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayListener.
  2375  func (a *ApplicationGatewayListener) UnmarshalJSON(data []byte) error {
  2376  	var rawMsg map[string]json.RawMessage
  2377  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  2378  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2379  	}
  2380  	for key, val := range rawMsg {
  2381  		var err error
  2382  		switch key {
  2383  		case "etag":
  2384  			err = unpopulate(val, "Etag", &a.Etag)
  2385  			delete(rawMsg, key)
  2386  		case "id":
  2387  			err = unpopulate(val, "ID", &a.ID)
  2388  			delete(rawMsg, key)
  2389  		case "name":
  2390  			err = unpopulate(val, "Name", &a.Name)
  2391  			delete(rawMsg, key)
  2392  		case "properties":
  2393  			err = unpopulate(val, "Properties", &a.Properties)
  2394  			delete(rawMsg, key)
  2395  		case "type":
  2396  			err = unpopulate(val, "Type", &a.Type)
  2397  			delete(rawMsg, key)
  2398  		}
  2399  		if err != nil {
  2400  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2401  		}
  2402  	}
  2403  	return nil
  2404  }
  2405  
  2406  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayListenerPropertiesFormat.
  2407  func (a ApplicationGatewayListenerPropertiesFormat) MarshalJSON() ([]byte, error) {
  2408  	objectMap := make(map[string]any)
  2409  	populate(objectMap, "frontendIPConfiguration", a.FrontendIPConfiguration)
  2410  	populate(objectMap, "frontendPort", a.FrontendPort)
  2411  	populate(objectMap, "hostNames", a.HostNames)
  2412  	populate(objectMap, "protocol", a.Protocol)
  2413  	populate(objectMap, "provisioningState", a.ProvisioningState)
  2414  	populate(objectMap, "sslCertificate", a.SSLCertificate)
  2415  	populate(objectMap, "sslProfile", a.SSLProfile)
  2416  	return json.Marshal(objectMap)
  2417  }
  2418  
  2419  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayListenerPropertiesFormat.
  2420  func (a *ApplicationGatewayListenerPropertiesFormat) UnmarshalJSON(data []byte) error {
  2421  	var rawMsg map[string]json.RawMessage
  2422  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  2423  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2424  	}
  2425  	for key, val := range rawMsg {
  2426  		var err error
  2427  		switch key {
  2428  		case "frontendIPConfiguration":
  2429  			err = unpopulate(val, "FrontendIPConfiguration", &a.FrontendIPConfiguration)
  2430  			delete(rawMsg, key)
  2431  		case "frontendPort":
  2432  			err = unpopulate(val, "FrontendPort", &a.FrontendPort)
  2433  			delete(rawMsg, key)
  2434  		case "hostNames":
  2435  			err = unpopulate(val, "HostNames", &a.HostNames)
  2436  			delete(rawMsg, key)
  2437  		case "protocol":
  2438  			err = unpopulate(val, "Protocol", &a.Protocol)
  2439  			delete(rawMsg, key)
  2440  		case "provisioningState":
  2441  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  2442  			delete(rawMsg, key)
  2443  		case "sslCertificate":
  2444  			err = unpopulate(val, "SSLCertificate", &a.SSLCertificate)
  2445  			delete(rawMsg, key)
  2446  		case "sslProfile":
  2447  			err = unpopulate(val, "SSLProfile", &a.SSLProfile)
  2448  			delete(rawMsg, key)
  2449  		}
  2450  		if err != nil {
  2451  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2452  		}
  2453  	}
  2454  	return nil
  2455  }
  2456  
  2457  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayLoadDistributionPolicy.
  2458  func (a ApplicationGatewayLoadDistributionPolicy) MarshalJSON() ([]byte, error) {
  2459  	objectMap := make(map[string]any)
  2460  	populate(objectMap, "etag", a.Etag)
  2461  	populate(objectMap, "id", a.ID)
  2462  	populate(objectMap, "name", a.Name)
  2463  	populate(objectMap, "properties", a.Properties)
  2464  	populate(objectMap, "type", a.Type)
  2465  	return json.Marshal(objectMap)
  2466  }
  2467  
  2468  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayLoadDistributionPolicy.
  2469  func (a *ApplicationGatewayLoadDistributionPolicy) UnmarshalJSON(data []byte) error {
  2470  	var rawMsg map[string]json.RawMessage
  2471  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  2472  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2473  	}
  2474  	for key, val := range rawMsg {
  2475  		var err error
  2476  		switch key {
  2477  		case "etag":
  2478  			err = unpopulate(val, "Etag", &a.Etag)
  2479  			delete(rawMsg, key)
  2480  		case "id":
  2481  			err = unpopulate(val, "ID", &a.ID)
  2482  			delete(rawMsg, key)
  2483  		case "name":
  2484  			err = unpopulate(val, "Name", &a.Name)
  2485  			delete(rawMsg, key)
  2486  		case "properties":
  2487  			err = unpopulate(val, "Properties", &a.Properties)
  2488  			delete(rawMsg, key)
  2489  		case "type":
  2490  			err = unpopulate(val, "Type", &a.Type)
  2491  			delete(rawMsg, key)
  2492  		}
  2493  		if err != nil {
  2494  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2495  		}
  2496  	}
  2497  	return nil
  2498  }
  2499  
  2500  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayLoadDistributionPolicyPropertiesFormat.
  2501  func (a ApplicationGatewayLoadDistributionPolicyPropertiesFormat) MarshalJSON() ([]byte, error) {
  2502  	objectMap := make(map[string]any)
  2503  	populate(objectMap, "loadDistributionAlgorithm", a.LoadDistributionAlgorithm)
  2504  	populate(objectMap, "loadDistributionTargets", a.LoadDistributionTargets)
  2505  	populate(objectMap, "provisioningState", a.ProvisioningState)
  2506  	return json.Marshal(objectMap)
  2507  }
  2508  
  2509  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayLoadDistributionPolicyPropertiesFormat.
  2510  func (a *ApplicationGatewayLoadDistributionPolicyPropertiesFormat) UnmarshalJSON(data []byte) error {
  2511  	var rawMsg map[string]json.RawMessage
  2512  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  2513  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2514  	}
  2515  	for key, val := range rawMsg {
  2516  		var err error
  2517  		switch key {
  2518  		case "loadDistributionAlgorithm":
  2519  			err = unpopulate(val, "LoadDistributionAlgorithm", &a.LoadDistributionAlgorithm)
  2520  			delete(rawMsg, key)
  2521  		case "loadDistributionTargets":
  2522  			err = unpopulate(val, "LoadDistributionTargets", &a.LoadDistributionTargets)
  2523  			delete(rawMsg, key)
  2524  		case "provisioningState":
  2525  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  2526  			delete(rawMsg, key)
  2527  		}
  2528  		if err != nil {
  2529  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2530  		}
  2531  	}
  2532  	return nil
  2533  }
  2534  
  2535  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayLoadDistributionTarget.
  2536  func (a ApplicationGatewayLoadDistributionTarget) MarshalJSON() ([]byte, error) {
  2537  	objectMap := make(map[string]any)
  2538  	populate(objectMap, "etag", a.Etag)
  2539  	populate(objectMap, "id", a.ID)
  2540  	populate(objectMap, "name", a.Name)
  2541  	populate(objectMap, "properties", a.Properties)
  2542  	populate(objectMap, "type", a.Type)
  2543  	return json.Marshal(objectMap)
  2544  }
  2545  
  2546  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayLoadDistributionTarget.
  2547  func (a *ApplicationGatewayLoadDistributionTarget) UnmarshalJSON(data []byte) error {
  2548  	var rawMsg map[string]json.RawMessage
  2549  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  2550  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2551  	}
  2552  	for key, val := range rawMsg {
  2553  		var err error
  2554  		switch key {
  2555  		case "etag":
  2556  			err = unpopulate(val, "Etag", &a.Etag)
  2557  			delete(rawMsg, key)
  2558  		case "id":
  2559  			err = unpopulate(val, "ID", &a.ID)
  2560  			delete(rawMsg, key)
  2561  		case "name":
  2562  			err = unpopulate(val, "Name", &a.Name)
  2563  			delete(rawMsg, key)
  2564  		case "properties":
  2565  			err = unpopulate(val, "Properties", &a.Properties)
  2566  			delete(rawMsg, key)
  2567  		case "type":
  2568  			err = unpopulate(val, "Type", &a.Type)
  2569  			delete(rawMsg, key)
  2570  		}
  2571  		if err != nil {
  2572  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2573  		}
  2574  	}
  2575  	return nil
  2576  }
  2577  
  2578  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayLoadDistributionTargetPropertiesFormat.
  2579  func (a ApplicationGatewayLoadDistributionTargetPropertiesFormat) MarshalJSON() ([]byte, error) {
  2580  	objectMap := make(map[string]any)
  2581  	populate(objectMap, "backendAddressPool", a.BackendAddressPool)
  2582  	populate(objectMap, "weightPerServer", a.WeightPerServer)
  2583  	return json.Marshal(objectMap)
  2584  }
  2585  
  2586  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayLoadDistributionTargetPropertiesFormat.
  2587  func (a *ApplicationGatewayLoadDistributionTargetPropertiesFormat) UnmarshalJSON(data []byte) error {
  2588  	var rawMsg map[string]json.RawMessage
  2589  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  2590  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2591  	}
  2592  	for key, val := range rawMsg {
  2593  		var err error
  2594  		switch key {
  2595  		case "backendAddressPool":
  2596  			err = unpopulate(val, "BackendAddressPool", &a.BackendAddressPool)
  2597  			delete(rawMsg, key)
  2598  		case "weightPerServer":
  2599  			err = unpopulate(val, "WeightPerServer", &a.WeightPerServer)
  2600  			delete(rawMsg, key)
  2601  		}
  2602  		if err != nil {
  2603  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2604  		}
  2605  	}
  2606  	return nil
  2607  }
  2608  
  2609  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayOnDemandProbe.
  2610  func (a ApplicationGatewayOnDemandProbe) MarshalJSON() ([]byte, error) {
  2611  	objectMap := make(map[string]any)
  2612  	populate(objectMap, "backendAddressPool", a.BackendAddressPool)
  2613  	populate(objectMap, "backendHttpSettings", a.BackendHTTPSettings)
  2614  	populate(objectMap, "host", a.Host)
  2615  	populate(objectMap, "match", a.Match)
  2616  	populate(objectMap, "path", a.Path)
  2617  	populate(objectMap, "pickHostNameFromBackendHttpSettings", a.PickHostNameFromBackendHTTPSettings)
  2618  	populate(objectMap, "protocol", a.Protocol)
  2619  	populate(objectMap, "timeout", a.Timeout)
  2620  	return json.Marshal(objectMap)
  2621  }
  2622  
  2623  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayOnDemandProbe.
  2624  func (a *ApplicationGatewayOnDemandProbe) UnmarshalJSON(data []byte) error {
  2625  	var rawMsg map[string]json.RawMessage
  2626  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  2627  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2628  	}
  2629  	for key, val := range rawMsg {
  2630  		var err error
  2631  		switch key {
  2632  		case "backendAddressPool":
  2633  			err = unpopulate(val, "BackendAddressPool", &a.BackendAddressPool)
  2634  			delete(rawMsg, key)
  2635  		case "backendHttpSettings":
  2636  			err = unpopulate(val, "BackendHTTPSettings", &a.BackendHTTPSettings)
  2637  			delete(rawMsg, key)
  2638  		case "host":
  2639  			err = unpopulate(val, "Host", &a.Host)
  2640  			delete(rawMsg, key)
  2641  		case "match":
  2642  			err = unpopulate(val, "Match", &a.Match)
  2643  			delete(rawMsg, key)
  2644  		case "path":
  2645  			err = unpopulate(val, "Path", &a.Path)
  2646  			delete(rawMsg, key)
  2647  		case "pickHostNameFromBackendHttpSettings":
  2648  			err = unpopulate(val, "PickHostNameFromBackendHTTPSettings", &a.PickHostNameFromBackendHTTPSettings)
  2649  			delete(rawMsg, key)
  2650  		case "protocol":
  2651  			err = unpopulate(val, "Protocol", &a.Protocol)
  2652  			delete(rawMsg, key)
  2653  		case "timeout":
  2654  			err = unpopulate(val, "Timeout", &a.Timeout)
  2655  			delete(rawMsg, key)
  2656  		}
  2657  		if err != nil {
  2658  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2659  		}
  2660  	}
  2661  	return nil
  2662  }
  2663  
  2664  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayPathRule.
  2665  func (a ApplicationGatewayPathRule) MarshalJSON() ([]byte, error) {
  2666  	objectMap := make(map[string]any)
  2667  	populate(objectMap, "etag", a.Etag)
  2668  	populate(objectMap, "id", a.ID)
  2669  	populate(objectMap, "name", a.Name)
  2670  	populate(objectMap, "properties", a.Properties)
  2671  	populate(objectMap, "type", a.Type)
  2672  	return json.Marshal(objectMap)
  2673  }
  2674  
  2675  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayPathRule.
  2676  func (a *ApplicationGatewayPathRule) UnmarshalJSON(data []byte) error {
  2677  	var rawMsg map[string]json.RawMessage
  2678  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  2679  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2680  	}
  2681  	for key, val := range rawMsg {
  2682  		var err error
  2683  		switch key {
  2684  		case "etag":
  2685  			err = unpopulate(val, "Etag", &a.Etag)
  2686  			delete(rawMsg, key)
  2687  		case "id":
  2688  			err = unpopulate(val, "ID", &a.ID)
  2689  			delete(rawMsg, key)
  2690  		case "name":
  2691  			err = unpopulate(val, "Name", &a.Name)
  2692  			delete(rawMsg, key)
  2693  		case "properties":
  2694  			err = unpopulate(val, "Properties", &a.Properties)
  2695  			delete(rawMsg, key)
  2696  		case "type":
  2697  			err = unpopulate(val, "Type", &a.Type)
  2698  			delete(rawMsg, key)
  2699  		}
  2700  		if err != nil {
  2701  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2702  		}
  2703  	}
  2704  	return nil
  2705  }
  2706  
  2707  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayPathRulePropertiesFormat.
  2708  func (a ApplicationGatewayPathRulePropertiesFormat) MarshalJSON() ([]byte, error) {
  2709  	objectMap := make(map[string]any)
  2710  	populate(objectMap, "backendAddressPool", a.BackendAddressPool)
  2711  	populate(objectMap, "backendHttpSettings", a.BackendHTTPSettings)
  2712  	populate(objectMap, "firewallPolicy", a.FirewallPolicy)
  2713  	populate(objectMap, "loadDistributionPolicy", a.LoadDistributionPolicy)
  2714  	populate(objectMap, "paths", a.Paths)
  2715  	populate(objectMap, "provisioningState", a.ProvisioningState)
  2716  	populate(objectMap, "redirectConfiguration", a.RedirectConfiguration)
  2717  	populate(objectMap, "rewriteRuleSet", a.RewriteRuleSet)
  2718  	return json.Marshal(objectMap)
  2719  }
  2720  
  2721  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayPathRulePropertiesFormat.
  2722  func (a *ApplicationGatewayPathRulePropertiesFormat) UnmarshalJSON(data []byte) error {
  2723  	var rawMsg map[string]json.RawMessage
  2724  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  2725  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2726  	}
  2727  	for key, val := range rawMsg {
  2728  		var err error
  2729  		switch key {
  2730  		case "backendAddressPool":
  2731  			err = unpopulate(val, "BackendAddressPool", &a.BackendAddressPool)
  2732  			delete(rawMsg, key)
  2733  		case "backendHttpSettings":
  2734  			err = unpopulate(val, "BackendHTTPSettings", &a.BackendHTTPSettings)
  2735  			delete(rawMsg, key)
  2736  		case "firewallPolicy":
  2737  			err = unpopulate(val, "FirewallPolicy", &a.FirewallPolicy)
  2738  			delete(rawMsg, key)
  2739  		case "loadDistributionPolicy":
  2740  			err = unpopulate(val, "LoadDistributionPolicy", &a.LoadDistributionPolicy)
  2741  			delete(rawMsg, key)
  2742  		case "paths":
  2743  			err = unpopulate(val, "Paths", &a.Paths)
  2744  			delete(rawMsg, key)
  2745  		case "provisioningState":
  2746  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  2747  			delete(rawMsg, key)
  2748  		case "redirectConfiguration":
  2749  			err = unpopulate(val, "RedirectConfiguration", &a.RedirectConfiguration)
  2750  			delete(rawMsg, key)
  2751  		case "rewriteRuleSet":
  2752  			err = unpopulate(val, "RewriteRuleSet", &a.RewriteRuleSet)
  2753  			delete(rawMsg, key)
  2754  		}
  2755  		if err != nil {
  2756  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2757  		}
  2758  	}
  2759  	return nil
  2760  }
  2761  
  2762  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayPrivateEndpointConnection.
  2763  func (a ApplicationGatewayPrivateEndpointConnection) MarshalJSON() ([]byte, error) {
  2764  	objectMap := make(map[string]any)
  2765  	populate(objectMap, "etag", a.Etag)
  2766  	populate(objectMap, "id", a.ID)
  2767  	populate(objectMap, "name", a.Name)
  2768  	populate(objectMap, "properties", a.Properties)
  2769  	populate(objectMap, "type", a.Type)
  2770  	return json.Marshal(objectMap)
  2771  }
  2772  
  2773  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayPrivateEndpointConnection.
  2774  func (a *ApplicationGatewayPrivateEndpointConnection) UnmarshalJSON(data []byte) error {
  2775  	var rawMsg map[string]json.RawMessage
  2776  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  2777  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2778  	}
  2779  	for key, val := range rawMsg {
  2780  		var err error
  2781  		switch key {
  2782  		case "etag":
  2783  			err = unpopulate(val, "Etag", &a.Etag)
  2784  			delete(rawMsg, key)
  2785  		case "id":
  2786  			err = unpopulate(val, "ID", &a.ID)
  2787  			delete(rawMsg, key)
  2788  		case "name":
  2789  			err = unpopulate(val, "Name", &a.Name)
  2790  			delete(rawMsg, key)
  2791  		case "properties":
  2792  			err = unpopulate(val, "Properties", &a.Properties)
  2793  			delete(rawMsg, key)
  2794  		case "type":
  2795  			err = unpopulate(val, "Type", &a.Type)
  2796  			delete(rawMsg, key)
  2797  		}
  2798  		if err != nil {
  2799  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2800  		}
  2801  	}
  2802  	return nil
  2803  }
  2804  
  2805  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayPrivateEndpointConnectionListResult.
  2806  func (a ApplicationGatewayPrivateEndpointConnectionListResult) MarshalJSON() ([]byte, error) {
  2807  	objectMap := make(map[string]any)
  2808  	populate(objectMap, "nextLink", a.NextLink)
  2809  	populate(objectMap, "value", a.Value)
  2810  	return json.Marshal(objectMap)
  2811  }
  2812  
  2813  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayPrivateEndpointConnectionListResult.
  2814  func (a *ApplicationGatewayPrivateEndpointConnectionListResult) UnmarshalJSON(data []byte) error {
  2815  	var rawMsg map[string]json.RawMessage
  2816  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  2817  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2818  	}
  2819  	for key, val := range rawMsg {
  2820  		var err error
  2821  		switch key {
  2822  		case "nextLink":
  2823  			err = unpopulate(val, "NextLink", &a.NextLink)
  2824  			delete(rawMsg, key)
  2825  		case "value":
  2826  			err = unpopulate(val, "Value", &a.Value)
  2827  			delete(rawMsg, key)
  2828  		}
  2829  		if err != nil {
  2830  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2831  		}
  2832  	}
  2833  	return nil
  2834  }
  2835  
  2836  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayPrivateEndpointConnectionProperties.
  2837  func (a ApplicationGatewayPrivateEndpointConnectionProperties) MarshalJSON() ([]byte, error) {
  2838  	objectMap := make(map[string]any)
  2839  	populate(objectMap, "linkIdentifier", a.LinkIdentifier)
  2840  	populate(objectMap, "privateEndpoint", a.PrivateEndpoint)
  2841  	populate(objectMap, "privateLinkServiceConnectionState", a.PrivateLinkServiceConnectionState)
  2842  	populate(objectMap, "provisioningState", a.ProvisioningState)
  2843  	return json.Marshal(objectMap)
  2844  }
  2845  
  2846  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayPrivateEndpointConnectionProperties.
  2847  func (a *ApplicationGatewayPrivateEndpointConnectionProperties) UnmarshalJSON(data []byte) error {
  2848  	var rawMsg map[string]json.RawMessage
  2849  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  2850  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2851  	}
  2852  	for key, val := range rawMsg {
  2853  		var err error
  2854  		switch key {
  2855  		case "linkIdentifier":
  2856  			err = unpopulate(val, "LinkIdentifier", &a.LinkIdentifier)
  2857  			delete(rawMsg, key)
  2858  		case "privateEndpoint":
  2859  			err = unpopulate(val, "PrivateEndpoint", &a.PrivateEndpoint)
  2860  			delete(rawMsg, key)
  2861  		case "privateLinkServiceConnectionState":
  2862  			err = unpopulate(val, "PrivateLinkServiceConnectionState", &a.PrivateLinkServiceConnectionState)
  2863  			delete(rawMsg, key)
  2864  		case "provisioningState":
  2865  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  2866  			delete(rawMsg, key)
  2867  		}
  2868  		if err != nil {
  2869  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2870  		}
  2871  	}
  2872  	return nil
  2873  }
  2874  
  2875  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayPrivateLinkConfiguration.
  2876  func (a ApplicationGatewayPrivateLinkConfiguration) MarshalJSON() ([]byte, error) {
  2877  	objectMap := make(map[string]any)
  2878  	populate(objectMap, "etag", a.Etag)
  2879  	populate(objectMap, "id", a.ID)
  2880  	populate(objectMap, "name", a.Name)
  2881  	populate(objectMap, "properties", a.Properties)
  2882  	populate(objectMap, "type", a.Type)
  2883  	return json.Marshal(objectMap)
  2884  }
  2885  
  2886  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayPrivateLinkConfiguration.
  2887  func (a *ApplicationGatewayPrivateLinkConfiguration) UnmarshalJSON(data []byte) error {
  2888  	var rawMsg map[string]json.RawMessage
  2889  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  2890  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2891  	}
  2892  	for key, val := range rawMsg {
  2893  		var err error
  2894  		switch key {
  2895  		case "etag":
  2896  			err = unpopulate(val, "Etag", &a.Etag)
  2897  			delete(rawMsg, key)
  2898  		case "id":
  2899  			err = unpopulate(val, "ID", &a.ID)
  2900  			delete(rawMsg, key)
  2901  		case "name":
  2902  			err = unpopulate(val, "Name", &a.Name)
  2903  			delete(rawMsg, key)
  2904  		case "properties":
  2905  			err = unpopulate(val, "Properties", &a.Properties)
  2906  			delete(rawMsg, key)
  2907  		case "type":
  2908  			err = unpopulate(val, "Type", &a.Type)
  2909  			delete(rawMsg, key)
  2910  		}
  2911  		if err != nil {
  2912  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2913  		}
  2914  	}
  2915  	return nil
  2916  }
  2917  
  2918  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayPrivateLinkConfigurationProperties.
  2919  func (a ApplicationGatewayPrivateLinkConfigurationProperties) MarshalJSON() ([]byte, error) {
  2920  	objectMap := make(map[string]any)
  2921  	populate(objectMap, "ipConfigurations", a.IPConfigurations)
  2922  	populate(objectMap, "provisioningState", a.ProvisioningState)
  2923  	return json.Marshal(objectMap)
  2924  }
  2925  
  2926  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayPrivateLinkConfigurationProperties.
  2927  func (a *ApplicationGatewayPrivateLinkConfigurationProperties) UnmarshalJSON(data []byte) error {
  2928  	var rawMsg map[string]json.RawMessage
  2929  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  2930  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2931  	}
  2932  	for key, val := range rawMsg {
  2933  		var err error
  2934  		switch key {
  2935  		case "ipConfigurations":
  2936  			err = unpopulate(val, "IPConfigurations", &a.IPConfigurations)
  2937  			delete(rawMsg, key)
  2938  		case "provisioningState":
  2939  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  2940  			delete(rawMsg, key)
  2941  		}
  2942  		if err != nil {
  2943  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2944  		}
  2945  	}
  2946  	return nil
  2947  }
  2948  
  2949  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayPrivateLinkIPConfiguration.
  2950  func (a ApplicationGatewayPrivateLinkIPConfiguration) MarshalJSON() ([]byte, error) {
  2951  	objectMap := make(map[string]any)
  2952  	populate(objectMap, "etag", a.Etag)
  2953  	populate(objectMap, "id", a.ID)
  2954  	populate(objectMap, "name", a.Name)
  2955  	populate(objectMap, "properties", a.Properties)
  2956  	populate(objectMap, "type", a.Type)
  2957  	return json.Marshal(objectMap)
  2958  }
  2959  
  2960  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayPrivateLinkIPConfiguration.
  2961  func (a *ApplicationGatewayPrivateLinkIPConfiguration) UnmarshalJSON(data []byte) error {
  2962  	var rawMsg map[string]json.RawMessage
  2963  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  2964  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2965  	}
  2966  	for key, val := range rawMsg {
  2967  		var err error
  2968  		switch key {
  2969  		case "etag":
  2970  			err = unpopulate(val, "Etag", &a.Etag)
  2971  			delete(rawMsg, key)
  2972  		case "id":
  2973  			err = unpopulate(val, "ID", &a.ID)
  2974  			delete(rawMsg, key)
  2975  		case "name":
  2976  			err = unpopulate(val, "Name", &a.Name)
  2977  			delete(rawMsg, key)
  2978  		case "properties":
  2979  			err = unpopulate(val, "Properties", &a.Properties)
  2980  			delete(rawMsg, key)
  2981  		case "type":
  2982  			err = unpopulate(val, "Type", &a.Type)
  2983  			delete(rawMsg, key)
  2984  		}
  2985  		if err != nil {
  2986  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  2987  		}
  2988  	}
  2989  	return nil
  2990  }
  2991  
  2992  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayPrivateLinkIPConfigurationProperties.
  2993  func (a ApplicationGatewayPrivateLinkIPConfigurationProperties) MarshalJSON() ([]byte, error) {
  2994  	objectMap := make(map[string]any)
  2995  	populate(objectMap, "primary", a.Primary)
  2996  	populate(objectMap, "privateIPAddress", a.PrivateIPAddress)
  2997  	populate(objectMap, "privateIPAllocationMethod", a.PrivateIPAllocationMethod)
  2998  	populate(objectMap, "provisioningState", a.ProvisioningState)
  2999  	populate(objectMap, "subnet", a.Subnet)
  3000  	return json.Marshal(objectMap)
  3001  }
  3002  
  3003  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayPrivateLinkIPConfigurationProperties.
  3004  func (a *ApplicationGatewayPrivateLinkIPConfigurationProperties) UnmarshalJSON(data []byte) error {
  3005  	var rawMsg map[string]json.RawMessage
  3006  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  3007  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3008  	}
  3009  	for key, val := range rawMsg {
  3010  		var err error
  3011  		switch key {
  3012  		case "primary":
  3013  			err = unpopulate(val, "Primary", &a.Primary)
  3014  			delete(rawMsg, key)
  3015  		case "privateIPAddress":
  3016  			err = unpopulate(val, "PrivateIPAddress", &a.PrivateIPAddress)
  3017  			delete(rawMsg, key)
  3018  		case "privateIPAllocationMethod":
  3019  			err = unpopulate(val, "PrivateIPAllocationMethod", &a.PrivateIPAllocationMethod)
  3020  			delete(rawMsg, key)
  3021  		case "provisioningState":
  3022  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  3023  			delete(rawMsg, key)
  3024  		case "subnet":
  3025  			err = unpopulate(val, "Subnet", &a.Subnet)
  3026  			delete(rawMsg, key)
  3027  		}
  3028  		if err != nil {
  3029  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3030  		}
  3031  	}
  3032  	return nil
  3033  }
  3034  
  3035  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayPrivateLinkResource.
  3036  func (a ApplicationGatewayPrivateLinkResource) MarshalJSON() ([]byte, error) {
  3037  	objectMap := make(map[string]any)
  3038  	populate(objectMap, "etag", a.Etag)
  3039  	populate(objectMap, "id", a.ID)
  3040  	populate(objectMap, "name", a.Name)
  3041  	populate(objectMap, "properties", a.Properties)
  3042  	populate(objectMap, "type", a.Type)
  3043  	return json.Marshal(objectMap)
  3044  }
  3045  
  3046  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayPrivateLinkResource.
  3047  func (a *ApplicationGatewayPrivateLinkResource) UnmarshalJSON(data []byte) error {
  3048  	var rawMsg map[string]json.RawMessage
  3049  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  3050  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3051  	}
  3052  	for key, val := range rawMsg {
  3053  		var err error
  3054  		switch key {
  3055  		case "etag":
  3056  			err = unpopulate(val, "Etag", &a.Etag)
  3057  			delete(rawMsg, key)
  3058  		case "id":
  3059  			err = unpopulate(val, "ID", &a.ID)
  3060  			delete(rawMsg, key)
  3061  		case "name":
  3062  			err = unpopulate(val, "Name", &a.Name)
  3063  			delete(rawMsg, key)
  3064  		case "properties":
  3065  			err = unpopulate(val, "Properties", &a.Properties)
  3066  			delete(rawMsg, key)
  3067  		case "type":
  3068  			err = unpopulate(val, "Type", &a.Type)
  3069  			delete(rawMsg, key)
  3070  		}
  3071  		if err != nil {
  3072  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3073  		}
  3074  	}
  3075  	return nil
  3076  }
  3077  
  3078  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayPrivateLinkResourceListResult.
  3079  func (a ApplicationGatewayPrivateLinkResourceListResult) MarshalJSON() ([]byte, error) {
  3080  	objectMap := make(map[string]any)
  3081  	populate(objectMap, "nextLink", a.NextLink)
  3082  	populate(objectMap, "value", a.Value)
  3083  	return json.Marshal(objectMap)
  3084  }
  3085  
  3086  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayPrivateLinkResourceListResult.
  3087  func (a *ApplicationGatewayPrivateLinkResourceListResult) UnmarshalJSON(data []byte) error {
  3088  	var rawMsg map[string]json.RawMessage
  3089  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  3090  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3091  	}
  3092  	for key, val := range rawMsg {
  3093  		var err error
  3094  		switch key {
  3095  		case "nextLink":
  3096  			err = unpopulate(val, "NextLink", &a.NextLink)
  3097  			delete(rawMsg, key)
  3098  		case "value":
  3099  			err = unpopulate(val, "Value", &a.Value)
  3100  			delete(rawMsg, key)
  3101  		}
  3102  		if err != nil {
  3103  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3104  		}
  3105  	}
  3106  	return nil
  3107  }
  3108  
  3109  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayPrivateLinkResourceProperties.
  3110  func (a ApplicationGatewayPrivateLinkResourceProperties) MarshalJSON() ([]byte, error) {
  3111  	objectMap := make(map[string]any)
  3112  	populate(objectMap, "groupId", a.GroupID)
  3113  	populate(objectMap, "requiredMembers", a.RequiredMembers)
  3114  	populate(objectMap, "requiredZoneNames", a.RequiredZoneNames)
  3115  	return json.Marshal(objectMap)
  3116  }
  3117  
  3118  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayPrivateLinkResourceProperties.
  3119  func (a *ApplicationGatewayPrivateLinkResourceProperties) UnmarshalJSON(data []byte) error {
  3120  	var rawMsg map[string]json.RawMessage
  3121  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  3122  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3123  	}
  3124  	for key, val := range rawMsg {
  3125  		var err error
  3126  		switch key {
  3127  		case "groupId":
  3128  			err = unpopulate(val, "GroupID", &a.GroupID)
  3129  			delete(rawMsg, key)
  3130  		case "requiredMembers":
  3131  			err = unpopulate(val, "RequiredMembers", &a.RequiredMembers)
  3132  			delete(rawMsg, key)
  3133  		case "requiredZoneNames":
  3134  			err = unpopulate(val, "RequiredZoneNames", &a.RequiredZoneNames)
  3135  			delete(rawMsg, key)
  3136  		}
  3137  		if err != nil {
  3138  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3139  		}
  3140  	}
  3141  	return nil
  3142  }
  3143  
  3144  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayProbe.
  3145  func (a ApplicationGatewayProbe) MarshalJSON() ([]byte, error) {
  3146  	objectMap := make(map[string]any)
  3147  	populate(objectMap, "etag", a.Etag)
  3148  	populate(objectMap, "id", a.ID)
  3149  	populate(objectMap, "name", a.Name)
  3150  	populate(objectMap, "properties", a.Properties)
  3151  	populate(objectMap, "type", a.Type)
  3152  	return json.Marshal(objectMap)
  3153  }
  3154  
  3155  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayProbe.
  3156  func (a *ApplicationGatewayProbe) UnmarshalJSON(data []byte) error {
  3157  	var rawMsg map[string]json.RawMessage
  3158  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  3159  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3160  	}
  3161  	for key, val := range rawMsg {
  3162  		var err error
  3163  		switch key {
  3164  		case "etag":
  3165  			err = unpopulate(val, "Etag", &a.Etag)
  3166  			delete(rawMsg, key)
  3167  		case "id":
  3168  			err = unpopulate(val, "ID", &a.ID)
  3169  			delete(rawMsg, key)
  3170  		case "name":
  3171  			err = unpopulate(val, "Name", &a.Name)
  3172  			delete(rawMsg, key)
  3173  		case "properties":
  3174  			err = unpopulate(val, "Properties", &a.Properties)
  3175  			delete(rawMsg, key)
  3176  		case "type":
  3177  			err = unpopulate(val, "Type", &a.Type)
  3178  			delete(rawMsg, key)
  3179  		}
  3180  		if err != nil {
  3181  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3182  		}
  3183  	}
  3184  	return nil
  3185  }
  3186  
  3187  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayProbeHealthResponseMatch.
  3188  func (a ApplicationGatewayProbeHealthResponseMatch) MarshalJSON() ([]byte, error) {
  3189  	objectMap := make(map[string]any)
  3190  	populate(objectMap, "body", a.Body)
  3191  	populate(objectMap, "statusCodes", a.StatusCodes)
  3192  	return json.Marshal(objectMap)
  3193  }
  3194  
  3195  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayProbeHealthResponseMatch.
  3196  func (a *ApplicationGatewayProbeHealthResponseMatch) UnmarshalJSON(data []byte) error {
  3197  	var rawMsg map[string]json.RawMessage
  3198  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  3199  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3200  	}
  3201  	for key, val := range rawMsg {
  3202  		var err error
  3203  		switch key {
  3204  		case "body":
  3205  			err = unpopulate(val, "Body", &a.Body)
  3206  			delete(rawMsg, key)
  3207  		case "statusCodes":
  3208  			err = unpopulate(val, "StatusCodes", &a.StatusCodes)
  3209  			delete(rawMsg, key)
  3210  		}
  3211  		if err != nil {
  3212  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3213  		}
  3214  	}
  3215  	return nil
  3216  }
  3217  
  3218  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayProbePropertiesFormat.
  3219  func (a ApplicationGatewayProbePropertiesFormat) MarshalJSON() ([]byte, error) {
  3220  	objectMap := make(map[string]any)
  3221  	populate(objectMap, "host", a.Host)
  3222  	populate(objectMap, "interval", a.Interval)
  3223  	populate(objectMap, "match", a.Match)
  3224  	populate(objectMap, "minServers", a.MinServers)
  3225  	populate(objectMap, "path", a.Path)
  3226  	populate(objectMap, "pickHostNameFromBackendHttpSettings", a.PickHostNameFromBackendHTTPSettings)
  3227  	populate(objectMap, "pickHostNameFromBackendSettings", a.PickHostNameFromBackendSettings)
  3228  	populate(objectMap, "port", a.Port)
  3229  	populate(objectMap, "protocol", a.Protocol)
  3230  	populate(objectMap, "provisioningState", a.ProvisioningState)
  3231  	populate(objectMap, "timeout", a.Timeout)
  3232  	populate(objectMap, "unhealthyThreshold", a.UnhealthyThreshold)
  3233  	return json.Marshal(objectMap)
  3234  }
  3235  
  3236  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayProbePropertiesFormat.
  3237  func (a *ApplicationGatewayProbePropertiesFormat) UnmarshalJSON(data []byte) error {
  3238  	var rawMsg map[string]json.RawMessage
  3239  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  3240  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3241  	}
  3242  	for key, val := range rawMsg {
  3243  		var err error
  3244  		switch key {
  3245  		case "host":
  3246  			err = unpopulate(val, "Host", &a.Host)
  3247  			delete(rawMsg, key)
  3248  		case "interval":
  3249  			err = unpopulate(val, "Interval", &a.Interval)
  3250  			delete(rawMsg, key)
  3251  		case "match":
  3252  			err = unpopulate(val, "Match", &a.Match)
  3253  			delete(rawMsg, key)
  3254  		case "minServers":
  3255  			err = unpopulate(val, "MinServers", &a.MinServers)
  3256  			delete(rawMsg, key)
  3257  		case "path":
  3258  			err = unpopulate(val, "Path", &a.Path)
  3259  			delete(rawMsg, key)
  3260  		case "pickHostNameFromBackendHttpSettings":
  3261  			err = unpopulate(val, "PickHostNameFromBackendHTTPSettings", &a.PickHostNameFromBackendHTTPSettings)
  3262  			delete(rawMsg, key)
  3263  		case "pickHostNameFromBackendSettings":
  3264  			err = unpopulate(val, "PickHostNameFromBackendSettings", &a.PickHostNameFromBackendSettings)
  3265  			delete(rawMsg, key)
  3266  		case "port":
  3267  			err = unpopulate(val, "Port", &a.Port)
  3268  			delete(rawMsg, key)
  3269  		case "protocol":
  3270  			err = unpopulate(val, "Protocol", &a.Protocol)
  3271  			delete(rawMsg, key)
  3272  		case "provisioningState":
  3273  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  3274  			delete(rawMsg, key)
  3275  		case "timeout":
  3276  			err = unpopulate(val, "Timeout", &a.Timeout)
  3277  			delete(rawMsg, key)
  3278  		case "unhealthyThreshold":
  3279  			err = unpopulate(val, "UnhealthyThreshold", &a.UnhealthyThreshold)
  3280  			delete(rawMsg, key)
  3281  		}
  3282  		if err != nil {
  3283  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3284  		}
  3285  	}
  3286  	return nil
  3287  }
  3288  
  3289  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayPropertiesFormat.
  3290  func (a ApplicationGatewayPropertiesFormat) MarshalJSON() ([]byte, error) {
  3291  	objectMap := make(map[string]any)
  3292  	populate(objectMap, "authenticationCertificates", a.AuthenticationCertificates)
  3293  	populate(objectMap, "autoscaleConfiguration", a.AutoscaleConfiguration)
  3294  	populate(objectMap, "backendAddressPools", a.BackendAddressPools)
  3295  	populate(objectMap, "backendHttpSettingsCollection", a.BackendHTTPSettingsCollection)
  3296  	populate(objectMap, "backendSettingsCollection", a.BackendSettingsCollection)
  3297  	populate(objectMap, "customErrorConfigurations", a.CustomErrorConfigurations)
  3298  	populate(objectMap, "defaultPredefinedSslPolicy", a.DefaultPredefinedSSLPolicy)
  3299  	populate(objectMap, "enableFips", a.EnableFips)
  3300  	populate(objectMap, "enableHttp2", a.EnableHTTP2)
  3301  	populate(objectMap, "firewallPolicy", a.FirewallPolicy)
  3302  	populate(objectMap, "forceFirewallPolicyAssociation", a.ForceFirewallPolicyAssociation)
  3303  	populate(objectMap, "frontendIPConfigurations", a.FrontendIPConfigurations)
  3304  	populate(objectMap, "frontendPorts", a.FrontendPorts)
  3305  	populate(objectMap, "gatewayIPConfigurations", a.GatewayIPConfigurations)
  3306  	populate(objectMap, "globalConfiguration", a.GlobalConfiguration)
  3307  	populate(objectMap, "httpListeners", a.HTTPListeners)
  3308  	populate(objectMap, "listeners", a.Listeners)
  3309  	populate(objectMap, "loadDistributionPolicies", a.LoadDistributionPolicies)
  3310  	populate(objectMap, "operationalState", a.OperationalState)
  3311  	populate(objectMap, "privateEndpointConnections", a.PrivateEndpointConnections)
  3312  	populate(objectMap, "privateLinkConfigurations", a.PrivateLinkConfigurations)
  3313  	populate(objectMap, "probes", a.Probes)
  3314  	populate(objectMap, "provisioningState", a.ProvisioningState)
  3315  	populate(objectMap, "redirectConfigurations", a.RedirectConfigurations)
  3316  	populate(objectMap, "requestRoutingRules", a.RequestRoutingRules)
  3317  	populate(objectMap, "resourceGuid", a.ResourceGUID)
  3318  	populate(objectMap, "rewriteRuleSets", a.RewriteRuleSets)
  3319  	populate(objectMap, "routingRules", a.RoutingRules)
  3320  	populate(objectMap, "sku", a.SKU)
  3321  	populate(objectMap, "sslCertificates", a.SSLCertificates)
  3322  	populate(objectMap, "sslPolicy", a.SSLPolicy)
  3323  	populate(objectMap, "sslProfiles", a.SSLProfiles)
  3324  	populate(objectMap, "trustedClientCertificates", a.TrustedClientCertificates)
  3325  	populate(objectMap, "trustedRootCertificates", a.TrustedRootCertificates)
  3326  	populate(objectMap, "urlPathMaps", a.URLPathMaps)
  3327  	populate(objectMap, "webApplicationFirewallConfiguration", a.WebApplicationFirewallConfiguration)
  3328  	return json.Marshal(objectMap)
  3329  }
  3330  
  3331  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayPropertiesFormat.
  3332  func (a *ApplicationGatewayPropertiesFormat) UnmarshalJSON(data []byte) error {
  3333  	var rawMsg map[string]json.RawMessage
  3334  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  3335  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3336  	}
  3337  	for key, val := range rawMsg {
  3338  		var err error
  3339  		switch key {
  3340  		case "authenticationCertificates":
  3341  			err = unpopulate(val, "AuthenticationCertificates", &a.AuthenticationCertificates)
  3342  			delete(rawMsg, key)
  3343  		case "autoscaleConfiguration":
  3344  			err = unpopulate(val, "AutoscaleConfiguration", &a.AutoscaleConfiguration)
  3345  			delete(rawMsg, key)
  3346  		case "backendAddressPools":
  3347  			err = unpopulate(val, "BackendAddressPools", &a.BackendAddressPools)
  3348  			delete(rawMsg, key)
  3349  		case "backendHttpSettingsCollection":
  3350  			err = unpopulate(val, "BackendHTTPSettingsCollection", &a.BackendHTTPSettingsCollection)
  3351  			delete(rawMsg, key)
  3352  		case "backendSettingsCollection":
  3353  			err = unpopulate(val, "BackendSettingsCollection", &a.BackendSettingsCollection)
  3354  			delete(rawMsg, key)
  3355  		case "customErrorConfigurations":
  3356  			err = unpopulate(val, "CustomErrorConfigurations", &a.CustomErrorConfigurations)
  3357  			delete(rawMsg, key)
  3358  		case "defaultPredefinedSslPolicy":
  3359  			err = unpopulate(val, "DefaultPredefinedSSLPolicy", &a.DefaultPredefinedSSLPolicy)
  3360  			delete(rawMsg, key)
  3361  		case "enableFips":
  3362  			err = unpopulate(val, "EnableFips", &a.EnableFips)
  3363  			delete(rawMsg, key)
  3364  		case "enableHttp2":
  3365  			err = unpopulate(val, "EnableHTTP2", &a.EnableHTTP2)
  3366  			delete(rawMsg, key)
  3367  		case "firewallPolicy":
  3368  			err = unpopulate(val, "FirewallPolicy", &a.FirewallPolicy)
  3369  			delete(rawMsg, key)
  3370  		case "forceFirewallPolicyAssociation":
  3371  			err = unpopulate(val, "ForceFirewallPolicyAssociation", &a.ForceFirewallPolicyAssociation)
  3372  			delete(rawMsg, key)
  3373  		case "frontendIPConfigurations":
  3374  			err = unpopulate(val, "FrontendIPConfigurations", &a.FrontendIPConfigurations)
  3375  			delete(rawMsg, key)
  3376  		case "frontendPorts":
  3377  			err = unpopulate(val, "FrontendPorts", &a.FrontendPorts)
  3378  			delete(rawMsg, key)
  3379  		case "gatewayIPConfigurations":
  3380  			err = unpopulate(val, "GatewayIPConfigurations", &a.GatewayIPConfigurations)
  3381  			delete(rawMsg, key)
  3382  		case "globalConfiguration":
  3383  			err = unpopulate(val, "GlobalConfiguration", &a.GlobalConfiguration)
  3384  			delete(rawMsg, key)
  3385  		case "httpListeners":
  3386  			err = unpopulate(val, "HTTPListeners", &a.HTTPListeners)
  3387  			delete(rawMsg, key)
  3388  		case "listeners":
  3389  			err = unpopulate(val, "Listeners", &a.Listeners)
  3390  			delete(rawMsg, key)
  3391  		case "loadDistributionPolicies":
  3392  			err = unpopulate(val, "LoadDistributionPolicies", &a.LoadDistributionPolicies)
  3393  			delete(rawMsg, key)
  3394  		case "operationalState":
  3395  			err = unpopulate(val, "OperationalState", &a.OperationalState)
  3396  			delete(rawMsg, key)
  3397  		case "privateEndpointConnections":
  3398  			err = unpopulate(val, "PrivateEndpointConnections", &a.PrivateEndpointConnections)
  3399  			delete(rawMsg, key)
  3400  		case "privateLinkConfigurations":
  3401  			err = unpopulate(val, "PrivateLinkConfigurations", &a.PrivateLinkConfigurations)
  3402  			delete(rawMsg, key)
  3403  		case "probes":
  3404  			err = unpopulate(val, "Probes", &a.Probes)
  3405  			delete(rawMsg, key)
  3406  		case "provisioningState":
  3407  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  3408  			delete(rawMsg, key)
  3409  		case "redirectConfigurations":
  3410  			err = unpopulate(val, "RedirectConfigurations", &a.RedirectConfigurations)
  3411  			delete(rawMsg, key)
  3412  		case "requestRoutingRules":
  3413  			err = unpopulate(val, "RequestRoutingRules", &a.RequestRoutingRules)
  3414  			delete(rawMsg, key)
  3415  		case "resourceGuid":
  3416  			err = unpopulate(val, "ResourceGUID", &a.ResourceGUID)
  3417  			delete(rawMsg, key)
  3418  		case "rewriteRuleSets":
  3419  			err = unpopulate(val, "RewriteRuleSets", &a.RewriteRuleSets)
  3420  			delete(rawMsg, key)
  3421  		case "routingRules":
  3422  			err = unpopulate(val, "RoutingRules", &a.RoutingRules)
  3423  			delete(rawMsg, key)
  3424  		case "sku":
  3425  			err = unpopulate(val, "SKU", &a.SKU)
  3426  			delete(rawMsg, key)
  3427  		case "sslCertificates":
  3428  			err = unpopulate(val, "SSLCertificates", &a.SSLCertificates)
  3429  			delete(rawMsg, key)
  3430  		case "sslPolicy":
  3431  			err = unpopulate(val, "SSLPolicy", &a.SSLPolicy)
  3432  			delete(rawMsg, key)
  3433  		case "sslProfiles":
  3434  			err = unpopulate(val, "SSLProfiles", &a.SSLProfiles)
  3435  			delete(rawMsg, key)
  3436  		case "trustedClientCertificates":
  3437  			err = unpopulate(val, "TrustedClientCertificates", &a.TrustedClientCertificates)
  3438  			delete(rawMsg, key)
  3439  		case "trustedRootCertificates":
  3440  			err = unpopulate(val, "TrustedRootCertificates", &a.TrustedRootCertificates)
  3441  			delete(rawMsg, key)
  3442  		case "urlPathMaps":
  3443  			err = unpopulate(val, "URLPathMaps", &a.URLPathMaps)
  3444  			delete(rawMsg, key)
  3445  		case "webApplicationFirewallConfiguration":
  3446  			err = unpopulate(val, "WebApplicationFirewallConfiguration", &a.WebApplicationFirewallConfiguration)
  3447  			delete(rawMsg, key)
  3448  		}
  3449  		if err != nil {
  3450  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3451  		}
  3452  	}
  3453  	return nil
  3454  }
  3455  
  3456  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayRedirectConfiguration.
  3457  func (a ApplicationGatewayRedirectConfiguration) MarshalJSON() ([]byte, error) {
  3458  	objectMap := make(map[string]any)
  3459  	populate(objectMap, "etag", a.Etag)
  3460  	populate(objectMap, "id", a.ID)
  3461  	populate(objectMap, "name", a.Name)
  3462  	populate(objectMap, "properties", a.Properties)
  3463  	populate(objectMap, "type", a.Type)
  3464  	return json.Marshal(objectMap)
  3465  }
  3466  
  3467  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayRedirectConfiguration.
  3468  func (a *ApplicationGatewayRedirectConfiguration) UnmarshalJSON(data []byte) error {
  3469  	var rawMsg map[string]json.RawMessage
  3470  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  3471  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3472  	}
  3473  	for key, val := range rawMsg {
  3474  		var err error
  3475  		switch key {
  3476  		case "etag":
  3477  			err = unpopulate(val, "Etag", &a.Etag)
  3478  			delete(rawMsg, key)
  3479  		case "id":
  3480  			err = unpopulate(val, "ID", &a.ID)
  3481  			delete(rawMsg, key)
  3482  		case "name":
  3483  			err = unpopulate(val, "Name", &a.Name)
  3484  			delete(rawMsg, key)
  3485  		case "properties":
  3486  			err = unpopulate(val, "Properties", &a.Properties)
  3487  			delete(rawMsg, key)
  3488  		case "type":
  3489  			err = unpopulate(val, "Type", &a.Type)
  3490  			delete(rawMsg, key)
  3491  		}
  3492  		if err != nil {
  3493  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3494  		}
  3495  	}
  3496  	return nil
  3497  }
  3498  
  3499  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayRedirectConfigurationPropertiesFormat.
  3500  func (a ApplicationGatewayRedirectConfigurationPropertiesFormat) MarshalJSON() ([]byte, error) {
  3501  	objectMap := make(map[string]any)
  3502  	populate(objectMap, "includePath", a.IncludePath)
  3503  	populate(objectMap, "includeQueryString", a.IncludeQueryString)
  3504  	populate(objectMap, "pathRules", a.PathRules)
  3505  	populate(objectMap, "redirectType", a.RedirectType)
  3506  	populate(objectMap, "requestRoutingRules", a.RequestRoutingRules)
  3507  	populate(objectMap, "targetListener", a.TargetListener)
  3508  	populate(objectMap, "targetUrl", a.TargetURL)
  3509  	populate(objectMap, "urlPathMaps", a.URLPathMaps)
  3510  	return json.Marshal(objectMap)
  3511  }
  3512  
  3513  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayRedirectConfigurationPropertiesFormat.
  3514  func (a *ApplicationGatewayRedirectConfigurationPropertiesFormat) UnmarshalJSON(data []byte) error {
  3515  	var rawMsg map[string]json.RawMessage
  3516  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  3517  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3518  	}
  3519  	for key, val := range rawMsg {
  3520  		var err error
  3521  		switch key {
  3522  		case "includePath":
  3523  			err = unpopulate(val, "IncludePath", &a.IncludePath)
  3524  			delete(rawMsg, key)
  3525  		case "includeQueryString":
  3526  			err = unpopulate(val, "IncludeQueryString", &a.IncludeQueryString)
  3527  			delete(rawMsg, key)
  3528  		case "pathRules":
  3529  			err = unpopulate(val, "PathRules", &a.PathRules)
  3530  			delete(rawMsg, key)
  3531  		case "redirectType":
  3532  			err = unpopulate(val, "RedirectType", &a.RedirectType)
  3533  			delete(rawMsg, key)
  3534  		case "requestRoutingRules":
  3535  			err = unpopulate(val, "RequestRoutingRules", &a.RequestRoutingRules)
  3536  			delete(rawMsg, key)
  3537  		case "targetListener":
  3538  			err = unpopulate(val, "TargetListener", &a.TargetListener)
  3539  			delete(rawMsg, key)
  3540  		case "targetUrl":
  3541  			err = unpopulate(val, "TargetURL", &a.TargetURL)
  3542  			delete(rawMsg, key)
  3543  		case "urlPathMaps":
  3544  			err = unpopulate(val, "URLPathMaps", &a.URLPathMaps)
  3545  			delete(rawMsg, key)
  3546  		}
  3547  		if err != nil {
  3548  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3549  		}
  3550  	}
  3551  	return nil
  3552  }
  3553  
  3554  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayRequestRoutingRule.
  3555  func (a ApplicationGatewayRequestRoutingRule) MarshalJSON() ([]byte, error) {
  3556  	objectMap := make(map[string]any)
  3557  	populate(objectMap, "etag", a.Etag)
  3558  	populate(objectMap, "id", a.ID)
  3559  	populate(objectMap, "name", a.Name)
  3560  	populate(objectMap, "properties", a.Properties)
  3561  	populate(objectMap, "type", a.Type)
  3562  	return json.Marshal(objectMap)
  3563  }
  3564  
  3565  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayRequestRoutingRule.
  3566  func (a *ApplicationGatewayRequestRoutingRule) UnmarshalJSON(data []byte) error {
  3567  	var rawMsg map[string]json.RawMessage
  3568  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  3569  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3570  	}
  3571  	for key, val := range rawMsg {
  3572  		var err error
  3573  		switch key {
  3574  		case "etag":
  3575  			err = unpopulate(val, "Etag", &a.Etag)
  3576  			delete(rawMsg, key)
  3577  		case "id":
  3578  			err = unpopulate(val, "ID", &a.ID)
  3579  			delete(rawMsg, key)
  3580  		case "name":
  3581  			err = unpopulate(val, "Name", &a.Name)
  3582  			delete(rawMsg, key)
  3583  		case "properties":
  3584  			err = unpopulate(val, "Properties", &a.Properties)
  3585  			delete(rawMsg, key)
  3586  		case "type":
  3587  			err = unpopulate(val, "Type", &a.Type)
  3588  			delete(rawMsg, key)
  3589  		}
  3590  		if err != nil {
  3591  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3592  		}
  3593  	}
  3594  	return nil
  3595  }
  3596  
  3597  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayRequestRoutingRulePropertiesFormat.
  3598  func (a ApplicationGatewayRequestRoutingRulePropertiesFormat) MarshalJSON() ([]byte, error) {
  3599  	objectMap := make(map[string]any)
  3600  	populate(objectMap, "backendAddressPool", a.BackendAddressPool)
  3601  	populate(objectMap, "backendHttpSettings", a.BackendHTTPSettings)
  3602  	populate(objectMap, "httpListener", a.HTTPListener)
  3603  	populate(objectMap, "loadDistributionPolicy", a.LoadDistributionPolicy)
  3604  	populate(objectMap, "priority", a.Priority)
  3605  	populate(objectMap, "provisioningState", a.ProvisioningState)
  3606  	populate(objectMap, "redirectConfiguration", a.RedirectConfiguration)
  3607  	populate(objectMap, "rewriteRuleSet", a.RewriteRuleSet)
  3608  	populate(objectMap, "ruleType", a.RuleType)
  3609  	populate(objectMap, "urlPathMap", a.URLPathMap)
  3610  	return json.Marshal(objectMap)
  3611  }
  3612  
  3613  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayRequestRoutingRulePropertiesFormat.
  3614  func (a *ApplicationGatewayRequestRoutingRulePropertiesFormat) UnmarshalJSON(data []byte) error {
  3615  	var rawMsg map[string]json.RawMessage
  3616  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  3617  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3618  	}
  3619  	for key, val := range rawMsg {
  3620  		var err error
  3621  		switch key {
  3622  		case "backendAddressPool":
  3623  			err = unpopulate(val, "BackendAddressPool", &a.BackendAddressPool)
  3624  			delete(rawMsg, key)
  3625  		case "backendHttpSettings":
  3626  			err = unpopulate(val, "BackendHTTPSettings", &a.BackendHTTPSettings)
  3627  			delete(rawMsg, key)
  3628  		case "httpListener":
  3629  			err = unpopulate(val, "HTTPListener", &a.HTTPListener)
  3630  			delete(rawMsg, key)
  3631  		case "loadDistributionPolicy":
  3632  			err = unpopulate(val, "LoadDistributionPolicy", &a.LoadDistributionPolicy)
  3633  			delete(rawMsg, key)
  3634  		case "priority":
  3635  			err = unpopulate(val, "Priority", &a.Priority)
  3636  			delete(rawMsg, key)
  3637  		case "provisioningState":
  3638  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  3639  			delete(rawMsg, key)
  3640  		case "redirectConfiguration":
  3641  			err = unpopulate(val, "RedirectConfiguration", &a.RedirectConfiguration)
  3642  			delete(rawMsg, key)
  3643  		case "rewriteRuleSet":
  3644  			err = unpopulate(val, "RewriteRuleSet", &a.RewriteRuleSet)
  3645  			delete(rawMsg, key)
  3646  		case "ruleType":
  3647  			err = unpopulate(val, "RuleType", &a.RuleType)
  3648  			delete(rawMsg, key)
  3649  		case "urlPathMap":
  3650  			err = unpopulate(val, "URLPathMap", &a.URLPathMap)
  3651  			delete(rawMsg, key)
  3652  		}
  3653  		if err != nil {
  3654  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3655  		}
  3656  	}
  3657  	return nil
  3658  }
  3659  
  3660  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayRewriteRule.
  3661  func (a ApplicationGatewayRewriteRule) MarshalJSON() ([]byte, error) {
  3662  	objectMap := make(map[string]any)
  3663  	populate(objectMap, "actionSet", a.ActionSet)
  3664  	populate(objectMap, "conditions", a.Conditions)
  3665  	populate(objectMap, "name", a.Name)
  3666  	populate(objectMap, "ruleSequence", a.RuleSequence)
  3667  	return json.Marshal(objectMap)
  3668  }
  3669  
  3670  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayRewriteRule.
  3671  func (a *ApplicationGatewayRewriteRule) UnmarshalJSON(data []byte) error {
  3672  	var rawMsg map[string]json.RawMessage
  3673  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  3674  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3675  	}
  3676  	for key, val := range rawMsg {
  3677  		var err error
  3678  		switch key {
  3679  		case "actionSet":
  3680  			err = unpopulate(val, "ActionSet", &a.ActionSet)
  3681  			delete(rawMsg, key)
  3682  		case "conditions":
  3683  			err = unpopulate(val, "Conditions", &a.Conditions)
  3684  			delete(rawMsg, key)
  3685  		case "name":
  3686  			err = unpopulate(val, "Name", &a.Name)
  3687  			delete(rawMsg, key)
  3688  		case "ruleSequence":
  3689  			err = unpopulate(val, "RuleSequence", &a.RuleSequence)
  3690  			delete(rawMsg, key)
  3691  		}
  3692  		if err != nil {
  3693  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3694  		}
  3695  	}
  3696  	return nil
  3697  }
  3698  
  3699  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayRewriteRuleActionSet.
  3700  func (a ApplicationGatewayRewriteRuleActionSet) MarshalJSON() ([]byte, error) {
  3701  	objectMap := make(map[string]any)
  3702  	populate(objectMap, "requestHeaderConfigurations", a.RequestHeaderConfigurations)
  3703  	populate(objectMap, "responseHeaderConfigurations", a.ResponseHeaderConfigurations)
  3704  	populate(objectMap, "urlConfiguration", a.URLConfiguration)
  3705  	return json.Marshal(objectMap)
  3706  }
  3707  
  3708  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayRewriteRuleActionSet.
  3709  func (a *ApplicationGatewayRewriteRuleActionSet) UnmarshalJSON(data []byte) error {
  3710  	var rawMsg map[string]json.RawMessage
  3711  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  3712  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3713  	}
  3714  	for key, val := range rawMsg {
  3715  		var err error
  3716  		switch key {
  3717  		case "requestHeaderConfigurations":
  3718  			err = unpopulate(val, "RequestHeaderConfigurations", &a.RequestHeaderConfigurations)
  3719  			delete(rawMsg, key)
  3720  		case "responseHeaderConfigurations":
  3721  			err = unpopulate(val, "ResponseHeaderConfigurations", &a.ResponseHeaderConfigurations)
  3722  			delete(rawMsg, key)
  3723  		case "urlConfiguration":
  3724  			err = unpopulate(val, "URLConfiguration", &a.URLConfiguration)
  3725  			delete(rawMsg, key)
  3726  		}
  3727  		if err != nil {
  3728  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3729  		}
  3730  	}
  3731  	return nil
  3732  }
  3733  
  3734  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayRewriteRuleCondition.
  3735  func (a ApplicationGatewayRewriteRuleCondition) MarshalJSON() ([]byte, error) {
  3736  	objectMap := make(map[string]any)
  3737  	populate(objectMap, "ignoreCase", a.IgnoreCase)
  3738  	populate(objectMap, "negate", a.Negate)
  3739  	populate(objectMap, "pattern", a.Pattern)
  3740  	populate(objectMap, "variable", a.Variable)
  3741  	return json.Marshal(objectMap)
  3742  }
  3743  
  3744  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayRewriteRuleCondition.
  3745  func (a *ApplicationGatewayRewriteRuleCondition) UnmarshalJSON(data []byte) error {
  3746  	var rawMsg map[string]json.RawMessage
  3747  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  3748  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3749  	}
  3750  	for key, val := range rawMsg {
  3751  		var err error
  3752  		switch key {
  3753  		case "ignoreCase":
  3754  			err = unpopulate(val, "IgnoreCase", &a.IgnoreCase)
  3755  			delete(rawMsg, key)
  3756  		case "negate":
  3757  			err = unpopulate(val, "Negate", &a.Negate)
  3758  			delete(rawMsg, key)
  3759  		case "pattern":
  3760  			err = unpopulate(val, "Pattern", &a.Pattern)
  3761  			delete(rawMsg, key)
  3762  		case "variable":
  3763  			err = unpopulate(val, "Variable", &a.Variable)
  3764  			delete(rawMsg, key)
  3765  		}
  3766  		if err != nil {
  3767  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3768  		}
  3769  	}
  3770  	return nil
  3771  }
  3772  
  3773  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayRewriteRuleSet.
  3774  func (a ApplicationGatewayRewriteRuleSet) MarshalJSON() ([]byte, error) {
  3775  	objectMap := make(map[string]any)
  3776  	populate(objectMap, "etag", a.Etag)
  3777  	populate(objectMap, "id", a.ID)
  3778  	populate(objectMap, "name", a.Name)
  3779  	populate(objectMap, "properties", a.Properties)
  3780  	return json.Marshal(objectMap)
  3781  }
  3782  
  3783  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayRewriteRuleSet.
  3784  func (a *ApplicationGatewayRewriteRuleSet) UnmarshalJSON(data []byte) error {
  3785  	var rawMsg map[string]json.RawMessage
  3786  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  3787  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3788  	}
  3789  	for key, val := range rawMsg {
  3790  		var err error
  3791  		switch key {
  3792  		case "etag":
  3793  			err = unpopulate(val, "Etag", &a.Etag)
  3794  			delete(rawMsg, key)
  3795  		case "id":
  3796  			err = unpopulate(val, "ID", &a.ID)
  3797  			delete(rawMsg, key)
  3798  		case "name":
  3799  			err = unpopulate(val, "Name", &a.Name)
  3800  			delete(rawMsg, key)
  3801  		case "properties":
  3802  			err = unpopulate(val, "Properties", &a.Properties)
  3803  			delete(rawMsg, key)
  3804  		}
  3805  		if err != nil {
  3806  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3807  		}
  3808  	}
  3809  	return nil
  3810  }
  3811  
  3812  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayRewriteRuleSetPropertiesFormat.
  3813  func (a ApplicationGatewayRewriteRuleSetPropertiesFormat) MarshalJSON() ([]byte, error) {
  3814  	objectMap := make(map[string]any)
  3815  	populate(objectMap, "provisioningState", a.ProvisioningState)
  3816  	populate(objectMap, "rewriteRules", a.RewriteRules)
  3817  	return json.Marshal(objectMap)
  3818  }
  3819  
  3820  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayRewriteRuleSetPropertiesFormat.
  3821  func (a *ApplicationGatewayRewriteRuleSetPropertiesFormat) UnmarshalJSON(data []byte) error {
  3822  	var rawMsg map[string]json.RawMessage
  3823  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  3824  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3825  	}
  3826  	for key, val := range rawMsg {
  3827  		var err error
  3828  		switch key {
  3829  		case "provisioningState":
  3830  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  3831  			delete(rawMsg, key)
  3832  		case "rewriteRules":
  3833  			err = unpopulate(val, "RewriteRules", &a.RewriteRules)
  3834  			delete(rawMsg, key)
  3835  		}
  3836  		if err != nil {
  3837  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3838  		}
  3839  	}
  3840  	return nil
  3841  }
  3842  
  3843  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayRoutingRule.
  3844  func (a ApplicationGatewayRoutingRule) MarshalJSON() ([]byte, error) {
  3845  	objectMap := make(map[string]any)
  3846  	populate(objectMap, "etag", a.Etag)
  3847  	populate(objectMap, "id", a.ID)
  3848  	populate(objectMap, "name", a.Name)
  3849  	populate(objectMap, "properties", a.Properties)
  3850  	populate(objectMap, "type", a.Type)
  3851  	return json.Marshal(objectMap)
  3852  }
  3853  
  3854  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayRoutingRule.
  3855  func (a *ApplicationGatewayRoutingRule) UnmarshalJSON(data []byte) error {
  3856  	var rawMsg map[string]json.RawMessage
  3857  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  3858  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3859  	}
  3860  	for key, val := range rawMsg {
  3861  		var err error
  3862  		switch key {
  3863  		case "etag":
  3864  			err = unpopulate(val, "Etag", &a.Etag)
  3865  			delete(rawMsg, key)
  3866  		case "id":
  3867  			err = unpopulate(val, "ID", &a.ID)
  3868  			delete(rawMsg, key)
  3869  		case "name":
  3870  			err = unpopulate(val, "Name", &a.Name)
  3871  			delete(rawMsg, key)
  3872  		case "properties":
  3873  			err = unpopulate(val, "Properties", &a.Properties)
  3874  			delete(rawMsg, key)
  3875  		case "type":
  3876  			err = unpopulate(val, "Type", &a.Type)
  3877  			delete(rawMsg, key)
  3878  		}
  3879  		if err != nil {
  3880  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3881  		}
  3882  	}
  3883  	return nil
  3884  }
  3885  
  3886  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayRoutingRulePropertiesFormat.
  3887  func (a ApplicationGatewayRoutingRulePropertiesFormat) MarshalJSON() ([]byte, error) {
  3888  	objectMap := make(map[string]any)
  3889  	populate(objectMap, "backendAddressPool", a.BackendAddressPool)
  3890  	populate(objectMap, "backendSettings", a.BackendSettings)
  3891  	populate(objectMap, "listener", a.Listener)
  3892  	populate(objectMap, "priority", a.Priority)
  3893  	populate(objectMap, "provisioningState", a.ProvisioningState)
  3894  	populate(objectMap, "ruleType", a.RuleType)
  3895  	return json.Marshal(objectMap)
  3896  }
  3897  
  3898  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayRoutingRulePropertiesFormat.
  3899  func (a *ApplicationGatewayRoutingRulePropertiesFormat) UnmarshalJSON(data []byte) error {
  3900  	var rawMsg map[string]json.RawMessage
  3901  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  3902  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3903  	}
  3904  	for key, val := range rawMsg {
  3905  		var err error
  3906  		switch key {
  3907  		case "backendAddressPool":
  3908  			err = unpopulate(val, "BackendAddressPool", &a.BackendAddressPool)
  3909  			delete(rawMsg, key)
  3910  		case "backendSettings":
  3911  			err = unpopulate(val, "BackendSettings", &a.BackendSettings)
  3912  			delete(rawMsg, key)
  3913  		case "listener":
  3914  			err = unpopulate(val, "Listener", &a.Listener)
  3915  			delete(rawMsg, key)
  3916  		case "priority":
  3917  			err = unpopulate(val, "Priority", &a.Priority)
  3918  			delete(rawMsg, key)
  3919  		case "provisioningState":
  3920  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  3921  			delete(rawMsg, key)
  3922  		case "ruleType":
  3923  			err = unpopulate(val, "RuleType", &a.RuleType)
  3924  			delete(rawMsg, key)
  3925  		}
  3926  		if err != nil {
  3927  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3928  		}
  3929  	}
  3930  	return nil
  3931  }
  3932  
  3933  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewaySKU.
  3934  func (a ApplicationGatewaySKU) MarshalJSON() ([]byte, error) {
  3935  	objectMap := make(map[string]any)
  3936  	populate(objectMap, "capacity", a.Capacity)
  3937  	populate(objectMap, "family", a.Family)
  3938  	populate(objectMap, "name", a.Name)
  3939  	populate(objectMap, "tier", a.Tier)
  3940  	return json.Marshal(objectMap)
  3941  }
  3942  
  3943  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewaySKU.
  3944  func (a *ApplicationGatewaySKU) UnmarshalJSON(data []byte) error {
  3945  	var rawMsg map[string]json.RawMessage
  3946  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  3947  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3948  	}
  3949  	for key, val := range rawMsg {
  3950  		var err error
  3951  		switch key {
  3952  		case "capacity":
  3953  			err = unpopulate(val, "Capacity", &a.Capacity)
  3954  			delete(rawMsg, key)
  3955  		case "family":
  3956  			err = unpopulate(val, "Family", &a.Family)
  3957  			delete(rawMsg, key)
  3958  		case "name":
  3959  			err = unpopulate(val, "Name", &a.Name)
  3960  			delete(rawMsg, key)
  3961  		case "tier":
  3962  			err = unpopulate(val, "Tier", &a.Tier)
  3963  			delete(rawMsg, key)
  3964  		}
  3965  		if err != nil {
  3966  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3967  		}
  3968  	}
  3969  	return nil
  3970  }
  3971  
  3972  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewaySSLCertificate.
  3973  func (a ApplicationGatewaySSLCertificate) MarshalJSON() ([]byte, error) {
  3974  	objectMap := make(map[string]any)
  3975  	populate(objectMap, "etag", a.Etag)
  3976  	populate(objectMap, "id", a.ID)
  3977  	populate(objectMap, "name", a.Name)
  3978  	populate(objectMap, "properties", a.Properties)
  3979  	populate(objectMap, "type", a.Type)
  3980  	return json.Marshal(objectMap)
  3981  }
  3982  
  3983  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewaySSLCertificate.
  3984  func (a *ApplicationGatewaySSLCertificate) UnmarshalJSON(data []byte) error {
  3985  	var rawMsg map[string]json.RawMessage
  3986  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  3987  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  3988  	}
  3989  	for key, val := range rawMsg {
  3990  		var err error
  3991  		switch key {
  3992  		case "etag":
  3993  			err = unpopulate(val, "Etag", &a.Etag)
  3994  			delete(rawMsg, key)
  3995  		case "id":
  3996  			err = unpopulate(val, "ID", &a.ID)
  3997  			delete(rawMsg, key)
  3998  		case "name":
  3999  			err = unpopulate(val, "Name", &a.Name)
  4000  			delete(rawMsg, key)
  4001  		case "properties":
  4002  			err = unpopulate(val, "Properties", &a.Properties)
  4003  			delete(rawMsg, key)
  4004  		case "type":
  4005  			err = unpopulate(val, "Type", &a.Type)
  4006  			delete(rawMsg, key)
  4007  		}
  4008  		if err != nil {
  4009  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4010  		}
  4011  	}
  4012  	return nil
  4013  }
  4014  
  4015  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewaySSLCertificatePropertiesFormat.
  4016  func (a ApplicationGatewaySSLCertificatePropertiesFormat) MarshalJSON() ([]byte, error) {
  4017  	objectMap := make(map[string]any)
  4018  	populate(objectMap, "data", a.Data)
  4019  	populate(objectMap, "keyVaultSecretId", a.KeyVaultSecretID)
  4020  	populate(objectMap, "password", a.Password)
  4021  	populate(objectMap, "provisioningState", a.ProvisioningState)
  4022  	populate(objectMap, "publicCertData", a.PublicCertData)
  4023  	return json.Marshal(objectMap)
  4024  }
  4025  
  4026  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewaySSLCertificatePropertiesFormat.
  4027  func (a *ApplicationGatewaySSLCertificatePropertiesFormat) UnmarshalJSON(data []byte) error {
  4028  	var rawMsg map[string]json.RawMessage
  4029  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  4030  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4031  	}
  4032  	for key, val := range rawMsg {
  4033  		var err error
  4034  		switch key {
  4035  		case "data":
  4036  			err = unpopulate(val, "Data", &a.Data)
  4037  			delete(rawMsg, key)
  4038  		case "keyVaultSecretId":
  4039  			err = unpopulate(val, "KeyVaultSecretID", &a.KeyVaultSecretID)
  4040  			delete(rawMsg, key)
  4041  		case "password":
  4042  			err = unpopulate(val, "Password", &a.Password)
  4043  			delete(rawMsg, key)
  4044  		case "provisioningState":
  4045  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  4046  			delete(rawMsg, key)
  4047  		case "publicCertData":
  4048  			err = unpopulate(val, "PublicCertData", &a.PublicCertData)
  4049  			delete(rawMsg, key)
  4050  		}
  4051  		if err != nil {
  4052  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4053  		}
  4054  	}
  4055  	return nil
  4056  }
  4057  
  4058  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewaySSLPolicy.
  4059  func (a ApplicationGatewaySSLPolicy) MarshalJSON() ([]byte, error) {
  4060  	objectMap := make(map[string]any)
  4061  	populate(objectMap, "cipherSuites", a.CipherSuites)
  4062  	populate(objectMap, "disabledSslProtocols", a.DisabledSSLProtocols)
  4063  	populate(objectMap, "minProtocolVersion", a.MinProtocolVersion)
  4064  	populate(objectMap, "policyName", a.PolicyName)
  4065  	populate(objectMap, "policyType", a.PolicyType)
  4066  	return json.Marshal(objectMap)
  4067  }
  4068  
  4069  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewaySSLPolicy.
  4070  func (a *ApplicationGatewaySSLPolicy) UnmarshalJSON(data []byte) error {
  4071  	var rawMsg map[string]json.RawMessage
  4072  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  4073  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4074  	}
  4075  	for key, val := range rawMsg {
  4076  		var err error
  4077  		switch key {
  4078  		case "cipherSuites":
  4079  			err = unpopulate(val, "CipherSuites", &a.CipherSuites)
  4080  			delete(rawMsg, key)
  4081  		case "disabledSslProtocols":
  4082  			err = unpopulate(val, "DisabledSSLProtocols", &a.DisabledSSLProtocols)
  4083  			delete(rawMsg, key)
  4084  		case "minProtocolVersion":
  4085  			err = unpopulate(val, "MinProtocolVersion", &a.MinProtocolVersion)
  4086  			delete(rawMsg, key)
  4087  		case "policyName":
  4088  			err = unpopulate(val, "PolicyName", &a.PolicyName)
  4089  			delete(rawMsg, key)
  4090  		case "policyType":
  4091  			err = unpopulate(val, "PolicyType", &a.PolicyType)
  4092  			delete(rawMsg, key)
  4093  		}
  4094  		if err != nil {
  4095  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4096  		}
  4097  	}
  4098  	return nil
  4099  }
  4100  
  4101  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewaySSLPredefinedPolicy.
  4102  func (a ApplicationGatewaySSLPredefinedPolicy) MarshalJSON() ([]byte, error) {
  4103  	objectMap := make(map[string]any)
  4104  	populate(objectMap, "id", a.ID)
  4105  	populate(objectMap, "name", a.Name)
  4106  	populate(objectMap, "properties", a.Properties)
  4107  	return json.Marshal(objectMap)
  4108  }
  4109  
  4110  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewaySSLPredefinedPolicy.
  4111  func (a *ApplicationGatewaySSLPredefinedPolicy) UnmarshalJSON(data []byte) error {
  4112  	var rawMsg map[string]json.RawMessage
  4113  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  4114  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4115  	}
  4116  	for key, val := range rawMsg {
  4117  		var err error
  4118  		switch key {
  4119  		case "id":
  4120  			err = unpopulate(val, "ID", &a.ID)
  4121  			delete(rawMsg, key)
  4122  		case "name":
  4123  			err = unpopulate(val, "Name", &a.Name)
  4124  			delete(rawMsg, key)
  4125  		case "properties":
  4126  			err = unpopulate(val, "Properties", &a.Properties)
  4127  			delete(rawMsg, key)
  4128  		}
  4129  		if err != nil {
  4130  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4131  		}
  4132  	}
  4133  	return nil
  4134  }
  4135  
  4136  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewaySSLPredefinedPolicyPropertiesFormat.
  4137  func (a ApplicationGatewaySSLPredefinedPolicyPropertiesFormat) MarshalJSON() ([]byte, error) {
  4138  	objectMap := make(map[string]any)
  4139  	populate(objectMap, "cipherSuites", a.CipherSuites)
  4140  	populate(objectMap, "minProtocolVersion", a.MinProtocolVersion)
  4141  	return json.Marshal(objectMap)
  4142  }
  4143  
  4144  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewaySSLPredefinedPolicyPropertiesFormat.
  4145  func (a *ApplicationGatewaySSLPredefinedPolicyPropertiesFormat) UnmarshalJSON(data []byte) error {
  4146  	var rawMsg map[string]json.RawMessage
  4147  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  4148  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4149  	}
  4150  	for key, val := range rawMsg {
  4151  		var err error
  4152  		switch key {
  4153  		case "cipherSuites":
  4154  			err = unpopulate(val, "CipherSuites", &a.CipherSuites)
  4155  			delete(rawMsg, key)
  4156  		case "minProtocolVersion":
  4157  			err = unpopulate(val, "MinProtocolVersion", &a.MinProtocolVersion)
  4158  			delete(rawMsg, key)
  4159  		}
  4160  		if err != nil {
  4161  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4162  		}
  4163  	}
  4164  	return nil
  4165  }
  4166  
  4167  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewaySSLProfile.
  4168  func (a ApplicationGatewaySSLProfile) MarshalJSON() ([]byte, error) {
  4169  	objectMap := make(map[string]any)
  4170  	populate(objectMap, "etag", a.Etag)
  4171  	populate(objectMap, "id", a.ID)
  4172  	populate(objectMap, "name", a.Name)
  4173  	populate(objectMap, "properties", a.Properties)
  4174  	populate(objectMap, "type", a.Type)
  4175  	return json.Marshal(objectMap)
  4176  }
  4177  
  4178  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewaySSLProfile.
  4179  func (a *ApplicationGatewaySSLProfile) UnmarshalJSON(data []byte) error {
  4180  	var rawMsg map[string]json.RawMessage
  4181  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  4182  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4183  	}
  4184  	for key, val := range rawMsg {
  4185  		var err error
  4186  		switch key {
  4187  		case "etag":
  4188  			err = unpopulate(val, "Etag", &a.Etag)
  4189  			delete(rawMsg, key)
  4190  		case "id":
  4191  			err = unpopulate(val, "ID", &a.ID)
  4192  			delete(rawMsg, key)
  4193  		case "name":
  4194  			err = unpopulate(val, "Name", &a.Name)
  4195  			delete(rawMsg, key)
  4196  		case "properties":
  4197  			err = unpopulate(val, "Properties", &a.Properties)
  4198  			delete(rawMsg, key)
  4199  		case "type":
  4200  			err = unpopulate(val, "Type", &a.Type)
  4201  			delete(rawMsg, key)
  4202  		}
  4203  		if err != nil {
  4204  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4205  		}
  4206  	}
  4207  	return nil
  4208  }
  4209  
  4210  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewaySSLProfilePropertiesFormat.
  4211  func (a ApplicationGatewaySSLProfilePropertiesFormat) MarshalJSON() ([]byte, error) {
  4212  	objectMap := make(map[string]any)
  4213  	populate(objectMap, "clientAuthConfiguration", a.ClientAuthConfiguration)
  4214  	populate(objectMap, "provisioningState", a.ProvisioningState)
  4215  	populate(objectMap, "sslPolicy", a.SSLPolicy)
  4216  	populate(objectMap, "trustedClientCertificates", a.TrustedClientCertificates)
  4217  	return json.Marshal(objectMap)
  4218  }
  4219  
  4220  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewaySSLProfilePropertiesFormat.
  4221  func (a *ApplicationGatewaySSLProfilePropertiesFormat) UnmarshalJSON(data []byte) error {
  4222  	var rawMsg map[string]json.RawMessage
  4223  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  4224  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4225  	}
  4226  	for key, val := range rawMsg {
  4227  		var err error
  4228  		switch key {
  4229  		case "clientAuthConfiguration":
  4230  			err = unpopulate(val, "ClientAuthConfiguration", &a.ClientAuthConfiguration)
  4231  			delete(rawMsg, key)
  4232  		case "provisioningState":
  4233  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  4234  			delete(rawMsg, key)
  4235  		case "sslPolicy":
  4236  			err = unpopulate(val, "SSLPolicy", &a.SSLPolicy)
  4237  			delete(rawMsg, key)
  4238  		case "trustedClientCertificates":
  4239  			err = unpopulate(val, "TrustedClientCertificates", &a.TrustedClientCertificates)
  4240  			delete(rawMsg, key)
  4241  		}
  4242  		if err != nil {
  4243  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4244  		}
  4245  	}
  4246  	return nil
  4247  }
  4248  
  4249  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayTrustedClientCertificate.
  4250  func (a ApplicationGatewayTrustedClientCertificate) MarshalJSON() ([]byte, error) {
  4251  	objectMap := make(map[string]any)
  4252  	populate(objectMap, "etag", a.Etag)
  4253  	populate(objectMap, "id", a.ID)
  4254  	populate(objectMap, "name", a.Name)
  4255  	populate(objectMap, "properties", a.Properties)
  4256  	populate(objectMap, "type", a.Type)
  4257  	return json.Marshal(objectMap)
  4258  }
  4259  
  4260  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayTrustedClientCertificate.
  4261  func (a *ApplicationGatewayTrustedClientCertificate) UnmarshalJSON(data []byte) error {
  4262  	var rawMsg map[string]json.RawMessage
  4263  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  4264  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4265  	}
  4266  	for key, val := range rawMsg {
  4267  		var err error
  4268  		switch key {
  4269  		case "etag":
  4270  			err = unpopulate(val, "Etag", &a.Etag)
  4271  			delete(rawMsg, key)
  4272  		case "id":
  4273  			err = unpopulate(val, "ID", &a.ID)
  4274  			delete(rawMsg, key)
  4275  		case "name":
  4276  			err = unpopulate(val, "Name", &a.Name)
  4277  			delete(rawMsg, key)
  4278  		case "properties":
  4279  			err = unpopulate(val, "Properties", &a.Properties)
  4280  			delete(rawMsg, key)
  4281  		case "type":
  4282  			err = unpopulate(val, "Type", &a.Type)
  4283  			delete(rawMsg, key)
  4284  		}
  4285  		if err != nil {
  4286  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4287  		}
  4288  	}
  4289  	return nil
  4290  }
  4291  
  4292  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayTrustedClientCertificatePropertiesFormat.
  4293  func (a ApplicationGatewayTrustedClientCertificatePropertiesFormat) MarshalJSON() ([]byte, error) {
  4294  	objectMap := make(map[string]any)
  4295  	populate(objectMap, "clientCertIssuerDN", a.ClientCertIssuerDN)
  4296  	populate(objectMap, "data", a.Data)
  4297  	populate(objectMap, "provisioningState", a.ProvisioningState)
  4298  	populate(objectMap, "validatedCertData", a.ValidatedCertData)
  4299  	return json.Marshal(objectMap)
  4300  }
  4301  
  4302  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayTrustedClientCertificatePropertiesFormat.
  4303  func (a *ApplicationGatewayTrustedClientCertificatePropertiesFormat) UnmarshalJSON(data []byte) error {
  4304  	var rawMsg map[string]json.RawMessage
  4305  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  4306  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4307  	}
  4308  	for key, val := range rawMsg {
  4309  		var err error
  4310  		switch key {
  4311  		case "clientCertIssuerDN":
  4312  			err = unpopulate(val, "ClientCertIssuerDN", &a.ClientCertIssuerDN)
  4313  			delete(rawMsg, key)
  4314  		case "data":
  4315  			err = unpopulate(val, "Data", &a.Data)
  4316  			delete(rawMsg, key)
  4317  		case "provisioningState":
  4318  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  4319  			delete(rawMsg, key)
  4320  		case "validatedCertData":
  4321  			err = unpopulate(val, "ValidatedCertData", &a.ValidatedCertData)
  4322  			delete(rawMsg, key)
  4323  		}
  4324  		if err != nil {
  4325  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4326  		}
  4327  	}
  4328  	return nil
  4329  }
  4330  
  4331  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayTrustedRootCertificate.
  4332  func (a ApplicationGatewayTrustedRootCertificate) MarshalJSON() ([]byte, error) {
  4333  	objectMap := make(map[string]any)
  4334  	populate(objectMap, "etag", a.Etag)
  4335  	populate(objectMap, "id", a.ID)
  4336  	populate(objectMap, "name", a.Name)
  4337  	populate(objectMap, "properties", a.Properties)
  4338  	populate(objectMap, "type", a.Type)
  4339  	return json.Marshal(objectMap)
  4340  }
  4341  
  4342  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayTrustedRootCertificate.
  4343  func (a *ApplicationGatewayTrustedRootCertificate) UnmarshalJSON(data []byte) error {
  4344  	var rawMsg map[string]json.RawMessage
  4345  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  4346  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4347  	}
  4348  	for key, val := range rawMsg {
  4349  		var err error
  4350  		switch key {
  4351  		case "etag":
  4352  			err = unpopulate(val, "Etag", &a.Etag)
  4353  			delete(rawMsg, key)
  4354  		case "id":
  4355  			err = unpopulate(val, "ID", &a.ID)
  4356  			delete(rawMsg, key)
  4357  		case "name":
  4358  			err = unpopulate(val, "Name", &a.Name)
  4359  			delete(rawMsg, key)
  4360  		case "properties":
  4361  			err = unpopulate(val, "Properties", &a.Properties)
  4362  			delete(rawMsg, key)
  4363  		case "type":
  4364  			err = unpopulate(val, "Type", &a.Type)
  4365  			delete(rawMsg, key)
  4366  		}
  4367  		if err != nil {
  4368  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4369  		}
  4370  	}
  4371  	return nil
  4372  }
  4373  
  4374  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayTrustedRootCertificatePropertiesFormat.
  4375  func (a ApplicationGatewayTrustedRootCertificatePropertiesFormat) MarshalJSON() ([]byte, error) {
  4376  	objectMap := make(map[string]any)
  4377  	populate(objectMap, "data", a.Data)
  4378  	populate(objectMap, "keyVaultSecretId", a.KeyVaultSecretID)
  4379  	populate(objectMap, "provisioningState", a.ProvisioningState)
  4380  	return json.Marshal(objectMap)
  4381  }
  4382  
  4383  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayTrustedRootCertificatePropertiesFormat.
  4384  func (a *ApplicationGatewayTrustedRootCertificatePropertiesFormat) UnmarshalJSON(data []byte) error {
  4385  	var rawMsg map[string]json.RawMessage
  4386  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  4387  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4388  	}
  4389  	for key, val := range rawMsg {
  4390  		var err error
  4391  		switch key {
  4392  		case "data":
  4393  			err = unpopulate(val, "Data", &a.Data)
  4394  			delete(rawMsg, key)
  4395  		case "keyVaultSecretId":
  4396  			err = unpopulate(val, "KeyVaultSecretID", &a.KeyVaultSecretID)
  4397  			delete(rawMsg, key)
  4398  		case "provisioningState":
  4399  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  4400  			delete(rawMsg, key)
  4401  		}
  4402  		if err != nil {
  4403  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4404  		}
  4405  	}
  4406  	return nil
  4407  }
  4408  
  4409  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayURLConfiguration.
  4410  func (a ApplicationGatewayURLConfiguration) MarshalJSON() ([]byte, error) {
  4411  	objectMap := make(map[string]any)
  4412  	populate(objectMap, "modifiedPath", a.ModifiedPath)
  4413  	populate(objectMap, "modifiedQueryString", a.ModifiedQueryString)
  4414  	populate(objectMap, "reroute", a.Reroute)
  4415  	return json.Marshal(objectMap)
  4416  }
  4417  
  4418  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayURLConfiguration.
  4419  func (a *ApplicationGatewayURLConfiguration) UnmarshalJSON(data []byte) error {
  4420  	var rawMsg map[string]json.RawMessage
  4421  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  4422  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4423  	}
  4424  	for key, val := range rawMsg {
  4425  		var err error
  4426  		switch key {
  4427  		case "modifiedPath":
  4428  			err = unpopulate(val, "ModifiedPath", &a.ModifiedPath)
  4429  			delete(rawMsg, key)
  4430  		case "modifiedQueryString":
  4431  			err = unpopulate(val, "ModifiedQueryString", &a.ModifiedQueryString)
  4432  			delete(rawMsg, key)
  4433  		case "reroute":
  4434  			err = unpopulate(val, "Reroute", &a.Reroute)
  4435  			delete(rawMsg, key)
  4436  		}
  4437  		if err != nil {
  4438  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4439  		}
  4440  	}
  4441  	return nil
  4442  }
  4443  
  4444  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayURLPathMap.
  4445  func (a ApplicationGatewayURLPathMap) MarshalJSON() ([]byte, error) {
  4446  	objectMap := make(map[string]any)
  4447  	populate(objectMap, "etag", a.Etag)
  4448  	populate(objectMap, "id", a.ID)
  4449  	populate(objectMap, "name", a.Name)
  4450  	populate(objectMap, "properties", a.Properties)
  4451  	populate(objectMap, "type", a.Type)
  4452  	return json.Marshal(objectMap)
  4453  }
  4454  
  4455  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayURLPathMap.
  4456  func (a *ApplicationGatewayURLPathMap) UnmarshalJSON(data []byte) error {
  4457  	var rawMsg map[string]json.RawMessage
  4458  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  4459  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4460  	}
  4461  	for key, val := range rawMsg {
  4462  		var err error
  4463  		switch key {
  4464  		case "etag":
  4465  			err = unpopulate(val, "Etag", &a.Etag)
  4466  			delete(rawMsg, key)
  4467  		case "id":
  4468  			err = unpopulate(val, "ID", &a.ID)
  4469  			delete(rawMsg, key)
  4470  		case "name":
  4471  			err = unpopulate(val, "Name", &a.Name)
  4472  			delete(rawMsg, key)
  4473  		case "properties":
  4474  			err = unpopulate(val, "Properties", &a.Properties)
  4475  			delete(rawMsg, key)
  4476  		case "type":
  4477  			err = unpopulate(val, "Type", &a.Type)
  4478  			delete(rawMsg, key)
  4479  		}
  4480  		if err != nil {
  4481  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4482  		}
  4483  	}
  4484  	return nil
  4485  }
  4486  
  4487  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayURLPathMapPropertiesFormat.
  4488  func (a ApplicationGatewayURLPathMapPropertiesFormat) MarshalJSON() ([]byte, error) {
  4489  	objectMap := make(map[string]any)
  4490  	populate(objectMap, "defaultBackendAddressPool", a.DefaultBackendAddressPool)
  4491  	populate(objectMap, "defaultBackendHttpSettings", a.DefaultBackendHTTPSettings)
  4492  	populate(objectMap, "defaultLoadDistributionPolicy", a.DefaultLoadDistributionPolicy)
  4493  	populate(objectMap, "defaultRedirectConfiguration", a.DefaultRedirectConfiguration)
  4494  	populate(objectMap, "defaultRewriteRuleSet", a.DefaultRewriteRuleSet)
  4495  	populate(objectMap, "pathRules", a.PathRules)
  4496  	populate(objectMap, "provisioningState", a.ProvisioningState)
  4497  	return json.Marshal(objectMap)
  4498  }
  4499  
  4500  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayURLPathMapPropertiesFormat.
  4501  func (a *ApplicationGatewayURLPathMapPropertiesFormat) UnmarshalJSON(data []byte) error {
  4502  	var rawMsg map[string]json.RawMessage
  4503  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  4504  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4505  	}
  4506  	for key, val := range rawMsg {
  4507  		var err error
  4508  		switch key {
  4509  		case "defaultBackendAddressPool":
  4510  			err = unpopulate(val, "DefaultBackendAddressPool", &a.DefaultBackendAddressPool)
  4511  			delete(rawMsg, key)
  4512  		case "defaultBackendHttpSettings":
  4513  			err = unpopulate(val, "DefaultBackendHTTPSettings", &a.DefaultBackendHTTPSettings)
  4514  			delete(rawMsg, key)
  4515  		case "defaultLoadDistributionPolicy":
  4516  			err = unpopulate(val, "DefaultLoadDistributionPolicy", &a.DefaultLoadDistributionPolicy)
  4517  			delete(rawMsg, key)
  4518  		case "defaultRedirectConfiguration":
  4519  			err = unpopulate(val, "DefaultRedirectConfiguration", &a.DefaultRedirectConfiguration)
  4520  			delete(rawMsg, key)
  4521  		case "defaultRewriteRuleSet":
  4522  			err = unpopulate(val, "DefaultRewriteRuleSet", &a.DefaultRewriteRuleSet)
  4523  			delete(rawMsg, key)
  4524  		case "pathRules":
  4525  			err = unpopulate(val, "PathRules", &a.PathRules)
  4526  			delete(rawMsg, key)
  4527  		case "provisioningState":
  4528  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  4529  			delete(rawMsg, key)
  4530  		}
  4531  		if err != nil {
  4532  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4533  		}
  4534  	}
  4535  	return nil
  4536  }
  4537  
  4538  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayWafDynamicManifestPropertiesResult.
  4539  func (a ApplicationGatewayWafDynamicManifestPropertiesResult) MarshalJSON() ([]byte, error) {
  4540  	objectMap := make(map[string]any)
  4541  	populate(objectMap, "availableRuleSets", a.AvailableRuleSets)
  4542  	populate(objectMap, "defaultRuleSet", a.DefaultRuleSet)
  4543  	return json.Marshal(objectMap)
  4544  }
  4545  
  4546  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayWafDynamicManifestPropertiesResult.
  4547  func (a *ApplicationGatewayWafDynamicManifestPropertiesResult) UnmarshalJSON(data []byte) error {
  4548  	var rawMsg map[string]json.RawMessage
  4549  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  4550  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4551  	}
  4552  	for key, val := range rawMsg {
  4553  		var err error
  4554  		switch key {
  4555  		case "availableRuleSets":
  4556  			err = unpopulate(val, "AvailableRuleSets", &a.AvailableRuleSets)
  4557  			delete(rawMsg, key)
  4558  		case "defaultRuleSet":
  4559  			err = unpopulate(val, "DefaultRuleSet", &a.DefaultRuleSet)
  4560  			delete(rawMsg, key)
  4561  		}
  4562  		if err != nil {
  4563  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4564  		}
  4565  	}
  4566  	return nil
  4567  }
  4568  
  4569  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayWafDynamicManifestResult.
  4570  func (a ApplicationGatewayWafDynamicManifestResult) MarshalJSON() ([]byte, error) {
  4571  	objectMap := make(map[string]any)
  4572  	populate(objectMap, "id", a.ID)
  4573  	populate(objectMap, "name", a.Name)
  4574  	populate(objectMap, "properties", a.Properties)
  4575  	populate(objectMap, "type", a.Type)
  4576  	return json.Marshal(objectMap)
  4577  }
  4578  
  4579  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayWafDynamicManifestResult.
  4580  func (a *ApplicationGatewayWafDynamicManifestResult) UnmarshalJSON(data []byte) error {
  4581  	var rawMsg map[string]json.RawMessage
  4582  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  4583  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4584  	}
  4585  	for key, val := range rawMsg {
  4586  		var err error
  4587  		switch key {
  4588  		case "id":
  4589  			err = unpopulate(val, "ID", &a.ID)
  4590  			delete(rawMsg, key)
  4591  		case "name":
  4592  			err = unpopulate(val, "Name", &a.Name)
  4593  			delete(rawMsg, key)
  4594  		case "properties":
  4595  			err = unpopulate(val, "Properties", &a.Properties)
  4596  			delete(rawMsg, key)
  4597  		case "type":
  4598  			err = unpopulate(val, "Type", &a.Type)
  4599  			delete(rawMsg, key)
  4600  		}
  4601  		if err != nil {
  4602  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4603  		}
  4604  	}
  4605  	return nil
  4606  }
  4607  
  4608  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayWafDynamicManifestResultList.
  4609  func (a ApplicationGatewayWafDynamicManifestResultList) MarshalJSON() ([]byte, error) {
  4610  	objectMap := make(map[string]any)
  4611  	populate(objectMap, "nextLink", a.NextLink)
  4612  	populate(objectMap, "value", a.Value)
  4613  	return json.Marshal(objectMap)
  4614  }
  4615  
  4616  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayWafDynamicManifestResultList.
  4617  func (a *ApplicationGatewayWafDynamicManifestResultList) UnmarshalJSON(data []byte) error {
  4618  	var rawMsg map[string]json.RawMessage
  4619  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  4620  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4621  	}
  4622  	for key, val := range rawMsg {
  4623  		var err error
  4624  		switch key {
  4625  		case "nextLink":
  4626  			err = unpopulate(val, "NextLink", &a.NextLink)
  4627  			delete(rawMsg, key)
  4628  		case "value":
  4629  			err = unpopulate(val, "Value", &a.Value)
  4630  			delete(rawMsg, key)
  4631  		}
  4632  		if err != nil {
  4633  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4634  		}
  4635  	}
  4636  	return nil
  4637  }
  4638  
  4639  // MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayWebApplicationFirewallConfiguration.
  4640  func (a ApplicationGatewayWebApplicationFirewallConfiguration) MarshalJSON() ([]byte, error) {
  4641  	objectMap := make(map[string]any)
  4642  	populate(objectMap, "disabledRuleGroups", a.DisabledRuleGroups)
  4643  	populate(objectMap, "enabled", a.Enabled)
  4644  	populate(objectMap, "exclusions", a.Exclusions)
  4645  	populate(objectMap, "fileUploadLimitInMb", a.FileUploadLimitInMb)
  4646  	populate(objectMap, "firewallMode", a.FirewallMode)
  4647  	populate(objectMap, "maxRequestBodySize", a.MaxRequestBodySize)
  4648  	populate(objectMap, "maxRequestBodySizeInKb", a.MaxRequestBodySizeInKb)
  4649  	populate(objectMap, "requestBodyCheck", a.RequestBodyCheck)
  4650  	populate(objectMap, "ruleSetType", a.RuleSetType)
  4651  	populate(objectMap, "ruleSetVersion", a.RuleSetVersion)
  4652  	return json.Marshal(objectMap)
  4653  }
  4654  
  4655  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationGatewayWebApplicationFirewallConfiguration.
  4656  func (a *ApplicationGatewayWebApplicationFirewallConfiguration) UnmarshalJSON(data []byte) error {
  4657  	var rawMsg map[string]json.RawMessage
  4658  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  4659  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4660  	}
  4661  	for key, val := range rawMsg {
  4662  		var err error
  4663  		switch key {
  4664  		case "disabledRuleGroups":
  4665  			err = unpopulate(val, "DisabledRuleGroups", &a.DisabledRuleGroups)
  4666  			delete(rawMsg, key)
  4667  		case "enabled":
  4668  			err = unpopulate(val, "Enabled", &a.Enabled)
  4669  			delete(rawMsg, key)
  4670  		case "exclusions":
  4671  			err = unpopulate(val, "Exclusions", &a.Exclusions)
  4672  			delete(rawMsg, key)
  4673  		case "fileUploadLimitInMb":
  4674  			err = unpopulate(val, "FileUploadLimitInMb", &a.FileUploadLimitInMb)
  4675  			delete(rawMsg, key)
  4676  		case "firewallMode":
  4677  			err = unpopulate(val, "FirewallMode", &a.FirewallMode)
  4678  			delete(rawMsg, key)
  4679  		case "maxRequestBodySize":
  4680  			err = unpopulate(val, "MaxRequestBodySize", &a.MaxRequestBodySize)
  4681  			delete(rawMsg, key)
  4682  		case "maxRequestBodySizeInKb":
  4683  			err = unpopulate(val, "MaxRequestBodySizeInKb", &a.MaxRequestBodySizeInKb)
  4684  			delete(rawMsg, key)
  4685  		case "requestBodyCheck":
  4686  			err = unpopulate(val, "RequestBodyCheck", &a.RequestBodyCheck)
  4687  			delete(rawMsg, key)
  4688  		case "ruleSetType":
  4689  			err = unpopulate(val, "RuleSetType", &a.RuleSetType)
  4690  			delete(rawMsg, key)
  4691  		case "ruleSetVersion":
  4692  			err = unpopulate(val, "RuleSetVersion", &a.RuleSetVersion)
  4693  			delete(rawMsg, key)
  4694  		}
  4695  		if err != nil {
  4696  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4697  		}
  4698  	}
  4699  	return nil
  4700  }
  4701  
  4702  // MarshalJSON implements the json.Marshaller interface for type ApplicationRule.
  4703  func (a ApplicationRule) MarshalJSON() ([]byte, error) {
  4704  	objectMap := make(map[string]any)
  4705  	populate(objectMap, "description", a.Description)
  4706  	populate(objectMap, "destinationAddresses", a.DestinationAddresses)
  4707  	populate(objectMap, "fqdnTags", a.FqdnTags)
  4708  	populate(objectMap, "httpHeadersToInsert", a.HTTPHeadersToInsert)
  4709  	populate(objectMap, "name", a.Name)
  4710  	populate(objectMap, "protocols", a.Protocols)
  4711  	objectMap["ruleType"] = FirewallPolicyRuleTypeApplicationRule
  4712  	populate(objectMap, "sourceAddresses", a.SourceAddresses)
  4713  	populate(objectMap, "sourceIpGroups", a.SourceIPGroups)
  4714  	populate(objectMap, "targetFqdns", a.TargetFqdns)
  4715  	populate(objectMap, "targetUrls", a.TargetUrls)
  4716  	populate(objectMap, "terminateTLS", a.TerminateTLS)
  4717  	populate(objectMap, "webCategories", a.WebCategories)
  4718  	return json.Marshal(objectMap)
  4719  }
  4720  
  4721  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationRule.
  4722  func (a *ApplicationRule) UnmarshalJSON(data []byte) error {
  4723  	var rawMsg map[string]json.RawMessage
  4724  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  4725  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4726  	}
  4727  	for key, val := range rawMsg {
  4728  		var err error
  4729  		switch key {
  4730  		case "description":
  4731  			err = unpopulate(val, "Description", &a.Description)
  4732  			delete(rawMsg, key)
  4733  		case "destinationAddresses":
  4734  			err = unpopulate(val, "DestinationAddresses", &a.DestinationAddresses)
  4735  			delete(rawMsg, key)
  4736  		case "fqdnTags":
  4737  			err = unpopulate(val, "FqdnTags", &a.FqdnTags)
  4738  			delete(rawMsg, key)
  4739  		case "httpHeadersToInsert":
  4740  			err = unpopulate(val, "HTTPHeadersToInsert", &a.HTTPHeadersToInsert)
  4741  			delete(rawMsg, key)
  4742  		case "name":
  4743  			err = unpopulate(val, "Name", &a.Name)
  4744  			delete(rawMsg, key)
  4745  		case "protocols":
  4746  			err = unpopulate(val, "Protocols", &a.Protocols)
  4747  			delete(rawMsg, key)
  4748  		case "ruleType":
  4749  			err = unpopulate(val, "RuleType", &a.RuleType)
  4750  			delete(rawMsg, key)
  4751  		case "sourceAddresses":
  4752  			err = unpopulate(val, "SourceAddresses", &a.SourceAddresses)
  4753  			delete(rawMsg, key)
  4754  		case "sourceIpGroups":
  4755  			err = unpopulate(val, "SourceIPGroups", &a.SourceIPGroups)
  4756  			delete(rawMsg, key)
  4757  		case "targetFqdns":
  4758  			err = unpopulate(val, "TargetFqdns", &a.TargetFqdns)
  4759  			delete(rawMsg, key)
  4760  		case "targetUrls":
  4761  			err = unpopulate(val, "TargetUrls", &a.TargetUrls)
  4762  			delete(rawMsg, key)
  4763  		case "terminateTLS":
  4764  			err = unpopulate(val, "TerminateTLS", &a.TerminateTLS)
  4765  			delete(rawMsg, key)
  4766  		case "webCategories":
  4767  			err = unpopulate(val, "WebCategories", &a.WebCategories)
  4768  			delete(rawMsg, key)
  4769  		}
  4770  		if err != nil {
  4771  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4772  		}
  4773  	}
  4774  	return nil
  4775  }
  4776  
  4777  // MarshalJSON implements the json.Marshaller interface for type ApplicationSecurityGroup.
  4778  func (a ApplicationSecurityGroup) MarshalJSON() ([]byte, error) {
  4779  	objectMap := make(map[string]any)
  4780  	populate(objectMap, "etag", a.Etag)
  4781  	populate(objectMap, "id", a.ID)
  4782  	populate(objectMap, "location", a.Location)
  4783  	populate(objectMap, "name", a.Name)
  4784  	populate(objectMap, "properties", a.Properties)
  4785  	populate(objectMap, "tags", a.Tags)
  4786  	populate(objectMap, "type", a.Type)
  4787  	return json.Marshal(objectMap)
  4788  }
  4789  
  4790  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationSecurityGroup.
  4791  func (a *ApplicationSecurityGroup) UnmarshalJSON(data []byte) error {
  4792  	var rawMsg map[string]json.RawMessage
  4793  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  4794  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4795  	}
  4796  	for key, val := range rawMsg {
  4797  		var err error
  4798  		switch key {
  4799  		case "etag":
  4800  			err = unpopulate(val, "Etag", &a.Etag)
  4801  			delete(rawMsg, key)
  4802  		case "id":
  4803  			err = unpopulate(val, "ID", &a.ID)
  4804  			delete(rawMsg, key)
  4805  		case "location":
  4806  			err = unpopulate(val, "Location", &a.Location)
  4807  			delete(rawMsg, key)
  4808  		case "name":
  4809  			err = unpopulate(val, "Name", &a.Name)
  4810  			delete(rawMsg, key)
  4811  		case "properties":
  4812  			err = unpopulate(val, "Properties", &a.Properties)
  4813  			delete(rawMsg, key)
  4814  		case "tags":
  4815  			err = unpopulate(val, "Tags", &a.Tags)
  4816  			delete(rawMsg, key)
  4817  		case "type":
  4818  			err = unpopulate(val, "Type", &a.Type)
  4819  			delete(rawMsg, key)
  4820  		}
  4821  		if err != nil {
  4822  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4823  		}
  4824  	}
  4825  	return nil
  4826  }
  4827  
  4828  // MarshalJSON implements the json.Marshaller interface for type ApplicationSecurityGroupListResult.
  4829  func (a ApplicationSecurityGroupListResult) MarshalJSON() ([]byte, error) {
  4830  	objectMap := make(map[string]any)
  4831  	populate(objectMap, "nextLink", a.NextLink)
  4832  	populate(objectMap, "value", a.Value)
  4833  	return json.Marshal(objectMap)
  4834  }
  4835  
  4836  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationSecurityGroupListResult.
  4837  func (a *ApplicationSecurityGroupListResult) UnmarshalJSON(data []byte) error {
  4838  	var rawMsg map[string]json.RawMessage
  4839  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  4840  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4841  	}
  4842  	for key, val := range rawMsg {
  4843  		var err error
  4844  		switch key {
  4845  		case "nextLink":
  4846  			err = unpopulate(val, "NextLink", &a.NextLink)
  4847  			delete(rawMsg, key)
  4848  		case "value":
  4849  			err = unpopulate(val, "Value", &a.Value)
  4850  			delete(rawMsg, key)
  4851  		}
  4852  		if err != nil {
  4853  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4854  		}
  4855  	}
  4856  	return nil
  4857  }
  4858  
  4859  // MarshalJSON implements the json.Marshaller interface for type ApplicationSecurityGroupPropertiesFormat.
  4860  func (a ApplicationSecurityGroupPropertiesFormat) MarshalJSON() ([]byte, error) {
  4861  	objectMap := make(map[string]any)
  4862  	populate(objectMap, "provisioningState", a.ProvisioningState)
  4863  	populate(objectMap, "resourceGuid", a.ResourceGUID)
  4864  	return json.Marshal(objectMap)
  4865  }
  4866  
  4867  // UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationSecurityGroupPropertiesFormat.
  4868  func (a *ApplicationSecurityGroupPropertiesFormat) UnmarshalJSON(data []byte) error {
  4869  	var rawMsg map[string]json.RawMessage
  4870  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  4871  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4872  	}
  4873  	for key, val := range rawMsg {
  4874  		var err error
  4875  		switch key {
  4876  		case "provisioningState":
  4877  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  4878  			delete(rawMsg, key)
  4879  		case "resourceGuid":
  4880  			err = unpopulate(val, "ResourceGUID", &a.ResourceGUID)
  4881  			delete(rawMsg, key)
  4882  		}
  4883  		if err != nil {
  4884  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4885  		}
  4886  	}
  4887  	return nil
  4888  }
  4889  
  4890  // MarshalJSON implements the json.Marshaller interface for type AuthorizationListResult.
  4891  func (a AuthorizationListResult) MarshalJSON() ([]byte, error) {
  4892  	objectMap := make(map[string]any)
  4893  	populate(objectMap, "nextLink", a.NextLink)
  4894  	populate(objectMap, "value", a.Value)
  4895  	return json.Marshal(objectMap)
  4896  }
  4897  
  4898  // UnmarshalJSON implements the json.Unmarshaller interface for type AuthorizationListResult.
  4899  func (a *AuthorizationListResult) UnmarshalJSON(data []byte) error {
  4900  	var rawMsg map[string]json.RawMessage
  4901  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  4902  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4903  	}
  4904  	for key, val := range rawMsg {
  4905  		var err error
  4906  		switch key {
  4907  		case "nextLink":
  4908  			err = unpopulate(val, "NextLink", &a.NextLink)
  4909  			delete(rawMsg, key)
  4910  		case "value":
  4911  			err = unpopulate(val, "Value", &a.Value)
  4912  			delete(rawMsg, key)
  4913  		}
  4914  		if err != nil {
  4915  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4916  		}
  4917  	}
  4918  	return nil
  4919  }
  4920  
  4921  // MarshalJSON implements the json.Marshaller interface for type AuthorizationPropertiesFormat.
  4922  func (a AuthorizationPropertiesFormat) MarshalJSON() ([]byte, error) {
  4923  	objectMap := make(map[string]any)
  4924  	populate(objectMap, "authorizationKey", a.AuthorizationKey)
  4925  	populate(objectMap, "authorizationUseStatus", a.AuthorizationUseStatus)
  4926  	populate(objectMap, "connectionResourceUri", a.ConnectionResourceURI)
  4927  	populate(objectMap, "provisioningState", a.ProvisioningState)
  4928  	return json.Marshal(objectMap)
  4929  }
  4930  
  4931  // UnmarshalJSON implements the json.Unmarshaller interface for type AuthorizationPropertiesFormat.
  4932  func (a *AuthorizationPropertiesFormat) UnmarshalJSON(data []byte) error {
  4933  	var rawMsg map[string]json.RawMessage
  4934  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  4935  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4936  	}
  4937  	for key, val := range rawMsg {
  4938  		var err error
  4939  		switch key {
  4940  		case "authorizationKey":
  4941  			err = unpopulate(val, "AuthorizationKey", &a.AuthorizationKey)
  4942  			delete(rawMsg, key)
  4943  		case "authorizationUseStatus":
  4944  			err = unpopulate(val, "AuthorizationUseStatus", &a.AuthorizationUseStatus)
  4945  			delete(rawMsg, key)
  4946  		case "connectionResourceUri":
  4947  			err = unpopulate(val, "ConnectionResourceURI", &a.ConnectionResourceURI)
  4948  			delete(rawMsg, key)
  4949  		case "provisioningState":
  4950  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  4951  			delete(rawMsg, key)
  4952  		}
  4953  		if err != nil {
  4954  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4955  		}
  4956  	}
  4957  	return nil
  4958  }
  4959  
  4960  // MarshalJSON implements the json.Marshaller interface for type AutoApprovedPrivateLinkService.
  4961  func (a AutoApprovedPrivateLinkService) MarshalJSON() ([]byte, error) {
  4962  	objectMap := make(map[string]any)
  4963  	populate(objectMap, "privateLinkService", a.PrivateLinkService)
  4964  	return json.Marshal(objectMap)
  4965  }
  4966  
  4967  // UnmarshalJSON implements the json.Unmarshaller interface for type AutoApprovedPrivateLinkService.
  4968  func (a *AutoApprovedPrivateLinkService) UnmarshalJSON(data []byte) error {
  4969  	var rawMsg map[string]json.RawMessage
  4970  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  4971  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4972  	}
  4973  	for key, val := range rawMsg {
  4974  		var err error
  4975  		switch key {
  4976  		case "privateLinkService":
  4977  			err = unpopulate(val, "PrivateLinkService", &a.PrivateLinkService)
  4978  			delete(rawMsg, key)
  4979  		}
  4980  		if err != nil {
  4981  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  4982  		}
  4983  	}
  4984  	return nil
  4985  }
  4986  
  4987  // MarshalJSON implements the json.Marshaller interface for type AutoApprovedPrivateLinkServicesResult.
  4988  func (a AutoApprovedPrivateLinkServicesResult) MarshalJSON() ([]byte, error) {
  4989  	objectMap := make(map[string]any)
  4990  	populate(objectMap, "nextLink", a.NextLink)
  4991  	populate(objectMap, "value", a.Value)
  4992  	return json.Marshal(objectMap)
  4993  }
  4994  
  4995  // UnmarshalJSON implements the json.Unmarshaller interface for type AutoApprovedPrivateLinkServicesResult.
  4996  func (a *AutoApprovedPrivateLinkServicesResult) UnmarshalJSON(data []byte) error {
  4997  	var rawMsg map[string]json.RawMessage
  4998  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  4999  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5000  	}
  5001  	for key, val := range rawMsg {
  5002  		var err error
  5003  		switch key {
  5004  		case "nextLink":
  5005  			err = unpopulate(val, "NextLink", &a.NextLink)
  5006  			delete(rawMsg, key)
  5007  		case "value":
  5008  			err = unpopulate(val, "Value", &a.Value)
  5009  			delete(rawMsg, key)
  5010  		}
  5011  		if err != nil {
  5012  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5013  		}
  5014  	}
  5015  	return nil
  5016  }
  5017  
  5018  // MarshalJSON implements the json.Marshaller interface for type Availability.
  5019  func (a Availability) MarshalJSON() ([]byte, error) {
  5020  	objectMap := make(map[string]any)
  5021  	populate(objectMap, "blobDuration", a.BlobDuration)
  5022  	populate(objectMap, "retention", a.Retention)
  5023  	populate(objectMap, "timeGrain", a.TimeGrain)
  5024  	return json.Marshal(objectMap)
  5025  }
  5026  
  5027  // UnmarshalJSON implements the json.Unmarshaller interface for type Availability.
  5028  func (a *Availability) UnmarshalJSON(data []byte) error {
  5029  	var rawMsg map[string]json.RawMessage
  5030  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5031  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5032  	}
  5033  	for key, val := range rawMsg {
  5034  		var err error
  5035  		switch key {
  5036  		case "blobDuration":
  5037  			err = unpopulate(val, "BlobDuration", &a.BlobDuration)
  5038  			delete(rawMsg, key)
  5039  		case "retention":
  5040  			err = unpopulate(val, "Retention", &a.Retention)
  5041  			delete(rawMsg, key)
  5042  		case "timeGrain":
  5043  			err = unpopulate(val, "TimeGrain", &a.TimeGrain)
  5044  			delete(rawMsg, key)
  5045  		}
  5046  		if err != nil {
  5047  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5048  		}
  5049  	}
  5050  	return nil
  5051  }
  5052  
  5053  // MarshalJSON implements the json.Marshaller interface for type AvailableDelegation.
  5054  func (a AvailableDelegation) MarshalJSON() ([]byte, error) {
  5055  	objectMap := make(map[string]any)
  5056  	populate(objectMap, "actions", a.Actions)
  5057  	populate(objectMap, "id", a.ID)
  5058  	populate(objectMap, "name", a.Name)
  5059  	populate(objectMap, "serviceName", a.ServiceName)
  5060  	populate(objectMap, "type", a.Type)
  5061  	return json.Marshal(objectMap)
  5062  }
  5063  
  5064  // UnmarshalJSON implements the json.Unmarshaller interface for type AvailableDelegation.
  5065  func (a *AvailableDelegation) UnmarshalJSON(data []byte) error {
  5066  	var rawMsg map[string]json.RawMessage
  5067  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5068  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5069  	}
  5070  	for key, val := range rawMsg {
  5071  		var err error
  5072  		switch key {
  5073  		case "actions":
  5074  			err = unpopulate(val, "Actions", &a.Actions)
  5075  			delete(rawMsg, key)
  5076  		case "id":
  5077  			err = unpopulate(val, "ID", &a.ID)
  5078  			delete(rawMsg, key)
  5079  		case "name":
  5080  			err = unpopulate(val, "Name", &a.Name)
  5081  			delete(rawMsg, key)
  5082  		case "serviceName":
  5083  			err = unpopulate(val, "ServiceName", &a.ServiceName)
  5084  			delete(rawMsg, key)
  5085  		case "type":
  5086  			err = unpopulate(val, "Type", &a.Type)
  5087  			delete(rawMsg, key)
  5088  		}
  5089  		if err != nil {
  5090  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5091  		}
  5092  	}
  5093  	return nil
  5094  }
  5095  
  5096  // MarshalJSON implements the json.Marshaller interface for type AvailableDelegationsResult.
  5097  func (a AvailableDelegationsResult) MarshalJSON() ([]byte, error) {
  5098  	objectMap := make(map[string]any)
  5099  	populate(objectMap, "nextLink", a.NextLink)
  5100  	populate(objectMap, "value", a.Value)
  5101  	return json.Marshal(objectMap)
  5102  }
  5103  
  5104  // UnmarshalJSON implements the json.Unmarshaller interface for type AvailableDelegationsResult.
  5105  func (a *AvailableDelegationsResult) UnmarshalJSON(data []byte) error {
  5106  	var rawMsg map[string]json.RawMessage
  5107  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5108  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5109  	}
  5110  	for key, val := range rawMsg {
  5111  		var err error
  5112  		switch key {
  5113  		case "nextLink":
  5114  			err = unpopulate(val, "NextLink", &a.NextLink)
  5115  			delete(rawMsg, key)
  5116  		case "value":
  5117  			err = unpopulate(val, "Value", &a.Value)
  5118  			delete(rawMsg, key)
  5119  		}
  5120  		if err != nil {
  5121  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5122  		}
  5123  	}
  5124  	return nil
  5125  }
  5126  
  5127  // MarshalJSON implements the json.Marshaller interface for type AvailablePrivateEndpointType.
  5128  func (a AvailablePrivateEndpointType) MarshalJSON() ([]byte, error) {
  5129  	objectMap := make(map[string]any)
  5130  	populate(objectMap, "displayName", a.DisplayName)
  5131  	populate(objectMap, "id", a.ID)
  5132  	populate(objectMap, "name", a.Name)
  5133  	populate(objectMap, "resourceName", a.ResourceName)
  5134  	populate(objectMap, "type", a.Type)
  5135  	return json.Marshal(objectMap)
  5136  }
  5137  
  5138  // UnmarshalJSON implements the json.Unmarshaller interface for type AvailablePrivateEndpointType.
  5139  func (a *AvailablePrivateEndpointType) UnmarshalJSON(data []byte) error {
  5140  	var rawMsg map[string]json.RawMessage
  5141  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5142  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5143  	}
  5144  	for key, val := range rawMsg {
  5145  		var err error
  5146  		switch key {
  5147  		case "displayName":
  5148  			err = unpopulate(val, "DisplayName", &a.DisplayName)
  5149  			delete(rawMsg, key)
  5150  		case "id":
  5151  			err = unpopulate(val, "ID", &a.ID)
  5152  			delete(rawMsg, key)
  5153  		case "name":
  5154  			err = unpopulate(val, "Name", &a.Name)
  5155  			delete(rawMsg, key)
  5156  		case "resourceName":
  5157  			err = unpopulate(val, "ResourceName", &a.ResourceName)
  5158  			delete(rawMsg, key)
  5159  		case "type":
  5160  			err = unpopulate(val, "Type", &a.Type)
  5161  			delete(rawMsg, key)
  5162  		}
  5163  		if err != nil {
  5164  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5165  		}
  5166  	}
  5167  	return nil
  5168  }
  5169  
  5170  // MarshalJSON implements the json.Marshaller interface for type AvailablePrivateEndpointTypesResult.
  5171  func (a AvailablePrivateEndpointTypesResult) MarshalJSON() ([]byte, error) {
  5172  	objectMap := make(map[string]any)
  5173  	populate(objectMap, "nextLink", a.NextLink)
  5174  	populate(objectMap, "value", a.Value)
  5175  	return json.Marshal(objectMap)
  5176  }
  5177  
  5178  // UnmarshalJSON implements the json.Unmarshaller interface for type AvailablePrivateEndpointTypesResult.
  5179  func (a *AvailablePrivateEndpointTypesResult) UnmarshalJSON(data []byte) error {
  5180  	var rawMsg map[string]json.RawMessage
  5181  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5182  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5183  	}
  5184  	for key, val := range rawMsg {
  5185  		var err error
  5186  		switch key {
  5187  		case "nextLink":
  5188  			err = unpopulate(val, "NextLink", &a.NextLink)
  5189  			delete(rawMsg, key)
  5190  		case "value":
  5191  			err = unpopulate(val, "Value", &a.Value)
  5192  			delete(rawMsg, key)
  5193  		}
  5194  		if err != nil {
  5195  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5196  		}
  5197  	}
  5198  	return nil
  5199  }
  5200  
  5201  // MarshalJSON implements the json.Marshaller interface for type AvailableProvidersList.
  5202  func (a AvailableProvidersList) MarshalJSON() ([]byte, error) {
  5203  	objectMap := make(map[string]any)
  5204  	populate(objectMap, "countries", a.Countries)
  5205  	return json.Marshal(objectMap)
  5206  }
  5207  
  5208  // UnmarshalJSON implements the json.Unmarshaller interface for type AvailableProvidersList.
  5209  func (a *AvailableProvidersList) UnmarshalJSON(data []byte) error {
  5210  	var rawMsg map[string]json.RawMessage
  5211  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5212  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5213  	}
  5214  	for key, val := range rawMsg {
  5215  		var err error
  5216  		switch key {
  5217  		case "countries":
  5218  			err = unpopulate(val, "Countries", &a.Countries)
  5219  			delete(rawMsg, key)
  5220  		}
  5221  		if err != nil {
  5222  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5223  		}
  5224  	}
  5225  	return nil
  5226  }
  5227  
  5228  // MarshalJSON implements the json.Marshaller interface for type AvailableProvidersListCity.
  5229  func (a AvailableProvidersListCity) MarshalJSON() ([]byte, error) {
  5230  	objectMap := make(map[string]any)
  5231  	populate(objectMap, "cityName", a.CityName)
  5232  	populate(objectMap, "providers", a.Providers)
  5233  	return json.Marshal(objectMap)
  5234  }
  5235  
  5236  // UnmarshalJSON implements the json.Unmarshaller interface for type AvailableProvidersListCity.
  5237  func (a *AvailableProvidersListCity) UnmarshalJSON(data []byte) error {
  5238  	var rawMsg map[string]json.RawMessage
  5239  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5240  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5241  	}
  5242  	for key, val := range rawMsg {
  5243  		var err error
  5244  		switch key {
  5245  		case "cityName":
  5246  			err = unpopulate(val, "CityName", &a.CityName)
  5247  			delete(rawMsg, key)
  5248  		case "providers":
  5249  			err = unpopulate(val, "Providers", &a.Providers)
  5250  			delete(rawMsg, key)
  5251  		}
  5252  		if err != nil {
  5253  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5254  		}
  5255  	}
  5256  	return nil
  5257  }
  5258  
  5259  // MarshalJSON implements the json.Marshaller interface for type AvailableProvidersListCountry.
  5260  func (a AvailableProvidersListCountry) MarshalJSON() ([]byte, error) {
  5261  	objectMap := make(map[string]any)
  5262  	populate(objectMap, "countryName", a.CountryName)
  5263  	populate(objectMap, "providers", a.Providers)
  5264  	populate(objectMap, "states", a.States)
  5265  	return json.Marshal(objectMap)
  5266  }
  5267  
  5268  // UnmarshalJSON implements the json.Unmarshaller interface for type AvailableProvidersListCountry.
  5269  func (a *AvailableProvidersListCountry) UnmarshalJSON(data []byte) error {
  5270  	var rawMsg map[string]json.RawMessage
  5271  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5272  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5273  	}
  5274  	for key, val := range rawMsg {
  5275  		var err error
  5276  		switch key {
  5277  		case "countryName":
  5278  			err = unpopulate(val, "CountryName", &a.CountryName)
  5279  			delete(rawMsg, key)
  5280  		case "providers":
  5281  			err = unpopulate(val, "Providers", &a.Providers)
  5282  			delete(rawMsg, key)
  5283  		case "states":
  5284  			err = unpopulate(val, "States", &a.States)
  5285  			delete(rawMsg, key)
  5286  		}
  5287  		if err != nil {
  5288  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5289  		}
  5290  	}
  5291  	return nil
  5292  }
  5293  
  5294  // MarshalJSON implements the json.Marshaller interface for type AvailableProvidersListParameters.
  5295  func (a AvailableProvidersListParameters) MarshalJSON() ([]byte, error) {
  5296  	objectMap := make(map[string]any)
  5297  	populate(objectMap, "azureLocations", a.AzureLocations)
  5298  	populate(objectMap, "city", a.City)
  5299  	populate(objectMap, "country", a.Country)
  5300  	populate(objectMap, "state", a.State)
  5301  	return json.Marshal(objectMap)
  5302  }
  5303  
  5304  // UnmarshalJSON implements the json.Unmarshaller interface for type AvailableProvidersListParameters.
  5305  func (a *AvailableProvidersListParameters) UnmarshalJSON(data []byte) error {
  5306  	var rawMsg map[string]json.RawMessage
  5307  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5308  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5309  	}
  5310  	for key, val := range rawMsg {
  5311  		var err error
  5312  		switch key {
  5313  		case "azureLocations":
  5314  			err = unpopulate(val, "AzureLocations", &a.AzureLocations)
  5315  			delete(rawMsg, key)
  5316  		case "city":
  5317  			err = unpopulate(val, "City", &a.City)
  5318  			delete(rawMsg, key)
  5319  		case "country":
  5320  			err = unpopulate(val, "Country", &a.Country)
  5321  			delete(rawMsg, key)
  5322  		case "state":
  5323  			err = unpopulate(val, "State", &a.State)
  5324  			delete(rawMsg, key)
  5325  		}
  5326  		if err != nil {
  5327  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5328  		}
  5329  	}
  5330  	return nil
  5331  }
  5332  
  5333  // MarshalJSON implements the json.Marshaller interface for type AvailableProvidersListState.
  5334  func (a AvailableProvidersListState) MarshalJSON() ([]byte, error) {
  5335  	objectMap := make(map[string]any)
  5336  	populate(objectMap, "cities", a.Cities)
  5337  	populate(objectMap, "providers", a.Providers)
  5338  	populate(objectMap, "stateName", a.StateName)
  5339  	return json.Marshal(objectMap)
  5340  }
  5341  
  5342  // UnmarshalJSON implements the json.Unmarshaller interface for type AvailableProvidersListState.
  5343  func (a *AvailableProvidersListState) UnmarshalJSON(data []byte) error {
  5344  	var rawMsg map[string]json.RawMessage
  5345  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5346  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5347  	}
  5348  	for key, val := range rawMsg {
  5349  		var err error
  5350  		switch key {
  5351  		case "cities":
  5352  			err = unpopulate(val, "Cities", &a.Cities)
  5353  			delete(rawMsg, key)
  5354  		case "providers":
  5355  			err = unpopulate(val, "Providers", &a.Providers)
  5356  			delete(rawMsg, key)
  5357  		case "stateName":
  5358  			err = unpopulate(val, "StateName", &a.StateName)
  5359  			delete(rawMsg, key)
  5360  		}
  5361  		if err != nil {
  5362  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5363  		}
  5364  	}
  5365  	return nil
  5366  }
  5367  
  5368  // MarshalJSON implements the json.Marshaller interface for type AvailableServiceAlias.
  5369  func (a AvailableServiceAlias) MarshalJSON() ([]byte, error) {
  5370  	objectMap := make(map[string]any)
  5371  	populate(objectMap, "id", a.ID)
  5372  	populate(objectMap, "name", a.Name)
  5373  	populate(objectMap, "resourceName", a.ResourceName)
  5374  	populate(objectMap, "type", a.Type)
  5375  	return json.Marshal(objectMap)
  5376  }
  5377  
  5378  // UnmarshalJSON implements the json.Unmarshaller interface for type AvailableServiceAlias.
  5379  func (a *AvailableServiceAlias) UnmarshalJSON(data []byte) error {
  5380  	var rawMsg map[string]json.RawMessage
  5381  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5382  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5383  	}
  5384  	for key, val := range rawMsg {
  5385  		var err error
  5386  		switch key {
  5387  		case "id":
  5388  			err = unpopulate(val, "ID", &a.ID)
  5389  			delete(rawMsg, key)
  5390  		case "name":
  5391  			err = unpopulate(val, "Name", &a.Name)
  5392  			delete(rawMsg, key)
  5393  		case "resourceName":
  5394  			err = unpopulate(val, "ResourceName", &a.ResourceName)
  5395  			delete(rawMsg, key)
  5396  		case "type":
  5397  			err = unpopulate(val, "Type", &a.Type)
  5398  			delete(rawMsg, key)
  5399  		}
  5400  		if err != nil {
  5401  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5402  		}
  5403  	}
  5404  	return nil
  5405  }
  5406  
  5407  // MarshalJSON implements the json.Marshaller interface for type AvailableServiceAliasesResult.
  5408  func (a AvailableServiceAliasesResult) MarshalJSON() ([]byte, error) {
  5409  	objectMap := make(map[string]any)
  5410  	populate(objectMap, "nextLink", a.NextLink)
  5411  	populate(objectMap, "value", a.Value)
  5412  	return json.Marshal(objectMap)
  5413  }
  5414  
  5415  // UnmarshalJSON implements the json.Unmarshaller interface for type AvailableServiceAliasesResult.
  5416  func (a *AvailableServiceAliasesResult) UnmarshalJSON(data []byte) error {
  5417  	var rawMsg map[string]json.RawMessage
  5418  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5419  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5420  	}
  5421  	for key, val := range rawMsg {
  5422  		var err error
  5423  		switch key {
  5424  		case "nextLink":
  5425  			err = unpopulate(val, "NextLink", &a.NextLink)
  5426  			delete(rawMsg, key)
  5427  		case "value":
  5428  			err = unpopulate(val, "Value", &a.Value)
  5429  			delete(rawMsg, key)
  5430  		}
  5431  		if err != nil {
  5432  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5433  		}
  5434  	}
  5435  	return nil
  5436  }
  5437  
  5438  // MarshalJSON implements the json.Marshaller interface for type AzureAsyncOperationResult.
  5439  func (a AzureAsyncOperationResult) MarshalJSON() ([]byte, error) {
  5440  	objectMap := make(map[string]any)
  5441  	populate(objectMap, "error", a.Error)
  5442  	populate(objectMap, "status", a.Status)
  5443  	return json.Marshal(objectMap)
  5444  }
  5445  
  5446  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureAsyncOperationResult.
  5447  func (a *AzureAsyncOperationResult) UnmarshalJSON(data []byte) error {
  5448  	var rawMsg map[string]json.RawMessage
  5449  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5450  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5451  	}
  5452  	for key, val := range rawMsg {
  5453  		var err error
  5454  		switch key {
  5455  		case "error":
  5456  			err = unpopulate(val, "Error", &a.Error)
  5457  			delete(rawMsg, key)
  5458  		case "status":
  5459  			err = unpopulate(val, "Status", &a.Status)
  5460  			delete(rawMsg, key)
  5461  		}
  5462  		if err != nil {
  5463  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5464  		}
  5465  	}
  5466  	return nil
  5467  }
  5468  
  5469  // MarshalJSON implements the json.Marshaller interface for type AzureFirewall.
  5470  func (a AzureFirewall) MarshalJSON() ([]byte, error) {
  5471  	objectMap := make(map[string]any)
  5472  	populate(objectMap, "etag", a.Etag)
  5473  	populate(objectMap, "id", a.ID)
  5474  	populate(objectMap, "location", a.Location)
  5475  	populate(objectMap, "name", a.Name)
  5476  	populate(objectMap, "properties", a.Properties)
  5477  	populate(objectMap, "tags", a.Tags)
  5478  	populate(objectMap, "type", a.Type)
  5479  	populate(objectMap, "zones", a.Zones)
  5480  	return json.Marshal(objectMap)
  5481  }
  5482  
  5483  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureFirewall.
  5484  func (a *AzureFirewall) UnmarshalJSON(data []byte) error {
  5485  	var rawMsg map[string]json.RawMessage
  5486  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5487  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5488  	}
  5489  	for key, val := range rawMsg {
  5490  		var err error
  5491  		switch key {
  5492  		case "etag":
  5493  			err = unpopulate(val, "Etag", &a.Etag)
  5494  			delete(rawMsg, key)
  5495  		case "id":
  5496  			err = unpopulate(val, "ID", &a.ID)
  5497  			delete(rawMsg, key)
  5498  		case "location":
  5499  			err = unpopulate(val, "Location", &a.Location)
  5500  			delete(rawMsg, key)
  5501  		case "name":
  5502  			err = unpopulate(val, "Name", &a.Name)
  5503  			delete(rawMsg, key)
  5504  		case "properties":
  5505  			err = unpopulate(val, "Properties", &a.Properties)
  5506  			delete(rawMsg, key)
  5507  		case "tags":
  5508  			err = unpopulate(val, "Tags", &a.Tags)
  5509  			delete(rawMsg, key)
  5510  		case "type":
  5511  			err = unpopulate(val, "Type", &a.Type)
  5512  			delete(rawMsg, key)
  5513  		case "zones":
  5514  			err = unpopulate(val, "Zones", &a.Zones)
  5515  			delete(rawMsg, key)
  5516  		}
  5517  		if err != nil {
  5518  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5519  		}
  5520  	}
  5521  	return nil
  5522  }
  5523  
  5524  // MarshalJSON implements the json.Marshaller interface for type AzureFirewallApplicationRule.
  5525  func (a AzureFirewallApplicationRule) MarshalJSON() ([]byte, error) {
  5526  	objectMap := make(map[string]any)
  5527  	populate(objectMap, "description", a.Description)
  5528  	populate(objectMap, "fqdnTags", a.FqdnTags)
  5529  	populate(objectMap, "name", a.Name)
  5530  	populate(objectMap, "protocols", a.Protocols)
  5531  	populate(objectMap, "sourceAddresses", a.SourceAddresses)
  5532  	populate(objectMap, "sourceIpGroups", a.SourceIPGroups)
  5533  	populate(objectMap, "targetFqdns", a.TargetFqdns)
  5534  	return json.Marshal(objectMap)
  5535  }
  5536  
  5537  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureFirewallApplicationRule.
  5538  func (a *AzureFirewallApplicationRule) UnmarshalJSON(data []byte) error {
  5539  	var rawMsg map[string]json.RawMessage
  5540  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5541  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5542  	}
  5543  	for key, val := range rawMsg {
  5544  		var err error
  5545  		switch key {
  5546  		case "description":
  5547  			err = unpopulate(val, "Description", &a.Description)
  5548  			delete(rawMsg, key)
  5549  		case "fqdnTags":
  5550  			err = unpopulate(val, "FqdnTags", &a.FqdnTags)
  5551  			delete(rawMsg, key)
  5552  		case "name":
  5553  			err = unpopulate(val, "Name", &a.Name)
  5554  			delete(rawMsg, key)
  5555  		case "protocols":
  5556  			err = unpopulate(val, "Protocols", &a.Protocols)
  5557  			delete(rawMsg, key)
  5558  		case "sourceAddresses":
  5559  			err = unpopulate(val, "SourceAddresses", &a.SourceAddresses)
  5560  			delete(rawMsg, key)
  5561  		case "sourceIpGroups":
  5562  			err = unpopulate(val, "SourceIPGroups", &a.SourceIPGroups)
  5563  			delete(rawMsg, key)
  5564  		case "targetFqdns":
  5565  			err = unpopulate(val, "TargetFqdns", &a.TargetFqdns)
  5566  			delete(rawMsg, key)
  5567  		}
  5568  		if err != nil {
  5569  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5570  		}
  5571  	}
  5572  	return nil
  5573  }
  5574  
  5575  // MarshalJSON implements the json.Marshaller interface for type AzureFirewallApplicationRuleCollection.
  5576  func (a AzureFirewallApplicationRuleCollection) MarshalJSON() ([]byte, error) {
  5577  	objectMap := make(map[string]any)
  5578  	populate(objectMap, "etag", a.Etag)
  5579  	populate(objectMap, "id", a.ID)
  5580  	populate(objectMap, "name", a.Name)
  5581  	populate(objectMap, "properties", a.Properties)
  5582  	return json.Marshal(objectMap)
  5583  }
  5584  
  5585  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureFirewallApplicationRuleCollection.
  5586  func (a *AzureFirewallApplicationRuleCollection) UnmarshalJSON(data []byte) error {
  5587  	var rawMsg map[string]json.RawMessage
  5588  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5589  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5590  	}
  5591  	for key, val := range rawMsg {
  5592  		var err error
  5593  		switch key {
  5594  		case "etag":
  5595  			err = unpopulate(val, "Etag", &a.Etag)
  5596  			delete(rawMsg, key)
  5597  		case "id":
  5598  			err = unpopulate(val, "ID", &a.ID)
  5599  			delete(rawMsg, key)
  5600  		case "name":
  5601  			err = unpopulate(val, "Name", &a.Name)
  5602  			delete(rawMsg, key)
  5603  		case "properties":
  5604  			err = unpopulate(val, "Properties", &a.Properties)
  5605  			delete(rawMsg, key)
  5606  		}
  5607  		if err != nil {
  5608  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5609  		}
  5610  	}
  5611  	return nil
  5612  }
  5613  
  5614  // MarshalJSON implements the json.Marshaller interface for type AzureFirewallApplicationRuleCollectionPropertiesFormat.
  5615  func (a AzureFirewallApplicationRuleCollectionPropertiesFormat) MarshalJSON() ([]byte, error) {
  5616  	objectMap := make(map[string]any)
  5617  	populate(objectMap, "action", a.Action)
  5618  	populate(objectMap, "priority", a.Priority)
  5619  	populate(objectMap, "provisioningState", a.ProvisioningState)
  5620  	populate(objectMap, "rules", a.Rules)
  5621  	return json.Marshal(objectMap)
  5622  }
  5623  
  5624  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureFirewallApplicationRuleCollectionPropertiesFormat.
  5625  func (a *AzureFirewallApplicationRuleCollectionPropertiesFormat) UnmarshalJSON(data []byte) error {
  5626  	var rawMsg map[string]json.RawMessage
  5627  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5628  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5629  	}
  5630  	for key, val := range rawMsg {
  5631  		var err error
  5632  		switch key {
  5633  		case "action":
  5634  			err = unpopulate(val, "Action", &a.Action)
  5635  			delete(rawMsg, key)
  5636  		case "priority":
  5637  			err = unpopulate(val, "Priority", &a.Priority)
  5638  			delete(rawMsg, key)
  5639  		case "provisioningState":
  5640  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  5641  			delete(rawMsg, key)
  5642  		case "rules":
  5643  			err = unpopulate(val, "Rules", &a.Rules)
  5644  			delete(rawMsg, key)
  5645  		}
  5646  		if err != nil {
  5647  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5648  		}
  5649  	}
  5650  	return nil
  5651  }
  5652  
  5653  // MarshalJSON implements the json.Marshaller interface for type AzureFirewallApplicationRuleProtocol.
  5654  func (a AzureFirewallApplicationRuleProtocol) MarshalJSON() ([]byte, error) {
  5655  	objectMap := make(map[string]any)
  5656  	populate(objectMap, "port", a.Port)
  5657  	populate(objectMap, "protocolType", a.ProtocolType)
  5658  	return json.Marshal(objectMap)
  5659  }
  5660  
  5661  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureFirewallApplicationRuleProtocol.
  5662  func (a *AzureFirewallApplicationRuleProtocol) UnmarshalJSON(data []byte) error {
  5663  	var rawMsg map[string]json.RawMessage
  5664  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5665  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5666  	}
  5667  	for key, val := range rawMsg {
  5668  		var err error
  5669  		switch key {
  5670  		case "port":
  5671  			err = unpopulate(val, "Port", &a.Port)
  5672  			delete(rawMsg, key)
  5673  		case "protocolType":
  5674  			err = unpopulate(val, "ProtocolType", &a.ProtocolType)
  5675  			delete(rawMsg, key)
  5676  		}
  5677  		if err != nil {
  5678  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5679  		}
  5680  	}
  5681  	return nil
  5682  }
  5683  
  5684  // MarshalJSON implements the json.Marshaller interface for type AzureFirewallAutoscaleConfiguration.
  5685  func (a AzureFirewallAutoscaleConfiguration) MarshalJSON() ([]byte, error) {
  5686  	objectMap := make(map[string]any)
  5687  	populate(objectMap, "maxCapacity", a.MaxCapacity)
  5688  	populate(objectMap, "minCapacity", a.MinCapacity)
  5689  	return json.Marshal(objectMap)
  5690  }
  5691  
  5692  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureFirewallAutoscaleConfiguration.
  5693  func (a *AzureFirewallAutoscaleConfiguration) UnmarshalJSON(data []byte) error {
  5694  	var rawMsg map[string]json.RawMessage
  5695  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5696  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5697  	}
  5698  	for key, val := range rawMsg {
  5699  		var err error
  5700  		switch key {
  5701  		case "maxCapacity":
  5702  			err = unpopulate(val, "MaxCapacity", &a.MaxCapacity)
  5703  			delete(rawMsg, key)
  5704  		case "minCapacity":
  5705  			err = unpopulate(val, "MinCapacity", &a.MinCapacity)
  5706  			delete(rawMsg, key)
  5707  		}
  5708  		if err != nil {
  5709  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5710  		}
  5711  	}
  5712  	return nil
  5713  }
  5714  
  5715  // MarshalJSON implements the json.Marshaller interface for type AzureFirewallFqdnTag.
  5716  func (a AzureFirewallFqdnTag) MarshalJSON() ([]byte, error) {
  5717  	objectMap := make(map[string]any)
  5718  	populate(objectMap, "etag", a.Etag)
  5719  	populate(objectMap, "id", a.ID)
  5720  	populate(objectMap, "location", a.Location)
  5721  	populate(objectMap, "name", a.Name)
  5722  	populate(objectMap, "properties", a.Properties)
  5723  	populate(objectMap, "tags", a.Tags)
  5724  	populate(objectMap, "type", a.Type)
  5725  	return json.Marshal(objectMap)
  5726  }
  5727  
  5728  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureFirewallFqdnTag.
  5729  func (a *AzureFirewallFqdnTag) UnmarshalJSON(data []byte) error {
  5730  	var rawMsg map[string]json.RawMessage
  5731  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5732  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5733  	}
  5734  	for key, val := range rawMsg {
  5735  		var err error
  5736  		switch key {
  5737  		case "etag":
  5738  			err = unpopulate(val, "Etag", &a.Etag)
  5739  			delete(rawMsg, key)
  5740  		case "id":
  5741  			err = unpopulate(val, "ID", &a.ID)
  5742  			delete(rawMsg, key)
  5743  		case "location":
  5744  			err = unpopulate(val, "Location", &a.Location)
  5745  			delete(rawMsg, key)
  5746  		case "name":
  5747  			err = unpopulate(val, "Name", &a.Name)
  5748  			delete(rawMsg, key)
  5749  		case "properties":
  5750  			err = unpopulate(val, "Properties", &a.Properties)
  5751  			delete(rawMsg, key)
  5752  		case "tags":
  5753  			err = unpopulate(val, "Tags", &a.Tags)
  5754  			delete(rawMsg, key)
  5755  		case "type":
  5756  			err = unpopulate(val, "Type", &a.Type)
  5757  			delete(rawMsg, key)
  5758  		}
  5759  		if err != nil {
  5760  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5761  		}
  5762  	}
  5763  	return nil
  5764  }
  5765  
  5766  // MarshalJSON implements the json.Marshaller interface for type AzureFirewallFqdnTagListResult.
  5767  func (a AzureFirewallFqdnTagListResult) MarshalJSON() ([]byte, error) {
  5768  	objectMap := make(map[string]any)
  5769  	populate(objectMap, "nextLink", a.NextLink)
  5770  	populate(objectMap, "value", a.Value)
  5771  	return json.Marshal(objectMap)
  5772  }
  5773  
  5774  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureFirewallFqdnTagListResult.
  5775  func (a *AzureFirewallFqdnTagListResult) UnmarshalJSON(data []byte) error {
  5776  	var rawMsg map[string]json.RawMessage
  5777  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5778  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5779  	}
  5780  	for key, val := range rawMsg {
  5781  		var err error
  5782  		switch key {
  5783  		case "nextLink":
  5784  			err = unpopulate(val, "NextLink", &a.NextLink)
  5785  			delete(rawMsg, key)
  5786  		case "value":
  5787  			err = unpopulate(val, "Value", &a.Value)
  5788  			delete(rawMsg, key)
  5789  		}
  5790  		if err != nil {
  5791  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5792  		}
  5793  	}
  5794  	return nil
  5795  }
  5796  
  5797  // MarshalJSON implements the json.Marshaller interface for type AzureFirewallFqdnTagPropertiesFormat.
  5798  func (a AzureFirewallFqdnTagPropertiesFormat) MarshalJSON() ([]byte, error) {
  5799  	objectMap := make(map[string]any)
  5800  	populate(objectMap, "fqdnTagName", a.FqdnTagName)
  5801  	populate(objectMap, "provisioningState", a.ProvisioningState)
  5802  	return json.Marshal(objectMap)
  5803  }
  5804  
  5805  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureFirewallFqdnTagPropertiesFormat.
  5806  func (a *AzureFirewallFqdnTagPropertiesFormat) UnmarshalJSON(data []byte) error {
  5807  	var rawMsg map[string]json.RawMessage
  5808  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5809  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5810  	}
  5811  	for key, val := range rawMsg {
  5812  		var err error
  5813  		switch key {
  5814  		case "fqdnTagName":
  5815  			err = unpopulate(val, "FqdnTagName", &a.FqdnTagName)
  5816  			delete(rawMsg, key)
  5817  		case "provisioningState":
  5818  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  5819  			delete(rawMsg, key)
  5820  		}
  5821  		if err != nil {
  5822  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5823  		}
  5824  	}
  5825  	return nil
  5826  }
  5827  
  5828  // MarshalJSON implements the json.Marshaller interface for type AzureFirewallIPConfiguration.
  5829  func (a AzureFirewallIPConfiguration) MarshalJSON() ([]byte, error) {
  5830  	objectMap := make(map[string]any)
  5831  	populate(objectMap, "etag", a.Etag)
  5832  	populate(objectMap, "id", a.ID)
  5833  	populate(objectMap, "name", a.Name)
  5834  	populate(objectMap, "properties", a.Properties)
  5835  	populate(objectMap, "type", a.Type)
  5836  	return json.Marshal(objectMap)
  5837  }
  5838  
  5839  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureFirewallIPConfiguration.
  5840  func (a *AzureFirewallIPConfiguration) UnmarshalJSON(data []byte) error {
  5841  	var rawMsg map[string]json.RawMessage
  5842  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5843  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5844  	}
  5845  	for key, val := range rawMsg {
  5846  		var err error
  5847  		switch key {
  5848  		case "etag":
  5849  			err = unpopulate(val, "Etag", &a.Etag)
  5850  			delete(rawMsg, key)
  5851  		case "id":
  5852  			err = unpopulate(val, "ID", &a.ID)
  5853  			delete(rawMsg, key)
  5854  		case "name":
  5855  			err = unpopulate(val, "Name", &a.Name)
  5856  			delete(rawMsg, key)
  5857  		case "properties":
  5858  			err = unpopulate(val, "Properties", &a.Properties)
  5859  			delete(rawMsg, key)
  5860  		case "type":
  5861  			err = unpopulate(val, "Type", &a.Type)
  5862  			delete(rawMsg, key)
  5863  		}
  5864  		if err != nil {
  5865  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5866  		}
  5867  	}
  5868  	return nil
  5869  }
  5870  
  5871  // MarshalJSON implements the json.Marshaller interface for type AzureFirewallIPConfigurationPropertiesFormat.
  5872  func (a AzureFirewallIPConfigurationPropertiesFormat) MarshalJSON() ([]byte, error) {
  5873  	objectMap := make(map[string]any)
  5874  	populate(objectMap, "privateIPAddress", a.PrivateIPAddress)
  5875  	populate(objectMap, "provisioningState", a.ProvisioningState)
  5876  	populate(objectMap, "publicIPAddress", a.PublicIPAddress)
  5877  	populate(objectMap, "subnet", a.Subnet)
  5878  	return json.Marshal(objectMap)
  5879  }
  5880  
  5881  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureFirewallIPConfigurationPropertiesFormat.
  5882  func (a *AzureFirewallIPConfigurationPropertiesFormat) UnmarshalJSON(data []byte) error {
  5883  	var rawMsg map[string]json.RawMessage
  5884  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5885  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5886  	}
  5887  	for key, val := range rawMsg {
  5888  		var err error
  5889  		switch key {
  5890  		case "privateIPAddress":
  5891  			err = unpopulate(val, "PrivateIPAddress", &a.PrivateIPAddress)
  5892  			delete(rawMsg, key)
  5893  		case "provisioningState":
  5894  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  5895  			delete(rawMsg, key)
  5896  		case "publicIPAddress":
  5897  			err = unpopulate(val, "PublicIPAddress", &a.PublicIPAddress)
  5898  			delete(rawMsg, key)
  5899  		case "subnet":
  5900  			err = unpopulate(val, "Subnet", &a.Subnet)
  5901  			delete(rawMsg, key)
  5902  		}
  5903  		if err != nil {
  5904  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5905  		}
  5906  	}
  5907  	return nil
  5908  }
  5909  
  5910  // MarshalJSON implements the json.Marshaller interface for type AzureFirewallIPGroups.
  5911  func (a AzureFirewallIPGroups) MarshalJSON() ([]byte, error) {
  5912  	objectMap := make(map[string]any)
  5913  	populate(objectMap, "changeNumber", a.ChangeNumber)
  5914  	populate(objectMap, "id", a.ID)
  5915  	return json.Marshal(objectMap)
  5916  }
  5917  
  5918  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureFirewallIPGroups.
  5919  func (a *AzureFirewallIPGroups) UnmarshalJSON(data []byte) error {
  5920  	var rawMsg map[string]json.RawMessage
  5921  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5922  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5923  	}
  5924  	for key, val := range rawMsg {
  5925  		var err error
  5926  		switch key {
  5927  		case "changeNumber":
  5928  			err = unpopulate(val, "ChangeNumber", &a.ChangeNumber)
  5929  			delete(rawMsg, key)
  5930  		case "id":
  5931  			err = unpopulate(val, "ID", &a.ID)
  5932  			delete(rawMsg, key)
  5933  		}
  5934  		if err != nil {
  5935  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5936  		}
  5937  	}
  5938  	return nil
  5939  }
  5940  
  5941  // MarshalJSON implements the json.Marshaller interface for type AzureFirewallListResult.
  5942  func (a AzureFirewallListResult) MarshalJSON() ([]byte, error) {
  5943  	objectMap := make(map[string]any)
  5944  	populate(objectMap, "nextLink", a.NextLink)
  5945  	populate(objectMap, "value", a.Value)
  5946  	return json.Marshal(objectMap)
  5947  }
  5948  
  5949  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureFirewallListResult.
  5950  func (a *AzureFirewallListResult) UnmarshalJSON(data []byte) error {
  5951  	var rawMsg map[string]json.RawMessage
  5952  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5953  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5954  	}
  5955  	for key, val := range rawMsg {
  5956  		var err error
  5957  		switch key {
  5958  		case "nextLink":
  5959  			err = unpopulate(val, "NextLink", &a.NextLink)
  5960  			delete(rawMsg, key)
  5961  		case "value":
  5962  			err = unpopulate(val, "Value", &a.Value)
  5963  			delete(rawMsg, key)
  5964  		}
  5965  		if err != nil {
  5966  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5967  		}
  5968  	}
  5969  	return nil
  5970  }
  5971  
  5972  // MarshalJSON implements the json.Marshaller interface for type AzureFirewallNatRCAction.
  5973  func (a AzureFirewallNatRCAction) MarshalJSON() ([]byte, error) {
  5974  	objectMap := make(map[string]any)
  5975  	populate(objectMap, "type", a.Type)
  5976  	return json.Marshal(objectMap)
  5977  }
  5978  
  5979  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureFirewallNatRCAction.
  5980  func (a *AzureFirewallNatRCAction) UnmarshalJSON(data []byte) error {
  5981  	var rawMsg map[string]json.RawMessage
  5982  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  5983  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5984  	}
  5985  	for key, val := range rawMsg {
  5986  		var err error
  5987  		switch key {
  5988  		case "type":
  5989  			err = unpopulate(val, "Type", &a.Type)
  5990  			delete(rawMsg, key)
  5991  		}
  5992  		if err != nil {
  5993  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  5994  		}
  5995  	}
  5996  	return nil
  5997  }
  5998  
  5999  // MarshalJSON implements the json.Marshaller interface for type AzureFirewallNatRule.
  6000  func (a AzureFirewallNatRule) MarshalJSON() ([]byte, error) {
  6001  	objectMap := make(map[string]any)
  6002  	populate(objectMap, "description", a.Description)
  6003  	populate(objectMap, "destinationAddresses", a.DestinationAddresses)
  6004  	populate(objectMap, "destinationPorts", a.DestinationPorts)
  6005  	populate(objectMap, "name", a.Name)
  6006  	populate(objectMap, "protocols", a.Protocols)
  6007  	populate(objectMap, "sourceAddresses", a.SourceAddresses)
  6008  	populate(objectMap, "sourceIpGroups", a.SourceIPGroups)
  6009  	populate(objectMap, "translatedAddress", a.TranslatedAddress)
  6010  	populate(objectMap, "translatedFqdn", a.TranslatedFqdn)
  6011  	populate(objectMap, "translatedPort", a.TranslatedPort)
  6012  	return json.Marshal(objectMap)
  6013  }
  6014  
  6015  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureFirewallNatRule.
  6016  func (a *AzureFirewallNatRule) UnmarshalJSON(data []byte) error {
  6017  	var rawMsg map[string]json.RawMessage
  6018  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  6019  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6020  	}
  6021  	for key, val := range rawMsg {
  6022  		var err error
  6023  		switch key {
  6024  		case "description":
  6025  			err = unpopulate(val, "Description", &a.Description)
  6026  			delete(rawMsg, key)
  6027  		case "destinationAddresses":
  6028  			err = unpopulate(val, "DestinationAddresses", &a.DestinationAddresses)
  6029  			delete(rawMsg, key)
  6030  		case "destinationPorts":
  6031  			err = unpopulate(val, "DestinationPorts", &a.DestinationPorts)
  6032  			delete(rawMsg, key)
  6033  		case "name":
  6034  			err = unpopulate(val, "Name", &a.Name)
  6035  			delete(rawMsg, key)
  6036  		case "protocols":
  6037  			err = unpopulate(val, "Protocols", &a.Protocols)
  6038  			delete(rawMsg, key)
  6039  		case "sourceAddresses":
  6040  			err = unpopulate(val, "SourceAddresses", &a.SourceAddresses)
  6041  			delete(rawMsg, key)
  6042  		case "sourceIpGroups":
  6043  			err = unpopulate(val, "SourceIPGroups", &a.SourceIPGroups)
  6044  			delete(rawMsg, key)
  6045  		case "translatedAddress":
  6046  			err = unpopulate(val, "TranslatedAddress", &a.TranslatedAddress)
  6047  			delete(rawMsg, key)
  6048  		case "translatedFqdn":
  6049  			err = unpopulate(val, "TranslatedFqdn", &a.TranslatedFqdn)
  6050  			delete(rawMsg, key)
  6051  		case "translatedPort":
  6052  			err = unpopulate(val, "TranslatedPort", &a.TranslatedPort)
  6053  			delete(rawMsg, key)
  6054  		}
  6055  		if err != nil {
  6056  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6057  		}
  6058  	}
  6059  	return nil
  6060  }
  6061  
  6062  // MarshalJSON implements the json.Marshaller interface for type AzureFirewallNatRuleCollection.
  6063  func (a AzureFirewallNatRuleCollection) MarshalJSON() ([]byte, error) {
  6064  	objectMap := make(map[string]any)
  6065  	populate(objectMap, "etag", a.Etag)
  6066  	populate(objectMap, "id", a.ID)
  6067  	populate(objectMap, "name", a.Name)
  6068  	populate(objectMap, "properties", a.Properties)
  6069  	return json.Marshal(objectMap)
  6070  }
  6071  
  6072  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureFirewallNatRuleCollection.
  6073  func (a *AzureFirewallNatRuleCollection) UnmarshalJSON(data []byte) error {
  6074  	var rawMsg map[string]json.RawMessage
  6075  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  6076  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6077  	}
  6078  	for key, val := range rawMsg {
  6079  		var err error
  6080  		switch key {
  6081  		case "etag":
  6082  			err = unpopulate(val, "Etag", &a.Etag)
  6083  			delete(rawMsg, key)
  6084  		case "id":
  6085  			err = unpopulate(val, "ID", &a.ID)
  6086  			delete(rawMsg, key)
  6087  		case "name":
  6088  			err = unpopulate(val, "Name", &a.Name)
  6089  			delete(rawMsg, key)
  6090  		case "properties":
  6091  			err = unpopulate(val, "Properties", &a.Properties)
  6092  			delete(rawMsg, key)
  6093  		}
  6094  		if err != nil {
  6095  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6096  		}
  6097  	}
  6098  	return nil
  6099  }
  6100  
  6101  // MarshalJSON implements the json.Marshaller interface for type AzureFirewallNatRuleCollectionProperties.
  6102  func (a AzureFirewallNatRuleCollectionProperties) MarshalJSON() ([]byte, error) {
  6103  	objectMap := make(map[string]any)
  6104  	populate(objectMap, "action", a.Action)
  6105  	populate(objectMap, "priority", a.Priority)
  6106  	populate(objectMap, "provisioningState", a.ProvisioningState)
  6107  	populate(objectMap, "rules", a.Rules)
  6108  	return json.Marshal(objectMap)
  6109  }
  6110  
  6111  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureFirewallNatRuleCollectionProperties.
  6112  func (a *AzureFirewallNatRuleCollectionProperties) UnmarshalJSON(data []byte) error {
  6113  	var rawMsg map[string]json.RawMessage
  6114  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  6115  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6116  	}
  6117  	for key, val := range rawMsg {
  6118  		var err error
  6119  		switch key {
  6120  		case "action":
  6121  			err = unpopulate(val, "Action", &a.Action)
  6122  			delete(rawMsg, key)
  6123  		case "priority":
  6124  			err = unpopulate(val, "Priority", &a.Priority)
  6125  			delete(rawMsg, key)
  6126  		case "provisioningState":
  6127  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  6128  			delete(rawMsg, key)
  6129  		case "rules":
  6130  			err = unpopulate(val, "Rules", &a.Rules)
  6131  			delete(rawMsg, key)
  6132  		}
  6133  		if err != nil {
  6134  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6135  		}
  6136  	}
  6137  	return nil
  6138  }
  6139  
  6140  // MarshalJSON implements the json.Marshaller interface for type AzureFirewallNetworkRule.
  6141  func (a AzureFirewallNetworkRule) MarshalJSON() ([]byte, error) {
  6142  	objectMap := make(map[string]any)
  6143  	populate(objectMap, "description", a.Description)
  6144  	populate(objectMap, "destinationAddresses", a.DestinationAddresses)
  6145  	populate(objectMap, "destinationFqdns", a.DestinationFqdns)
  6146  	populate(objectMap, "destinationIpGroups", a.DestinationIPGroups)
  6147  	populate(objectMap, "destinationPorts", a.DestinationPorts)
  6148  	populate(objectMap, "name", a.Name)
  6149  	populate(objectMap, "protocols", a.Protocols)
  6150  	populate(objectMap, "sourceAddresses", a.SourceAddresses)
  6151  	populate(objectMap, "sourceIpGroups", a.SourceIPGroups)
  6152  	return json.Marshal(objectMap)
  6153  }
  6154  
  6155  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureFirewallNetworkRule.
  6156  func (a *AzureFirewallNetworkRule) UnmarshalJSON(data []byte) error {
  6157  	var rawMsg map[string]json.RawMessage
  6158  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  6159  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6160  	}
  6161  	for key, val := range rawMsg {
  6162  		var err error
  6163  		switch key {
  6164  		case "description":
  6165  			err = unpopulate(val, "Description", &a.Description)
  6166  			delete(rawMsg, key)
  6167  		case "destinationAddresses":
  6168  			err = unpopulate(val, "DestinationAddresses", &a.DestinationAddresses)
  6169  			delete(rawMsg, key)
  6170  		case "destinationFqdns":
  6171  			err = unpopulate(val, "DestinationFqdns", &a.DestinationFqdns)
  6172  			delete(rawMsg, key)
  6173  		case "destinationIpGroups":
  6174  			err = unpopulate(val, "DestinationIPGroups", &a.DestinationIPGroups)
  6175  			delete(rawMsg, key)
  6176  		case "destinationPorts":
  6177  			err = unpopulate(val, "DestinationPorts", &a.DestinationPorts)
  6178  			delete(rawMsg, key)
  6179  		case "name":
  6180  			err = unpopulate(val, "Name", &a.Name)
  6181  			delete(rawMsg, key)
  6182  		case "protocols":
  6183  			err = unpopulate(val, "Protocols", &a.Protocols)
  6184  			delete(rawMsg, key)
  6185  		case "sourceAddresses":
  6186  			err = unpopulate(val, "SourceAddresses", &a.SourceAddresses)
  6187  			delete(rawMsg, key)
  6188  		case "sourceIpGroups":
  6189  			err = unpopulate(val, "SourceIPGroups", &a.SourceIPGroups)
  6190  			delete(rawMsg, key)
  6191  		}
  6192  		if err != nil {
  6193  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6194  		}
  6195  	}
  6196  	return nil
  6197  }
  6198  
  6199  // MarshalJSON implements the json.Marshaller interface for type AzureFirewallNetworkRuleCollection.
  6200  func (a AzureFirewallNetworkRuleCollection) MarshalJSON() ([]byte, error) {
  6201  	objectMap := make(map[string]any)
  6202  	populate(objectMap, "etag", a.Etag)
  6203  	populate(objectMap, "id", a.ID)
  6204  	populate(objectMap, "name", a.Name)
  6205  	populate(objectMap, "properties", a.Properties)
  6206  	return json.Marshal(objectMap)
  6207  }
  6208  
  6209  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureFirewallNetworkRuleCollection.
  6210  func (a *AzureFirewallNetworkRuleCollection) UnmarshalJSON(data []byte) error {
  6211  	var rawMsg map[string]json.RawMessage
  6212  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  6213  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6214  	}
  6215  	for key, val := range rawMsg {
  6216  		var err error
  6217  		switch key {
  6218  		case "etag":
  6219  			err = unpopulate(val, "Etag", &a.Etag)
  6220  			delete(rawMsg, key)
  6221  		case "id":
  6222  			err = unpopulate(val, "ID", &a.ID)
  6223  			delete(rawMsg, key)
  6224  		case "name":
  6225  			err = unpopulate(val, "Name", &a.Name)
  6226  			delete(rawMsg, key)
  6227  		case "properties":
  6228  			err = unpopulate(val, "Properties", &a.Properties)
  6229  			delete(rawMsg, key)
  6230  		}
  6231  		if err != nil {
  6232  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6233  		}
  6234  	}
  6235  	return nil
  6236  }
  6237  
  6238  // MarshalJSON implements the json.Marshaller interface for type AzureFirewallNetworkRuleCollectionPropertiesFormat.
  6239  func (a AzureFirewallNetworkRuleCollectionPropertiesFormat) MarshalJSON() ([]byte, error) {
  6240  	objectMap := make(map[string]any)
  6241  	populate(objectMap, "action", a.Action)
  6242  	populate(objectMap, "priority", a.Priority)
  6243  	populate(objectMap, "provisioningState", a.ProvisioningState)
  6244  	populate(objectMap, "rules", a.Rules)
  6245  	return json.Marshal(objectMap)
  6246  }
  6247  
  6248  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureFirewallNetworkRuleCollectionPropertiesFormat.
  6249  func (a *AzureFirewallNetworkRuleCollectionPropertiesFormat) UnmarshalJSON(data []byte) error {
  6250  	var rawMsg map[string]json.RawMessage
  6251  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  6252  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6253  	}
  6254  	for key, val := range rawMsg {
  6255  		var err error
  6256  		switch key {
  6257  		case "action":
  6258  			err = unpopulate(val, "Action", &a.Action)
  6259  			delete(rawMsg, key)
  6260  		case "priority":
  6261  			err = unpopulate(val, "Priority", &a.Priority)
  6262  			delete(rawMsg, key)
  6263  		case "provisioningState":
  6264  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  6265  			delete(rawMsg, key)
  6266  		case "rules":
  6267  			err = unpopulate(val, "Rules", &a.Rules)
  6268  			delete(rawMsg, key)
  6269  		}
  6270  		if err != nil {
  6271  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6272  		}
  6273  	}
  6274  	return nil
  6275  }
  6276  
  6277  // MarshalJSON implements the json.Marshaller interface for type AzureFirewallPacketCaptureFlags.
  6278  func (a AzureFirewallPacketCaptureFlags) MarshalJSON() ([]byte, error) {
  6279  	objectMap := make(map[string]any)
  6280  	populate(objectMap, "type", a.Type)
  6281  	return json.Marshal(objectMap)
  6282  }
  6283  
  6284  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureFirewallPacketCaptureFlags.
  6285  func (a *AzureFirewallPacketCaptureFlags) UnmarshalJSON(data []byte) error {
  6286  	var rawMsg map[string]json.RawMessage
  6287  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  6288  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6289  	}
  6290  	for key, val := range rawMsg {
  6291  		var err error
  6292  		switch key {
  6293  		case "type":
  6294  			err = unpopulate(val, "Type", &a.Type)
  6295  			delete(rawMsg, key)
  6296  		}
  6297  		if err != nil {
  6298  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6299  		}
  6300  	}
  6301  	return nil
  6302  }
  6303  
  6304  // MarshalJSON implements the json.Marshaller interface for type AzureFirewallPacketCaptureRule.
  6305  func (a AzureFirewallPacketCaptureRule) MarshalJSON() ([]byte, error) {
  6306  	objectMap := make(map[string]any)
  6307  	populate(objectMap, "destinationPorts", a.DestinationPorts)
  6308  	populate(objectMap, "destinations", a.Destinations)
  6309  	populate(objectMap, "sources", a.Sources)
  6310  	return json.Marshal(objectMap)
  6311  }
  6312  
  6313  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureFirewallPacketCaptureRule.
  6314  func (a *AzureFirewallPacketCaptureRule) UnmarshalJSON(data []byte) error {
  6315  	var rawMsg map[string]json.RawMessage
  6316  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  6317  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6318  	}
  6319  	for key, val := range rawMsg {
  6320  		var err error
  6321  		switch key {
  6322  		case "destinationPorts":
  6323  			err = unpopulate(val, "DestinationPorts", &a.DestinationPorts)
  6324  			delete(rawMsg, key)
  6325  		case "destinations":
  6326  			err = unpopulate(val, "Destinations", &a.Destinations)
  6327  			delete(rawMsg, key)
  6328  		case "sources":
  6329  			err = unpopulate(val, "Sources", &a.Sources)
  6330  			delete(rawMsg, key)
  6331  		}
  6332  		if err != nil {
  6333  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6334  		}
  6335  	}
  6336  	return nil
  6337  }
  6338  
  6339  // MarshalJSON implements the json.Marshaller interface for type AzureFirewallPropertiesFormat.
  6340  func (a AzureFirewallPropertiesFormat) MarshalJSON() ([]byte, error) {
  6341  	objectMap := make(map[string]any)
  6342  	populate(objectMap, "additionalProperties", a.AdditionalProperties)
  6343  	populate(objectMap, "applicationRuleCollections", a.ApplicationRuleCollections)
  6344  	populate(objectMap, "autoscaleConfiguration", a.AutoscaleConfiguration)
  6345  	populate(objectMap, "firewallPolicy", a.FirewallPolicy)
  6346  	populate(objectMap, "hubIPAddresses", a.HubIPAddresses)
  6347  	populate(objectMap, "ipConfigurations", a.IPConfigurations)
  6348  	populate(objectMap, "ipGroups", a.IPGroups)
  6349  	populate(objectMap, "managementIpConfiguration", a.ManagementIPConfiguration)
  6350  	populate(objectMap, "natRuleCollections", a.NatRuleCollections)
  6351  	populate(objectMap, "networkRuleCollections", a.NetworkRuleCollections)
  6352  	populate(objectMap, "provisioningState", a.ProvisioningState)
  6353  	populate(objectMap, "sku", a.SKU)
  6354  	populate(objectMap, "threatIntelMode", a.ThreatIntelMode)
  6355  	populate(objectMap, "virtualHub", a.VirtualHub)
  6356  	return json.Marshal(objectMap)
  6357  }
  6358  
  6359  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureFirewallPropertiesFormat.
  6360  func (a *AzureFirewallPropertiesFormat) UnmarshalJSON(data []byte) error {
  6361  	var rawMsg map[string]json.RawMessage
  6362  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  6363  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6364  	}
  6365  	for key, val := range rawMsg {
  6366  		var err error
  6367  		switch key {
  6368  		case "additionalProperties":
  6369  			err = unpopulate(val, "AdditionalProperties", &a.AdditionalProperties)
  6370  			delete(rawMsg, key)
  6371  		case "applicationRuleCollections":
  6372  			err = unpopulate(val, "ApplicationRuleCollections", &a.ApplicationRuleCollections)
  6373  			delete(rawMsg, key)
  6374  		case "autoscaleConfiguration":
  6375  			err = unpopulate(val, "AutoscaleConfiguration", &a.AutoscaleConfiguration)
  6376  			delete(rawMsg, key)
  6377  		case "firewallPolicy":
  6378  			err = unpopulate(val, "FirewallPolicy", &a.FirewallPolicy)
  6379  			delete(rawMsg, key)
  6380  		case "hubIPAddresses":
  6381  			err = unpopulate(val, "HubIPAddresses", &a.HubIPAddresses)
  6382  			delete(rawMsg, key)
  6383  		case "ipConfigurations":
  6384  			err = unpopulate(val, "IPConfigurations", &a.IPConfigurations)
  6385  			delete(rawMsg, key)
  6386  		case "ipGroups":
  6387  			err = unpopulate(val, "IPGroups", &a.IPGroups)
  6388  			delete(rawMsg, key)
  6389  		case "managementIpConfiguration":
  6390  			err = unpopulate(val, "ManagementIPConfiguration", &a.ManagementIPConfiguration)
  6391  			delete(rawMsg, key)
  6392  		case "natRuleCollections":
  6393  			err = unpopulate(val, "NatRuleCollections", &a.NatRuleCollections)
  6394  			delete(rawMsg, key)
  6395  		case "networkRuleCollections":
  6396  			err = unpopulate(val, "NetworkRuleCollections", &a.NetworkRuleCollections)
  6397  			delete(rawMsg, key)
  6398  		case "provisioningState":
  6399  			err = unpopulate(val, "ProvisioningState", &a.ProvisioningState)
  6400  			delete(rawMsg, key)
  6401  		case "sku":
  6402  			err = unpopulate(val, "SKU", &a.SKU)
  6403  			delete(rawMsg, key)
  6404  		case "threatIntelMode":
  6405  			err = unpopulate(val, "ThreatIntelMode", &a.ThreatIntelMode)
  6406  			delete(rawMsg, key)
  6407  		case "virtualHub":
  6408  			err = unpopulate(val, "VirtualHub", &a.VirtualHub)
  6409  			delete(rawMsg, key)
  6410  		}
  6411  		if err != nil {
  6412  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6413  		}
  6414  	}
  6415  	return nil
  6416  }
  6417  
  6418  // MarshalJSON implements the json.Marshaller interface for type AzureFirewallPublicIPAddress.
  6419  func (a AzureFirewallPublicIPAddress) MarshalJSON() ([]byte, error) {
  6420  	objectMap := make(map[string]any)
  6421  	populate(objectMap, "address", a.Address)
  6422  	return json.Marshal(objectMap)
  6423  }
  6424  
  6425  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureFirewallPublicIPAddress.
  6426  func (a *AzureFirewallPublicIPAddress) UnmarshalJSON(data []byte) error {
  6427  	var rawMsg map[string]json.RawMessage
  6428  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  6429  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6430  	}
  6431  	for key, val := range rawMsg {
  6432  		var err error
  6433  		switch key {
  6434  		case "address":
  6435  			err = unpopulate(val, "Address", &a.Address)
  6436  			delete(rawMsg, key)
  6437  		}
  6438  		if err != nil {
  6439  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6440  		}
  6441  	}
  6442  	return nil
  6443  }
  6444  
  6445  // MarshalJSON implements the json.Marshaller interface for type AzureFirewallRCAction.
  6446  func (a AzureFirewallRCAction) MarshalJSON() ([]byte, error) {
  6447  	objectMap := make(map[string]any)
  6448  	populate(objectMap, "type", a.Type)
  6449  	return json.Marshal(objectMap)
  6450  }
  6451  
  6452  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureFirewallRCAction.
  6453  func (a *AzureFirewallRCAction) UnmarshalJSON(data []byte) error {
  6454  	var rawMsg map[string]json.RawMessage
  6455  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  6456  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6457  	}
  6458  	for key, val := range rawMsg {
  6459  		var err error
  6460  		switch key {
  6461  		case "type":
  6462  			err = unpopulate(val, "Type", &a.Type)
  6463  			delete(rawMsg, key)
  6464  		}
  6465  		if err != nil {
  6466  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6467  		}
  6468  	}
  6469  	return nil
  6470  }
  6471  
  6472  // MarshalJSON implements the json.Marshaller interface for type AzureFirewallSKU.
  6473  func (a AzureFirewallSKU) MarshalJSON() ([]byte, error) {
  6474  	objectMap := make(map[string]any)
  6475  	populate(objectMap, "name", a.Name)
  6476  	populate(objectMap, "tier", a.Tier)
  6477  	return json.Marshal(objectMap)
  6478  }
  6479  
  6480  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureFirewallSKU.
  6481  func (a *AzureFirewallSKU) UnmarshalJSON(data []byte) error {
  6482  	var rawMsg map[string]json.RawMessage
  6483  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  6484  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6485  	}
  6486  	for key, val := range rawMsg {
  6487  		var err error
  6488  		switch key {
  6489  		case "name":
  6490  			err = unpopulate(val, "Name", &a.Name)
  6491  			delete(rawMsg, key)
  6492  		case "tier":
  6493  			err = unpopulate(val, "Tier", &a.Tier)
  6494  			delete(rawMsg, key)
  6495  		}
  6496  		if err != nil {
  6497  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6498  		}
  6499  	}
  6500  	return nil
  6501  }
  6502  
  6503  // MarshalJSON implements the json.Marshaller interface for type AzureReachabilityReport.
  6504  func (a AzureReachabilityReport) MarshalJSON() ([]byte, error) {
  6505  	objectMap := make(map[string]any)
  6506  	populate(objectMap, "aggregationLevel", a.AggregationLevel)
  6507  	populate(objectMap, "providerLocation", a.ProviderLocation)
  6508  	populate(objectMap, "reachabilityReport", a.ReachabilityReport)
  6509  	return json.Marshal(objectMap)
  6510  }
  6511  
  6512  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureReachabilityReport.
  6513  func (a *AzureReachabilityReport) UnmarshalJSON(data []byte) error {
  6514  	var rawMsg map[string]json.RawMessage
  6515  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  6516  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6517  	}
  6518  	for key, val := range rawMsg {
  6519  		var err error
  6520  		switch key {
  6521  		case "aggregationLevel":
  6522  			err = unpopulate(val, "AggregationLevel", &a.AggregationLevel)
  6523  			delete(rawMsg, key)
  6524  		case "providerLocation":
  6525  			err = unpopulate(val, "ProviderLocation", &a.ProviderLocation)
  6526  			delete(rawMsg, key)
  6527  		case "reachabilityReport":
  6528  			err = unpopulate(val, "ReachabilityReport", &a.ReachabilityReport)
  6529  			delete(rawMsg, key)
  6530  		}
  6531  		if err != nil {
  6532  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6533  		}
  6534  	}
  6535  	return nil
  6536  }
  6537  
  6538  // MarshalJSON implements the json.Marshaller interface for type AzureReachabilityReportItem.
  6539  func (a AzureReachabilityReportItem) MarshalJSON() ([]byte, error) {
  6540  	objectMap := make(map[string]any)
  6541  	populate(objectMap, "azureLocation", a.AzureLocation)
  6542  	populate(objectMap, "latencies", a.Latencies)
  6543  	populate(objectMap, "provider", a.Provider)
  6544  	return json.Marshal(objectMap)
  6545  }
  6546  
  6547  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureReachabilityReportItem.
  6548  func (a *AzureReachabilityReportItem) UnmarshalJSON(data []byte) error {
  6549  	var rawMsg map[string]json.RawMessage
  6550  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  6551  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6552  	}
  6553  	for key, val := range rawMsg {
  6554  		var err error
  6555  		switch key {
  6556  		case "azureLocation":
  6557  			err = unpopulate(val, "AzureLocation", &a.AzureLocation)
  6558  			delete(rawMsg, key)
  6559  		case "latencies":
  6560  			err = unpopulate(val, "Latencies", &a.Latencies)
  6561  			delete(rawMsg, key)
  6562  		case "provider":
  6563  			err = unpopulate(val, "Provider", &a.Provider)
  6564  			delete(rawMsg, key)
  6565  		}
  6566  		if err != nil {
  6567  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6568  		}
  6569  	}
  6570  	return nil
  6571  }
  6572  
  6573  // MarshalJSON implements the json.Marshaller interface for type AzureReachabilityReportLatencyInfo.
  6574  func (a AzureReachabilityReportLatencyInfo) MarshalJSON() ([]byte, error) {
  6575  	objectMap := make(map[string]any)
  6576  	populate(objectMap, "score", a.Score)
  6577  	populateDateTimeRFC3339(objectMap, "timeStamp", a.TimeStamp)
  6578  	return json.Marshal(objectMap)
  6579  }
  6580  
  6581  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureReachabilityReportLatencyInfo.
  6582  func (a *AzureReachabilityReportLatencyInfo) UnmarshalJSON(data []byte) error {
  6583  	var rawMsg map[string]json.RawMessage
  6584  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  6585  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6586  	}
  6587  	for key, val := range rawMsg {
  6588  		var err error
  6589  		switch key {
  6590  		case "score":
  6591  			err = unpopulate(val, "Score", &a.Score)
  6592  			delete(rawMsg, key)
  6593  		case "timeStamp":
  6594  			err = unpopulateDateTimeRFC3339(val, "TimeStamp", &a.TimeStamp)
  6595  			delete(rawMsg, key)
  6596  		}
  6597  		if err != nil {
  6598  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6599  		}
  6600  	}
  6601  	return nil
  6602  }
  6603  
  6604  // MarshalJSON implements the json.Marshaller interface for type AzureReachabilityReportLocation.
  6605  func (a AzureReachabilityReportLocation) MarshalJSON() ([]byte, error) {
  6606  	objectMap := make(map[string]any)
  6607  	populate(objectMap, "city", a.City)
  6608  	populate(objectMap, "country", a.Country)
  6609  	populate(objectMap, "state", a.State)
  6610  	return json.Marshal(objectMap)
  6611  }
  6612  
  6613  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureReachabilityReportLocation.
  6614  func (a *AzureReachabilityReportLocation) UnmarshalJSON(data []byte) error {
  6615  	var rawMsg map[string]json.RawMessage
  6616  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  6617  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6618  	}
  6619  	for key, val := range rawMsg {
  6620  		var err error
  6621  		switch key {
  6622  		case "city":
  6623  			err = unpopulate(val, "City", &a.City)
  6624  			delete(rawMsg, key)
  6625  		case "country":
  6626  			err = unpopulate(val, "Country", &a.Country)
  6627  			delete(rawMsg, key)
  6628  		case "state":
  6629  			err = unpopulate(val, "State", &a.State)
  6630  			delete(rawMsg, key)
  6631  		}
  6632  		if err != nil {
  6633  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6634  		}
  6635  	}
  6636  	return nil
  6637  }
  6638  
  6639  // MarshalJSON implements the json.Marshaller interface for type AzureReachabilityReportParameters.
  6640  func (a AzureReachabilityReportParameters) MarshalJSON() ([]byte, error) {
  6641  	objectMap := make(map[string]any)
  6642  	populate(objectMap, "azureLocations", a.AzureLocations)
  6643  	populateDateTimeRFC3339(objectMap, "endTime", a.EndTime)
  6644  	populate(objectMap, "providerLocation", a.ProviderLocation)
  6645  	populate(objectMap, "providers", a.Providers)
  6646  	populateDateTimeRFC3339(objectMap, "startTime", a.StartTime)
  6647  	return json.Marshal(objectMap)
  6648  }
  6649  
  6650  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureReachabilityReportParameters.
  6651  func (a *AzureReachabilityReportParameters) UnmarshalJSON(data []byte) error {
  6652  	var rawMsg map[string]json.RawMessage
  6653  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  6654  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6655  	}
  6656  	for key, val := range rawMsg {
  6657  		var err error
  6658  		switch key {
  6659  		case "azureLocations":
  6660  			err = unpopulate(val, "AzureLocations", &a.AzureLocations)
  6661  			delete(rawMsg, key)
  6662  		case "endTime":
  6663  			err = unpopulateDateTimeRFC3339(val, "EndTime", &a.EndTime)
  6664  			delete(rawMsg, key)
  6665  		case "providerLocation":
  6666  			err = unpopulate(val, "ProviderLocation", &a.ProviderLocation)
  6667  			delete(rawMsg, key)
  6668  		case "providers":
  6669  			err = unpopulate(val, "Providers", &a.Providers)
  6670  			delete(rawMsg, key)
  6671  		case "startTime":
  6672  			err = unpopulateDateTimeRFC3339(val, "StartTime", &a.StartTime)
  6673  			delete(rawMsg, key)
  6674  		}
  6675  		if err != nil {
  6676  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6677  		}
  6678  	}
  6679  	return nil
  6680  }
  6681  
  6682  // MarshalJSON implements the json.Marshaller interface for type AzureWebCategory.
  6683  func (a AzureWebCategory) MarshalJSON() ([]byte, error) {
  6684  	objectMap := make(map[string]any)
  6685  	populate(objectMap, "etag", a.Etag)
  6686  	populate(objectMap, "id", a.ID)
  6687  	populate(objectMap, "name", a.Name)
  6688  	populate(objectMap, "properties", a.Properties)
  6689  	populate(objectMap, "type", a.Type)
  6690  	return json.Marshal(objectMap)
  6691  }
  6692  
  6693  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureWebCategory.
  6694  func (a *AzureWebCategory) UnmarshalJSON(data []byte) error {
  6695  	var rawMsg map[string]json.RawMessage
  6696  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  6697  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6698  	}
  6699  	for key, val := range rawMsg {
  6700  		var err error
  6701  		switch key {
  6702  		case "etag":
  6703  			err = unpopulate(val, "Etag", &a.Etag)
  6704  			delete(rawMsg, key)
  6705  		case "id":
  6706  			err = unpopulate(val, "ID", &a.ID)
  6707  			delete(rawMsg, key)
  6708  		case "name":
  6709  			err = unpopulate(val, "Name", &a.Name)
  6710  			delete(rawMsg, key)
  6711  		case "properties":
  6712  			err = unpopulate(val, "Properties", &a.Properties)
  6713  			delete(rawMsg, key)
  6714  		case "type":
  6715  			err = unpopulate(val, "Type", &a.Type)
  6716  			delete(rawMsg, key)
  6717  		}
  6718  		if err != nil {
  6719  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6720  		}
  6721  	}
  6722  	return nil
  6723  }
  6724  
  6725  // MarshalJSON implements the json.Marshaller interface for type AzureWebCategoryListResult.
  6726  func (a AzureWebCategoryListResult) MarshalJSON() ([]byte, error) {
  6727  	objectMap := make(map[string]any)
  6728  	populate(objectMap, "nextLink", a.NextLink)
  6729  	populate(objectMap, "value", a.Value)
  6730  	return json.Marshal(objectMap)
  6731  }
  6732  
  6733  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureWebCategoryListResult.
  6734  func (a *AzureWebCategoryListResult) UnmarshalJSON(data []byte) error {
  6735  	var rawMsg map[string]json.RawMessage
  6736  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  6737  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6738  	}
  6739  	for key, val := range rawMsg {
  6740  		var err error
  6741  		switch key {
  6742  		case "nextLink":
  6743  			err = unpopulate(val, "NextLink", &a.NextLink)
  6744  			delete(rawMsg, key)
  6745  		case "value":
  6746  			err = unpopulate(val, "Value", &a.Value)
  6747  			delete(rawMsg, key)
  6748  		}
  6749  		if err != nil {
  6750  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6751  		}
  6752  	}
  6753  	return nil
  6754  }
  6755  
  6756  // MarshalJSON implements the json.Marshaller interface for type AzureWebCategoryPropertiesFormat.
  6757  func (a AzureWebCategoryPropertiesFormat) MarshalJSON() ([]byte, error) {
  6758  	objectMap := make(map[string]any)
  6759  	populate(objectMap, "group", a.Group)
  6760  	return json.Marshal(objectMap)
  6761  }
  6762  
  6763  // UnmarshalJSON implements the json.Unmarshaller interface for type AzureWebCategoryPropertiesFormat.
  6764  func (a *AzureWebCategoryPropertiesFormat) UnmarshalJSON(data []byte) error {
  6765  	var rawMsg map[string]json.RawMessage
  6766  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  6767  		return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6768  	}
  6769  	for key, val := range rawMsg {
  6770  		var err error
  6771  		switch key {
  6772  		case "group":
  6773  			err = unpopulate(val, "Group", &a.Group)
  6774  			delete(rawMsg, key)
  6775  		}
  6776  		if err != nil {
  6777  			return fmt.Errorf("unmarshalling type %T: %v", a, err)
  6778  		}
  6779  	}
  6780  	return nil
  6781  }
  6782  
  6783  // MarshalJSON implements the json.Marshaller interface for type BGPCommunity.
  6784  func (b BGPCommunity) MarshalJSON() ([]byte, error) {
  6785  	objectMap := make(map[string]any)
  6786  	populate(objectMap, "communityName", b.CommunityName)
  6787  	populate(objectMap, "communityPrefixes", b.CommunityPrefixes)
  6788  	populate(objectMap, "communityValue", b.CommunityValue)
  6789  	populate(objectMap, "isAuthorizedToUse", b.IsAuthorizedToUse)
  6790  	populate(objectMap, "serviceGroup", b.ServiceGroup)
  6791  	populate(objectMap, "serviceSupportedRegion", b.ServiceSupportedRegion)
  6792  	return json.Marshal(objectMap)
  6793  }
  6794  
  6795  // UnmarshalJSON implements the json.Unmarshaller interface for type BGPCommunity.
  6796  func (b *BGPCommunity) UnmarshalJSON(data []byte) error {
  6797  	var rawMsg map[string]json.RawMessage
  6798  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  6799  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  6800  	}
  6801  	for key, val := range rawMsg {
  6802  		var err error
  6803  		switch key {
  6804  		case "communityName":
  6805  			err = unpopulate(val, "CommunityName", &b.CommunityName)
  6806  			delete(rawMsg, key)
  6807  		case "communityPrefixes":
  6808  			err = unpopulate(val, "CommunityPrefixes", &b.CommunityPrefixes)
  6809  			delete(rawMsg, key)
  6810  		case "communityValue":
  6811  			err = unpopulate(val, "CommunityValue", &b.CommunityValue)
  6812  			delete(rawMsg, key)
  6813  		case "isAuthorizedToUse":
  6814  			err = unpopulate(val, "IsAuthorizedToUse", &b.IsAuthorizedToUse)
  6815  			delete(rawMsg, key)
  6816  		case "serviceGroup":
  6817  			err = unpopulate(val, "ServiceGroup", &b.ServiceGroup)
  6818  			delete(rawMsg, key)
  6819  		case "serviceSupportedRegion":
  6820  			err = unpopulate(val, "ServiceSupportedRegion", &b.ServiceSupportedRegion)
  6821  			delete(rawMsg, key)
  6822  		}
  6823  		if err != nil {
  6824  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  6825  		}
  6826  	}
  6827  	return nil
  6828  }
  6829  
  6830  // MarshalJSON implements the json.Marshaller interface for type BackendAddressInboundNatRulePortMappings.
  6831  func (b BackendAddressInboundNatRulePortMappings) MarshalJSON() ([]byte, error) {
  6832  	objectMap := make(map[string]any)
  6833  	populate(objectMap, "inboundNatRulePortMappings", b.InboundNatRulePortMappings)
  6834  	return json.Marshal(objectMap)
  6835  }
  6836  
  6837  // UnmarshalJSON implements the json.Unmarshaller interface for type BackendAddressInboundNatRulePortMappings.
  6838  func (b *BackendAddressInboundNatRulePortMappings) UnmarshalJSON(data []byte) error {
  6839  	var rawMsg map[string]json.RawMessage
  6840  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  6841  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  6842  	}
  6843  	for key, val := range rawMsg {
  6844  		var err error
  6845  		switch key {
  6846  		case "inboundNatRulePortMappings":
  6847  			err = unpopulate(val, "InboundNatRulePortMappings", &b.InboundNatRulePortMappings)
  6848  			delete(rawMsg, key)
  6849  		}
  6850  		if err != nil {
  6851  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  6852  		}
  6853  	}
  6854  	return nil
  6855  }
  6856  
  6857  // MarshalJSON implements the json.Marshaller interface for type BackendAddressPool.
  6858  func (b BackendAddressPool) MarshalJSON() ([]byte, error) {
  6859  	objectMap := make(map[string]any)
  6860  	populate(objectMap, "etag", b.Etag)
  6861  	populate(objectMap, "id", b.ID)
  6862  	populate(objectMap, "name", b.Name)
  6863  	populate(objectMap, "properties", b.Properties)
  6864  	populate(objectMap, "type", b.Type)
  6865  	return json.Marshal(objectMap)
  6866  }
  6867  
  6868  // UnmarshalJSON implements the json.Unmarshaller interface for type BackendAddressPool.
  6869  func (b *BackendAddressPool) UnmarshalJSON(data []byte) error {
  6870  	var rawMsg map[string]json.RawMessage
  6871  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  6872  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  6873  	}
  6874  	for key, val := range rawMsg {
  6875  		var err error
  6876  		switch key {
  6877  		case "etag":
  6878  			err = unpopulate(val, "Etag", &b.Etag)
  6879  			delete(rawMsg, key)
  6880  		case "id":
  6881  			err = unpopulate(val, "ID", &b.ID)
  6882  			delete(rawMsg, key)
  6883  		case "name":
  6884  			err = unpopulate(val, "Name", &b.Name)
  6885  			delete(rawMsg, key)
  6886  		case "properties":
  6887  			err = unpopulate(val, "Properties", &b.Properties)
  6888  			delete(rawMsg, key)
  6889  		case "type":
  6890  			err = unpopulate(val, "Type", &b.Type)
  6891  			delete(rawMsg, key)
  6892  		}
  6893  		if err != nil {
  6894  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  6895  		}
  6896  	}
  6897  	return nil
  6898  }
  6899  
  6900  // MarshalJSON implements the json.Marshaller interface for type BackendAddressPoolPropertiesFormat.
  6901  func (b BackendAddressPoolPropertiesFormat) MarshalJSON() ([]byte, error) {
  6902  	objectMap := make(map[string]any)
  6903  	populate(objectMap, "backendIPConfigurations", b.BackendIPConfigurations)
  6904  	populate(objectMap, "drainPeriodInSeconds", b.DrainPeriodInSeconds)
  6905  	populate(objectMap, "inboundNatRules", b.InboundNatRules)
  6906  	populate(objectMap, "loadBalancerBackendAddresses", b.LoadBalancerBackendAddresses)
  6907  	populate(objectMap, "loadBalancingRules", b.LoadBalancingRules)
  6908  	populate(objectMap, "location", b.Location)
  6909  	populate(objectMap, "outboundRule", b.OutboundRule)
  6910  	populate(objectMap, "outboundRules", b.OutboundRules)
  6911  	populate(objectMap, "provisioningState", b.ProvisioningState)
  6912  	populate(objectMap, "syncMode", b.SyncMode)
  6913  	populate(objectMap, "tunnelInterfaces", b.TunnelInterfaces)
  6914  	populate(objectMap, "virtualNetwork", b.VirtualNetwork)
  6915  	return json.Marshal(objectMap)
  6916  }
  6917  
  6918  // UnmarshalJSON implements the json.Unmarshaller interface for type BackendAddressPoolPropertiesFormat.
  6919  func (b *BackendAddressPoolPropertiesFormat) UnmarshalJSON(data []byte) error {
  6920  	var rawMsg map[string]json.RawMessage
  6921  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  6922  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  6923  	}
  6924  	for key, val := range rawMsg {
  6925  		var err error
  6926  		switch key {
  6927  		case "backendIPConfigurations":
  6928  			err = unpopulate(val, "BackendIPConfigurations", &b.BackendIPConfigurations)
  6929  			delete(rawMsg, key)
  6930  		case "drainPeriodInSeconds":
  6931  			err = unpopulate(val, "DrainPeriodInSeconds", &b.DrainPeriodInSeconds)
  6932  			delete(rawMsg, key)
  6933  		case "inboundNatRules":
  6934  			err = unpopulate(val, "InboundNatRules", &b.InboundNatRules)
  6935  			delete(rawMsg, key)
  6936  		case "loadBalancerBackendAddresses":
  6937  			err = unpopulate(val, "LoadBalancerBackendAddresses", &b.LoadBalancerBackendAddresses)
  6938  			delete(rawMsg, key)
  6939  		case "loadBalancingRules":
  6940  			err = unpopulate(val, "LoadBalancingRules", &b.LoadBalancingRules)
  6941  			delete(rawMsg, key)
  6942  		case "location":
  6943  			err = unpopulate(val, "Location", &b.Location)
  6944  			delete(rawMsg, key)
  6945  		case "outboundRule":
  6946  			err = unpopulate(val, "OutboundRule", &b.OutboundRule)
  6947  			delete(rawMsg, key)
  6948  		case "outboundRules":
  6949  			err = unpopulate(val, "OutboundRules", &b.OutboundRules)
  6950  			delete(rawMsg, key)
  6951  		case "provisioningState":
  6952  			err = unpopulate(val, "ProvisioningState", &b.ProvisioningState)
  6953  			delete(rawMsg, key)
  6954  		case "syncMode":
  6955  			err = unpopulate(val, "SyncMode", &b.SyncMode)
  6956  			delete(rawMsg, key)
  6957  		case "tunnelInterfaces":
  6958  			err = unpopulate(val, "TunnelInterfaces", &b.TunnelInterfaces)
  6959  			delete(rawMsg, key)
  6960  		case "virtualNetwork":
  6961  			err = unpopulate(val, "VirtualNetwork", &b.VirtualNetwork)
  6962  			delete(rawMsg, key)
  6963  		}
  6964  		if err != nil {
  6965  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  6966  		}
  6967  	}
  6968  	return nil
  6969  }
  6970  
  6971  // MarshalJSON implements the json.Marshaller interface for type BaseAdminRule.
  6972  func (b BaseAdminRule) MarshalJSON() ([]byte, error) {
  6973  	objectMap := make(map[string]any)
  6974  	populate(objectMap, "etag", b.Etag)
  6975  	populate(objectMap, "id", b.ID)
  6976  	objectMap["kind"] = b.Kind
  6977  	populate(objectMap, "name", b.Name)
  6978  	populate(objectMap, "systemData", b.SystemData)
  6979  	populate(objectMap, "type", b.Type)
  6980  	return json.Marshal(objectMap)
  6981  }
  6982  
  6983  // UnmarshalJSON implements the json.Unmarshaller interface for type BaseAdminRule.
  6984  func (b *BaseAdminRule) UnmarshalJSON(data []byte) error {
  6985  	var rawMsg map[string]json.RawMessage
  6986  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  6987  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  6988  	}
  6989  	for key, val := range rawMsg {
  6990  		var err error
  6991  		switch key {
  6992  		case "etag":
  6993  			err = unpopulate(val, "Etag", &b.Etag)
  6994  			delete(rawMsg, key)
  6995  		case "id":
  6996  			err = unpopulate(val, "ID", &b.ID)
  6997  			delete(rawMsg, key)
  6998  		case "kind":
  6999  			err = unpopulate(val, "Kind", &b.Kind)
  7000  			delete(rawMsg, key)
  7001  		case "name":
  7002  			err = unpopulate(val, "Name", &b.Name)
  7003  			delete(rawMsg, key)
  7004  		case "systemData":
  7005  			err = unpopulate(val, "SystemData", &b.SystemData)
  7006  			delete(rawMsg, key)
  7007  		case "type":
  7008  			err = unpopulate(val, "Type", &b.Type)
  7009  			delete(rawMsg, key)
  7010  		}
  7011  		if err != nil {
  7012  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7013  		}
  7014  	}
  7015  	return nil
  7016  }
  7017  
  7018  // MarshalJSON implements the json.Marshaller interface for type BastionActiveSession.
  7019  func (b BastionActiveSession) MarshalJSON() ([]byte, error) {
  7020  	objectMap := make(map[string]any)
  7021  	populate(objectMap, "protocol", b.Protocol)
  7022  	populate(objectMap, "resourceType", b.ResourceType)
  7023  	populate(objectMap, "sessionDurationInMins", b.SessionDurationInMins)
  7024  	populate(objectMap, "sessionId", b.SessionID)
  7025  	populateAny(objectMap, "startTime", b.StartTime)
  7026  	populate(objectMap, "targetHostName", b.TargetHostName)
  7027  	populate(objectMap, "targetIpAddress", b.TargetIPAddress)
  7028  	populate(objectMap, "targetResourceGroup", b.TargetResourceGroup)
  7029  	populate(objectMap, "targetResourceId", b.TargetResourceID)
  7030  	populate(objectMap, "targetSubscriptionId", b.TargetSubscriptionID)
  7031  	populate(objectMap, "userName", b.UserName)
  7032  	return json.Marshal(objectMap)
  7033  }
  7034  
  7035  // UnmarshalJSON implements the json.Unmarshaller interface for type BastionActiveSession.
  7036  func (b *BastionActiveSession) UnmarshalJSON(data []byte) error {
  7037  	var rawMsg map[string]json.RawMessage
  7038  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  7039  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7040  	}
  7041  	for key, val := range rawMsg {
  7042  		var err error
  7043  		switch key {
  7044  		case "protocol":
  7045  			err = unpopulate(val, "Protocol", &b.Protocol)
  7046  			delete(rawMsg, key)
  7047  		case "resourceType":
  7048  			err = unpopulate(val, "ResourceType", &b.ResourceType)
  7049  			delete(rawMsg, key)
  7050  		case "sessionDurationInMins":
  7051  			err = unpopulate(val, "SessionDurationInMins", &b.SessionDurationInMins)
  7052  			delete(rawMsg, key)
  7053  		case "sessionId":
  7054  			err = unpopulate(val, "SessionID", &b.SessionID)
  7055  			delete(rawMsg, key)
  7056  		case "startTime":
  7057  			err = unpopulate(val, "StartTime", &b.StartTime)
  7058  			delete(rawMsg, key)
  7059  		case "targetHostName":
  7060  			err = unpopulate(val, "TargetHostName", &b.TargetHostName)
  7061  			delete(rawMsg, key)
  7062  		case "targetIpAddress":
  7063  			err = unpopulate(val, "TargetIPAddress", &b.TargetIPAddress)
  7064  			delete(rawMsg, key)
  7065  		case "targetResourceGroup":
  7066  			err = unpopulate(val, "TargetResourceGroup", &b.TargetResourceGroup)
  7067  			delete(rawMsg, key)
  7068  		case "targetResourceId":
  7069  			err = unpopulate(val, "TargetResourceID", &b.TargetResourceID)
  7070  			delete(rawMsg, key)
  7071  		case "targetSubscriptionId":
  7072  			err = unpopulate(val, "TargetSubscriptionID", &b.TargetSubscriptionID)
  7073  			delete(rawMsg, key)
  7074  		case "userName":
  7075  			err = unpopulate(val, "UserName", &b.UserName)
  7076  			delete(rawMsg, key)
  7077  		}
  7078  		if err != nil {
  7079  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7080  		}
  7081  	}
  7082  	return nil
  7083  }
  7084  
  7085  // MarshalJSON implements the json.Marshaller interface for type BastionActiveSessionListResult.
  7086  func (b BastionActiveSessionListResult) MarshalJSON() ([]byte, error) {
  7087  	objectMap := make(map[string]any)
  7088  	populate(objectMap, "nextLink", b.NextLink)
  7089  	populate(objectMap, "value", b.Value)
  7090  	return json.Marshal(objectMap)
  7091  }
  7092  
  7093  // UnmarshalJSON implements the json.Unmarshaller interface for type BastionActiveSessionListResult.
  7094  func (b *BastionActiveSessionListResult) UnmarshalJSON(data []byte) error {
  7095  	var rawMsg map[string]json.RawMessage
  7096  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  7097  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7098  	}
  7099  	for key, val := range rawMsg {
  7100  		var err error
  7101  		switch key {
  7102  		case "nextLink":
  7103  			err = unpopulate(val, "NextLink", &b.NextLink)
  7104  			delete(rawMsg, key)
  7105  		case "value":
  7106  			err = unpopulate(val, "Value", &b.Value)
  7107  			delete(rawMsg, key)
  7108  		}
  7109  		if err != nil {
  7110  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7111  		}
  7112  	}
  7113  	return nil
  7114  }
  7115  
  7116  // MarshalJSON implements the json.Marshaller interface for type BastionHost.
  7117  func (b BastionHost) MarshalJSON() ([]byte, error) {
  7118  	objectMap := make(map[string]any)
  7119  	populate(objectMap, "etag", b.Etag)
  7120  	populate(objectMap, "id", b.ID)
  7121  	populate(objectMap, "location", b.Location)
  7122  	populate(objectMap, "name", b.Name)
  7123  	populate(objectMap, "properties", b.Properties)
  7124  	populate(objectMap, "sku", b.SKU)
  7125  	populate(objectMap, "tags", b.Tags)
  7126  	populate(objectMap, "type", b.Type)
  7127  	populate(objectMap, "zones", b.Zones)
  7128  	return json.Marshal(objectMap)
  7129  }
  7130  
  7131  // UnmarshalJSON implements the json.Unmarshaller interface for type BastionHost.
  7132  func (b *BastionHost) UnmarshalJSON(data []byte) error {
  7133  	var rawMsg map[string]json.RawMessage
  7134  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  7135  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7136  	}
  7137  	for key, val := range rawMsg {
  7138  		var err error
  7139  		switch key {
  7140  		case "etag":
  7141  			err = unpopulate(val, "Etag", &b.Etag)
  7142  			delete(rawMsg, key)
  7143  		case "id":
  7144  			err = unpopulate(val, "ID", &b.ID)
  7145  			delete(rawMsg, key)
  7146  		case "location":
  7147  			err = unpopulate(val, "Location", &b.Location)
  7148  			delete(rawMsg, key)
  7149  		case "name":
  7150  			err = unpopulate(val, "Name", &b.Name)
  7151  			delete(rawMsg, key)
  7152  		case "properties":
  7153  			err = unpopulate(val, "Properties", &b.Properties)
  7154  			delete(rawMsg, key)
  7155  		case "sku":
  7156  			err = unpopulate(val, "SKU", &b.SKU)
  7157  			delete(rawMsg, key)
  7158  		case "tags":
  7159  			err = unpopulate(val, "Tags", &b.Tags)
  7160  			delete(rawMsg, key)
  7161  		case "type":
  7162  			err = unpopulate(val, "Type", &b.Type)
  7163  			delete(rawMsg, key)
  7164  		case "zones":
  7165  			err = unpopulate(val, "Zones", &b.Zones)
  7166  			delete(rawMsg, key)
  7167  		}
  7168  		if err != nil {
  7169  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7170  		}
  7171  	}
  7172  	return nil
  7173  }
  7174  
  7175  // MarshalJSON implements the json.Marshaller interface for type BastionHostIPConfiguration.
  7176  func (b BastionHostIPConfiguration) MarshalJSON() ([]byte, error) {
  7177  	objectMap := make(map[string]any)
  7178  	populate(objectMap, "etag", b.Etag)
  7179  	populate(objectMap, "id", b.ID)
  7180  	populate(objectMap, "name", b.Name)
  7181  	populate(objectMap, "properties", b.Properties)
  7182  	populate(objectMap, "type", b.Type)
  7183  	return json.Marshal(objectMap)
  7184  }
  7185  
  7186  // UnmarshalJSON implements the json.Unmarshaller interface for type BastionHostIPConfiguration.
  7187  func (b *BastionHostIPConfiguration) UnmarshalJSON(data []byte) error {
  7188  	var rawMsg map[string]json.RawMessage
  7189  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  7190  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7191  	}
  7192  	for key, val := range rawMsg {
  7193  		var err error
  7194  		switch key {
  7195  		case "etag":
  7196  			err = unpopulate(val, "Etag", &b.Etag)
  7197  			delete(rawMsg, key)
  7198  		case "id":
  7199  			err = unpopulate(val, "ID", &b.ID)
  7200  			delete(rawMsg, key)
  7201  		case "name":
  7202  			err = unpopulate(val, "Name", &b.Name)
  7203  			delete(rawMsg, key)
  7204  		case "properties":
  7205  			err = unpopulate(val, "Properties", &b.Properties)
  7206  			delete(rawMsg, key)
  7207  		case "type":
  7208  			err = unpopulate(val, "Type", &b.Type)
  7209  			delete(rawMsg, key)
  7210  		}
  7211  		if err != nil {
  7212  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7213  		}
  7214  	}
  7215  	return nil
  7216  }
  7217  
  7218  // MarshalJSON implements the json.Marshaller interface for type BastionHostIPConfigurationPropertiesFormat.
  7219  func (b BastionHostIPConfigurationPropertiesFormat) MarshalJSON() ([]byte, error) {
  7220  	objectMap := make(map[string]any)
  7221  	populate(objectMap, "privateIPAllocationMethod", b.PrivateIPAllocationMethod)
  7222  	populate(objectMap, "provisioningState", b.ProvisioningState)
  7223  	populate(objectMap, "publicIPAddress", b.PublicIPAddress)
  7224  	populate(objectMap, "subnet", b.Subnet)
  7225  	return json.Marshal(objectMap)
  7226  }
  7227  
  7228  // UnmarshalJSON implements the json.Unmarshaller interface for type BastionHostIPConfigurationPropertiesFormat.
  7229  func (b *BastionHostIPConfigurationPropertiesFormat) UnmarshalJSON(data []byte) error {
  7230  	var rawMsg map[string]json.RawMessage
  7231  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  7232  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7233  	}
  7234  	for key, val := range rawMsg {
  7235  		var err error
  7236  		switch key {
  7237  		case "privateIPAllocationMethod":
  7238  			err = unpopulate(val, "PrivateIPAllocationMethod", &b.PrivateIPAllocationMethod)
  7239  			delete(rawMsg, key)
  7240  		case "provisioningState":
  7241  			err = unpopulate(val, "ProvisioningState", &b.ProvisioningState)
  7242  			delete(rawMsg, key)
  7243  		case "publicIPAddress":
  7244  			err = unpopulate(val, "PublicIPAddress", &b.PublicIPAddress)
  7245  			delete(rawMsg, key)
  7246  		case "subnet":
  7247  			err = unpopulate(val, "Subnet", &b.Subnet)
  7248  			delete(rawMsg, key)
  7249  		}
  7250  		if err != nil {
  7251  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7252  		}
  7253  	}
  7254  	return nil
  7255  }
  7256  
  7257  // MarshalJSON implements the json.Marshaller interface for type BastionHostListResult.
  7258  func (b BastionHostListResult) MarshalJSON() ([]byte, error) {
  7259  	objectMap := make(map[string]any)
  7260  	populate(objectMap, "nextLink", b.NextLink)
  7261  	populate(objectMap, "value", b.Value)
  7262  	return json.Marshal(objectMap)
  7263  }
  7264  
  7265  // UnmarshalJSON implements the json.Unmarshaller interface for type BastionHostListResult.
  7266  func (b *BastionHostListResult) UnmarshalJSON(data []byte) error {
  7267  	var rawMsg map[string]json.RawMessage
  7268  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  7269  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7270  	}
  7271  	for key, val := range rawMsg {
  7272  		var err error
  7273  		switch key {
  7274  		case "nextLink":
  7275  			err = unpopulate(val, "NextLink", &b.NextLink)
  7276  			delete(rawMsg, key)
  7277  		case "value":
  7278  			err = unpopulate(val, "Value", &b.Value)
  7279  			delete(rawMsg, key)
  7280  		}
  7281  		if err != nil {
  7282  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7283  		}
  7284  	}
  7285  	return nil
  7286  }
  7287  
  7288  // MarshalJSON implements the json.Marshaller interface for type BastionHostPropertiesFormat.
  7289  func (b BastionHostPropertiesFormat) MarshalJSON() ([]byte, error) {
  7290  	objectMap := make(map[string]any)
  7291  	populate(objectMap, "dnsName", b.DNSName)
  7292  	populate(objectMap, "disableCopyPaste", b.DisableCopyPaste)
  7293  	populate(objectMap, "enableFileCopy", b.EnableFileCopy)
  7294  	populate(objectMap, "enableIpConnect", b.EnableIPConnect)
  7295  	populate(objectMap, "enableKerberos", b.EnableKerberos)
  7296  	populate(objectMap, "enablePrivateOnlyBastion", b.EnablePrivateOnlyBastion)
  7297  	populate(objectMap, "enableSessionRecording", b.EnableSessionRecording)
  7298  	populate(objectMap, "enableShareableLink", b.EnableShareableLink)
  7299  	populate(objectMap, "enableTunneling", b.EnableTunneling)
  7300  	populate(objectMap, "ipConfigurations", b.IPConfigurations)
  7301  	populate(objectMap, "networkAcls", b.NetworkACLs)
  7302  	populate(objectMap, "provisioningState", b.ProvisioningState)
  7303  	populate(objectMap, "scaleUnits", b.ScaleUnits)
  7304  	populate(objectMap, "virtualNetwork", b.VirtualNetwork)
  7305  	return json.Marshal(objectMap)
  7306  }
  7307  
  7308  // UnmarshalJSON implements the json.Unmarshaller interface for type BastionHostPropertiesFormat.
  7309  func (b *BastionHostPropertiesFormat) UnmarshalJSON(data []byte) error {
  7310  	var rawMsg map[string]json.RawMessage
  7311  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  7312  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7313  	}
  7314  	for key, val := range rawMsg {
  7315  		var err error
  7316  		switch key {
  7317  		case "dnsName":
  7318  			err = unpopulate(val, "DNSName", &b.DNSName)
  7319  			delete(rawMsg, key)
  7320  		case "disableCopyPaste":
  7321  			err = unpopulate(val, "DisableCopyPaste", &b.DisableCopyPaste)
  7322  			delete(rawMsg, key)
  7323  		case "enableFileCopy":
  7324  			err = unpopulate(val, "EnableFileCopy", &b.EnableFileCopy)
  7325  			delete(rawMsg, key)
  7326  		case "enableIpConnect":
  7327  			err = unpopulate(val, "EnableIPConnect", &b.EnableIPConnect)
  7328  			delete(rawMsg, key)
  7329  		case "enableKerberos":
  7330  			err = unpopulate(val, "EnableKerberos", &b.EnableKerberos)
  7331  			delete(rawMsg, key)
  7332  		case "enablePrivateOnlyBastion":
  7333  			err = unpopulate(val, "EnablePrivateOnlyBastion", &b.EnablePrivateOnlyBastion)
  7334  			delete(rawMsg, key)
  7335  		case "enableSessionRecording":
  7336  			err = unpopulate(val, "EnableSessionRecording", &b.EnableSessionRecording)
  7337  			delete(rawMsg, key)
  7338  		case "enableShareableLink":
  7339  			err = unpopulate(val, "EnableShareableLink", &b.EnableShareableLink)
  7340  			delete(rawMsg, key)
  7341  		case "enableTunneling":
  7342  			err = unpopulate(val, "EnableTunneling", &b.EnableTunneling)
  7343  			delete(rawMsg, key)
  7344  		case "ipConfigurations":
  7345  			err = unpopulate(val, "IPConfigurations", &b.IPConfigurations)
  7346  			delete(rawMsg, key)
  7347  		case "networkAcls":
  7348  			err = unpopulate(val, "NetworkACLs", &b.NetworkACLs)
  7349  			delete(rawMsg, key)
  7350  		case "provisioningState":
  7351  			err = unpopulate(val, "ProvisioningState", &b.ProvisioningState)
  7352  			delete(rawMsg, key)
  7353  		case "scaleUnits":
  7354  			err = unpopulate(val, "ScaleUnits", &b.ScaleUnits)
  7355  			delete(rawMsg, key)
  7356  		case "virtualNetwork":
  7357  			err = unpopulate(val, "VirtualNetwork", &b.VirtualNetwork)
  7358  			delete(rawMsg, key)
  7359  		}
  7360  		if err != nil {
  7361  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7362  		}
  7363  	}
  7364  	return nil
  7365  }
  7366  
  7367  // MarshalJSON implements the json.Marshaller interface for type BastionHostPropertiesFormatNetworkACLs.
  7368  func (b BastionHostPropertiesFormatNetworkACLs) MarshalJSON() ([]byte, error) {
  7369  	objectMap := make(map[string]any)
  7370  	populate(objectMap, "ipRules", b.IPRules)
  7371  	return json.Marshal(objectMap)
  7372  }
  7373  
  7374  // UnmarshalJSON implements the json.Unmarshaller interface for type BastionHostPropertiesFormatNetworkACLs.
  7375  func (b *BastionHostPropertiesFormatNetworkACLs) UnmarshalJSON(data []byte) error {
  7376  	var rawMsg map[string]json.RawMessage
  7377  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  7378  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7379  	}
  7380  	for key, val := range rawMsg {
  7381  		var err error
  7382  		switch key {
  7383  		case "ipRules":
  7384  			err = unpopulate(val, "IPRules", &b.IPRules)
  7385  			delete(rawMsg, key)
  7386  		}
  7387  		if err != nil {
  7388  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7389  		}
  7390  	}
  7391  	return nil
  7392  }
  7393  
  7394  // MarshalJSON implements the json.Marshaller interface for type BastionSessionDeleteResult.
  7395  func (b BastionSessionDeleteResult) MarshalJSON() ([]byte, error) {
  7396  	objectMap := make(map[string]any)
  7397  	populate(objectMap, "nextLink", b.NextLink)
  7398  	populate(objectMap, "value", b.Value)
  7399  	return json.Marshal(objectMap)
  7400  }
  7401  
  7402  // UnmarshalJSON implements the json.Unmarshaller interface for type BastionSessionDeleteResult.
  7403  func (b *BastionSessionDeleteResult) UnmarshalJSON(data []byte) error {
  7404  	var rawMsg map[string]json.RawMessage
  7405  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  7406  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7407  	}
  7408  	for key, val := range rawMsg {
  7409  		var err error
  7410  		switch key {
  7411  		case "nextLink":
  7412  			err = unpopulate(val, "NextLink", &b.NextLink)
  7413  			delete(rawMsg, key)
  7414  		case "value":
  7415  			err = unpopulate(val, "Value", &b.Value)
  7416  			delete(rawMsg, key)
  7417  		}
  7418  		if err != nil {
  7419  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7420  		}
  7421  	}
  7422  	return nil
  7423  }
  7424  
  7425  // MarshalJSON implements the json.Marshaller interface for type BastionSessionState.
  7426  func (b BastionSessionState) MarshalJSON() ([]byte, error) {
  7427  	objectMap := make(map[string]any)
  7428  	populate(objectMap, "message", b.Message)
  7429  	populate(objectMap, "sessionId", b.SessionID)
  7430  	populate(objectMap, "state", b.State)
  7431  	return json.Marshal(objectMap)
  7432  }
  7433  
  7434  // UnmarshalJSON implements the json.Unmarshaller interface for type BastionSessionState.
  7435  func (b *BastionSessionState) UnmarshalJSON(data []byte) error {
  7436  	var rawMsg map[string]json.RawMessage
  7437  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  7438  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7439  	}
  7440  	for key, val := range rawMsg {
  7441  		var err error
  7442  		switch key {
  7443  		case "message":
  7444  			err = unpopulate(val, "Message", &b.Message)
  7445  			delete(rawMsg, key)
  7446  		case "sessionId":
  7447  			err = unpopulate(val, "SessionID", &b.SessionID)
  7448  			delete(rawMsg, key)
  7449  		case "state":
  7450  			err = unpopulate(val, "State", &b.State)
  7451  			delete(rawMsg, key)
  7452  		}
  7453  		if err != nil {
  7454  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7455  		}
  7456  	}
  7457  	return nil
  7458  }
  7459  
  7460  // MarshalJSON implements the json.Marshaller interface for type BastionShareableLink.
  7461  func (b BastionShareableLink) MarshalJSON() ([]byte, error) {
  7462  	objectMap := make(map[string]any)
  7463  	populate(objectMap, "bsl", b.Bsl)
  7464  	populate(objectMap, "createdAt", b.CreatedAt)
  7465  	populate(objectMap, "message", b.Message)
  7466  	populate(objectMap, "vm", b.VM)
  7467  	return json.Marshal(objectMap)
  7468  }
  7469  
  7470  // UnmarshalJSON implements the json.Unmarshaller interface for type BastionShareableLink.
  7471  func (b *BastionShareableLink) UnmarshalJSON(data []byte) error {
  7472  	var rawMsg map[string]json.RawMessage
  7473  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  7474  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7475  	}
  7476  	for key, val := range rawMsg {
  7477  		var err error
  7478  		switch key {
  7479  		case "bsl":
  7480  			err = unpopulate(val, "Bsl", &b.Bsl)
  7481  			delete(rawMsg, key)
  7482  		case "createdAt":
  7483  			err = unpopulate(val, "CreatedAt", &b.CreatedAt)
  7484  			delete(rawMsg, key)
  7485  		case "message":
  7486  			err = unpopulate(val, "Message", &b.Message)
  7487  			delete(rawMsg, key)
  7488  		case "vm":
  7489  			err = unpopulate(val, "VM", &b.VM)
  7490  			delete(rawMsg, key)
  7491  		}
  7492  		if err != nil {
  7493  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7494  		}
  7495  	}
  7496  	return nil
  7497  }
  7498  
  7499  // MarshalJSON implements the json.Marshaller interface for type BastionShareableLinkListRequest.
  7500  func (b BastionShareableLinkListRequest) MarshalJSON() ([]byte, error) {
  7501  	objectMap := make(map[string]any)
  7502  	populate(objectMap, "vms", b.VMs)
  7503  	return json.Marshal(objectMap)
  7504  }
  7505  
  7506  // UnmarshalJSON implements the json.Unmarshaller interface for type BastionShareableLinkListRequest.
  7507  func (b *BastionShareableLinkListRequest) UnmarshalJSON(data []byte) error {
  7508  	var rawMsg map[string]json.RawMessage
  7509  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  7510  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7511  	}
  7512  	for key, val := range rawMsg {
  7513  		var err error
  7514  		switch key {
  7515  		case "vms":
  7516  			err = unpopulate(val, "VMs", &b.VMs)
  7517  			delete(rawMsg, key)
  7518  		}
  7519  		if err != nil {
  7520  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7521  		}
  7522  	}
  7523  	return nil
  7524  }
  7525  
  7526  // MarshalJSON implements the json.Marshaller interface for type BastionShareableLinkListResult.
  7527  func (b BastionShareableLinkListResult) MarshalJSON() ([]byte, error) {
  7528  	objectMap := make(map[string]any)
  7529  	populate(objectMap, "nextLink", b.NextLink)
  7530  	populate(objectMap, "value", b.Value)
  7531  	return json.Marshal(objectMap)
  7532  }
  7533  
  7534  // UnmarshalJSON implements the json.Unmarshaller interface for type BastionShareableLinkListResult.
  7535  func (b *BastionShareableLinkListResult) UnmarshalJSON(data []byte) error {
  7536  	var rawMsg map[string]json.RawMessage
  7537  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  7538  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7539  	}
  7540  	for key, val := range rawMsg {
  7541  		var err error
  7542  		switch key {
  7543  		case "nextLink":
  7544  			err = unpopulate(val, "NextLink", &b.NextLink)
  7545  			delete(rawMsg, key)
  7546  		case "value":
  7547  			err = unpopulate(val, "Value", &b.Value)
  7548  			delete(rawMsg, key)
  7549  		}
  7550  		if err != nil {
  7551  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7552  		}
  7553  	}
  7554  	return nil
  7555  }
  7556  
  7557  // MarshalJSON implements the json.Marshaller interface for type BastionShareableLinkTokenListRequest.
  7558  func (b BastionShareableLinkTokenListRequest) MarshalJSON() ([]byte, error) {
  7559  	objectMap := make(map[string]any)
  7560  	populate(objectMap, "tokens", b.Tokens)
  7561  	return json.Marshal(objectMap)
  7562  }
  7563  
  7564  // UnmarshalJSON implements the json.Unmarshaller interface for type BastionShareableLinkTokenListRequest.
  7565  func (b *BastionShareableLinkTokenListRequest) UnmarshalJSON(data []byte) error {
  7566  	var rawMsg map[string]json.RawMessage
  7567  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  7568  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7569  	}
  7570  	for key, val := range rawMsg {
  7571  		var err error
  7572  		switch key {
  7573  		case "tokens":
  7574  			err = unpopulate(val, "Tokens", &b.Tokens)
  7575  			delete(rawMsg, key)
  7576  		}
  7577  		if err != nil {
  7578  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7579  		}
  7580  	}
  7581  	return nil
  7582  }
  7583  
  7584  // MarshalJSON implements the json.Marshaller interface for type BgpConnection.
  7585  func (b BgpConnection) MarshalJSON() ([]byte, error) {
  7586  	objectMap := make(map[string]any)
  7587  	populate(objectMap, "etag", b.Etag)
  7588  	populate(objectMap, "id", b.ID)
  7589  	populate(objectMap, "name", b.Name)
  7590  	populate(objectMap, "properties", b.Properties)
  7591  	populate(objectMap, "type", b.Type)
  7592  	return json.Marshal(objectMap)
  7593  }
  7594  
  7595  // UnmarshalJSON implements the json.Unmarshaller interface for type BgpConnection.
  7596  func (b *BgpConnection) UnmarshalJSON(data []byte) error {
  7597  	var rawMsg map[string]json.RawMessage
  7598  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  7599  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7600  	}
  7601  	for key, val := range rawMsg {
  7602  		var err error
  7603  		switch key {
  7604  		case "etag":
  7605  			err = unpopulate(val, "Etag", &b.Etag)
  7606  			delete(rawMsg, key)
  7607  		case "id":
  7608  			err = unpopulate(val, "ID", &b.ID)
  7609  			delete(rawMsg, key)
  7610  		case "name":
  7611  			err = unpopulate(val, "Name", &b.Name)
  7612  			delete(rawMsg, key)
  7613  		case "properties":
  7614  			err = unpopulate(val, "Properties", &b.Properties)
  7615  			delete(rawMsg, key)
  7616  		case "type":
  7617  			err = unpopulate(val, "Type", &b.Type)
  7618  			delete(rawMsg, key)
  7619  		}
  7620  		if err != nil {
  7621  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7622  		}
  7623  	}
  7624  	return nil
  7625  }
  7626  
  7627  // MarshalJSON implements the json.Marshaller interface for type BgpConnectionProperties.
  7628  func (b BgpConnectionProperties) MarshalJSON() ([]byte, error) {
  7629  	objectMap := make(map[string]any)
  7630  	populate(objectMap, "connectionState", b.ConnectionState)
  7631  	populate(objectMap, "hubVirtualNetworkConnection", b.HubVirtualNetworkConnection)
  7632  	populate(objectMap, "peerAsn", b.PeerAsn)
  7633  	populate(objectMap, "peerIp", b.PeerIP)
  7634  	populate(objectMap, "provisioningState", b.ProvisioningState)
  7635  	return json.Marshal(objectMap)
  7636  }
  7637  
  7638  // UnmarshalJSON implements the json.Unmarshaller interface for type BgpConnectionProperties.
  7639  func (b *BgpConnectionProperties) UnmarshalJSON(data []byte) error {
  7640  	var rawMsg map[string]json.RawMessage
  7641  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  7642  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7643  	}
  7644  	for key, val := range rawMsg {
  7645  		var err error
  7646  		switch key {
  7647  		case "connectionState":
  7648  			err = unpopulate(val, "ConnectionState", &b.ConnectionState)
  7649  			delete(rawMsg, key)
  7650  		case "hubVirtualNetworkConnection":
  7651  			err = unpopulate(val, "HubVirtualNetworkConnection", &b.HubVirtualNetworkConnection)
  7652  			delete(rawMsg, key)
  7653  		case "peerAsn":
  7654  			err = unpopulate(val, "PeerAsn", &b.PeerAsn)
  7655  			delete(rawMsg, key)
  7656  		case "peerIp":
  7657  			err = unpopulate(val, "PeerIP", &b.PeerIP)
  7658  			delete(rawMsg, key)
  7659  		case "provisioningState":
  7660  			err = unpopulate(val, "ProvisioningState", &b.ProvisioningState)
  7661  			delete(rawMsg, key)
  7662  		}
  7663  		if err != nil {
  7664  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7665  		}
  7666  	}
  7667  	return nil
  7668  }
  7669  
  7670  // MarshalJSON implements the json.Marshaller interface for type BgpPeerStatus.
  7671  func (b BgpPeerStatus) MarshalJSON() ([]byte, error) {
  7672  	objectMap := make(map[string]any)
  7673  	populate(objectMap, "asn", b.Asn)
  7674  	populate(objectMap, "connectedDuration", b.ConnectedDuration)
  7675  	populate(objectMap, "localAddress", b.LocalAddress)
  7676  	populate(objectMap, "messagesReceived", b.MessagesReceived)
  7677  	populate(objectMap, "messagesSent", b.MessagesSent)
  7678  	populate(objectMap, "neighbor", b.Neighbor)
  7679  	populate(objectMap, "routesReceived", b.RoutesReceived)
  7680  	populate(objectMap, "state", b.State)
  7681  	return json.Marshal(objectMap)
  7682  }
  7683  
  7684  // UnmarshalJSON implements the json.Unmarshaller interface for type BgpPeerStatus.
  7685  func (b *BgpPeerStatus) UnmarshalJSON(data []byte) error {
  7686  	var rawMsg map[string]json.RawMessage
  7687  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  7688  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7689  	}
  7690  	for key, val := range rawMsg {
  7691  		var err error
  7692  		switch key {
  7693  		case "asn":
  7694  			err = unpopulate(val, "Asn", &b.Asn)
  7695  			delete(rawMsg, key)
  7696  		case "connectedDuration":
  7697  			err = unpopulate(val, "ConnectedDuration", &b.ConnectedDuration)
  7698  			delete(rawMsg, key)
  7699  		case "localAddress":
  7700  			err = unpopulate(val, "LocalAddress", &b.LocalAddress)
  7701  			delete(rawMsg, key)
  7702  		case "messagesReceived":
  7703  			err = unpopulate(val, "MessagesReceived", &b.MessagesReceived)
  7704  			delete(rawMsg, key)
  7705  		case "messagesSent":
  7706  			err = unpopulate(val, "MessagesSent", &b.MessagesSent)
  7707  			delete(rawMsg, key)
  7708  		case "neighbor":
  7709  			err = unpopulate(val, "Neighbor", &b.Neighbor)
  7710  			delete(rawMsg, key)
  7711  		case "routesReceived":
  7712  			err = unpopulate(val, "RoutesReceived", &b.RoutesReceived)
  7713  			delete(rawMsg, key)
  7714  		case "state":
  7715  			err = unpopulate(val, "State", &b.State)
  7716  			delete(rawMsg, key)
  7717  		}
  7718  		if err != nil {
  7719  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7720  		}
  7721  	}
  7722  	return nil
  7723  }
  7724  
  7725  // MarshalJSON implements the json.Marshaller interface for type BgpPeerStatusListResult.
  7726  func (b BgpPeerStatusListResult) MarshalJSON() ([]byte, error) {
  7727  	objectMap := make(map[string]any)
  7728  	populate(objectMap, "value", b.Value)
  7729  	return json.Marshal(objectMap)
  7730  }
  7731  
  7732  // UnmarshalJSON implements the json.Unmarshaller interface for type BgpPeerStatusListResult.
  7733  func (b *BgpPeerStatusListResult) UnmarshalJSON(data []byte) error {
  7734  	var rawMsg map[string]json.RawMessage
  7735  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  7736  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7737  	}
  7738  	for key, val := range rawMsg {
  7739  		var err error
  7740  		switch key {
  7741  		case "value":
  7742  			err = unpopulate(val, "Value", &b.Value)
  7743  			delete(rawMsg, key)
  7744  		}
  7745  		if err != nil {
  7746  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7747  		}
  7748  	}
  7749  	return nil
  7750  }
  7751  
  7752  // MarshalJSON implements the json.Marshaller interface for type BgpServiceCommunity.
  7753  func (b BgpServiceCommunity) MarshalJSON() ([]byte, error) {
  7754  	objectMap := make(map[string]any)
  7755  	populate(objectMap, "id", b.ID)
  7756  	populate(objectMap, "location", b.Location)
  7757  	populate(objectMap, "name", b.Name)
  7758  	populate(objectMap, "properties", b.Properties)
  7759  	populate(objectMap, "tags", b.Tags)
  7760  	populate(objectMap, "type", b.Type)
  7761  	return json.Marshal(objectMap)
  7762  }
  7763  
  7764  // UnmarshalJSON implements the json.Unmarshaller interface for type BgpServiceCommunity.
  7765  func (b *BgpServiceCommunity) UnmarshalJSON(data []byte) error {
  7766  	var rawMsg map[string]json.RawMessage
  7767  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  7768  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7769  	}
  7770  	for key, val := range rawMsg {
  7771  		var err error
  7772  		switch key {
  7773  		case "id":
  7774  			err = unpopulate(val, "ID", &b.ID)
  7775  			delete(rawMsg, key)
  7776  		case "location":
  7777  			err = unpopulate(val, "Location", &b.Location)
  7778  			delete(rawMsg, key)
  7779  		case "name":
  7780  			err = unpopulate(val, "Name", &b.Name)
  7781  			delete(rawMsg, key)
  7782  		case "properties":
  7783  			err = unpopulate(val, "Properties", &b.Properties)
  7784  			delete(rawMsg, key)
  7785  		case "tags":
  7786  			err = unpopulate(val, "Tags", &b.Tags)
  7787  			delete(rawMsg, key)
  7788  		case "type":
  7789  			err = unpopulate(val, "Type", &b.Type)
  7790  			delete(rawMsg, key)
  7791  		}
  7792  		if err != nil {
  7793  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7794  		}
  7795  	}
  7796  	return nil
  7797  }
  7798  
  7799  // MarshalJSON implements the json.Marshaller interface for type BgpServiceCommunityListResult.
  7800  func (b BgpServiceCommunityListResult) MarshalJSON() ([]byte, error) {
  7801  	objectMap := make(map[string]any)
  7802  	populate(objectMap, "nextLink", b.NextLink)
  7803  	populate(objectMap, "value", b.Value)
  7804  	return json.Marshal(objectMap)
  7805  }
  7806  
  7807  // UnmarshalJSON implements the json.Unmarshaller interface for type BgpServiceCommunityListResult.
  7808  func (b *BgpServiceCommunityListResult) UnmarshalJSON(data []byte) error {
  7809  	var rawMsg map[string]json.RawMessage
  7810  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  7811  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7812  	}
  7813  	for key, val := range rawMsg {
  7814  		var err error
  7815  		switch key {
  7816  		case "nextLink":
  7817  			err = unpopulate(val, "NextLink", &b.NextLink)
  7818  			delete(rawMsg, key)
  7819  		case "value":
  7820  			err = unpopulate(val, "Value", &b.Value)
  7821  			delete(rawMsg, key)
  7822  		}
  7823  		if err != nil {
  7824  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7825  		}
  7826  	}
  7827  	return nil
  7828  }
  7829  
  7830  // MarshalJSON implements the json.Marshaller interface for type BgpServiceCommunityPropertiesFormat.
  7831  func (b BgpServiceCommunityPropertiesFormat) MarshalJSON() ([]byte, error) {
  7832  	objectMap := make(map[string]any)
  7833  	populate(objectMap, "bgpCommunities", b.BgpCommunities)
  7834  	populate(objectMap, "serviceName", b.ServiceName)
  7835  	return json.Marshal(objectMap)
  7836  }
  7837  
  7838  // UnmarshalJSON implements the json.Unmarshaller interface for type BgpServiceCommunityPropertiesFormat.
  7839  func (b *BgpServiceCommunityPropertiesFormat) UnmarshalJSON(data []byte) error {
  7840  	var rawMsg map[string]json.RawMessage
  7841  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  7842  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7843  	}
  7844  	for key, val := range rawMsg {
  7845  		var err error
  7846  		switch key {
  7847  		case "bgpCommunities":
  7848  			err = unpopulate(val, "BgpCommunities", &b.BgpCommunities)
  7849  			delete(rawMsg, key)
  7850  		case "serviceName":
  7851  			err = unpopulate(val, "ServiceName", &b.ServiceName)
  7852  			delete(rawMsg, key)
  7853  		}
  7854  		if err != nil {
  7855  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7856  		}
  7857  	}
  7858  	return nil
  7859  }
  7860  
  7861  // MarshalJSON implements the json.Marshaller interface for type BgpSettings.
  7862  func (b BgpSettings) MarshalJSON() ([]byte, error) {
  7863  	objectMap := make(map[string]any)
  7864  	populate(objectMap, "asn", b.Asn)
  7865  	populate(objectMap, "bgpPeeringAddress", b.BgpPeeringAddress)
  7866  	populate(objectMap, "bgpPeeringAddresses", b.BgpPeeringAddresses)
  7867  	populate(objectMap, "peerWeight", b.PeerWeight)
  7868  	return json.Marshal(objectMap)
  7869  }
  7870  
  7871  // UnmarshalJSON implements the json.Unmarshaller interface for type BgpSettings.
  7872  func (b *BgpSettings) UnmarshalJSON(data []byte) error {
  7873  	var rawMsg map[string]json.RawMessage
  7874  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  7875  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7876  	}
  7877  	for key, val := range rawMsg {
  7878  		var err error
  7879  		switch key {
  7880  		case "asn":
  7881  			err = unpopulate(val, "Asn", &b.Asn)
  7882  			delete(rawMsg, key)
  7883  		case "bgpPeeringAddress":
  7884  			err = unpopulate(val, "BgpPeeringAddress", &b.BgpPeeringAddress)
  7885  			delete(rawMsg, key)
  7886  		case "bgpPeeringAddresses":
  7887  			err = unpopulate(val, "BgpPeeringAddresses", &b.BgpPeeringAddresses)
  7888  			delete(rawMsg, key)
  7889  		case "peerWeight":
  7890  			err = unpopulate(val, "PeerWeight", &b.PeerWeight)
  7891  			delete(rawMsg, key)
  7892  		}
  7893  		if err != nil {
  7894  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7895  		}
  7896  	}
  7897  	return nil
  7898  }
  7899  
  7900  // MarshalJSON implements the json.Marshaller interface for type BreakOutCategoryPolicies.
  7901  func (b BreakOutCategoryPolicies) MarshalJSON() ([]byte, error) {
  7902  	objectMap := make(map[string]any)
  7903  	populate(objectMap, "allow", b.Allow)
  7904  	populate(objectMap, "default", b.Default)
  7905  	populate(objectMap, "optimize", b.Optimize)
  7906  	return json.Marshal(objectMap)
  7907  }
  7908  
  7909  // UnmarshalJSON implements the json.Unmarshaller interface for type BreakOutCategoryPolicies.
  7910  func (b *BreakOutCategoryPolicies) UnmarshalJSON(data []byte) error {
  7911  	var rawMsg map[string]json.RawMessage
  7912  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  7913  		return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7914  	}
  7915  	for key, val := range rawMsg {
  7916  		var err error
  7917  		switch key {
  7918  		case "allow":
  7919  			err = unpopulate(val, "Allow", &b.Allow)
  7920  			delete(rawMsg, key)
  7921  		case "default":
  7922  			err = unpopulate(val, "Default", &b.Default)
  7923  			delete(rawMsg, key)
  7924  		case "optimize":
  7925  			err = unpopulate(val, "Optimize", &b.Optimize)
  7926  			delete(rawMsg, key)
  7927  		}
  7928  		if err != nil {
  7929  			return fmt.Errorf("unmarshalling type %T: %v", b, err)
  7930  		}
  7931  	}
  7932  	return nil
  7933  }
  7934  
  7935  // MarshalJSON implements the json.Marshaller interface for type CheckPrivateLinkServiceVisibilityRequest.
  7936  func (c CheckPrivateLinkServiceVisibilityRequest) MarshalJSON() ([]byte, error) {
  7937  	objectMap := make(map[string]any)
  7938  	populate(objectMap, "privateLinkServiceAlias", c.PrivateLinkServiceAlias)
  7939  	return json.Marshal(objectMap)
  7940  }
  7941  
  7942  // UnmarshalJSON implements the json.Unmarshaller interface for type CheckPrivateLinkServiceVisibilityRequest.
  7943  func (c *CheckPrivateLinkServiceVisibilityRequest) UnmarshalJSON(data []byte) error {
  7944  	var rawMsg map[string]json.RawMessage
  7945  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  7946  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  7947  	}
  7948  	for key, val := range rawMsg {
  7949  		var err error
  7950  		switch key {
  7951  		case "privateLinkServiceAlias":
  7952  			err = unpopulate(val, "PrivateLinkServiceAlias", &c.PrivateLinkServiceAlias)
  7953  			delete(rawMsg, key)
  7954  		}
  7955  		if err != nil {
  7956  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  7957  		}
  7958  	}
  7959  	return nil
  7960  }
  7961  
  7962  // MarshalJSON implements the json.Marshaller interface for type ChildResource.
  7963  func (c ChildResource) MarshalJSON() ([]byte, error) {
  7964  	objectMap := make(map[string]any)
  7965  	populate(objectMap, "etag", c.Etag)
  7966  	populate(objectMap, "id", c.ID)
  7967  	populate(objectMap, "name", c.Name)
  7968  	populate(objectMap, "type", c.Type)
  7969  	return json.Marshal(objectMap)
  7970  }
  7971  
  7972  // UnmarshalJSON implements the json.Unmarshaller interface for type ChildResource.
  7973  func (c *ChildResource) UnmarshalJSON(data []byte) error {
  7974  	var rawMsg map[string]json.RawMessage
  7975  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  7976  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  7977  	}
  7978  	for key, val := range rawMsg {
  7979  		var err error
  7980  		switch key {
  7981  		case "etag":
  7982  			err = unpopulate(val, "Etag", &c.Etag)
  7983  			delete(rawMsg, key)
  7984  		case "id":
  7985  			err = unpopulate(val, "ID", &c.ID)
  7986  			delete(rawMsg, key)
  7987  		case "name":
  7988  			err = unpopulate(val, "Name", &c.Name)
  7989  			delete(rawMsg, key)
  7990  		case "type":
  7991  			err = unpopulate(val, "Type", &c.Type)
  7992  			delete(rawMsg, key)
  7993  		}
  7994  		if err != nil {
  7995  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  7996  		}
  7997  	}
  7998  	return nil
  7999  }
  8000  
  8001  // MarshalJSON implements the json.Marshaller interface for type CommonErrorAdditionalInfo.
  8002  func (c CommonErrorAdditionalInfo) MarshalJSON() ([]byte, error) {
  8003  	objectMap := make(map[string]any)
  8004  	populateAny(objectMap, "info", c.Info)
  8005  	populate(objectMap, "type", c.Type)
  8006  	return json.Marshal(objectMap)
  8007  }
  8008  
  8009  // UnmarshalJSON implements the json.Unmarshaller interface for type CommonErrorAdditionalInfo.
  8010  func (c *CommonErrorAdditionalInfo) UnmarshalJSON(data []byte) error {
  8011  	var rawMsg map[string]json.RawMessage
  8012  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8013  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8014  	}
  8015  	for key, val := range rawMsg {
  8016  		var err error
  8017  		switch key {
  8018  		case "info":
  8019  			err = unpopulate(val, "Info", &c.Info)
  8020  			delete(rawMsg, key)
  8021  		case "type":
  8022  			err = unpopulate(val, "Type", &c.Type)
  8023  			delete(rawMsg, key)
  8024  		}
  8025  		if err != nil {
  8026  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8027  		}
  8028  	}
  8029  	return nil
  8030  }
  8031  
  8032  // MarshalJSON implements the json.Marshaller interface for type CommonErrorDetail.
  8033  func (c CommonErrorDetail) MarshalJSON() ([]byte, error) {
  8034  	objectMap := make(map[string]any)
  8035  	populate(objectMap, "additionalInfo", c.AdditionalInfo)
  8036  	populate(objectMap, "code", c.Code)
  8037  	populate(objectMap, "details", c.Details)
  8038  	populate(objectMap, "message", c.Message)
  8039  	populate(objectMap, "target", c.Target)
  8040  	return json.Marshal(objectMap)
  8041  }
  8042  
  8043  // UnmarshalJSON implements the json.Unmarshaller interface for type CommonErrorDetail.
  8044  func (c *CommonErrorDetail) UnmarshalJSON(data []byte) error {
  8045  	var rawMsg map[string]json.RawMessage
  8046  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8047  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8048  	}
  8049  	for key, val := range rawMsg {
  8050  		var err error
  8051  		switch key {
  8052  		case "additionalInfo":
  8053  			err = unpopulate(val, "AdditionalInfo", &c.AdditionalInfo)
  8054  			delete(rawMsg, key)
  8055  		case "code":
  8056  			err = unpopulate(val, "Code", &c.Code)
  8057  			delete(rawMsg, key)
  8058  		case "details":
  8059  			err = unpopulate(val, "Details", &c.Details)
  8060  			delete(rawMsg, key)
  8061  		case "message":
  8062  			err = unpopulate(val, "Message", &c.Message)
  8063  			delete(rawMsg, key)
  8064  		case "target":
  8065  			err = unpopulate(val, "Target", &c.Target)
  8066  			delete(rawMsg, key)
  8067  		}
  8068  		if err != nil {
  8069  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8070  		}
  8071  	}
  8072  	return nil
  8073  }
  8074  
  8075  // MarshalJSON implements the json.Marshaller interface for type CommonErrorResponse.
  8076  func (c CommonErrorResponse) MarshalJSON() ([]byte, error) {
  8077  	objectMap := make(map[string]any)
  8078  	populate(objectMap, "error", c.Error)
  8079  	return json.Marshal(objectMap)
  8080  }
  8081  
  8082  // UnmarshalJSON implements the json.Unmarshaller interface for type CommonErrorResponse.
  8083  func (c *CommonErrorResponse) UnmarshalJSON(data []byte) error {
  8084  	var rawMsg map[string]json.RawMessage
  8085  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8086  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8087  	}
  8088  	for key, val := range rawMsg {
  8089  		var err error
  8090  		switch key {
  8091  		case "error":
  8092  			err = unpopulate(val, "Error", &c.Error)
  8093  			delete(rawMsg, key)
  8094  		}
  8095  		if err != nil {
  8096  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8097  		}
  8098  	}
  8099  	return nil
  8100  }
  8101  
  8102  // MarshalJSON implements the json.Marshaller interface for type CommonProxyResource.
  8103  func (c CommonProxyResource) MarshalJSON() ([]byte, error) {
  8104  	objectMap := make(map[string]any)
  8105  	populate(objectMap, "id", c.ID)
  8106  	populate(objectMap, "name", c.Name)
  8107  	populate(objectMap, "systemData", c.SystemData)
  8108  	populate(objectMap, "type", c.Type)
  8109  	return json.Marshal(objectMap)
  8110  }
  8111  
  8112  // UnmarshalJSON implements the json.Unmarshaller interface for type CommonProxyResource.
  8113  func (c *CommonProxyResource) UnmarshalJSON(data []byte) error {
  8114  	var rawMsg map[string]json.RawMessage
  8115  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8116  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8117  	}
  8118  	for key, val := range rawMsg {
  8119  		var err error
  8120  		switch key {
  8121  		case "id":
  8122  			err = unpopulate(val, "ID", &c.ID)
  8123  			delete(rawMsg, key)
  8124  		case "name":
  8125  			err = unpopulate(val, "Name", &c.Name)
  8126  			delete(rawMsg, key)
  8127  		case "systemData":
  8128  			err = unpopulate(val, "SystemData", &c.SystemData)
  8129  			delete(rawMsg, key)
  8130  		case "type":
  8131  			err = unpopulate(val, "Type", &c.Type)
  8132  			delete(rawMsg, key)
  8133  		}
  8134  		if err != nil {
  8135  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8136  		}
  8137  	}
  8138  	return nil
  8139  }
  8140  
  8141  // MarshalJSON implements the json.Marshaller interface for type CommonResource.
  8142  func (c CommonResource) MarshalJSON() ([]byte, error) {
  8143  	objectMap := make(map[string]any)
  8144  	populate(objectMap, "id", c.ID)
  8145  	populate(objectMap, "name", c.Name)
  8146  	populate(objectMap, "systemData", c.SystemData)
  8147  	populate(objectMap, "type", c.Type)
  8148  	return json.Marshal(objectMap)
  8149  }
  8150  
  8151  // UnmarshalJSON implements the json.Unmarshaller interface for type CommonResource.
  8152  func (c *CommonResource) UnmarshalJSON(data []byte) error {
  8153  	var rawMsg map[string]json.RawMessage
  8154  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8155  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8156  	}
  8157  	for key, val := range rawMsg {
  8158  		var err error
  8159  		switch key {
  8160  		case "id":
  8161  			err = unpopulate(val, "ID", &c.ID)
  8162  			delete(rawMsg, key)
  8163  		case "name":
  8164  			err = unpopulate(val, "Name", &c.Name)
  8165  			delete(rawMsg, key)
  8166  		case "systemData":
  8167  			err = unpopulate(val, "SystemData", &c.SystemData)
  8168  			delete(rawMsg, key)
  8169  		case "type":
  8170  			err = unpopulate(val, "Type", &c.Type)
  8171  			delete(rawMsg, key)
  8172  		}
  8173  		if err != nil {
  8174  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8175  		}
  8176  	}
  8177  	return nil
  8178  }
  8179  
  8180  // MarshalJSON implements the json.Marshaller interface for type CommonTrackedResource.
  8181  func (c CommonTrackedResource) MarshalJSON() ([]byte, error) {
  8182  	objectMap := make(map[string]any)
  8183  	populate(objectMap, "id", c.ID)
  8184  	populate(objectMap, "location", c.Location)
  8185  	populate(objectMap, "name", c.Name)
  8186  	populate(objectMap, "systemData", c.SystemData)
  8187  	populate(objectMap, "tags", c.Tags)
  8188  	populate(objectMap, "type", c.Type)
  8189  	return json.Marshal(objectMap)
  8190  }
  8191  
  8192  // UnmarshalJSON implements the json.Unmarshaller interface for type CommonTrackedResource.
  8193  func (c *CommonTrackedResource) UnmarshalJSON(data []byte) error {
  8194  	var rawMsg map[string]json.RawMessage
  8195  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8196  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8197  	}
  8198  	for key, val := range rawMsg {
  8199  		var err error
  8200  		switch key {
  8201  		case "id":
  8202  			err = unpopulate(val, "ID", &c.ID)
  8203  			delete(rawMsg, key)
  8204  		case "location":
  8205  			err = unpopulate(val, "Location", &c.Location)
  8206  			delete(rawMsg, key)
  8207  		case "name":
  8208  			err = unpopulate(val, "Name", &c.Name)
  8209  			delete(rawMsg, key)
  8210  		case "systemData":
  8211  			err = unpopulate(val, "SystemData", &c.SystemData)
  8212  			delete(rawMsg, key)
  8213  		case "tags":
  8214  			err = unpopulate(val, "Tags", &c.Tags)
  8215  			delete(rawMsg, key)
  8216  		case "type":
  8217  			err = unpopulate(val, "Type", &c.Type)
  8218  			delete(rawMsg, key)
  8219  		}
  8220  		if err != nil {
  8221  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8222  		}
  8223  	}
  8224  	return nil
  8225  }
  8226  
  8227  // MarshalJSON implements the json.Marshaller interface for type Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties.
  8228  func (c Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties) MarshalJSON() ([]byte, error) {
  8229  	objectMap := make(map[string]any)
  8230  	populate(objectMap, "clientId", c.ClientID)
  8231  	populate(objectMap, "principalId", c.PrincipalID)
  8232  	return json.Marshal(objectMap)
  8233  }
  8234  
  8235  // UnmarshalJSON implements the json.Unmarshaller interface for type Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties.
  8236  func (c *Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties) UnmarshalJSON(data []byte) error {
  8237  	var rawMsg map[string]json.RawMessage
  8238  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8239  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8240  	}
  8241  	for key, val := range rawMsg {
  8242  		var err error
  8243  		switch key {
  8244  		case "clientId":
  8245  			err = unpopulate(val, "ClientID", &c.ClientID)
  8246  			delete(rawMsg, key)
  8247  		case "principalId":
  8248  			err = unpopulate(val, "PrincipalID", &c.PrincipalID)
  8249  			delete(rawMsg, key)
  8250  		}
  8251  		if err != nil {
  8252  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8253  		}
  8254  	}
  8255  	return nil
  8256  }
  8257  
  8258  // MarshalJSON implements the json.Marshaller interface for type ConfigurationDiagnosticParameters.
  8259  func (c ConfigurationDiagnosticParameters) MarshalJSON() ([]byte, error) {
  8260  	objectMap := make(map[string]any)
  8261  	populate(objectMap, "profiles", c.Profiles)
  8262  	populate(objectMap, "targetResourceId", c.TargetResourceID)
  8263  	populate(objectMap, "verbosityLevel", c.VerbosityLevel)
  8264  	return json.Marshal(objectMap)
  8265  }
  8266  
  8267  // UnmarshalJSON implements the json.Unmarshaller interface for type ConfigurationDiagnosticParameters.
  8268  func (c *ConfigurationDiagnosticParameters) UnmarshalJSON(data []byte) error {
  8269  	var rawMsg map[string]json.RawMessage
  8270  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8271  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8272  	}
  8273  	for key, val := range rawMsg {
  8274  		var err error
  8275  		switch key {
  8276  		case "profiles":
  8277  			err = unpopulate(val, "Profiles", &c.Profiles)
  8278  			delete(rawMsg, key)
  8279  		case "targetResourceId":
  8280  			err = unpopulate(val, "TargetResourceID", &c.TargetResourceID)
  8281  			delete(rawMsg, key)
  8282  		case "verbosityLevel":
  8283  			err = unpopulate(val, "VerbosityLevel", &c.VerbosityLevel)
  8284  			delete(rawMsg, key)
  8285  		}
  8286  		if err != nil {
  8287  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8288  		}
  8289  	}
  8290  	return nil
  8291  }
  8292  
  8293  // MarshalJSON implements the json.Marshaller interface for type ConfigurationDiagnosticProfile.
  8294  func (c ConfigurationDiagnosticProfile) MarshalJSON() ([]byte, error) {
  8295  	objectMap := make(map[string]any)
  8296  	populate(objectMap, "destination", c.Destination)
  8297  	populate(objectMap, "destinationPort", c.DestinationPort)
  8298  	populate(objectMap, "direction", c.Direction)
  8299  	populate(objectMap, "protocol", c.Protocol)
  8300  	populate(objectMap, "source", c.Source)
  8301  	return json.Marshal(objectMap)
  8302  }
  8303  
  8304  // UnmarshalJSON implements the json.Unmarshaller interface for type ConfigurationDiagnosticProfile.
  8305  func (c *ConfigurationDiagnosticProfile) UnmarshalJSON(data []byte) error {
  8306  	var rawMsg map[string]json.RawMessage
  8307  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8308  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8309  	}
  8310  	for key, val := range rawMsg {
  8311  		var err error
  8312  		switch key {
  8313  		case "destination":
  8314  			err = unpopulate(val, "Destination", &c.Destination)
  8315  			delete(rawMsg, key)
  8316  		case "destinationPort":
  8317  			err = unpopulate(val, "DestinationPort", &c.DestinationPort)
  8318  			delete(rawMsg, key)
  8319  		case "direction":
  8320  			err = unpopulate(val, "Direction", &c.Direction)
  8321  			delete(rawMsg, key)
  8322  		case "protocol":
  8323  			err = unpopulate(val, "Protocol", &c.Protocol)
  8324  			delete(rawMsg, key)
  8325  		case "source":
  8326  			err = unpopulate(val, "Source", &c.Source)
  8327  			delete(rawMsg, key)
  8328  		}
  8329  		if err != nil {
  8330  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8331  		}
  8332  	}
  8333  	return nil
  8334  }
  8335  
  8336  // MarshalJSON implements the json.Marshaller interface for type ConfigurationDiagnosticResponse.
  8337  func (c ConfigurationDiagnosticResponse) MarshalJSON() ([]byte, error) {
  8338  	objectMap := make(map[string]any)
  8339  	populate(objectMap, "results", c.Results)
  8340  	return json.Marshal(objectMap)
  8341  }
  8342  
  8343  // UnmarshalJSON implements the json.Unmarshaller interface for type ConfigurationDiagnosticResponse.
  8344  func (c *ConfigurationDiagnosticResponse) UnmarshalJSON(data []byte) error {
  8345  	var rawMsg map[string]json.RawMessage
  8346  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8347  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8348  	}
  8349  	for key, val := range rawMsg {
  8350  		var err error
  8351  		switch key {
  8352  		case "results":
  8353  			err = unpopulate(val, "Results", &c.Results)
  8354  			delete(rawMsg, key)
  8355  		}
  8356  		if err != nil {
  8357  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8358  		}
  8359  	}
  8360  	return nil
  8361  }
  8362  
  8363  // MarshalJSON implements the json.Marshaller interface for type ConfigurationDiagnosticResult.
  8364  func (c ConfigurationDiagnosticResult) MarshalJSON() ([]byte, error) {
  8365  	objectMap := make(map[string]any)
  8366  	populate(objectMap, "networkSecurityGroupResult", c.NetworkSecurityGroupResult)
  8367  	populate(objectMap, "profile", c.Profile)
  8368  	return json.Marshal(objectMap)
  8369  }
  8370  
  8371  // UnmarshalJSON implements the json.Unmarshaller interface for type ConfigurationDiagnosticResult.
  8372  func (c *ConfigurationDiagnosticResult) UnmarshalJSON(data []byte) error {
  8373  	var rawMsg map[string]json.RawMessage
  8374  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8375  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8376  	}
  8377  	for key, val := range rawMsg {
  8378  		var err error
  8379  		switch key {
  8380  		case "networkSecurityGroupResult":
  8381  			err = unpopulate(val, "NetworkSecurityGroupResult", &c.NetworkSecurityGroupResult)
  8382  			delete(rawMsg, key)
  8383  		case "profile":
  8384  			err = unpopulate(val, "Profile", &c.Profile)
  8385  			delete(rawMsg, key)
  8386  		}
  8387  		if err != nil {
  8388  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8389  		}
  8390  	}
  8391  	return nil
  8392  }
  8393  
  8394  // MarshalJSON implements the json.Marshaller interface for type ConfigurationGroup.
  8395  func (c ConfigurationGroup) MarshalJSON() ([]byte, error) {
  8396  	objectMap := make(map[string]any)
  8397  	populate(objectMap, "id", c.ID)
  8398  	populate(objectMap, "properties", c.Properties)
  8399  	return json.Marshal(objectMap)
  8400  }
  8401  
  8402  // UnmarshalJSON implements the json.Unmarshaller interface for type ConfigurationGroup.
  8403  func (c *ConfigurationGroup) UnmarshalJSON(data []byte) error {
  8404  	var rawMsg map[string]json.RawMessage
  8405  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8406  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8407  	}
  8408  	for key, val := range rawMsg {
  8409  		var err error
  8410  		switch key {
  8411  		case "id":
  8412  			err = unpopulate(val, "ID", &c.ID)
  8413  			delete(rawMsg, key)
  8414  		case "properties":
  8415  			err = unpopulate(val, "Properties", &c.Properties)
  8416  			delete(rawMsg, key)
  8417  		}
  8418  		if err != nil {
  8419  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8420  		}
  8421  	}
  8422  	return nil
  8423  }
  8424  
  8425  // MarshalJSON implements the json.Marshaller interface for type ConnectionMonitor.
  8426  func (c ConnectionMonitor) MarshalJSON() ([]byte, error) {
  8427  	objectMap := make(map[string]any)
  8428  	populate(objectMap, "location", c.Location)
  8429  	populate(objectMap, "properties", c.Properties)
  8430  	populate(objectMap, "tags", c.Tags)
  8431  	return json.Marshal(objectMap)
  8432  }
  8433  
  8434  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitor.
  8435  func (c *ConnectionMonitor) UnmarshalJSON(data []byte) error {
  8436  	var rawMsg map[string]json.RawMessage
  8437  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8438  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8439  	}
  8440  	for key, val := range rawMsg {
  8441  		var err error
  8442  		switch key {
  8443  		case "location":
  8444  			err = unpopulate(val, "Location", &c.Location)
  8445  			delete(rawMsg, key)
  8446  		case "properties":
  8447  			err = unpopulate(val, "Properties", &c.Properties)
  8448  			delete(rawMsg, key)
  8449  		case "tags":
  8450  			err = unpopulate(val, "Tags", &c.Tags)
  8451  			delete(rawMsg, key)
  8452  		}
  8453  		if err != nil {
  8454  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8455  		}
  8456  	}
  8457  	return nil
  8458  }
  8459  
  8460  // MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorDestination.
  8461  func (c ConnectionMonitorDestination) MarshalJSON() ([]byte, error) {
  8462  	objectMap := make(map[string]any)
  8463  	populate(objectMap, "address", c.Address)
  8464  	populate(objectMap, "port", c.Port)
  8465  	populate(objectMap, "resourceId", c.ResourceID)
  8466  	return json.Marshal(objectMap)
  8467  }
  8468  
  8469  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitorDestination.
  8470  func (c *ConnectionMonitorDestination) UnmarshalJSON(data []byte) error {
  8471  	var rawMsg map[string]json.RawMessage
  8472  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8473  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8474  	}
  8475  	for key, val := range rawMsg {
  8476  		var err error
  8477  		switch key {
  8478  		case "address":
  8479  			err = unpopulate(val, "Address", &c.Address)
  8480  			delete(rawMsg, key)
  8481  		case "port":
  8482  			err = unpopulate(val, "Port", &c.Port)
  8483  			delete(rawMsg, key)
  8484  		case "resourceId":
  8485  			err = unpopulate(val, "ResourceID", &c.ResourceID)
  8486  			delete(rawMsg, key)
  8487  		}
  8488  		if err != nil {
  8489  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8490  		}
  8491  	}
  8492  	return nil
  8493  }
  8494  
  8495  // MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorEndpoint.
  8496  func (c ConnectionMonitorEndpoint) MarshalJSON() ([]byte, error) {
  8497  	objectMap := make(map[string]any)
  8498  	populate(objectMap, "address", c.Address)
  8499  	populate(objectMap, "coverageLevel", c.CoverageLevel)
  8500  	populate(objectMap, "filter", c.Filter)
  8501  	populate(objectMap, "locationDetails", c.LocationDetails)
  8502  	populate(objectMap, "name", c.Name)
  8503  	populate(objectMap, "resourceId", c.ResourceID)
  8504  	populate(objectMap, "scope", c.Scope)
  8505  	populate(objectMap, "subscriptionId", c.SubscriptionID)
  8506  	populate(objectMap, "type", c.Type)
  8507  	return json.Marshal(objectMap)
  8508  }
  8509  
  8510  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitorEndpoint.
  8511  func (c *ConnectionMonitorEndpoint) UnmarshalJSON(data []byte) error {
  8512  	var rawMsg map[string]json.RawMessage
  8513  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8514  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8515  	}
  8516  	for key, val := range rawMsg {
  8517  		var err error
  8518  		switch key {
  8519  		case "address":
  8520  			err = unpopulate(val, "Address", &c.Address)
  8521  			delete(rawMsg, key)
  8522  		case "coverageLevel":
  8523  			err = unpopulate(val, "CoverageLevel", &c.CoverageLevel)
  8524  			delete(rawMsg, key)
  8525  		case "filter":
  8526  			err = unpopulate(val, "Filter", &c.Filter)
  8527  			delete(rawMsg, key)
  8528  		case "locationDetails":
  8529  			err = unpopulate(val, "LocationDetails", &c.LocationDetails)
  8530  			delete(rawMsg, key)
  8531  		case "name":
  8532  			err = unpopulate(val, "Name", &c.Name)
  8533  			delete(rawMsg, key)
  8534  		case "resourceId":
  8535  			err = unpopulate(val, "ResourceID", &c.ResourceID)
  8536  			delete(rawMsg, key)
  8537  		case "scope":
  8538  			err = unpopulate(val, "Scope", &c.Scope)
  8539  			delete(rawMsg, key)
  8540  		case "subscriptionId":
  8541  			err = unpopulate(val, "SubscriptionID", &c.SubscriptionID)
  8542  			delete(rawMsg, key)
  8543  		case "type":
  8544  			err = unpopulate(val, "Type", &c.Type)
  8545  			delete(rawMsg, key)
  8546  		}
  8547  		if err != nil {
  8548  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8549  		}
  8550  	}
  8551  	return nil
  8552  }
  8553  
  8554  // MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorEndpointFilter.
  8555  func (c ConnectionMonitorEndpointFilter) MarshalJSON() ([]byte, error) {
  8556  	objectMap := make(map[string]any)
  8557  	populate(objectMap, "items", c.Items)
  8558  	populate(objectMap, "type", c.Type)
  8559  	return json.Marshal(objectMap)
  8560  }
  8561  
  8562  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitorEndpointFilter.
  8563  func (c *ConnectionMonitorEndpointFilter) UnmarshalJSON(data []byte) error {
  8564  	var rawMsg map[string]json.RawMessage
  8565  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8566  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8567  	}
  8568  	for key, val := range rawMsg {
  8569  		var err error
  8570  		switch key {
  8571  		case "items":
  8572  			err = unpopulate(val, "Items", &c.Items)
  8573  			delete(rawMsg, key)
  8574  		case "type":
  8575  			err = unpopulate(val, "Type", &c.Type)
  8576  			delete(rawMsg, key)
  8577  		}
  8578  		if err != nil {
  8579  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8580  		}
  8581  	}
  8582  	return nil
  8583  }
  8584  
  8585  // MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorEndpointFilterItem.
  8586  func (c ConnectionMonitorEndpointFilterItem) MarshalJSON() ([]byte, error) {
  8587  	objectMap := make(map[string]any)
  8588  	populate(objectMap, "address", c.Address)
  8589  	populate(objectMap, "type", c.Type)
  8590  	return json.Marshal(objectMap)
  8591  }
  8592  
  8593  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitorEndpointFilterItem.
  8594  func (c *ConnectionMonitorEndpointFilterItem) UnmarshalJSON(data []byte) error {
  8595  	var rawMsg map[string]json.RawMessage
  8596  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8597  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8598  	}
  8599  	for key, val := range rawMsg {
  8600  		var err error
  8601  		switch key {
  8602  		case "address":
  8603  			err = unpopulate(val, "Address", &c.Address)
  8604  			delete(rawMsg, key)
  8605  		case "type":
  8606  			err = unpopulate(val, "Type", &c.Type)
  8607  			delete(rawMsg, key)
  8608  		}
  8609  		if err != nil {
  8610  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8611  		}
  8612  	}
  8613  	return nil
  8614  }
  8615  
  8616  // MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorEndpointLocationDetails.
  8617  func (c ConnectionMonitorEndpointLocationDetails) MarshalJSON() ([]byte, error) {
  8618  	objectMap := make(map[string]any)
  8619  	populate(objectMap, "region", c.Region)
  8620  	return json.Marshal(objectMap)
  8621  }
  8622  
  8623  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitorEndpointLocationDetails.
  8624  func (c *ConnectionMonitorEndpointLocationDetails) UnmarshalJSON(data []byte) error {
  8625  	var rawMsg map[string]json.RawMessage
  8626  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8627  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8628  	}
  8629  	for key, val := range rawMsg {
  8630  		var err error
  8631  		switch key {
  8632  		case "region":
  8633  			err = unpopulate(val, "Region", &c.Region)
  8634  			delete(rawMsg, key)
  8635  		}
  8636  		if err != nil {
  8637  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8638  		}
  8639  	}
  8640  	return nil
  8641  }
  8642  
  8643  // MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorEndpointScope.
  8644  func (c ConnectionMonitorEndpointScope) MarshalJSON() ([]byte, error) {
  8645  	objectMap := make(map[string]any)
  8646  	populate(objectMap, "exclude", c.Exclude)
  8647  	populate(objectMap, "include", c.Include)
  8648  	return json.Marshal(objectMap)
  8649  }
  8650  
  8651  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitorEndpointScope.
  8652  func (c *ConnectionMonitorEndpointScope) UnmarshalJSON(data []byte) error {
  8653  	var rawMsg map[string]json.RawMessage
  8654  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8655  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8656  	}
  8657  	for key, val := range rawMsg {
  8658  		var err error
  8659  		switch key {
  8660  		case "exclude":
  8661  			err = unpopulate(val, "Exclude", &c.Exclude)
  8662  			delete(rawMsg, key)
  8663  		case "include":
  8664  			err = unpopulate(val, "Include", &c.Include)
  8665  			delete(rawMsg, key)
  8666  		}
  8667  		if err != nil {
  8668  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8669  		}
  8670  	}
  8671  	return nil
  8672  }
  8673  
  8674  // MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorEndpointScopeItem.
  8675  func (c ConnectionMonitorEndpointScopeItem) MarshalJSON() ([]byte, error) {
  8676  	objectMap := make(map[string]any)
  8677  	populate(objectMap, "address", c.Address)
  8678  	return json.Marshal(objectMap)
  8679  }
  8680  
  8681  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitorEndpointScopeItem.
  8682  func (c *ConnectionMonitorEndpointScopeItem) UnmarshalJSON(data []byte) error {
  8683  	var rawMsg map[string]json.RawMessage
  8684  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8685  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8686  	}
  8687  	for key, val := range rawMsg {
  8688  		var err error
  8689  		switch key {
  8690  		case "address":
  8691  			err = unpopulate(val, "Address", &c.Address)
  8692  			delete(rawMsg, key)
  8693  		}
  8694  		if err != nil {
  8695  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8696  		}
  8697  	}
  8698  	return nil
  8699  }
  8700  
  8701  // MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorHTTPConfiguration.
  8702  func (c ConnectionMonitorHTTPConfiguration) MarshalJSON() ([]byte, error) {
  8703  	objectMap := make(map[string]any)
  8704  	populate(objectMap, "method", c.Method)
  8705  	populate(objectMap, "path", c.Path)
  8706  	populate(objectMap, "port", c.Port)
  8707  	populate(objectMap, "preferHTTPS", c.PreferHTTPS)
  8708  	populate(objectMap, "requestHeaders", c.RequestHeaders)
  8709  	populate(objectMap, "validStatusCodeRanges", c.ValidStatusCodeRanges)
  8710  	return json.Marshal(objectMap)
  8711  }
  8712  
  8713  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitorHTTPConfiguration.
  8714  func (c *ConnectionMonitorHTTPConfiguration) UnmarshalJSON(data []byte) error {
  8715  	var rawMsg map[string]json.RawMessage
  8716  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8717  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8718  	}
  8719  	for key, val := range rawMsg {
  8720  		var err error
  8721  		switch key {
  8722  		case "method":
  8723  			err = unpopulate(val, "Method", &c.Method)
  8724  			delete(rawMsg, key)
  8725  		case "path":
  8726  			err = unpopulate(val, "Path", &c.Path)
  8727  			delete(rawMsg, key)
  8728  		case "port":
  8729  			err = unpopulate(val, "Port", &c.Port)
  8730  			delete(rawMsg, key)
  8731  		case "preferHTTPS":
  8732  			err = unpopulate(val, "PreferHTTPS", &c.PreferHTTPS)
  8733  			delete(rawMsg, key)
  8734  		case "requestHeaders":
  8735  			err = unpopulate(val, "RequestHeaders", &c.RequestHeaders)
  8736  			delete(rawMsg, key)
  8737  		case "validStatusCodeRanges":
  8738  			err = unpopulate(val, "ValidStatusCodeRanges", &c.ValidStatusCodeRanges)
  8739  			delete(rawMsg, key)
  8740  		}
  8741  		if err != nil {
  8742  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8743  		}
  8744  	}
  8745  	return nil
  8746  }
  8747  
  8748  // MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorIcmpConfiguration.
  8749  func (c ConnectionMonitorIcmpConfiguration) MarshalJSON() ([]byte, error) {
  8750  	objectMap := make(map[string]any)
  8751  	populate(objectMap, "disableTraceRoute", c.DisableTraceRoute)
  8752  	return json.Marshal(objectMap)
  8753  }
  8754  
  8755  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitorIcmpConfiguration.
  8756  func (c *ConnectionMonitorIcmpConfiguration) UnmarshalJSON(data []byte) error {
  8757  	var rawMsg map[string]json.RawMessage
  8758  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8759  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8760  	}
  8761  	for key, val := range rawMsg {
  8762  		var err error
  8763  		switch key {
  8764  		case "disableTraceRoute":
  8765  			err = unpopulate(val, "DisableTraceRoute", &c.DisableTraceRoute)
  8766  			delete(rawMsg, key)
  8767  		}
  8768  		if err != nil {
  8769  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8770  		}
  8771  	}
  8772  	return nil
  8773  }
  8774  
  8775  // MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorListResult.
  8776  func (c ConnectionMonitorListResult) MarshalJSON() ([]byte, error) {
  8777  	objectMap := make(map[string]any)
  8778  	populate(objectMap, "value", c.Value)
  8779  	return json.Marshal(objectMap)
  8780  }
  8781  
  8782  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitorListResult.
  8783  func (c *ConnectionMonitorListResult) UnmarshalJSON(data []byte) error {
  8784  	var rawMsg map[string]json.RawMessage
  8785  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8786  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8787  	}
  8788  	for key, val := range rawMsg {
  8789  		var err error
  8790  		switch key {
  8791  		case "value":
  8792  			err = unpopulate(val, "Value", &c.Value)
  8793  			delete(rawMsg, key)
  8794  		}
  8795  		if err != nil {
  8796  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8797  		}
  8798  	}
  8799  	return nil
  8800  }
  8801  
  8802  // MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorOutput.
  8803  func (c ConnectionMonitorOutput) MarshalJSON() ([]byte, error) {
  8804  	objectMap := make(map[string]any)
  8805  	populate(objectMap, "type", c.Type)
  8806  	populate(objectMap, "workspaceSettings", c.WorkspaceSettings)
  8807  	return json.Marshal(objectMap)
  8808  }
  8809  
  8810  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitorOutput.
  8811  func (c *ConnectionMonitorOutput) UnmarshalJSON(data []byte) error {
  8812  	var rawMsg map[string]json.RawMessage
  8813  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8814  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8815  	}
  8816  	for key, val := range rawMsg {
  8817  		var err error
  8818  		switch key {
  8819  		case "type":
  8820  			err = unpopulate(val, "Type", &c.Type)
  8821  			delete(rawMsg, key)
  8822  		case "workspaceSettings":
  8823  			err = unpopulate(val, "WorkspaceSettings", &c.WorkspaceSettings)
  8824  			delete(rawMsg, key)
  8825  		}
  8826  		if err != nil {
  8827  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8828  		}
  8829  	}
  8830  	return nil
  8831  }
  8832  
  8833  // MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorParameters.
  8834  func (c ConnectionMonitorParameters) MarshalJSON() ([]byte, error) {
  8835  	objectMap := make(map[string]any)
  8836  	populate(objectMap, "autoStart", c.AutoStart)
  8837  	populate(objectMap, "destination", c.Destination)
  8838  	populate(objectMap, "endpoints", c.Endpoints)
  8839  	populate(objectMap, "monitoringIntervalInSeconds", c.MonitoringIntervalInSeconds)
  8840  	populate(objectMap, "notes", c.Notes)
  8841  	populate(objectMap, "outputs", c.Outputs)
  8842  	populate(objectMap, "source", c.Source)
  8843  	populate(objectMap, "testConfigurations", c.TestConfigurations)
  8844  	populate(objectMap, "testGroups", c.TestGroups)
  8845  	return json.Marshal(objectMap)
  8846  }
  8847  
  8848  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitorParameters.
  8849  func (c *ConnectionMonitorParameters) UnmarshalJSON(data []byte) error {
  8850  	var rawMsg map[string]json.RawMessage
  8851  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8852  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8853  	}
  8854  	for key, val := range rawMsg {
  8855  		var err error
  8856  		switch key {
  8857  		case "autoStart":
  8858  			err = unpopulate(val, "AutoStart", &c.AutoStart)
  8859  			delete(rawMsg, key)
  8860  		case "destination":
  8861  			err = unpopulate(val, "Destination", &c.Destination)
  8862  			delete(rawMsg, key)
  8863  		case "endpoints":
  8864  			err = unpopulate(val, "Endpoints", &c.Endpoints)
  8865  			delete(rawMsg, key)
  8866  		case "monitoringIntervalInSeconds":
  8867  			err = unpopulate(val, "MonitoringIntervalInSeconds", &c.MonitoringIntervalInSeconds)
  8868  			delete(rawMsg, key)
  8869  		case "notes":
  8870  			err = unpopulate(val, "Notes", &c.Notes)
  8871  			delete(rawMsg, key)
  8872  		case "outputs":
  8873  			err = unpopulate(val, "Outputs", &c.Outputs)
  8874  			delete(rawMsg, key)
  8875  		case "source":
  8876  			err = unpopulate(val, "Source", &c.Source)
  8877  			delete(rawMsg, key)
  8878  		case "testConfigurations":
  8879  			err = unpopulate(val, "TestConfigurations", &c.TestConfigurations)
  8880  			delete(rawMsg, key)
  8881  		case "testGroups":
  8882  			err = unpopulate(val, "TestGroups", &c.TestGroups)
  8883  			delete(rawMsg, key)
  8884  		}
  8885  		if err != nil {
  8886  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8887  		}
  8888  	}
  8889  	return nil
  8890  }
  8891  
  8892  // MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorQueryResult.
  8893  func (c ConnectionMonitorQueryResult) MarshalJSON() ([]byte, error) {
  8894  	objectMap := make(map[string]any)
  8895  	populate(objectMap, "sourceStatus", c.SourceStatus)
  8896  	populate(objectMap, "states", c.States)
  8897  	return json.Marshal(objectMap)
  8898  }
  8899  
  8900  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitorQueryResult.
  8901  func (c *ConnectionMonitorQueryResult) UnmarshalJSON(data []byte) error {
  8902  	var rawMsg map[string]json.RawMessage
  8903  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8904  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8905  	}
  8906  	for key, val := range rawMsg {
  8907  		var err error
  8908  		switch key {
  8909  		case "sourceStatus":
  8910  			err = unpopulate(val, "SourceStatus", &c.SourceStatus)
  8911  			delete(rawMsg, key)
  8912  		case "states":
  8913  			err = unpopulate(val, "States", &c.States)
  8914  			delete(rawMsg, key)
  8915  		}
  8916  		if err != nil {
  8917  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8918  		}
  8919  	}
  8920  	return nil
  8921  }
  8922  
  8923  // MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorResult.
  8924  func (c ConnectionMonitorResult) MarshalJSON() ([]byte, error) {
  8925  	objectMap := make(map[string]any)
  8926  	populate(objectMap, "etag", c.Etag)
  8927  	populate(objectMap, "id", c.ID)
  8928  	populate(objectMap, "location", c.Location)
  8929  	populate(objectMap, "name", c.Name)
  8930  	populate(objectMap, "properties", c.Properties)
  8931  	populate(objectMap, "tags", c.Tags)
  8932  	populate(objectMap, "type", c.Type)
  8933  	return json.Marshal(objectMap)
  8934  }
  8935  
  8936  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitorResult.
  8937  func (c *ConnectionMonitorResult) UnmarshalJSON(data []byte) error {
  8938  	var rawMsg map[string]json.RawMessage
  8939  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8940  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8941  	}
  8942  	for key, val := range rawMsg {
  8943  		var err error
  8944  		switch key {
  8945  		case "etag":
  8946  			err = unpopulate(val, "Etag", &c.Etag)
  8947  			delete(rawMsg, key)
  8948  		case "id":
  8949  			err = unpopulate(val, "ID", &c.ID)
  8950  			delete(rawMsg, key)
  8951  		case "location":
  8952  			err = unpopulate(val, "Location", &c.Location)
  8953  			delete(rawMsg, key)
  8954  		case "name":
  8955  			err = unpopulate(val, "Name", &c.Name)
  8956  			delete(rawMsg, key)
  8957  		case "properties":
  8958  			err = unpopulate(val, "Properties", &c.Properties)
  8959  			delete(rawMsg, key)
  8960  		case "tags":
  8961  			err = unpopulate(val, "Tags", &c.Tags)
  8962  			delete(rawMsg, key)
  8963  		case "type":
  8964  			err = unpopulate(val, "Type", &c.Type)
  8965  			delete(rawMsg, key)
  8966  		}
  8967  		if err != nil {
  8968  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8969  		}
  8970  	}
  8971  	return nil
  8972  }
  8973  
  8974  // MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorResultProperties.
  8975  func (c ConnectionMonitorResultProperties) MarshalJSON() ([]byte, error) {
  8976  	objectMap := make(map[string]any)
  8977  	populate(objectMap, "autoStart", c.AutoStart)
  8978  	populate(objectMap, "connectionMonitorType", c.ConnectionMonitorType)
  8979  	populate(objectMap, "destination", c.Destination)
  8980  	populate(objectMap, "endpoints", c.Endpoints)
  8981  	populate(objectMap, "monitoringIntervalInSeconds", c.MonitoringIntervalInSeconds)
  8982  	populate(objectMap, "monitoringStatus", c.MonitoringStatus)
  8983  	populate(objectMap, "notes", c.Notes)
  8984  	populate(objectMap, "outputs", c.Outputs)
  8985  	populate(objectMap, "provisioningState", c.ProvisioningState)
  8986  	populate(objectMap, "source", c.Source)
  8987  	populateDateTimeRFC3339(objectMap, "startTime", c.StartTime)
  8988  	populate(objectMap, "testConfigurations", c.TestConfigurations)
  8989  	populate(objectMap, "testGroups", c.TestGroups)
  8990  	return json.Marshal(objectMap)
  8991  }
  8992  
  8993  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitorResultProperties.
  8994  func (c *ConnectionMonitorResultProperties) UnmarshalJSON(data []byte) error {
  8995  	var rawMsg map[string]json.RawMessage
  8996  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  8997  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  8998  	}
  8999  	for key, val := range rawMsg {
  9000  		var err error
  9001  		switch key {
  9002  		case "autoStart":
  9003  			err = unpopulate(val, "AutoStart", &c.AutoStart)
  9004  			delete(rawMsg, key)
  9005  		case "connectionMonitorType":
  9006  			err = unpopulate(val, "ConnectionMonitorType", &c.ConnectionMonitorType)
  9007  			delete(rawMsg, key)
  9008  		case "destination":
  9009  			err = unpopulate(val, "Destination", &c.Destination)
  9010  			delete(rawMsg, key)
  9011  		case "endpoints":
  9012  			err = unpopulate(val, "Endpoints", &c.Endpoints)
  9013  			delete(rawMsg, key)
  9014  		case "monitoringIntervalInSeconds":
  9015  			err = unpopulate(val, "MonitoringIntervalInSeconds", &c.MonitoringIntervalInSeconds)
  9016  			delete(rawMsg, key)
  9017  		case "monitoringStatus":
  9018  			err = unpopulate(val, "MonitoringStatus", &c.MonitoringStatus)
  9019  			delete(rawMsg, key)
  9020  		case "notes":
  9021  			err = unpopulate(val, "Notes", &c.Notes)
  9022  			delete(rawMsg, key)
  9023  		case "outputs":
  9024  			err = unpopulate(val, "Outputs", &c.Outputs)
  9025  			delete(rawMsg, key)
  9026  		case "provisioningState":
  9027  			err = unpopulate(val, "ProvisioningState", &c.ProvisioningState)
  9028  			delete(rawMsg, key)
  9029  		case "source":
  9030  			err = unpopulate(val, "Source", &c.Source)
  9031  			delete(rawMsg, key)
  9032  		case "startTime":
  9033  			err = unpopulateDateTimeRFC3339(val, "StartTime", &c.StartTime)
  9034  			delete(rawMsg, key)
  9035  		case "testConfigurations":
  9036  			err = unpopulate(val, "TestConfigurations", &c.TestConfigurations)
  9037  			delete(rawMsg, key)
  9038  		case "testGroups":
  9039  			err = unpopulate(val, "TestGroups", &c.TestGroups)
  9040  			delete(rawMsg, key)
  9041  		}
  9042  		if err != nil {
  9043  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9044  		}
  9045  	}
  9046  	return nil
  9047  }
  9048  
  9049  // MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorSource.
  9050  func (c ConnectionMonitorSource) MarshalJSON() ([]byte, error) {
  9051  	objectMap := make(map[string]any)
  9052  	populate(objectMap, "port", c.Port)
  9053  	populate(objectMap, "resourceId", c.ResourceID)
  9054  	return json.Marshal(objectMap)
  9055  }
  9056  
  9057  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitorSource.
  9058  func (c *ConnectionMonitorSource) UnmarshalJSON(data []byte) error {
  9059  	var rawMsg map[string]json.RawMessage
  9060  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  9061  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9062  	}
  9063  	for key, val := range rawMsg {
  9064  		var err error
  9065  		switch key {
  9066  		case "port":
  9067  			err = unpopulate(val, "Port", &c.Port)
  9068  			delete(rawMsg, key)
  9069  		case "resourceId":
  9070  			err = unpopulate(val, "ResourceID", &c.ResourceID)
  9071  			delete(rawMsg, key)
  9072  		}
  9073  		if err != nil {
  9074  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9075  		}
  9076  	}
  9077  	return nil
  9078  }
  9079  
  9080  // MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorSuccessThreshold.
  9081  func (c ConnectionMonitorSuccessThreshold) MarshalJSON() ([]byte, error) {
  9082  	objectMap := make(map[string]any)
  9083  	populate(objectMap, "checksFailedPercent", c.ChecksFailedPercent)
  9084  	populate(objectMap, "roundTripTimeMs", c.RoundTripTimeMs)
  9085  	return json.Marshal(objectMap)
  9086  }
  9087  
  9088  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitorSuccessThreshold.
  9089  func (c *ConnectionMonitorSuccessThreshold) UnmarshalJSON(data []byte) error {
  9090  	var rawMsg map[string]json.RawMessage
  9091  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  9092  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9093  	}
  9094  	for key, val := range rawMsg {
  9095  		var err error
  9096  		switch key {
  9097  		case "checksFailedPercent":
  9098  			err = unpopulate(val, "ChecksFailedPercent", &c.ChecksFailedPercent)
  9099  			delete(rawMsg, key)
  9100  		case "roundTripTimeMs":
  9101  			err = unpopulate(val, "RoundTripTimeMs", &c.RoundTripTimeMs)
  9102  			delete(rawMsg, key)
  9103  		}
  9104  		if err != nil {
  9105  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9106  		}
  9107  	}
  9108  	return nil
  9109  }
  9110  
  9111  // MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorTCPConfiguration.
  9112  func (c ConnectionMonitorTCPConfiguration) MarshalJSON() ([]byte, error) {
  9113  	objectMap := make(map[string]any)
  9114  	populate(objectMap, "destinationPortBehavior", c.DestinationPortBehavior)
  9115  	populate(objectMap, "disableTraceRoute", c.DisableTraceRoute)
  9116  	populate(objectMap, "port", c.Port)
  9117  	return json.Marshal(objectMap)
  9118  }
  9119  
  9120  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitorTCPConfiguration.
  9121  func (c *ConnectionMonitorTCPConfiguration) UnmarshalJSON(data []byte) error {
  9122  	var rawMsg map[string]json.RawMessage
  9123  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  9124  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9125  	}
  9126  	for key, val := range rawMsg {
  9127  		var err error
  9128  		switch key {
  9129  		case "destinationPortBehavior":
  9130  			err = unpopulate(val, "DestinationPortBehavior", &c.DestinationPortBehavior)
  9131  			delete(rawMsg, key)
  9132  		case "disableTraceRoute":
  9133  			err = unpopulate(val, "DisableTraceRoute", &c.DisableTraceRoute)
  9134  			delete(rawMsg, key)
  9135  		case "port":
  9136  			err = unpopulate(val, "Port", &c.Port)
  9137  			delete(rawMsg, key)
  9138  		}
  9139  		if err != nil {
  9140  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9141  		}
  9142  	}
  9143  	return nil
  9144  }
  9145  
  9146  // MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorTestConfiguration.
  9147  func (c ConnectionMonitorTestConfiguration) MarshalJSON() ([]byte, error) {
  9148  	objectMap := make(map[string]any)
  9149  	populate(objectMap, "httpConfiguration", c.HTTPConfiguration)
  9150  	populate(objectMap, "icmpConfiguration", c.IcmpConfiguration)
  9151  	populate(objectMap, "name", c.Name)
  9152  	populate(objectMap, "preferredIPVersion", c.PreferredIPVersion)
  9153  	populate(objectMap, "protocol", c.Protocol)
  9154  	populate(objectMap, "successThreshold", c.SuccessThreshold)
  9155  	populate(objectMap, "tcpConfiguration", c.TCPConfiguration)
  9156  	populate(objectMap, "testFrequencySec", c.TestFrequencySec)
  9157  	return json.Marshal(objectMap)
  9158  }
  9159  
  9160  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitorTestConfiguration.
  9161  func (c *ConnectionMonitorTestConfiguration) UnmarshalJSON(data []byte) error {
  9162  	var rawMsg map[string]json.RawMessage
  9163  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  9164  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9165  	}
  9166  	for key, val := range rawMsg {
  9167  		var err error
  9168  		switch key {
  9169  		case "httpConfiguration":
  9170  			err = unpopulate(val, "HTTPConfiguration", &c.HTTPConfiguration)
  9171  			delete(rawMsg, key)
  9172  		case "icmpConfiguration":
  9173  			err = unpopulate(val, "IcmpConfiguration", &c.IcmpConfiguration)
  9174  			delete(rawMsg, key)
  9175  		case "name":
  9176  			err = unpopulate(val, "Name", &c.Name)
  9177  			delete(rawMsg, key)
  9178  		case "preferredIPVersion":
  9179  			err = unpopulate(val, "PreferredIPVersion", &c.PreferredIPVersion)
  9180  			delete(rawMsg, key)
  9181  		case "protocol":
  9182  			err = unpopulate(val, "Protocol", &c.Protocol)
  9183  			delete(rawMsg, key)
  9184  		case "successThreshold":
  9185  			err = unpopulate(val, "SuccessThreshold", &c.SuccessThreshold)
  9186  			delete(rawMsg, key)
  9187  		case "tcpConfiguration":
  9188  			err = unpopulate(val, "TCPConfiguration", &c.TCPConfiguration)
  9189  			delete(rawMsg, key)
  9190  		case "testFrequencySec":
  9191  			err = unpopulate(val, "TestFrequencySec", &c.TestFrequencySec)
  9192  			delete(rawMsg, key)
  9193  		}
  9194  		if err != nil {
  9195  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9196  		}
  9197  	}
  9198  	return nil
  9199  }
  9200  
  9201  // MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorTestGroup.
  9202  func (c ConnectionMonitorTestGroup) MarshalJSON() ([]byte, error) {
  9203  	objectMap := make(map[string]any)
  9204  	populate(objectMap, "destinations", c.Destinations)
  9205  	populate(objectMap, "disable", c.Disable)
  9206  	populate(objectMap, "name", c.Name)
  9207  	populate(objectMap, "sources", c.Sources)
  9208  	populate(objectMap, "testConfigurations", c.TestConfigurations)
  9209  	return json.Marshal(objectMap)
  9210  }
  9211  
  9212  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitorTestGroup.
  9213  func (c *ConnectionMonitorTestGroup) UnmarshalJSON(data []byte) error {
  9214  	var rawMsg map[string]json.RawMessage
  9215  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  9216  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9217  	}
  9218  	for key, val := range rawMsg {
  9219  		var err error
  9220  		switch key {
  9221  		case "destinations":
  9222  			err = unpopulate(val, "Destinations", &c.Destinations)
  9223  			delete(rawMsg, key)
  9224  		case "disable":
  9225  			err = unpopulate(val, "Disable", &c.Disable)
  9226  			delete(rawMsg, key)
  9227  		case "name":
  9228  			err = unpopulate(val, "Name", &c.Name)
  9229  			delete(rawMsg, key)
  9230  		case "sources":
  9231  			err = unpopulate(val, "Sources", &c.Sources)
  9232  			delete(rawMsg, key)
  9233  		case "testConfigurations":
  9234  			err = unpopulate(val, "TestConfigurations", &c.TestConfigurations)
  9235  			delete(rawMsg, key)
  9236  		}
  9237  		if err != nil {
  9238  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9239  		}
  9240  	}
  9241  	return nil
  9242  }
  9243  
  9244  // MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorWorkspaceSettings.
  9245  func (c ConnectionMonitorWorkspaceSettings) MarshalJSON() ([]byte, error) {
  9246  	objectMap := make(map[string]any)
  9247  	populate(objectMap, "workspaceResourceId", c.WorkspaceResourceID)
  9248  	return json.Marshal(objectMap)
  9249  }
  9250  
  9251  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitorWorkspaceSettings.
  9252  func (c *ConnectionMonitorWorkspaceSettings) UnmarshalJSON(data []byte) error {
  9253  	var rawMsg map[string]json.RawMessage
  9254  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  9255  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9256  	}
  9257  	for key, val := range rawMsg {
  9258  		var err error
  9259  		switch key {
  9260  		case "workspaceResourceId":
  9261  			err = unpopulate(val, "WorkspaceResourceID", &c.WorkspaceResourceID)
  9262  			delete(rawMsg, key)
  9263  		}
  9264  		if err != nil {
  9265  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9266  		}
  9267  	}
  9268  	return nil
  9269  }
  9270  
  9271  // MarshalJSON implements the json.Marshaller interface for type ConnectionResetSharedKey.
  9272  func (c ConnectionResetSharedKey) MarshalJSON() ([]byte, error) {
  9273  	objectMap := make(map[string]any)
  9274  	populate(objectMap, "keyLength", c.KeyLength)
  9275  	return json.Marshal(objectMap)
  9276  }
  9277  
  9278  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionResetSharedKey.
  9279  func (c *ConnectionResetSharedKey) UnmarshalJSON(data []byte) error {
  9280  	var rawMsg map[string]json.RawMessage
  9281  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  9282  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9283  	}
  9284  	for key, val := range rawMsg {
  9285  		var err error
  9286  		switch key {
  9287  		case "keyLength":
  9288  			err = unpopulate(val, "KeyLength", &c.KeyLength)
  9289  			delete(rawMsg, key)
  9290  		}
  9291  		if err != nil {
  9292  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9293  		}
  9294  	}
  9295  	return nil
  9296  }
  9297  
  9298  // MarshalJSON implements the json.Marshaller interface for type ConnectionSharedKey.
  9299  func (c ConnectionSharedKey) MarshalJSON() ([]byte, error) {
  9300  	objectMap := make(map[string]any)
  9301  	populate(objectMap, "id", c.ID)
  9302  	populate(objectMap, "value", c.Value)
  9303  	return json.Marshal(objectMap)
  9304  }
  9305  
  9306  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionSharedKey.
  9307  func (c *ConnectionSharedKey) UnmarshalJSON(data []byte) error {
  9308  	var rawMsg map[string]json.RawMessage
  9309  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  9310  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9311  	}
  9312  	for key, val := range rawMsg {
  9313  		var err error
  9314  		switch key {
  9315  		case "id":
  9316  			err = unpopulate(val, "ID", &c.ID)
  9317  			delete(rawMsg, key)
  9318  		case "value":
  9319  			err = unpopulate(val, "Value", &c.Value)
  9320  			delete(rawMsg, key)
  9321  		}
  9322  		if err != nil {
  9323  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9324  		}
  9325  	}
  9326  	return nil
  9327  }
  9328  
  9329  // MarshalJSON implements the json.Marshaller interface for type ConnectionSharedKeyResult.
  9330  func (c ConnectionSharedKeyResult) MarshalJSON() ([]byte, error) {
  9331  	objectMap := make(map[string]any)
  9332  	populate(objectMap, "id", c.ID)
  9333  	populate(objectMap, "name", c.Name)
  9334  	populate(objectMap, "properties", c.Properties)
  9335  	populate(objectMap, "type", c.Type)
  9336  	return json.Marshal(objectMap)
  9337  }
  9338  
  9339  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionSharedKeyResult.
  9340  func (c *ConnectionSharedKeyResult) UnmarshalJSON(data []byte) error {
  9341  	var rawMsg map[string]json.RawMessage
  9342  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  9343  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9344  	}
  9345  	for key, val := range rawMsg {
  9346  		var err error
  9347  		switch key {
  9348  		case "id":
  9349  			err = unpopulate(val, "ID", &c.ID)
  9350  			delete(rawMsg, key)
  9351  		case "name":
  9352  			err = unpopulate(val, "Name", &c.Name)
  9353  			delete(rawMsg, key)
  9354  		case "properties":
  9355  			err = unpopulate(val, "Properties", &c.Properties)
  9356  			delete(rawMsg, key)
  9357  		case "type":
  9358  			err = unpopulate(val, "Type", &c.Type)
  9359  			delete(rawMsg, key)
  9360  		}
  9361  		if err != nil {
  9362  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9363  		}
  9364  	}
  9365  	return nil
  9366  }
  9367  
  9368  // MarshalJSON implements the json.Marshaller interface for type ConnectionSharedKeyResultList.
  9369  func (c ConnectionSharedKeyResultList) MarshalJSON() ([]byte, error) {
  9370  	objectMap := make(map[string]any)
  9371  	populate(objectMap, "nextLink", c.NextLink)
  9372  	populate(objectMap, "value", c.Value)
  9373  	return json.Marshal(objectMap)
  9374  }
  9375  
  9376  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionSharedKeyResultList.
  9377  func (c *ConnectionSharedKeyResultList) UnmarshalJSON(data []byte) error {
  9378  	var rawMsg map[string]json.RawMessage
  9379  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  9380  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9381  	}
  9382  	for key, val := range rawMsg {
  9383  		var err error
  9384  		switch key {
  9385  		case "nextLink":
  9386  			err = unpopulate(val, "NextLink", &c.NextLink)
  9387  			delete(rawMsg, key)
  9388  		case "value":
  9389  			err = unpopulate(val, "Value", &c.Value)
  9390  			delete(rawMsg, key)
  9391  		}
  9392  		if err != nil {
  9393  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9394  		}
  9395  	}
  9396  	return nil
  9397  }
  9398  
  9399  // MarshalJSON implements the json.Marshaller interface for type ConnectionStateSnapshot.
  9400  func (c ConnectionStateSnapshot) MarshalJSON() ([]byte, error) {
  9401  	objectMap := make(map[string]any)
  9402  	populate(objectMap, "avgLatencyInMs", c.AvgLatencyInMs)
  9403  	populate(objectMap, "connectionState", c.ConnectionState)
  9404  	populateDateTimeRFC3339(objectMap, "endTime", c.EndTime)
  9405  	populate(objectMap, "evaluationState", c.EvaluationState)
  9406  	populate(objectMap, "hops", c.Hops)
  9407  	populate(objectMap, "maxLatencyInMs", c.MaxLatencyInMs)
  9408  	populate(objectMap, "minLatencyInMs", c.MinLatencyInMs)
  9409  	populate(objectMap, "probesFailed", c.ProbesFailed)
  9410  	populate(objectMap, "probesSent", c.ProbesSent)
  9411  	populateDateTimeRFC3339(objectMap, "startTime", c.StartTime)
  9412  	return json.Marshal(objectMap)
  9413  }
  9414  
  9415  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionStateSnapshot.
  9416  func (c *ConnectionStateSnapshot) UnmarshalJSON(data []byte) error {
  9417  	var rawMsg map[string]json.RawMessage
  9418  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  9419  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9420  	}
  9421  	for key, val := range rawMsg {
  9422  		var err error
  9423  		switch key {
  9424  		case "avgLatencyInMs":
  9425  			err = unpopulate(val, "AvgLatencyInMs", &c.AvgLatencyInMs)
  9426  			delete(rawMsg, key)
  9427  		case "connectionState":
  9428  			err = unpopulate(val, "ConnectionState", &c.ConnectionState)
  9429  			delete(rawMsg, key)
  9430  		case "endTime":
  9431  			err = unpopulateDateTimeRFC3339(val, "EndTime", &c.EndTime)
  9432  			delete(rawMsg, key)
  9433  		case "evaluationState":
  9434  			err = unpopulate(val, "EvaluationState", &c.EvaluationState)
  9435  			delete(rawMsg, key)
  9436  		case "hops":
  9437  			err = unpopulate(val, "Hops", &c.Hops)
  9438  			delete(rawMsg, key)
  9439  		case "maxLatencyInMs":
  9440  			err = unpopulate(val, "MaxLatencyInMs", &c.MaxLatencyInMs)
  9441  			delete(rawMsg, key)
  9442  		case "minLatencyInMs":
  9443  			err = unpopulate(val, "MinLatencyInMs", &c.MinLatencyInMs)
  9444  			delete(rawMsg, key)
  9445  		case "probesFailed":
  9446  			err = unpopulate(val, "ProbesFailed", &c.ProbesFailed)
  9447  			delete(rawMsg, key)
  9448  		case "probesSent":
  9449  			err = unpopulate(val, "ProbesSent", &c.ProbesSent)
  9450  			delete(rawMsg, key)
  9451  		case "startTime":
  9452  			err = unpopulateDateTimeRFC3339(val, "StartTime", &c.StartTime)
  9453  			delete(rawMsg, key)
  9454  		}
  9455  		if err != nil {
  9456  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9457  		}
  9458  	}
  9459  	return nil
  9460  }
  9461  
  9462  // MarshalJSON implements the json.Marshaller interface for type ConnectivityConfiguration.
  9463  func (c ConnectivityConfiguration) MarshalJSON() ([]byte, error) {
  9464  	objectMap := make(map[string]any)
  9465  	populate(objectMap, "etag", c.Etag)
  9466  	populate(objectMap, "id", c.ID)
  9467  	populate(objectMap, "name", c.Name)
  9468  	populate(objectMap, "properties", c.Properties)
  9469  	populate(objectMap, "systemData", c.SystemData)
  9470  	populate(objectMap, "type", c.Type)
  9471  	return json.Marshal(objectMap)
  9472  }
  9473  
  9474  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectivityConfiguration.
  9475  func (c *ConnectivityConfiguration) UnmarshalJSON(data []byte) error {
  9476  	var rawMsg map[string]json.RawMessage
  9477  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  9478  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9479  	}
  9480  	for key, val := range rawMsg {
  9481  		var err error
  9482  		switch key {
  9483  		case "etag":
  9484  			err = unpopulate(val, "Etag", &c.Etag)
  9485  			delete(rawMsg, key)
  9486  		case "id":
  9487  			err = unpopulate(val, "ID", &c.ID)
  9488  			delete(rawMsg, key)
  9489  		case "name":
  9490  			err = unpopulate(val, "Name", &c.Name)
  9491  			delete(rawMsg, key)
  9492  		case "properties":
  9493  			err = unpopulate(val, "Properties", &c.Properties)
  9494  			delete(rawMsg, key)
  9495  		case "systemData":
  9496  			err = unpopulate(val, "SystemData", &c.SystemData)
  9497  			delete(rawMsg, key)
  9498  		case "type":
  9499  			err = unpopulate(val, "Type", &c.Type)
  9500  			delete(rawMsg, key)
  9501  		}
  9502  		if err != nil {
  9503  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9504  		}
  9505  	}
  9506  	return nil
  9507  }
  9508  
  9509  // MarshalJSON implements the json.Marshaller interface for type ConnectivityConfigurationListResult.
  9510  func (c ConnectivityConfigurationListResult) MarshalJSON() ([]byte, error) {
  9511  	objectMap := make(map[string]any)
  9512  	populate(objectMap, "nextLink", c.NextLink)
  9513  	populate(objectMap, "value", c.Value)
  9514  	return json.Marshal(objectMap)
  9515  }
  9516  
  9517  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectivityConfigurationListResult.
  9518  func (c *ConnectivityConfigurationListResult) UnmarshalJSON(data []byte) error {
  9519  	var rawMsg map[string]json.RawMessage
  9520  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  9521  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9522  	}
  9523  	for key, val := range rawMsg {
  9524  		var err error
  9525  		switch key {
  9526  		case "nextLink":
  9527  			err = unpopulate(val, "NextLink", &c.NextLink)
  9528  			delete(rawMsg, key)
  9529  		case "value":
  9530  			err = unpopulate(val, "Value", &c.Value)
  9531  			delete(rawMsg, key)
  9532  		}
  9533  		if err != nil {
  9534  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9535  		}
  9536  	}
  9537  	return nil
  9538  }
  9539  
  9540  // MarshalJSON implements the json.Marshaller interface for type ConnectivityConfigurationProperties.
  9541  func (c ConnectivityConfigurationProperties) MarshalJSON() ([]byte, error) {
  9542  	objectMap := make(map[string]any)
  9543  	populate(objectMap, "appliesToGroups", c.AppliesToGroups)
  9544  	populate(objectMap, "connectivityTopology", c.ConnectivityTopology)
  9545  	populate(objectMap, "deleteExistingPeering", c.DeleteExistingPeering)
  9546  	populate(objectMap, "description", c.Description)
  9547  	populate(objectMap, "hubs", c.Hubs)
  9548  	populate(objectMap, "isGlobal", c.IsGlobal)
  9549  	populate(objectMap, "provisioningState", c.ProvisioningState)
  9550  	populate(objectMap, "resourceGuid", c.ResourceGUID)
  9551  	return json.Marshal(objectMap)
  9552  }
  9553  
  9554  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectivityConfigurationProperties.
  9555  func (c *ConnectivityConfigurationProperties) UnmarshalJSON(data []byte) error {
  9556  	var rawMsg map[string]json.RawMessage
  9557  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  9558  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9559  	}
  9560  	for key, val := range rawMsg {
  9561  		var err error
  9562  		switch key {
  9563  		case "appliesToGroups":
  9564  			err = unpopulate(val, "AppliesToGroups", &c.AppliesToGroups)
  9565  			delete(rawMsg, key)
  9566  		case "connectivityTopology":
  9567  			err = unpopulate(val, "ConnectivityTopology", &c.ConnectivityTopology)
  9568  			delete(rawMsg, key)
  9569  		case "deleteExistingPeering":
  9570  			err = unpopulate(val, "DeleteExistingPeering", &c.DeleteExistingPeering)
  9571  			delete(rawMsg, key)
  9572  		case "description":
  9573  			err = unpopulate(val, "Description", &c.Description)
  9574  			delete(rawMsg, key)
  9575  		case "hubs":
  9576  			err = unpopulate(val, "Hubs", &c.Hubs)
  9577  			delete(rawMsg, key)
  9578  		case "isGlobal":
  9579  			err = unpopulate(val, "IsGlobal", &c.IsGlobal)
  9580  			delete(rawMsg, key)
  9581  		case "provisioningState":
  9582  			err = unpopulate(val, "ProvisioningState", &c.ProvisioningState)
  9583  			delete(rawMsg, key)
  9584  		case "resourceGuid":
  9585  			err = unpopulate(val, "ResourceGUID", &c.ResourceGUID)
  9586  			delete(rawMsg, key)
  9587  		}
  9588  		if err != nil {
  9589  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9590  		}
  9591  	}
  9592  	return nil
  9593  }
  9594  
  9595  // MarshalJSON implements the json.Marshaller interface for type ConnectivityDestination.
  9596  func (c ConnectivityDestination) MarshalJSON() ([]byte, error) {
  9597  	objectMap := make(map[string]any)
  9598  	populate(objectMap, "address", c.Address)
  9599  	populate(objectMap, "port", c.Port)
  9600  	populate(objectMap, "resourceId", c.ResourceID)
  9601  	return json.Marshal(objectMap)
  9602  }
  9603  
  9604  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectivityDestination.
  9605  func (c *ConnectivityDestination) UnmarshalJSON(data []byte) error {
  9606  	var rawMsg map[string]json.RawMessage
  9607  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  9608  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9609  	}
  9610  	for key, val := range rawMsg {
  9611  		var err error
  9612  		switch key {
  9613  		case "address":
  9614  			err = unpopulate(val, "Address", &c.Address)
  9615  			delete(rawMsg, key)
  9616  		case "port":
  9617  			err = unpopulate(val, "Port", &c.Port)
  9618  			delete(rawMsg, key)
  9619  		case "resourceId":
  9620  			err = unpopulate(val, "ResourceID", &c.ResourceID)
  9621  			delete(rawMsg, key)
  9622  		}
  9623  		if err != nil {
  9624  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9625  		}
  9626  	}
  9627  	return nil
  9628  }
  9629  
  9630  // MarshalJSON implements the json.Marshaller interface for type ConnectivityGroupItem.
  9631  func (c ConnectivityGroupItem) MarshalJSON() ([]byte, error) {
  9632  	objectMap := make(map[string]any)
  9633  	populate(objectMap, "groupConnectivity", c.GroupConnectivity)
  9634  	populate(objectMap, "isGlobal", c.IsGlobal)
  9635  	populate(objectMap, "networkGroupId", c.NetworkGroupID)
  9636  	populate(objectMap, "useHubGateway", c.UseHubGateway)
  9637  	return json.Marshal(objectMap)
  9638  }
  9639  
  9640  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectivityGroupItem.
  9641  func (c *ConnectivityGroupItem) UnmarshalJSON(data []byte) error {
  9642  	var rawMsg map[string]json.RawMessage
  9643  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  9644  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9645  	}
  9646  	for key, val := range rawMsg {
  9647  		var err error
  9648  		switch key {
  9649  		case "groupConnectivity":
  9650  			err = unpopulate(val, "GroupConnectivity", &c.GroupConnectivity)
  9651  			delete(rawMsg, key)
  9652  		case "isGlobal":
  9653  			err = unpopulate(val, "IsGlobal", &c.IsGlobal)
  9654  			delete(rawMsg, key)
  9655  		case "networkGroupId":
  9656  			err = unpopulate(val, "NetworkGroupID", &c.NetworkGroupID)
  9657  			delete(rawMsg, key)
  9658  		case "useHubGateway":
  9659  			err = unpopulate(val, "UseHubGateway", &c.UseHubGateway)
  9660  			delete(rawMsg, key)
  9661  		}
  9662  		if err != nil {
  9663  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9664  		}
  9665  	}
  9666  	return nil
  9667  }
  9668  
  9669  // MarshalJSON implements the json.Marshaller interface for type ConnectivityHop.
  9670  func (c ConnectivityHop) MarshalJSON() ([]byte, error) {
  9671  	objectMap := make(map[string]any)
  9672  	populate(objectMap, "address", c.Address)
  9673  	populate(objectMap, "id", c.ID)
  9674  	populate(objectMap, "issues", c.Issues)
  9675  	populate(objectMap, "links", c.Links)
  9676  	populate(objectMap, "nextHopIds", c.NextHopIDs)
  9677  	populate(objectMap, "previousHopIds", c.PreviousHopIDs)
  9678  	populate(objectMap, "previousLinks", c.PreviousLinks)
  9679  	populate(objectMap, "resourceId", c.ResourceID)
  9680  	populate(objectMap, "type", c.Type)
  9681  	return json.Marshal(objectMap)
  9682  }
  9683  
  9684  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectivityHop.
  9685  func (c *ConnectivityHop) UnmarshalJSON(data []byte) error {
  9686  	var rawMsg map[string]json.RawMessage
  9687  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  9688  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9689  	}
  9690  	for key, val := range rawMsg {
  9691  		var err error
  9692  		switch key {
  9693  		case "address":
  9694  			err = unpopulate(val, "Address", &c.Address)
  9695  			delete(rawMsg, key)
  9696  		case "id":
  9697  			err = unpopulate(val, "ID", &c.ID)
  9698  			delete(rawMsg, key)
  9699  		case "issues":
  9700  			err = unpopulate(val, "Issues", &c.Issues)
  9701  			delete(rawMsg, key)
  9702  		case "links":
  9703  			err = unpopulate(val, "Links", &c.Links)
  9704  			delete(rawMsg, key)
  9705  		case "nextHopIds":
  9706  			err = unpopulate(val, "NextHopIDs", &c.NextHopIDs)
  9707  			delete(rawMsg, key)
  9708  		case "previousHopIds":
  9709  			err = unpopulate(val, "PreviousHopIDs", &c.PreviousHopIDs)
  9710  			delete(rawMsg, key)
  9711  		case "previousLinks":
  9712  			err = unpopulate(val, "PreviousLinks", &c.PreviousLinks)
  9713  			delete(rawMsg, key)
  9714  		case "resourceId":
  9715  			err = unpopulate(val, "ResourceID", &c.ResourceID)
  9716  			delete(rawMsg, key)
  9717  		case "type":
  9718  			err = unpopulate(val, "Type", &c.Type)
  9719  			delete(rawMsg, key)
  9720  		}
  9721  		if err != nil {
  9722  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9723  		}
  9724  	}
  9725  	return nil
  9726  }
  9727  
  9728  // MarshalJSON implements the json.Marshaller interface for type ConnectivityInformation.
  9729  func (c ConnectivityInformation) MarshalJSON() ([]byte, error) {
  9730  	objectMap := make(map[string]any)
  9731  	populate(objectMap, "avgLatencyInMs", c.AvgLatencyInMs)
  9732  	populate(objectMap, "connectionStatus", c.ConnectionStatus)
  9733  	populate(objectMap, "hops", c.Hops)
  9734  	populate(objectMap, "maxLatencyInMs", c.MaxLatencyInMs)
  9735  	populate(objectMap, "minLatencyInMs", c.MinLatencyInMs)
  9736  	populate(objectMap, "probesFailed", c.ProbesFailed)
  9737  	populate(objectMap, "probesSent", c.ProbesSent)
  9738  	return json.Marshal(objectMap)
  9739  }
  9740  
  9741  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectivityInformation.
  9742  func (c *ConnectivityInformation) UnmarshalJSON(data []byte) error {
  9743  	var rawMsg map[string]json.RawMessage
  9744  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  9745  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9746  	}
  9747  	for key, val := range rawMsg {
  9748  		var err error
  9749  		switch key {
  9750  		case "avgLatencyInMs":
  9751  			err = unpopulate(val, "AvgLatencyInMs", &c.AvgLatencyInMs)
  9752  			delete(rawMsg, key)
  9753  		case "connectionStatus":
  9754  			err = unpopulate(val, "ConnectionStatus", &c.ConnectionStatus)
  9755  			delete(rawMsg, key)
  9756  		case "hops":
  9757  			err = unpopulate(val, "Hops", &c.Hops)
  9758  			delete(rawMsg, key)
  9759  		case "maxLatencyInMs":
  9760  			err = unpopulate(val, "MaxLatencyInMs", &c.MaxLatencyInMs)
  9761  			delete(rawMsg, key)
  9762  		case "minLatencyInMs":
  9763  			err = unpopulate(val, "MinLatencyInMs", &c.MinLatencyInMs)
  9764  			delete(rawMsg, key)
  9765  		case "probesFailed":
  9766  			err = unpopulate(val, "ProbesFailed", &c.ProbesFailed)
  9767  			delete(rawMsg, key)
  9768  		case "probesSent":
  9769  			err = unpopulate(val, "ProbesSent", &c.ProbesSent)
  9770  			delete(rawMsg, key)
  9771  		}
  9772  		if err != nil {
  9773  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9774  		}
  9775  	}
  9776  	return nil
  9777  }
  9778  
  9779  // MarshalJSON implements the json.Marshaller interface for type ConnectivityIssue.
  9780  func (c ConnectivityIssue) MarshalJSON() ([]byte, error) {
  9781  	objectMap := make(map[string]any)
  9782  	populate(objectMap, "context", c.Context)
  9783  	populate(objectMap, "origin", c.Origin)
  9784  	populate(objectMap, "severity", c.Severity)
  9785  	populate(objectMap, "type", c.Type)
  9786  	return json.Marshal(objectMap)
  9787  }
  9788  
  9789  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectivityIssue.
  9790  func (c *ConnectivityIssue) UnmarshalJSON(data []byte) error {
  9791  	var rawMsg map[string]json.RawMessage
  9792  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  9793  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9794  	}
  9795  	for key, val := range rawMsg {
  9796  		var err error
  9797  		switch key {
  9798  		case "context":
  9799  			err = unpopulate(val, "Context", &c.Context)
  9800  			delete(rawMsg, key)
  9801  		case "origin":
  9802  			err = unpopulate(val, "Origin", &c.Origin)
  9803  			delete(rawMsg, key)
  9804  		case "severity":
  9805  			err = unpopulate(val, "Severity", &c.Severity)
  9806  			delete(rawMsg, key)
  9807  		case "type":
  9808  			err = unpopulate(val, "Type", &c.Type)
  9809  			delete(rawMsg, key)
  9810  		}
  9811  		if err != nil {
  9812  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9813  		}
  9814  	}
  9815  	return nil
  9816  }
  9817  
  9818  // MarshalJSON implements the json.Marshaller interface for type ConnectivityParameters.
  9819  func (c ConnectivityParameters) MarshalJSON() ([]byte, error) {
  9820  	objectMap := make(map[string]any)
  9821  	populate(objectMap, "destination", c.Destination)
  9822  	populate(objectMap, "preferredIPVersion", c.PreferredIPVersion)
  9823  	populate(objectMap, "protocol", c.Protocol)
  9824  	populate(objectMap, "protocolConfiguration", c.ProtocolConfiguration)
  9825  	populate(objectMap, "source", c.Source)
  9826  	return json.Marshal(objectMap)
  9827  }
  9828  
  9829  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectivityParameters.
  9830  func (c *ConnectivityParameters) UnmarshalJSON(data []byte) error {
  9831  	var rawMsg map[string]json.RawMessage
  9832  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  9833  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9834  	}
  9835  	for key, val := range rawMsg {
  9836  		var err error
  9837  		switch key {
  9838  		case "destination":
  9839  			err = unpopulate(val, "Destination", &c.Destination)
  9840  			delete(rawMsg, key)
  9841  		case "preferredIPVersion":
  9842  			err = unpopulate(val, "PreferredIPVersion", &c.PreferredIPVersion)
  9843  			delete(rawMsg, key)
  9844  		case "protocol":
  9845  			err = unpopulate(val, "Protocol", &c.Protocol)
  9846  			delete(rawMsg, key)
  9847  		case "protocolConfiguration":
  9848  			err = unpopulate(val, "ProtocolConfiguration", &c.ProtocolConfiguration)
  9849  			delete(rawMsg, key)
  9850  		case "source":
  9851  			err = unpopulate(val, "Source", &c.Source)
  9852  			delete(rawMsg, key)
  9853  		}
  9854  		if err != nil {
  9855  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9856  		}
  9857  	}
  9858  	return nil
  9859  }
  9860  
  9861  // MarshalJSON implements the json.Marshaller interface for type ConnectivitySource.
  9862  func (c ConnectivitySource) MarshalJSON() ([]byte, error) {
  9863  	objectMap := make(map[string]any)
  9864  	populate(objectMap, "port", c.Port)
  9865  	populate(objectMap, "resourceId", c.ResourceID)
  9866  	return json.Marshal(objectMap)
  9867  }
  9868  
  9869  // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectivitySource.
  9870  func (c *ConnectivitySource) UnmarshalJSON(data []byte) error {
  9871  	var rawMsg map[string]json.RawMessage
  9872  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  9873  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9874  	}
  9875  	for key, val := range rawMsg {
  9876  		var err error
  9877  		switch key {
  9878  		case "port":
  9879  			err = unpopulate(val, "Port", &c.Port)
  9880  			delete(rawMsg, key)
  9881  		case "resourceId":
  9882  			err = unpopulate(val, "ResourceID", &c.ResourceID)
  9883  			delete(rawMsg, key)
  9884  		}
  9885  		if err != nil {
  9886  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9887  		}
  9888  	}
  9889  	return nil
  9890  }
  9891  
  9892  // MarshalJSON implements the json.Marshaller interface for type Container.
  9893  func (c Container) MarshalJSON() ([]byte, error) {
  9894  	objectMap := make(map[string]any)
  9895  	populate(objectMap, "id", c.ID)
  9896  	return json.Marshal(objectMap)
  9897  }
  9898  
  9899  // UnmarshalJSON implements the json.Unmarshaller interface for type Container.
  9900  func (c *Container) UnmarshalJSON(data []byte) error {
  9901  	var rawMsg map[string]json.RawMessage
  9902  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  9903  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9904  	}
  9905  	for key, val := range rawMsg {
  9906  		var err error
  9907  		switch key {
  9908  		case "id":
  9909  			err = unpopulate(val, "ID", &c.ID)
  9910  			delete(rawMsg, key)
  9911  		}
  9912  		if err != nil {
  9913  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9914  		}
  9915  	}
  9916  	return nil
  9917  }
  9918  
  9919  // MarshalJSON implements the json.Marshaller interface for type ContainerNetworkInterface.
  9920  func (c ContainerNetworkInterface) MarshalJSON() ([]byte, error) {
  9921  	objectMap := make(map[string]any)
  9922  	populate(objectMap, "etag", c.Etag)
  9923  	populate(objectMap, "id", c.ID)
  9924  	populate(objectMap, "name", c.Name)
  9925  	populate(objectMap, "properties", c.Properties)
  9926  	populate(objectMap, "type", c.Type)
  9927  	return json.Marshal(objectMap)
  9928  }
  9929  
  9930  // UnmarshalJSON implements the json.Unmarshaller interface for type ContainerNetworkInterface.
  9931  func (c *ContainerNetworkInterface) UnmarshalJSON(data []byte) error {
  9932  	var rawMsg map[string]json.RawMessage
  9933  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  9934  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9935  	}
  9936  	for key, val := range rawMsg {
  9937  		var err error
  9938  		switch key {
  9939  		case "etag":
  9940  			err = unpopulate(val, "Etag", &c.Etag)
  9941  			delete(rawMsg, key)
  9942  		case "id":
  9943  			err = unpopulate(val, "ID", &c.ID)
  9944  			delete(rawMsg, key)
  9945  		case "name":
  9946  			err = unpopulate(val, "Name", &c.Name)
  9947  			delete(rawMsg, key)
  9948  		case "properties":
  9949  			err = unpopulate(val, "Properties", &c.Properties)
  9950  			delete(rawMsg, key)
  9951  		case "type":
  9952  			err = unpopulate(val, "Type", &c.Type)
  9953  			delete(rawMsg, key)
  9954  		}
  9955  		if err != nil {
  9956  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9957  		}
  9958  	}
  9959  	return nil
  9960  }
  9961  
  9962  // MarshalJSON implements the json.Marshaller interface for type ContainerNetworkInterfaceConfiguration.
  9963  func (c ContainerNetworkInterfaceConfiguration) MarshalJSON() ([]byte, error) {
  9964  	objectMap := make(map[string]any)
  9965  	populate(objectMap, "etag", c.Etag)
  9966  	populate(objectMap, "id", c.ID)
  9967  	populate(objectMap, "name", c.Name)
  9968  	populate(objectMap, "properties", c.Properties)
  9969  	populate(objectMap, "type", c.Type)
  9970  	return json.Marshal(objectMap)
  9971  }
  9972  
  9973  // UnmarshalJSON implements the json.Unmarshaller interface for type ContainerNetworkInterfaceConfiguration.
  9974  func (c *ContainerNetworkInterfaceConfiguration) UnmarshalJSON(data []byte) error {
  9975  	var rawMsg map[string]json.RawMessage
  9976  	if err := json.Unmarshal(data, &rawMsg); err != nil {
  9977  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
  9978  	}
  9979  	for key, val := range rawMsg {
  9980  		var err error
  9981  		switch key {
  9982  		case "etag":
  9983  			err = unpopulate(val, "Etag", &c.Etag)
  9984  			delete(rawMsg, key)
  9985  		case "id":
  9986  			err = unpopulate(val, "ID", &c.ID)
  9987  			delete(rawMsg, key)
  9988  		case "name":
  9989  			err = unpopulate(val, "Name", &c.Name)
  9990  			delete(rawMsg, key)
  9991  		case "properties":
  9992  			err = unpopulate(val, "Properties", &c.Properties)
  9993  			delete(rawMsg, key)
  9994  		case "type":
  9995  			err = unpopulate(val, "Type", &c.Type)
  9996  			delete(rawMsg, key)
  9997  		}
  9998  		if err != nil {
  9999  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
 10000  		}
 10001  	}
 10002  	return nil
 10003  }
 10004  
 10005  // MarshalJSON implements the json.Marshaller interface for type ContainerNetworkInterfaceConfigurationPropertiesFormat.
 10006  func (c ContainerNetworkInterfaceConfigurationPropertiesFormat) MarshalJSON() ([]byte, error) {
 10007  	objectMap := make(map[string]any)
 10008  	populate(objectMap, "containerNetworkInterfaces", c.ContainerNetworkInterfaces)
 10009  	populate(objectMap, "ipConfigurations", c.IPConfigurations)
 10010  	populate(objectMap, "provisioningState", c.ProvisioningState)
 10011  	return json.Marshal(objectMap)
 10012  }
 10013  
 10014  // UnmarshalJSON implements the json.Unmarshaller interface for type ContainerNetworkInterfaceConfigurationPropertiesFormat.
 10015  func (c *ContainerNetworkInterfaceConfigurationPropertiesFormat) UnmarshalJSON(data []byte) error {
 10016  	var rawMsg map[string]json.RawMessage
 10017  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 10018  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
 10019  	}
 10020  	for key, val := range rawMsg {
 10021  		var err error
 10022  		switch key {
 10023  		case "containerNetworkInterfaces":
 10024  			err = unpopulate(val, "ContainerNetworkInterfaces", &c.ContainerNetworkInterfaces)
 10025  			delete(rawMsg, key)
 10026  		case "ipConfigurations":
 10027  			err = unpopulate(val, "IPConfigurations", &c.IPConfigurations)
 10028  			delete(rawMsg, key)
 10029  		case "provisioningState":
 10030  			err = unpopulate(val, "ProvisioningState", &c.ProvisioningState)
 10031  			delete(rawMsg, key)
 10032  		}
 10033  		if err != nil {
 10034  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
 10035  		}
 10036  	}
 10037  	return nil
 10038  }
 10039  
 10040  // MarshalJSON implements the json.Marshaller interface for type ContainerNetworkInterfaceIPConfiguration.
 10041  func (c ContainerNetworkInterfaceIPConfiguration) MarshalJSON() ([]byte, error) {
 10042  	objectMap := make(map[string]any)
 10043  	populate(objectMap, "etag", c.Etag)
 10044  	populate(objectMap, "name", c.Name)
 10045  	populate(objectMap, "properties", c.Properties)
 10046  	populate(objectMap, "type", c.Type)
 10047  	return json.Marshal(objectMap)
 10048  }
 10049  
 10050  // UnmarshalJSON implements the json.Unmarshaller interface for type ContainerNetworkInterfaceIPConfiguration.
 10051  func (c *ContainerNetworkInterfaceIPConfiguration) UnmarshalJSON(data []byte) error {
 10052  	var rawMsg map[string]json.RawMessage
 10053  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 10054  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
 10055  	}
 10056  	for key, val := range rawMsg {
 10057  		var err error
 10058  		switch key {
 10059  		case "etag":
 10060  			err = unpopulate(val, "Etag", &c.Etag)
 10061  			delete(rawMsg, key)
 10062  		case "name":
 10063  			err = unpopulate(val, "Name", &c.Name)
 10064  			delete(rawMsg, key)
 10065  		case "properties":
 10066  			err = unpopulate(val, "Properties", &c.Properties)
 10067  			delete(rawMsg, key)
 10068  		case "type":
 10069  			err = unpopulate(val, "Type", &c.Type)
 10070  			delete(rawMsg, key)
 10071  		}
 10072  		if err != nil {
 10073  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
 10074  		}
 10075  	}
 10076  	return nil
 10077  }
 10078  
 10079  // MarshalJSON implements the json.Marshaller interface for type ContainerNetworkInterfaceIPConfigurationPropertiesFormat.
 10080  func (c ContainerNetworkInterfaceIPConfigurationPropertiesFormat) MarshalJSON() ([]byte, error) {
 10081  	objectMap := make(map[string]any)
 10082  	populate(objectMap, "provisioningState", c.ProvisioningState)
 10083  	return json.Marshal(objectMap)
 10084  }
 10085  
 10086  // UnmarshalJSON implements the json.Unmarshaller interface for type ContainerNetworkInterfaceIPConfigurationPropertiesFormat.
 10087  func (c *ContainerNetworkInterfaceIPConfigurationPropertiesFormat) UnmarshalJSON(data []byte) error {
 10088  	var rawMsg map[string]json.RawMessage
 10089  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 10090  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
 10091  	}
 10092  	for key, val := range rawMsg {
 10093  		var err error
 10094  		switch key {
 10095  		case "provisioningState":
 10096  			err = unpopulate(val, "ProvisioningState", &c.ProvisioningState)
 10097  			delete(rawMsg, key)
 10098  		}
 10099  		if err != nil {
 10100  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
 10101  		}
 10102  	}
 10103  	return nil
 10104  }
 10105  
 10106  // MarshalJSON implements the json.Marshaller interface for type ContainerNetworkInterfacePropertiesFormat.
 10107  func (c ContainerNetworkInterfacePropertiesFormat) MarshalJSON() ([]byte, error) {
 10108  	objectMap := make(map[string]any)
 10109  	populate(objectMap, "container", c.Container)
 10110  	populate(objectMap, "containerNetworkInterfaceConfiguration", c.ContainerNetworkInterfaceConfiguration)
 10111  	populate(objectMap, "ipConfigurations", c.IPConfigurations)
 10112  	populate(objectMap, "provisioningState", c.ProvisioningState)
 10113  	return json.Marshal(objectMap)
 10114  }
 10115  
 10116  // UnmarshalJSON implements the json.Unmarshaller interface for type ContainerNetworkInterfacePropertiesFormat.
 10117  func (c *ContainerNetworkInterfacePropertiesFormat) UnmarshalJSON(data []byte) error {
 10118  	var rawMsg map[string]json.RawMessage
 10119  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 10120  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
 10121  	}
 10122  	for key, val := range rawMsg {
 10123  		var err error
 10124  		switch key {
 10125  		case "container":
 10126  			err = unpopulate(val, "Container", &c.Container)
 10127  			delete(rawMsg, key)
 10128  		case "containerNetworkInterfaceConfiguration":
 10129  			err = unpopulate(val, "ContainerNetworkInterfaceConfiguration", &c.ContainerNetworkInterfaceConfiguration)
 10130  			delete(rawMsg, key)
 10131  		case "ipConfigurations":
 10132  			err = unpopulate(val, "IPConfigurations", &c.IPConfigurations)
 10133  			delete(rawMsg, key)
 10134  		case "provisioningState":
 10135  			err = unpopulate(val, "ProvisioningState", &c.ProvisioningState)
 10136  			delete(rawMsg, key)
 10137  		}
 10138  		if err != nil {
 10139  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
 10140  		}
 10141  	}
 10142  	return nil
 10143  }
 10144  
 10145  // MarshalJSON implements the json.Marshaller interface for type Criterion.
 10146  func (c Criterion) MarshalJSON() ([]byte, error) {
 10147  	objectMap := make(map[string]any)
 10148  	populate(objectMap, "asPath", c.AsPath)
 10149  	populate(objectMap, "community", c.Community)
 10150  	populate(objectMap, "matchCondition", c.MatchCondition)
 10151  	populate(objectMap, "routePrefix", c.RoutePrefix)
 10152  	return json.Marshal(objectMap)
 10153  }
 10154  
 10155  // UnmarshalJSON implements the json.Unmarshaller interface for type Criterion.
 10156  func (c *Criterion) UnmarshalJSON(data []byte) error {
 10157  	var rawMsg map[string]json.RawMessage
 10158  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 10159  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
 10160  	}
 10161  	for key, val := range rawMsg {
 10162  		var err error
 10163  		switch key {
 10164  		case "asPath":
 10165  			err = unpopulate(val, "AsPath", &c.AsPath)
 10166  			delete(rawMsg, key)
 10167  		case "community":
 10168  			err = unpopulate(val, "Community", &c.Community)
 10169  			delete(rawMsg, key)
 10170  		case "matchCondition":
 10171  			err = unpopulate(val, "MatchCondition", &c.MatchCondition)
 10172  			delete(rawMsg, key)
 10173  		case "routePrefix":
 10174  			err = unpopulate(val, "RoutePrefix", &c.RoutePrefix)
 10175  			delete(rawMsg, key)
 10176  		}
 10177  		if err != nil {
 10178  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
 10179  		}
 10180  	}
 10181  	return nil
 10182  }
 10183  
 10184  // MarshalJSON implements the json.Marshaller interface for type CrossTenantScopes.
 10185  func (c CrossTenantScopes) MarshalJSON() ([]byte, error) {
 10186  	objectMap := make(map[string]any)
 10187  	populate(objectMap, "managementGroups", c.ManagementGroups)
 10188  	populate(objectMap, "subscriptions", c.Subscriptions)
 10189  	populate(objectMap, "tenantId", c.TenantID)
 10190  	return json.Marshal(objectMap)
 10191  }
 10192  
 10193  // UnmarshalJSON implements the json.Unmarshaller interface for type CrossTenantScopes.
 10194  func (c *CrossTenantScopes) UnmarshalJSON(data []byte) error {
 10195  	var rawMsg map[string]json.RawMessage
 10196  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 10197  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
 10198  	}
 10199  	for key, val := range rawMsg {
 10200  		var err error
 10201  		switch key {
 10202  		case "managementGroups":
 10203  			err = unpopulate(val, "ManagementGroups", &c.ManagementGroups)
 10204  			delete(rawMsg, key)
 10205  		case "subscriptions":
 10206  			err = unpopulate(val, "Subscriptions", &c.Subscriptions)
 10207  			delete(rawMsg, key)
 10208  		case "tenantId":
 10209  			err = unpopulate(val, "TenantID", &c.TenantID)
 10210  			delete(rawMsg, key)
 10211  		}
 10212  		if err != nil {
 10213  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
 10214  		}
 10215  	}
 10216  	return nil
 10217  }
 10218  
 10219  // MarshalJSON implements the json.Marshaller interface for type CustomDNSConfigPropertiesFormat.
 10220  func (c CustomDNSConfigPropertiesFormat) MarshalJSON() ([]byte, error) {
 10221  	objectMap := make(map[string]any)
 10222  	populate(objectMap, "fqdn", c.Fqdn)
 10223  	populate(objectMap, "ipAddresses", c.IPAddresses)
 10224  	return json.Marshal(objectMap)
 10225  }
 10226  
 10227  // UnmarshalJSON implements the json.Unmarshaller interface for type CustomDNSConfigPropertiesFormat.
 10228  func (c *CustomDNSConfigPropertiesFormat) UnmarshalJSON(data []byte) error {
 10229  	var rawMsg map[string]json.RawMessage
 10230  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 10231  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
 10232  	}
 10233  	for key, val := range rawMsg {
 10234  		var err error
 10235  		switch key {
 10236  		case "fqdn":
 10237  			err = unpopulate(val, "Fqdn", &c.Fqdn)
 10238  			delete(rawMsg, key)
 10239  		case "ipAddresses":
 10240  			err = unpopulate(val, "IPAddresses", &c.IPAddresses)
 10241  			delete(rawMsg, key)
 10242  		}
 10243  		if err != nil {
 10244  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
 10245  		}
 10246  	}
 10247  	return nil
 10248  }
 10249  
 10250  // MarshalJSON implements the json.Marshaller interface for type CustomIPPrefix.
 10251  func (c CustomIPPrefix) MarshalJSON() ([]byte, error) {
 10252  	objectMap := make(map[string]any)
 10253  	populate(objectMap, "etag", c.Etag)
 10254  	populate(objectMap, "extendedLocation", c.ExtendedLocation)
 10255  	populate(objectMap, "id", c.ID)
 10256  	populate(objectMap, "location", c.Location)
 10257  	populate(objectMap, "name", c.Name)
 10258  	populate(objectMap, "properties", c.Properties)
 10259  	populate(objectMap, "tags", c.Tags)
 10260  	populate(objectMap, "type", c.Type)
 10261  	populate(objectMap, "zones", c.Zones)
 10262  	return json.Marshal(objectMap)
 10263  }
 10264  
 10265  // UnmarshalJSON implements the json.Unmarshaller interface for type CustomIPPrefix.
 10266  func (c *CustomIPPrefix) UnmarshalJSON(data []byte) error {
 10267  	var rawMsg map[string]json.RawMessage
 10268  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 10269  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
 10270  	}
 10271  	for key, val := range rawMsg {
 10272  		var err error
 10273  		switch key {
 10274  		case "etag":
 10275  			err = unpopulate(val, "Etag", &c.Etag)
 10276  			delete(rawMsg, key)
 10277  		case "extendedLocation":
 10278  			err = unpopulate(val, "ExtendedLocation", &c.ExtendedLocation)
 10279  			delete(rawMsg, key)
 10280  		case "id":
 10281  			err = unpopulate(val, "ID", &c.ID)
 10282  			delete(rawMsg, key)
 10283  		case "location":
 10284  			err = unpopulate(val, "Location", &c.Location)
 10285  			delete(rawMsg, key)
 10286  		case "name":
 10287  			err = unpopulate(val, "Name", &c.Name)
 10288  			delete(rawMsg, key)
 10289  		case "properties":
 10290  			err = unpopulate(val, "Properties", &c.Properties)
 10291  			delete(rawMsg, key)
 10292  		case "tags":
 10293  			err = unpopulate(val, "Tags", &c.Tags)
 10294  			delete(rawMsg, key)
 10295  		case "type":
 10296  			err = unpopulate(val, "Type", &c.Type)
 10297  			delete(rawMsg, key)
 10298  		case "zones":
 10299  			err = unpopulate(val, "Zones", &c.Zones)
 10300  			delete(rawMsg, key)
 10301  		}
 10302  		if err != nil {
 10303  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
 10304  		}
 10305  	}
 10306  	return nil
 10307  }
 10308  
 10309  // MarshalJSON implements the json.Marshaller interface for type CustomIPPrefixListResult.
 10310  func (c CustomIPPrefixListResult) MarshalJSON() ([]byte, error) {
 10311  	objectMap := make(map[string]any)
 10312  	populate(objectMap, "nextLink", c.NextLink)
 10313  	populate(objectMap, "value", c.Value)
 10314  	return json.Marshal(objectMap)
 10315  }
 10316  
 10317  // UnmarshalJSON implements the json.Unmarshaller interface for type CustomIPPrefixListResult.
 10318  func (c *CustomIPPrefixListResult) UnmarshalJSON(data []byte) error {
 10319  	var rawMsg map[string]json.RawMessage
 10320  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 10321  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
 10322  	}
 10323  	for key, val := range rawMsg {
 10324  		var err error
 10325  		switch key {
 10326  		case "nextLink":
 10327  			err = unpopulate(val, "NextLink", &c.NextLink)
 10328  			delete(rawMsg, key)
 10329  		case "value":
 10330  			err = unpopulate(val, "Value", &c.Value)
 10331  			delete(rawMsg, key)
 10332  		}
 10333  		if err != nil {
 10334  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
 10335  		}
 10336  	}
 10337  	return nil
 10338  }
 10339  
 10340  // MarshalJSON implements the json.Marshaller interface for type CustomIPPrefixPropertiesFormat.
 10341  func (c CustomIPPrefixPropertiesFormat) MarshalJSON() ([]byte, error) {
 10342  	objectMap := make(map[string]any)
 10343  	populate(objectMap, "asn", c.Asn)
 10344  	populate(objectMap, "authorizationMessage", c.AuthorizationMessage)
 10345  	populate(objectMap, "childCustomIpPrefixes", c.ChildCustomIPPrefixes)
 10346  	populate(objectMap, "cidr", c.Cidr)
 10347  	populate(objectMap, "commissionedState", c.CommissionedState)
 10348  	populate(objectMap, "customIpPrefixParent", c.CustomIPPrefixParent)
 10349  	populate(objectMap, "expressRouteAdvertise", c.ExpressRouteAdvertise)
 10350  	populate(objectMap, "failedReason", c.FailedReason)
 10351  	populate(objectMap, "geo", c.Geo)
 10352  	populate(objectMap, "noInternetAdvertise", c.NoInternetAdvertise)
 10353  	populate(objectMap, "prefixType", c.PrefixType)
 10354  	populate(objectMap, "provisioningState", c.ProvisioningState)
 10355  	populate(objectMap, "publicIpPrefixes", c.PublicIPPrefixes)
 10356  	populate(objectMap, "resourceGuid", c.ResourceGUID)
 10357  	populate(objectMap, "signedMessage", c.SignedMessage)
 10358  	return json.Marshal(objectMap)
 10359  }
 10360  
 10361  // UnmarshalJSON implements the json.Unmarshaller interface for type CustomIPPrefixPropertiesFormat.
 10362  func (c *CustomIPPrefixPropertiesFormat) UnmarshalJSON(data []byte) error {
 10363  	var rawMsg map[string]json.RawMessage
 10364  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 10365  		return fmt.Errorf("unmarshalling type %T: %v", c, err)
 10366  	}
 10367  	for key, val := range rawMsg {
 10368  		var err error
 10369  		switch key {
 10370  		case "asn":
 10371  			err = unpopulate(val, "Asn", &c.Asn)
 10372  			delete(rawMsg, key)
 10373  		case "authorizationMessage":
 10374  			err = unpopulate(val, "AuthorizationMessage", &c.AuthorizationMessage)
 10375  			delete(rawMsg, key)
 10376  		case "childCustomIpPrefixes":
 10377  			err = unpopulate(val, "ChildCustomIPPrefixes", &c.ChildCustomIPPrefixes)
 10378  			delete(rawMsg, key)
 10379  		case "cidr":
 10380  			err = unpopulate(val, "Cidr", &c.Cidr)
 10381  			delete(rawMsg, key)
 10382  		case "commissionedState":
 10383  			err = unpopulate(val, "CommissionedState", &c.CommissionedState)
 10384  			delete(rawMsg, key)
 10385  		case "customIpPrefixParent":
 10386  			err = unpopulate(val, "CustomIPPrefixParent", &c.CustomIPPrefixParent)
 10387  			delete(rawMsg, key)
 10388  		case "expressRouteAdvertise":
 10389  			err = unpopulate(val, "ExpressRouteAdvertise", &c.ExpressRouteAdvertise)
 10390  			delete(rawMsg, key)
 10391  		case "failedReason":
 10392  			err = unpopulate(val, "FailedReason", &c.FailedReason)
 10393  			delete(rawMsg, key)
 10394  		case "geo":
 10395  			err = unpopulate(val, "Geo", &c.Geo)
 10396  			delete(rawMsg, key)
 10397  		case "noInternetAdvertise":
 10398  			err = unpopulate(val, "NoInternetAdvertise", &c.NoInternetAdvertise)
 10399  			delete(rawMsg, key)
 10400  		case "prefixType":
 10401  			err = unpopulate(val, "PrefixType", &c.PrefixType)
 10402  			delete(rawMsg, key)
 10403  		case "provisioningState":
 10404  			err = unpopulate(val, "ProvisioningState", &c.ProvisioningState)
 10405  			delete(rawMsg, key)
 10406  		case "publicIpPrefixes":
 10407  			err = unpopulate(val, "PublicIPPrefixes", &c.PublicIPPrefixes)
 10408  			delete(rawMsg, key)
 10409  		case "resourceGuid":
 10410  			err = unpopulate(val, "ResourceGUID", &c.ResourceGUID)
 10411  			delete(rawMsg, key)
 10412  		case "signedMessage":
 10413  			err = unpopulate(val, "SignedMessage", &c.SignedMessage)
 10414  			delete(rawMsg, key)
 10415  		}
 10416  		if err != nil {
 10417  			return fmt.Errorf("unmarshalling type %T: %v", c, err)
 10418  		}
 10419  	}
 10420  	return nil
 10421  }
 10422  
 10423  // MarshalJSON implements the json.Marshaller interface for type DNSNameAvailabilityResult.
 10424  func (d DNSNameAvailabilityResult) MarshalJSON() ([]byte, error) {
 10425  	objectMap := make(map[string]any)
 10426  	populate(objectMap, "available", d.Available)
 10427  	return json.Marshal(objectMap)
 10428  }
 10429  
 10430  // UnmarshalJSON implements the json.Unmarshaller interface for type DNSNameAvailabilityResult.
 10431  func (d *DNSNameAvailabilityResult) UnmarshalJSON(data []byte) error {
 10432  	var rawMsg map[string]json.RawMessage
 10433  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 10434  		return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10435  	}
 10436  	for key, val := range rawMsg {
 10437  		var err error
 10438  		switch key {
 10439  		case "available":
 10440  			err = unpopulate(val, "Available", &d.Available)
 10441  			delete(rawMsg, key)
 10442  		}
 10443  		if err != nil {
 10444  			return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10445  		}
 10446  	}
 10447  	return nil
 10448  }
 10449  
 10450  // MarshalJSON implements the json.Marshaller interface for type DNSSettings.
 10451  func (d DNSSettings) MarshalJSON() ([]byte, error) {
 10452  	objectMap := make(map[string]any)
 10453  	populate(objectMap, "enableProxy", d.EnableProxy)
 10454  	populate(objectMap, "requireProxyForNetworkRules", d.RequireProxyForNetworkRules)
 10455  	populate(objectMap, "servers", d.Servers)
 10456  	return json.Marshal(objectMap)
 10457  }
 10458  
 10459  // UnmarshalJSON implements the json.Unmarshaller interface for type DNSSettings.
 10460  func (d *DNSSettings) UnmarshalJSON(data []byte) error {
 10461  	var rawMsg map[string]json.RawMessage
 10462  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 10463  		return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10464  	}
 10465  	for key, val := range rawMsg {
 10466  		var err error
 10467  		switch key {
 10468  		case "enableProxy":
 10469  			err = unpopulate(val, "EnableProxy", &d.EnableProxy)
 10470  			delete(rawMsg, key)
 10471  		case "requireProxyForNetworkRules":
 10472  			err = unpopulate(val, "RequireProxyForNetworkRules", &d.RequireProxyForNetworkRules)
 10473  			delete(rawMsg, key)
 10474  		case "servers":
 10475  			err = unpopulate(val, "Servers", &d.Servers)
 10476  			delete(rawMsg, key)
 10477  		}
 10478  		if err != nil {
 10479  			return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10480  		}
 10481  	}
 10482  	return nil
 10483  }
 10484  
 10485  // MarshalJSON implements the json.Marshaller interface for type DdosCustomPolicy.
 10486  func (d DdosCustomPolicy) MarshalJSON() ([]byte, error) {
 10487  	objectMap := make(map[string]any)
 10488  	populate(objectMap, "etag", d.Etag)
 10489  	populate(objectMap, "id", d.ID)
 10490  	populate(objectMap, "location", d.Location)
 10491  	populate(objectMap, "name", d.Name)
 10492  	populate(objectMap, "properties", d.Properties)
 10493  	populate(objectMap, "tags", d.Tags)
 10494  	populate(objectMap, "type", d.Type)
 10495  	return json.Marshal(objectMap)
 10496  }
 10497  
 10498  // UnmarshalJSON implements the json.Unmarshaller interface for type DdosCustomPolicy.
 10499  func (d *DdosCustomPolicy) UnmarshalJSON(data []byte) error {
 10500  	var rawMsg map[string]json.RawMessage
 10501  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 10502  		return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10503  	}
 10504  	for key, val := range rawMsg {
 10505  		var err error
 10506  		switch key {
 10507  		case "etag":
 10508  			err = unpopulate(val, "Etag", &d.Etag)
 10509  			delete(rawMsg, key)
 10510  		case "id":
 10511  			err = unpopulate(val, "ID", &d.ID)
 10512  			delete(rawMsg, key)
 10513  		case "location":
 10514  			err = unpopulate(val, "Location", &d.Location)
 10515  			delete(rawMsg, key)
 10516  		case "name":
 10517  			err = unpopulate(val, "Name", &d.Name)
 10518  			delete(rawMsg, key)
 10519  		case "properties":
 10520  			err = unpopulate(val, "Properties", &d.Properties)
 10521  			delete(rawMsg, key)
 10522  		case "tags":
 10523  			err = unpopulate(val, "Tags", &d.Tags)
 10524  			delete(rawMsg, key)
 10525  		case "type":
 10526  			err = unpopulate(val, "Type", &d.Type)
 10527  			delete(rawMsg, key)
 10528  		}
 10529  		if err != nil {
 10530  			return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10531  		}
 10532  	}
 10533  	return nil
 10534  }
 10535  
 10536  // MarshalJSON implements the json.Marshaller interface for type DdosCustomPolicyPropertiesFormat.
 10537  func (d DdosCustomPolicyPropertiesFormat) MarshalJSON() ([]byte, error) {
 10538  	objectMap := make(map[string]any)
 10539  	populate(objectMap, "provisioningState", d.ProvisioningState)
 10540  	populate(objectMap, "resourceGuid", d.ResourceGUID)
 10541  	return json.Marshal(objectMap)
 10542  }
 10543  
 10544  // UnmarshalJSON implements the json.Unmarshaller interface for type DdosCustomPolicyPropertiesFormat.
 10545  func (d *DdosCustomPolicyPropertiesFormat) UnmarshalJSON(data []byte) error {
 10546  	var rawMsg map[string]json.RawMessage
 10547  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 10548  		return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10549  	}
 10550  	for key, val := range rawMsg {
 10551  		var err error
 10552  		switch key {
 10553  		case "provisioningState":
 10554  			err = unpopulate(val, "ProvisioningState", &d.ProvisioningState)
 10555  			delete(rawMsg, key)
 10556  		case "resourceGuid":
 10557  			err = unpopulate(val, "ResourceGUID", &d.ResourceGUID)
 10558  			delete(rawMsg, key)
 10559  		}
 10560  		if err != nil {
 10561  			return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10562  		}
 10563  	}
 10564  	return nil
 10565  }
 10566  
 10567  // MarshalJSON implements the json.Marshaller interface for type DdosProtectionPlan.
 10568  func (d DdosProtectionPlan) MarshalJSON() ([]byte, error) {
 10569  	objectMap := make(map[string]any)
 10570  	populate(objectMap, "etag", d.Etag)
 10571  	populate(objectMap, "id", d.ID)
 10572  	populate(objectMap, "location", d.Location)
 10573  	populate(objectMap, "name", d.Name)
 10574  	populate(objectMap, "properties", d.Properties)
 10575  	populate(objectMap, "tags", d.Tags)
 10576  	populate(objectMap, "type", d.Type)
 10577  	return json.Marshal(objectMap)
 10578  }
 10579  
 10580  // UnmarshalJSON implements the json.Unmarshaller interface for type DdosProtectionPlan.
 10581  func (d *DdosProtectionPlan) UnmarshalJSON(data []byte) error {
 10582  	var rawMsg map[string]json.RawMessage
 10583  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 10584  		return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10585  	}
 10586  	for key, val := range rawMsg {
 10587  		var err error
 10588  		switch key {
 10589  		case "etag":
 10590  			err = unpopulate(val, "Etag", &d.Etag)
 10591  			delete(rawMsg, key)
 10592  		case "id":
 10593  			err = unpopulate(val, "ID", &d.ID)
 10594  			delete(rawMsg, key)
 10595  		case "location":
 10596  			err = unpopulate(val, "Location", &d.Location)
 10597  			delete(rawMsg, key)
 10598  		case "name":
 10599  			err = unpopulate(val, "Name", &d.Name)
 10600  			delete(rawMsg, key)
 10601  		case "properties":
 10602  			err = unpopulate(val, "Properties", &d.Properties)
 10603  			delete(rawMsg, key)
 10604  		case "tags":
 10605  			err = unpopulate(val, "Tags", &d.Tags)
 10606  			delete(rawMsg, key)
 10607  		case "type":
 10608  			err = unpopulate(val, "Type", &d.Type)
 10609  			delete(rawMsg, key)
 10610  		}
 10611  		if err != nil {
 10612  			return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10613  		}
 10614  	}
 10615  	return nil
 10616  }
 10617  
 10618  // MarshalJSON implements the json.Marshaller interface for type DdosProtectionPlanListResult.
 10619  func (d DdosProtectionPlanListResult) MarshalJSON() ([]byte, error) {
 10620  	objectMap := make(map[string]any)
 10621  	populate(objectMap, "nextLink", d.NextLink)
 10622  	populate(objectMap, "value", d.Value)
 10623  	return json.Marshal(objectMap)
 10624  }
 10625  
 10626  // UnmarshalJSON implements the json.Unmarshaller interface for type DdosProtectionPlanListResult.
 10627  func (d *DdosProtectionPlanListResult) UnmarshalJSON(data []byte) error {
 10628  	var rawMsg map[string]json.RawMessage
 10629  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 10630  		return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10631  	}
 10632  	for key, val := range rawMsg {
 10633  		var err error
 10634  		switch key {
 10635  		case "nextLink":
 10636  			err = unpopulate(val, "NextLink", &d.NextLink)
 10637  			delete(rawMsg, key)
 10638  		case "value":
 10639  			err = unpopulate(val, "Value", &d.Value)
 10640  			delete(rawMsg, key)
 10641  		}
 10642  		if err != nil {
 10643  			return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10644  		}
 10645  	}
 10646  	return nil
 10647  }
 10648  
 10649  // MarshalJSON implements the json.Marshaller interface for type DdosProtectionPlanPropertiesFormat.
 10650  func (d DdosProtectionPlanPropertiesFormat) MarshalJSON() ([]byte, error) {
 10651  	objectMap := make(map[string]any)
 10652  	populate(objectMap, "provisioningState", d.ProvisioningState)
 10653  	populate(objectMap, "publicIPAddresses", d.PublicIPAddresses)
 10654  	populate(objectMap, "resourceGuid", d.ResourceGUID)
 10655  	populate(objectMap, "virtualNetworks", d.VirtualNetworks)
 10656  	return json.Marshal(objectMap)
 10657  }
 10658  
 10659  // UnmarshalJSON implements the json.Unmarshaller interface for type DdosProtectionPlanPropertiesFormat.
 10660  func (d *DdosProtectionPlanPropertiesFormat) UnmarshalJSON(data []byte) error {
 10661  	var rawMsg map[string]json.RawMessage
 10662  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 10663  		return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10664  	}
 10665  	for key, val := range rawMsg {
 10666  		var err error
 10667  		switch key {
 10668  		case "provisioningState":
 10669  			err = unpopulate(val, "ProvisioningState", &d.ProvisioningState)
 10670  			delete(rawMsg, key)
 10671  		case "publicIPAddresses":
 10672  			err = unpopulate(val, "PublicIPAddresses", &d.PublicIPAddresses)
 10673  			delete(rawMsg, key)
 10674  		case "resourceGuid":
 10675  			err = unpopulate(val, "ResourceGUID", &d.ResourceGUID)
 10676  			delete(rawMsg, key)
 10677  		case "virtualNetworks":
 10678  			err = unpopulate(val, "VirtualNetworks", &d.VirtualNetworks)
 10679  			delete(rawMsg, key)
 10680  		}
 10681  		if err != nil {
 10682  			return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10683  		}
 10684  	}
 10685  	return nil
 10686  }
 10687  
 10688  // MarshalJSON implements the json.Marshaller interface for type DdosSettings.
 10689  func (d DdosSettings) MarshalJSON() ([]byte, error) {
 10690  	objectMap := make(map[string]any)
 10691  	populate(objectMap, "ddosProtectionPlan", d.DdosProtectionPlan)
 10692  	populate(objectMap, "protectionMode", d.ProtectionMode)
 10693  	return json.Marshal(objectMap)
 10694  }
 10695  
 10696  // UnmarshalJSON implements the json.Unmarshaller interface for type DdosSettings.
 10697  func (d *DdosSettings) UnmarshalJSON(data []byte) error {
 10698  	var rawMsg map[string]json.RawMessage
 10699  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 10700  		return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10701  	}
 10702  	for key, val := range rawMsg {
 10703  		var err error
 10704  		switch key {
 10705  		case "ddosProtectionPlan":
 10706  			err = unpopulate(val, "DdosProtectionPlan", &d.DdosProtectionPlan)
 10707  			delete(rawMsg, key)
 10708  		case "protectionMode":
 10709  			err = unpopulate(val, "ProtectionMode", &d.ProtectionMode)
 10710  			delete(rawMsg, key)
 10711  		}
 10712  		if err != nil {
 10713  			return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10714  		}
 10715  	}
 10716  	return nil
 10717  }
 10718  
 10719  // MarshalJSON implements the json.Marshaller interface for type DefaultAdminPropertiesFormat.
 10720  func (d DefaultAdminPropertiesFormat) MarshalJSON() ([]byte, error) {
 10721  	objectMap := make(map[string]any)
 10722  	populate(objectMap, "access", d.Access)
 10723  	populate(objectMap, "description", d.Description)
 10724  	populate(objectMap, "destinationPortRanges", d.DestinationPortRanges)
 10725  	populate(objectMap, "destinations", d.Destinations)
 10726  	populate(objectMap, "direction", d.Direction)
 10727  	populate(objectMap, "flag", d.Flag)
 10728  	populate(objectMap, "priority", d.Priority)
 10729  	populate(objectMap, "protocol", d.Protocol)
 10730  	populate(objectMap, "provisioningState", d.ProvisioningState)
 10731  	populate(objectMap, "resourceGuid", d.ResourceGUID)
 10732  	populate(objectMap, "sourcePortRanges", d.SourcePortRanges)
 10733  	populate(objectMap, "sources", d.Sources)
 10734  	return json.Marshal(objectMap)
 10735  }
 10736  
 10737  // UnmarshalJSON implements the json.Unmarshaller interface for type DefaultAdminPropertiesFormat.
 10738  func (d *DefaultAdminPropertiesFormat) UnmarshalJSON(data []byte) error {
 10739  	var rawMsg map[string]json.RawMessage
 10740  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 10741  		return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10742  	}
 10743  	for key, val := range rawMsg {
 10744  		var err error
 10745  		switch key {
 10746  		case "access":
 10747  			err = unpopulate(val, "Access", &d.Access)
 10748  			delete(rawMsg, key)
 10749  		case "description":
 10750  			err = unpopulate(val, "Description", &d.Description)
 10751  			delete(rawMsg, key)
 10752  		case "destinationPortRanges":
 10753  			err = unpopulate(val, "DestinationPortRanges", &d.DestinationPortRanges)
 10754  			delete(rawMsg, key)
 10755  		case "destinations":
 10756  			err = unpopulate(val, "Destinations", &d.Destinations)
 10757  			delete(rawMsg, key)
 10758  		case "direction":
 10759  			err = unpopulate(val, "Direction", &d.Direction)
 10760  			delete(rawMsg, key)
 10761  		case "flag":
 10762  			err = unpopulate(val, "Flag", &d.Flag)
 10763  			delete(rawMsg, key)
 10764  		case "priority":
 10765  			err = unpopulate(val, "Priority", &d.Priority)
 10766  			delete(rawMsg, key)
 10767  		case "protocol":
 10768  			err = unpopulate(val, "Protocol", &d.Protocol)
 10769  			delete(rawMsg, key)
 10770  		case "provisioningState":
 10771  			err = unpopulate(val, "ProvisioningState", &d.ProvisioningState)
 10772  			delete(rawMsg, key)
 10773  		case "resourceGuid":
 10774  			err = unpopulate(val, "ResourceGUID", &d.ResourceGUID)
 10775  			delete(rawMsg, key)
 10776  		case "sourcePortRanges":
 10777  			err = unpopulate(val, "SourcePortRanges", &d.SourcePortRanges)
 10778  			delete(rawMsg, key)
 10779  		case "sources":
 10780  			err = unpopulate(val, "Sources", &d.Sources)
 10781  			delete(rawMsg, key)
 10782  		}
 10783  		if err != nil {
 10784  			return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10785  		}
 10786  	}
 10787  	return nil
 10788  }
 10789  
 10790  // MarshalJSON implements the json.Marshaller interface for type DefaultAdminRule.
 10791  func (d DefaultAdminRule) MarshalJSON() ([]byte, error) {
 10792  	objectMap := make(map[string]any)
 10793  	populate(objectMap, "etag", d.Etag)
 10794  	populate(objectMap, "id", d.ID)
 10795  	objectMap["kind"] = AdminRuleKindDefault
 10796  	populate(objectMap, "name", d.Name)
 10797  	populate(objectMap, "properties", d.Properties)
 10798  	populate(objectMap, "systemData", d.SystemData)
 10799  	populate(objectMap, "type", d.Type)
 10800  	return json.Marshal(objectMap)
 10801  }
 10802  
 10803  // UnmarshalJSON implements the json.Unmarshaller interface for type DefaultAdminRule.
 10804  func (d *DefaultAdminRule) UnmarshalJSON(data []byte) error {
 10805  	var rawMsg map[string]json.RawMessage
 10806  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 10807  		return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10808  	}
 10809  	for key, val := range rawMsg {
 10810  		var err error
 10811  		switch key {
 10812  		case "etag":
 10813  			err = unpopulate(val, "Etag", &d.Etag)
 10814  			delete(rawMsg, key)
 10815  		case "id":
 10816  			err = unpopulate(val, "ID", &d.ID)
 10817  			delete(rawMsg, key)
 10818  		case "kind":
 10819  			err = unpopulate(val, "Kind", &d.Kind)
 10820  			delete(rawMsg, key)
 10821  		case "name":
 10822  			err = unpopulate(val, "Name", &d.Name)
 10823  			delete(rawMsg, key)
 10824  		case "properties":
 10825  			err = unpopulate(val, "Properties", &d.Properties)
 10826  			delete(rawMsg, key)
 10827  		case "systemData":
 10828  			err = unpopulate(val, "SystemData", &d.SystemData)
 10829  			delete(rawMsg, key)
 10830  		case "type":
 10831  			err = unpopulate(val, "Type", &d.Type)
 10832  			delete(rawMsg, key)
 10833  		}
 10834  		if err != nil {
 10835  			return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10836  		}
 10837  	}
 10838  	return nil
 10839  }
 10840  
 10841  // MarshalJSON implements the json.Marshaller interface for type DefaultRuleSetPropertyFormat.
 10842  func (d DefaultRuleSetPropertyFormat) MarshalJSON() ([]byte, error) {
 10843  	objectMap := make(map[string]any)
 10844  	populate(objectMap, "ruleSetType", d.RuleSetType)
 10845  	populate(objectMap, "ruleSetVersion", d.RuleSetVersion)
 10846  	return json.Marshal(objectMap)
 10847  }
 10848  
 10849  // UnmarshalJSON implements the json.Unmarshaller interface for type DefaultRuleSetPropertyFormat.
 10850  func (d *DefaultRuleSetPropertyFormat) UnmarshalJSON(data []byte) error {
 10851  	var rawMsg map[string]json.RawMessage
 10852  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 10853  		return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10854  	}
 10855  	for key, val := range rawMsg {
 10856  		var err error
 10857  		switch key {
 10858  		case "ruleSetType":
 10859  			err = unpopulate(val, "RuleSetType", &d.RuleSetType)
 10860  			delete(rawMsg, key)
 10861  		case "ruleSetVersion":
 10862  			err = unpopulate(val, "RuleSetVersion", &d.RuleSetVersion)
 10863  			delete(rawMsg, key)
 10864  		}
 10865  		if err != nil {
 10866  			return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10867  		}
 10868  	}
 10869  	return nil
 10870  }
 10871  
 10872  // MarshalJSON implements the json.Marshaller interface for type Delegation.
 10873  func (d Delegation) MarshalJSON() ([]byte, error) {
 10874  	objectMap := make(map[string]any)
 10875  	populate(objectMap, "etag", d.Etag)
 10876  	populate(objectMap, "id", d.ID)
 10877  	populate(objectMap, "name", d.Name)
 10878  	populate(objectMap, "properties", d.Properties)
 10879  	populate(objectMap, "type", d.Type)
 10880  	return json.Marshal(objectMap)
 10881  }
 10882  
 10883  // UnmarshalJSON implements the json.Unmarshaller interface for type Delegation.
 10884  func (d *Delegation) UnmarshalJSON(data []byte) error {
 10885  	var rawMsg map[string]json.RawMessage
 10886  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 10887  		return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10888  	}
 10889  	for key, val := range rawMsg {
 10890  		var err error
 10891  		switch key {
 10892  		case "etag":
 10893  			err = unpopulate(val, "Etag", &d.Etag)
 10894  			delete(rawMsg, key)
 10895  		case "id":
 10896  			err = unpopulate(val, "ID", &d.ID)
 10897  			delete(rawMsg, key)
 10898  		case "name":
 10899  			err = unpopulate(val, "Name", &d.Name)
 10900  			delete(rawMsg, key)
 10901  		case "properties":
 10902  			err = unpopulate(val, "Properties", &d.Properties)
 10903  			delete(rawMsg, key)
 10904  		case "type":
 10905  			err = unpopulate(val, "Type", &d.Type)
 10906  			delete(rawMsg, key)
 10907  		}
 10908  		if err != nil {
 10909  			return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10910  		}
 10911  	}
 10912  	return nil
 10913  }
 10914  
 10915  // MarshalJSON implements the json.Marshaller interface for type DelegationProperties.
 10916  func (d DelegationProperties) MarshalJSON() ([]byte, error) {
 10917  	objectMap := make(map[string]any)
 10918  	populate(objectMap, "provisioningState", d.ProvisioningState)
 10919  	populate(objectMap, "serviceName", d.ServiceName)
 10920  	return json.Marshal(objectMap)
 10921  }
 10922  
 10923  // UnmarshalJSON implements the json.Unmarshaller interface for type DelegationProperties.
 10924  func (d *DelegationProperties) UnmarshalJSON(data []byte) error {
 10925  	var rawMsg map[string]json.RawMessage
 10926  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 10927  		return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10928  	}
 10929  	for key, val := range rawMsg {
 10930  		var err error
 10931  		switch key {
 10932  		case "provisioningState":
 10933  			err = unpopulate(val, "ProvisioningState", &d.ProvisioningState)
 10934  			delete(rawMsg, key)
 10935  		case "serviceName":
 10936  			err = unpopulate(val, "ServiceName", &d.ServiceName)
 10937  			delete(rawMsg, key)
 10938  		}
 10939  		if err != nil {
 10940  			return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10941  		}
 10942  	}
 10943  	return nil
 10944  }
 10945  
 10946  // MarshalJSON implements the json.Marshaller interface for type DeviceProperties.
 10947  func (d DeviceProperties) MarshalJSON() ([]byte, error) {
 10948  	objectMap := make(map[string]any)
 10949  	populate(objectMap, "deviceModel", d.DeviceModel)
 10950  	populate(objectMap, "deviceVendor", d.DeviceVendor)
 10951  	populate(objectMap, "linkSpeedInMbps", d.LinkSpeedInMbps)
 10952  	return json.Marshal(objectMap)
 10953  }
 10954  
 10955  // UnmarshalJSON implements the json.Unmarshaller interface for type DeviceProperties.
 10956  func (d *DeviceProperties) UnmarshalJSON(data []byte) error {
 10957  	var rawMsg map[string]json.RawMessage
 10958  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 10959  		return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10960  	}
 10961  	for key, val := range rawMsg {
 10962  		var err error
 10963  		switch key {
 10964  		case "deviceModel":
 10965  			err = unpopulate(val, "DeviceModel", &d.DeviceModel)
 10966  			delete(rawMsg, key)
 10967  		case "deviceVendor":
 10968  			err = unpopulate(val, "DeviceVendor", &d.DeviceVendor)
 10969  			delete(rawMsg, key)
 10970  		case "linkSpeedInMbps":
 10971  			err = unpopulate(val, "LinkSpeedInMbps", &d.LinkSpeedInMbps)
 10972  			delete(rawMsg, key)
 10973  		}
 10974  		if err != nil {
 10975  			return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10976  		}
 10977  	}
 10978  	return nil
 10979  }
 10980  
 10981  // MarshalJSON implements the json.Marshaller interface for type DhcpOptions.
 10982  func (d DhcpOptions) MarshalJSON() ([]byte, error) {
 10983  	objectMap := make(map[string]any)
 10984  	populate(objectMap, "dnsServers", d.DNSServers)
 10985  	return json.Marshal(objectMap)
 10986  }
 10987  
 10988  // UnmarshalJSON implements the json.Unmarshaller interface for type DhcpOptions.
 10989  func (d *DhcpOptions) UnmarshalJSON(data []byte) error {
 10990  	var rawMsg map[string]json.RawMessage
 10991  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 10992  		return fmt.Errorf("unmarshalling type %T: %v", d, err)
 10993  	}
 10994  	for key, val := range rawMsg {
 10995  		var err error
 10996  		switch key {
 10997  		case "dnsServers":
 10998  			err = unpopulate(val, "DNSServers", &d.DNSServers)
 10999  			delete(rawMsg, key)
 11000  		}
 11001  		if err != nil {
 11002  			return fmt.Errorf("unmarshalling type %T: %v", d, err)
 11003  		}
 11004  	}
 11005  	return nil
 11006  }
 11007  
 11008  // MarshalJSON implements the json.Marshaller interface for type Dimension.
 11009  func (d Dimension) MarshalJSON() ([]byte, error) {
 11010  	objectMap := make(map[string]any)
 11011  	populate(objectMap, "displayName", d.DisplayName)
 11012  	populate(objectMap, "internalName", d.InternalName)
 11013  	populate(objectMap, "name", d.Name)
 11014  	return json.Marshal(objectMap)
 11015  }
 11016  
 11017  // UnmarshalJSON implements the json.Unmarshaller interface for type Dimension.
 11018  func (d *Dimension) UnmarshalJSON(data []byte) error {
 11019  	var rawMsg map[string]json.RawMessage
 11020  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 11021  		return fmt.Errorf("unmarshalling type %T: %v", d, err)
 11022  	}
 11023  	for key, val := range rawMsg {
 11024  		var err error
 11025  		switch key {
 11026  		case "displayName":
 11027  			err = unpopulate(val, "DisplayName", &d.DisplayName)
 11028  			delete(rawMsg, key)
 11029  		case "internalName":
 11030  			err = unpopulate(val, "InternalName", &d.InternalName)
 11031  			delete(rawMsg, key)
 11032  		case "name":
 11033  			err = unpopulate(val, "Name", &d.Name)
 11034  			delete(rawMsg, key)
 11035  		}
 11036  		if err != nil {
 11037  			return fmt.Errorf("unmarshalling type %T: %v", d, err)
 11038  		}
 11039  	}
 11040  	return nil
 11041  }
 11042  
 11043  // MarshalJSON implements the json.Marshaller interface for type DscpConfiguration.
 11044  func (d DscpConfiguration) MarshalJSON() ([]byte, error) {
 11045  	objectMap := make(map[string]any)
 11046  	populate(objectMap, "etag", d.Etag)
 11047  	populate(objectMap, "id", d.ID)
 11048  	populate(objectMap, "location", d.Location)
 11049  	populate(objectMap, "name", d.Name)
 11050  	populate(objectMap, "properties", d.Properties)
 11051  	populate(objectMap, "tags", d.Tags)
 11052  	populate(objectMap, "type", d.Type)
 11053  	return json.Marshal(objectMap)
 11054  }
 11055  
 11056  // UnmarshalJSON implements the json.Unmarshaller interface for type DscpConfiguration.
 11057  func (d *DscpConfiguration) UnmarshalJSON(data []byte) error {
 11058  	var rawMsg map[string]json.RawMessage
 11059  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 11060  		return fmt.Errorf("unmarshalling type %T: %v", d, err)
 11061  	}
 11062  	for key, val := range rawMsg {
 11063  		var err error
 11064  		switch key {
 11065  		case "etag":
 11066  			err = unpopulate(val, "Etag", &d.Etag)
 11067  			delete(rawMsg, key)
 11068  		case "id":
 11069  			err = unpopulate(val, "ID", &d.ID)
 11070  			delete(rawMsg, key)
 11071  		case "location":
 11072  			err = unpopulate(val, "Location", &d.Location)
 11073  			delete(rawMsg, key)
 11074  		case "name":
 11075  			err = unpopulate(val, "Name", &d.Name)
 11076  			delete(rawMsg, key)
 11077  		case "properties":
 11078  			err = unpopulate(val, "Properties", &d.Properties)
 11079  			delete(rawMsg, key)
 11080  		case "tags":
 11081  			err = unpopulate(val, "Tags", &d.Tags)
 11082  			delete(rawMsg, key)
 11083  		case "type":
 11084  			err = unpopulate(val, "Type", &d.Type)
 11085  			delete(rawMsg, key)
 11086  		}
 11087  		if err != nil {
 11088  			return fmt.Errorf("unmarshalling type %T: %v", d, err)
 11089  		}
 11090  	}
 11091  	return nil
 11092  }
 11093  
 11094  // MarshalJSON implements the json.Marshaller interface for type DscpConfigurationListResult.
 11095  func (d DscpConfigurationListResult) MarshalJSON() ([]byte, error) {
 11096  	objectMap := make(map[string]any)
 11097  	populate(objectMap, "nextLink", d.NextLink)
 11098  	populate(objectMap, "value", d.Value)
 11099  	return json.Marshal(objectMap)
 11100  }
 11101  
 11102  // UnmarshalJSON implements the json.Unmarshaller interface for type DscpConfigurationListResult.
 11103  func (d *DscpConfigurationListResult) UnmarshalJSON(data []byte) error {
 11104  	var rawMsg map[string]json.RawMessage
 11105  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 11106  		return fmt.Errorf("unmarshalling type %T: %v", d, err)
 11107  	}
 11108  	for key, val := range rawMsg {
 11109  		var err error
 11110  		switch key {
 11111  		case "nextLink":
 11112  			err = unpopulate(val, "NextLink", &d.NextLink)
 11113  			delete(rawMsg, key)
 11114  		case "value":
 11115  			err = unpopulate(val, "Value", &d.Value)
 11116  			delete(rawMsg, key)
 11117  		}
 11118  		if err != nil {
 11119  			return fmt.Errorf("unmarshalling type %T: %v", d, err)
 11120  		}
 11121  	}
 11122  	return nil
 11123  }
 11124  
 11125  // MarshalJSON implements the json.Marshaller interface for type DscpConfigurationPropertiesFormat.
 11126  func (d DscpConfigurationPropertiesFormat) MarshalJSON() ([]byte, error) {
 11127  	objectMap := make(map[string]any)
 11128  	populate(objectMap, "associatedNetworkInterfaces", d.AssociatedNetworkInterfaces)
 11129  	populate(objectMap, "destinationIpRanges", d.DestinationIPRanges)
 11130  	populate(objectMap, "destinationPortRanges", d.DestinationPortRanges)
 11131  	populate(objectMap, "markings", d.Markings)
 11132  	populate(objectMap, "protocol", d.Protocol)
 11133  	populate(objectMap, "provisioningState", d.ProvisioningState)
 11134  	populate(objectMap, "qosCollectionId", d.QosCollectionID)
 11135  	populate(objectMap, "qosDefinitionCollection", d.QosDefinitionCollection)
 11136  	populate(objectMap, "resourceGuid", d.ResourceGUID)
 11137  	populate(objectMap, "sourceIpRanges", d.SourceIPRanges)
 11138  	populate(objectMap, "sourcePortRanges", d.SourcePortRanges)
 11139  	return json.Marshal(objectMap)
 11140  }
 11141  
 11142  // UnmarshalJSON implements the json.Unmarshaller interface for type DscpConfigurationPropertiesFormat.
 11143  func (d *DscpConfigurationPropertiesFormat) UnmarshalJSON(data []byte) error {
 11144  	var rawMsg map[string]json.RawMessage
 11145  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 11146  		return fmt.Errorf("unmarshalling type %T: %v", d, err)
 11147  	}
 11148  	for key, val := range rawMsg {
 11149  		var err error
 11150  		switch key {
 11151  		case "associatedNetworkInterfaces":
 11152  			err = unpopulate(val, "AssociatedNetworkInterfaces", &d.AssociatedNetworkInterfaces)
 11153  			delete(rawMsg, key)
 11154  		case "destinationIpRanges":
 11155  			err = unpopulate(val, "DestinationIPRanges", &d.DestinationIPRanges)
 11156  			delete(rawMsg, key)
 11157  		case "destinationPortRanges":
 11158  			err = unpopulate(val, "DestinationPortRanges", &d.DestinationPortRanges)
 11159  			delete(rawMsg, key)
 11160  		case "markings":
 11161  			err = unpopulate(val, "Markings", &d.Markings)
 11162  			delete(rawMsg, key)
 11163  		case "protocol":
 11164  			err = unpopulate(val, "Protocol", &d.Protocol)
 11165  			delete(rawMsg, key)
 11166  		case "provisioningState":
 11167  			err = unpopulate(val, "ProvisioningState", &d.ProvisioningState)
 11168  			delete(rawMsg, key)
 11169  		case "qosCollectionId":
 11170  			err = unpopulate(val, "QosCollectionID", &d.QosCollectionID)
 11171  			delete(rawMsg, key)
 11172  		case "qosDefinitionCollection":
 11173  			err = unpopulate(val, "QosDefinitionCollection", &d.QosDefinitionCollection)
 11174  			delete(rawMsg, key)
 11175  		case "resourceGuid":
 11176  			err = unpopulate(val, "ResourceGUID", &d.ResourceGUID)
 11177  			delete(rawMsg, key)
 11178  		case "sourceIpRanges":
 11179  			err = unpopulate(val, "SourceIPRanges", &d.SourceIPRanges)
 11180  			delete(rawMsg, key)
 11181  		case "sourcePortRanges":
 11182  			err = unpopulate(val, "SourcePortRanges", &d.SourcePortRanges)
 11183  			delete(rawMsg, key)
 11184  		}
 11185  		if err != nil {
 11186  			return fmt.Errorf("unmarshalling type %T: %v", d, err)
 11187  		}
 11188  	}
 11189  	return nil
 11190  }
 11191  
 11192  // MarshalJSON implements the json.Marshaller interface for type EffectiveBaseSecurityAdminRule.
 11193  func (e EffectiveBaseSecurityAdminRule) MarshalJSON() ([]byte, error) {
 11194  	objectMap := make(map[string]any)
 11195  	populate(objectMap, "configurationDescription", e.ConfigurationDescription)
 11196  	populate(objectMap, "id", e.ID)
 11197  	objectMap["kind"] = e.Kind
 11198  	populate(objectMap, "ruleCollectionAppliesToGroups", e.RuleCollectionAppliesToGroups)
 11199  	populate(objectMap, "ruleCollectionDescription", e.RuleCollectionDescription)
 11200  	populate(objectMap, "ruleGroups", e.RuleGroups)
 11201  	return json.Marshal(objectMap)
 11202  }
 11203  
 11204  // UnmarshalJSON implements the json.Unmarshaller interface for type EffectiveBaseSecurityAdminRule.
 11205  func (e *EffectiveBaseSecurityAdminRule) UnmarshalJSON(data []byte) error {
 11206  	var rawMsg map[string]json.RawMessage
 11207  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 11208  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11209  	}
 11210  	for key, val := range rawMsg {
 11211  		var err error
 11212  		switch key {
 11213  		case "configurationDescription":
 11214  			err = unpopulate(val, "ConfigurationDescription", &e.ConfigurationDescription)
 11215  			delete(rawMsg, key)
 11216  		case "id":
 11217  			err = unpopulate(val, "ID", &e.ID)
 11218  			delete(rawMsg, key)
 11219  		case "kind":
 11220  			err = unpopulate(val, "Kind", &e.Kind)
 11221  			delete(rawMsg, key)
 11222  		case "ruleCollectionAppliesToGroups":
 11223  			err = unpopulate(val, "RuleCollectionAppliesToGroups", &e.RuleCollectionAppliesToGroups)
 11224  			delete(rawMsg, key)
 11225  		case "ruleCollectionDescription":
 11226  			err = unpopulate(val, "RuleCollectionDescription", &e.RuleCollectionDescription)
 11227  			delete(rawMsg, key)
 11228  		case "ruleGroups":
 11229  			err = unpopulate(val, "RuleGroups", &e.RuleGroups)
 11230  			delete(rawMsg, key)
 11231  		}
 11232  		if err != nil {
 11233  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11234  		}
 11235  	}
 11236  	return nil
 11237  }
 11238  
 11239  // MarshalJSON implements the json.Marshaller interface for type EffectiveConnectivityConfiguration.
 11240  func (e EffectiveConnectivityConfiguration) MarshalJSON() ([]byte, error) {
 11241  	objectMap := make(map[string]any)
 11242  	populate(objectMap, "configurationGroups", e.ConfigurationGroups)
 11243  	populate(objectMap, "id", e.ID)
 11244  	populate(objectMap, "properties", e.Properties)
 11245  	return json.Marshal(objectMap)
 11246  }
 11247  
 11248  // UnmarshalJSON implements the json.Unmarshaller interface for type EffectiveConnectivityConfiguration.
 11249  func (e *EffectiveConnectivityConfiguration) UnmarshalJSON(data []byte) error {
 11250  	var rawMsg map[string]json.RawMessage
 11251  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 11252  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11253  	}
 11254  	for key, val := range rawMsg {
 11255  		var err error
 11256  		switch key {
 11257  		case "configurationGroups":
 11258  			err = unpopulate(val, "ConfigurationGroups", &e.ConfigurationGroups)
 11259  			delete(rawMsg, key)
 11260  		case "id":
 11261  			err = unpopulate(val, "ID", &e.ID)
 11262  			delete(rawMsg, key)
 11263  		case "properties":
 11264  			err = unpopulate(val, "Properties", &e.Properties)
 11265  			delete(rawMsg, key)
 11266  		}
 11267  		if err != nil {
 11268  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11269  		}
 11270  	}
 11271  	return nil
 11272  }
 11273  
 11274  // MarshalJSON implements the json.Marshaller interface for type EffectiveDefaultSecurityAdminRule.
 11275  func (e EffectiveDefaultSecurityAdminRule) MarshalJSON() ([]byte, error) {
 11276  	objectMap := make(map[string]any)
 11277  	populate(objectMap, "configurationDescription", e.ConfigurationDescription)
 11278  	populate(objectMap, "id", e.ID)
 11279  	objectMap["kind"] = EffectiveAdminRuleKindDefault
 11280  	populate(objectMap, "properties", e.Properties)
 11281  	populate(objectMap, "ruleCollectionAppliesToGroups", e.RuleCollectionAppliesToGroups)
 11282  	populate(objectMap, "ruleCollectionDescription", e.RuleCollectionDescription)
 11283  	populate(objectMap, "ruleGroups", e.RuleGroups)
 11284  	return json.Marshal(objectMap)
 11285  }
 11286  
 11287  // UnmarshalJSON implements the json.Unmarshaller interface for type EffectiveDefaultSecurityAdminRule.
 11288  func (e *EffectiveDefaultSecurityAdminRule) UnmarshalJSON(data []byte) error {
 11289  	var rawMsg map[string]json.RawMessage
 11290  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 11291  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11292  	}
 11293  	for key, val := range rawMsg {
 11294  		var err error
 11295  		switch key {
 11296  		case "configurationDescription":
 11297  			err = unpopulate(val, "ConfigurationDescription", &e.ConfigurationDescription)
 11298  			delete(rawMsg, key)
 11299  		case "id":
 11300  			err = unpopulate(val, "ID", &e.ID)
 11301  			delete(rawMsg, key)
 11302  		case "kind":
 11303  			err = unpopulate(val, "Kind", &e.Kind)
 11304  			delete(rawMsg, key)
 11305  		case "properties":
 11306  			err = unpopulate(val, "Properties", &e.Properties)
 11307  			delete(rawMsg, key)
 11308  		case "ruleCollectionAppliesToGroups":
 11309  			err = unpopulate(val, "RuleCollectionAppliesToGroups", &e.RuleCollectionAppliesToGroups)
 11310  			delete(rawMsg, key)
 11311  		case "ruleCollectionDescription":
 11312  			err = unpopulate(val, "RuleCollectionDescription", &e.RuleCollectionDescription)
 11313  			delete(rawMsg, key)
 11314  		case "ruleGroups":
 11315  			err = unpopulate(val, "RuleGroups", &e.RuleGroups)
 11316  			delete(rawMsg, key)
 11317  		}
 11318  		if err != nil {
 11319  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11320  		}
 11321  	}
 11322  	return nil
 11323  }
 11324  
 11325  // MarshalJSON implements the json.Marshaller interface for type EffectiveNetworkSecurityGroup.
 11326  func (e EffectiveNetworkSecurityGroup) MarshalJSON() ([]byte, error) {
 11327  	objectMap := make(map[string]any)
 11328  	populate(objectMap, "association", e.Association)
 11329  	populate(objectMap, "effectiveSecurityRules", e.EffectiveSecurityRules)
 11330  	populate(objectMap, "networkSecurityGroup", e.NetworkSecurityGroup)
 11331  	populate(objectMap, "tagMap", e.TagMap)
 11332  	return json.Marshal(objectMap)
 11333  }
 11334  
 11335  // UnmarshalJSON implements the json.Unmarshaller interface for type EffectiveNetworkSecurityGroup.
 11336  func (e *EffectiveNetworkSecurityGroup) UnmarshalJSON(data []byte) error {
 11337  	var rawMsg map[string]json.RawMessage
 11338  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 11339  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11340  	}
 11341  	for key, val := range rawMsg {
 11342  		var err error
 11343  		switch key {
 11344  		case "association":
 11345  			err = unpopulate(val, "Association", &e.Association)
 11346  			delete(rawMsg, key)
 11347  		case "effectiveSecurityRules":
 11348  			err = unpopulate(val, "EffectiveSecurityRules", &e.EffectiveSecurityRules)
 11349  			delete(rawMsg, key)
 11350  		case "networkSecurityGroup":
 11351  			err = unpopulate(val, "NetworkSecurityGroup", &e.NetworkSecurityGroup)
 11352  			delete(rawMsg, key)
 11353  		case "tagMap":
 11354  			err = unpopulate(val, "TagMap", &e.TagMap)
 11355  			delete(rawMsg, key)
 11356  		}
 11357  		if err != nil {
 11358  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11359  		}
 11360  	}
 11361  	return nil
 11362  }
 11363  
 11364  // MarshalJSON implements the json.Marshaller interface for type EffectiveNetworkSecurityGroupAssociation.
 11365  func (e EffectiveNetworkSecurityGroupAssociation) MarshalJSON() ([]byte, error) {
 11366  	objectMap := make(map[string]any)
 11367  	populate(objectMap, "networkInterface", e.NetworkInterface)
 11368  	populate(objectMap, "networkManager", e.NetworkManager)
 11369  	populate(objectMap, "subnet", e.Subnet)
 11370  	return json.Marshal(objectMap)
 11371  }
 11372  
 11373  // UnmarshalJSON implements the json.Unmarshaller interface for type EffectiveNetworkSecurityGroupAssociation.
 11374  func (e *EffectiveNetworkSecurityGroupAssociation) UnmarshalJSON(data []byte) error {
 11375  	var rawMsg map[string]json.RawMessage
 11376  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 11377  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11378  	}
 11379  	for key, val := range rawMsg {
 11380  		var err error
 11381  		switch key {
 11382  		case "networkInterface":
 11383  			err = unpopulate(val, "NetworkInterface", &e.NetworkInterface)
 11384  			delete(rawMsg, key)
 11385  		case "networkManager":
 11386  			err = unpopulate(val, "NetworkManager", &e.NetworkManager)
 11387  			delete(rawMsg, key)
 11388  		case "subnet":
 11389  			err = unpopulate(val, "Subnet", &e.Subnet)
 11390  			delete(rawMsg, key)
 11391  		}
 11392  		if err != nil {
 11393  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11394  		}
 11395  	}
 11396  	return nil
 11397  }
 11398  
 11399  // MarshalJSON implements the json.Marshaller interface for type EffectiveNetworkSecurityGroupListResult.
 11400  func (e EffectiveNetworkSecurityGroupListResult) MarshalJSON() ([]byte, error) {
 11401  	objectMap := make(map[string]any)
 11402  	populate(objectMap, "nextLink", e.NextLink)
 11403  	populate(objectMap, "value", e.Value)
 11404  	return json.Marshal(objectMap)
 11405  }
 11406  
 11407  // UnmarshalJSON implements the json.Unmarshaller interface for type EffectiveNetworkSecurityGroupListResult.
 11408  func (e *EffectiveNetworkSecurityGroupListResult) UnmarshalJSON(data []byte) error {
 11409  	var rawMsg map[string]json.RawMessage
 11410  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 11411  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11412  	}
 11413  	for key, val := range rawMsg {
 11414  		var err error
 11415  		switch key {
 11416  		case "nextLink":
 11417  			err = unpopulate(val, "NextLink", &e.NextLink)
 11418  			delete(rawMsg, key)
 11419  		case "value":
 11420  			err = unpopulate(val, "Value", &e.Value)
 11421  			delete(rawMsg, key)
 11422  		}
 11423  		if err != nil {
 11424  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11425  		}
 11426  	}
 11427  	return nil
 11428  }
 11429  
 11430  // MarshalJSON implements the json.Marshaller interface for type EffectiveNetworkSecurityRule.
 11431  func (e EffectiveNetworkSecurityRule) MarshalJSON() ([]byte, error) {
 11432  	objectMap := make(map[string]any)
 11433  	populate(objectMap, "access", e.Access)
 11434  	populate(objectMap, "destinationAddressPrefix", e.DestinationAddressPrefix)
 11435  	populate(objectMap, "destinationAddressPrefixes", e.DestinationAddressPrefixes)
 11436  	populate(objectMap, "destinationPortRange", e.DestinationPortRange)
 11437  	populate(objectMap, "destinationPortRanges", e.DestinationPortRanges)
 11438  	populate(objectMap, "direction", e.Direction)
 11439  	populate(objectMap, "expandedDestinationAddressPrefix", e.ExpandedDestinationAddressPrefix)
 11440  	populate(objectMap, "expandedSourceAddressPrefix", e.ExpandedSourceAddressPrefix)
 11441  	populate(objectMap, "name", e.Name)
 11442  	populate(objectMap, "priority", e.Priority)
 11443  	populate(objectMap, "protocol", e.Protocol)
 11444  	populate(objectMap, "sourceAddressPrefix", e.SourceAddressPrefix)
 11445  	populate(objectMap, "sourceAddressPrefixes", e.SourceAddressPrefixes)
 11446  	populate(objectMap, "sourcePortRange", e.SourcePortRange)
 11447  	populate(objectMap, "sourcePortRanges", e.SourcePortRanges)
 11448  	return json.Marshal(objectMap)
 11449  }
 11450  
 11451  // UnmarshalJSON implements the json.Unmarshaller interface for type EffectiveNetworkSecurityRule.
 11452  func (e *EffectiveNetworkSecurityRule) UnmarshalJSON(data []byte) error {
 11453  	var rawMsg map[string]json.RawMessage
 11454  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 11455  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11456  	}
 11457  	for key, val := range rawMsg {
 11458  		var err error
 11459  		switch key {
 11460  		case "access":
 11461  			err = unpopulate(val, "Access", &e.Access)
 11462  			delete(rawMsg, key)
 11463  		case "destinationAddressPrefix":
 11464  			err = unpopulate(val, "DestinationAddressPrefix", &e.DestinationAddressPrefix)
 11465  			delete(rawMsg, key)
 11466  		case "destinationAddressPrefixes":
 11467  			err = unpopulate(val, "DestinationAddressPrefixes", &e.DestinationAddressPrefixes)
 11468  			delete(rawMsg, key)
 11469  		case "destinationPortRange":
 11470  			err = unpopulate(val, "DestinationPortRange", &e.DestinationPortRange)
 11471  			delete(rawMsg, key)
 11472  		case "destinationPortRanges":
 11473  			err = unpopulate(val, "DestinationPortRanges", &e.DestinationPortRanges)
 11474  			delete(rawMsg, key)
 11475  		case "direction":
 11476  			err = unpopulate(val, "Direction", &e.Direction)
 11477  			delete(rawMsg, key)
 11478  		case "expandedDestinationAddressPrefix":
 11479  			err = unpopulate(val, "ExpandedDestinationAddressPrefix", &e.ExpandedDestinationAddressPrefix)
 11480  			delete(rawMsg, key)
 11481  		case "expandedSourceAddressPrefix":
 11482  			err = unpopulate(val, "ExpandedSourceAddressPrefix", &e.ExpandedSourceAddressPrefix)
 11483  			delete(rawMsg, key)
 11484  		case "name":
 11485  			err = unpopulate(val, "Name", &e.Name)
 11486  			delete(rawMsg, key)
 11487  		case "priority":
 11488  			err = unpopulate(val, "Priority", &e.Priority)
 11489  			delete(rawMsg, key)
 11490  		case "protocol":
 11491  			err = unpopulate(val, "Protocol", &e.Protocol)
 11492  			delete(rawMsg, key)
 11493  		case "sourceAddressPrefix":
 11494  			err = unpopulate(val, "SourceAddressPrefix", &e.SourceAddressPrefix)
 11495  			delete(rawMsg, key)
 11496  		case "sourceAddressPrefixes":
 11497  			err = unpopulate(val, "SourceAddressPrefixes", &e.SourceAddressPrefixes)
 11498  			delete(rawMsg, key)
 11499  		case "sourcePortRange":
 11500  			err = unpopulate(val, "SourcePortRange", &e.SourcePortRange)
 11501  			delete(rawMsg, key)
 11502  		case "sourcePortRanges":
 11503  			err = unpopulate(val, "SourcePortRanges", &e.SourcePortRanges)
 11504  			delete(rawMsg, key)
 11505  		}
 11506  		if err != nil {
 11507  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11508  		}
 11509  	}
 11510  	return nil
 11511  }
 11512  
 11513  // MarshalJSON implements the json.Marshaller interface for type EffectiveRoute.
 11514  func (e EffectiveRoute) MarshalJSON() ([]byte, error) {
 11515  	objectMap := make(map[string]any)
 11516  	populate(objectMap, "addressPrefix", e.AddressPrefix)
 11517  	populate(objectMap, "disableBgpRoutePropagation", e.DisableBgpRoutePropagation)
 11518  	populate(objectMap, "name", e.Name)
 11519  	populate(objectMap, "nextHopIpAddress", e.NextHopIPAddress)
 11520  	populate(objectMap, "nextHopType", e.NextHopType)
 11521  	populate(objectMap, "source", e.Source)
 11522  	populate(objectMap, "state", e.State)
 11523  	return json.Marshal(objectMap)
 11524  }
 11525  
 11526  // UnmarshalJSON implements the json.Unmarshaller interface for type EffectiveRoute.
 11527  func (e *EffectiveRoute) UnmarshalJSON(data []byte) error {
 11528  	var rawMsg map[string]json.RawMessage
 11529  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 11530  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11531  	}
 11532  	for key, val := range rawMsg {
 11533  		var err error
 11534  		switch key {
 11535  		case "addressPrefix":
 11536  			err = unpopulate(val, "AddressPrefix", &e.AddressPrefix)
 11537  			delete(rawMsg, key)
 11538  		case "disableBgpRoutePropagation":
 11539  			err = unpopulate(val, "DisableBgpRoutePropagation", &e.DisableBgpRoutePropagation)
 11540  			delete(rawMsg, key)
 11541  		case "name":
 11542  			err = unpopulate(val, "Name", &e.Name)
 11543  			delete(rawMsg, key)
 11544  		case "nextHopIpAddress":
 11545  			err = unpopulate(val, "NextHopIPAddress", &e.NextHopIPAddress)
 11546  			delete(rawMsg, key)
 11547  		case "nextHopType":
 11548  			err = unpopulate(val, "NextHopType", &e.NextHopType)
 11549  			delete(rawMsg, key)
 11550  		case "source":
 11551  			err = unpopulate(val, "Source", &e.Source)
 11552  			delete(rawMsg, key)
 11553  		case "state":
 11554  			err = unpopulate(val, "State", &e.State)
 11555  			delete(rawMsg, key)
 11556  		}
 11557  		if err != nil {
 11558  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11559  		}
 11560  	}
 11561  	return nil
 11562  }
 11563  
 11564  // MarshalJSON implements the json.Marshaller interface for type EffectiveRouteListResult.
 11565  func (e EffectiveRouteListResult) MarshalJSON() ([]byte, error) {
 11566  	objectMap := make(map[string]any)
 11567  	populate(objectMap, "nextLink", e.NextLink)
 11568  	populate(objectMap, "value", e.Value)
 11569  	return json.Marshal(objectMap)
 11570  }
 11571  
 11572  // UnmarshalJSON implements the json.Unmarshaller interface for type EffectiveRouteListResult.
 11573  func (e *EffectiveRouteListResult) UnmarshalJSON(data []byte) error {
 11574  	var rawMsg map[string]json.RawMessage
 11575  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 11576  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11577  	}
 11578  	for key, val := range rawMsg {
 11579  		var err error
 11580  		switch key {
 11581  		case "nextLink":
 11582  			err = unpopulate(val, "NextLink", &e.NextLink)
 11583  			delete(rawMsg, key)
 11584  		case "value":
 11585  			err = unpopulate(val, "Value", &e.Value)
 11586  			delete(rawMsg, key)
 11587  		}
 11588  		if err != nil {
 11589  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11590  		}
 11591  	}
 11592  	return nil
 11593  }
 11594  
 11595  // MarshalJSON implements the json.Marshaller interface for type EffectiveRouteMapRoute.
 11596  func (e EffectiveRouteMapRoute) MarshalJSON() ([]byte, error) {
 11597  	objectMap := make(map[string]any)
 11598  	populate(objectMap, "asPath", e.AsPath)
 11599  	populate(objectMap, "bgpCommunities", e.BgpCommunities)
 11600  	populate(objectMap, "prefix", e.Prefix)
 11601  	return json.Marshal(objectMap)
 11602  }
 11603  
 11604  // UnmarshalJSON implements the json.Unmarshaller interface for type EffectiveRouteMapRoute.
 11605  func (e *EffectiveRouteMapRoute) UnmarshalJSON(data []byte) error {
 11606  	var rawMsg map[string]json.RawMessage
 11607  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 11608  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11609  	}
 11610  	for key, val := range rawMsg {
 11611  		var err error
 11612  		switch key {
 11613  		case "asPath":
 11614  			err = unpopulate(val, "AsPath", &e.AsPath)
 11615  			delete(rawMsg, key)
 11616  		case "bgpCommunities":
 11617  			err = unpopulate(val, "BgpCommunities", &e.BgpCommunities)
 11618  			delete(rawMsg, key)
 11619  		case "prefix":
 11620  			err = unpopulate(val, "Prefix", &e.Prefix)
 11621  			delete(rawMsg, key)
 11622  		}
 11623  		if err != nil {
 11624  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11625  		}
 11626  	}
 11627  	return nil
 11628  }
 11629  
 11630  // MarshalJSON implements the json.Marshaller interface for type EffectiveRouteMapRouteList.
 11631  func (e EffectiveRouteMapRouteList) MarshalJSON() ([]byte, error) {
 11632  	objectMap := make(map[string]any)
 11633  	populate(objectMap, "value", e.Value)
 11634  	return json.Marshal(objectMap)
 11635  }
 11636  
 11637  // UnmarshalJSON implements the json.Unmarshaller interface for type EffectiveRouteMapRouteList.
 11638  func (e *EffectiveRouteMapRouteList) UnmarshalJSON(data []byte) error {
 11639  	var rawMsg map[string]json.RawMessage
 11640  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 11641  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11642  	}
 11643  	for key, val := range rawMsg {
 11644  		var err error
 11645  		switch key {
 11646  		case "value":
 11647  			err = unpopulate(val, "Value", &e.Value)
 11648  			delete(rawMsg, key)
 11649  		}
 11650  		if err != nil {
 11651  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11652  		}
 11653  	}
 11654  	return nil
 11655  }
 11656  
 11657  // MarshalJSON implements the json.Marshaller interface for type EffectiveRoutesParameters.
 11658  func (e EffectiveRoutesParameters) MarshalJSON() ([]byte, error) {
 11659  	objectMap := make(map[string]any)
 11660  	populate(objectMap, "resourceId", e.ResourceID)
 11661  	populate(objectMap, "virtualWanResourceType", e.VirtualWanResourceType)
 11662  	return json.Marshal(objectMap)
 11663  }
 11664  
 11665  // UnmarshalJSON implements the json.Unmarshaller interface for type EffectiveRoutesParameters.
 11666  func (e *EffectiveRoutesParameters) UnmarshalJSON(data []byte) error {
 11667  	var rawMsg map[string]json.RawMessage
 11668  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 11669  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11670  	}
 11671  	for key, val := range rawMsg {
 11672  		var err error
 11673  		switch key {
 11674  		case "resourceId":
 11675  			err = unpopulate(val, "ResourceID", &e.ResourceID)
 11676  			delete(rawMsg, key)
 11677  		case "virtualWanResourceType":
 11678  			err = unpopulate(val, "VirtualWanResourceType", &e.VirtualWanResourceType)
 11679  			delete(rawMsg, key)
 11680  		}
 11681  		if err != nil {
 11682  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11683  		}
 11684  	}
 11685  	return nil
 11686  }
 11687  
 11688  // MarshalJSON implements the json.Marshaller interface for type EffectiveSecurityAdminRule.
 11689  func (e EffectiveSecurityAdminRule) MarshalJSON() ([]byte, error) {
 11690  	objectMap := make(map[string]any)
 11691  	populate(objectMap, "configurationDescription", e.ConfigurationDescription)
 11692  	populate(objectMap, "id", e.ID)
 11693  	objectMap["kind"] = EffectiveAdminRuleKindCustom
 11694  	populate(objectMap, "properties", e.Properties)
 11695  	populate(objectMap, "ruleCollectionAppliesToGroups", e.RuleCollectionAppliesToGroups)
 11696  	populate(objectMap, "ruleCollectionDescription", e.RuleCollectionDescription)
 11697  	populate(objectMap, "ruleGroups", e.RuleGroups)
 11698  	return json.Marshal(objectMap)
 11699  }
 11700  
 11701  // UnmarshalJSON implements the json.Unmarshaller interface for type EffectiveSecurityAdminRule.
 11702  func (e *EffectiveSecurityAdminRule) UnmarshalJSON(data []byte) error {
 11703  	var rawMsg map[string]json.RawMessage
 11704  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 11705  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11706  	}
 11707  	for key, val := range rawMsg {
 11708  		var err error
 11709  		switch key {
 11710  		case "configurationDescription":
 11711  			err = unpopulate(val, "ConfigurationDescription", &e.ConfigurationDescription)
 11712  			delete(rawMsg, key)
 11713  		case "id":
 11714  			err = unpopulate(val, "ID", &e.ID)
 11715  			delete(rawMsg, key)
 11716  		case "kind":
 11717  			err = unpopulate(val, "Kind", &e.Kind)
 11718  			delete(rawMsg, key)
 11719  		case "properties":
 11720  			err = unpopulate(val, "Properties", &e.Properties)
 11721  			delete(rawMsg, key)
 11722  		case "ruleCollectionAppliesToGroups":
 11723  			err = unpopulate(val, "RuleCollectionAppliesToGroups", &e.RuleCollectionAppliesToGroups)
 11724  			delete(rawMsg, key)
 11725  		case "ruleCollectionDescription":
 11726  			err = unpopulate(val, "RuleCollectionDescription", &e.RuleCollectionDescription)
 11727  			delete(rawMsg, key)
 11728  		case "ruleGroups":
 11729  			err = unpopulate(val, "RuleGroups", &e.RuleGroups)
 11730  			delete(rawMsg, key)
 11731  		}
 11732  		if err != nil {
 11733  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11734  		}
 11735  	}
 11736  	return nil
 11737  }
 11738  
 11739  // MarshalJSON implements the json.Marshaller interface for type EndpointServiceResult.
 11740  func (e EndpointServiceResult) MarshalJSON() ([]byte, error) {
 11741  	objectMap := make(map[string]any)
 11742  	populate(objectMap, "id", e.ID)
 11743  	populate(objectMap, "name", e.Name)
 11744  	populate(objectMap, "type", e.Type)
 11745  	return json.Marshal(objectMap)
 11746  }
 11747  
 11748  // UnmarshalJSON implements the json.Unmarshaller interface for type EndpointServiceResult.
 11749  func (e *EndpointServiceResult) UnmarshalJSON(data []byte) error {
 11750  	var rawMsg map[string]json.RawMessage
 11751  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 11752  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11753  	}
 11754  	for key, val := range rawMsg {
 11755  		var err error
 11756  		switch key {
 11757  		case "id":
 11758  			err = unpopulate(val, "ID", &e.ID)
 11759  			delete(rawMsg, key)
 11760  		case "name":
 11761  			err = unpopulate(val, "Name", &e.Name)
 11762  			delete(rawMsg, key)
 11763  		case "type":
 11764  			err = unpopulate(val, "Type", &e.Type)
 11765  			delete(rawMsg, key)
 11766  		}
 11767  		if err != nil {
 11768  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11769  		}
 11770  	}
 11771  	return nil
 11772  }
 11773  
 11774  // MarshalJSON implements the json.Marshaller interface for type EndpointServicesListResult.
 11775  func (e EndpointServicesListResult) MarshalJSON() ([]byte, error) {
 11776  	objectMap := make(map[string]any)
 11777  	populate(objectMap, "nextLink", e.NextLink)
 11778  	populate(objectMap, "value", e.Value)
 11779  	return json.Marshal(objectMap)
 11780  }
 11781  
 11782  // UnmarshalJSON implements the json.Unmarshaller interface for type EndpointServicesListResult.
 11783  func (e *EndpointServicesListResult) UnmarshalJSON(data []byte) error {
 11784  	var rawMsg map[string]json.RawMessage
 11785  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 11786  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11787  	}
 11788  	for key, val := range rawMsg {
 11789  		var err error
 11790  		switch key {
 11791  		case "nextLink":
 11792  			err = unpopulate(val, "NextLink", &e.NextLink)
 11793  			delete(rawMsg, key)
 11794  		case "value":
 11795  			err = unpopulate(val, "Value", &e.Value)
 11796  			delete(rawMsg, key)
 11797  		}
 11798  		if err != nil {
 11799  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11800  		}
 11801  	}
 11802  	return nil
 11803  }
 11804  
 11805  // MarshalJSON implements the json.Marshaller interface for type Error.
 11806  func (e Error) MarshalJSON() ([]byte, error) {
 11807  	objectMap := make(map[string]any)
 11808  	populate(objectMap, "code", e.Code)
 11809  	populate(objectMap, "details", e.Details)
 11810  	populate(objectMap, "innerError", e.InnerError)
 11811  	populate(objectMap, "message", e.Message)
 11812  	populate(objectMap, "target", e.Target)
 11813  	return json.Marshal(objectMap)
 11814  }
 11815  
 11816  // UnmarshalJSON implements the json.Unmarshaller interface for type Error.
 11817  func (e *Error) UnmarshalJSON(data []byte) error {
 11818  	var rawMsg map[string]json.RawMessage
 11819  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 11820  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11821  	}
 11822  	for key, val := range rawMsg {
 11823  		var err error
 11824  		switch key {
 11825  		case "code":
 11826  			err = unpopulate(val, "Code", &e.Code)
 11827  			delete(rawMsg, key)
 11828  		case "details":
 11829  			err = unpopulate(val, "Details", &e.Details)
 11830  			delete(rawMsg, key)
 11831  		case "innerError":
 11832  			err = unpopulate(val, "InnerError", &e.InnerError)
 11833  			delete(rawMsg, key)
 11834  		case "message":
 11835  			err = unpopulate(val, "Message", &e.Message)
 11836  			delete(rawMsg, key)
 11837  		case "target":
 11838  			err = unpopulate(val, "Target", &e.Target)
 11839  			delete(rawMsg, key)
 11840  		}
 11841  		if err != nil {
 11842  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11843  		}
 11844  	}
 11845  	return nil
 11846  }
 11847  
 11848  // MarshalJSON implements the json.Marshaller interface for type ErrorDetails.
 11849  func (e ErrorDetails) MarshalJSON() ([]byte, error) {
 11850  	objectMap := make(map[string]any)
 11851  	populate(objectMap, "code", e.Code)
 11852  	populate(objectMap, "message", e.Message)
 11853  	populate(objectMap, "target", e.Target)
 11854  	return json.Marshal(objectMap)
 11855  }
 11856  
 11857  // UnmarshalJSON implements the json.Unmarshaller interface for type ErrorDetails.
 11858  func (e *ErrorDetails) UnmarshalJSON(data []byte) error {
 11859  	var rawMsg map[string]json.RawMessage
 11860  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 11861  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11862  	}
 11863  	for key, val := range rawMsg {
 11864  		var err error
 11865  		switch key {
 11866  		case "code":
 11867  			err = unpopulate(val, "Code", &e.Code)
 11868  			delete(rawMsg, key)
 11869  		case "message":
 11870  			err = unpopulate(val, "Message", &e.Message)
 11871  			delete(rawMsg, key)
 11872  		case "target":
 11873  			err = unpopulate(val, "Target", &e.Target)
 11874  			delete(rawMsg, key)
 11875  		}
 11876  		if err != nil {
 11877  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11878  		}
 11879  	}
 11880  	return nil
 11881  }
 11882  
 11883  // MarshalJSON implements the json.Marshaller interface for type ErrorResponse.
 11884  func (e ErrorResponse) MarshalJSON() ([]byte, error) {
 11885  	objectMap := make(map[string]any)
 11886  	populate(objectMap, "error", e.Error)
 11887  	return json.Marshal(objectMap)
 11888  }
 11889  
 11890  // UnmarshalJSON implements the json.Unmarshaller interface for type ErrorResponse.
 11891  func (e *ErrorResponse) UnmarshalJSON(data []byte) error {
 11892  	var rawMsg map[string]json.RawMessage
 11893  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 11894  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11895  	}
 11896  	for key, val := range rawMsg {
 11897  		var err error
 11898  		switch key {
 11899  		case "error":
 11900  			err = unpopulate(val, "Error", &e.Error)
 11901  			delete(rawMsg, key)
 11902  		}
 11903  		if err != nil {
 11904  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11905  		}
 11906  	}
 11907  	return nil
 11908  }
 11909  
 11910  // MarshalJSON implements the json.Marshaller interface for type EvaluatedNetworkSecurityGroup.
 11911  func (e EvaluatedNetworkSecurityGroup) MarshalJSON() ([]byte, error) {
 11912  	objectMap := make(map[string]any)
 11913  	populate(objectMap, "appliedTo", e.AppliedTo)
 11914  	populate(objectMap, "matchedRule", e.MatchedRule)
 11915  	populate(objectMap, "networkSecurityGroupId", e.NetworkSecurityGroupID)
 11916  	populate(objectMap, "rulesEvaluationResult", e.RulesEvaluationResult)
 11917  	return json.Marshal(objectMap)
 11918  }
 11919  
 11920  // UnmarshalJSON implements the json.Unmarshaller interface for type EvaluatedNetworkSecurityGroup.
 11921  func (e *EvaluatedNetworkSecurityGroup) UnmarshalJSON(data []byte) error {
 11922  	var rawMsg map[string]json.RawMessage
 11923  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 11924  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11925  	}
 11926  	for key, val := range rawMsg {
 11927  		var err error
 11928  		switch key {
 11929  		case "appliedTo":
 11930  			err = unpopulate(val, "AppliedTo", &e.AppliedTo)
 11931  			delete(rawMsg, key)
 11932  		case "matchedRule":
 11933  			err = unpopulate(val, "MatchedRule", &e.MatchedRule)
 11934  			delete(rawMsg, key)
 11935  		case "networkSecurityGroupId":
 11936  			err = unpopulate(val, "NetworkSecurityGroupID", &e.NetworkSecurityGroupID)
 11937  			delete(rawMsg, key)
 11938  		case "rulesEvaluationResult":
 11939  			err = unpopulate(val, "RulesEvaluationResult", &e.RulesEvaluationResult)
 11940  			delete(rawMsg, key)
 11941  		}
 11942  		if err != nil {
 11943  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11944  		}
 11945  	}
 11946  	return nil
 11947  }
 11948  
 11949  // MarshalJSON implements the json.Marshaller interface for type ExceptionEntry.
 11950  func (e ExceptionEntry) MarshalJSON() ([]byte, error) {
 11951  	objectMap := make(map[string]any)
 11952  	populate(objectMap, "exceptionManagedRuleSets", e.ExceptionManagedRuleSets)
 11953  	populate(objectMap, "matchVariable", e.MatchVariable)
 11954  	populate(objectMap, "selector", e.Selector)
 11955  	populate(objectMap, "selectorMatchOperator", e.SelectorMatchOperator)
 11956  	populate(objectMap, "valueMatchOperator", e.ValueMatchOperator)
 11957  	populate(objectMap, "values", e.Values)
 11958  	return json.Marshal(objectMap)
 11959  }
 11960  
 11961  // UnmarshalJSON implements the json.Unmarshaller interface for type ExceptionEntry.
 11962  func (e *ExceptionEntry) UnmarshalJSON(data []byte) error {
 11963  	var rawMsg map[string]json.RawMessage
 11964  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 11965  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11966  	}
 11967  	for key, val := range rawMsg {
 11968  		var err error
 11969  		switch key {
 11970  		case "exceptionManagedRuleSets":
 11971  			err = unpopulate(val, "ExceptionManagedRuleSets", &e.ExceptionManagedRuleSets)
 11972  			delete(rawMsg, key)
 11973  		case "matchVariable":
 11974  			err = unpopulate(val, "MatchVariable", &e.MatchVariable)
 11975  			delete(rawMsg, key)
 11976  		case "selector":
 11977  			err = unpopulate(val, "Selector", &e.Selector)
 11978  			delete(rawMsg, key)
 11979  		case "selectorMatchOperator":
 11980  			err = unpopulate(val, "SelectorMatchOperator", &e.SelectorMatchOperator)
 11981  			delete(rawMsg, key)
 11982  		case "valueMatchOperator":
 11983  			err = unpopulate(val, "ValueMatchOperator", &e.ValueMatchOperator)
 11984  			delete(rawMsg, key)
 11985  		case "values":
 11986  			err = unpopulate(val, "Values", &e.Values)
 11987  			delete(rawMsg, key)
 11988  		}
 11989  		if err != nil {
 11990  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 11991  		}
 11992  	}
 11993  	return nil
 11994  }
 11995  
 11996  // MarshalJSON implements the json.Marshaller interface for type ExclusionManagedRule.
 11997  func (e ExclusionManagedRule) MarshalJSON() ([]byte, error) {
 11998  	objectMap := make(map[string]any)
 11999  	populate(objectMap, "ruleId", e.RuleID)
 12000  	return json.Marshal(objectMap)
 12001  }
 12002  
 12003  // UnmarshalJSON implements the json.Unmarshaller interface for type ExclusionManagedRule.
 12004  func (e *ExclusionManagedRule) UnmarshalJSON(data []byte) error {
 12005  	var rawMsg map[string]json.RawMessage
 12006  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 12007  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12008  	}
 12009  	for key, val := range rawMsg {
 12010  		var err error
 12011  		switch key {
 12012  		case "ruleId":
 12013  			err = unpopulate(val, "RuleID", &e.RuleID)
 12014  			delete(rawMsg, key)
 12015  		}
 12016  		if err != nil {
 12017  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12018  		}
 12019  	}
 12020  	return nil
 12021  }
 12022  
 12023  // MarshalJSON implements the json.Marshaller interface for type ExclusionManagedRuleGroup.
 12024  func (e ExclusionManagedRuleGroup) MarshalJSON() ([]byte, error) {
 12025  	objectMap := make(map[string]any)
 12026  	populate(objectMap, "ruleGroupName", e.RuleGroupName)
 12027  	populate(objectMap, "rules", e.Rules)
 12028  	return json.Marshal(objectMap)
 12029  }
 12030  
 12031  // UnmarshalJSON implements the json.Unmarshaller interface for type ExclusionManagedRuleGroup.
 12032  func (e *ExclusionManagedRuleGroup) UnmarshalJSON(data []byte) error {
 12033  	var rawMsg map[string]json.RawMessage
 12034  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 12035  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12036  	}
 12037  	for key, val := range rawMsg {
 12038  		var err error
 12039  		switch key {
 12040  		case "ruleGroupName":
 12041  			err = unpopulate(val, "RuleGroupName", &e.RuleGroupName)
 12042  			delete(rawMsg, key)
 12043  		case "rules":
 12044  			err = unpopulate(val, "Rules", &e.Rules)
 12045  			delete(rawMsg, key)
 12046  		}
 12047  		if err != nil {
 12048  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12049  		}
 12050  	}
 12051  	return nil
 12052  }
 12053  
 12054  // MarshalJSON implements the json.Marshaller interface for type ExclusionManagedRuleSet.
 12055  func (e ExclusionManagedRuleSet) MarshalJSON() ([]byte, error) {
 12056  	objectMap := make(map[string]any)
 12057  	populate(objectMap, "ruleGroups", e.RuleGroups)
 12058  	populate(objectMap, "ruleSetType", e.RuleSetType)
 12059  	populate(objectMap, "ruleSetVersion", e.RuleSetVersion)
 12060  	return json.Marshal(objectMap)
 12061  }
 12062  
 12063  // UnmarshalJSON implements the json.Unmarshaller interface for type ExclusionManagedRuleSet.
 12064  func (e *ExclusionManagedRuleSet) UnmarshalJSON(data []byte) error {
 12065  	var rawMsg map[string]json.RawMessage
 12066  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 12067  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12068  	}
 12069  	for key, val := range rawMsg {
 12070  		var err error
 12071  		switch key {
 12072  		case "ruleGroups":
 12073  			err = unpopulate(val, "RuleGroups", &e.RuleGroups)
 12074  			delete(rawMsg, key)
 12075  		case "ruleSetType":
 12076  			err = unpopulate(val, "RuleSetType", &e.RuleSetType)
 12077  			delete(rawMsg, key)
 12078  		case "ruleSetVersion":
 12079  			err = unpopulate(val, "RuleSetVersion", &e.RuleSetVersion)
 12080  			delete(rawMsg, key)
 12081  		}
 12082  		if err != nil {
 12083  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12084  		}
 12085  	}
 12086  	return nil
 12087  }
 12088  
 12089  // MarshalJSON implements the json.Marshaller interface for type ExplicitProxySettings.
 12090  func (e ExplicitProxySettings) MarshalJSON() ([]byte, error) {
 12091  	objectMap := make(map[string]any)
 12092  	populate(objectMap, "enableExplicitProxy", e.EnableExplicitProxy)
 12093  	populate(objectMap, "enablePacFile", e.EnablePacFile)
 12094  	populate(objectMap, "httpPort", e.HTTPPort)
 12095  	populate(objectMap, "httpsPort", e.HTTPSPort)
 12096  	populate(objectMap, "pacFile", e.PacFile)
 12097  	populate(objectMap, "pacFilePort", e.PacFilePort)
 12098  	return json.Marshal(objectMap)
 12099  }
 12100  
 12101  // UnmarshalJSON implements the json.Unmarshaller interface for type ExplicitProxySettings.
 12102  func (e *ExplicitProxySettings) UnmarshalJSON(data []byte) error {
 12103  	var rawMsg map[string]json.RawMessage
 12104  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 12105  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12106  	}
 12107  	for key, val := range rawMsg {
 12108  		var err error
 12109  		switch key {
 12110  		case "enableExplicitProxy":
 12111  			err = unpopulate(val, "EnableExplicitProxy", &e.EnableExplicitProxy)
 12112  			delete(rawMsg, key)
 12113  		case "enablePacFile":
 12114  			err = unpopulate(val, "EnablePacFile", &e.EnablePacFile)
 12115  			delete(rawMsg, key)
 12116  		case "httpPort":
 12117  			err = unpopulate(val, "HTTPPort", &e.HTTPPort)
 12118  			delete(rawMsg, key)
 12119  		case "httpsPort":
 12120  			err = unpopulate(val, "HTTPSPort", &e.HTTPSPort)
 12121  			delete(rawMsg, key)
 12122  		case "pacFile":
 12123  			err = unpopulate(val, "PacFile", &e.PacFile)
 12124  			delete(rawMsg, key)
 12125  		case "pacFilePort":
 12126  			err = unpopulate(val, "PacFilePort", &e.PacFilePort)
 12127  			delete(rawMsg, key)
 12128  		}
 12129  		if err != nil {
 12130  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12131  		}
 12132  	}
 12133  	return nil
 12134  }
 12135  
 12136  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuit.
 12137  func (e ExpressRouteCircuit) MarshalJSON() ([]byte, error) {
 12138  	objectMap := make(map[string]any)
 12139  	populate(objectMap, "etag", e.Etag)
 12140  	populate(objectMap, "id", e.ID)
 12141  	populate(objectMap, "location", e.Location)
 12142  	populate(objectMap, "name", e.Name)
 12143  	populate(objectMap, "properties", e.Properties)
 12144  	populate(objectMap, "sku", e.SKU)
 12145  	populate(objectMap, "tags", e.Tags)
 12146  	populate(objectMap, "type", e.Type)
 12147  	return json.Marshal(objectMap)
 12148  }
 12149  
 12150  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCircuit.
 12151  func (e *ExpressRouteCircuit) UnmarshalJSON(data []byte) error {
 12152  	var rawMsg map[string]json.RawMessage
 12153  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 12154  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12155  	}
 12156  	for key, val := range rawMsg {
 12157  		var err error
 12158  		switch key {
 12159  		case "etag":
 12160  			err = unpopulate(val, "Etag", &e.Etag)
 12161  			delete(rawMsg, key)
 12162  		case "id":
 12163  			err = unpopulate(val, "ID", &e.ID)
 12164  			delete(rawMsg, key)
 12165  		case "location":
 12166  			err = unpopulate(val, "Location", &e.Location)
 12167  			delete(rawMsg, key)
 12168  		case "name":
 12169  			err = unpopulate(val, "Name", &e.Name)
 12170  			delete(rawMsg, key)
 12171  		case "properties":
 12172  			err = unpopulate(val, "Properties", &e.Properties)
 12173  			delete(rawMsg, key)
 12174  		case "sku":
 12175  			err = unpopulate(val, "SKU", &e.SKU)
 12176  			delete(rawMsg, key)
 12177  		case "tags":
 12178  			err = unpopulate(val, "Tags", &e.Tags)
 12179  			delete(rawMsg, key)
 12180  		case "type":
 12181  			err = unpopulate(val, "Type", &e.Type)
 12182  			delete(rawMsg, key)
 12183  		}
 12184  		if err != nil {
 12185  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12186  		}
 12187  	}
 12188  	return nil
 12189  }
 12190  
 12191  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitArpTable.
 12192  func (e ExpressRouteCircuitArpTable) MarshalJSON() ([]byte, error) {
 12193  	objectMap := make(map[string]any)
 12194  	populate(objectMap, "age", e.Age)
 12195  	populate(objectMap, "ipAddress", e.IPAddress)
 12196  	populate(objectMap, "interface", e.Interface)
 12197  	populate(objectMap, "macAddress", e.MacAddress)
 12198  	return json.Marshal(objectMap)
 12199  }
 12200  
 12201  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCircuitArpTable.
 12202  func (e *ExpressRouteCircuitArpTable) UnmarshalJSON(data []byte) error {
 12203  	var rawMsg map[string]json.RawMessage
 12204  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 12205  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12206  	}
 12207  	for key, val := range rawMsg {
 12208  		var err error
 12209  		switch key {
 12210  		case "age":
 12211  			err = unpopulate(val, "Age", &e.Age)
 12212  			delete(rawMsg, key)
 12213  		case "ipAddress":
 12214  			err = unpopulate(val, "IPAddress", &e.IPAddress)
 12215  			delete(rawMsg, key)
 12216  		case "interface":
 12217  			err = unpopulate(val, "Interface", &e.Interface)
 12218  			delete(rawMsg, key)
 12219  		case "macAddress":
 12220  			err = unpopulate(val, "MacAddress", &e.MacAddress)
 12221  			delete(rawMsg, key)
 12222  		}
 12223  		if err != nil {
 12224  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12225  		}
 12226  	}
 12227  	return nil
 12228  }
 12229  
 12230  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitAuthorization.
 12231  func (e ExpressRouteCircuitAuthorization) MarshalJSON() ([]byte, error) {
 12232  	objectMap := make(map[string]any)
 12233  	populate(objectMap, "etag", e.Etag)
 12234  	populate(objectMap, "id", e.ID)
 12235  	populate(objectMap, "name", e.Name)
 12236  	populate(objectMap, "properties", e.Properties)
 12237  	populate(objectMap, "type", e.Type)
 12238  	return json.Marshal(objectMap)
 12239  }
 12240  
 12241  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCircuitAuthorization.
 12242  func (e *ExpressRouteCircuitAuthorization) UnmarshalJSON(data []byte) error {
 12243  	var rawMsg map[string]json.RawMessage
 12244  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 12245  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12246  	}
 12247  	for key, val := range rawMsg {
 12248  		var err error
 12249  		switch key {
 12250  		case "etag":
 12251  			err = unpopulate(val, "Etag", &e.Etag)
 12252  			delete(rawMsg, key)
 12253  		case "id":
 12254  			err = unpopulate(val, "ID", &e.ID)
 12255  			delete(rawMsg, key)
 12256  		case "name":
 12257  			err = unpopulate(val, "Name", &e.Name)
 12258  			delete(rawMsg, key)
 12259  		case "properties":
 12260  			err = unpopulate(val, "Properties", &e.Properties)
 12261  			delete(rawMsg, key)
 12262  		case "type":
 12263  			err = unpopulate(val, "Type", &e.Type)
 12264  			delete(rawMsg, key)
 12265  		}
 12266  		if err != nil {
 12267  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12268  		}
 12269  	}
 12270  	return nil
 12271  }
 12272  
 12273  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitConnection.
 12274  func (e ExpressRouteCircuitConnection) MarshalJSON() ([]byte, error) {
 12275  	objectMap := make(map[string]any)
 12276  	populate(objectMap, "etag", e.Etag)
 12277  	populate(objectMap, "id", e.ID)
 12278  	populate(objectMap, "name", e.Name)
 12279  	populate(objectMap, "properties", e.Properties)
 12280  	populate(objectMap, "type", e.Type)
 12281  	return json.Marshal(objectMap)
 12282  }
 12283  
 12284  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCircuitConnection.
 12285  func (e *ExpressRouteCircuitConnection) UnmarshalJSON(data []byte) error {
 12286  	var rawMsg map[string]json.RawMessage
 12287  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 12288  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12289  	}
 12290  	for key, val := range rawMsg {
 12291  		var err error
 12292  		switch key {
 12293  		case "etag":
 12294  			err = unpopulate(val, "Etag", &e.Etag)
 12295  			delete(rawMsg, key)
 12296  		case "id":
 12297  			err = unpopulate(val, "ID", &e.ID)
 12298  			delete(rawMsg, key)
 12299  		case "name":
 12300  			err = unpopulate(val, "Name", &e.Name)
 12301  			delete(rawMsg, key)
 12302  		case "properties":
 12303  			err = unpopulate(val, "Properties", &e.Properties)
 12304  			delete(rawMsg, key)
 12305  		case "type":
 12306  			err = unpopulate(val, "Type", &e.Type)
 12307  			delete(rawMsg, key)
 12308  		}
 12309  		if err != nil {
 12310  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12311  		}
 12312  	}
 12313  	return nil
 12314  }
 12315  
 12316  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitConnectionListResult.
 12317  func (e ExpressRouteCircuitConnectionListResult) MarshalJSON() ([]byte, error) {
 12318  	objectMap := make(map[string]any)
 12319  	populate(objectMap, "nextLink", e.NextLink)
 12320  	populate(objectMap, "value", e.Value)
 12321  	return json.Marshal(objectMap)
 12322  }
 12323  
 12324  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCircuitConnectionListResult.
 12325  func (e *ExpressRouteCircuitConnectionListResult) UnmarshalJSON(data []byte) error {
 12326  	var rawMsg map[string]json.RawMessage
 12327  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 12328  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12329  	}
 12330  	for key, val := range rawMsg {
 12331  		var err error
 12332  		switch key {
 12333  		case "nextLink":
 12334  			err = unpopulate(val, "NextLink", &e.NextLink)
 12335  			delete(rawMsg, key)
 12336  		case "value":
 12337  			err = unpopulate(val, "Value", &e.Value)
 12338  			delete(rawMsg, key)
 12339  		}
 12340  		if err != nil {
 12341  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12342  		}
 12343  	}
 12344  	return nil
 12345  }
 12346  
 12347  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitConnectionPropertiesFormat.
 12348  func (e ExpressRouteCircuitConnectionPropertiesFormat) MarshalJSON() ([]byte, error) {
 12349  	objectMap := make(map[string]any)
 12350  	populate(objectMap, "addressPrefix", e.AddressPrefix)
 12351  	populate(objectMap, "authorizationKey", e.AuthorizationKey)
 12352  	populate(objectMap, "circuitConnectionStatus", e.CircuitConnectionStatus)
 12353  	populate(objectMap, "expressRouteCircuitPeering", e.ExpressRouteCircuitPeering)
 12354  	populate(objectMap, "ipv6CircuitConnectionConfig", e.IPv6CircuitConnectionConfig)
 12355  	populate(objectMap, "peerExpressRouteCircuitPeering", e.PeerExpressRouteCircuitPeering)
 12356  	populate(objectMap, "provisioningState", e.ProvisioningState)
 12357  	return json.Marshal(objectMap)
 12358  }
 12359  
 12360  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCircuitConnectionPropertiesFormat.
 12361  func (e *ExpressRouteCircuitConnectionPropertiesFormat) UnmarshalJSON(data []byte) error {
 12362  	var rawMsg map[string]json.RawMessage
 12363  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 12364  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12365  	}
 12366  	for key, val := range rawMsg {
 12367  		var err error
 12368  		switch key {
 12369  		case "addressPrefix":
 12370  			err = unpopulate(val, "AddressPrefix", &e.AddressPrefix)
 12371  			delete(rawMsg, key)
 12372  		case "authorizationKey":
 12373  			err = unpopulate(val, "AuthorizationKey", &e.AuthorizationKey)
 12374  			delete(rawMsg, key)
 12375  		case "circuitConnectionStatus":
 12376  			err = unpopulate(val, "CircuitConnectionStatus", &e.CircuitConnectionStatus)
 12377  			delete(rawMsg, key)
 12378  		case "expressRouteCircuitPeering":
 12379  			err = unpopulate(val, "ExpressRouteCircuitPeering", &e.ExpressRouteCircuitPeering)
 12380  			delete(rawMsg, key)
 12381  		case "ipv6CircuitConnectionConfig":
 12382  			err = unpopulate(val, "IPv6CircuitConnectionConfig", &e.IPv6CircuitConnectionConfig)
 12383  			delete(rawMsg, key)
 12384  		case "peerExpressRouteCircuitPeering":
 12385  			err = unpopulate(val, "PeerExpressRouteCircuitPeering", &e.PeerExpressRouteCircuitPeering)
 12386  			delete(rawMsg, key)
 12387  		case "provisioningState":
 12388  			err = unpopulate(val, "ProvisioningState", &e.ProvisioningState)
 12389  			delete(rawMsg, key)
 12390  		}
 12391  		if err != nil {
 12392  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12393  		}
 12394  	}
 12395  	return nil
 12396  }
 12397  
 12398  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitListResult.
 12399  func (e ExpressRouteCircuitListResult) MarshalJSON() ([]byte, error) {
 12400  	objectMap := make(map[string]any)
 12401  	populate(objectMap, "nextLink", e.NextLink)
 12402  	populate(objectMap, "value", e.Value)
 12403  	return json.Marshal(objectMap)
 12404  }
 12405  
 12406  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCircuitListResult.
 12407  func (e *ExpressRouteCircuitListResult) UnmarshalJSON(data []byte) error {
 12408  	var rawMsg map[string]json.RawMessage
 12409  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 12410  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12411  	}
 12412  	for key, val := range rawMsg {
 12413  		var err error
 12414  		switch key {
 12415  		case "nextLink":
 12416  			err = unpopulate(val, "NextLink", &e.NextLink)
 12417  			delete(rawMsg, key)
 12418  		case "value":
 12419  			err = unpopulate(val, "Value", &e.Value)
 12420  			delete(rawMsg, key)
 12421  		}
 12422  		if err != nil {
 12423  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12424  		}
 12425  	}
 12426  	return nil
 12427  }
 12428  
 12429  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitPeering.
 12430  func (e ExpressRouteCircuitPeering) MarshalJSON() ([]byte, error) {
 12431  	objectMap := make(map[string]any)
 12432  	populate(objectMap, "etag", e.Etag)
 12433  	populate(objectMap, "id", e.ID)
 12434  	populate(objectMap, "name", e.Name)
 12435  	populate(objectMap, "properties", e.Properties)
 12436  	populate(objectMap, "type", e.Type)
 12437  	return json.Marshal(objectMap)
 12438  }
 12439  
 12440  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCircuitPeering.
 12441  func (e *ExpressRouteCircuitPeering) UnmarshalJSON(data []byte) error {
 12442  	var rawMsg map[string]json.RawMessage
 12443  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 12444  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12445  	}
 12446  	for key, val := range rawMsg {
 12447  		var err error
 12448  		switch key {
 12449  		case "etag":
 12450  			err = unpopulate(val, "Etag", &e.Etag)
 12451  			delete(rawMsg, key)
 12452  		case "id":
 12453  			err = unpopulate(val, "ID", &e.ID)
 12454  			delete(rawMsg, key)
 12455  		case "name":
 12456  			err = unpopulate(val, "Name", &e.Name)
 12457  			delete(rawMsg, key)
 12458  		case "properties":
 12459  			err = unpopulate(val, "Properties", &e.Properties)
 12460  			delete(rawMsg, key)
 12461  		case "type":
 12462  			err = unpopulate(val, "Type", &e.Type)
 12463  			delete(rawMsg, key)
 12464  		}
 12465  		if err != nil {
 12466  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12467  		}
 12468  	}
 12469  	return nil
 12470  }
 12471  
 12472  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitPeeringConfig.
 12473  func (e ExpressRouteCircuitPeeringConfig) MarshalJSON() ([]byte, error) {
 12474  	objectMap := make(map[string]any)
 12475  	populate(objectMap, "advertisedCommunities", e.AdvertisedCommunities)
 12476  	populate(objectMap, "advertisedPublicPrefixes", e.AdvertisedPublicPrefixes)
 12477  	populate(objectMap, "advertisedPublicPrefixesState", e.AdvertisedPublicPrefixesState)
 12478  	populate(objectMap, "customerASN", e.CustomerASN)
 12479  	populate(objectMap, "legacyMode", e.LegacyMode)
 12480  	populate(objectMap, "routingRegistryName", e.RoutingRegistryName)
 12481  	return json.Marshal(objectMap)
 12482  }
 12483  
 12484  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCircuitPeeringConfig.
 12485  func (e *ExpressRouteCircuitPeeringConfig) UnmarshalJSON(data []byte) error {
 12486  	var rawMsg map[string]json.RawMessage
 12487  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 12488  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12489  	}
 12490  	for key, val := range rawMsg {
 12491  		var err error
 12492  		switch key {
 12493  		case "advertisedCommunities":
 12494  			err = unpopulate(val, "AdvertisedCommunities", &e.AdvertisedCommunities)
 12495  			delete(rawMsg, key)
 12496  		case "advertisedPublicPrefixes":
 12497  			err = unpopulate(val, "AdvertisedPublicPrefixes", &e.AdvertisedPublicPrefixes)
 12498  			delete(rawMsg, key)
 12499  		case "advertisedPublicPrefixesState":
 12500  			err = unpopulate(val, "AdvertisedPublicPrefixesState", &e.AdvertisedPublicPrefixesState)
 12501  			delete(rawMsg, key)
 12502  		case "customerASN":
 12503  			err = unpopulate(val, "CustomerASN", &e.CustomerASN)
 12504  			delete(rawMsg, key)
 12505  		case "legacyMode":
 12506  			err = unpopulate(val, "LegacyMode", &e.LegacyMode)
 12507  			delete(rawMsg, key)
 12508  		case "routingRegistryName":
 12509  			err = unpopulate(val, "RoutingRegistryName", &e.RoutingRegistryName)
 12510  			delete(rawMsg, key)
 12511  		}
 12512  		if err != nil {
 12513  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12514  		}
 12515  	}
 12516  	return nil
 12517  }
 12518  
 12519  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitPeeringID.
 12520  func (e ExpressRouteCircuitPeeringID) MarshalJSON() ([]byte, error) {
 12521  	objectMap := make(map[string]any)
 12522  	populate(objectMap, "id", e.ID)
 12523  	return json.Marshal(objectMap)
 12524  }
 12525  
 12526  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCircuitPeeringID.
 12527  func (e *ExpressRouteCircuitPeeringID) UnmarshalJSON(data []byte) error {
 12528  	var rawMsg map[string]json.RawMessage
 12529  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 12530  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12531  	}
 12532  	for key, val := range rawMsg {
 12533  		var err error
 12534  		switch key {
 12535  		case "id":
 12536  			err = unpopulate(val, "ID", &e.ID)
 12537  			delete(rawMsg, key)
 12538  		}
 12539  		if err != nil {
 12540  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12541  		}
 12542  	}
 12543  	return nil
 12544  }
 12545  
 12546  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitPeeringListResult.
 12547  func (e ExpressRouteCircuitPeeringListResult) MarshalJSON() ([]byte, error) {
 12548  	objectMap := make(map[string]any)
 12549  	populate(objectMap, "nextLink", e.NextLink)
 12550  	populate(objectMap, "value", e.Value)
 12551  	return json.Marshal(objectMap)
 12552  }
 12553  
 12554  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCircuitPeeringListResult.
 12555  func (e *ExpressRouteCircuitPeeringListResult) UnmarshalJSON(data []byte) error {
 12556  	var rawMsg map[string]json.RawMessage
 12557  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 12558  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12559  	}
 12560  	for key, val := range rawMsg {
 12561  		var err error
 12562  		switch key {
 12563  		case "nextLink":
 12564  			err = unpopulate(val, "NextLink", &e.NextLink)
 12565  			delete(rawMsg, key)
 12566  		case "value":
 12567  			err = unpopulate(val, "Value", &e.Value)
 12568  			delete(rawMsg, key)
 12569  		}
 12570  		if err != nil {
 12571  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12572  		}
 12573  	}
 12574  	return nil
 12575  }
 12576  
 12577  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitPeeringPropertiesFormat.
 12578  func (e ExpressRouteCircuitPeeringPropertiesFormat) MarshalJSON() ([]byte, error) {
 12579  	objectMap := make(map[string]any)
 12580  	populate(objectMap, "azureASN", e.AzureASN)
 12581  	populate(objectMap, "connections", e.Connections)
 12582  	populate(objectMap, "expressRouteConnection", e.ExpressRouteConnection)
 12583  	populate(objectMap, "gatewayManagerEtag", e.GatewayManagerEtag)
 12584  	populate(objectMap, "ipv6PeeringConfig", e.IPv6PeeringConfig)
 12585  	populate(objectMap, "lastModifiedBy", e.LastModifiedBy)
 12586  	populate(objectMap, "microsoftPeeringConfig", e.MicrosoftPeeringConfig)
 12587  	populate(objectMap, "peerASN", e.PeerASN)
 12588  	populate(objectMap, "peeredConnections", e.PeeredConnections)
 12589  	populate(objectMap, "peeringType", e.PeeringType)
 12590  	populate(objectMap, "primaryAzurePort", e.PrimaryAzurePort)
 12591  	populate(objectMap, "primaryPeerAddressPrefix", e.PrimaryPeerAddressPrefix)
 12592  	populate(objectMap, "provisioningState", e.ProvisioningState)
 12593  	populate(objectMap, "routeFilter", e.RouteFilter)
 12594  	populate(objectMap, "secondaryAzurePort", e.SecondaryAzurePort)
 12595  	populate(objectMap, "secondaryPeerAddressPrefix", e.SecondaryPeerAddressPrefix)
 12596  	populate(objectMap, "sharedKey", e.SharedKey)
 12597  	populate(objectMap, "state", e.State)
 12598  	populate(objectMap, "stats", e.Stats)
 12599  	populate(objectMap, "vlanId", e.VlanID)
 12600  	return json.Marshal(objectMap)
 12601  }
 12602  
 12603  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCircuitPeeringPropertiesFormat.
 12604  func (e *ExpressRouteCircuitPeeringPropertiesFormat) UnmarshalJSON(data []byte) error {
 12605  	var rawMsg map[string]json.RawMessage
 12606  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 12607  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12608  	}
 12609  	for key, val := range rawMsg {
 12610  		var err error
 12611  		switch key {
 12612  		case "azureASN":
 12613  			err = unpopulate(val, "AzureASN", &e.AzureASN)
 12614  			delete(rawMsg, key)
 12615  		case "connections":
 12616  			err = unpopulate(val, "Connections", &e.Connections)
 12617  			delete(rawMsg, key)
 12618  		case "expressRouteConnection":
 12619  			err = unpopulate(val, "ExpressRouteConnection", &e.ExpressRouteConnection)
 12620  			delete(rawMsg, key)
 12621  		case "gatewayManagerEtag":
 12622  			err = unpopulate(val, "GatewayManagerEtag", &e.GatewayManagerEtag)
 12623  			delete(rawMsg, key)
 12624  		case "ipv6PeeringConfig":
 12625  			err = unpopulate(val, "IPv6PeeringConfig", &e.IPv6PeeringConfig)
 12626  			delete(rawMsg, key)
 12627  		case "lastModifiedBy":
 12628  			err = unpopulate(val, "LastModifiedBy", &e.LastModifiedBy)
 12629  			delete(rawMsg, key)
 12630  		case "microsoftPeeringConfig":
 12631  			err = unpopulate(val, "MicrosoftPeeringConfig", &e.MicrosoftPeeringConfig)
 12632  			delete(rawMsg, key)
 12633  		case "peerASN":
 12634  			err = unpopulate(val, "PeerASN", &e.PeerASN)
 12635  			delete(rawMsg, key)
 12636  		case "peeredConnections":
 12637  			err = unpopulate(val, "PeeredConnections", &e.PeeredConnections)
 12638  			delete(rawMsg, key)
 12639  		case "peeringType":
 12640  			err = unpopulate(val, "PeeringType", &e.PeeringType)
 12641  			delete(rawMsg, key)
 12642  		case "primaryAzurePort":
 12643  			err = unpopulate(val, "PrimaryAzurePort", &e.PrimaryAzurePort)
 12644  			delete(rawMsg, key)
 12645  		case "primaryPeerAddressPrefix":
 12646  			err = unpopulate(val, "PrimaryPeerAddressPrefix", &e.PrimaryPeerAddressPrefix)
 12647  			delete(rawMsg, key)
 12648  		case "provisioningState":
 12649  			err = unpopulate(val, "ProvisioningState", &e.ProvisioningState)
 12650  			delete(rawMsg, key)
 12651  		case "routeFilter":
 12652  			err = unpopulate(val, "RouteFilter", &e.RouteFilter)
 12653  			delete(rawMsg, key)
 12654  		case "secondaryAzurePort":
 12655  			err = unpopulate(val, "SecondaryAzurePort", &e.SecondaryAzurePort)
 12656  			delete(rawMsg, key)
 12657  		case "secondaryPeerAddressPrefix":
 12658  			err = unpopulate(val, "SecondaryPeerAddressPrefix", &e.SecondaryPeerAddressPrefix)
 12659  			delete(rawMsg, key)
 12660  		case "sharedKey":
 12661  			err = unpopulate(val, "SharedKey", &e.SharedKey)
 12662  			delete(rawMsg, key)
 12663  		case "state":
 12664  			err = unpopulate(val, "State", &e.State)
 12665  			delete(rawMsg, key)
 12666  		case "stats":
 12667  			err = unpopulate(val, "Stats", &e.Stats)
 12668  			delete(rawMsg, key)
 12669  		case "vlanId":
 12670  			err = unpopulate(val, "VlanID", &e.VlanID)
 12671  			delete(rawMsg, key)
 12672  		}
 12673  		if err != nil {
 12674  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12675  		}
 12676  	}
 12677  	return nil
 12678  }
 12679  
 12680  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitPropertiesFormat.
 12681  func (e ExpressRouteCircuitPropertiesFormat) MarshalJSON() ([]byte, error) {
 12682  	objectMap := make(map[string]any)
 12683  	populate(objectMap, "allowClassicOperations", e.AllowClassicOperations)
 12684  	populate(objectMap, "authorizationKey", e.AuthorizationKey)
 12685  	populate(objectMap, "authorizationStatus", e.AuthorizationStatus)
 12686  	populate(objectMap, "authorizations", e.Authorizations)
 12687  	populate(objectMap, "bandwidthInGbps", e.BandwidthInGbps)
 12688  	populate(objectMap, "circuitProvisioningState", e.CircuitProvisioningState)
 12689  	populate(objectMap, "enableDirectPortRateLimit", e.EnableDirectPortRateLimit)
 12690  	populate(objectMap, "expressRoutePort", e.ExpressRoutePort)
 12691  	populate(objectMap, "gatewayManagerEtag", e.GatewayManagerEtag)
 12692  	populate(objectMap, "globalReachEnabled", e.GlobalReachEnabled)
 12693  	populate(objectMap, "peerings", e.Peerings)
 12694  	populate(objectMap, "provisioningState", e.ProvisioningState)
 12695  	populate(objectMap, "serviceKey", e.ServiceKey)
 12696  	populate(objectMap, "serviceProviderNotes", e.ServiceProviderNotes)
 12697  	populate(objectMap, "serviceProviderProperties", e.ServiceProviderProperties)
 12698  	populate(objectMap, "serviceProviderProvisioningState", e.ServiceProviderProvisioningState)
 12699  	populate(objectMap, "stag", e.Stag)
 12700  	return json.Marshal(objectMap)
 12701  }
 12702  
 12703  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCircuitPropertiesFormat.
 12704  func (e *ExpressRouteCircuitPropertiesFormat) UnmarshalJSON(data []byte) error {
 12705  	var rawMsg map[string]json.RawMessage
 12706  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 12707  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12708  	}
 12709  	for key, val := range rawMsg {
 12710  		var err error
 12711  		switch key {
 12712  		case "allowClassicOperations":
 12713  			err = unpopulate(val, "AllowClassicOperations", &e.AllowClassicOperations)
 12714  			delete(rawMsg, key)
 12715  		case "authorizationKey":
 12716  			err = unpopulate(val, "AuthorizationKey", &e.AuthorizationKey)
 12717  			delete(rawMsg, key)
 12718  		case "authorizationStatus":
 12719  			err = unpopulate(val, "AuthorizationStatus", &e.AuthorizationStatus)
 12720  			delete(rawMsg, key)
 12721  		case "authorizations":
 12722  			err = unpopulate(val, "Authorizations", &e.Authorizations)
 12723  			delete(rawMsg, key)
 12724  		case "bandwidthInGbps":
 12725  			err = unpopulate(val, "BandwidthInGbps", &e.BandwidthInGbps)
 12726  			delete(rawMsg, key)
 12727  		case "circuitProvisioningState":
 12728  			err = unpopulate(val, "CircuitProvisioningState", &e.CircuitProvisioningState)
 12729  			delete(rawMsg, key)
 12730  		case "enableDirectPortRateLimit":
 12731  			err = unpopulate(val, "EnableDirectPortRateLimit", &e.EnableDirectPortRateLimit)
 12732  			delete(rawMsg, key)
 12733  		case "expressRoutePort":
 12734  			err = unpopulate(val, "ExpressRoutePort", &e.ExpressRoutePort)
 12735  			delete(rawMsg, key)
 12736  		case "gatewayManagerEtag":
 12737  			err = unpopulate(val, "GatewayManagerEtag", &e.GatewayManagerEtag)
 12738  			delete(rawMsg, key)
 12739  		case "globalReachEnabled":
 12740  			err = unpopulate(val, "GlobalReachEnabled", &e.GlobalReachEnabled)
 12741  			delete(rawMsg, key)
 12742  		case "peerings":
 12743  			err = unpopulate(val, "Peerings", &e.Peerings)
 12744  			delete(rawMsg, key)
 12745  		case "provisioningState":
 12746  			err = unpopulate(val, "ProvisioningState", &e.ProvisioningState)
 12747  			delete(rawMsg, key)
 12748  		case "serviceKey":
 12749  			err = unpopulate(val, "ServiceKey", &e.ServiceKey)
 12750  			delete(rawMsg, key)
 12751  		case "serviceProviderNotes":
 12752  			err = unpopulate(val, "ServiceProviderNotes", &e.ServiceProviderNotes)
 12753  			delete(rawMsg, key)
 12754  		case "serviceProviderProperties":
 12755  			err = unpopulate(val, "ServiceProviderProperties", &e.ServiceProviderProperties)
 12756  			delete(rawMsg, key)
 12757  		case "serviceProviderProvisioningState":
 12758  			err = unpopulate(val, "ServiceProviderProvisioningState", &e.ServiceProviderProvisioningState)
 12759  			delete(rawMsg, key)
 12760  		case "stag":
 12761  			err = unpopulate(val, "Stag", &e.Stag)
 12762  			delete(rawMsg, key)
 12763  		}
 12764  		if err != nil {
 12765  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12766  		}
 12767  	}
 12768  	return nil
 12769  }
 12770  
 12771  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitReference.
 12772  func (e ExpressRouteCircuitReference) MarshalJSON() ([]byte, error) {
 12773  	objectMap := make(map[string]any)
 12774  	populate(objectMap, "id", e.ID)
 12775  	return json.Marshal(objectMap)
 12776  }
 12777  
 12778  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCircuitReference.
 12779  func (e *ExpressRouteCircuitReference) UnmarshalJSON(data []byte) error {
 12780  	var rawMsg map[string]json.RawMessage
 12781  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 12782  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12783  	}
 12784  	for key, val := range rawMsg {
 12785  		var err error
 12786  		switch key {
 12787  		case "id":
 12788  			err = unpopulate(val, "ID", &e.ID)
 12789  			delete(rawMsg, key)
 12790  		}
 12791  		if err != nil {
 12792  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12793  		}
 12794  	}
 12795  	return nil
 12796  }
 12797  
 12798  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitRoutesTable.
 12799  func (e ExpressRouteCircuitRoutesTable) MarshalJSON() ([]byte, error) {
 12800  	objectMap := make(map[string]any)
 12801  	populate(objectMap, "locPrf", e.LocPrf)
 12802  	populate(objectMap, "network", e.Network)
 12803  	populate(objectMap, "nextHop", e.NextHop)
 12804  	populate(objectMap, "path", e.Path)
 12805  	populate(objectMap, "weight", e.Weight)
 12806  	return json.Marshal(objectMap)
 12807  }
 12808  
 12809  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCircuitRoutesTable.
 12810  func (e *ExpressRouteCircuitRoutesTable) UnmarshalJSON(data []byte) error {
 12811  	var rawMsg map[string]json.RawMessage
 12812  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 12813  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12814  	}
 12815  	for key, val := range rawMsg {
 12816  		var err error
 12817  		switch key {
 12818  		case "locPrf":
 12819  			err = unpopulate(val, "LocPrf", &e.LocPrf)
 12820  			delete(rawMsg, key)
 12821  		case "network":
 12822  			err = unpopulate(val, "Network", &e.Network)
 12823  			delete(rawMsg, key)
 12824  		case "nextHop":
 12825  			err = unpopulate(val, "NextHop", &e.NextHop)
 12826  			delete(rawMsg, key)
 12827  		case "path":
 12828  			err = unpopulate(val, "Path", &e.Path)
 12829  			delete(rawMsg, key)
 12830  		case "weight":
 12831  			err = unpopulate(val, "Weight", &e.Weight)
 12832  			delete(rawMsg, key)
 12833  		}
 12834  		if err != nil {
 12835  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12836  		}
 12837  	}
 12838  	return nil
 12839  }
 12840  
 12841  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitRoutesTableSummary.
 12842  func (e ExpressRouteCircuitRoutesTableSummary) MarshalJSON() ([]byte, error) {
 12843  	objectMap := make(map[string]any)
 12844  	populate(objectMap, "as", e.As)
 12845  	populate(objectMap, "neighbor", e.Neighbor)
 12846  	populate(objectMap, "statePfxRcd", e.StatePfxRcd)
 12847  	populate(objectMap, "upDown", e.UpDown)
 12848  	populate(objectMap, "v", e.V)
 12849  	return json.Marshal(objectMap)
 12850  }
 12851  
 12852  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCircuitRoutesTableSummary.
 12853  func (e *ExpressRouteCircuitRoutesTableSummary) UnmarshalJSON(data []byte) error {
 12854  	var rawMsg map[string]json.RawMessage
 12855  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 12856  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12857  	}
 12858  	for key, val := range rawMsg {
 12859  		var err error
 12860  		switch key {
 12861  		case "as":
 12862  			err = unpopulate(val, "As", &e.As)
 12863  			delete(rawMsg, key)
 12864  		case "neighbor":
 12865  			err = unpopulate(val, "Neighbor", &e.Neighbor)
 12866  			delete(rawMsg, key)
 12867  		case "statePfxRcd":
 12868  			err = unpopulate(val, "StatePfxRcd", &e.StatePfxRcd)
 12869  			delete(rawMsg, key)
 12870  		case "upDown":
 12871  			err = unpopulate(val, "UpDown", &e.UpDown)
 12872  			delete(rawMsg, key)
 12873  		case "v":
 12874  			err = unpopulate(val, "V", &e.V)
 12875  			delete(rawMsg, key)
 12876  		}
 12877  		if err != nil {
 12878  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12879  		}
 12880  	}
 12881  	return nil
 12882  }
 12883  
 12884  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitSKU.
 12885  func (e ExpressRouteCircuitSKU) MarshalJSON() ([]byte, error) {
 12886  	objectMap := make(map[string]any)
 12887  	populate(objectMap, "family", e.Family)
 12888  	populate(objectMap, "name", e.Name)
 12889  	populate(objectMap, "tier", e.Tier)
 12890  	return json.Marshal(objectMap)
 12891  }
 12892  
 12893  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCircuitSKU.
 12894  func (e *ExpressRouteCircuitSKU) UnmarshalJSON(data []byte) error {
 12895  	var rawMsg map[string]json.RawMessage
 12896  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 12897  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12898  	}
 12899  	for key, val := range rawMsg {
 12900  		var err error
 12901  		switch key {
 12902  		case "family":
 12903  			err = unpopulate(val, "Family", &e.Family)
 12904  			delete(rawMsg, key)
 12905  		case "name":
 12906  			err = unpopulate(val, "Name", &e.Name)
 12907  			delete(rawMsg, key)
 12908  		case "tier":
 12909  			err = unpopulate(val, "Tier", &e.Tier)
 12910  			delete(rawMsg, key)
 12911  		}
 12912  		if err != nil {
 12913  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12914  		}
 12915  	}
 12916  	return nil
 12917  }
 12918  
 12919  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitServiceProviderProperties.
 12920  func (e ExpressRouteCircuitServiceProviderProperties) MarshalJSON() ([]byte, error) {
 12921  	objectMap := make(map[string]any)
 12922  	populate(objectMap, "bandwidthInMbps", e.BandwidthInMbps)
 12923  	populate(objectMap, "peeringLocation", e.PeeringLocation)
 12924  	populate(objectMap, "serviceProviderName", e.ServiceProviderName)
 12925  	return json.Marshal(objectMap)
 12926  }
 12927  
 12928  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCircuitServiceProviderProperties.
 12929  func (e *ExpressRouteCircuitServiceProviderProperties) UnmarshalJSON(data []byte) error {
 12930  	var rawMsg map[string]json.RawMessage
 12931  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 12932  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12933  	}
 12934  	for key, val := range rawMsg {
 12935  		var err error
 12936  		switch key {
 12937  		case "bandwidthInMbps":
 12938  			err = unpopulate(val, "BandwidthInMbps", &e.BandwidthInMbps)
 12939  			delete(rawMsg, key)
 12940  		case "peeringLocation":
 12941  			err = unpopulate(val, "PeeringLocation", &e.PeeringLocation)
 12942  			delete(rawMsg, key)
 12943  		case "serviceProviderName":
 12944  			err = unpopulate(val, "ServiceProviderName", &e.ServiceProviderName)
 12945  			delete(rawMsg, key)
 12946  		}
 12947  		if err != nil {
 12948  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12949  		}
 12950  	}
 12951  	return nil
 12952  }
 12953  
 12954  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitStats.
 12955  func (e ExpressRouteCircuitStats) MarshalJSON() ([]byte, error) {
 12956  	objectMap := make(map[string]any)
 12957  	populate(objectMap, "primarybytesIn", e.PrimarybytesIn)
 12958  	populate(objectMap, "primarybytesOut", e.PrimarybytesOut)
 12959  	populate(objectMap, "secondarybytesIn", e.SecondarybytesIn)
 12960  	populate(objectMap, "secondarybytesOut", e.SecondarybytesOut)
 12961  	return json.Marshal(objectMap)
 12962  }
 12963  
 12964  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCircuitStats.
 12965  func (e *ExpressRouteCircuitStats) UnmarshalJSON(data []byte) error {
 12966  	var rawMsg map[string]json.RawMessage
 12967  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 12968  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12969  	}
 12970  	for key, val := range rawMsg {
 12971  		var err error
 12972  		switch key {
 12973  		case "primarybytesIn":
 12974  			err = unpopulate(val, "PrimarybytesIn", &e.PrimarybytesIn)
 12975  			delete(rawMsg, key)
 12976  		case "primarybytesOut":
 12977  			err = unpopulate(val, "PrimarybytesOut", &e.PrimarybytesOut)
 12978  			delete(rawMsg, key)
 12979  		case "secondarybytesIn":
 12980  			err = unpopulate(val, "SecondarybytesIn", &e.SecondarybytesIn)
 12981  			delete(rawMsg, key)
 12982  		case "secondarybytesOut":
 12983  			err = unpopulate(val, "SecondarybytesOut", &e.SecondarybytesOut)
 12984  			delete(rawMsg, key)
 12985  		}
 12986  		if err != nil {
 12987  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 12988  		}
 12989  	}
 12990  	return nil
 12991  }
 12992  
 12993  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitsArpTableListResult.
 12994  func (e ExpressRouteCircuitsArpTableListResult) MarshalJSON() ([]byte, error) {
 12995  	objectMap := make(map[string]any)
 12996  	populate(objectMap, "nextLink", e.NextLink)
 12997  	populate(objectMap, "value", e.Value)
 12998  	return json.Marshal(objectMap)
 12999  }
 13000  
 13001  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCircuitsArpTableListResult.
 13002  func (e *ExpressRouteCircuitsArpTableListResult) UnmarshalJSON(data []byte) error {
 13003  	var rawMsg map[string]json.RawMessage
 13004  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 13005  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13006  	}
 13007  	for key, val := range rawMsg {
 13008  		var err error
 13009  		switch key {
 13010  		case "nextLink":
 13011  			err = unpopulate(val, "NextLink", &e.NextLink)
 13012  			delete(rawMsg, key)
 13013  		case "value":
 13014  			err = unpopulate(val, "Value", &e.Value)
 13015  			delete(rawMsg, key)
 13016  		}
 13017  		if err != nil {
 13018  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13019  		}
 13020  	}
 13021  	return nil
 13022  }
 13023  
 13024  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitsRoutesTableListResult.
 13025  func (e ExpressRouteCircuitsRoutesTableListResult) MarshalJSON() ([]byte, error) {
 13026  	objectMap := make(map[string]any)
 13027  	populate(objectMap, "nextLink", e.NextLink)
 13028  	populate(objectMap, "value", e.Value)
 13029  	return json.Marshal(objectMap)
 13030  }
 13031  
 13032  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCircuitsRoutesTableListResult.
 13033  func (e *ExpressRouteCircuitsRoutesTableListResult) UnmarshalJSON(data []byte) error {
 13034  	var rawMsg map[string]json.RawMessage
 13035  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 13036  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13037  	}
 13038  	for key, val := range rawMsg {
 13039  		var err error
 13040  		switch key {
 13041  		case "nextLink":
 13042  			err = unpopulate(val, "NextLink", &e.NextLink)
 13043  			delete(rawMsg, key)
 13044  		case "value":
 13045  			err = unpopulate(val, "Value", &e.Value)
 13046  			delete(rawMsg, key)
 13047  		}
 13048  		if err != nil {
 13049  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13050  		}
 13051  	}
 13052  	return nil
 13053  }
 13054  
 13055  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitsRoutesTableSummaryListResult.
 13056  func (e ExpressRouteCircuitsRoutesTableSummaryListResult) MarshalJSON() ([]byte, error) {
 13057  	objectMap := make(map[string]any)
 13058  	populate(objectMap, "nextLink", e.NextLink)
 13059  	populate(objectMap, "value", e.Value)
 13060  	return json.Marshal(objectMap)
 13061  }
 13062  
 13063  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCircuitsRoutesTableSummaryListResult.
 13064  func (e *ExpressRouteCircuitsRoutesTableSummaryListResult) UnmarshalJSON(data []byte) error {
 13065  	var rawMsg map[string]json.RawMessage
 13066  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 13067  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13068  	}
 13069  	for key, val := range rawMsg {
 13070  		var err error
 13071  		switch key {
 13072  		case "nextLink":
 13073  			err = unpopulate(val, "NextLink", &e.NextLink)
 13074  			delete(rawMsg, key)
 13075  		case "value":
 13076  			err = unpopulate(val, "Value", &e.Value)
 13077  			delete(rawMsg, key)
 13078  		}
 13079  		if err != nil {
 13080  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13081  		}
 13082  	}
 13083  	return nil
 13084  }
 13085  
 13086  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteConnection.
 13087  func (e ExpressRouteConnection) MarshalJSON() ([]byte, error) {
 13088  	objectMap := make(map[string]any)
 13089  	populate(objectMap, "id", e.ID)
 13090  	populate(objectMap, "name", e.Name)
 13091  	populate(objectMap, "properties", e.Properties)
 13092  	return json.Marshal(objectMap)
 13093  }
 13094  
 13095  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteConnection.
 13096  func (e *ExpressRouteConnection) UnmarshalJSON(data []byte) error {
 13097  	var rawMsg map[string]json.RawMessage
 13098  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 13099  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13100  	}
 13101  	for key, val := range rawMsg {
 13102  		var err error
 13103  		switch key {
 13104  		case "id":
 13105  			err = unpopulate(val, "ID", &e.ID)
 13106  			delete(rawMsg, key)
 13107  		case "name":
 13108  			err = unpopulate(val, "Name", &e.Name)
 13109  			delete(rawMsg, key)
 13110  		case "properties":
 13111  			err = unpopulate(val, "Properties", &e.Properties)
 13112  			delete(rawMsg, key)
 13113  		}
 13114  		if err != nil {
 13115  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13116  		}
 13117  	}
 13118  	return nil
 13119  }
 13120  
 13121  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteConnectionID.
 13122  func (e ExpressRouteConnectionID) MarshalJSON() ([]byte, error) {
 13123  	objectMap := make(map[string]any)
 13124  	populate(objectMap, "id", e.ID)
 13125  	return json.Marshal(objectMap)
 13126  }
 13127  
 13128  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteConnectionID.
 13129  func (e *ExpressRouteConnectionID) UnmarshalJSON(data []byte) error {
 13130  	var rawMsg map[string]json.RawMessage
 13131  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 13132  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13133  	}
 13134  	for key, val := range rawMsg {
 13135  		var err error
 13136  		switch key {
 13137  		case "id":
 13138  			err = unpopulate(val, "ID", &e.ID)
 13139  			delete(rawMsg, key)
 13140  		}
 13141  		if err != nil {
 13142  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13143  		}
 13144  	}
 13145  	return nil
 13146  }
 13147  
 13148  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteConnectionList.
 13149  func (e ExpressRouteConnectionList) MarshalJSON() ([]byte, error) {
 13150  	objectMap := make(map[string]any)
 13151  	populate(objectMap, "value", e.Value)
 13152  	return json.Marshal(objectMap)
 13153  }
 13154  
 13155  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteConnectionList.
 13156  func (e *ExpressRouteConnectionList) UnmarshalJSON(data []byte) error {
 13157  	var rawMsg map[string]json.RawMessage
 13158  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 13159  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13160  	}
 13161  	for key, val := range rawMsg {
 13162  		var err error
 13163  		switch key {
 13164  		case "value":
 13165  			err = unpopulate(val, "Value", &e.Value)
 13166  			delete(rawMsg, key)
 13167  		}
 13168  		if err != nil {
 13169  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13170  		}
 13171  	}
 13172  	return nil
 13173  }
 13174  
 13175  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteConnectionProperties.
 13176  func (e ExpressRouteConnectionProperties) MarshalJSON() ([]byte, error) {
 13177  	objectMap := make(map[string]any)
 13178  	populate(objectMap, "authorizationKey", e.AuthorizationKey)
 13179  	populate(objectMap, "enableInternetSecurity", e.EnableInternetSecurity)
 13180  	populate(objectMap, "enablePrivateLinkFastPath", e.EnablePrivateLinkFastPath)
 13181  	populate(objectMap, "expressRouteCircuitPeering", e.ExpressRouteCircuitPeering)
 13182  	populate(objectMap, "expressRouteGatewayBypass", e.ExpressRouteGatewayBypass)
 13183  	populate(objectMap, "provisioningState", e.ProvisioningState)
 13184  	populate(objectMap, "routingConfiguration", e.RoutingConfiguration)
 13185  	populate(objectMap, "routingWeight", e.RoutingWeight)
 13186  	return json.Marshal(objectMap)
 13187  }
 13188  
 13189  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteConnectionProperties.
 13190  func (e *ExpressRouteConnectionProperties) UnmarshalJSON(data []byte) error {
 13191  	var rawMsg map[string]json.RawMessage
 13192  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 13193  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13194  	}
 13195  	for key, val := range rawMsg {
 13196  		var err error
 13197  		switch key {
 13198  		case "authorizationKey":
 13199  			err = unpopulate(val, "AuthorizationKey", &e.AuthorizationKey)
 13200  			delete(rawMsg, key)
 13201  		case "enableInternetSecurity":
 13202  			err = unpopulate(val, "EnableInternetSecurity", &e.EnableInternetSecurity)
 13203  			delete(rawMsg, key)
 13204  		case "enablePrivateLinkFastPath":
 13205  			err = unpopulate(val, "EnablePrivateLinkFastPath", &e.EnablePrivateLinkFastPath)
 13206  			delete(rawMsg, key)
 13207  		case "expressRouteCircuitPeering":
 13208  			err = unpopulate(val, "ExpressRouteCircuitPeering", &e.ExpressRouteCircuitPeering)
 13209  			delete(rawMsg, key)
 13210  		case "expressRouteGatewayBypass":
 13211  			err = unpopulate(val, "ExpressRouteGatewayBypass", &e.ExpressRouteGatewayBypass)
 13212  			delete(rawMsg, key)
 13213  		case "provisioningState":
 13214  			err = unpopulate(val, "ProvisioningState", &e.ProvisioningState)
 13215  			delete(rawMsg, key)
 13216  		case "routingConfiguration":
 13217  			err = unpopulate(val, "RoutingConfiguration", &e.RoutingConfiguration)
 13218  			delete(rawMsg, key)
 13219  		case "routingWeight":
 13220  			err = unpopulate(val, "RoutingWeight", &e.RoutingWeight)
 13221  			delete(rawMsg, key)
 13222  		}
 13223  		if err != nil {
 13224  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13225  		}
 13226  	}
 13227  	return nil
 13228  }
 13229  
 13230  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCrossConnection.
 13231  func (e ExpressRouteCrossConnection) MarshalJSON() ([]byte, error) {
 13232  	objectMap := make(map[string]any)
 13233  	populate(objectMap, "etag", e.Etag)
 13234  	populate(objectMap, "id", e.ID)
 13235  	populate(objectMap, "location", e.Location)
 13236  	populate(objectMap, "name", e.Name)
 13237  	populate(objectMap, "properties", e.Properties)
 13238  	populate(objectMap, "tags", e.Tags)
 13239  	populate(objectMap, "type", e.Type)
 13240  	return json.Marshal(objectMap)
 13241  }
 13242  
 13243  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCrossConnection.
 13244  func (e *ExpressRouteCrossConnection) UnmarshalJSON(data []byte) error {
 13245  	var rawMsg map[string]json.RawMessage
 13246  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 13247  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13248  	}
 13249  	for key, val := range rawMsg {
 13250  		var err error
 13251  		switch key {
 13252  		case "etag":
 13253  			err = unpopulate(val, "Etag", &e.Etag)
 13254  			delete(rawMsg, key)
 13255  		case "id":
 13256  			err = unpopulate(val, "ID", &e.ID)
 13257  			delete(rawMsg, key)
 13258  		case "location":
 13259  			err = unpopulate(val, "Location", &e.Location)
 13260  			delete(rawMsg, key)
 13261  		case "name":
 13262  			err = unpopulate(val, "Name", &e.Name)
 13263  			delete(rawMsg, key)
 13264  		case "properties":
 13265  			err = unpopulate(val, "Properties", &e.Properties)
 13266  			delete(rawMsg, key)
 13267  		case "tags":
 13268  			err = unpopulate(val, "Tags", &e.Tags)
 13269  			delete(rawMsg, key)
 13270  		case "type":
 13271  			err = unpopulate(val, "Type", &e.Type)
 13272  			delete(rawMsg, key)
 13273  		}
 13274  		if err != nil {
 13275  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13276  		}
 13277  	}
 13278  	return nil
 13279  }
 13280  
 13281  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCrossConnectionListResult.
 13282  func (e ExpressRouteCrossConnectionListResult) MarshalJSON() ([]byte, error) {
 13283  	objectMap := make(map[string]any)
 13284  	populate(objectMap, "nextLink", e.NextLink)
 13285  	populate(objectMap, "value", e.Value)
 13286  	return json.Marshal(objectMap)
 13287  }
 13288  
 13289  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCrossConnectionListResult.
 13290  func (e *ExpressRouteCrossConnectionListResult) UnmarshalJSON(data []byte) error {
 13291  	var rawMsg map[string]json.RawMessage
 13292  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 13293  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13294  	}
 13295  	for key, val := range rawMsg {
 13296  		var err error
 13297  		switch key {
 13298  		case "nextLink":
 13299  			err = unpopulate(val, "NextLink", &e.NextLink)
 13300  			delete(rawMsg, key)
 13301  		case "value":
 13302  			err = unpopulate(val, "Value", &e.Value)
 13303  			delete(rawMsg, key)
 13304  		}
 13305  		if err != nil {
 13306  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13307  		}
 13308  	}
 13309  	return nil
 13310  }
 13311  
 13312  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCrossConnectionPeering.
 13313  func (e ExpressRouteCrossConnectionPeering) MarshalJSON() ([]byte, error) {
 13314  	objectMap := make(map[string]any)
 13315  	populate(objectMap, "etag", e.Etag)
 13316  	populate(objectMap, "id", e.ID)
 13317  	populate(objectMap, "name", e.Name)
 13318  	populate(objectMap, "properties", e.Properties)
 13319  	return json.Marshal(objectMap)
 13320  }
 13321  
 13322  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCrossConnectionPeering.
 13323  func (e *ExpressRouteCrossConnectionPeering) UnmarshalJSON(data []byte) error {
 13324  	var rawMsg map[string]json.RawMessage
 13325  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 13326  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13327  	}
 13328  	for key, val := range rawMsg {
 13329  		var err error
 13330  		switch key {
 13331  		case "etag":
 13332  			err = unpopulate(val, "Etag", &e.Etag)
 13333  			delete(rawMsg, key)
 13334  		case "id":
 13335  			err = unpopulate(val, "ID", &e.ID)
 13336  			delete(rawMsg, key)
 13337  		case "name":
 13338  			err = unpopulate(val, "Name", &e.Name)
 13339  			delete(rawMsg, key)
 13340  		case "properties":
 13341  			err = unpopulate(val, "Properties", &e.Properties)
 13342  			delete(rawMsg, key)
 13343  		}
 13344  		if err != nil {
 13345  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13346  		}
 13347  	}
 13348  	return nil
 13349  }
 13350  
 13351  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCrossConnectionPeeringList.
 13352  func (e ExpressRouteCrossConnectionPeeringList) MarshalJSON() ([]byte, error) {
 13353  	objectMap := make(map[string]any)
 13354  	populate(objectMap, "nextLink", e.NextLink)
 13355  	populate(objectMap, "value", e.Value)
 13356  	return json.Marshal(objectMap)
 13357  }
 13358  
 13359  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCrossConnectionPeeringList.
 13360  func (e *ExpressRouteCrossConnectionPeeringList) UnmarshalJSON(data []byte) error {
 13361  	var rawMsg map[string]json.RawMessage
 13362  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 13363  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13364  	}
 13365  	for key, val := range rawMsg {
 13366  		var err error
 13367  		switch key {
 13368  		case "nextLink":
 13369  			err = unpopulate(val, "NextLink", &e.NextLink)
 13370  			delete(rawMsg, key)
 13371  		case "value":
 13372  			err = unpopulate(val, "Value", &e.Value)
 13373  			delete(rawMsg, key)
 13374  		}
 13375  		if err != nil {
 13376  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13377  		}
 13378  	}
 13379  	return nil
 13380  }
 13381  
 13382  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCrossConnectionPeeringProperties.
 13383  func (e ExpressRouteCrossConnectionPeeringProperties) MarshalJSON() ([]byte, error) {
 13384  	objectMap := make(map[string]any)
 13385  	populate(objectMap, "azureASN", e.AzureASN)
 13386  	populate(objectMap, "gatewayManagerEtag", e.GatewayManagerEtag)
 13387  	populate(objectMap, "ipv6PeeringConfig", e.IPv6PeeringConfig)
 13388  	populate(objectMap, "lastModifiedBy", e.LastModifiedBy)
 13389  	populate(objectMap, "microsoftPeeringConfig", e.MicrosoftPeeringConfig)
 13390  	populate(objectMap, "peerASN", e.PeerASN)
 13391  	populate(objectMap, "peeringType", e.PeeringType)
 13392  	populate(objectMap, "primaryAzurePort", e.PrimaryAzurePort)
 13393  	populate(objectMap, "primaryPeerAddressPrefix", e.PrimaryPeerAddressPrefix)
 13394  	populate(objectMap, "provisioningState", e.ProvisioningState)
 13395  	populate(objectMap, "secondaryAzurePort", e.SecondaryAzurePort)
 13396  	populate(objectMap, "secondaryPeerAddressPrefix", e.SecondaryPeerAddressPrefix)
 13397  	populate(objectMap, "sharedKey", e.SharedKey)
 13398  	populate(objectMap, "state", e.State)
 13399  	populate(objectMap, "vlanId", e.VlanID)
 13400  	return json.Marshal(objectMap)
 13401  }
 13402  
 13403  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCrossConnectionPeeringProperties.
 13404  func (e *ExpressRouteCrossConnectionPeeringProperties) UnmarshalJSON(data []byte) error {
 13405  	var rawMsg map[string]json.RawMessage
 13406  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 13407  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13408  	}
 13409  	for key, val := range rawMsg {
 13410  		var err error
 13411  		switch key {
 13412  		case "azureASN":
 13413  			err = unpopulate(val, "AzureASN", &e.AzureASN)
 13414  			delete(rawMsg, key)
 13415  		case "gatewayManagerEtag":
 13416  			err = unpopulate(val, "GatewayManagerEtag", &e.GatewayManagerEtag)
 13417  			delete(rawMsg, key)
 13418  		case "ipv6PeeringConfig":
 13419  			err = unpopulate(val, "IPv6PeeringConfig", &e.IPv6PeeringConfig)
 13420  			delete(rawMsg, key)
 13421  		case "lastModifiedBy":
 13422  			err = unpopulate(val, "LastModifiedBy", &e.LastModifiedBy)
 13423  			delete(rawMsg, key)
 13424  		case "microsoftPeeringConfig":
 13425  			err = unpopulate(val, "MicrosoftPeeringConfig", &e.MicrosoftPeeringConfig)
 13426  			delete(rawMsg, key)
 13427  		case "peerASN":
 13428  			err = unpopulate(val, "PeerASN", &e.PeerASN)
 13429  			delete(rawMsg, key)
 13430  		case "peeringType":
 13431  			err = unpopulate(val, "PeeringType", &e.PeeringType)
 13432  			delete(rawMsg, key)
 13433  		case "primaryAzurePort":
 13434  			err = unpopulate(val, "PrimaryAzurePort", &e.PrimaryAzurePort)
 13435  			delete(rawMsg, key)
 13436  		case "primaryPeerAddressPrefix":
 13437  			err = unpopulate(val, "PrimaryPeerAddressPrefix", &e.PrimaryPeerAddressPrefix)
 13438  			delete(rawMsg, key)
 13439  		case "provisioningState":
 13440  			err = unpopulate(val, "ProvisioningState", &e.ProvisioningState)
 13441  			delete(rawMsg, key)
 13442  		case "secondaryAzurePort":
 13443  			err = unpopulate(val, "SecondaryAzurePort", &e.SecondaryAzurePort)
 13444  			delete(rawMsg, key)
 13445  		case "secondaryPeerAddressPrefix":
 13446  			err = unpopulate(val, "SecondaryPeerAddressPrefix", &e.SecondaryPeerAddressPrefix)
 13447  			delete(rawMsg, key)
 13448  		case "sharedKey":
 13449  			err = unpopulate(val, "SharedKey", &e.SharedKey)
 13450  			delete(rawMsg, key)
 13451  		case "state":
 13452  			err = unpopulate(val, "State", &e.State)
 13453  			delete(rawMsg, key)
 13454  		case "vlanId":
 13455  			err = unpopulate(val, "VlanID", &e.VlanID)
 13456  			delete(rawMsg, key)
 13457  		}
 13458  		if err != nil {
 13459  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13460  		}
 13461  	}
 13462  	return nil
 13463  }
 13464  
 13465  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCrossConnectionProperties.
 13466  func (e ExpressRouteCrossConnectionProperties) MarshalJSON() ([]byte, error) {
 13467  	objectMap := make(map[string]any)
 13468  	populate(objectMap, "bandwidthInMbps", e.BandwidthInMbps)
 13469  	populate(objectMap, "expressRouteCircuit", e.ExpressRouteCircuit)
 13470  	populate(objectMap, "peeringLocation", e.PeeringLocation)
 13471  	populate(objectMap, "peerings", e.Peerings)
 13472  	populate(objectMap, "primaryAzurePort", e.PrimaryAzurePort)
 13473  	populate(objectMap, "provisioningState", e.ProvisioningState)
 13474  	populate(objectMap, "sTag", e.STag)
 13475  	populate(objectMap, "secondaryAzurePort", e.SecondaryAzurePort)
 13476  	populate(objectMap, "serviceProviderNotes", e.ServiceProviderNotes)
 13477  	populate(objectMap, "serviceProviderProvisioningState", e.ServiceProviderProvisioningState)
 13478  	return json.Marshal(objectMap)
 13479  }
 13480  
 13481  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCrossConnectionProperties.
 13482  func (e *ExpressRouteCrossConnectionProperties) UnmarshalJSON(data []byte) error {
 13483  	var rawMsg map[string]json.RawMessage
 13484  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 13485  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13486  	}
 13487  	for key, val := range rawMsg {
 13488  		var err error
 13489  		switch key {
 13490  		case "bandwidthInMbps":
 13491  			err = unpopulate(val, "BandwidthInMbps", &e.BandwidthInMbps)
 13492  			delete(rawMsg, key)
 13493  		case "expressRouteCircuit":
 13494  			err = unpopulate(val, "ExpressRouteCircuit", &e.ExpressRouteCircuit)
 13495  			delete(rawMsg, key)
 13496  		case "peeringLocation":
 13497  			err = unpopulate(val, "PeeringLocation", &e.PeeringLocation)
 13498  			delete(rawMsg, key)
 13499  		case "peerings":
 13500  			err = unpopulate(val, "Peerings", &e.Peerings)
 13501  			delete(rawMsg, key)
 13502  		case "primaryAzurePort":
 13503  			err = unpopulate(val, "PrimaryAzurePort", &e.PrimaryAzurePort)
 13504  			delete(rawMsg, key)
 13505  		case "provisioningState":
 13506  			err = unpopulate(val, "ProvisioningState", &e.ProvisioningState)
 13507  			delete(rawMsg, key)
 13508  		case "sTag":
 13509  			err = unpopulate(val, "STag", &e.STag)
 13510  			delete(rawMsg, key)
 13511  		case "secondaryAzurePort":
 13512  			err = unpopulate(val, "SecondaryAzurePort", &e.SecondaryAzurePort)
 13513  			delete(rawMsg, key)
 13514  		case "serviceProviderNotes":
 13515  			err = unpopulate(val, "ServiceProviderNotes", &e.ServiceProviderNotes)
 13516  			delete(rawMsg, key)
 13517  		case "serviceProviderProvisioningState":
 13518  			err = unpopulate(val, "ServiceProviderProvisioningState", &e.ServiceProviderProvisioningState)
 13519  			delete(rawMsg, key)
 13520  		}
 13521  		if err != nil {
 13522  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13523  		}
 13524  	}
 13525  	return nil
 13526  }
 13527  
 13528  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCrossConnectionRoutesTableSummary.
 13529  func (e ExpressRouteCrossConnectionRoutesTableSummary) MarshalJSON() ([]byte, error) {
 13530  	objectMap := make(map[string]any)
 13531  	populate(objectMap, "asn", e.Asn)
 13532  	populate(objectMap, "neighbor", e.Neighbor)
 13533  	populate(objectMap, "stateOrPrefixesReceived", e.StateOrPrefixesReceived)
 13534  	populate(objectMap, "upDown", e.UpDown)
 13535  	return json.Marshal(objectMap)
 13536  }
 13537  
 13538  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCrossConnectionRoutesTableSummary.
 13539  func (e *ExpressRouteCrossConnectionRoutesTableSummary) UnmarshalJSON(data []byte) error {
 13540  	var rawMsg map[string]json.RawMessage
 13541  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 13542  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13543  	}
 13544  	for key, val := range rawMsg {
 13545  		var err error
 13546  		switch key {
 13547  		case "asn":
 13548  			err = unpopulate(val, "Asn", &e.Asn)
 13549  			delete(rawMsg, key)
 13550  		case "neighbor":
 13551  			err = unpopulate(val, "Neighbor", &e.Neighbor)
 13552  			delete(rawMsg, key)
 13553  		case "stateOrPrefixesReceived":
 13554  			err = unpopulate(val, "StateOrPrefixesReceived", &e.StateOrPrefixesReceived)
 13555  			delete(rawMsg, key)
 13556  		case "upDown":
 13557  			err = unpopulate(val, "UpDown", &e.UpDown)
 13558  			delete(rawMsg, key)
 13559  		}
 13560  		if err != nil {
 13561  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13562  		}
 13563  	}
 13564  	return nil
 13565  }
 13566  
 13567  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteCrossConnectionsRoutesTableSummaryListResult.
 13568  func (e ExpressRouteCrossConnectionsRoutesTableSummaryListResult) MarshalJSON() ([]byte, error) {
 13569  	objectMap := make(map[string]any)
 13570  	populate(objectMap, "nextLink", e.NextLink)
 13571  	populate(objectMap, "value", e.Value)
 13572  	return json.Marshal(objectMap)
 13573  }
 13574  
 13575  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteCrossConnectionsRoutesTableSummaryListResult.
 13576  func (e *ExpressRouteCrossConnectionsRoutesTableSummaryListResult) UnmarshalJSON(data []byte) error {
 13577  	var rawMsg map[string]json.RawMessage
 13578  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 13579  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13580  	}
 13581  	for key, val := range rawMsg {
 13582  		var err error
 13583  		switch key {
 13584  		case "nextLink":
 13585  			err = unpopulate(val, "NextLink", &e.NextLink)
 13586  			delete(rawMsg, key)
 13587  		case "value":
 13588  			err = unpopulate(val, "Value", &e.Value)
 13589  			delete(rawMsg, key)
 13590  		}
 13591  		if err != nil {
 13592  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13593  		}
 13594  	}
 13595  	return nil
 13596  }
 13597  
 13598  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteFailoverCircuitResourceDetails.
 13599  func (e ExpressRouteFailoverCircuitResourceDetails) MarshalJSON() ([]byte, error) {
 13600  	objectMap := make(map[string]any)
 13601  	populate(objectMap, "connectionName", e.ConnectionName)
 13602  	populate(objectMap, "name", e.Name)
 13603  	populate(objectMap, "nrpResourceUri", e.NrpResourceURI)
 13604  	return json.Marshal(objectMap)
 13605  }
 13606  
 13607  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteFailoverCircuitResourceDetails.
 13608  func (e *ExpressRouteFailoverCircuitResourceDetails) UnmarshalJSON(data []byte) error {
 13609  	var rawMsg map[string]json.RawMessage
 13610  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 13611  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13612  	}
 13613  	for key, val := range rawMsg {
 13614  		var err error
 13615  		switch key {
 13616  		case "connectionName":
 13617  			err = unpopulate(val, "ConnectionName", &e.ConnectionName)
 13618  			delete(rawMsg, key)
 13619  		case "name":
 13620  			err = unpopulate(val, "Name", &e.Name)
 13621  			delete(rawMsg, key)
 13622  		case "nrpResourceUri":
 13623  			err = unpopulate(val, "NrpResourceURI", &e.NrpResourceURI)
 13624  			delete(rawMsg, key)
 13625  		}
 13626  		if err != nil {
 13627  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13628  		}
 13629  	}
 13630  	return nil
 13631  }
 13632  
 13633  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteFailoverConnectionResourceDetails.
 13634  func (e ExpressRouteFailoverConnectionResourceDetails) MarshalJSON() ([]byte, error) {
 13635  	objectMap := make(map[string]any)
 13636  	populate(objectMap, "lastUpdatedTime", e.LastUpdatedTime)
 13637  	populate(objectMap, "name", e.Name)
 13638  	populate(objectMap, "nrpResourceUri", e.NrpResourceURI)
 13639  	populate(objectMap, "status", e.Status)
 13640  	return json.Marshal(objectMap)
 13641  }
 13642  
 13643  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteFailoverConnectionResourceDetails.
 13644  func (e *ExpressRouteFailoverConnectionResourceDetails) UnmarshalJSON(data []byte) error {
 13645  	var rawMsg map[string]json.RawMessage
 13646  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 13647  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13648  	}
 13649  	for key, val := range rawMsg {
 13650  		var err error
 13651  		switch key {
 13652  		case "lastUpdatedTime":
 13653  			err = unpopulate(val, "LastUpdatedTime", &e.LastUpdatedTime)
 13654  			delete(rawMsg, key)
 13655  		case "name":
 13656  			err = unpopulate(val, "Name", &e.Name)
 13657  			delete(rawMsg, key)
 13658  		case "nrpResourceUri":
 13659  			err = unpopulate(val, "NrpResourceURI", &e.NrpResourceURI)
 13660  			delete(rawMsg, key)
 13661  		case "status":
 13662  			err = unpopulate(val, "Status", &e.Status)
 13663  			delete(rawMsg, key)
 13664  		}
 13665  		if err != nil {
 13666  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13667  		}
 13668  	}
 13669  	return nil
 13670  }
 13671  
 13672  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteFailoverRedundantRoute.
 13673  func (e ExpressRouteFailoverRedundantRoute) MarshalJSON() ([]byte, error) {
 13674  	objectMap := make(map[string]any)
 13675  	populate(objectMap, "peeringLocations", e.PeeringLocations)
 13676  	populate(objectMap, "routes", e.Routes)
 13677  	return json.Marshal(objectMap)
 13678  }
 13679  
 13680  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteFailoverRedundantRoute.
 13681  func (e *ExpressRouteFailoverRedundantRoute) UnmarshalJSON(data []byte) error {
 13682  	var rawMsg map[string]json.RawMessage
 13683  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 13684  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13685  	}
 13686  	for key, val := range rawMsg {
 13687  		var err error
 13688  		switch key {
 13689  		case "peeringLocations":
 13690  			err = unpopulate(val, "PeeringLocations", &e.PeeringLocations)
 13691  			delete(rawMsg, key)
 13692  		case "routes":
 13693  			err = unpopulate(val, "Routes", &e.Routes)
 13694  			delete(rawMsg, key)
 13695  		}
 13696  		if err != nil {
 13697  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13698  		}
 13699  	}
 13700  	return nil
 13701  }
 13702  
 13703  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteFailoverSingleTestDetails.
 13704  func (e ExpressRouteFailoverSingleTestDetails) MarshalJSON() ([]byte, error) {
 13705  	objectMap := make(map[string]any)
 13706  	populate(objectMap, "endTimeUtc", e.EndTimeUTC)
 13707  	populate(objectMap, "failoverConnectionDetails", e.FailoverConnectionDetails)
 13708  	populate(objectMap, "nonRedundantRoutes", e.NonRedundantRoutes)
 13709  	populate(objectMap, "peeringLocation", e.PeeringLocation)
 13710  	populate(objectMap, "redundantRoutes", e.RedundantRoutes)
 13711  	populate(objectMap, "startTimeUtc", e.StartTimeUTC)
 13712  	populate(objectMap, "status", e.Status)
 13713  	populate(objectMap, "wasSimulationSuccessful", e.WasSimulationSuccessful)
 13714  	return json.Marshal(objectMap)
 13715  }
 13716  
 13717  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteFailoverSingleTestDetails.
 13718  func (e *ExpressRouteFailoverSingleTestDetails) UnmarshalJSON(data []byte) error {
 13719  	var rawMsg map[string]json.RawMessage
 13720  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 13721  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13722  	}
 13723  	for key, val := range rawMsg {
 13724  		var err error
 13725  		switch key {
 13726  		case "endTimeUtc":
 13727  			err = unpopulate(val, "EndTimeUTC", &e.EndTimeUTC)
 13728  			delete(rawMsg, key)
 13729  		case "failoverConnectionDetails":
 13730  			err = unpopulate(val, "FailoverConnectionDetails", &e.FailoverConnectionDetails)
 13731  			delete(rawMsg, key)
 13732  		case "nonRedundantRoutes":
 13733  			err = unpopulate(val, "NonRedundantRoutes", &e.NonRedundantRoutes)
 13734  			delete(rawMsg, key)
 13735  		case "peeringLocation":
 13736  			err = unpopulate(val, "PeeringLocation", &e.PeeringLocation)
 13737  			delete(rawMsg, key)
 13738  		case "redundantRoutes":
 13739  			err = unpopulate(val, "RedundantRoutes", &e.RedundantRoutes)
 13740  			delete(rawMsg, key)
 13741  		case "startTimeUtc":
 13742  			err = unpopulate(val, "StartTimeUTC", &e.StartTimeUTC)
 13743  			delete(rawMsg, key)
 13744  		case "status":
 13745  			err = unpopulate(val, "Status", &e.Status)
 13746  			delete(rawMsg, key)
 13747  		case "wasSimulationSuccessful":
 13748  			err = unpopulate(val, "WasSimulationSuccessful", &e.WasSimulationSuccessful)
 13749  			delete(rawMsg, key)
 13750  		}
 13751  		if err != nil {
 13752  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13753  		}
 13754  	}
 13755  	return nil
 13756  }
 13757  
 13758  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteFailoverStopAPIParameters.
 13759  func (e ExpressRouteFailoverStopAPIParameters) MarshalJSON() ([]byte, error) {
 13760  	objectMap := make(map[string]any)
 13761  	populate(objectMap, "details", e.Details)
 13762  	populate(objectMap, "peeringLocation", e.PeeringLocation)
 13763  	populate(objectMap, "wasSimulationSuccessful", e.WasSimulationSuccessful)
 13764  	return json.Marshal(objectMap)
 13765  }
 13766  
 13767  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteFailoverStopAPIParameters.
 13768  func (e *ExpressRouteFailoverStopAPIParameters) UnmarshalJSON(data []byte) error {
 13769  	var rawMsg map[string]json.RawMessage
 13770  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 13771  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13772  	}
 13773  	for key, val := range rawMsg {
 13774  		var err error
 13775  		switch key {
 13776  		case "details":
 13777  			err = unpopulate(val, "Details", &e.Details)
 13778  			delete(rawMsg, key)
 13779  		case "peeringLocation":
 13780  			err = unpopulate(val, "PeeringLocation", &e.PeeringLocation)
 13781  			delete(rawMsg, key)
 13782  		case "wasSimulationSuccessful":
 13783  			err = unpopulate(val, "WasSimulationSuccessful", &e.WasSimulationSuccessful)
 13784  			delete(rawMsg, key)
 13785  		}
 13786  		if err != nil {
 13787  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13788  		}
 13789  	}
 13790  	return nil
 13791  }
 13792  
 13793  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteFailoverTestDetails.
 13794  func (e ExpressRouteFailoverTestDetails) MarshalJSON() ([]byte, error) {
 13795  	objectMap := make(map[string]any)
 13796  	populate(objectMap, "circuits", e.Circuits)
 13797  	populate(objectMap, "connections", e.Connections)
 13798  	populate(objectMap, "endTime", e.EndTime)
 13799  	populate(objectMap, "issues", e.Issues)
 13800  	populate(objectMap, "peeringLocation", e.PeeringLocation)
 13801  	populate(objectMap, "startTime", e.StartTime)
 13802  	populate(objectMap, "status", e.Status)
 13803  	populate(objectMap, "testGuid", e.TestGUID)
 13804  	populate(objectMap, "testType", e.TestType)
 13805  	return json.Marshal(objectMap)
 13806  }
 13807  
 13808  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteFailoverTestDetails.
 13809  func (e *ExpressRouteFailoverTestDetails) UnmarshalJSON(data []byte) error {
 13810  	var rawMsg map[string]json.RawMessage
 13811  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 13812  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13813  	}
 13814  	for key, val := range rawMsg {
 13815  		var err error
 13816  		switch key {
 13817  		case "circuits":
 13818  			err = unpopulate(val, "Circuits", &e.Circuits)
 13819  			delete(rawMsg, key)
 13820  		case "connections":
 13821  			err = unpopulate(val, "Connections", &e.Connections)
 13822  			delete(rawMsg, key)
 13823  		case "endTime":
 13824  			err = unpopulate(val, "EndTime", &e.EndTime)
 13825  			delete(rawMsg, key)
 13826  		case "issues":
 13827  			err = unpopulate(val, "Issues", &e.Issues)
 13828  			delete(rawMsg, key)
 13829  		case "peeringLocation":
 13830  			err = unpopulate(val, "PeeringLocation", &e.PeeringLocation)
 13831  			delete(rawMsg, key)
 13832  		case "startTime":
 13833  			err = unpopulate(val, "StartTime", &e.StartTime)
 13834  			delete(rawMsg, key)
 13835  		case "status":
 13836  			err = unpopulate(val, "Status", &e.Status)
 13837  			delete(rawMsg, key)
 13838  		case "testGuid":
 13839  			err = unpopulate(val, "TestGUID", &e.TestGUID)
 13840  			delete(rawMsg, key)
 13841  		case "testType":
 13842  			err = unpopulate(val, "TestType", &e.TestType)
 13843  			delete(rawMsg, key)
 13844  		}
 13845  		if err != nil {
 13846  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13847  		}
 13848  	}
 13849  	return nil
 13850  }
 13851  
 13852  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteGateway.
 13853  func (e ExpressRouteGateway) MarshalJSON() ([]byte, error) {
 13854  	objectMap := make(map[string]any)
 13855  	populate(objectMap, "etag", e.Etag)
 13856  	populate(objectMap, "id", e.ID)
 13857  	populate(objectMap, "location", e.Location)
 13858  	populate(objectMap, "name", e.Name)
 13859  	populate(objectMap, "properties", e.Properties)
 13860  	populate(objectMap, "tags", e.Tags)
 13861  	populate(objectMap, "type", e.Type)
 13862  	return json.Marshal(objectMap)
 13863  }
 13864  
 13865  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteGateway.
 13866  func (e *ExpressRouteGateway) UnmarshalJSON(data []byte) error {
 13867  	var rawMsg map[string]json.RawMessage
 13868  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 13869  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13870  	}
 13871  	for key, val := range rawMsg {
 13872  		var err error
 13873  		switch key {
 13874  		case "etag":
 13875  			err = unpopulate(val, "Etag", &e.Etag)
 13876  			delete(rawMsg, key)
 13877  		case "id":
 13878  			err = unpopulate(val, "ID", &e.ID)
 13879  			delete(rawMsg, key)
 13880  		case "location":
 13881  			err = unpopulate(val, "Location", &e.Location)
 13882  			delete(rawMsg, key)
 13883  		case "name":
 13884  			err = unpopulate(val, "Name", &e.Name)
 13885  			delete(rawMsg, key)
 13886  		case "properties":
 13887  			err = unpopulate(val, "Properties", &e.Properties)
 13888  			delete(rawMsg, key)
 13889  		case "tags":
 13890  			err = unpopulate(val, "Tags", &e.Tags)
 13891  			delete(rawMsg, key)
 13892  		case "type":
 13893  			err = unpopulate(val, "Type", &e.Type)
 13894  			delete(rawMsg, key)
 13895  		}
 13896  		if err != nil {
 13897  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13898  		}
 13899  	}
 13900  	return nil
 13901  }
 13902  
 13903  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteGatewayList.
 13904  func (e ExpressRouteGatewayList) MarshalJSON() ([]byte, error) {
 13905  	objectMap := make(map[string]any)
 13906  	populate(objectMap, "value", e.Value)
 13907  	return json.Marshal(objectMap)
 13908  }
 13909  
 13910  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteGatewayList.
 13911  func (e *ExpressRouteGatewayList) UnmarshalJSON(data []byte) error {
 13912  	var rawMsg map[string]json.RawMessage
 13913  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 13914  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13915  	}
 13916  	for key, val := range rawMsg {
 13917  		var err error
 13918  		switch key {
 13919  		case "value":
 13920  			err = unpopulate(val, "Value", &e.Value)
 13921  			delete(rawMsg, key)
 13922  		}
 13923  		if err != nil {
 13924  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13925  		}
 13926  	}
 13927  	return nil
 13928  }
 13929  
 13930  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteGatewayProperties.
 13931  func (e ExpressRouteGatewayProperties) MarshalJSON() ([]byte, error) {
 13932  	objectMap := make(map[string]any)
 13933  	populate(objectMap, "allowNonVirtualWanTraffic", e.AllowNonVirtualWanTraffic)
 13934  	populate(objectMap, "autoScaleConfiguration", e.AutoScaleConfiguration)
 13935  	populate(objectMap, "expressRouteConnections", e.ExpressRouteConnections)
 13936  	populate(objectMap, "provisioningState", e.ProvisioningState)
 13937  	populate(objectMap, "virtualHub", e.VirtualHub)
 13938  	return json.Marshal(objectMap)
 13939  }
 13940  
 13941  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteGatewayProperties.
 13942  func (e *ExpressRouteGatewayProperties) UnmarshalJSON(data []byte) error {
 13943  	var rawMsg map[string]json.RawMessage
 13944  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 13945  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13946  	}
 13947  	for key, val := range rawMsg {
 13948  		var err error
 13949  		switch key {
 13950  		case "allowNonVirtualWanTraffic":
 13951  			err = unpopulate(val, "AllowNonVirtualWanTraffic", &e.AllowNonVirtualWanTraffic)
 13952  			delete(rawMsg, key)
 13953  		case "autoScaleConfiguration":
 13954  			err = unpopulate(val, "AutoScaleConfiguration", &e.AutoScaleConfiguration)
 13955  			delete(rawMsg, key)
 13956  		case "expressRouteConnections":
 13957  			err = unpopulate(val, "ExpressRouteConnections", &e.ExpressRouteConnections)
 13958  			delete(rawMsg, key)
 13959  		case "provisioningState":
 13960  			err = unpopulate(val, "ProvisioningState", &e.ProvisioningState)
 13961  			delete(rawMsg, key)
 13962  		case "virtualHub":
 13963  			err = unpopulate(val, "VirtualHub", &e.VirtualHub)
 13964  			delete(rawMsg, key)
 13965  		}
 13966  		if err != nil {
 13967  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13968  		}
 13969  	}
 13970  	return nil
 13971  }
 13972  
 13973  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteGatewayPropertiesAutoScaleConfiguration.
 13974  func (e ExpressRouteGatewayPropertiesAutoScaleConfiguration) MarshalJSON() ([]byte, error) {
 13975  	objectMap := make(map[string]any)
 13976  	populate(objectMap, "bounds", e.Bounds)
 13977  	return json.Marshal(objectMap)
 13978  }
 13979  
 13980  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteGatewayPropertiesAutoScaleConfiguration.
 13981  func (e *ExpressRouteGatewayPropertiesAutoScaleConfiguration) UnmarshalJSON(data []byte) error {
 13982  	var rawMsg map[string]json.RawMessage
 13983  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 13984  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13985  	}
 13986  	for key, val := range rawMsg {
 13987  		var err error
 13988  		switch key {
 13989  		case "bounds":
 13990  			err = unpopulate(val, "Bounds", &e.Bounds)
 13991  			delete(rawMsg, key)
 13992  		}
 13993  		if err != nil {
 13994  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 13995  		}
 13996  	}
 13997  	return nil
 13998  }
 13999  
 14000  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds.
 14001  func (e ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds) MarshalJSON() ([]byte, error) {
 14002  	objectMap := make(map[string]any)
 14003  	populate(objectMap, "max", e.Max)
 14004  	populate(objectMap, "min", e.Min)
 14005  	return json.Marshal(objectMap)
 14006  }
 14007  
 14008  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds.
 14009  func (e *ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds) UnmarshalJSON(data []byte) error {
 14010  	var rawMsg map[string]json.RawMessage
 14011  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 14012  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14013  	}
 14014  	for key, val := range rawMsg {
 14015  		var err error
 14016  		switch key {
 14017  		case "max":
 14018  			err = unpopulate(val, "Max", &e.Max)
 14019  			delete(rawMsg, key)
 14020  		case "min":
 14021  			err = unpopulate(val, "Min", &e.Min)
 14022  			delete(rawMsg, key)
 14023  		}
 14024  		if err != nil {
 14025  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14026  		}
 14027  	}
 14028  	return nil
 14029  }
 14030  
 14031  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteLink.
 14032  func (e ExpressRouteLink) MarshalJSON() ([]byte, error) {
 14033  	objectMap := make(map[string]any)
 14034  	populate(objectMap, "etag", e.Etag)
 14035  	populate(objectMap, "id", e.ID)
 14036  	populate(objectMap, "name", e.Name)
 14037  	populate(objectMap, "properties", e.Properties)
 14038  	return json.Marshal(objectMap)
 14039  }
 14040  
 14041  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteLink.
 14042  func (e *ExpressRouteLink) UnmarshalJSON(data []byte) error {
 14043  	var rawMsg map[string]json.RawMessage
 14044  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 14045  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14046  	}
 14047  	for key, val := range rawMsg {
 14048  		var err error
 14049  		switch key {
 14050  		case "etag":
 14051  			err = unpopulate(val, "Etag", &e.Etag)
 14052  			delete(rawMsg, key)
 14053  		case "id":
 14054  			err = unpopulate(val, "ID", &e.ID)
 14055  			delete(rawMsg, key)
 14056  		case "name":
 14057  			err = unpopulate(val, "Name", &e.Name)
 14058  			delete(rawMsg, key)
 14059  		case "properties":
 14060  			err = unpopulate(val, "Properties", &e.Properties)
 14061  			delete(rawMsg, key)
 14062  		}
 14063  		if err != nil {
 14064  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14065  		}
 14066  	}
 14067  	return nil
 14068  }
 14069  
 14070  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteLinkListResult.
 14071  func (e ExpressRouteLinkListResult) MarshalJSON() ([]byte, error) {
 14072  	objectMap := make(map[string]any)
 14073  	populate(objectMap, "nextLink", e.NextLink)
 14074  	populate(objectMap, "value", e.Value)
 14075  	return json.Marshal(objectMap)
 14076  }
 14077  
 14078  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteLinkListResult.
 14079  func (e *ExpressRouteLinkListResult) UnmarshalJSON(data []byte) error {
 14080  	var rawMsg map[string]json.RawMessage
 14081  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 14082  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14083  	}
 14084  	for key, val := range rawMsg {
 14085  		var err error
 14086  		switch key {
 14087  		case "nextLink":
 14088  			err = unpopulate(val, "NextLink", &e.NextLink)
 14089  			delete(rawMsg, key)
 14090  		case "value":
 14091  			err = unpopulate(val, "Value", &e.Value)
 14092  			delete(rawMsg, key)
 14093  		}
 14094  		if err != nil {
 14095  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14096  		}
 14097  	}
 14098  	return nil
 14099  }
 14100  
 14101  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteLinkMacSecConfig.
 14102  func (e ExpressRouteLinkMacSecConfig) MarshalJSON() ([]byte, error) {
 14103  	objectMap := make(map[string]any)
 14104  	populate(objectMap, "cakSecretIdentifier", e.CakSecretIdentifier)
 14105  	populate(objectMap, "cipher", e.Cipher)
 14106  	populate(objectMap, "cknSecretIdentifier", e.CknSecretIdentifier)
 14107  	populate(objectMap, "sciState", e.SciState)
 14108  	return json.Marshal(objectMap)
 14109  }
 14110  
 14111  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteLinkMacSecConfig.
 14112  func (e *ExpressRouteLinkMacSecConfig) UnmarshalJSON(data []byte) error {
 14113  	var rawMsg map[string]json.RawMessage
 14114  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 14115  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14116  	}
 14117  	for key, val := range rawMsg {
 14118  		var err error
 14119  		switch key {
 14120  		case "cakSecretIdentifier":
 14121  			err = unpopulate(val, "CakSecretIdentifier", &e.CakSecretIdentifier)
 14122  			delete(rawMsg, key)
 14123  		case "cipher":
 14124  			err = unpopulate(val, "Cipher", &e.Cipher)
 14125  			delete(rawMsg, key)
 14126  		case "cknSecretIdentifier":
 14127  			err = unpopulate(val, "CknSecretIdentifier", &e.CknSecretIdentifier)
 14128  			delete(rawMsg, key)
 14129  		case "sciState":
 14130  			err = unpopulate(val, "SciState", &e.SciState)
 14131  			delete(rawMsg, key)
 14132  		}
 14133  		if err != nil {
 14134  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14135  		}
 14136  	}
 14137  	return nil
 14138  }
 14139  
 14140  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteLinkPropertiesFormat.
 14141  func (e ExpressRouteLinkPropertiesFormat) MarshalJSON() ([]byte, error) {
 14142  	objectMap := make(map[string]any)
 14143  	populate(objectMap, "adminState", e.AdminState)
 14144  	populate(objectMap, "coloLocation", e.ColoLocation)
 14145  	populate(objectMap, "connectorType", e.ConnectorType)
 14146  	populate(objectMap, "interfaceName", e.InterfaceName)
 14147  	populate(objectMap, "macSecConfig", e.MacSecConfig)
 14148  	populate(objectMap, "patchPanelId", e.PatchPanelID)
 14149  	populate(objectMap, "provisioningState", e.ProvisioningState)
 14150  	populate(objectMap, "rackId", e.RackID)
 14151  	populate(objectMap, "routerName", e.RouterName)
 14152  	return json.Marshal(objectMap)
 14153  }
 14154  
 14155  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteLinkPropertiesFormat.
 14156  func (e *ExpressRouteLinkPropertiesFormat) UnmarshalJSON(data []byte) error {
 14157  	var rawMsg map[string]json.RawMessage
 14158  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 14159  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14160  	}
 14161  	for key, val := range rawMsg {
 14162  		var err error
 14163  		switch key {
 14164  		case "adminState":
 14165  			err = unpopulate(val, "AdminState", &e.AdminState)
 14166  			delete(rawMsg, key)
 14167  		case "coloLocation":
 14168  			err = unpopulate(val, "ColoLocation", &e.ColoLocation)
 14169  			delete(rawMsg, key)
 14170  		case "connectorType":
 14171  			err = unpopulate(val, "ConnectorType", &e.ConnectorType)
 14172  			delete(rawMsg, key)
 14173  		case "interfaceName":
 14174  			err = unpopulate(val, "InterfaceName", &e.InterfaceName)
 14175  			delete(rawMsg, key)
 14176  		case "macSecConfig":
 14177  			err = unpopulate(val, "MacSecConfig", &e.MacSecConfig)
 14178  			delete(rawMsg, key)
 14179  		case "patchPanelId":
 14180  			err = unpopulate(val, "PatchPanelID", &e.PatchPanelID)
 14181  			delete(rawMsg, key)
 14182  		case "provisioningState":
 14183  			err = unpopulate(val, "ProvisioningState", &e.ProvisioningState)
 14184  			delete(rawMsg, key)
 14185  		case "rackId":
 14186  			err = unpopulate(val, "RackID", &e.RackID)
 14187  			delete(rawMsg, key)
 14188  		case "routerName":
 14189  			err = unpopulate(val, "RouterName", &e.RouterName)
 14190  			delete(rawMsg, key)
 14191  		}
 14192  		if err != nil {
 14193  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14194  		}
 14195  	}
 14196  	return nil
 14197  }
 14198  
 14199  // MarshalJSON implements the json.Marshaller interface for type ExpressRoutePort.
 14200  func (e ExpressRoutePort) MarshalJSON() ([]byte, error) {
 14201  	objectMap := make(map[string]any)
 14202  	populate(objectMap, "etag", e.Etag)
 14203  	populate(objectMap, "id", e.ID)
 14204  	populate(objectMap, "identity", e.Identity)
 14205  	populate(objectMap, "location", e.Location)
 14206  	populate(objectMap, "name", e.Name)
 14207  	populate(objectMap, "properties", e.Properties)
 14208  	populate(objectMap, "tags", e.Tags)
 14209  	populate(objectMap, "type", e.Type)
 14210  	return json.Marshal(objectMap)
 14211  }
 14212  
 14213  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRoutePort.
 14214  func (e *ExpressRoutePort) UnmarshalJSON(data []byte) error {
 14215  	var rawMsg map[string]json.RawMessage
 14216  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 14217  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14218  	}
 14219  	for key, val := range rawMsg {
 14220  		var err error
 14221  		switch key {
 14222  		case "etag":
 14223  			err = unpopulate(val, "Etag", &e.Etag)
 14224  			delete(rawMsg, key)
 14225  		case "id":
 14226  			err = unpopulate(val, "ID", &e.ID)
 14227  			delete(rawMsg, key)
 14228  		case "identity":
 14229  			err = unpopulate(val, "Identity", &e.Identity)
 14230  			delete(rawMsg, key)
 14231  		case "location":
 14232  			err = unpopulate(val, "Location", &e.Location)
 14233  			delete(rawMsg, key)
 14234  		case "name":
 14235  			err = unpopulate(val, "Name", &e.Name)
 14236  			delete(rawMsg, key)
 14237  		case "properties":
 14238  			err = unpopulate(val, "Properties", &e.Properties)
 14239  			delete(rawMsg, key)
 14240  		case "tags":
 14241  			err = unpopulate(val, "Tags", &e.Tags)
 14242  			delete(rawMsg, key)
 14243  		case "type":
 14244  			err = unpopulate(val, "Type", &e.Type)
 14245  			delete(rawMsg, key)
 14246  		}
 14247  		if err != nil {
 14248  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14249  		}
 14250  	}
 14251  	return nil
 14252  }
 14253  
 14254  // MarshalJSON implements the json.Marshaller interface for type ExpressRoutePortAuthorization.
 14255  func (e ExpressRoutePortAuthorization) MarshalJSON() ([]byte, error) {
 14256  	objectMap := make(map[string]any)
 14257  	populate(objectMap, "etag", e.Etag)
 14258  	populate(objectMap, "id", e.ID)
 14259  	populate(objectMap, "name", e.Name)
 14260  	populate(objectMap, "properties", e.Properties)
 14261  	populate(objectMap, "type", e.Type)
 14262  	return json.Marshal(objectMap)
 14263  }
 14264  
 14265  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRoutePortAuthorization.
 14266  func (e *ExpressRoutePortAuthorization) UnmarshalJSON(data []byte) error {
 14267  	var rawMsg map[string]json.RawMessage
 14268  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 14269  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14270  	}
 14271  	for key, val := range rawMsg {
 14272  		var err error
 14273  		switch key {
 14274  		case "etag":
 14275  			err = unpopulate(val, "Etag", &e.Etag)
 14276  			delete(rawMsg, key)
 14277  		case "id":
 14278  			err = unpopulate(val, "ID", &e.ID)
 14279  			delete(rawMsg, key)
 14280  		case "name":
 14281  			err = unpopulate(val, "Name", &e.Name)
 14282  			delete(rawMsg, key)
 14283  		case "properties":
 14284  			err = unpopulate(val, "Properties", &e.Properties)
 14285  			delete(rawMsg, key)
 14286  		case "type":
 14287  			err = unpopulate(val, "Type", &e.Type)
 14288  			delete(rawMsg, key)
 14289  		}
 14290  		if err != nil {
 14291  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14292  		}
 14293  	}
 14294  	return nil
 14295  }
 14296  
 14297  // MarshalJSON implements the json.Marshaller interface for type ExpressRoutePortAuthorizationListResult.
 14298  func (e ExpressRoutePortAuthorizationListResult) MarshalJSON() ([]byte, error) {
 14299  	objectMap := make(map[string]any)
 14300  	populate(objectMap, "nextLink", e.NextLink)
 14301  	populate(objectMap, "value", e.Value)
 14302  	return json.Marshal(objectMap)
 14303  }
 14304  
 14305  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRoutePortAuthorizationListResult.
 14306  func (e *ExpressRoutePortAuthorizationListResult) UnmarshalJSON(data []byte) error {
 14307  	var rawMsg map[string]json.RawMessage
 14308  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 14309  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14310  	}
 14311  	for key, val := range rawMsg {
 14312  		var err error
 14313  		switch key {
 14314  		case "nextLink":
 14315  			err = unpopulate(val, "NextLink", &e.NextLink)
 14316  			delete(rawMsg, key)
 14317  		case "value":
 14318  			err = unpopulate(val, "Value", &e.Value)
 14319  			delete(rawMsg, key)
 14320  		}
 14321  		if err != nil {
 14322  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14323  		}
 14324  	}
 14325  	return nil
 14326  }
 14327  
 14328  // MarshalJSON implements the json.Marshaller interface for type ExpressRoutePortAuthorizationPropertiesFormat.
 14329  func (e ExpressRoutePortAuthorizationPropertiesFormat) MarshalJSON() ([]byte, error) {
 14330  	objectMap := make(map[string]any)
 14331  	populate(objectMap, "authorizationKey", e.AuthorizationKey)
 14332  	populate(objectMap, "authorizationUseStatus", e.AuthorizationUseStatus)
 14333  	populate(objectMap, "circuitResourceUri", e.CircuitResourceURI)
 14334  	populate(objectMap, "provisioningState", e.ProvisioningState)
 14335  	return json.Marshal(objectMap)
 14336  }
 14337  
 14338  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRoutePortAuthorizationPropertiesFormat.
 14339  func (e *ExpressRoutePortAuthorizationPropertiesFormat) UnmarshalJSON(data []byte) error {
 14340  	var rawMsg map[string]json.RawMessage
 14341  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 14342  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14343  	}
 14344  	for key, val := range rawMsg {
 14345  		var err error
 14346  		switch key {
 14347  		case "authorizationKey":
 14348  			err = unpopulate(val, "AuthorizationKey", &e.AuthorizationKey)
 14349  			delete(rawMsg, key)
 14350  		case "authorizationUseStatus":
 14351  			err = unpopulate(val, "AuthorizationUseStatus", &e.AuthorizationUseStatus)
 14352  			delete(rawMsg, key)
 14353  		case "circuitResourceUri":
 14354  			err = unpopulate(val, "CircuitResourceURI", &e.CircuitResourceURI)
 14355  			delete(rawMsg, key)
 14356  		case "provisioningState":
 14357  			err = unpopulate(val, "ProvisioningState", &e.ProvisioningState)
 14358  			delete(rawMsg, key)
 14359  		}
 14360  		if err != nil {
 14361  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14362  		}
 14363  	}
 14364  	return nil
 14365  }
 14366  
 14367  // MarshalJSON implements the json.Marshaller interface for type ExpressRoutePortListResult.
 14368  func (e ExpressRoutePortListResult) MarshalJSON() ([]byte, error) {
 14369  	objectMap := make(map[string]any)
 14370  	populate(objectMap, "nextLink", e.NextLink)
 14371  	populate(objectMap, "value", e.Value)
 14372  	return json.Marshal(objectMap)
 14373  }
 14374  
 14375  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRoutePortListResult.
 14376  func (e *ExpressRoutePortListResult) UnmarshalJSON(data []byte) error {
 14377  	var rawMsg map[string]json.RawMessage
 14378  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 14379  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14380  	}
 14381  	for key, val := range rawMsg {
 14382  		var err error
 14383  		switch key {
 14384  		case "nextLink":
 14385  			err = unpopulate(val, "NextLink", &e.NextLink)
 14386  			delete(rawMsg, key)
 14387  		case "value":
 14388  			err = unpopulate(val, "Value", &e.Value)
 14389  			delete(rawMsg, key)
 14390  		}
 14391  		if err != nil {
 14392  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14393  		}
 14394  	}
 14395  	return nil
 14396  }
 14397  
 14398  // MarshalJSON implements the json.Marshaller interface for type ExpressRoutePortPropertiesFormat.
 14399  func (e ExpressRoutePortPropertiesFormat) MarshalJSON() ([]byte, error) {
 14400  	objectMap := make(map[string]any)
 14401  	populate(objectMap, "allocationDate", e.AllocationDate)
 14402  	populate(objectMap, "bandwidthInGbps", e.BandwidthInGbps)
 14403  	populate(objectMap, "billingType", e.BillingType)
 14404  	populate(objectMap, "circuits", e.Circuits)
 14405  	populate(objectMap, "encapsulation", e.Encapsulation)
 14406  	populate(objectMap, "etherType", e.EtherType)
 14407  	populate(objectMap, "links", e.Links)
 14408  	populate(objectMap, "mtu", e.Mtu)
 14409  	populate(objectMap, "peeringLocation", e.PeeringLocation)
 14410  	populate(objectMap, "provisionedBandwidthInGbps", e.ProvisionedBandwidthInGbps)
 14411  	populate(objectMap, "provisioningState", e.ProvisioningState)
 14412  	populate(objectMap, "resourceGuid", e.ResourceGUID)
 14413  	return json.Marshal(objectMap)
 14414  }
 14415  
 14416  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRoutePortPropertiesFormat.
 14417  func (e *ExpressRoutePortPropertiesFormat) UnmarshalJSON(data []byte) error {
 14418  	var rawMsg map[string]json.RawMessage
 14419  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 14420  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14421  	}
 14422  	for key, val := range rawMsg {
 14423  		var err error
 14424  		switch key {
 14425  		case "allocationDate":
 14426  			err = unpopulate(val, "AllocationDate", &e.AllocationDate)
 14427  			delete(rawMsg, key)
 14428  		case "bandwidthInGbps":
 14429  			err = unpopulate(val, "BandwidthInGbps", &e.BandwidthInGbps)
 14430  			delete(rawMsg, key)
 14431  		case "billingType":
 14432  			err = unpopulate(val, "BillingType", &e.BillingType)
 14433  			delete(rawMsg, key)
 14434  		case "circuits":
 14435  			err = unpopulate(val, "Circuits", &e.Circuits)
 14436  			delete(rawMsg, key)
 14437  		case "encapsulation":
 14438  			err = unpopulate(val, "Encapsulation", &e.Encapsulation)
 14439  			delete(rawMsg, key)
 14440  		case "etherType":
 14441  			err = unpopulate(val, "EtherType", &e.EtherType)
 14442  			delete(rawMsg, key)
 14443  		case "links":
 14444  			err = unpopulate(val, "Links", &e.Links)
 14445  			delete(rawMsg, key)
 14446  		case "mtu":
 14447  			err = unpopulate(val, "Mtu", &e.Mtu)
 14448  			delete(rawMsg, key)
 14449  		case "peeringLocation":
 14450  			err = unpopulate(val, "PeeringLocation", &e.PeeringLocation)
 14451  			delete(rawMsg, key)
 14452  		case "provisionedBandwidthInGbps":
 14453  			err = unpopulate(val, "ProvisionedBandwidthInGbps", &e.ProvisionedBandwidthInGbps)
 14454  			delete(rawMsg, key)
 14455  		case "provisioningState":
 14456  			err = unpopulate(val, "ProvisioningState", &e.ProvisioningState)
 14457  			delete(rawMsg, key)
 14458  		case "resourceGuid":
 14459  			err = unpopulate(val, "ResourceGUID", &e.ResourceGUID)
 14460  			delete(rawMsg, key)
 14461  		}
 14462  		if err != nil {
 14463  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14464  		}
 14465  	}
 14466  	return nil
 14467  }
 14468  
 14469  // MarshalJSON implements the json.Marshaller interface for type ExpressRoutePortsLocation.
 14470  func (e ExpressRoutePortsLocation) MarshalJSON() ([]byte, error) {
 14471  	objectMap := make(map[string]any)
 14472  	populate(objectMap, "id", e.ID)
 14473  	populate(objectMap, "location", e.Location)
 14474  	populate(objectMap, "name", e.Name)
 14475  	populate(objectMap, "properties", e.Properties)
 14476  	populate(objectMap, "tags", e.Tags)
 14477  	populate(objectMap, "type", e.Type)
 14478  	return json.Marshal(objectMap)
 14479  }
 14480  
 14481  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRoutePortsLocation.
 14482  func (e *ExpressRoutePortsLocation) UnmarshalJSON(data []byte) error {
 14483  	var rawMsg map[string]json.RawMessage
 14484  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 14485  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14486  	}
 14487  	for key, val := range rawMsg {
 14488  		var err error
 14489  		switch key {
 14490  		case "id":
 14491  			err = unpopulate(val, "ID", &e.ID)
 14492  			delete(rawMsg, key)
 14493  		case "location":
 14494  			err = unpopulate(val, "Location", &e.Location)
 14495  			delete(rawMsg, key)
 14496  		case "name":
 14497  			err = unpopulate(val, "Name", &e.Name)
 14498  			delete(rawMsg, key)
 14499  		case "properties":
 14500  			err = unpopulate(val, "Properties", &e.Properties)
 14501  			delete(rawMsg, key)
 14502  		case "tags":
 14503  			err = unpopulate(val, "Tags", &e.Tags)
 14504  			delete(rawMsg, key)
 14505  		case "type":
 14506  			err = unpopulate(val, "Type", &e.Type)
 14507  			delete(rawMsg, key)
 14508  		}
 14509  		if err != nil {
 14510  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14511  		}
 14512  	}
 14513  	return nil
 14514  }
 14515  
 14516  // MarshalJSON implements the json.Marshaller interface for type ExpressRoutePortsLocationBandwidths.
 14517  func (e ExpressRoutePortsLocationBandwidths) MarshalJSON() ([]byte, error) {
 14518  	objectMap := make(map[string]any)
 14519  	populate(objectMap, "offerName", e.OfferName)
 14520  	populate(objectMap, "valueInGbps", e.ValueInGbps)
 14521  	return json.Marshal(objectMap)
 14522  }
 14523  
 14524  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRoutePortsLocationBandwidths.
 14525  func (e *ExpressRoutePortsLocationBandwidths) UnmarshalJSON(data []byte) error {
 14526  	var rawMsg map[string]json.RawMessage
 14527  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 14528  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14529  	}
 14530  	for key, val := range rawMsg {
 14531  		var err error
 14532  		switch key {
 14533  		case "offerName":
 14534  			err = unpopulate(val, "OfferName", &e.OfferName)
 14535  			delete(rawMsg, key)
 14536  		case "valueInGbps":
 14537  			err = unpopulate(val, "ValueInGbps", &e.ValueInGbps)
 14538  			delete(rawMsg, key)
 14539  		}
 14540  		if err != nil {
 14541  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14542  		}
 14543  	}
 14544  	return nil
 14545  }
 14546  
 14547  // MarshalJSON implements the json.Marshaller interface for type ExpressRoutePortsLocationListResult.
 14548  func (e ExpressRoutePortsLocationListResult) MarshalJSON() ([]byte, error) {
 14549  	objectMap := make(map[string]any)
 14550  	populate(objectMap, "nextLink", e.NextLink)
 14551  	populate(objectMap, "value", e.Value)
 14552  	return json.Marshal(objectMap)
 14553  }
 14554  
 14555  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRoutePortsLocationListResult.
 14556  func (e *ExpressRoutePortsLocationListResult) UnmarshalJSON(data []byte) error {
 14557  	var rawMsg map[string]json.RawMessage
 14558  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 14559  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14560  	}
 14561  	for key, val := range rawMsg {
 14562  		var err error
 14563  		switch key {
 14564  		case "nextLink":
 14565  			err = unpopulate(val, "NextLink", &e.NextLink)
 14566  			delete(rawMsg, key)
 14567  		case "value":
 14568  			err = unpopulate(val, "Value", &e.Value)
 14569  			delete(rawMsg, key)
 14570  		}
 14571  		if err != nil {
 14572  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14573  		}
 14574  	}
 14575  	return nil
 14576  }
 14577  
 14578  // MarshalJSON implements the json.Marshaller interface for type ExpressRoutePortsLocationPropertiesFormat.
 14579  func (e ExpressRoutePortsLocationPropertiesFormat) MarshalJSON() ([]byte, error) {
 14580  	objectMap := make(map[string]any)
 14581  	populate(objectMap, "address", e.Address)
 14582  	populate(objectMap, "availableBandwidths", e.AvailableBandwidths)
 14583  	populate(objectMap, "contact", e.Contact)
 14584  	populate(objectMap, "provisioningState", e.ProvisioningState)
 14585  	return json.Marshal(objectMap)
 14586  }
 14587  
 14588  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRoutePortsLocationPropertiesFormat.
 14589  func (e *ExpressRoutePortsLocationPropertiesFormat) UnmarshalJSON(data []byte) error {
 14590  	var rawMsg map[string]json.RawMessage
 14591  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 14592  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14593  	}
 14594  	for key, val := range rawMsg {
 14595  		var err error
 14596  		switch key {
 14597  		case "address":
 14598  			err = unpopulate(val, "Address", &e.Address)
 14599  			delete(rawMsg, key)
 14600  		case "availableBandwidths":
 14601  			err = unpopulate(val, "AvailableBandwidths", &e.AvailableBandwidths)
 14602  			delete(rawMsg, key)
 14603  		case "contact":
 14604  			err = unpopulate(val, "Contact", &e.Contact)
 14605  			delete(rawMsg, key)
 14606  		case "provisioningState":
 14607  			err = unpopulate(val, "ProvisioningState", &e.ProvisioningState)
 14608  			delete(rawMsg, key)
 14609  		}
 14610  		if err != nil {
 14611  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14612  		}
 14613  	}
 14614  	return nil
 14615  }
 14616  
 14617  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteProviderPort.
 14618  func (e ExpressRouteProviderPort) MarshalJSON() ([]byte, error) {
 14619  	objectMap := make(map[string]any)
 14620  	populate(objectMap, "etag", e.Etag)
 14621  	populate(objectMap, "id", e.ID)
 14622  	populate(objectMap, "location", e.Location)
 14623  	populate(objectMap, "name", e.Name)
 14624  	populate(objectMap, "properties", e.Properties)
 14625  	populate(objectMap, "tags", e.Tags)
 14626  	populate(objectMap, "type", e.Type)
 14627  	return json.Marshal(objectMap)
 14628  }
 14629  
 14630  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteProviderPort.
 14631  func (e *ExpressRouteProviderPort) UnmarshalJSON(data []byte) error {
 14632  	var rawMsg map[string]json.RawMessage
 14633  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 14634  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14635  	}
 14636  	for key, val := range rawMsg {
 14637  		var err error
 14638  		switch key {
 14639  		case "etag":
 14640  			err = unpopulate(val, "Etag", &e.Etag)
 14641  			delete(rawMsg, key)
 14642  		case "id":
 14643  			err = unpopulate(val, "ID", &e.ID)
 14644  			delete(rawMsg, key)
 14645  		case "location":
 14646  			err = unpopulate(val, "Location", &e.Location)
 14647  			delete(rawMsg, key)
 14648  		case "name":
 14649  			err = unpopulate(val, "Name", &e.Name)
 14650  			delete(rawMsg, key)
 14651  		case "properties":
 14652  			err = unpopulate(val, "Properties", &e.Properties)
 14653  			delete(rawMsg, key)
 14654  		case "tags":
 14655  			err = unpopulate(val, "Tags", &e.Tags)
 14656  			delete(rawMsg, key)
 14657  		case "type":
 14658  			err = unpopulate(val, "Type", &e.Type)
 14659  			delete(rawMsg, key)
 14660  		}
 14661  		if err != nil {
 14662  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14663  		}
 14664  	}
 14665  	return nil
 14666  }
 14667  
 14668  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteProviderPortListResult.
 14669  func (e ExpressRouteProviderPortListResult) MarshalJSON() ([]byte, error) {
 14670  	objectMap := make(map[string]any)
 14671  	populate(objectMap, "nextLink", e.NextLink)
 14672  	populate(objectMap, "value", e.Value)
 14673  	return json.Marshal(objectMap)
 14674  }
 14675  
 14676  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteProviderPortListResult.
 14677  func (e *ExpressRouteProviderPortListResult) UnmarshalJSON(data []byte) error {
 14678  	var rawMsg map[string]json.RawMessage
 14679  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 14680  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14681  	}
 14682  	for key, val := range rawMsg {
 14683  		var err error
 14684  		switch key {
 14685  		case "nextLink":
 14686  			err = unpopulate(val, "NextLink", &e.NextLink)
 14687  			delete(rawMsg, key)
 14688  		case "value":
 14689  			err = unpopulate(val, "Value", &e.Value)
 14690  			delete(rawMsg, key)
 14691  		}
 14692  		if err != nil {
 14693  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14694  		}
 14695  	}
 14696  	return nil
 14697  }
 14698  
 14699  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteProviderPortProperties.
 14700  func (e ExpressRouteProviderPortProperties) MarshalJSON() ([]byte, error) {
 14701  	objectMap := make(map[string]any)
 14702  	populate(objectMap, "overprovisionFactor", e.OverprovisionFactor)
 14703  	populate(objectMap, "peeringLocation", e.PeeringLocation)
 14704  	populate(objectMap, "portBandwidthInMbps", e.PortBandwidthInMbps)
 14705  	populate(objectMap, "portPairDescriptor", e.PortPairDescriptor)
 14706  	populate(objectMap, "primaryAzurePort", e.PrimaryAzurePort)
 14707  	populate(objectMap, "remainingBandwidthInMbps", e.RemainingBandwidthInMbps)
 14708  	populate(objectMap, "secondaryAzurePort", e.SecondaryAzurePort)
 14709  	populate(objectMap, "usedBandwidthInMbps", e.UsedBandwidthInMbps)
 14710  	return json.Marshal(objectMap)
 14711  }
 14712  
 14713  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteProviderPortProperties.
 14714  func (e *ExpressRouteProviderPortProperties) UnmarshalJSON(data []byte) error {
 14715  	var rawMsg map[string]json.RawMessage
 14716  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 14717  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14718  	}
 14719  	for key, val := range rawMsg {
 14720  		var err error
 14721  		switch key {
 14722  		case "overprovisionFactor":
 14723  			err = unpopulate(val, "OverprovisionFactor", &e.OverprovisionFactor)
 14724  			delete(rawMsg, key)
 14725  		case "peeringLocation":
 14726  			err = unpopulate(val, "PeeringLocation", &e.PeeringLocation)
 14727  			delete(rawMsg, key)
 14728  		case "portBandwidthInMbps":
 14729  			err = unpopulate(val, "PortBandwidthInMbps", &e.PortBandwidthInMbps)
 14730  			delete(rawMsg, key)
 14731  		case "portPairDescriptor":
 14732  			err = unpopulate(val, "PortPairDescriptor", &e.PortPairDescriptor)
 14733  			delete(rawMsg, key)
 14734  		case "primaryAzurePort":
 14735  			err = unpopulate(val, "PrimaryAzurePort", &e.PrimaryAzurePort)
 14736  			delete(rawMsg, key)
 14737  		case "remainingBandwidthInMbps":
 14738  			err = unpopulate(val, "RemainingBandwidthInMbps", &e.RemainingBandwidthInMbps)
 14739  			delete(rawMsg, key)
 14740  		case "secondaryAzurePort":
 14741  			err = unpopulate(val, "SecondaryAzurePort", &e.SecondaryAzurePort)
 14742  			delete(rawMsg, key)
 14743  		case "usedBandwidthInMbps":
 14744  			err = unpopulate(val, "UsedBandwidthInMbps", &e.UsedBandwidthInMbps)
 14745  			delete(rawMsg, key)
 14746  		}
 14747  		if err != nil {
 14748  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14749  		}
 14750  	}
 14751  	return nil
 14752  }
 14753  
 14754  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteServiceProvider.
 14755  func (e ExpressRouteServiceProvider) MarshalJSON() ([]byte, error) {
 14756  	objectMap := make(map[string]any)
 14757  	populate(objectMap, "id", e.ID)
 14758  	populate(objectMap, "location", e.Location)
 14759  	populate(objectMap, "name", e.Name)
 14760  	populate(objectMap, "properties", e.Properties)
 14761  	populate(objectMap, "tags", e.Tags)
 14762  	populate(objectMap, "type", e.Type)
 14763  	return json.Marshal(objectMap)
 14764  }
 14765  
 14766  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteServiceProvider.
 14767  func (e *ExpressRouteServiceProvider) UnmarshalJSON(data []byte) error {
 14768  	var rawMsg map[string]json.RawMessage
 14769  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 14770  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14771  	}
 14772  	for key, val := range rawMsg {
 14773  		var err error
 14774  		switch key {
 14775  		case "id":
 14776  			err = unpopulate(val, "ID", &e.ID)
 14777  			delete(rawMsg, key)
 14778  		case "location":
 14779  			err = unpopulate(val, "Location", &e.Location)
 14780  			delete(rawMsg, key)
 14781  		case "name":
 14782  			err = unpopulate(val, "Name", &e.Name)
 14783  			delete(rawMsg, key)
 14784  		case "properties":
 14785  			err = unpopulate(val, "Properties", &e.Properties)
 14786  			delete(rawMsg, key)
 14787  		case "tags":
 14788  			err = unpopulate(val, "Tags", &e.Tags)
 14789  			delete(rawMsg, key)
 14790  		case "type":
 14791  			err = unpopulate(val, "Type", &e.Type)
 14792  			delete(rawMsg, key)
 14793  		}
 14794  		if err != nil {
 14795  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14796  		}
 14797  	}
 14798  	return nil
 14799  }
 14800  
 14801  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteServiceProviderBandwidthsOffered.
 14802  func (e ExpressRouteServiceProviderBandwidthsOffered) MarshalJSON() ([]byte, error) {
 14803  	objectMap := make(map[string]any)
 14804  	populate(objectMap, "offerName", e.OfferName)
 14805  	populate(objectMap, "valueInMbps", e.ValueInMbps)
 14806  	return json.Marshal(objectMap)
 14807  }
 14808  
 14809  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteServiceProviderBandwidthsOffered.
 14810  func (e *ExpressRouteServiceProviderBandwidthsOffered) UnmarshalJSON(data []byte) error {
 14811  	var rawMsg map[string]json.RawMessage
 14812  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 14813  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14814  	}
 14815  	for key, val := range rawMsg {
 14816  		var err error
 14817  		switch key {
 14818  		case "offerName":
 14819  			err = unpopulate(val, "OfferName", &e.OfferName)
 14820  			delete(rawMsg, key)
 14821  		case "valueInMbps":
 14822  			err = unpopulate(val, "ValueInMbps", &e.ValueInMbps)
 14823  			delete(rawMsg, key)
 14824  		}
 14825  		if err != nil {
 14826  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14827  		}
 14828  	}
 14829  	return nil
 14830  }
 14831  
 14832  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteServiceProviderListResult.
 14833  func (e ExpressRouteServiceProviderListResult) MarshalJSON() ([]byte, error) {
 14834  	objectMap := make(map[string]any)
 14835  	populate(objectMap, "nextLink", e.NextLink)
 14836  	populate(objectMap, "value", e.Value)
 14837  	return json.Marshal(objectMap)
 14838  }
 14839  
 14840  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteServiceProviderListResult.
 14841  func (e *ExpressRouteServiceProviderListResult) UnmarshalJSON(data []byte) error {
 14842  	var rawMsg map[string]json.RawMessage
 14843  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 14844  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14845  	}
 14846  	for key, val := range rawMsg {
 14847  		var err error
 14848  		switch key {
 14849  		case "nextLink":
 14850  			err = unpopulate(val, "NextLink", &e.NextLink)
 14851  			delete(rawMsg, key)
 14852  		case "value":
 14853  			err = unpopulate(val, "Value", &e.Value)
 14854  			delete(rawMsg, key)
 14855  		}
 14856  		if err != nil {
 14857  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14858  		}
 14859  	}
 14860  	return nil
 14861  }
 14862  
 14863  // MarshalJSON implements the json.Marshaller interface for type ExpressRouteServiceProviderPropertiesFormat.
 14864  func (e ExpressRouteServiceProviderPropertiesFormat) MarshalJSON() ([]byte, error) {
 14865  	objectMap := make(map[string]any)
 14866  	populate(objectMap, "bandwidthsOffered", e.BandwidthsOffered)
 14867  	populate(objectMap, "peeringLocations", e.PeeringLocations)
 14868  	populate(objectMap, "provisioningState", e.ProvisioningState)
 14869  	return json.Marshal(objectMap)
 14870  }
 14871  
 14872  // UnmarshalJSON implements the json.Unmarshaller interface for type ExpressRouteServiceProviderPropertiesFormat.
 14873  func (e *ExpressRouteServiceProviderPropertiesFormat) UnmarshalJSON(data []byte) error {
 14874  	var rawMsg map[string]json.RawMessage
 14875  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 14876  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14877  	}
 14878  	for key, val := range rawMsg {
 14879  		var err error
 14880  		switch key {
 14881  		case "bandwidthsOffered":
 14882  			err = unpopulate(val, "BandwidthsOffered", &e.BandwidthsOffered)
 14883  			delete(rawMsg, key)
 14884  		case "peeringLocations":
 14885  			err = unpopulate(val, "PeeringLocations", &e.PeeringLocations)
 14886  			delete(rawMsg, key)
 14887  		case "provisioningState":
 14888  			err = unpopulate(val, "ProvisioningState", &e.ProvisioningState)
 14889  			delete(rawMsg, key)
 14890  		}
 14891  		if err != nil {
 14892  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14893  		}
 14894  	}
 14895  	return nil
 14896  }
 14897  
 14898  // MarshalJSON implements the json.Marshaller interface for type ExtendedLocation.
 14899  func (e ExtendedLocation) MarshalJSON() ([]byte, error) {
 14900  	objectMap := make(map[string]any)
 14901  	populate(objectMap, "name", e.Name)
 14902  	populate(objectMap, "type", e.Type)
 14903  	return json.Marshal(objectMap)
 14904  }
 14905  
 14906  // UnmarshalJSON implements the json.Unmarshaller interface for type ExtendedLocation.
 14907  func (e *ExtendedLocation) UnmarshalJSON(data []byte) error {
 14908  	var rawMsg map[string]json.RawMessage
 14909  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 14910  		return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14911  	}
 14912  	for key, val := range rawMsg {
 14913  		var err error
 14914  		switch key {
 14915  		case "name":
 14916  			err = unpopulate(val, "Name", &e.Name)
 14917  			delete(rawMsg, key)
 14918  		case "type":
 14919  			err = unpopulate(val, "Type", &e.Type)
 14920  			delete(rawMsg, key)
 14921  		}
 14922  		if err != nil {
 14923  			return fmt.Errorf("unmarshalling type %T: %v", e, err)
 14924  		}
 14925  	}
 14926  	return nil
 14927  }
 14928  
 14929  // MarshalJSON implements the json.Marshaller interface for type FailoverConnectionDetails.
 14930  func (f FailoverConnectionDetails) MarshalJSON() ([]byte, error) {
 14931  	objectMap := make(map[string]any)
 14932  	populate(objectMap, "failoverConnectionName", f.FailoverConnectionName)
 14933  	populate(objectMap, "failoverLocation", f.FailoverLocation)
 14934  	populate(objectMap, "isVerified", f.IsVerified)
 14935  	return json.Marshal(objectMap)
 14936  }
 14937  
 14938  // UnmarshalJSON implements the json.Unmarshaller interface for type FailoverConnectionDetails.
 14939  func (f *FailoverConnectionDetails) UnmarshalJSON(data []byte) error {
 14940  	var rawMsg map[string]json.RawMessage
 14941  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 14942  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 14943  	}
 14944  	for key, val := range rawMsg {
 14945  		var err error
 14946  		switch key {
 14947  		case "failoverConnectionName":
 14948  			err = unpopulate(val, "FailoverConnectionName", &f.FailoverConnectionName)
 14949  			delete(rawMsg, key)
 14950  		case "failoverLocation":
 14951  			err = unpopulate(val, "FailoverLocation", &f.FailoverLocation)
 14952  			delete(rawMsg, key)
 14953  		case "isVerified":
 14954  			err = unpopulate(val, "IsVerified", &f.IsVerified)
 14955  			delete(rawMsg, key)
 14956  		}
 14957  		if err != nil {
 14958  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 14959  		}
 14960  	}
 14961  	return nil
 14962  }
 14963  
 14964  // MarshalJSON implements the json.Marshaller interface for type FilterItems.
 14965  func (f FilterItems) MarshalJSON() ([]byte, error) {
 14966  	objectMap := make(map[string]any)
 14967  	populate(objectMap, "field", f.Field)
 14968  	populate(objectMap, "values", f.Values)
 14969  	return json.Marshal(objectMap)
 14970  }
 14971  
 14972  // UnmarshalJSON implements the json.Unmarshaller interface for type FilterItems.
 14973  func (f *FilterItems) UnmarshalJSON(data []byte) error {
 14974  	var rawMsg map[string]json.RawMessage
 14975  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 14976  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 14977  	}
 14978  	for key, val := range rawMsg {
 14979  		var err error
 14980  		switch key {
 14981  		case "field":
 14982  			err = unpopulate(val, "Field", &f.Field)
 14983  			delete(rawMsg, key)
 14984  		case "values":
 14985  			err = unpopulate(val, "Values", &f.Values)
 14986  			delete(rawMsg, key)
 14987  		}
 14988  		if err != nil {
 14989  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 14990  		}
 14991  	}
 14992  	return nil
 14993  }
 14994  
 14995  // MarshalJSON implements the json.Marshaller interface for type FirewallPacketCaptureParameters.
 14996  func (f FirewallPacketCaptureParameters) MarshalJSON() ([]byte, error) {
 14997  	objectMap := make(map[string]any)
 14998  	populate(objectMap, "durationInSeconds", f.DurationInSeconds)
 14999  	populate(objectMap, "fileName", f.FileName)
 15000  	populate(objectMap, "filters", f.Filters)
 15001  	populate(objectMap, "flags", f.Flags)
 15002  	populate(objectMap, "numberOfPacketsToCapture", f.NumberOfPacketsToCapture)
 15003  	populate(objectMap, "protocol", f.Protocol)
 15004  	populate(objectMap, "sasUrl", f.SasURL)
 15005  	return json.Marshal(objectMap)
 15006  }
 15007  
 15008  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPacketCaptureParameters.
 15009  func (f *FirewallPacketCaptureParameters) UnmarshalJSON(data []byte) error {
 15010  	var rawMsg map[string]json.RawMessage
 15011  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 15012  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15013  	}
 15014  	for key, val := range rawMsg {
 15015  		var err error
 15016  		switch key {
 15017  		case "durationInSeconds":
 15018  			err = unpopulate(val, "DurationInSeconds", &f.DurationInSeconds)
 15019  			delete(rawMsg, key)
 15020  		case "fileName":
 15021  			err = unpopulate(val, "FileName", &f.FileName)
 15022  			delete(rawMsg, key)
 15023  		case "filters":
 15024  			err = unpopulate(val, "Filters", &f.Filters)
 15025  			delete(rawMsg, key)
 15026  		case "flags":
 15027  			err = unpopulate(val, "Flags", &f.Flags)
 15028  			delete(rawMsg, key)
 15029  		case "numberOfPacketsToCapture":
 15030  			err = unpopulate(val, "NumberOfPacketsToCapture", &f.NumberOfPacketsToCapture)
 15031  			delete(rawMsg, key)
 15032  		case "protocol":
 15033  			err = unpopulate(val, "Protocol", &f.Protocol)
 15034  			delete(rawMsg, key)
 15035  		case "sasUrl":
 15036  			err = unpopulate(val, "SasURL", &f.SasURL)
 15037  			delete(rawMsg, key)
 15038  		}
 15039  		if err != nil {
 15040  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15041  		}
 15042  	}
 15043  	return nil
 15044  }
 15045  
 15046  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicy.
 15047  func (f FirewallPolicy) MarshalJSON() ([]byte, error) {
 15048  	objectMap := make(map[string]any)
 15049  	populate(objectMap, "etag", f.Etag)
 15050  	populate(objectMap, "id", f.ID)
 15051  	populate(objectMap, "identity", f.Identity)
 15052  	populate(objectMap, "location", f.Location)
 15053  	populate(objectMap, "name", f.Name)
 15054  	populate(objectMap, "properties", f.Properties)
 15055  	populate(objectMap, "tags", f.Tags)
 15056  	populate(objectMap, "type", f.Type)
 15057  	return json.Marshal(objectMap)
 15058  }
 15059  
 15060  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicy.
 15061  func (f *FirewallPolicy) UnmarshalJSON(data []byte) error {
 15062  	var rawMsg map[string]json.RawMessage
 15063  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 15064  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15065  	}
 15066  	for key, val := range rawMsg {
 15067  		var err error
 15068  		switch key {
 15069  		case "etag":
 15070  			err = unpopulate(val, "Etag", &f.Etag)
 15071  			delete(rawMsg, key)
 15072  		case "id":
 15073  			err = unpopulate(val, "ID", &f.ID)
 15074  			delete(rawMsg, key)
 15075  		case "identity":
 15076  			err = unpopulate(val, "Identity", &f.Identity)
 15077  			delete(rawMsg, key)
 15078  		case "location":
 15079  			err = unpopulate(val, "Location", &f.Location)
 15080  			delete(rawMsg, key)
 15081  		case "name":
 15082  			err = unpopulate(val, "Name", &f.Name)
 15083  			delete(rawMsg, key)
 15084  		case "properties":
 15085  			err = unpopulate(val, "Properties", &f.Properties)
 15086  			delete(rawMsg, key)
 15087  		case "tags":
 15088  			err = unpopulate(val, "Tags", &f.Tags)
 15089  			delete(rawMsg, key)
 15090  		case "type":
 15091  			err = unpopulate(val, "Type", &f.Type)
 15092  			delete(rawMsg, key)
 15093  		}
 15094  		if err != nil {
 15095  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15096  		}
 15097  	}
 15098  	return nil
 15099  }
 15100  
 15101  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyCertificateAuthority.
 15102  func (f FirewallPolicyCertificateAuthority) MarshalJSON() ([]byte, error) {
 15103  	objectMap := make(map[string]any)
 15104  	populate(objectMap, "keyVaultSecretId", f.KeyVaultSecretID)
 15105  	populate(objectMap, "name", f.Name)
 15106  	return json.Marshal(objectMap)
 15107  }
 15108  
 15109  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyCertificateAuthority.
 15110  func (f *FirewallPolicyCertificateAuthority) UnmarshalJSON(data []byte) error {
 15111  	var rawMsg map[string]json.RawMessage
 15112  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 15113  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15114  	}
 15115  	for key, val := range rawMsg {
 15116  		var err error
 15117  		switch key {
 15118  		case "keyVaultSecretId":
 15119  			err = unpopulate(val, "KeyVaultSecretID", &f.KeyVaultSecretID)
 15120  			delete(rawMsg, key)
 15121  		case "name":
 15122  			err = unpopulate(val, "Name", &f.Name)
 15123  			delete(rawMsg, key)
 15124  		}
 15125  		if err != nil {
 15126  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15127  		}
 15128  	}
 15129  	return nil
 15130  }
 15131  
 15132  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyDraft.
 15133  func (f FirewallPolicyDraft) MarshalJSON() ([]byte, error) {
 15134  	objectMap := make(map[string]any)
 15135  	populate(objectMap, "id", f.ID)
 15136  	populate(objectMap, "location", f.Location)
 15137  	populate(objectMap, "name", f.Name)
 15138  	populate(objectMap, "properties", f.Properties)
 15139  	populate(objectMap, "tags", f.Tags)
 15140  	populate(objectMap, "type", f.Type)
 15141  	return json.Marshal(objectMap)
 15142  }
 15143  
 15144  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyDraft.
 15145  func (f *FirewallPolicyDraft) UnmarshalJSON(data []byte) error {
 15146  	var rawMsg map[string]json.RawMessage
 15147  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 15148  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15149  	}
 15150  	for key, val := range rawMsg {
 15151  		var err error
 15152  		switch key {
 15153  		case "id":
 15154  			err = unpopulate(val, "ID", &f.ID)
 15155  			delete(rawMsg, key)
 15156  		case "location":
 15157  			err = unpopulate(val, "Location", &f.Location)
 15158  			delete(rawMsg, key)
 15159  		case "name":
 15160  			err = unpopulate(val, "Name", &f.Name)
 15161  			delete(rawMsg, key)
 15162  		case "properties":
 15163  			err = unpopulate(val, "Properties", &f.Properties)
 15164  			delete(rawMsg, key)
 15165  		case "tags":
 15166  			err = unpopulate(val, "Tags", &f.Tags)
 15167  			delete(rawMsg, key)
 15168  		case "type":
 15169  			err = unpopulate(val, "Type", &f.Type)
 15170  			delete(rawMsg, key)
 15171  		}
 15172  		if err != nil {
 15173  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15174  		}
 15175  	}
 15176  	return nil
 15177  }
 15178  
 15179  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyDraftProperties.
 15180  func (f FirewallPolicyDraftProperties) MarshalJSON() ([]byte, error) {
 15181  	objectMap := make(map[string]any)
 15182  	populate(objectMap, "basePolicy", f.BasePolicy)
 15183  	populate(objectMap, "dnsSettings", f.DNSSettings)
 15184  	populate(objectMap, "explicitProxy", f.ExplicitProxy)
 15185  	populate(objectMap, "insights", f.Insights)
 15186  	populate(objectMap, "intrusionDetection", f.IntrusionDetection)
 15187  	populate(objectMap, "sql", f.SQL)
 15188  	populate(objectMap, "snat", f.Snat)
 15189  	populate(objectMap, "threatIntelMode", f.ThreatIntelMode)
 15190  	populate(objectMap, "threatIntelWhitelist", f.ThreatIntelWhitelist)
 15191  	return json.Marshal(objectMap)
 15192  }
 15193  
 15194  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyDraftProperties.
 15195  func (f *FirewallPolicyDraftProperties) UnmarshalJSON(data []byte) error {
 15196  	var rawMsg map[string]json.RawMessage
 15197  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 15198  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15199  	}
 15200  	for key, val := range rawMsg {
 15201  		var err error
 15202  		switch key {
 15203  		case "basePolicy":
 15204  			err = unpopulate(val, "BasePolicy", &f.BasePolicy)
 15205  			delete(rawMsg, key)
 15206  		case "dnsSettings":
 15207  			err = unpopulate(val, "DNSSettings", &f.DNSSettings)
 15208  			delete(rawMsg, key)
 15209  		case "explicitProxy":
 15210  			err = unpopulate(val, "ExplicitProxy", &f.ExplicitProxy)
 15211  			delete(rawMsg, key)
 15212  		case "insights":
 15213  			err = unpopulate(val, "Insights", &f.Insights)
 15214  			delete(rawMsg, key)
 15215  		case "intrusionDetection":
 15216  			err = unpopulate(val, "IntrusionDetection", &f.IntrusionDetection)
 15217  			delete(rawMsg, key)
 15218  		case "sql":
 15219  			err = unpopulate(val, "SQL", &f.SQL)
 15220  			delete(rawMsg, key)
 15221  		case "snat":
 15222  			err = unpopulate(val, "Snat", &f.Snat)
 15223  			delete(rawMsg, key)
 15224  		case "threatIntelMode":
 15225  			err = unpopulate(val, "ThreatIntelMode", &f.ThreatIntelMode)
 15226  			delete(rawMsg, key)
 15227  		case "threatIntelWhitelist":
 15228  			err = unpopulate(val, "ThreatIntelWhitelist", &f.ThreatIntelWhitelist)
 15229  			delete(rawMsg, key)
 15230  		}
 15231  		if err != nil {
 15232  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15233  		}
 15234  	}
 15235  	return nil
 15236  }
 15237  
 15238  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyFilterRuleCollection.
 15239  func (f FirewallPolicyFilterRuleCollection) MarshalJSON() ([]byte, error) {
 15240  	objectMap := make(map[string]any)
 15241  	populate(objectMap, "action", f.Action)
 15242  	populate(objectMap, "name", f.Name)
 15243  	populate(objectMap, "priority", f.Priority)
 15244  	objectMap["ruleCollectionType"] = FirewallPolicyRuleCollectionTypeFirewallPolicyFilterRuleCollection
 15245  	populate(objectMap, "rules", f.Rules)
 15246  	return json.Marshal(objectMap)
 15247  }
 15248  
 15249  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyFilterRuleCollection.
 15250  func (f *FirewallPolicyFilterRuleCollection) UnmarshalJSON(data []byte) error {
 15251  	var rawMsg map[string]json.RawMessage
 15252  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 15253  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15254  	}
 15255  	for key, val := range rawMsg {
 15256  		var err error
 15257  		switch key {
 15258  		case "action":
 15259  			err = unpopulate(val, "Action", &f.Action)
 15260  			delete(rawMsg, key)
 15261  		case "name":
 15262  			err = unpopulate(val, "Name", &f.Name)
 15263  			delete(rawMsg, key)
 15264  		case "priority":
 15265  			err = unpopulate(val, "Priority", &f.Priority)
 15266  			delete(rawMsg, key)
 15267  		case "ruleCollectionType":
 15268  			err = unpopulate(val, "RuleCollectionType", &f.RuleCollectionType)
 15269  			delete(rawMsg, key)
 15270  		case "rules":
 15271  			f.Rules, err = unmarshalFirewallPolicyRuleClassificationArray(val)
 15272  			delete(rawMsg, key)
 15273  		}
 15274  		if err != nil {
 15275  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15276  		}
 15277  	}
 15278  	return nil
 15279  }
 15280  
 15281  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyFilterRuleCollectionAction.
 15282  func (f FirewallPolicyFilterRuleCollectionAction) MarshalJSON() ([]byte, error) {
 15283  	objectMap := make(map[string]any)
 15284  	populate(objectMap, "type", f.Type)
 15285  	return json.Marshal(objectMap)
 15286  }
 15287  
 15288  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyFilterRuleCollectionAction.
 15289  func (f *FirewallPolicyFilterRuleCollectionAction) UnmarshalJSON(data []byte) error {
 15290  	var rawMsg map[string]json.RawMessage
 15291  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 15292  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15293  	}
 15294  	for key, val := range rawMsg {
 15295  		var err error
 15296  		switch key {
 15297  		case "type":
 15298  			err = unpopulate(val, "Type", &f.Type)
 15299  			delete(rawMsg, key)
 15300  		}
 15301  		if err != nil {
 15302  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15303  		}
 15304  	}
 15305  	return nil
 15306  }
 15307  
 15308  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyHTTPHeaderToInsert.
 15309  func (f FirewallPolicyHTTPHeaderToInsert) MarshalJSON() ([]byte, error) {
 15310  	objectMap := make(map[string]any)
 15311  	populate(objectMap, "headerName", f.HeaderName)
 15312  	populate(objectMap, "headerValue", f.HeaderValue)
 15313  	return json.Marshal(objectMap)
 15314  }
 15315  
 15316  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyHTTPHeaderToInsert.
 15317  func (f *FirewallPolicyHTTPHeaderToInsert) UnmarshalJSON(data []byte) error {
 15318  	var rawMsg map[string]json.RawMessage
 15319  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 15320  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15321  	}
 15322  	for key, val := range rawMsg {
 15323  		var err error
 15324  		switch key {
 15325  		case "headerName":
 15326  			err = unpopulate(val, "HeaderName", &f.HeaderName)
 15327  			delete(rawMsg, key)
 15328  		case "headerValue":
 15329  			err = unpopulate(val, "HeaderValue", &f.HeaderValue)
 15330  			delete(rawMsg, key)
 15331  		}
 15332  		if err != nil {
 15333  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15334  		}
 15335  	}
 15336  	return nil
 15337  }
 15338  
 15339  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyInsights.
 15340  func (f FirewallPolicyInsights) MarshalJSON() ([]byte, error) {
 15341  	objectMap := make(map[string]any)
 15342  	populate(objectMap, "isEnabled", f.IsEnabled)
 15343  	populate(objectMap, "logAnalyticsResources", f.LogAnalyticsResources)
 15344  	populate(objectMap, "retentionDays", f.RetentionDays)
 15345  	return json.Marshal(objectMap)
 15346  }
 15347  
 15348  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyInsights.
 15349  func (f *FirewallPolicyInsights) UnmarshalJSON(data []byte) error {
 15350  	var rawMsg map[string]json.RawMessage
 15351  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 15352  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15353  	}
 15354  	for key, val := range rawMsg {
 15355  		var err error
 15356  		switch key {
 15357  		case "isEnabled":
 15358  			err = unpopulate(val, "IsEnabled", &f.IsEnabled)
 15359  			delete(rawMsg, key)
 15360  		case "logAnalyticsResources":
 15361  			err = unpopulate(val, "LogAnalyticsResources", &f.LogAnalyticsResources)
 15362  			delete(rawMsg, key)
 15363  		case "retentionDays":
 15364  			err = unpopulate(val, "RetentionDays", &f.RetentionDays)
 15365  			delete(rawMsg, key)
 15366  		}
 15367  		if err != nil {
 15368  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15369  		}
 15370  	}
 15371  	return nil
 15372  }
 15373  
 15374  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyIntrusionDetection.
 15375  func (f FirewallPolicyIntrusionDetection) MarshalJSON() ([]byte, error) {
 15376  	objectMap := make(map[string]any)
 15377  	populate(objectMap, "configuration", f.Configuration)
 15378  	populate(objectMap, "mode", f.Mode)
 15379  	populate(objectMap, "profile", f.Profile)
 15380  	return json.Marshal(objectMap)
 15381  }
 15382  
 15383  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyIntrusionDetection.
 15384  func (f *FirewallPolicyIntrusionDetection) UnmarshalJSON(data []byte) error {
 15385  	var rawMsg map[string]json.RawMessage
 15386  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 15387  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15388  	}
 15389  	for key, val := range rawMsg {
 15390  		var err error
 15391  		switch key {
 15392  		case "configuration":
 15393  			err = unpopulate(val, "Configuration", &f.Configuration)
 15394  			delete(rawMsg, key)
 15395  		case "mode":
 15396  			err = unpopulate(val, "Mode", &f.Mode)
 15397  			delete(rawMsg, key)
 15398  		case "profile":
 15399  			err = unpopulate(val, "Profile", &f.Profile)
 15400  			delete(rawMsg, key)
 15401  		}
 15402  		if err != nil {
 15403  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15404  		}
 15405  	}
 15406  	return nil
 15407  }
 15408  
 15409  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyIntrusionDetectionBypassTrafficSpecifications.
 15410  func (f FirewallPolicyIntrusionDetectionBypassTrafficSpecifications) MarshalJSON() ([]byte, error) {
 15411  	objectMap := make(map[string]any)
 15412  	populate(objectMap, "description", f.Description)
 15413  	populate(objectMap, "destinationAddresses", f.DestinationAddresses)
 15414  	populate(objectMap, "destinationIpGroups", f.DestinationIPGroups)
 15415  	populate(objectMap, "destinationPorts", f.DestinationPorts)
 15416  	populate(objectMap, "name", f.Name)
 15417  	populate(objectMap, "protocol", f.Protocol)
 15418  	populate(objectMap, "sourceAddresses", f.SourceAddresses)
 15419  	populate(objectMap, "sourceIpGroups", f.SourceIPGroups)
 15420  	return json.Marshal(objectMap)
 15421  }
 15422  
 15423  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyIntrusionDetectionBypassTrafficSpecifications.
 15424  func (f *FirewallPolicyIntrusionDetectionBypassTrafficSpecifications) UnmarshalJSON(data []byte) error {
 15425  	var rawMsg map[string]json.RawMessage
 15426  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 15427  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15428  	}
 15429  	for key, val := range rawMsg {
 15430  		var err error
 15431  		switch key {
 15432  		case "description":
 15433  			err = unpopulate(val, "Description", &f.Description)
 15434  			delete(rawMsg, key)
 15435  		case "destinationAddresses":
 15436  			err = unpopulate(val, "DestinationAddresses", &f.DestinationAddresses)
 15437  			delete(rawMsg, key)
 15438  		case "destinationIpGroups":
 15439  			err = unpopulate(val, "DestinationIPGroups", &f.DestinationIPGroups)
 15440  			delete(rawMsg, key)
 15441  		case "destinationPorts":
 15442  			err = unpopulate(val, "DestinationPorts", &f.DestinationPorts)
 15443  			delete(rawMsg, key)
 15444  		case "name":
 15445  			err = unpopulate(val, "Name", &f.Name)
 15446  			delete(rawMsg, key)
 15447  		case "protocol":
 15448  			err = unpopulate(val, "Protocol", &f.Protocol)
 15449  			delete(rawMsg, key)
 15450  		case "sourceAddresses":
 15451  			err = unpopulate(val, "SourceAddresses", &f.SourceAddresses)
 15452  			delete(rawMsg, key)
 15453  		case "sourceIpGroups":
 15454  			err = unpopulate(val, "SourceIPGroups", &f.SourceIPGroups)
 15455  			delete(rawMsg, key)
 15456  		}
 15457  		if err != nil {
 15458  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15459  		}
 15460  	}
 15461  	return nil
 15462  }
 15463  
 15464  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyIntrusionDetectionConfiguration.
 15465  func (f FirewallPolicyIntrusionDetectionConfiguration) MarshalJSON() ([]byte, error) {
 15466  	objectMap := make(map[string]any)
 15467  	populate(objectMap, "bypassTrafficSettings", f.BypassTrafficSettings)
 15468  	populate(objectMap, "privateRanges", f.PrivateRanges)
 15469  	populate(objectMap, "signatureOverrides", f.SignatureOverrides)
 15470  	return json.Marshal(objectMap)
 15471  }
 15472  
 15473  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyIntrusionDetectionConfiguration.
 15474  func (f *FirewallPolicyIntrusionDetectionConfiguration) UnmarshalJSON(data []byte) error {
 15475  	var rawMsg map[string]json.RawMessage
 15476  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 15477  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15478  	}
 15479  	for key, val := range rawMsg {
 15480  		var err error
 15481  		switch key {
 15482  		case "bypassTrafficSettings":
 15483  			err = unpopulate(val, "BypassTrafficSettings", &f.BypassTrafficSettings)
 15484  			delete(rawMsg, key)
 15485  		case "privateRanges":
 15486  			err = unpopulate(val, "PrivateRanges", &f.PrivateRanges)
 15487  			delete(rawMsg, key)
 15488  		case "signatureOverrides":
 15489  			err = unpopulate(val, "SignatureOverrides", &f.SignatureOverrides)
 15490  			delete(rawMsg, key)
 15491  		}
 15492  		if err != nil {
 15493  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15494  		}
 15495  	}
 15496  	return nil
 15497  }
 15498  
 15499  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyIntrusionDetectionSignatureSpecification.
 15500  func (f FirewallPolicyIntrusionDetectionSignatureSpecification) MarshalJSON() ([]byte, error) {
 15501  	objectMap := make(map[string]any)
 15502  	populate(objectMap, "id", f.ID)
 15503  	populate(objectMap, "mode", f.Mode)
 15504  	return json.Marshal(objectMap)
 15505  }
 15506  
 15507  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyIntrusionDetectionSignatureSpecification.
 15508  func (f *FirewallPolicyIntrusionDetectionSignatureSpecification) UnmarshalJSON(data []byte) error {
 15509  	var rawMsg map[string]json.RawMessage
 15510  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 15511  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15512  	}
 15513  	for key, val := range rawMsg {
 15514  		var err error
 15515  		switch key {
 15516  		case "id":
 15517  			err = unpopulate(val, "ID", &f.ID)
 15518  			delete(rawMsg, key)
 15519  		case "mode":
 15520  			err = unpopulate(val, "Mode", &f.Mode)
 15521  			delete(rawMsg, key)
 15522  		}
 15523  		if err != nil {
 15524  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15525  		}
 15526  	}
 15527  	return nil
 15528  }
 15529  
 15530  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyListResult.
 15531  func (f FirewallPolicyListResult) MarshalJSON() ([]byte, error) {
 15532  	objectMap := make(map[string]any)
 15533  	populate(objectMap, "nextLink", f.NextLink)
 15534  	populate(objectMap, "value", f.Value)
 15535  	return json.Marshal(objectMap)
 15536  }
 15537  
 15538  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyListResult.
 15539  func (f *FirewallPolicyListResult) UnmarshalJSON(data []byte) error {
 15540  	var rawMsg map[string]json.RawMessage
 15541  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 15542  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15543  	}
 15544  	for key, val := range rawMsg {
 15545  		var err error
 15546  		switch key {
 15547  		case "nextLink":
 15548  			err = unpopulate(val, "NextLink", &f.NextLink)
 15549  			delete(rawMsg, key)
 15550  		case "value":
 15551  			err = unpopulate(val, "Value", &f.Value)
 15552  			delete(rawMsg, key)
 15553  		}
 15554  		if err != nil {
 15555  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15556  		}
 15557  	}
 15558  	return nil
 15559  }
 15560  
 15561  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyLogAnalyticsResources.
 15562  func (f FirewallPolicyLogAnalyticsResources) MarshalJSON() ([]byte, error) {
 15563  	objectMap := make(map[string]any)
 15564  	populate(objectMap, "defaultWorkspaceId", f.DefaultWorkspaceID)
 15565  	populate(objectMap, "workspaces", f.Workspaces)
 15566  	return json.Marshal(objectMap)
 15567  }
 15568  
 15569  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyLogAnalyticsResources.
 15570  func (f *FirewallPolicyLogAnalyticsResources) UnmarshalJSON(data []byte) error {
 15571  	var rawMsg map[string]json.RawMessage
 15572  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 15573  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15574  	}
 15575  	for key, val := range rawMsg {
 15576  		var err error
 15577  		switch key {
 15578  		case "defaultWorkspaceId":
 15579  			err = unpopulate(val, "DefaultWorkspaceID", &f.DefaultWorkspaceID)
 15580  			delete(rawMsg, key)
 15581  		case "workspaces":
 15582  			err = unpopulate(val, "Workspaces", &f.Workspaces)
 15583  			delete(rawMsg, key)
 15584  		}
 15585  		if err != nil {
 15586  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15587  		}
 15588  	}
 15589  	return nil
 15590  }
 15591  
 15592  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyLogAnalyticsWorkspace.
 15593  func (f FirewallPolicyLogAnalyticsWorkspace) MarshalJSON() ([]byte, error) {
 15594  	objectMap := make(map[string]any)
 15595  	populate(objectMap, "region", f.Region)
 15596  	populate(objectMap, "workspaceId", f.WorkspaceID)
 15597  	return json.Marshal(objectMap)
 15598  }
 15599  
 15600  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyLogAnalyticsWorkspace.
 15601  func (f *FirewallPolicyLogAnalyticsWorkspace) UnmarshalJSON(data []byte) error {
 15602  	var rawMsg map[string]json.RawMessage
 15603  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 15604  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15605  	}
 15606  	for key, val := range rawMsg {
 15607  		var err error
 15608  		switch key {
 15609  		case "region":
 15610  			err = unpopulate(val, "Region", &f.Region)
 15611  			delete(rawMsg, key)
 15612  		case "workspaceId":
 15613  			err = unpopulate(val, "WorkspaceID", &f.WorkspaceID)
 15614  			delete(rawMsg, key)
 15615  		}
 15616  		if err != nil {
 15617  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15618  		}
 15619  	}
 15620  	return nil
 15621  }
 15622  
 15623  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyNatRuleCollection.
 15624  func (f FirewallPolicyNatRuleCollection) MarshalJSON() ([]byte, error) {
 15625  	objectMap := make(map[string]any)
 15626  	populate(objectMap, "action", f.Action)
 15627  	populate(objectMap, "name", f.Name)
 15628  	populate(objectMap, "priority", f.Priority)
 15629  	objectMap["ruleCollectionType"] = FirewallPolicyRuleCollectionTypeFirewallPolicyNatRuleCollection
 15630  	populate(objectMap, "rules", f.Rules)
 15631  	return json.Marshal(objectMap)
 15632  }
 15633  
 15634  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyNatRuleCollection.
 15635  func (f *FirewallPolicyNatRuleCollection) UnmarshalJSON(data []byte) error {
 15636  	var rawMsg map[string]json.RawMessage
 15637  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 15638  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15639  	}
 15640  	for key, val := range rawMsg {
 15641  		var err error
 15642  		switch key {
 15643  		case "action":
 15644  			err = unpopulate(val, "Action", &f.Action)
 15645  			delete(rawMsg, key)
 15646  		case "name":
 15647  			err = unpopulate(val, "Name", &f.Name)
 15648  			delete(rawMsg, key)
 15649  		case "priority":
 15650  			err = unpopulate(val, "Priority", &f.Priority)
 15651  			delete(rawMsg, key)
 15652  		case "ruleCollectionType":
 15653  			err = unpopulate(val, "RuleCollectionType", &f.RuleCollectionType)
 15654  			delete(rawMsg, key)
 15655  		case "rules":
 15656  			f.Rules, err = unmarshalFirewallPolicyRuleClassificationArray(val)
 15657  			delete(rawMsg, key)
 15658  		}
 15659  		if err != nil {
 15660  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15661  		}
 15662  	}
 15663  	return nil
 15664  }
 15665  
 15666  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyNatRuleCollectionAction.
 15667  func (f FirewallPolicyNatRuleCollectionAction) MarshalJSON() ([]byte, error) {
 15668  	objectMap := make(map[string]any)
 15669  	populate(objectMap, "type", f.Type)
 15670  	return json.Marshal(objectMap)
 15671  }
 15672  
 15673  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyNatRuleCollectionAction.
 15674  func (f *FirewallPolicyNatRuleCollectionAction) UnmarshalJSON(data []byte) error {
 15675  	var rawMsg map[string]json.RawMessage
 15676  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 15677  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15678  	}
 15679  	for key, val := range rawMsg {
 15680  		var err error
 15681  		switch key {
 15682  		case "type":
 15683  			err = unpopulate(val, "Type", &f.Type)
 15684  			delete(rawMsg, key)
 15685  		}
 15686  		if err != nil {
 15687  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15688  		}
 15689  	}
 15690  	return nil
 15691  }
 15692  
 15693  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyPropertiesFormat.
 15694  func (f FirewallPolicyPropertiesFormat) MarshalJSON() ([]byte, error) {
 15695  	objectMap := make(map[string]any)
 15696  	populate(objectMap, "basePolicy", f.BasePolicy)
 15697  	populate(objectMap, "childPolicies", f.ChildPolicies)
 15698  	populate(objectMap, "dnsSettings", f.DNSSettings)
 15699  	populate(objectMap, "explicitProxySettings", f.ExplicitProxySettings)
 15700  	populate(objectMap, "firewalls", f.Firewalls)
 15701  	populate(objectMap, "insights", f.Insights)
 15702  	populate(objectMap, "intrusionDetection", f.IntrusionDetection)
 15703  	populate(objectMap, "provisioningState", f.ProvisioningState)
 15704  	populate(objectMap, "ruleCollectionGroups", f.RuleCollectionGroups)
 15705  	populate(objectMap, "sku", f.SKU)
 15706  	populate(objectMap, "sql", f.SQL)
 15707  	populate(objectMap, "size", f.Size)
 15708  	populate(objectMap, "snat", f.Snat)
 15709  	populate(objectMap, "threatIntelMode", f.ThreatIntelMode)
 15710  	populate(objectMap, "threatIntelWhitelist", f.ThreatIntelWhitelist)
 15711  	populate(objectMap, "transportSecurity", f.TransportSecurity)
 15712  	return json.Marshal(objectMap)
 15713  }
 15714  
 15715  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyPropertiesFormat.
 15716  func (f *FirewallPolicyPropertiesFormat) UnmarshalJSON(data []byte) error {
 15717  	var rawMsg map[string]json.RawMessage
 15718  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 15719  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15720  	}
 15721  	for key, val := range rawMsg {
 15722  		var err error
 15723  		switch key {
 15724  		case "basePolicy":
 15725  			err = unpopulate(val, "BasePolicy", &f.BasePolicy)
 15726  			delete(rawMsg, key)
 15727  		case "childPolicies":
 15728  			err = unpopulate(val, "ChildPolicies", &f.ChildPolicies)
 15729  			delete(rawMsg, key)
 15730  		case "dnsSettings":
 15731  			err = unpopulate(val, "DNSSettings", &f.DNSSettings)
 15732  			delete(rawMsg, key)
 15733  		case "explicitProxySettings":
 15734  			err = unpopulate(val, "ExplicitProxySettings", &f.ExplicitProxySettings)
 15735  			delete(rawMsg, key)
 15736  		case "firewalls":
 15737  			err = unpopulate(val, "Firewalls", &f.Firewalls)
 15738  			delete(rawMsg, key)
 15739  		case "insights":
 15740  			err = unpopulate(val, "Insights", &f.Insights)
 15741  			delete(rawMsg, key)
 15742  		case "intrusionDetection":
 15743  			err = unpopulate(val, "IntrusionDetection", &f.IntrusionDetection)
 15744  			delete(rawMsg, key)
 15745  		case "provisioningState":
 15746  			err = unpopulate(val, "ProvisioningState", &f.ProvisioningState)
 15747  			delete(rawMsg, key)
 15748  		case "ruleCollectionGroups":
 15749  			err = unpopulate(val, "RuleCollectionGroups", &f.RuleCollectionGroups)
 15750  			delete(rawMsg, key)
 15751  		case "sku":
 15752  			err = unpopulate(val, "SKU", &f.SKU)
 15753  			delete(rawMsg, key)
 15754  		case "sql":
 15755  			err = unpopulate(val, "SQL", &f.SQL)
 15756  			delete(rawMsg, key)
 15757  		case "size":
 15758  			err = unpopulate(val, "Size", &f.Size)
 15759  			delete(rawMsg, key)
 15760  		case "snat":
 15761  			err = unpopulate(val, "Snat", &f.Snat)
 15762  			delete(rawMsg, key)
 15763  		case "threatIntelMode":
 15764  			err = unpopulate(val, "ThreatIntelMode", &f.ThreatIntelMode)
 15765  			delete(rawMsg, key)
 15766  		case "threatIntelWhitelist":
 15767  			err = unpopulate(val, "ThreatIntelWhitelist", &f.ThreatIntelWhitelist)
 15768  			delete(rawMsg, key)
 15769  		case "transportSecurity":
 15770  			err = unpopulate(val, "TransportSecurity", &f.TransportSecurity)
 15771  			delete(rawMsg, key)
 15772  		}
 15773  		if err != nil {
 15774  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15775  		}
 15776  	}
 15777  	return nil
 15778  }
 15779  
 15780  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyRule.
 15781  func (f FirewallPolicyRule) MarshalJSON() ([]byte, error) {
 15782  	objectMap := make(map[string]any)
 15783  	populate(objectMap, "description", f.Description)
 15784  	populate(objectMap, "name", f.Name)
 15785  	objectMap["ruleType"] = f.RuleType
 15786  	return json.Marshal(objectMap)
 15787  }
 15788  
 15789  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyRule.
 15790  func (f *FirewallPolicyRule) UnmarshalJSON(data []byte) error {
 15791  	var rawMsg map[string]json.RawMessage
 15792  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 15793  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15794  	}
 15795  	for key, val := range rawMsg {
 15796  		var err error
 15797  		switch key {
 15798  		case "description":
 15799  			err = unpopulate(val, "Description", &f.Description)
 15800  			delete(rawMsg, key)
 15801  		case "name":
 15802  			err = unpopulate(val, "Name", &f.Name)
 15803  			delete(rawMsg, key)
 15804  		case "ruleType":
 15805  			err = unpopulate(val, "RuleType", &f.RuleType)
 15806  			delete(rawMsg, key)
 15807  		}
 15808  		if err != nil {
 15809  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15810  		}
 15811  	}
 15812  	return nil
 15813  }
 15814  
 15815  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyRuleApplicationProtocol.
 15816  func (f FirewallPolicyRuleApplicationProtocol) MarshalJSON() ([]byte, error) {
 15817  	objectMap := make(map[string]any)
 15818  	populate(objectMap, "port", f.Port)
 15819  	populate(objectMap, "protocolType", f.ProtocolType)
 15820  	return json.Marshal(objectMap)
 15821  }
 15822  
 15823  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyRuleApplicationProtocol.
 15824  func (f *FirewallPolicyRuleApplicationProtocol) UnmarshalJSON(data []byte) error {
 15825  	var rawMsg map[string]json.RawMessage
 15826  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 15827  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15828  	}
 15829  	for key, val := range rawMsg {
 15830  		var err error
 15831  		switch key {
 15832  		case "port":
 15833  			err = unpopulate(val, "Port", &f.Port)
 15834  			delete(rawMsg, key)
 15835  		case "protocolType":
 15836  			err = unpopulate(val, "ProtocolType", &f.ProtocolType)
 15837  			delete(rawMsg, key)
 15838  		}
 15839  		if err != nil {
 15840  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15841  		}
 15842  	}
 15843  	return nil
 15844  }
 15845  
 15846  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyRuleCollection.
 15847  func (f FirewallPolicyRuleCollection) MarshalJSON() ([]byte, error) {
 15848  	objectMap := make(map[string]any)
 15849  	populate(objectMap, "name", f.Name)
 15850  	populate(objectMap, "priority", f.Priority)
 15851  	objectMap["ruleCollectionType"] = f.RuleCollectionType
 15852  	return json.Marshal(objectMap)
 15853  }
 15854  
 15855  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyRuleCollection.
 15856  func (f *FirewallPolicyRuleCollection) UnmarshalJSON(data []byte) error {
 15857  	var rawMsg map[string]json.RawMessage
 15858  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 15859  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15860  	}
 15861  	for key, val := range rawMsg {
 15862  		var err error
 15863  		switch key {
 15864  		case "name":
 15865  			err = unpopulate(val, "Name", &f.Name)
 15866  			delete(rawMsg, key)
 15867  		case "priority":
 15868  			err = unpopulate(val, "Priority", &f.Priority)
 15869  			delete(rawMsg, key)
 15870  		case "ruleCollectionType":
 15871  			err = unpopulate(val, "RuleCollectionType", &f.RuleCollectionType)
 15872  			delete(rawMsg, key)
 15873  		}
 15874  		if err != nil {
 15875  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15876  		}
 15877  	}
 15878  	return nil
 15879  }
 15880  
 15881  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyRuleCollectionGroup.
 15882  func (f FirewallPolicyRuleCollectionGroup) MarshalJSON() ([]byte, error) {
 15883  	objectMap := make(map[string]any)
 15884  	populate(objectMap, "etag", f.Etag)
 15885  	populate(objectMap, "id", f.ID)
 15886  	populate(objectMap, "name", f.Name)
 15887  	populate(objectMap, "properties", f.Properties)
 15888  	populate(objectMap, "type", f.Type)
 15889  	return json.Marshal(objectMap)
 15890  }
 15891  
 15892  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyRuleCollectionGroup.
 15893  func (f *FirewallPolicyRuleCollectionGroup) UnmarshalJSON(data []byte) error {
 15894  	var rawMsg map[string]json.RawMessage
 15895  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 15896  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15897  	}
 15898  	for key, val := range rawMsg {
 15899  		var err error
 15900  		switch key {
 15901  		case "etag":
 15902  			err = unpopulate(val, "Etag", &f.Etag)
 15903  			delete(rawMsg, key)
 15904  		case "id":
 15905  			err = unpopulate(val, "ID", &f.ID)
 15906  			delete(rawMsg, key)
 15907  		case "name":
 15908  			err = unpopulate(val, "Name", &f.Name)
 15909  			delete(rawMsg, key)
 15910  		case "properties":
 15911  			err = unpopulate(val, "Properties", &f.Properties)
 15912  			delete(rawMsg, key)
 15913  		case "type":
 15914  			err = unpopulate(val, "Type", &f.Type)
 15915  			delete(rawMsg, key)
 15916  		}
 15917  		if err != nil {
 15918  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15919  		}
 15920  	}
 15921  	return nil
 15922  }
 15923  
 15924  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyRuleCollectionGroupDraft.
 15925  func (f FirewallPolicyRuleCollectionGroupDraft) MarshalJSON() ([]byte, error) {
 15926  	objectMap := make(map[string]any)
 15927  	populate(objectMap, "id", f.ID)
 15928  	populate(objectMap, "name", f.Name)
 15929  	populate(objectMap, "properties", f.Properties)
 15930  	populate(objectMap, "type", f.Type)
 15931  	return json.Marshal(objectMap)
 15932  }
 15933  
 15934  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyRuleCollectionGroupDraft.
 15935  func (f *FirewallPolicyRuleCollectionGroupDraft) UnmarshalJSON(data []byte) error {
 15936  	var rawMsg map[string]json.RawMessage
 15937  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 15938  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15939  	}
 15940  	for key, val := range rawMsg {
 15941  		var err error
 15942  		switch key {
 15943  		case "id":
 15944  			err = unpopulate(val, "ID", &f.ID)
 15945  			delete(rawMsg, key)
 15946  		case "name":
 15947  			err = unpopulate(val, "Name", &f.Name)
 15948  			delete(rawMsg, key)
 15949  		case "properties":
 15950  			err = unpopulate(val, "Properties", &f.Properties)
 15951  			delete(rawMsg, key)
 15952  		case "type":
 15953  			err = unpopulate(val, "Type", &f.Type)
 15954  			delete(rawMsg, key)
 15955  		}
 15956  		if err != nil {
 15957  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15958  		}
 15959  	}
 15960  	return nil
 15961  }
 15962  
 15963  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyRuleCollectionGroupDraftProperties.
 15964  func (f FirewallPolicyRuleCollectionGroupDraftProperties) MarshalJSON() ([]byte, error) {
 15965  	objectMap := make(map[string]any)
 15966  	populate(objectMap, "priority", f.Priority)
 15967  	populate(objectMap, "ruleCollections", f.RuleCollections)
 15968  	populate(objectMap, "size", f.Size)
 15969  	return json.Marshal(objectMap)
 15970  }
 15971  
 15972  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyRuleCollectionGroupDraftProperties.
 15973  func (f *FirewallPolicyRuleCollectionGroupDraftProperties) UnmarshalJSON(data []byte) error {
 15974  	var rawMsg map[string]json.RawMessage
 15975  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 15976  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15977  	}
 15978  	for key, val := range rawMsg {
 15979  		var err error
 15980  		switch key {
 15981  		case "priority":
 15982  			err = unpopulate(val, "Priority", &f.Priority)
 15983  			delete(rawMsg, key)
 15984  		case "ruleCollections":
 15985  			f.RuleCollections, err = unmarshalFirewallPolicyRuleCollectionClassificationArray(val)
 15986  			delete(rawMsg, key)
 15987  		case "size":
 15988  			err = unpopulate(val, "Size", &f.Size)
 15989  			delete(rawMsg, key)
 15990  		}
 15991  		if err != nil {
 15992  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 15993  		}
 15994  	}
 15995  	return nil
 15996  }
 15997  
 15998  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyRuleCollectionGroupListResult.
 15999  func (f FirewallPolicyRuleCollectionGroupListResult) MarshalJSON() ([]byte, error) {
 16000  	objectMap := make(map[string]any)
 16001  	populate(objectMap, "nextLink", f.NextLink)
 16002  	populate(objectMap, "value", f.Value)
 16003  	return json.Marshal(objectMap)
 16004  }
 16005  
 16006  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyRuleCollectionGroupListResult.
 16007  func (f *FirewallPolicyRuleCollectionGroupListResult) UnmarshalJSON(data []byte) error {
 16008  	var rawMsg map[string]json.RawMessage
 16009  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16010  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16011  	}
 16012  	for key, val := range rawMsg {
 16013  		var err error
 16014  		switch key {
 16015  		case "nextLink":
 16016  			err = unpopulate(val, "NextLink", &f.NextLink)
 16017  			delete(rawMsg, key)
 16018  		case "value":
 16019  			err = unpopulate(val, "Value", &f.Value)
 16020  			delete(rawMsg, key)
 16021  		}
 16022  		if err != nil {
 16023  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16024  		}
 16025  	}
 16026  	return nil
 16027  }
 16028  
 16029  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyRuleCollectionGroupProperties.
 16030  func (f FirewallPolicyRuleCollectionGroupProperties) MarshalJSON() ([]byte, error) {
 16031  	objectMap := make(map[string]any)
 16032  	populate(objectMap, "priority", f.Priority)
 16033  	populate(objectMap, "provisioningState", f.ProvisioningState)
 16034  	populate(objectMap, "ruleCollections", f.RuleCollections)
 16035  	populate(objectMap, "size", f.Size)
 16036  	return json.Marshal(objectMap)
 16037  }
 16038  
 16039  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyRuleCollectionGroupProperties.
 16040  func (f *FirewallPolicyRuleCollectionGroupProperties) UnmarshalJSON(data []byte) error {
 16041  	var rawMsg map[string]json.RawMessage
 16042  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16043  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16044  	}
 16045  	for key, val := range rawMsg {
 16046  		var err error
 16047  		switch key {
 16048  		case "priority":
 16049  			err = unpopulate(val, "Priority", &f.Priority)
 16050  			delete(rawMsg, key)
 16051  		case "provisioningState":
 16052  			err = unpopulate(val, "ProvisioningState", &f.ProvisioningState)
 16053  			delete(rawMsg, key)
 16054  		case "ruleCollections":
 16055  			f.RuleCollections, err = unmarshalFirewallPolicyRuleCollectionClassificationArray(val)
 16056  			delete(rawMsg, key)
 16057  		case "size":
 16058  			err = unpopulate(val, "Size", &f.Size)
 16059  			delete(rawMsg, key)
 16060  		}
 16061  		if err != nil {
 16062  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16063  		}
 16064  	}
 16065  	return nil
 16066  }
 16067  
 16068  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicySKU.
 16069  func (f FirewallPolicySKU) MarshalJSON() ([]byte, error) {
 16070  	objectMap := make(map[string]any)
 16071  	populate(objectMap, "tier", f.Tier)
 16072  	return json.Marshal(objectMap)
 16073  }
 16074  
 16075  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicySKU.
 16076  func (f *FirewallPolicySKU) UnmarshalJSON(data []byte) error {
 16077  	var rawMsg map[string]json.RawMessage
 16078  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16079  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16080  	}
 16081  	for key, val := range rawMsg {
 16082  		var err error
 16083  		switch key {
 16084  		case "tier":
 16085  			err = unpopulate(val, "Tier", &f.Tier)
 16086  			delete(rawMsg, key)
 16087  		}
 16088  		if err != nil {
 16089  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16090  		}
 16091  	}
 16092  	return nil
 16093  }
 16094  
 16095  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicySNAT.
 16096  func (f FirewallPolicySNAT) MarshalJSON() ([]byte, error) {
 16097  	objectMap := make(map[string]any)
 16098  	populate(objectMap, "autoLearnPrivateRanges", f.AutoLearnPrivateRanges)
 16099  	populate(objectMap, "privateRanges", f.PrivateRanges)
 16100  	return json.Marshal(objectMap)
 16101  }
 16102  
 16103  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicySNAT.
 16104  func (f *FirewallPolicySNAT) UnmarshalJSON(data []byte) error {
 16105  	var rawMsg map[string]json.RawMessage
 16106  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16107  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16108  	}
 16109  	for key, val := range rawMsg {
 16110  		var err error
 16111  		switch key {
 16112  		case "autoLearnPrivateRanges":
 16113  			err = unpopulate(val, "AutoLearnPrivateRanges", &f.AutoLearnPrivateRanges)
 16114  			delete(rawMsg, key)
 16115  		case "privateRanges":
 16116  			err = unpopulate(val, "PrivateRanges", &f.PrivateRanges)
 16117  			delete(rawMsg, key)
 16118  		}
 16119  		if err != nil {
 16120  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16121  		}
 16122  	}
 16123  	return nil
 16124  }
 16125  
 16126  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicySQL.
 16127  func (f FirewallPolicySQL) MarshalJSON() ([]byte, error) {
 16128  	objectMap := make(map[string]any)
 16129  	populate(objectMap, "allowSqlRedirect", f.AllowSQLRedirect)
 16130  	return json.Marshal(objectMap)
 16131  }
 16132  
 16133  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicySQL.
 16134  func (f *FirewallPolicySQL) UnmarshalJSON(data []byte) error {
 16135  	var rawMsg map[string]json.RawMessage
 16136  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16137  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16138  	}
 16139  	for key, val := range rawMsg {
 16140  		var err error
 16141  		switch key {
 16142  		case "allowSqlRedirect":
 16143  			err = unpopulate(val, "AllowSQLRedirect", &f.AllowSQLRedirect)
 16144  			delete(rawMsg, key)
 16145  		}
 16146  		if err != nil {
 16147  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16148  		}
 16149  	}
 16150  	return nil
 16151  }
 16152  
 16153  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyThreatIntelWhitelist.
 16154  func (f FirewallPolicyThreatIntelWhitelist) MarshalJSON() ([]byte, error) {
 16155  	objectMap := make(map[string]any)
 16156  	populate(objectMap, "fqdns", f.Fqdns)
 16157  	populate(objectMap, "ipAddresses", f.IPAddresses)
 16158  	return json.Marshal(objectMap)
 16159  }
 16160  
 16161  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyThreatIntelWhitelist.
 16162  func (f *FirewallPolicyThreatIntelWhitelist) UnmarshalJSON(data []byte) error {
 16163  	var rawMsg map[string]json.RawMessage
 16164  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16165  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16166  	}
 16167  	for key, val := range rawMsg {
 16168  		var err error
 16169  		switch key {
 16170  		case "fqdns":
 16171  			err = unpopulate(val, "Fqdns", &f.Fqdns)
 16172  			delete(rawMsg, key)
 16173  		case "ipAddresses":
 16174  			err = unpopulate(val, "IPAddresses", &f.IPAddresses)
 16175  			delete(rawMsg, key)
 16176  		}
 16177  		if err != nil {
 16178  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16179  		}
 16180  	}
 16181  	return nil
 16182  }
 16183  
 16184  // MarshalJSON implements the json.Marshaller interface for type FirewallPolicyTransportSecurity.
 16185  func (f FirewallPolicyTransportSecurity) MarshalJSON() ([]byte, error) {
 16186  	objectMap := make(map[string]any)
 16187  	populate(objectMap, "certificateAuthority", f.CertificateAuthority)
 16188  	return json.Marshal(objectMap)
 16189  }
 16190  
 16191  // UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyTransportSecurity.
 16192  func (f *FirewallPolicyTransportSecurity) UnmarshalJSON(data []byte) error {
 16193  	var rawMsg map[string]json.RawMessage
 16194  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16195  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16196  	}
 16197  	for key, val := range rawMsg {
 16198  		var err error
 16199  		switch key {
 16200  		case "certificateAuthority":
 16201  			err = unpopulate(val, "CertificateAuthority", &f.CertificateAuthority)
 16202  			delete(rawMsg, key)
 16203  		}
 16204  		if err != nil {
 16205  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16206  		}
 16207  	}
 16208  	return nil
 16209  }
 16210  
 16211  // MarshalJSON implements the json.Marshaller interface for type FlowLog.
 16212  func (f FlowLog) MarshalJSON() ([]byte, error) {
 16213  	objectMap := make(map[string]any)
 16214  	populate(objectMap, "etag", f.Etag)
 16215  	populate(objectMap, "id", f.ID)
 16216  	populate(objectMap, "identity", f.Identity)
 16217  	populate(objectMap, "location", f.Location)
 16218  	populate(objectMap, "name", f.Name)
 16219  	populate(objectMap, "properties", f.Properties)
 16220  	populate(objectMap, "tags", f.Tags)
 16221  	populate(objectMap, "type", f.Type)
 16222  	return json.Marshal(objectMap)
 16223  }
 16224  
 16225  // UnmarshalJSON implements the json.Unmarshaller interface for type FlowLog.
 16226  func (f *FlowLog) UnmarshalJSON(data []byte) error {
 16227  	var rawMsg map[string]json.RawMessage
 16228  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16229  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16230  	}
 16231  	for key, val := range rawMsg {
 16232  		var err error
 16233  		switch key {
 16234  		case "etag":
 16235  			err = unpopulate(val, "Etag", &f.Etag)
 16236  			delete(rawMsg, key)
 16237  		case "id":
 16238  			err = unpopulate(val, "ID", &f.ID)
 16239  			delete(rawMsg, key)
 16240  		case "identity":
 16241  			err = unpopulate(val, "Identity", &f.Identity)
 16242  			delete(rawMsg, key)
 16243  		case "location":
 16244  			err = unpopulate(val, "Location", &f.Location)
 16245  			delete(rawMsg, key)
 16246  		case "name":
 16247  			err = unpopulate(val, "Name", &f.Name)
 16248  			delete(rawMsg, key)
 16249  		case "properties":
 16250  			err = unpopulate(val, "Properties", &f.Properties)
 16251  			delete(rawMsg, key)
 16252  		case "tags":
 16253  			err = unpopulate(val, "Tags", &f.Tags)
 16254  			delete(rawMsg, key)
 16255  		case "type":
 16256  			err = unpopulate(val, "Type", &f.Type)
 16257  			delete(rawMsg, key)
 16258  		}
 16259  		if err != nil {
 16260  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16261  		}
 16262  	}
 16263  	return nil
 16264  }
 16265  
 16266  // MarshalJSON implements the json.Marshaller interface for type FlowLogFormatParameters.
 16267  func (f FlowLogFormatParameters) MarshalJSON() ([]byte, error) {
 16268  	objectMap := make(map[string]any)
 16269  	populate(objectMap, "type", f.Type)
 16270  	populate(objectMap, "version", f.Version)
 16271  	return json.Marshal(objectMap)
 16272  }
 16273  
 16274  // UnmarshalJSON implements the json.Unmarshaller interface for type FlowLogFormatParameters.
 16275  func (f *FlowLogFormatParameters) UnmarshalJSON(data []byte) error {
 16276  	var rawMsg map[string]json.RawMessage
 16277  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16278  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16279  	}
 16280  	for key, val := range rawMsg {
 16281  		var err error
 16282  		switch key {
 16283  		case "type":
 16284  			err = unpopulate(val, "Type", &f.Type)
 16285  			delete(rawMsg, key)
 16286  		case "version":
 16287  			err = unpopulate(val, "Version", &f.Version)
 16288  			delete(rawMsg, key)
 16289  		}
 16290  		if err != nil {
 16291  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16292  		}
 16293  	}
 16294  	return nil
 16295  }
 16296  
 16297  // MarshalJSON implements the json.Marshaller interface for type FlowLogInformation.
 16298  func (f FlowLogInformation) MarshalJSON() ([]byte, error) {
 16299  	objectMap := make(map[string]any)
 16300  	populate(objectMap, "flowAnalyticsConfiguration", f.FlowAnalyticsConfiguration)
 16301  	populate(objectMap, "identity", f.Identity)
 16302  	populate(objectMap, "properties", f.Properties)
 16303  	populate(objectMap, "targetResourceId", f.TargetResourceID)
 16304  	return json.Marshal(objectMap)
 16305  }
 16306  
 16307  // UnmarshalJSON implements the json.Unmarshaller interface for type FlowLogInformation.
 16308  func (f *FlowLogInformation) UnmarshalJSON(data []byte) error {
 16309  	var rawMsg map[string]json.RawMessage
 16310  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16311  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16312  	}
 16313  	for key, val := range rawMsg {
 16314  		var err error
 16315  		switch key {
 16316  		case "flowAnalyticsConfiguration":
 16317  			err = unpopulate(val, "FlowAnalyticsConfiguration", &f.FlowAnalyticsConfiguration)
 16318  			delete(rawMsg, key)
 16319  		case "identity":
 16320  			err = unpopulate(val, "Identity", &f.Identity)
 16321  			delete(rawMsg, key)
 16322  		case "properties":
 16323  			err = unpopulate(val, "Properties", &f.Properties)
 16324  			delete(rawMsg, key)
 16325  		case "targetResourceId":
 16326  			err = unpopulate(val, "TargetResourceID", &f.TargetResourceID)
 16327  			delete(rawMsg, key)
 16328  		}
 16329  		if err != nil {
 16330  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16331  		}
 16332  	}
 16333  	return nil
 16334  }
 16335  
 16336  // MarshalJSON implements the json.Marshaller interface for type FlowLogListResult.
 16337  func (f FlowLogListResult) MarshalJSON() ([]byte, error) {
 16338  	objectMap := make(map[string]any)
 16339  	populate(objectMap, "nextLink", f.NextLink)
 16340  	populate(objectMap, "value", f.Value)
 16341  	return json.Marshal(objectMap)
 16342  }
 16343  
 16344  // UnmarshalJSON implements the json.Unmarshaller interface for type FlowLogListResult.
 16345  func (f *FlowLogListResult) UnmarshalJSON(data []byte) error {
 16346  	var rawMsg map[string]json.RawMessage
 16347  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16348  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16349  	}
 16350  	for key, val := range rawMsg {
 16351  		var err error
 16352  		switch key {
 16353  		case "nextLink":
 16354  			err = unpopulate(val, "NextLink", &f.NextLink)
 16355  			delete(rawMsg, key)
 16356  		case "value":
 16357  			err = unpopulate(val, "Value", &f.Value)
 16358  			delete(rawMsg, key)
 16359  		}
 16360  		if err != nil {
 16361  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16362  		}
 16363  	}
 16364  	return nil
 16365  }
 16366  
 16367  // MarshalJSON implements the json.Marshaller interface for type FlowLogProperties.
 16368  func (f FlowLogProperties) MarshalJSON() ([]byte, error) {
 16369  	objectMap := make(map[string]any)
 16370  	populate(objectMap, "enabled", f.Enabled)
 16371  	populate(objectMap, "enabledFilteringCriteria", f.EnabledFilteringCriteria)
 16372  	populate(objectMap, "format", f.Format)
 16373  	populate(objectMap, "retentionPolicy", f.RetentionPolicy)
 16374  	populate(objectMap, "storageId", f.StorageID)
 16375  	return json.Marshal(objectMap)
 16376  }
 16377  
 16378  // UnmarshalJSON implements the json.Unmarshaller interface for type FlowLogProperties.
 16379  func (f *FlowLogProperties) UnmarshalJSON(data []byte) error {
 16380  	var rawMsg map[string]json.RawMessage
 16381  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16382  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16383  	}
 16384  	for key, val := range rawMsg {
 16385  		var err error
 16386  		switch key {
 16387  		case "enabled":
 16388  			err = unpopulate(val, "Enabled", &f.Enabled)
 16389  			delete(rawMsg, key)
 16390  		case "enabledFilteringCriteria":
 16391  			err = unpopulate(val, "EnabledFilteringCriteria", &f.EnabledFilteringCriteria)
 16392  			delete(rawMsg, key)
 16393  		case "format":
 16394  			err = unpopulate(val, "Format", &f.Format)
 16395  			delete(rawMsg, key)
 16396  		case "retentionPolicy":
 16397  			err = unpopulate(val, "RetentionPolicy", &f.RetentionPolicy)
 16398  			delete(rawMsg, key)
 16399  		case "storageId":
 16400  			err = unpopulate(val, "StorageID", &f.StorageID)
 16401  			delete(rawMsg, key)
 16402  		}
 16403  		if err != nil {
 16404  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16405  		}
 16406  	}
 16407  	return nil
 16408  }
 16409  
 16410  // MarshalJSON implements the json.Marshaller interface for type FlowLogPropertiesFormat.
 16411  func (f FlowLogPropertiesFormat) MarshalJSON() ([]byte, error) {
 16412  	objectMap := make(map[string]any)
 16413  	populate(objectMap, "enabled", f.Enabled)
 16414  	populate(objectMap, "enabledFilteringCriteria", f.EnabledFilteringCriteria)
 16415  	populate(objectMap, "flowAnalyticsConfiguration", f.FlowAnalyticsConfiguration)
 16416  	populate(objectMap, "format", f.Format)
 16417  	populate(objectMap, "provisioningState", f.ProvisioningState)
 16418  	populate(objectMap, "retentionPolicy", f.RetentionPolicy)
 16419  	populate(objectMap, "storageId", f.StorageID)
 16420  	populate(objectMap, "targetResourceGuid", f.TargetResourceGUID)
 16421  	populate(objectMap, "targetResourceId", f.TargetResourceID)
 16422  	return json.Marshal(objectMap)
 16423  }
 16424  
 16425  // UnmarshalJSON implements the json.Unmarshaller interface for type FlowLogPropertiesFormat.
 16426  func (f *FlowLogPropertiesFormat) UnmarshalJSON(data []byte) error {
 16427  	var rawMsg map[string]json.RawMessage
 16428  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16429  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16430  	}
 16431  	for key, val := range rawMsg {
 16432  		var err error
 16433  		switch key {
 16434  		case "enabled":
 16435  			err = unpopulate(val, "Enabled", &f.Enabled)
 16436  			delete(rawMsg, key)
 16437  		case "enabledFilteringCriteria":
 16438  			err = unpopulate(val, "EnabledFilteringCriteria", &f.EnabledFilteringCriteria)
 16439  			delete(rawMsg, key)
 16440  		case "flowAnalyticsConfiguration":
 16441  			err = unpopulate(val, "FlowAnalyticsConfiguration", &f.FlowAnalyticsConfiguration)
 16442  			delete(rawMsg, key)
 16443  		case "format":
 16444  			err = unpopulate(val, "Format", &f.Format)
 16445  			delete(rawMsg, key)
 16446  		case "provisioningState":
 16447  			err = unpopulate(val, "ProvisioningState", &f.ProvisioningState)
 16448  			delete(rawMsg, key)
 16449  		case "retentionPolicy":
 16450  			err = unpopulate(val, "RetentionPolicy", &f.RetentionPolicy)
 16451  			delete(rawMsg, key)
 16452  		case "storageId":
 16453  			err = unpopulate(val, "StorageID", &f.StorageID)
 16454  			delete(rawMsg, key)
 16455  		case "targetResourceGuid":
 16456  			err = unpopulate(val, "TargetResourceGUID", &f.TargetResourceGUID)
 16457  			delete(rawMsg, key)
 16458  		case "targetResourceId":
 16459  			err = unpopulate(val, "TargetResourceID", &f.TargetResourceID)
 16460  			delete(rawMsg, key)
 16461  		}
 16462  		if err != nil {
 16463  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16464  		}
 16465  	}
 16466  	return nil
 16467  }
 16468  
 16469  // MarshalJSON implements the json.Marshaller interface for type FlowLogStatusParameters.
 16470  func (f FlowLogStatusParameters) MarshalJSON() ([]byte, error) {
 16471  	objectMap := make(map[string]any)
 16472  	populate(objectMap, "targetResourceId", f.TargetResourceID)
 16473  	return json.Marshal(objectMap)
 16474  }
 16475  
 16476  // UnmarshalJSON implements the json.Unmarshaller interface for type FlowLogStatusParameters.
 16477  func (f *FlowLogStatusParameters) UnmarshalJSON(data []byte) error {
 16478  	var rawMsg map[string]json.RawMessage
 16479  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16480  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16481  	}
 16482  	for key, val := range rawMsg {
 16483  		var err error
 16484  		switch key {
 16485  		case "targetResourceId":
 16486  			err = unpopulate(val, "TargetResourceID", &f.TargetResourceID)
 16487  			delete(rawMsg, key)
 16488  		}
 16489  		if err != nil {
 16490  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16491  		}
 16492  	}
 16493  	return nil
 16494  }
 16495  
 16496  // MarshalJSON implements the json.Marshaller interface for type FrontendIPConfiguration.
 16497  func (f FrontendIPConfiguration) MarshalJSON() ([]byte, error) {
 16498  	objectMap := make(map[string]any)
 16499  	populate(objectMap, "etag", f.Etag)
 16500  	populate(objectMap, "id", f.ID)
 16501  	populate(objectMap, "name", f.Name)
 16502  	populate(objectMap, "properties", f.Properties)
 16503  	populate(objectMap, "type", f.Type)
 16504  	populate(objectMap, "zones", f.Zones)
 16505  	return json.Marshal(objectMap)
 16506  }
 16507  
 16508  // UnmarshalJSON implements the json.Unmarshaller interface for type FrontendIPConfiguration.
 16509  func (f *FrontendIPConfiguration) UnmarshalJSON(data []byte) error {
 16510  	var rawMsg map[string]json.RawMessage
 16511  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16512  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16513  	}
 16514  	for key, val := range rawMsg {
 16515  		var err error
 16516  		switch key {
 16517  		case "etag":
 16518  			err = unpopulate(val, "Etag", &f.Etag)
 16519  			delete(rawMsg, key)
 16520  		case "id":
 16521  			err = unpopulate(val, "ID", &f.ID)
 16522  			delete(rawMsg, key)
 16523  		case "name":
 16524  			err = unpopulate(val, "Name", &f.Name)
 16525  			delete(rawMsg, key)
 16526  		case "properties":
 16527  			err = unpopulate(val, "Properties", &f.Properties)
 16528  			delete(rawMsg, key)
 16529  		case "type":
 16530  			err = unpopulate(val, "Type", &f.Type)
 16531  			delete(rawMsg, key)
 16532  		case "zones":
 16533  			err = unpopulate(val, "Zones", &f.Zones)
 16534  			delete(rawMsg, key)
 16535  		}
 16536  		if err != nil {
 16537  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16538  		}
 16539  	}
 16540  	return nil
 16541  }
 16542  
 16543  // MarshalJSON implements the json.Marshaller interface for type FrontendIPConfigurationPropertiesFormat.
 16544  func (f FrontendIPConfigurationPropertiesFormat) MarshalJSON() ([]byte, error) {
 16545  	objectMap := make(map[string]any)
 16546  	populate(objectMap, "gatewayLoadBalancer", f.GatewayLoadBalancer)
 16547  	populate(objectMap, "inboundNatPools", f.InboundNatPools)
 16548  	populate(objectMap, "inboundNatRules", f.InboundNatRules)
 16549  	populate(objectMap, "loadBalancingRules", f.LoadBalancingRules)
 16550  	populate(objectMap, "outboundRules", f.OutboundRules)
 16551  	populate(objectMap, "privateIPAddress", f.PrivateIPAddress)
 16552  	populate(objectMap, "privateIPAddressVersion", f.PrivateIPAddressVersion)
 16553  	populate(objectMap, "privateIPAllocationMethod", f.PrivateIPAllocationMethod)
 16554  	populate(objectMap, "provisioningState", f.ProvisioningState)
 16555  	populate(objectMap, "publicIPAddress", f.PublicIPAddress)
 16556  	populate(objectMap, "publicIPPrefix", f.PublicIPPrefix)
 16557  	populate(objectMap, "subnet", f.Subnet)
 16558  	return json.Marshal(objectMap)
 16559  }
 16560  
 16561  // UnmarshalJSON implements the json.Unmarshaller interface for type FrontendIPConfigurationPropertiesFormat.
 16562  func (f *FrontendIPConfigurationPropertiesFormat) UnmarshalJSON(data []byte) error {
 16563  	var rawMsg map[string]json.RawMessage
 16564  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16565  		return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16566  	}
 16567  	for key, val := range rawMsg {
 16568  		var err error
 16569  		switch key {
 16570  		case "gatewayLoadBalancer":
 16571  			err = unpopulate(val, "GatewayLoadBalancer", &f.GatewayLoadBalancer)
 16572  			delete(rawMsg, key)
 16573  		case "inboundNatPools":
 16574  			err = unpopulate(val, "InboundNatPools", &f.InboundNatPools)
 16575  			delete(rawMsg, key)
 16576  		case "inboundNatRules":
 16577  			err = unpopulate(val, "InboundNatRules", &f.InboundNatRules)
 16578  			delete(rawMsg, key)
 16579  		case "loadBalancingRules":
 16580  			err = unpopulate(val, "LoadBalancingRules", &f.LoadBalancingRules)
 16581  			delete(rawMsg, key)
 16582  		case "outboundRules":
 16583  			err = unpopulate(val, "OutboundRules", &f.OutboundRules)
 16584  			delete(rawMsg, key)
 16585  		case "privateIPAddress":
 16586  			err = unpopulate(val, "PrivateIPAddress", &f.PrivateIPAddress)
 16587  			delete(rawMsg, key)
 16588  		case "privateIPAddressVersion":
 16589  			err = unpopulate(val, "PrivateIPAddressVersion", &f.PrivateIPAddressVersion)
 16590  			delete(rawMsg, key)
 16591  		case "privateIPAllocationMethod":
 16592  			err = unpopulate(val, "PrivateIPAllocationMethod", &f.PrivateIPAllocationMethod)
 16593  			delete(rawMsg, key)
 16594  		case "provisioningState":
 16595  			err = unpopulate(val, "ProvisioningState", &f.ProvisioningState)
 16596  			delete(rawMsg, key)
 16597  		case "publicIPAddress":
 16598  			err = unpopulate(val, "PublicIPAddress", &f.PublicIPAddress)
 16599  			delete(rawMsg, key)
 16600  		case "publicIPPrefix":
 16601  			err = unpopulate(val, "PublicIPPrefix", &f.PublicIPPrefix)
 16602  			delete(rawMsg, key)
 16603  		case "subnet":
 16604  			err = unpopulate(val, "Subnet", &f.Subnet)
 16605  			delete(rawMsg, key)
 16606  		}
 16607  		if err != nil {
 16608  			return fmt.Errorf("unmarshalling type %T: %v", f, err)
 16609  		}
 16610  	}
 16611  	return nil
 16612  }
 16613  
 16614  // MarshalJSON implements the json.Marshaller interface for type GatewayCustomBgpIPAddressIPConfiguration.
 16615  func (g GatewayCustomBgpIPAddressIPConfiguration) MarshalJSON() ([]byte, error) {
 16616  	objectMap := make(map[string]any)
 16617  	populate(objectMap, "customBgpIpAddress", g.CustomBgpIPAddress)
 16618  	populate(objectMap, "ipConfigurationId", g.IPConfigurationID)
 16619  	return json.Marshal(objectMap)
 16620  }
 16621  
 16622  // UnmarshalJSON implements the json.Unmarshaller interface for type GatewayCustomBgpIPAddressIPConfiguration.
 16623  func (g *GatewayCustomBgpIPAddressIPConfiguration) UnmarshalJSON(data []byte) error {
 16624  	var rawMsg map[string]json.RawMessage
 16625  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16626  		return fmt.Errorf("unmarshalling type %T: %v", g, err)
 16627  	}
 16628  	for key, val := range rawMsg {
 16629  		var err error
 16630  		switch key {
 16631  		case "customBgpIpAddress":
 16632  			err = unpopulate(val, "CustomBgpIPAddress", &g.CustomBgpIPAddress)
 16633  			delete(rawMsg, key)
 16634  		case "ipConfigurationId":
 16635  			err = unpopulate(val, "IPConfigurationID", &g.IPConfigurationID)
 16636  			delete(rawMsg, key)
 16637  		}
 16638  		if err != nil {
 16639  			return fmt.Errorf("unmarshalling type %T: %v", g, err)
 16640  		}
 16641  	}
 16642  	return nil
 16643  }
 16644  
 16645  // MarshalJSON implements the json.Marshaller interface for type GatewayLoadBalancerTunnelInterface.
 16646  func (g GatewayLoadBalancerTunnelInterface) MarshalJSON() ([]byte, error) {
 16647  	objectMap := make(map[string]any)
 16648  	populate(objectMap, "identifier", g.Identifier)
 16649  	populate(objectMap, "port", g.Port)
 16650  	populate(objectMap, "protocol", g.Protocol)
 16651  	populate(objectMap, "type", g.Type)
 16652  	return json.Marshal(objectMap)
 16653  }
 16654  
 16655  // UnmarshalJSON implements the json.Unmarshaller interface for type GatewayLoadBalancerTunnelInterface.
 16656  func (g *GatewayLoadBalancerTunnelInterface) UnmarshalJSON(data []byte) error {
 16657  	var rawMsg map[string]json.RawMessage
 16658  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16659  		return fmt.Errorf("unmarshalling type %T: %v", g, err)
 16660  	}
 16661  	for key, val := range rawMsg {
 16662  		var err error
 16663  		switch key {
 16664  		case "identifier":
 16665  			err = unpopulate(val, "Identifier", &g.Identifier)
 16666  			delete(rawMsg, key)
 16667  		case "port":
 16668  			err = unpopulate(val, "Port", &g.Port)
 16669  			delete(rawMsg, key)
 16670  		case "protocol":
 16671  			err = unpopulate(val, "Protocol", &g.Protocol)
 16672  			delete(rawMsg, key)
 16673  		case "type":
 16674  			err = unpopulate(val, "Type", &g.Type)
 16675  			delete(rawMsg, key)
 16676  		}
 16677  		if err != nil {
 16678  			return fmt.Errorf("unmarshalling type %T: %v", g, err)
 16679  		}
 16680  	}
 16681  	return nil
 16682  }
 16683  
 16684  // MarshalJSON implements the json.Marshaller interface for type GatewayRoute.
 16685  func (g GatewayRoute) MarshalJSON() ([]byte, error) {
 16686  	objectMap := make(map[string]any)
 16687  	populate(objectMap, "asPath", g.AsPath)
 16688  	populate(objectMap, "localAddress", g.LocalAddress)
 16689  	populate(objectMap, "network", g.Network)
 16690  	populate(objectMap, "nextHop", g.NextHop)
 16691  	populate(objectMap, "origin", g.Origin)
 16692  	populate(objectMap, "sourcePeer", g.SourcePeer)
 16693  	populate(objectMap, "weight", g.Weight)
 16694  	return json.Marshal(objectMap)
 16695  }
 16696  
 16697  // UnmarshalJSON implements the json.Unmarshaller interface for type GatewayRoute.
 16698  func (g *GatewayRoute) UnmarshalJSON(data []byte) error {
 16699  	var rawMsg map[string]json.RawMessage
 16700  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16701  		return fmt.Errorf("unmarshalling type %T: %v", g, err)
 16702  	}
 16703  	for key, val := range rawMsg {
 16704  		var err error
 16705  		switch key {
 16706  		case "asPath":
 16707  			err = unpopulate(val, "AsPath", &g.AsPath)
 16708  			delete(rawMsg, key)
 16709  		case "localAddress":
 16710  			err = unpopulate(val, "LocalAddress", &g.LocalAddress)
 16711  			delete(rawMsg, key)
 16712  		case "network":
 16713  			err = unpopulate(val, "Network", &g.Network)
 16714  			delete(rawMsg, key)
 16715  		case "nextHop":
 16716  			err = unpopulate(val, "NextHop", &g.NextHop)
 16717  			delete(rawMsg, key)
 16718  		case "origin":
 16719  			err = unpopulate(val, "Origin", &g.Origin)
 16720  			delete(rawMsg, key)
 16721  		case "sourcePeer":
 16722  			err = unpopulate(val, "SourcePeer", &g.SourcePeer)
 16723  			delete(rawMsg, key)
 16724  		case "weight":
 16725  			err = unpopulate(val, "Weight", &g.Weight)
 16726  			delete(rawMsg, key)
 16727  		}
 16728  		if err != nil {
 16729  			return fmt.Errorf("unmarshalling type %T: %v", g, err)
 16730  		}
 16731  	}
 16732  	return nil
 16733  }
 16734  
 16735  // MarshalJSON implements the json.Marshaller interface for type GatewayRouteListResult.
 16736  func (g GatewayRouteListResult) MarshalJSON() ([]byte, error) {
 16737  	objectMap := make(map[string]any)
 16738  	populate(objectMap, "value", g.Value)
 16739  	return json.Marshal(objectMap)
 16740  }
 16741  
 16742  // UnmarshalJSON implements the json.Unmarshaller interface for type GatewayRouteListResult.
 16743  func (g *GatewayRouteListResult) UnmarshalJSON(data []byte) error {
 16744  	var rawMsg map[string]json.RawMessage
 16745  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16746  		return fmt.Errorf("unmarshalling type %T: %v", g, err)
 16747  	}
 16748  	for key, val := range rawMsg {
 16749  		var err error
 16750  		switch key {
 16751  		case "value":
 16752  			err = unpopulate(val, "Value", &g.Value)
 16753  			delete(rawMsg, key)
 16754  		}
 16755  		if err != nil {
 16756  			return fmt.Errorf("unmarshalling type %T: %v", g, err)
 16757  		}
 16758  	}
 16759  	return nil
 16760  }
 16761  
 16762  // MarshalJSON implements the json.Marshaller interface for type GenerateExpressRoutePortsLOARequest.
 16763  func (g GenerateExpressRoutePortsLOARequest) MarshalJSON() ([]byte, error) {
 16764  	objectMap := make(map[string]any)
 16765  	populate(objectMap, "customerName", g.CustomerName)
 16766  	return json.Marshal(objectMap)
 16767  }
 16768  
 16769  // UnmarshalJSON implements the json.Unmarshaller interface for type GenerateExpressRoutePortsLOARequest.
 16770  func (g *GenerateExpressRoutePortsLOARequest) UnmarshalJSON(data []byte) error {
 16771  	var rawMsg map[string]json.RawMessage
 16772  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16773  		return fmt.Errorf("unmarshalling type %T: %v", g, err)
 16774  	}
 16775  	for key, val := range rawMsg {
 16776  		var err error
 16777  		switch key {
 16778  		case "customerName":
 16779  			err = unpopulate(val, "CustomerName", &g.CustomerName)
 16780  			delete(rawMsg, key)
 16781  		}
 16782  		if err != nil {
 16783  			return fmt.Errorf("unmarshalling type %T: %v", g, err)
 16784  		}
 16785  	}
 16786  	return nil
 16787  }
 16788  
 16789  // MarshalJSON implements the json.Marshaller interface for type GenerateExpressRoutePortsLOAResult.
 16790  func (g GenerateExpressRoutePortsLOAResult) MarshalJSON() ([]byte, error) {
 16791  	objectMap := make(map[string]any)
 16792  	populate(objectMap, "encodedContent", g.EncodedContent)
 16793  	return json.Marshal(objectMap)
 16794  }
 16795  
 16796  // UnmarshalJSON implements the json.Unmarshaller interface for type GenerateExpressRoutePortsLOAResult.
 16797  func (g *GenerateExpressRoutePortsLOAResult) UnmarshalJSON(data []byte) error {
 16798  	var rawMsg map[string]json.RawMessage
 16799  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16800  		return fmt.Errorf("unmarshalling type %T: %v", g, err)
 16801  	}
 16802  	for key, val := range rawMsg {
 16803  		var err error
 16804  		switch key {
 16805  		case "encodedContent":
 16806  			err = unpopulate(val, "EncodedContent", &g.EncodedContent)
 16807  			delete(rawMsg, key)
 16808  		}
 16809  		if err != nil {
 16810  			return fmt.Errorf("unmarshalling type %T: %v", g, err)
 16811  		}
 16812  	}
 16813  	return nil
 16814  }
 16815  
 16816  // MarshalJSON implements the json.Marshaller interface for type GetInboundRoutesParameters.
 16817  func (g GetInboundRoutesParameters) MarshalJSON() ([]byte, error) {
 16818  	objectMap := make(map[string]any)
 16819  	populate(objectMap, "connectionType", g.ConnectionType)
 16820  	populate(objectMap, "resourceUri", g.ResourceURI)
 16821  	return json.Marshal(objectMap)
 16822  }
 16823  
 16824  // UnmarshalJSON implements the json.Unmarshaller interface for type GetInboundRoutesParameters.
 16825  func (g *GetInboundRoutesParameters) UnmarshalJSON(data []byte) error {
 16826  	var rawMsg map[string]json.RawMessage
 16827  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16828  		return fmt.Errorf("unmarshalling type %T: %v", g, err)
 16829  	}
 16830  	for key, val := range rawMsg {
 16831  		var err error
 16832  		switch key {
 16833  		case "connectionType":
 16834  			err = unpopulate(val, "ConnectionType", &g.ConnectionType)
 16835  			delete(rawMsg, key)
 16836  		case "resourceUri":
 16837  			err = unpopulate(val, "ResourceURI", &g.ResourceURI)
 16838  			delete(rawMsg, key)
 16839  		}
 16840  		if err != nil {
 16841  			return fmt.Errorf("unmarshalling type %T: %v", g, err)
 16842  		}
 16843  	}
 16844  	return nil
 16845  }
 16846  
 16847  // MarshalJSON implements the json.Marshaller interface for type GetOutboundRoutesParameters.
 16848  func (g GetOutboundRoutesParameters) MarshalJSON() ([]byte, error) {
 16849  	objectMap := make(map[string]any)
 16850  	populate(objectMap, "connectionType", g.ConnectionType)
 16851  	populate(objectMap, "resourceUri", g.ResourceURI)
 16852  	return json.Marshal(objectMap)
 16853  }
 16854  
 16855  // UnmarshalJSON implements the json.Unmarshaller interface for type GetOutboundRoutesParameters.
 16856  func (g *GetOutboundRoutesParameters) UnmarshalJSON(data []byte) error {
 16857  	var rawMsg map[string]json.RawMessage
 16858  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16859  		return fmt.Errorf("unmarshalling type %T: %v", g, err)
 16860  	}
 16861  	for key, val := range rawMsg {
 16862  		var err error
 16863  		switch key {
 16864  		case "connectionType":
 16865  			err = unpopulate(val, "ConnectionType", &g.ConnectionType)
 16866  			delete(rawMsg, key)
 16867  		case "resourceUri":
 16868  			err = unpopulate(val, "ResourceURI", &g.ResourceURI)
 16869  			delete(rawMsg, key)
 16870  		}
 16871  		if err != nil {
 16872  			return fmt.Errorf("unmarshalling type %T: %v", g, err)
 16873  		}
 16874  	}
 16875  	return nil
 16876  }
 16877  
 16878  // MarshalJSON implements the json.Marshaller interface for type GetVPNSitesConfigurationRequest.
 16879  func (g GetVPNSitesConfigurationRequest) MarshalJSON() ([]byte, error) {
 16880  	objectMap := make(map[string]any)
 16881  	populate(objectMap, "outputBlobSasUrl", g.OutputBlobSasURL)
 16882  	populate(objectMap, "vpnSites", g.VPNSites)
 16883  	return json.Marshal(objectMap)
 16884  }
 16885  
 16886  // UnmarshalJSON implements the json.Unmarshaller interface for type GetVPNSitesConfigurationRequest.
 16887  func (g *GetVPNSitesConfigurationRequest) UnmarshalJSON(data []byte) error {
 16888  	var rawMsg map[string]json.RawMessage
 16889  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16890  		return fmt.Errorf("unmarshalling type %T: %v", g, err)
 16891  	}
 16892  	for key, val := range rawMsg {
 16893  		var err error
 16894  		switch key {
 16895  		case "outputBlobSasUrl":
 16896  			err = unpopulate(val, "OutputBlobSasURL", &g.OutputBlobSasURL)
 16897  			delete(rawMsg, key)
 16898  		case "vpnSites":
 16899  			err = unpopulate(val, "VPNSites", &g.VPNSites)
 16900  			delete(rawMsg, key)
 16901  		}
 16902  		if err != nil {
 16903  			return fmt.Errorf("unmarshalling type %T: %v", g, err)
 16904  		}
 16905  	}
 16906  	return nil
 16907  }
 16908  
 16909  // MarshalJSON implements the json.Marshaller interface for type Group.
 16910  func (g Group) MarshalJSON() ([]byte, error) {
 16911  	objectMap := make(map[string]any)
 16912  	populate(objectMap, "etag", g.Etag)
 16913  	populate(objectMap, "id", g.ID)
 16914  	populate(objectMap, "name", g.Name)
 16915  	populate(objectMap, "properties", g.Properties)
 16916  	populate(objectMap, "systemData", g.SystemData)
 16917  	populate(objectMap, "type", g.Type)
 16918  	return json.Marshal(objectMap)
 16919  }
 16920  
 16921  // UnmarshalJSON implements the json.Unmarshaller interface for type Group.
 16922  func (g *Group) UnmarshalJSON(data []byte) error {
 16923  	var rawMsg map[string]json.RawMessage
 16924  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16925  		return fmt.Errorf("unmarshalling type %T: %v", g, err)
 16926  	}
 16927  	for key, val := range rawMsg {
 16928  		var err error
 16929  		switch key {
 16930  		case "etag":
 16931  			err = unpopulate(val, "Etag", &g.Etag)
 16932  			delete(rawMsg, key)
 16933  		case "id":
 16934  			err = unpopulate(val, "ID", &g.ID)
 16935  			delete(rawMsg, key)
 16936  		case "name":
 16937  			err = unpopulate(val, "Name", &g.Name)
 16938  			delete(rawMsg, key)
 16939  		case "properties":
 16940  			err = unpopulate(val, "Properties", &g.Properties)
 16941  			delete(rawMsg, key)
 16942  		case "systemData":
 16943  			err = unpopulate(val, "SystemData", &g.SystemData)
 16944  			delete(rawMsg, key)
 16945  		case "type":
 16946  			err = unpopulate(val, "Type", &g.Type)
 16947  			delete(rawMsg, key)
 16948  		}
 16949  		if err != nil {
 16950  			return fmt.Errorf("unmarshalling type %T: %v", g, err)
 16951  		}
 16952  	}
 16953  	return nil
 16954  }
 16955  
 16956  // MarshalJSON implements the json.Marshaller interface for type GroupByUserSession.
 16957  func (g GroupByUserSession) MarshalJSON() ([]byte, error) {
 16958  	objectMap := make(map[string]any)
 16959  	populate(objectMap, "groupByVariables", g.GroupByVariables)
 16960  	return json.Marshal(objectMap)
 16961  }
 16962  
 16963  // UnmarshalJSON implements the json.Unmarshaller interface for type GroupByUserSession.
 16964  func (g *GroupByUserSession) UnmarshalJSON(data []byte) error {
 16965  	var rawMsg map[string]json.RawMessage
 16966  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16967  		return fmt.Errorf("unmarshalling type %T: %v", g, err)
 16968  	}
 16969  	for key, val := range rawMsg {
 16970  		var err error
 16971  		switch key {
 16972  		case "groupByVariables":
 16973  			err = unpopulate(val, "GroupByVariables", &g.GroupByVariables)
 16974  			delete(rawMsg, key)
 16975  		}
 16976  		if err != nil {
 16977  			return fmt.Errorf("unmarshalling type %T: %v", g, err)
 16978  		}
 16979  	}
 16980  	return nil
 16981  }
 16982  
 16983  // MarshalJSON implements the json.Marshaller interface for type GroupByVariable.
 16984  func (g GroupByVariable) MarshalJSON() ([]byte, error) {
 16985  	objectMap := make(map[string]any)
 16986  	populate(objectMap, "variableName", g.VariableName)
 16987  	return json.Marshal(objectMap)
 16988  }
 16989  
 16990  // UnmarshalJSON implements the json.Unmarshaller interface for type GroupByVariable.
 16991  func (g *GroupByVariable) UnmarshalJSON(data []byte) error {
 16992  	var rawMsg map[string]json.RawMessage
 16993  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 16994  		return fmt.Errorf("unmarshalling type %T: %v", g, err)
 16995  	}
 16996  	for key, val := range rawMsg {
 16997  		var err error
 16998  		switch key {
 16999  		case "variableName":
 17000  			err = unpopulate(val, "VariableName", &g.VariableName)
 17001  			delete(rawMsg, key)
 17002  		}
 17003  		if err != nil {
 17004  			return fmt.Errorf("unmarshalling type %T: %v", g, err)
 17005  		}
 17006  	}
 17007  	return nil
 17008  }
 17009  
 17010  // MarshalJSON implements the json.Marshaller interface for type GroupListResult.
 17011  func (g GroupListResult) MarshalJSON() ([]byte, error) {
 17012  	objectMap := make(map[string]any)
 17013  	populate(objectMap, "nextLink", g.NextLink)
 17014  	populate(objectMap, "value", g.Value)
 17015  	return json.Marshal(objectMap)
 17016  }
 17017  
 17018  // UnmarshalJSON implements the json.Unmarshaller interface for type GroupListResult.
 17019  func (g *GroupListResult) UnmarshalJSON(data []byte) error {
 17020  	var rawMsg map[string]json.RawMessage
 17021  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 17022  		return fmt.Errorf("unmarshalling type %T: %v", g, err)
 17023  	}
 17024  	for key, val := range rawMsg {
 17025  		var err error
 17026  		switch key {
 17027  		case "nextLink":
 17028  			err = unpopulate(val, "NextLink", &g.NextLink)
 17029  			delete(rawMsg, key)
 17030  		case "value":
 17031  			err = unpopulate(val, "Value", &g.Value)
 17032  			delete(rawMsg, key)
 17033  		}
 17034  		if err != nil {
 17035  			return fmt.Errorf("unmarshalling type %T: %v", g, err)
 17036  		}
 17037  	}
 17038  	return nil
 17039  }
 17040  
 17041  // MarshalJSON implements the json.Marshaller interface for type GroupProperties.
 17042  func (g GroupProperties) MarshalJSON() ([]byte, error) {
 17043  	objectMap := make(map[string]any)
 17044  	populate(objectMap, "description", g.Description)
 17045  	populate(objectMap, "memberType", g.MemberType)
 17046  	populate(objectMap, "provisioningState", g.ProvisioningState)
 17047  	populate(objectMap, "resourceGuid", g.ResourceGUID)
 17048  	return json.Marshal(objectMap)
 17049  }
 17050  
 17051  // UnmarshalJSON implements the json.Unmarshaller interface for type GroupProperties.
 17052  func (g *GroupProperties) UnmarshalJSON(data []byte) error {
 17053  	var rawMsg map[string]json.RawMessage
 17054  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 17055  		return fmt.Errorf("unmarshalling type %T: %v", g, err)
 17056  	}
 17057  	for key, val := range rawMsg {
 17058  		var err error
 17059  		switch key {
 17060  		case "description":
 17061  			err = unpopulate(val, "Description", &g.Description)
 17062  			delete(rawMsg, key)
 17063  		case "memberType":
 17064  			err = unpopulate(val, "MemberType", &g.MemberType)
 17065  			delete(rawMsg, key)
 17066  		case "provisioningState":
 17067  			err = unpopulate(val, "ProvisioningState", &g.ProvisioningState)
 17068  			delete(rawMsg, key)
 17069  		case "resourceGuid":
 17070  			err = unpopulate(val, "ResourceGUID", &g.ResourceGUID)
 17071  			delete(rawMsg, key)
 17072  		}
 17073  		if err != nil {
 17074  			return fmt.Errorf("unmarshalling type %T: %v", g, err)
 17075  		}
 17076  	}
 17077  	return nil
 17078  }
 17079  
 17080  // MarshalJSON implements the json.Marshaller interface for type HTTPConfiguration.
 17081  func (h HTTPConfiguration) MarshalJSON() ([]byte, error) {
 17082  	objectMap := make(map[string]any)
 17083  	populate(objectMap, "headers", h.Headers)
 17084  	populate(objectMap, "method", h.Method)
 17085  	populate(objectMap, "validStatusCodes", h.ValidStatusCodes)
 17086  	return json.Marshal(objectMap)
 17087  }
 17088  
 17089  // UnmarshalJSON implements the json.Unmarshaller interface for type HTTPConfiguration.
 17090  func (h *HTTPConfiguration) UnmarshalJSON(data []byte) error {
 17091  	var rawMsg map[string]json.RawMessage
 17092  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 17093  		return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17094  	}
 17095  	for key, val := range rawMsg {
 17096  		var err error
 17097  		switch key {
 17098  		case "headers":
 17099  			err = unpopulate(val, "Headers", &h.Headers)
 17100  			delete(rawMsg, key)
 17101  		case "method":
 17102  			err = unpopulate(val, "Method", &h.Method)
 17103  			delete(rawMsg, key)
 17104  		case "validStatusCodes":
 17105  			err = unpopulate(val, "ValidStatusCodes", &h.ValidStatusCodes)
 17106  			delete(rawMsg, key)
 17107  		}
 17108  		if err != nil {
 17109  			return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17110  		}
 17111  	}
 17112  	return nil
 17113  }
 17114  
 17115  // MarshalJSON implements the json.Marshaller interface for type HTTPHeader.
 17116  func (h HTTPHeader) MarshalJSON() ([]byte, error) {
 17117  	objectMap := make(map[string]any)
 17118  	populate(objectMap, "name", h.Name)
 17119  	populate(objectMap, "value", h.Value)
 17120  	return json.Marshal(objectMap)
 17121  }
 17122  
 17123  // UnmarshalJSON implements the json.Unmarshaller interface for type HTTPHeader.
 17124  func (h *HTTPHeader) UnmarshalJSON(data []byte) error {
 17125  	var rawMsg map[string]json.RawMessage
 17126  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 17127  		return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17128  	}
 17129  	for key, val := range rawMsg {
 17130  		var err error
 17131  		switch key {
 17132  		case "name":
 17133  			err = unpopulate(val, "Name", &h.Name)
 17134  			delete(rawMsg, key)
 17135  		case "value":
 17136  			err = unpopulate(val, "Value", &h.Value)
 17137  			delete(rawMsg, key)
 17138  		}
 17139  		if err != nil {
 17140  			return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17141  		}
 17142  	}
 17143  	return nil
 17144  }
 17145  
 17146  // MarshalJSON implements the json.Marshaller interface for type HeaderValueMatcher.
 17147  func (h HeaderValueMatcher) MarshalJSON() ([]byte, error) {
 17148  	objectMap := make(map[string]any)
 17149  	populate(objectMap, "ignoreCase", h.IgnoreCase)
 17150  	populate(objectMap, "negate", h.Negate)
 17151  	populate(objectMap, "pattern", h.Pattern)
 17152  	return json.Marshal(objectMap)
 17153  }
 17154  
 17155  // UnmarshalJSON implements the json.Unmarshaller interface for type HeaderValueMatcher.
 17156  func (h *HeaderValueMatcher) UnmarshalJSON(data []byte) error {
 17157  	var rawMsg map[string]json.RawMessage
 17158  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 17159  		return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17160  	}
 17161  	for key, val := range rawMsg {
 17162  		var err error
 17163  		switch key {
 17164  		case "ignoreCase":
 17165  			err = unpopulate(val, "IgnoreCase", &h.IgnoreCase)
 17166  			delete(rawMsg, key)
 17167  		case "negate":
 17168  			err = unpopulate(val, "Negate", &h.Negate)
 17169  			delete(rawMsg, key)
 17170  		case "pattern":
 17171  			err = unpopulate(val, "Pattern", &h.Pattern)
 17172  			delete(rawMsg, key)
 17173  		}
 17174  		if err != nil {
 17175  			return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17176  		}
 17177  	}
 17178  	return nil
 17179  }
 17180  
 17181  // MarshalJSON implements the json.Marshaller interface for type HopLink.
 17182  func (h HopLink) MarshalJSON() ([]byte, error) {
 17183  	objectMap := make(map[string]any)
 17184  	populate(objectMap, "context", h.Context)
 17185  	populate(objectMap, "issues", h.Issues)
 17186  	populate(objectMap, "linkType", h.LinkType)
 17187  	populate(objectMap, "nextHopId", h.NextHopID)
 17188  	populate(objectMap, "properties", h.Properties)
 17189  	populate(objectMap, "resourceId", h.ResourceID)
 17190  	return json.Marshal(objectMap)
 17191  }
 17192  
 17193  // UnmarshalJSON implements the json.Unmarshaller interface for type HopLink.
 17194  func (h *HopLink) UnmarshalJSON(data []byte) error {
 17195  	var rawMsg map[string]json.RawMessage
 17196  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 17197  		return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17198  	}
 17199  	for key, val := range rawMsg {
 17200  		var err error
 17201  		switch key {
 17202  		case "context":
 17203  			err = unpopulate(val, "Context", &h.Context)
 17204  			delete(rawMsg, key)
 17205  		case "issues":
 17206  			err = unpopulate(val, "Issues", &h.Issues)
 17207  			delete(rawMsg, key)
 17208  		case "linkType":
 17209  			err = unpopulate(val, "LinkType", &h.LinkType)
 17210  			delete(rawMsg, key)
 17211  		case "nextHopId":
 17212  			err = unpopulate(val, "NextHopID", &h.NextHopID)
 17213  			delete(rawMsg, key)
 17214  		case "properties":
 17215  			err = unpopulate(val, "Properties", &h.Properties)
 17216  			delete(rawMsg, key)
 17217  		case "resourceId":
 17218  			err = unpopulate(val, "ResourceID", &h.ResourceID)
 17219  			delete(rawMsg, key)
 17220  		}
 17221  		if err != nil {
 17222  			return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17223  		}
 17224  	}
 17225  	return nil
 17226  }
 17227  
 17228  // MarshalJSON implements the json.Marshaller interface for type HopLinkProperties.
 17229  func (h HopLinkProperties) MarshalJSON() ([]byte, error) {
 17230  	objectMap := make(map[string]any)
 17231  	populate(objectMap, "roundTripTimeAvg", h.RoundTripTimeAvg)
 17232  	populate(objectMap, "roundTripTimeMax", h.RoundTripTimeMax)
 17233  	populate(objectMap, "roundTripTimeMin", h.RoundTripTimeMin)
 17234  	return json.Marshal(objectMap)
 17235  }
 17236  
 17237  // UnmarshalJSON implements the json.Unmarshaller interface for type HopLinkProperties.
 17238  func (h *HopLinkProperties) UnmarshalJSON(data []byte) error {
 17239  	var rawMsg map[string]json.RawMessage
 17240  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 17241  		return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17242  	}
 17243  	for key, val := range rawMsg {
 17244  		var err error
 17245  		switch key {
 17246  		case "roundTripTimeAvg":
 17247  			err = unpopulate(val, "RoundTripTimeAvg", &h.RoundTripTimeAvg)
 17248  			delete(rawMsg, key)
 17249  		case "roundTripTimeMax":
 17250  			err = unpopulate(val, "RoundTripTimeMax", &h.RoundTripTimeMax)
 17251  			delete(rawMsg, key)
 17252  		case "roundTripTimeMin":
 17253  			err = unpopulate(val, "RoundTripTimeMin", &h.RoundTripTimeMin)
 17254  			delete(rawMsg, key)
 17255  		}
 17256  		if err != nil {
 17257  			return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17258  		}
 17259  	}
 17260  	return nil
 17261  }
 17262  
 17263  // MarshalJSON implements the json.Marshaller interface for type Hub.
 17264  func (h Hub) MarshalJSON() ([]byte, error) {
 17265  	objectMap := make(map[string]any)
 17266  	populate(objectMap, "resourceId", h.ResourceID)
 17267  	populate(objectMap, "resourceType", h.ResourceType)
 17268  	return json.Marshal(objectMap)
 17269  }
 17270  
 17271  // UnmarshalJSON implements the json.Unmarshaller interface for type Hub.
 17272  func (h *Hub) UnmarshalJSON(data []byte) error {
 17273  	var rawMsg map[string]json.RawMessage
 17274  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 17275  		return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17276  	}
 17277  	for key, val := range rawMsg {
 17278  		var err error
 17279  		switch key {
 17280  		case "resourceId":
 17281  			err = unpopulate(val, "ResourceID", &h.ResourceID)
 17282  			delete(rawMsg, key)
 17283  		case "resourceType":
 17284  			err = unpopulate(val, "ResourceType", &h.ResourceType)
 17285  			delete(rawMsg, key)
 17286  		}
 17287  		if err != nil {
 17288  			return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17289  		}
 17290  	}
 17291  	return nil
 17292  }
 17293  
 17294  // MarshalJSON implements the json.Marshaller interface for type HubIPAddresses.
 17295  func (h HubIPAddresses) MarshalJSON() ([]byte, error) {
 17296  	objectMap := make(map[string]any)
 17297  	populate(objectMap, "privateIPAddress", h.PrivateIPAddress)
 17298  	populate(objectMap, "publicIPs", h.PublicIPs)
 17299  	return json.Marshal(objectMap)
 17300  }
 17301  
 17302  // UnmarshalJSON implements the json.Unmarshaller interface for type HubIPAddresses.
 17303  func (h *HubIPAddresses) UnmarshalJSON(data []byte) error {
 17304  	var rawMsg map[string]json.RawMessage
 17305  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 17306  		return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17307  	}
 17308  	for key, val := range rawMsg {
 17309  		var err error
 17310  		switch key {
 17311  		case "privateIPAddress":
 17312  			err = unpopulate(val, "PrivateIPAddress", &h.PrivateIPAddress)
 17313  			delete(rawMsg, key)
 17314  		case "publicIPs":
 17315  			err = unpopulate(val, "PublicIPs", &h.PublicIPs)
 17316  			delete(rawMsg, key)
 17317  		}
 17318  		if err != nil {
 17319  			return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17320  		}
 17321  	}
 17322  	return nil
 17323  }
 17324  
 17325  // MarshalJSON implements the json.Marshaller interface for type HubIPConfiguration.
 17326  func (h HubIPConfiguration) MarshalJSON() ([]byte, error) {
 17327  	objectMap := make(map[string]any)
 17328  	populate(objectMap, "etag", h.Etag)
 17329  	populate(objectMap, "id", h.ID)
 17330  	populate(objectMap, "name", h.Name)
 17331  	populate(objectMap, "properties", h.Properties)
 17332  	populate(objectMap, "type", h.Type)
 17333  	return json.Marshal(objectMap)
 17334  }
 17335  
 17336  // UnmarshalJSON implements the json.Unmarshaller interface for type HubIPConfiguration.
 17337  func (h *HubIPConfiguration) UnmarshalJSON(data []byte) error {
 17338  	var rawMsg map[string]json.RawMessage
 17339  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 17340  		return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17341  	}
 17342  	for key, val := range rawMsg {
 17343  		var err error
 17344  		switch key {
 17345  		case "etag":
 17346  			err = unpopulate(val, "Etag", &h.Etag)
 17347  			delete(rawMsg, key)
 17348  		case "id":
 17349  			err = unpopulate(val, "ID", &h.ID)
 17350  			delete(rawMsg, key)
 17351  		case "name":
 17352  			err = unpopulate(val, "Name", &h.Name)
 17353  			delete(rawMsg, key)
 17354  		case "properties":
 17355  			err = unpopulate(val, "Properties", &h.Properties)
 17356  			delete(rawMsg, key)
 17357  		case "type":
 17358  			err = unpopulate(val, "Type", &h.Type)
 17359  			delete(rawMsg, key)
 17360  		}
 17361  		if err != nil {
 17362  			return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17363  		}
 17364  	}
 17365  	return nil
 17366  }
 17367  
 17368  // MarshalJSON implements the json.Marshaller interface for type HubIPConfigurationPropertiesFormat.
 17369  func (h HubIPConfigurationPropertiesFormat) MarshalJSON() ([]byte, error) {
 17370  	objectMap := make(map[string]any)
 17371  	populate(objectMap, "privateIPAddress", h.PrivateIPAddress)
 17372  	populate(objectMap, "privateIPAllocationMethod", h.PrivateIPAllocationMethod)
 17373  	populate(objectMap, "provisioningState", h.ProvisioningState)
 17374  	populate(objectMap, "publicIPAddress", h.PublicIPAddress)
 17375  	populate(objectMap, "subnet", h.Subnet)
 17376  	return json.Marshal(objectMap)
 17377  }
 17378  
 17379  // UnmarshalJSON implements the json.Unmarshaller interface for type HubIPConfigurationPropertiesFormat.
 17380  func (h *HubIPConfigurationPropertiesFormat) UnmarshalJSON(data []byte) error {
 17381  	var rawMsg map[string]json.RawMessage
 17382  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 17383  		return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17384  	}
 17385  	for key, val := range rawMsg {
 17386  		var err error
 17387  		switch key {
 17388  		case "privateIPAddress":
 17389  			err = unpopulate(val, "PrivateIPAddress", &h.PrivateIPAddress)
 17390  			delete(rawMsg, key)
 17391  		case "privateIPAllocationMethod":
 17392  			err = unpopulate(val, "PrivateIPAllocationMethod", &h.PrivateIPAllocationMethod)
 17393  			delete(rawMsg, key)
 17394  		case "provisioningState":
 17395  			err = unpopulate(val, "ProvisioningState", &h.ProvisioningState)
 17396  			delete(rawMsg, key)
 17397  		case "publicIPAddress":
 17398  			err = unpopulate(val, "PublicIPAddress", &h.PublicIPAddress)
 17399  			delete(rawMsg, key)
 17400  		case "subnet":
 17401  			err = unpopulate(val, "Subnet", &h.Subnet)
 17402  			delete(rawMsg, key)
 17403  		}
 17404  		if err != nil {
 17405  			return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17406  		}
 17407  	}
 17408  	return nil
 17409  }
 17410  
 17411  // MarshalJSON implements the json.Marshaller interface for type HubPublicIPAddresses.
 17412  func (h HubPublicIPAddresses) MarshalJSON() ([]byte, error) {
 17413  	objectMap := make(map[string]any)
 17414  	populate(objectMap, "addresses", h.Addresses)
 17415  	populate(objectMap, "count", h.Count)
 17416  	return json.Marshal(objectMap)
 17417  }
 17418  
 17419  // UnmarshalJSON implements the json.Unmarshaller interface for type HubPublicIPAddresses.
 17420  func (h *HubPublicIPAddresses) UnmarshalJSON(data []byte) error {
 17421  	var rawMsg map[string]json.RawMessage
 17422  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 17423  		return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17424  	}
 17425  	for key, val := range rawMsg {
 17426  		var err error
 17427  		switch key {
 17428  		case "addresses":
 17429  			err = unpopulate(val, "Addresses", &h.Addresses)
 17430  			delete(rawMsg, key)
 17431  		case "count":
 17432  			err = unpopulate(val, "Count", &h.Count)
 17433  			delete(rawMsg, key)
 17434  		}
 17435  		if err != nil {
 17436  			return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17437  		}
 17438  	}
 17439  	return nil
 17440  }
 17441  
 17442  // MarshalJSON implements the json.Marshaller interface for type HubRoute.
 17443  func (h HubRoute) MarshalJSON() ([]byte, error) {
 17444  	objectMap := make(map[string]any)
 17445  	populate(objectMap, "destinationType", h.DestinationType)
 17446  	populate(objectMap, "destinations", h.Destinations)
 17447  	populate(objectMap, "name", h.Name)
 17448  	populate(objectMap, "nextHop", h.NextHop)
 17449  	populate(objectMap, "nextHopType", h.NextHopType)
 17450  	return json.Marshal(objectMap)
 17451  }
 17452  
 17453  // UnmarshalJSON implements the json.Unmarshaller interface for type HubRoute.
 17454  func (h *HubRoute) UnmarshalJSON(data []byte) error {
 17455  	var rawMsg map[string]json.RawMessage
 17456  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 17457  		return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17458  	}
 17459  	for key, val := range rawMsg {
 17460  		var err error
 17461  		switch key {
 17462  		case "destinationType":
 17463  			err = unpopulate(val, "DestinationType", &h.DestinationType)
 17464  			delete(rawMsg, key)
 17465  		case "destinations":
 17466  			err = unpopulate(val, "Destinations", &h.Destinations)
 17467  			delete(rawMsg, key)
 17468  		case "name":
 17469  			err = unpopulate(val, "Name", &h.Name)
 17470  			delete(rawMsg, key)
 17471  		case "nextHop":
 17472  			err = unpopulate(val, "NextHop", &h.NextHop)
 17473  			delete(rawMsg, key)
 17474  		case "nextHopType":
 17475  			err = unpopulate(val, "NextHopType", &h.NextHopType)
 17476  			delete(rawMsg, key)
 17477  		}
 17478  		if err != nil {
 17479  			return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17480  		}
 17481  	}
 17482  	return nil
 17483  }
 17484  
 17485  // MarshalJSON implements the json.Marshaller interface for type HubRouteTable.
 17486  func (h HubRouteTable) MarshalJSON() ([]byte, error) {
 17487  	objectMap := make(map[string]any)
 17488  	populate(objectMap, "etag", h.Etag)
 17489  	populate(objectMap, "id", h.ID)
 17490  	populate(objectMap, "name", h.Name)
 17491  	populate(objectMap, "properties", h.Properties)
 17492  	populate(objectMap, "type", h.Type)
 17493  	return json.Marshal(objectMap)
 17494  }
 17495  
 17496  // UnmarshalJSON implements the json.Unmarshaller interface for type HubRouteTable.
 17497  func (h *HubRouteTable) UnmarshalJSON(data []byte) error {
 17498  	var rawMsg map[string]json.RawMessage
 17499  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 17500  		return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17501  	}
 17502  	for key, val := range rawMsg {
 17503  		var err error
 17504  		switch key {
 17505  		case "etag":
 17506  			err = unpopulate(val, "Etag", &h.Etag)
 17507  			delete(rawMsg, key)
 17508  		case "id":
 17509  			err = unpopulate(val, "ID", &h.ID)
 17510  			delete(rawMsg, key)
 17511  		case "name":
 17512  			err = unpopulate(val, "Name", &h.Name)
 17513  			delete(rawMsg, key)
 17514  		case "properties":
 17515  			err = unpopulate(val, "Properties", &h.Properties)
 17516  			delete(rawMsg, key)
 17517  		case "type":
 17518  			err = unpopulate(val, "Type", &h.Type)
 17519  			delete(rawMsg, key)
 17520  		}
 17521  		if err != nil {
 17522  			return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17523  		}
 17524  	}
 17525  	return nil
 17526  }
 17527  
 17528  // MarshalJSON implements the json.Marshaller interface for type HubRouteTableProperties.
 17529  func (h HubRouteTableProperties) MarshalJSON() ([]byte, error) {
 17530  	objectMap := make(map[string]any)
 17531  	populate(objectMap, "associatedConnections", h.AssociatedConnections)
 17532  	populate(objectMap, "labels", h.Labels)
 17533  	populate(objectMap, "propagatingConnections", h.PropagatingConnections)
 17534  	populate(objectMap, "provisioningState", h.ProvisioningState)
 17535  	populate(objectMap, "routes", h.Routes)
 17536  	return json.Marshal(objectMap)
 17537  }
 17538  
 17539  // UnmarshalJSON implements the json.Unmarshaller interface for type HubRouteTableProperties.
 17540  func (h *HubRouteTableProperties) UnmarshalJSON(data []byte) error {
 17541  	var rawMsg map[string]json.RawMessage
 17542  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 17543  		return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17544  	}
 17545  	for key, val := range rawMsg {
 17546  		var err error
 17547  		switch key {
 17548  		case "associatedConnections":
 17549  			err = unpopulate(val, "AssociatedConnections", &h.AssociatedConnections)
 17550  			delete(rawMsg, key)
 17551  		case "labels":
 17552  			err = unpopulate(val, "Labels", &h.Labels)
 17553  			delete(rawMsg, key)
 17554  		case "propagatingConnections":
 17555  			err = unpopulate(val, "PropagatingConnections", &h.PropagatingConnections)
 17556  			delete(rawMsg, key)
 17557  		case "provisioningState":
 17558  			err = unpopulate(val, "ProvisioningState", &h.ProvisioningState)
 17559  			delete(rawMsg, key)
 17560  		case "routes":
 17561  			err = unpopulate(val, "Routes", &h.Routes)
 17562  			delete(rawMsg, key)
 17563  		}
 17564  		if err != nil {
 17565  			return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17566  		}
 17567  	}
 17568  	return nil
 17569  }
 17570  
 17571  // MarshalJSON implements the json.Marshaller interface for type HubVirtualNetworkConnection.
 17572  func (h HubVirtualNetworkConnection) MarshalJSON() ([]byte, error) {
 17573  	objectMap := make(map[string]any)
 17574  	populate(objectMap, "etag", h.Etag)
 17575  	populate(objectMap, "id", h.ID)
 17576  	populate(objectMap, "name", h.Name)
 17577  	populate(objectMap, "properties", h.Properties)
 17578  	return json.Marshal(objectMap)
 17579  }
 17580  
 17581  // UnmarshalJSON implements the json.Unmarshaller interface for type HubVirtualNetworkConnection.
 17582  func (h *HubVirtualNetworkConnection) UnmarshalJSON(data []byte) error {
 17583  	var rawMsg map[string]json.RawMessage
 17584  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 17585  		return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17586  	}
 17587  	for key, val := range rawMsg {
 17588  		var err error
 17589  		switch key {
 17590  		case "etag":
 17591  			err = unpopulate(val, "Etag", &h.Etag)
 17592  			delete(rawMsg, key)
 17593  		case "id":
 17594  			err = unpopulate(val, "ID", &h.ID)
 17595  			delete(rawMsg, key)
 17596  		case "name":
 17597  			err = unpopulate(val, "Name", &h.Name)
 17598  			delete(rawMsg, key)
 17599  		case "properties":
 17600  			err = unpopulate(val, "Properties", &h.Properties)
 17601  			delete(rawMsg, key)
 17602  		}
 17603  		if err != nil {
 17604  			return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17605  		}
 17606  	}
 17607  	return nil
 17608  }
 17609  
 17610  // MarshalJSON implements the json.Marshaller interface for type HubVirtualNetworkConnectionProperties.
 17611  func (h HubVirtualNetworkConnectionProperties) MarshalJSON() ([]byte, error) {
 17612  	objectMap := make(map[string]any)
 17613  	populate(objectMap, "allowHubToRemoteVnetTransit", h.AllowHubToRemoteVnetTransit)
 17614  	populate(objectMap, "allowRemoteVnetToUseHubVnetGateways", h.AllowRemoteVnetToUseHubVnetGateways)
 17615  	populate(objectMap, "enableInternetSecurity", h.EnableInternetSecurity)
 17616  	populate(objectMap, "provisioningState", h.ProvisioningState)
 17617  	populate(objectMap, "remoteVirtualNetwork", h.RemoteVirtualNetwork)
 17618  	populate(objectMap, "routingConfiguration", h.RoutingConfiguration)
 17619  	return json.Marshal(objectMap)
 17620  }
 17621  
 17622  // UnmarshalJSON implements the json.Unmarshaller interface for type HubVirtualNetworkConnectionProperties.
 17623  func (h *HubVirtualNetworkConnectionProperties) UnmarshalJSON(data []byte) error {
 17624  	var rawMsg map[string]json.RawMessage
 17625  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 17626  		return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17627  	}
 17628  	for key, val := range rawMsg {
 17629  		var err error
 17630  		switch key {
 17631  		case "allowHubToRemoteVnetTransit":
 17632  			err = unpopulate(val, "AllowHubToRemoteVnetTransit", &h.AllowHubToRemoteVnetTransit)
 17633  			delete(rawMsg, key)
 17634  		case "allowRemoteVnetToUseHubVnetGateways":
 17635  			err = unpopulate(val, "AllowRemoteVnetToUseHubVnetGateways", &h.AllowRemoteVnetToUseHubVnetGateways)
 17636  			delete(rawMsg, key)
 17637  		case "enableInternetSecurity":
 17638  			err = unpopulate(val, "EnableInternetSecurity", &h.EnableInternetSecurity)
 17639  			delete(rawMsg, key)
 17640  		case "provisioningState":
 17641  			err = unpopulate(val, "ProvisioningState", &h.ProvisioningState)
 17642  			delete(rawMsg, key)
 17643  		case "remoteVirtualNetwork":
 17644  			err = unpopulate(val, "RemoteVirtualNetwork", &h.RemoteVirtualNetwork)
 17645  			delete(rawMsg, key)
 17646  		case "routingConfiguration":
 17647  			err = unpopulate(val, "RoutingConfiguration", &h.RoutingConfiguration)
 17648  			delete(rawMsg, key)
 17649  		}
 17650  		if err != nil {
 17651  			return fmt.Errorf("unmarshalling type %T: %v", h, err)
 17652  		}
 17653  	}
 17654  	return nil
 17655  }
 17656  
 17657  // MarshalJSON implements the json.Marshaller interface for type IDPSQueryObject.
 17658  func (i IDPSQueryObject) MarshalJSON() ([]byte, error) {
 17659  	objectMap := make(map[string]any)
 17660  	populate(objectMap, "filters", i.Filters)
 17661  	populate(objectMap, "orderBy", i.OrderBy)
 17662  	populate(objectMap, "resultsPerPage", i.ResultsPerPage)
 17663  	populate(objectMap, "search", i.Search)
 17664  	populate(objectMap, "skip", i.Skip)
 17665  	return json.Marshal(objectMap)
 17666  }
 17667  
 17668  // UnmarshalJSON implements the json.Unmarshaller interface for type IDPSQueryObject.
 17669  func (i *IDPSQueryObject) UnmarshalJSON(data []byte) error {
 17670  	var rawMsg map[string]json.RawMessage
 17671  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 17672  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 17673  	}
 17674  	for key, val := range rawMsg {
 17675  		var err error
 17676  		switch key {
 17677  		case "filters":
 17678  			err = unpopulate(val, "Filters", &i.Filters)
 17679  			delete(rawMsg, key)
 17680  		case "orderBy":
 17681  			err = unpopulate(val, "OrderBy", &i.OrderBy)
 17682  			delete(rawMsg, key)
 17683  		case "resultsPerPage":
 17684  			err = unpopulate(val, "ResultsPerPage", &i.ResultsPerPage)
 17685  			delete(rawMsg, key)
 17686  		case "search":
 17687  			err = unpopulate(val, "Search", &i.Search)
 17688  			delete(rawMsg, key)
 17689  		case "skip":
 17690  			err = unpopulate(val, "Skip", &i.Skip)
 17691  			delete(rawMsg, key)
 17692  		}
 17693  		if err != nil {
 17694  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 17695  		}
 17696  	}
 17697  	return nil
 17698  }
 17699  
 17700  // MarshalJSON implements the json.Marshaller interface for type IPAddressAvailabilityResult.
 17701  func (i IPAddressAvailabilityResult) MarshalJSON() ([]byte, error) {
 17702  	objectMap := make(map[string]any)
 17703  	populate(objectMap, "available", i.Available)
 17704  	populate(objectMap, "availableIPAddresses", i.AvailableIPAddresses)
 17705  	populate(objectMap, "isPlatformReserved", i.IsPlatformReserved)
 17706  	return json.Marshal(objectMap)
 17707  }
 17708  
 17709  // UnmarshalJSON implements the json.Unmarshaller interface for type IPAddressAvailabilityResult.
 17710  func (i *IPAddressAvailabilityResult) UnmarshalJSON(data []byte) error {
 17711  	var rawMsg map[string]json.RawMessage
 17712  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 17713  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 17714  	}
 17715  	for key, val := range rawMsg {
 17716  		var err error
 17717  		switch key {
 17718  		case "available":
 17719  			err = unpopulate(val, "Available", &i.Available)
 17720  			delete(rawMsg, key)
 17721  		case "availableIPAddresses":
 17722  			err = unpopulate(val, "AvailableIPAddresses", &i.AvailableIPAddresses)
 17723  			delete(rawMsg, key)
 17724  		case "isPlatformReserved":
 17725  			err = unpopulate(val, "IsPlatformReserved", &i.IsPlatformReserved)
 17726  			delete(rawMsg, key)
 17727  		}
 17728  		if err != nil {
 17729  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 17730  		}
 17731  	}
 17732  	return nil
 17733  }
 17734  
 17735  // MarshalJSON implements the json.Marshaller interface for type IPAllocation.
 17736  func (i IPAllocation) MarshalJSON() ([]byte, error) {
 17737  	objectMap := make(map[string]any)
 17738  	populate(objectMap, "etag", i.Etag)
 17739  	populate(objectMap, "id", i.ID)
 17740  	populate(objectMap, "location", i.Location)
 17741  	populate(objectMap, "name", i.Name)
 17742  	populate(objectMap, "properties", i.Properties)
 17743  	populate(objectMap, "tags", i.Tags)
 17744  	populate(objectMap, "type", i.Type)
 17745  	return json.Marshal(objectMap)
 17746  }
 17747  
 17748  // UnmarshalJSON implements the json.Unmarshaller interface for type IPAllocation.
 17749  func (i *IPAllocation) UnmarshalJSON(data []byte) error {
 17750  	var rawMsg map[string]json.RawMessage
 17751  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 17752  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 17753  	}
 17754  	for key, val := range rawMsg {
 17755  		var err error
 17756  		switch key {
 17757  		case "etag":
 17758  			err = unpopulate(val, "Etag", &i.Etag)
 17759  			delete(rawMsg, key)
 17760  		case "id":
 17761  			err = unpopulate(val, "ID", &i.ID)
 17762  			delete(rawMsg, key)
 17763  		case "location":
 17764  			err = unpopulate(val, "Location", &i.Location)
 17765  			delete(rawMsg, key)
 17766  		case "name":
 17767  			err = unpopulate(val, "Name", &i.Name)
 17768  			delete(rawMsg, key)
 17769  		case "properties":
 17770  			err = unpopulate(val, "Properties", &i.Properties)
 17771  			delete(rawMsg, key)
 17772  		case "tags":
 17773  			err = unpopulate(val, "Tags", &i.Tags)
 17774  			delete(rawMsg, key)
 17775  		case "type":
 17776  			err = unpopulate(val, "Type", &i.Type)
 17777  			delete(rawMsg, key)
 17778  		}
 17779  		if err != nil {
 17780  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 17781  		}
 17782  	}
 17783  	return nil
 17784  }
 17785  
 17786  // MarshalJSON implements the json.Marshaller interface for type IPAllocationListResult.
 17787  func (i IPAllocationListResult) MarshalJSON() ([]byte, error) {
 17788  	objectMap := make(map[string]any)
 17789  	populate(objectMap, "nextLink", i.NextLink)
 17790  	populate(objectMap, "value", i.Value)
 17791  	return json.Marshal(objectMap)
 17792  }
 17793  
 17794  // UnmarshalJSON implements the json.Unmarshaller interface for type IPAllocationListResult.
 17795  func (i *IPAllocationListResult) UnmarshalJSON(data []byte) error {
 17796  	var rawMsg map[string]json.RawMessage
 17797  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 17798  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 17799  	}
 17800  	for key, val := range rawMsg {
 17801  		var err error
 17802  		switch key {
 17803  		case "nextLink":
 17804  			err = unpopulate(val, "NextLink", &i.NextLink)
 17805  			delete(rawMsg, key)
 17806  		case "value":
 17807  			err = unpopulate(val, "Value", &i.Value)
 17808  			delete(rawMsg, key)
 17809  		}
 17810  		if err != nil {
 17811  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 17812  		}
 17813  	}
 17814  	return nil
 17815  }
 17816  
 17817  // MarshalJSON implements the json.Marshaller interface for type IPAllocationPropertiesFormat.
 17818  func (i IPAllocationPropertiesFormat) MarshalJSON() ([]byte, error) {
 17819  	objectMap := make(map[string]any)
 17820  	populate(objectMap, "allocationTags", i.AllocationTags)
 17821  	populate(objectMap, "ipamAllocationId", i.IpamAllocationID)
 17822  	populate(objectMap, "prefix", i.Prefix)
 17823  	populate(objectMap, "prefixLength", i.PrefixLength)
 17824  	populate(objectMap, "prefixType", i.PrefixType)
 17825  	populate(objectMap, "subnet", i.Subnet)
 17826  	populate(objectMap, "type", i.Type)
 17827  	populate(objectMap, "virtualNetwork", i.VirtualNetwork)
 17828  	return json.Marshal(objectMap)
 17829  }
 17830  
 17831  // UnmarshalJSON implements the json.Unmarshaller interface for type IPAllocationPropertiesFormat.
 17832  func (i *IPAllocationPropertiesFormat) UnmarshalJSON(data []byte) error {
 17833  	var rawMsg map[string]json.RawMessage
 17834  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 17835  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 17836  	}
 17837  	for key, val := range rawMsg {
 17838  		var err error
 17839  		switch key {
 17840  		case "allocationTags":
 17841  			err = unpopulate(val, "AllocationTags", &i.AllocationTags)
 17842  			delete(rawMsg, key)
 17843  		case "ipamAllocationId":
 17844  			err = unpopulate(val, "IpamAllocationID", &i.IpamAllocationID)
 17845  			delete(rawMsg, key)
 17846  		case "prefix":
 17847  			err = unpopulate(val, "Prefix", &i.Prefix)
 17848  			delete(rawMsg, key)
 17849  		case "prefixLength":
 17850  			err = unpopulate(val, "PrefixLength", &i.PrefixLength)
 17851  			delete(rawMsg, key)
 17852  		case "prefixType":
 17853  			err = unpopulate(val, "PrefixType", &i.PrefixType)
 17854  			delete(rawMsg, key)
 17855  		case "subnet":
 17856  			err = unpopulate(val, "Subnet", &i.Subnet)
 17857  			delete(rawMsg, key)
 17858  		case "type":
 17859  			err = unpopulate(val, "Type", &i.Type)
 17860  			delete(rawMsg, key)
 17861  		case "virtualNetwork":
 17862  			err = unpopulate(val, "VirtualNetwork", &i.VirtualNetwork)
 17863  			delete(rawMsg, key)
 17864  		}
 17865  		if err != nil {
 17866  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 17867  		}
 17868  	}
 17869  	return nil
 17870  }
 17871  
 17872  // MarshalJSON implements the json.Marshaller interface for type IPConfiguration.
 17873  func (i IPConfiguration) MarshalJSON() ([]byte, error) {
 17874  	objectMap := make(map[string]any)
 17875  	populate(objectMap, "etag", i.Etag)
 17876  	populate(objectMap, "id", i.ID)
 17877  	populate(objectMap, "name", i.Name)
 17878  	populate(objectMap, "properties", i.Properties)
 17879  	return json.Marshal(objectMap)
 17880  }
 17881  
 17882  // UnmarshalJSON implements the json.Unmarshaller interface for type IPConfiguration.
 17883  func (i *IPConfiguration) UnmarshalJSON(data []byte) error {
 17884  	var rawMsg map[string]json.RawMessage
 17885  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 17886  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 17887  	}
 17888  	for key, val := range rawMsg {
 17889  		var err error
 17890  		switch key {
 17891  		case "etag":
 17892  			err = unpopulate(val, "Etag", &i.Etag)
 17893  			delete(rawMsg, key)
 17894  		case "id":
 17895  			err = unpopulate(val, "ID", &i.ID)
 17896  			delete(rawMsg, key)
 17897  		case "name":
 17898  			err = unpopulate(val, "Name", &i.Name)
 17899  			delete(rawMsg, key)
 17900  		case "properties":
 17901  			err = unpopulate(val, "Properties", &i.Properties)
 17902  			delete(rawMsg, key)
 17903  		}
 17904  		if err != nil {
 17905  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 17906  		}
 17907  	}
 17908  	return nil
 17909  }
 17910  
 17911  // MarshalJSON implements the json.Marshaller interface for type IPConfigurationBgpPeeringAddress.
 17912  func (i IPConfigurationBgpPeeringAddress) MarshalJSON() ([]byte, error) {
 17913  	objectMap := make(map[string]any)
 17914  	populate(objectMap, "customBgpIpAddresses", i.CustomBgpIPAddresses)
 17915  	populate(objectMap, "defaultBgpIpAddresses", i.DefaultBgpIPAddresses)
 17916  	populate(objectMap, "ipconfigurationId", i.IPConfigurationID)
 17917  	populate(objectMap, "tunnelIpAddresses", i.TunnelIPAddresses)
 17918  	return json.Marshal(objectMap)
 17919  }
 17920  
 17921  // UnmarshalJSON implements the json.Unmarshaller interface for type IPConfigurationBgpPeeringAddress.
 17922  func (i *IPConfigurationBgpPeeringAddress) UnmarshalJSON(data []byte) error {
 17923  	var rawMsg map[string]json.RawMessage
 17924  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 17925  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 17926  	}
 17927  	for key, val := range rawMsg {
 17928  		var err error
 17929  		switch key {
 17930  		case "customBgpIpAddresses":
 17931  			err = unpopulate(val, "CustomBgpIPAddresses", &i.CustomBgpIPAddresses)
 17932  			delete(rawMsg, key)
 17933  		case "defaultBgpIpAddresses":
 17934  			err = unpopulate(val, "DefaultBgpIPAddresses", &i.DefaultBgpIPAddresses)
 17935  			delete(rawMsg, key)
 17936  		case "ipconfigurationId":
 17937  			err = unpopulate(val, "IPConfigurationID", &i.IPConfigurationID)
 17938  			delete(rawMsg, key)
 17939  		case "tunnelIpAddresses":
 17940  			err = unpopulate(val, "TunnelIPAddresses", &i.TunnelIPAddresses)
 17941  			delete(rawMsg, key)
 17942  		}
 17943  		if err != nil {
 17944  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 17945  		}
 17946  	}
 17947  	return nil
 17948  }
 17949  
 17950  // MarshalJSON implements the json.Marshaller interface for type IPConfigurationProfile.
 17951  func (i IPConfigurationProfile) MarshalJSON() ([]byte, error) {
 17952  	objectMap := make(map[string]any)
 17953  	populate(objectMap, "etag", i.Etag)
 17954  	populate(objectMap, "id", i.ID)
 17955  	populate(objectMap, "name", i.Name)
 17956  	populate(objectMap, "properties", i.Properties)
 17957  	populate(objectMap, "type", i.Type)
 17958  	return json.Marshal(objectMap)
 17959  }
 17960  
 17961  // UnmarshalJSON implements the json.Unmarshaller interface for type IPConfigurationProfile.
 17962  func (i *IPConfigurationProfile) UnmarshalJSON(data []byte) error {
 17963  	var rawMsg map[string]json.RawMessage
 17964  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 17965  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 17966  	}
 17967  	for key, val := range rawMsg {
 17968  		var err error
 17969  		switch key {
 17970  		case "etag":
 17971  			err = unpopulate(val, "Etag", &i.Etag)
 17972  			delete(rawMsg, key)
 17973  		case "id":
 17974  			err = unpopulate(val, "ID", &i.ID)
 17975  			delete(rawMsg, key)
 17976  		case "name":
 17977  			err = unpopulate(val, "Name", &i.Name)
 17978  			delete(rawMsg, key)
 17979  		case "properties":
 17980  			err = unpopulate(val, "Properties", &i.Properties)
 17981  			delete(rawMsg, key)
 17982  		case "type":
 17983  			err = unpopulate(val, "Type", &i.Type)
 17984  			delete(rawMsg, key)
 17985  		}
 17986  		if err != nil {
 17987  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 17988  		}
 17989  	}
 17990  	return nil
 17991  }
 17992  
 17993  // MarshalJSON implements the json.Marshaller interface for type IPConfigurationProfilePropertiesFormat.
 17994  func (i IPConfigurationProfilePropertiesFormat) MarshalJSON() ([]byte, error) {
 17995  	objectMap := make(map[string]any)
 17996  	populate(objectMap, "provisioningState", i.ProvisioningState)
 17997  	populate(objectMap, "subnet", i.Subnet)
 17998  	return json.Marshal(objectMap)
 17999  }
 18000  
 18001  // UnmarshalJSON implements the json.Unmarshaller interface for type IPConfigurationProfilePropertiesFormat.
 18002  func (i *IPConfigurationProfilePropertiesFormat) UnmarshalJSON(data []byte) error {
 18003  	var rawMsg map[string]json.RawMessage
 18004  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 18005  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18006  	}
 18007  	for key, val := range rawMsg {
 18008  		var err error
 18009  		switch key {
 18010  		case "provisioningState":
 18011  			err = unpopulate(val, "ProvisioningState", &i.ProvisioningState)
 18012  			delete(rawMsg, key)
 18013  		case "subnet":
 18014  			err = unpopulate(val, "Subnet", &i.Subnet)
 18015  			delete(rawMsg, key)
 18016  		}
 18017  		if err != nil {
 18018  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18019  		}
 18020  	}
 18021  	return nil
 18022  }
 18023  
 18024  // MarshalJSON implements the json.Marshaller interface for type IPConfigurationPropertiesFormat.
 18025  func (i IPConfigurationPropertiesFormat) MarshalJSON() ([]byte, error) {
 18026  	objectMap := make(map[string]any)
 18027  	populate(objectMap, "privateIPAddress", i.PrivateIPAddress)
 18028  	populate(objectMap, "privateIPAllocationMethod", i.PrivateIPAllocationMethod)
 18029  	populate(objectMap, "provisioningState", i.ProvisioningState)
 18030  	populate(objectMap, "publicIPAddress", i.PublicIPAddress)
 18031  	populate(objectMap, "subnet", i.Subnet)
 18032  	return json.Marshal(objectMap)
 18033  }
 18034  
 18035  // UnmarshalJSON implements the json.Unmarshaller interface for type IPConfigurationPropertiesFormat.
 18036  func (i *IPConfigurationPropertiesFormat) UnmarshalJSON(data []byte) error {
 18037  	var rawMsg map[string]json.RawMessage
 18038  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 18039  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18040  	}
 18041  	for key, val := range rawMsg {
 18042  		var err error
 18043  		switch key {
 18044  		case "privateIPAddress":
 18045  			err = unpopulate(val, "PrivateIPAddress", &i.PrivateIPAddress)
 18046  			delete(rawMsg, key)
 18047  		case "privateIPAllocationMethod":
 18048  			err = unpopulate(val, "PrivateIPAllocationMethod", &i.PrivateIPAllocationMethod)
 18049  			delete(rawMsg, key)
 18050  		case "provisioningState":
 18051  			err = unpopulate(val, "ProvisioningState", &i.ProvisioningState)
 18052  			delete(rawMsg, key)
 18053  		case "publicIPAddress":
 18054  			err = unpopulate(val, "PublicIPAddress", &i.PublicIPAddress)
 18055  			delete(rawMsg, key)
 18056  		case "subnet":
 18057  			err = unpopulate(val, "Subnet", &i.Subnet)
 18058  			delete(rawMsg, key)
 18059  		}
 18060  		if err != nil {
 18061  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18062  		}
 18063  	}
 18064  	return nil
 18065  }
 18066  
 18067  // MarshalJSON implements the json.Marshaller interface for type IPGroup.
 18068  func (i IPGroup) MarshalJSON() ([]byte, error) {
 18069  	objectMap := make(map[string]any)
 18070  	populate(objectMap, "etag", i.Etag)
 18071  	populate(objectMap, "id", i.ID)
 18072  	populate(objectMap, "location", i.Location)
 18073  	populate(objectMap, "name", i.Name)
 18074  	populate(objectMap, "properties", i.Properties)
 18075  	populate(objectMap, "tags", i.Tags)
 18076  	populate(objectMap, "type", i.Type)
 18077  	return json.Marshal(objectMap)
 18078  }
 18079  
 18080  // UnmarshalJSON implements the json.Unmarshaller interface for type IPGroup.
 18081  func (i *IPGroup) UnmarshalJSON(data []byte) error {
 18082  	var rawMsg map[string]json.RawMessage
 18083  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 18084  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18085  	}
 18086  	for key, val := range rawMsg {
 18087  		var err error
 18088  		switch key {
 18089  		case "etag":
 18090  			err = unpopulate(val, "Etag", &i.Etag)
 18091  			delete(rawMsg, key)
 18092  		case "id":
 18093  			err = unpopulate(val, "ID", &i.ID)
 18094  			delete(rawMsg, key)
 18095  		case "location":
 18096  			err = unpopulate(val, "Location", &i.Location)
 18097  			delete(rawMsg, key)
 18098  		case "name":
 18099  			err = unpopulate(val, "Name", &i.Name)
 18100  			delete(rawMsg, key)
 18101  		case "properties":
 18102  			err = unpopulate(val, "Properties", &i.Properties)
 18103  			delete(rawMsg, key)
 18104  		case "tags":
 18105  			err = unpopulate(val, "Tags", &i.Tags)
 18106  			delete(rawMsg, key)
 18107  		case "type":
 18108  			err = unpopulate(val, "Type", &i.Type)
 18109  			delete(rawMsg, key)
 18110  		}
 18111  		if err != nil {
 18112  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18113  		}
 18114  	}
 18115  	return nil
 18116  }
 18117  
 18118  // MarshalJSON implements the json.Marshaller interface for type IPGroupListResult.
 18119  func (i IPGroupListResult) MarshalJSON() ([]byte, error) {
 18120  	objectMap := make(map[string]any)
 18121  	populate(objectMap, "nextLink", i.NextLink)
 18122  	populate(objectMap, "value", i.Value)
 18123  	return json.Marshal(objectMap)
 18124  }
 18125  
 18126  // UnmarshalJSON implements the json.Unmarshaller interface for type IPGroupListResult.
 18127  func (i *IPGroupListResult) UnmarshalJSON(data []byte) error {
 18128  	var rawMsg map[string]json.RawMessage
 18129  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 18130  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18131  	}
 18132  	for key, val := range rawMsg {
 18133  		var err error
 18134  		switch key {
 18135  		case "nextLink":
 18136  			err = unpopulate(val, "NextLink", &i.NextLink)
 18137  			delete(rawMsg, key)
 18138  		case "value":
 18139  			err = unpopulate(val, "Value", &i.Value)
 18140  			delete(rawMsg, key)
 18141  		}
 18142  		if err != nil {
 18143  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18144  		}
 18145  	}
 18146  	return nil
 18147  }
 18148  
 18149  // MarshalJSON implements the json.Marshaller interface for type IPGroupPropertiesFormat.
 18150  func (i IPGroupPropertiesFormat) MarshalJSON() ([]byte, error) {
 18151  	objectMap := make(map[string]any)
 18152  	populate(objectMap, "firewallPolicies", i.FirewallPolicies)
 18153  	populate(objectMap, "firewalls", i.Firewalls)
 18154  	populate(objectMap, "ipAddresses", i.IPAddresses)
 18155  	populate(objectMap, "provisioningState", i.ProvisioningState)
 18156  	return json.Marshal(objectMap)
 18157  }
 18158  
 18159  // UnmarshalJSON implements the json.Unmarshaller interface for type IPGroupPropertiesFormat.
 18160  func (i *IPGroupPropertiesFormat) UnmarshalJSON(data []byte) error {
 18161  	var rawMsg map[string]json.RawMessage
 18162  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 18163  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18164  	}
 18165  	for key, val := range rawMsg {
 18166  		var err error
 18167  		switch key {
 18168  		case "firewallPolicies":
 18169  			err = unpopulate(val, "FirewallPolicies", &i.FirewallPolicies)
 18170  			delete(rawMsg, key)
 18171  		case "firewalls":
 18172  			err = unpopulate(val, "Firewalls", &i.Firewalls)
 18173  			delete(rawMsg, key)
 18174  		case "ipAddresses":
 18175  			err = unpopulate(val, "IPAddresses", &i.IPAddresses)
 18176  			delete(rawMsg, key)
 18177  		case "provisioningState":
 18178  			err = unpopulate(val, "ProvisioningState", &i.ProvisioningState)
 18179  			delete(rawMsg, key)
 18180  		}
 18181  		if err != nil {
 18182  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18183  		}
 18184  	}
 18185  	return nil
 18186  }
 18187  
 18188  // MarshalJSON implements the json.Marshaller interface for type IPPrefixesList.
 18189  func (i IPPrefixesList) MarshalJSON() ([]byte, error) {
 18190  	objectMap := make(map[string]any)
 18191  	populate(objectMap, "ipPrefixes", i.IPPrefixes)
 18192  	return json.Marshal(objectMap)
 18193  }
 18194  
 18195  // UnmarshalJSON implements the json.Unmarshaller interface for type IPPrefixesList.
 18196  func (i *IPPrefixesList) UnmarshalJSON(data []byte) error {
 18197  	var rawMsg map[string]json.RawMessage
 18198  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 18199  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18200  	}
 18201  	for key, val := range rawMsg {
 18202  		var err error
 18203  		switch key {
 18204  		case "ipPrefixes":
 18205  			err = unpopulate(val, "IPPrefixes", &i.IPPrefixes)
 18206  			delete(rawMsg, key)
 18207  		}
 18208  		if err != nil {
 18209  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18210  		}
 18211  	}
 18212  	return nil
 18213  }
 18214  
 18215  // MarshalJSON implements the json.Marshaller interface for type IPRule.
 18216  func (i IPRule) MarshalJSON() ([]byte, error) {
 18217  	objectMap := make(map[string]any)
 18218  	populate(objectMap, "addressPrefix", i.AddressPrefix)
 18219  	return json.Marshal(objectMap)
 18220  }
 18221  
 18222  // UnmarshalJSON implements the json.Unmarshaller interface for type IPRule.
 18223  func (i *IPRule) UnmarshalJSON(data []byte) error {
 18224  	var rawMsg map[string]json.RawMessage
 18225  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 18226  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18227  	}
 18228  	for key, val := range rawMsg {
 18229  		var err error
 18230  		switch key {
 18231  		case "addressPrefix":
 18232  			err = unpopulate(val, "AddressPrefix", &i.AddressPrefix)
 18233  			delete(rawMsg, key)
 18234  		}
 18235  		if err != nil {
 18236  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18237  		}
 18238  	}
 18239  	return nil
 18240  }
 18241  
 18242  // MarshalJSON implements the json.Marshaller interface for type IPSecPolicy.
 18243  func (i IPSecPolicy) MarshalJSON() ([]byte, error) {
 18244  	objectMap := make(map[string]any)
 18245  	populate(objectMap, "dhGroup", i.DhGroup)
 18246  	populate(objectMap, "ipsecEncryption", i.IPSecEncryption)
 18247  	populate(objectMap, "ipsecIntegrity", i.IPSecIntegrity)
 18248  	populate(objectMap, "ikeEncryption", i.IkeEncryption)
 18249  	populate(objectMap, "ikeIntegrity", i.IkeIntegrity)
 18250  	populate(objectMap, "pfsGroup", i.PfsGroup)
 18251  	populate(objectMap, "saDataSizeKilobytes", i.SaDataSizeKilobytes)
 18252  	populate(objectMap, "saLifeTimeSeconds", i.SaLifeTimeSeconds)
 18253  	return json.Marshal(objectMap)
 18254  }
 18255  
 18256  // UnmarshalJSON implements the json.Unmarshaller interface for type IPSecPolicy.
 18257  func (i *IPSecPolicy) UnmarshalJSON(data []byte) error {
 18258  	var rawMsg map[string]json.RawMessage
 18259  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 18260  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18261  	}
 18262  	for key, val := range rawMsg {
 18263  		var err error
 18264  		switch key {
 18265  		case "dhGroup":
 18266  			err = unpopulate(val, "DhGroup", &i.DhGroup)
 18267  			delete(rawMsg, key)
 18268  		case "ipsecEncryption":
 18269  			err = unpopulate(val, "IPSecEncryption", &i.IPSecEncryption)
 18270  			delete(rawMsg, key)
 18271  		case "ipsecIntegrity":
 18272  			err = unpopulate(val, "IPSecIntegrity", &i.IPSecIntegrity)
 18273  			delete(rawMsg, key)
 18274  		case "ikeEncryption":
 18275  			err = unpopulate(val, "IkeEncryption", &i.IkeEncryption)
 18276  			delete(rawMsg, key)
 18277  		case "ikeIntegrity":
 18278  			err = unpopulate(val, "IkeIntegrity", &i.IkeIntegrity)
 18279  			delete(rawMsg, key)
 18280  		case "pfsGroup":
 18281  			err = unpopulate(val, "PfsGroup", &i.PfsGroup)
 18282  			delete(rawMsg, key)
 18283  		case "saDataSizeKilobytes":
 18284  			err = unpopulate(val, "SaDataSizeKilobytes", &i.SaDataSizeKilobytes)
 18285  			delete(rawMsg, key)
 18286  		case "saLifeTimeSeconds":
 18287  			err = unpopulate(val, "SaLifeTimeSeconds", &i.SaLifeTimeSeconds)
 18288  			delete(rawMsg, key)
 18289  		}
 18290  		if err != nil {
 18291  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18292  		}
 18293  	}
 18294  	return nil
 18295  }
 18296  
 18297  // MarshalJSON implements the json.Marshaller interface for type IPTag.
 18298  func (i IPTag) MarshalJSON() ([]byte, error) {
 18299  	objectMap := make(map[string]any)
 18300  	populate(objectMap, "ipTagType", i.IPTagType)
 18301  	populate(objectMap, "tag", i.Tag)
 18302  	return json.Marshal(objectMap)
 18303  }
 18304  
 18305  // UnmarshalJSON implements the json.Unmarshaller interface for type IPTag.
 18306  func (i *IPTag) UnmarshalJSON(data []byte) error {
 18307  	var rawMsg map[string]json.RawMessage
 18308  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 18309  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18310  	}
 18311  	for key, val := range rawMsg {
 18312  		var err error
 18313  		switch key {
 18314  		case "ipTagType":
 18315  			err = unpopulate(val, "IPTagType", &i.IPTagType)
 18316  			delete(rawMsg, key)
 18317  		case "tag":
 18318  			err = unpopulate(val, "Tag", &i.Tag)
 18319  			delete(rawMsg, key)
 18320  		}
 18321  		if err != nil {
 18322  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18323  		}
 18324  	}
 18325  	return nil
 18326  }
 18327  
 18328  // MarshalJSON implements the json.Marshaller interface for type IPTraffic.
 18329  func (i IPTraffic) MarshalJSON() ([]byte, error) {
 18330  	objectMap := make(map[string]any)
 18331  	populate(objectMap, "destinationIps", i.DestinationIPs)
 18332  	populate(objectMap, "destinationPorts", i.DestinationPorts)
 18333  	populate(objectMap, "protocols", i.Protocols)
 18334  	populate(objectMap, "sourceIps", i.SourceIPs)
 18335  	populate(objectMap, "sourcePorts", i.SourcePorts)
 18336  	return json.Marshal(objectMap)
 18337  }
 18338  
 18339  // UnmarshalJSON implements the json.Unmarshaller interface for type IPTraffic.
 18340  func (i *IPTraffic) UnmarshalJSON(data []byte) error {
 18341  	var rawMsg map[string]json.RawMessage
 18342  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 18343  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18344  	}
 18345  	for key, val := range rawMsg {
 18346  		var err error
 18347  		switch key {
 18348  		case "destinationIps":
 18349  			err = unpopulate(val, "DestinationIPs", &i.DestinationIPs)
 18350  			delete(rawMsg, key)
 18351  		case "destinationPorts":
 18352  			err = unpopulate(val, "DestinationPorts", &i.DestinationPorts)
 18353  			delete(rawMsg, key)
 18354  		case "protocols":
 18355  			err = unpopulate(val, "Protocols", &i.Protocols)
 18356  			delete(rawMsg, key)
 18357  		case "sourceIps":
 18358  			err = unpopulate(val, "SourceIPs", &i.SourceIPs)
 18359  			delete(rawMsg, key)
 18360  		case "sourcePorts":
 18361  			err = unpopulate(val, "SourcePorts", &i.SourcePorts)
 18362  			delete(rawMsg, key)
 18363  		}
 18364  		if err != nil {
 18365  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18366  		}
 18367  	}
 18368  	return nil
 18369  }
 18370  
 18371  // MarshalJSON implements the json.Marshaller interface for type IPv6CircuitConnectionConfig.
 18372  func (i IPv6CircuitConnectionConfig) MarshalJSON() ([]byte, error) {
 18373  	objectMap := make(map[string]any)
 18374  	populate(objectMap, "addressPrefix", i.AddressPrefix)
 18375  	populate(objectMap, "circuitConnectionStatus", i.CircuitConnectionStatus)
 18376  	return json.Marshal(objectMap)
 18377  }
 18378  
 18379  // UnmarshalJSON implements the json.Unmarshaller interface for type IPv6CircuitConnectionConfig.
 18380  func (i *IPv6CircuitConnectionConfig) UnmarshalJSON(data []byte) error {
 18381  	var rawMsg map[string]json.RawMessage
 18382  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 18383  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18384  	}
 18385  	for key, val := range rawMsg {
 18386  		var err error
 18387  		switch key {
 18388  		case "addressPrefix":
 18389  			err = unpopulate(val, "AddressPrefix", &i.AddressPrefix)
 18390  			delete(rawMsg, key)
 18391  		case "circuitConnectionStatus":
 18392  			err = unpopulate(val, "CircuitConnectionStatus", &i.CircuitConnectionStatus)
 18393  			delete(rawMsg, key)
 18394  		}
 18395  		if err != nil {
 18396  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18397  		}
 18398  	}
 18399  	return nil
 18400  }
 18401  
 18402  // MarshalJSON implements the json.Marshaller interface for type IPv6ExpressRouteCircuitPeeringConfig.
 18403  func (i IPv6ExpressRouteCircuitPeeringConfig) MarshalJSON() ([]byte, error) {
 18404  	objectMap := make(map[string]any)
 18405  	populate(objectMap, "microsoftPeeringConfig", i.MicrosoftPeeringConfig)
 18406  	populate(objectMap, "primaryPeerAddressPrefix", i.PrimaryPeerAddressPrefix)
 18407  	populate(objectMap, "routeFilter", i.RouteFilter)
 18408  	populate(objectMap, "secondaryPeerAddressPrefix", i.SecondaryPeerAddressPrefix)
 18409  	populate(objectMap, "state", i.State)
 18410  	return json.Marshal(objectMap)
 18411  }
 18412  
 18413  // UnmarshalJSON implements the json.Unmarshaller interface for type IPv6ExpressRouteCircuitPeeringConfig.
 18414  func (i *IPv6ExpressRouteCircuitPeeringConfig) UnmarshalJSON(data []byte) error {
 18415  	var rawMsg map[string]json.RawMessage
 18416  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 18417  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18418  	}
 18419  	for key, val := range rawMsg {
 18420  		var err error
 18421  		switch key {
 18422  		case "microsoftPeeringConfig":
 18423  			err = unpopulate(val, "MicrosoftPeeringConfig", &i.MicrosoftPeeringConfig)
 18424  			delete(rawMsg, key)
 18425  		case "primaryPeerAddressPrefix":
 18426  			err = unpopulate(val, "PrimaryPeerAddressPrefix", &i.PrimaryPeerAddressPrefix)
 18427  			delete(rawMsg, key)
 18428  		case "routeFilter":
 18429  			err = unpopulate(val, "RouteFilter", &i.RouteFilter)
 18430  			delete(rawMsg, key)
 18431  		case "secondaryPeerAddressPrefix":
 18432  			err = unpopulate(val, "SecondaryPeerAddressPrefix", &i.SecondaryPeerAddressPrefix)
 18433  			delete(rawMsg, key)
 18434  		case "state":
 18435  			err = unpopulate(val, "State", &i.State)
 18436  			delete(rawMsg, key)
 18437  		}
 18438  		if err != nil {
 18439  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18440  		}
 18441  	}
 18442  	return nil
 18443  }
 18444  
 18445  // MarshalJSON implements the json.Marshaller interface for type InboundNatPool.
 18446  func (i InboundNatPool) MarshalJSON() ([]byte, error) {
 18447  	objectMap := make(map[string]any)
 18448  	populate(objectMap, "etag", i.Etag)
 18449  	populate(objectMap, "id", i.ID)
 18450  	populate(objectMap, "name", i.Name)
 18451  	populate(objectMap, "properties", i.Properties)
 18452  	populate(objectMap, "type", i.Type)
 18453  	return json.Marshal(objectMap)
 18454  }
 18455  
 18456  // UnmarshalJSON implements the json.Unmarshaller interface for type InboundNatPool.
 18457  func (i *InboundNatPool) UnmarshalJSON(data []byte) error {
 18458  	var rawMsg map[string]json.RawMessage
 18459  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 18460  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18461  	}
 18462  	for key, val := range rawMsg {
 18463  		var err error
 18464  		switch key {
 18465  		case "etag":
 18466  			err = unpopulate(val, "Etag", &i.Etag)
 18467  			delete(rawMsg, key)
 18468  		case "id":
 18469  			err = unpopulate(val, "ID", &i.ID)
 18470  			delete(rawMsg, key)
 18471  		case "name":
 18472  			err = unpopulate(val, "Name", &i.Name)
 18473  			delete(rawMsg, key)
 18474  		case "properties":
 18475  			err = unpopulate(val, "Properties", &i.Properties)
 18476  			delete(rawMsg, key)
 18477  		case "type":
 18478  			err = unpopulate(val, "Type", &i.Type)
 18479  			delete(rawMsg, key)
 18480  		}
 18481  		if err != nil {
 18482  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18483  		}
 18484  	}
 18485  	return nil
 18486  }
 18487  
 18488  // MarshalJSON implements the json.Marshaller interface for type InboundNatPoolPropertiesFormat.
 18489  func (i InboundNatPoolPropertiesFormat) MarshalJSON() ([]byte, error) {
 18490  	objectMap := make(map[string]any)
 18491  	populate(objectMap, "backendPort", i.BackendPort)
 18492  	populate(objectMap, "enableFloatingIP", i.EnableFloatingIP)
 18493  	populate(objectMap, "enableTcpReset", i.EnableTCPReset)
 18494  	populate(objectMap, "frontendIPConfiguration", i.FrontendIPConfiguration)
 18495  	populate(objectMap, "frontendPortRangeEnd", i.FrontendPortRangeEnd)
 18496  	populate(objectMap, "frontendPortRangeStart", i.FrontendPortRangeStart)
 18497  	populate(objectMap, "idleTimeoutInMinutes", i.IdleTimeoutInMinutes)
 18498  	populate(objectMap, "protocol", i.Protocol)
 18499  	populate(objectMap, "provisioningState", i.ProvisioningState)
 18500  	return json.Marshal(objectMap)
 18501  }
 18502  
 18503  // UnmarshalJSON implements the json.Unmarshaller interface for type InboundNatPoolPropertiesFormat.
 18504  func (i *InboundNatPoolPropertiesFormat) UnmarshalJSON(data []byte) error {
 18505  	var rawMsg map[string]json.RawMessage
 18506  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 18507  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18508  	}
 18509  	for key, val := range rawMsg {
 18510  		var err error
 18511  		switch key {
 18512  		case "backendPort":
 18513  			err = unpopulate(val, "BackendPort", &i.BackendPort)
 18514  			delete(rawMsg, key)
 18515  		case "enableFloatingIP":
 18516  			err = unpopulate(val, "EnableFloatingIP", &i.EnableFloatingIP)
 18517  			delete(rawMsg, key)
 18518  		case "enableTcpReset":
 18519  			err = unpopulate(val, "EnableTCPReset", &i.EnableTCPReset)
 18520  			delete(rawMsg, key)
 18521  		case "frontendIPConfiguration":
 18522  			err = unpopulate(val, "FrontendIPConfiguration", &i.FrontendIPConfiguration)
 18523  			delete(rawMsg, key)
 18524  		case "frontendPortRangeEnd":
 18525  			err = unpopulate(val, "FrontendPortRangeEnd", &i.FrontendPortRangeEnd)
 18526  			delete(rawMsg, key)
 18527  		case "frontendPortRangeStart":
 18528  			err = unpopulate(val, "FrontendPortRangeStart", &i.FrontendPortRangeStart)
 18529  			delete(rawMsg, key)
 18530  		case "idleTimeoutInMinutes":
 18531  			err = unpopulate(val, "IdleTimeoutInMinutes", &i.IdleTimeoutInMinutes)
 18532  			delete(rawMsg, key)
 18533  		case "protocol":
 18534  			err = unpopulate(val, "Protocol", &i.Protocol)
 18535  			delete(rawMsg, key)
 18536  		case "provisioningState":
 18537  			err = unpopulate(val, "ProvisioningState", &i.ProvisioningState)
 18538  			delete(rawMsg, key)
 18539  		}
 18540  		if err != nil {
 18541  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18542  		}
 18543  	}
 18544  	return nil
 18545  }
 18546  
 18547  // MarshalJSON implements the json.Marshaller interface for type InboundNatRule.
 18548  func (i InboundNatRule) MarshalJSON() ([]byte, error) {
 18549  	objectMap := make(map[string]any)
 18550  	populate(objectMap, "etag", i.Etag)
 18551  	populate(objectMap, "id", i.ID)
 18552  	populate(objectMap, "name", i.Name)
 18553  	populate(objectMap, "properties", i.Properties)
 18554  	populate(objectMap, "type", i.Type)
 18555  	return json.Marshal(objectMap)
 18556  }
 18557  
 18558  // UnmarshalJSON implements the json.Unmarshaller interface for type InboundNatRule.
 18559  func (i *InboundNatRule) UnmarshalJSON(data []byte) error {
 18560  	var rawMsg map[string]json.RawMessage
 18561  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 18562  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18563  	}
 18564  	for key, val := range rawMsg {
 18565  		var err error
 18566  		switch key {
 18567  		case "etag":
 18568  			err = unpopulate(val, "Etag", &i.Etag)
 18569  			delete(rawMsg, key)
 18570  		case "id":
 18571  			err = unpopulate(val, "ID", &i.ID)
 18572  			delete(rawMsg, key)
 18573  		case "name":
 18574  			err = unpopulate(val, "Name", &i.Name)
 18575  			delete(rawMsg, key)
 18576  		case "properties":
 18577  			err = unpopulate(val, "Properties", &i.Properties)
 18578  			delete(rawMsg, key)
 18579  		case "type":
 18580  			err = unpopulate(val, "Type", &i.Type)
 18581  			delete(rawMsg, key)
 18582  		}
 18583  		if err != nil {
 18584  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18585  		}
 18586  	}
 18587  	return nil
 18588  }
 18589  
 18590  // MarshalJSON implements the json.Marshaller interface for type InboundNatRuleListResult.
 18591  func (i InboundNatRuleListResult) MarshalJSON() ([]byte, error) {
 18592  	objectMap := make(map[string]any)
 18593  	populate(objectMap, "nextLink", i.NextLink)
 18594  	populate(objectMap, "value", i.Value)
 18595  	return json.Marshal(objectMap)
 18596  }
 18597  
 18598  // UnmarshalJSON implements the json.Unmarshaller interface for type InboundNatRuleListResult.
 18599  func (i *InboundNatRuleListResult) UnmarshalJSON(data []byte) error {
 18600  	var rawMsg map[string]json.RawMessage
 18601  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 18602  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18603  	}
 18604  	for key, val := range rawMsg {
 18605  		var err error
 18606  		switch key {
 18607  		case "nextLink":
 18608  			err = unpopulate(val, "NextLink", &i.NextLink)
 18609  			delete(rawMsg, key)
 18610  		case "value":
 18611  			err = unpopulate(val, "Value", &i.Value)
 18612  			delete(rawMsg, key)
 18613  		}
 18614  		if err != nil {
 18615  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18616  		}
 18617  	}
 18618  	return nil
 18619  }
 18620  
 18621  // MarshalJSON implements the json.Marshaller interface for type InboundNatRulePortMapping.
 18622  func (i InboundNatRulePortMapping) MarshalJSON() ([]byte, error) {
 18623  	objectMap := make(map[string]any)
 18624  	populate(objectMap, "backendPort", i.BackendPort)
 18625  	populate(objectMap, "frontendPort", i.FrontendPort)
 18626  	populate(objectMap, "inboundNatRuleName", i.InboundNatRuleName)
 18627  	populate(objectMap, "protocol", i.Protocol)
 18628  	return json.Marshal(objectMap)
 18629  }
 18630  
 18631  // UnmarshalJSON implements the json.Unmarshaller interface for type InboundNatRulePortMapping.
 18632  func (i *InboundNatRulePortMapping) UnmarshalJSON(data []byte) error {
 18633  	var rawMsg map[string]json.RawMessage
 18634  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 18635  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18636  	}
 18637  	for key, val := range rawMsg {
 18638  		var err error
 18639  		switch key {
 18640  		case "backendPort":
 18641  			err = unpopulate(val, "BackendPort", &i.BackendPort)
 18642  			delete(rawMsg, key)
 18643  		case "frontendPort":
 18644  			err = unpopulate(val, "FrontendPort", &i.FrontendPort)
 18645  			delete(rawMsg, key)
 18646  		case "inboundNatRuleName":
 18647  			err = unpopulate(val, "InboundNatRuleName", &i.InboundNatRuleName)
 18648  			delete(rawMsg, key)
 18649  		case "protocol":
 18650  			err = unpopulate(val, "Protocol", &i.Protocol)
 18651  			delete(rawMsg, key)
 18652  		}
 18653  		if err != nil {
 18654  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18655  		}
 18656  	}
 18657  	return nil
 18658  }
 18659  
 18660  // MarshalJSON implements the json.Marshaller interface for type InboundNatRulePropertiesFormat.
 18661  func (i InboundNatRulePropertiesFormat) MarshalJSON() ([]byte, error) {
 18662  	objectMap := make(map[string]any)
 18663  	populate(objectMap, "backendAddressPool", i.BackendAddressPool)
 18664  	populate(objectMap, "backendIPConfiguration", i.BackendIPConfiguration)
 18665  	populate(objectMap, "backendPort", i.BackendPort)
 18666  	populate(objectMap, "enableFloatingIP", i.EnableFloatingIP)
 18667  	populate(objectMap, "enableTcpReset", i.EnableTCPReset)
 18668  	populate(objectMap, "frontendIPConfiguration", i.FrontendIPConfiguration)
 18669  	populate(objectMap, "frontendPort", i.FrontendPort)
 18670  	populate(objectMap, "frontendPortRangeEnd", i.FrontendPortRangeEnd)
 18671  	populate(objectMap, "frontendPortRangeStart", i.FrontendPortRangeStart)
 18672  	populate(objectMap, "idleTimeoutInMinutes", i.IdleTimeoutInMinutes)
 18673  	populate(objectMap, "protocol", i.Protocol)
 18674  	populate(objectMap, "provisioningState", i.ProvisioningState)
 18675  	return json.Marshal(objectMap)
 18676  }
 18677  
 18678  // UnmarshalJSON implements the json.Unmarshaller interface for type InboundNatRulePropertiesFormat.
 18679  func (i *InboundNatRulePropertiesFormat) UnmarshalJSON(data []byte) error {
 18680  	var rawMsg map[string]json.RawMessage
 18681  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 18682  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18683  	}
 18684  	for key, val := range rawMsg {
 18685  		var err error
 18686  		switch key {
 18687  		case "backendAddressPool":
 18688  			err = unpopulate(val, "BackendAddressPool", &i.BackendAddressPool)
 18689  			delete(rawMsg, key)
 18690  		case "backendIPConfiguration":
 18691  			err = unpopulate(val, "BackendIPConfiguration", &i.BackendIPConfiguration)
 18692  			delete(rawMsg, key)
 18693  		case "backendPort":
 18694  			err = unpopulate(val, "BackendPort", &i.BackendPort)
 18695  			delete(rawMsg, key)
 18696  		case "enableFloatingIP":
 18697  			err = unpopulate(val, "EnableFloatingIP", &i.EnableFloatingIP)
 18698  			delete(rawMsg, key)
 18699  		case "enableTcpReset":
 18700  			err = unpopulate(val, "EnableTCPReset", &i.EnableTCPReset)
 18701  			delete(rawMsg, key)
 18702  		case "frontendIPConfiguration":
 18703  			err = unpopulate(val, "FrontendIPConfiguration", &i.FrontendIPConfiguration)
 18704  			delete(rawMsg, key)
 18705  		case "frontendPort":
 18706  			err = unpopulate(val, "FrontendPort", &i.FrontendPort)
 18707  			delete(rawMsg, key)
 18708  		case "frontendPortRangeEnd":
 18709  			err = unpopulate(val, "FrontendPortRangeEnd", &i.FrontendPortRangeEnd)
 18710  			delete(rawMsg, key)
 18711  		case "frontendPortRangeStart":
 18712  			err = unpopulate(val, "FrontendPortRangeStart", &i.FrontendPortRangeStart)
 18713  			delete(rawMsg, key)
 18714  		case "idleTimeoutInMinutes":
 18715  			err = unpopulate(val, "IdleTimeoutInMinutes", &i.IdleTimeoutInMinutes)
 18716  			delete(rawMsg, key)
 18717  		case "protocol":
 18718  			err = unpopulate(val, "Protocol", &i.Protocol)
 18719  			delete(rawMsg, key)
 18720  		case "provisioningState":
 18721  			err = unpopulate(val, "ProvisioningState", &i.ProvisioningState)
 18722  			delete(rawMsg, key)
 18723  		}
 18724  		if err != nil {
 18725  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18726  		}
 18727  	}
 18728  	return nil
 18729  }
 18730  
 18731  // MarshalJSON implements the json.Marshaller interface for type InboundSecurityRule.
 18732  func (i InboundSecurityRule) MarshalJSON() ([]byte, error) {
 18733  	objectMap := make(map[string]any)
 18734  	populate(objectMap, "etag", i.Etag)
 18735  	populate(objectMap, "id", i.ID)
 18736  	populate(objectMap, "name", i.Name)
 18737  	populate(objectMap, "properties", i.Properties)
 18738  	populate(objectMap, "type", i.Type)
 18739  	return json.Marshal(objectMap)
 18740  }
 18741  
 18742  // UnmarshalJSON implements the json.Unmarshaller interface for type InboundSecurityRule.
 18743  func (i *InboundSecurityRule) UnmarshalJSON(data []byte) error {
 18744  	var rawMsg map[string]json.RawMessage
 18745  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 18746  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18747  	}
 18748  	for key, val := range rawMsg {
 18749  		var err error
 18750  		switch key {
 18751  		case "etag":
 18752  			err = unpopulate(val, "Etag", &i.Etag)
 18753  			delete(rawMsg, key)
 18754  		case "id":
 18755  			err = unpopulate(val, "ID", &i.ID)
 18756  			delete(rawMsg, key)
 18757  		case "name":
 18758  			err = unpopulate(val, "Name", &i.Name)
 18759  			delete(rawMsg, key)
 18760  		case "properties":
 18761  			err = unpopulate(val, "Properties", &i.Properties)
 18762  			delete(rawMsg, key)
 18763  		case "type":
 18764  			err = unpopulate(val, "Type", &i.Type)
 18765  			delete(rawMsg, key)
 18766  		}
 18767  		if err != nil {
 18768  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18769  		}
 18770  	}
 18771  	return nil
 18772  }
 18773  
 18774  // MarshalJSON implements the json.Marshaller interface for type InboundSecurityRuleProperties.
 18775  func (i InboundSecurityRuleProperties) MarshalJSON() ([]byte, error) {
 18776  	objectMap := make(map[string]any)
 18777  	populate(objectMap, "provisioningState", i.ProvisioningState)
 18778  	populate(objectMap, "ruleType", i.RuleType)
 18779  	populate(objectMap, "rules", i.Rules)
 18780  	return json.Marshal(objectMap)
 18781  }
 18782  
 18783  // UnmarshalJSON implements the json.Unmarshaller interface for type InboundSecurityRuleProperties.
 18784  func (i *InboundSecurityRuleProperties) UnmarshalJSON(data []byte) error {
 18785  	var rawMsg map[string]json.RawMessage
 18786  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 18787  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18788  	}
 18789  	for key, val := range rawMsg {
 18790  		var err error
 18791  		switch key {
 18792  		case "provisioningState":
 18793  			err = unpopulate(val, "ProvisioningState", &i.ProvisioningState)
 18794  			delete(rawMsg, key)
 18795  		case "ruleType":
 18796  			err = unpopulate(val, "RuleType", &i.RuleType)
 18797  			delete(rawMsg, key)
 18798  		case "rules":
 18799  			err = unpopulate(val, "Rules", &i.Rules)
 18800  			delete(rawMsg, key)
 18801  		}
 18802  		if err != nil {
 18803  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18804  		}
 18805  	}
 18806  	return nil
 18807  }
 18808  
 18809  // MarshalJSON implements the json.Marshaller interface for type InboundSecurityRules.
 18810  func (i InboundSecurityRules) MarshalJSON() ([]byte, error) {
 18811  	objectMap := make(map[string]any)
 18812  	populate(objectMap, "appliesOn", i.AppliesOn)
 18813  	populate(objectMap, "destinationPortRange", i.DestinationPortRange)
 18814  	populate(objectMap, "destinationPortRanges", i.DestinationPortRanges)
 18815  	populate(objectMap, "name", i.Name)
 18816  	populate(objectMap, "protocol", i.Protocol)
 18817  	populate(objectMap, "sourceAddressPrefix", i.SourceAddressPrefix)
 18818  	return json.Marshal(objectMap)
 18819  }
 18820  
 18821  // UnmarshalJSON implements the json.Unmarshaller interface for type InboundSecurityRules.
 18822  func (i *InboundSecurityRules) UnmarshalJSON(data []byte) error {
 18823  	var rawMsg map[string]json.RawMessage
 18824  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 18825  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18826  	}
 18827  	for key, val := range rawMsg {
 18828  		var err error
 18829  		switch key {
 18830  		case "appliesOn":
 18831  			err = unpopulate(val, "AppliesOn", &i.AppliesOn)
 18832  			delete(rawMsg, key)
 18833  		case "destinationPortRange":
 18834  			err = unpopulate(val, "DestinationPortRange", &i.DestinationPortRange)
 18835  			delete(rawMsg, key)
 18836  		case "destinationPortRanges":
 18837  			err = unpopulate(val, "DestinationPortRanges", &i.DestinationPortRanges)
 18838  			delete(rawMsg, key)
 18839  		case "name":
 18840  			err = unpopulate(val, "Name", &i.Name)
 18841  			delete(rawMsg, key)
 18842  		case "protocol":
 18843  			err = unpopulate(val, "Protocol", &i.Protocol)
 18844  			delete(rawMsg, key)
 18845  		case "sourceAddressPrefix":
 18846  			err = unpopulate(val, "SourceAddressPrefix", &i.SourceAddressPrefix)
 18847  			delete(rawMsg, key)
 18848  		}
 18849  		if err != nil {
 18850  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18851  		}
 18852  	}
 18853  	return nil
 18854  }
 18855  
 18856  // MarshalJSON implements the json.Marshaller interface for type IntentContent.
 18857  func (i IntentContent) MarshalJSON() ([]byte, error) {
 18858  	objectMap := make(map[string]any)
 18859  	populate(objectMap, "description", i.Description)
 18860  	populate(objectMap, "destinationResourceId", i.DestinationResourceID)
 18861  	populate(objectMap, "ipTraffic", i.IPTraffic)
 18862  	populate(objectMap, "sourceResourceId", i.SourceResourceID)
 18863  	return json.Marshal(objectMap)
 18864  }
 18865  
 18866  // UnmarshalJSON implements the json.Unmarshaller interface for type IntentContent.
 18867  func (i *IntentContent) UnmarshalJSON(data []byte) error {
 18868  	var rawMsg map[string]json.RawMessage
 18869  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 18870  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18871  	}
 18872  	for key, val := range rawMsg {
 18873  		var err error
 18874  		switch key {
 18875  		case "description":
 18876  			err = unpopulate(val, "Description", &i.Description)
 18877  			delete(rawMsg, key)
 18878  		case "destinationResourceId":
 18879  			err = unpopulate(val, "DestinationResourceID", &i.DestinationResourceID)
 18880  			delete(rawMsg, key)
 18881  		case "ipTraffic":
 18882  			err = unpopulate(val, "IPTraffic", &i.IPTraffic)
 18883  			delete(rawMsg, key)
 18884  		case "sourceResourceId":
 18885  			err = unpopulate(val, "SourceResourceID", &i.SourceResourceID)
 18886  			delete(rawMsg, key)
 18887  		}
 18888  		if err != nil {
 18889  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18890  		}
 18891  	}
 18892  	return nil
 18893  }
 18894  
 18895  // MarshalJSON implements the json.Marshaller interface for type IntentPolicy.
 18896  func (i IntentPolicy) MarshalJSON() ([]byte, error) {
 18897  	objectMap := make(map[string]any)
 18898  	populate(objectMap, "etag", i.Etag)
 18899  	populate(objectMap, "id", i.ID)
 18900  	populate(objectMap, "location", i.Location)
 18901  	populate(objectMap, "name", i.Name)
 18902  	populate(objectMap, "tags", i.Tags)
 18903  	populate(objectMap, "type", i.Type)
 18904  	return json.Marshal(objectMap)
 18905  }
 18906  
 18907  // UnmarshalJSON implements the json.Unmarshaller interface for type IntentPolicy.
 18908  func (i *IntentPolicy) UnmarshalJSON(data []byte) error {
 18909  	var rawMsg map[string]json.RawMessage
 18910  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 18911  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18912  	}
 18913  	for key, val := range rawMsg {
 18914  		var err error
 18915  		switch key {
 18916  		case "etag":
 18917  			err = unpopulate(val, "Etag", &i.Etag)
 18918  			delete(rawMsg, key)
 18919  		case "id":
 18920  			err = unpopulate(val, "ID", &i.ID)
 18921  			delete(rawMsg, key)
 18922  		case "location":
 18923  			err = unpopulate(val, "Location", &i.Location)
 18924  			delete(rawMsg, key)
 18925  		case "name":
 18926  			err = unpopulate(val, "Name", &i.Name)
 18927  			delete(rawMsg, key)
 18928  		case "tags":
 18929  			err = unpopulate(val, "Tags", &i.Tags)
 18930  			delete(rawMsg, key)
 18931  		case "type":
 18932  			err = unpopulate(val, "Type", &i.Type)
 18933  			delete(rawMsg, key)
 18934  		}
 18935  		if err != nil {
 18936  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18937  		}
 18938  	}
 18939  	return nil
 18940  }
 18941  
 18942  // MarshalJSON implements the json.Marshaller interface for type IntentPolicyConfiguration.
 18943  func (i IntentPolicyConfiguration) MarshalJSON() ([]byte, error) {
 18944  	objectMap := make(map[string]any)
 18945  	populate(objectMap, "networkIntentPolicyName", i.NetworkIntentPolicyName)
 18946  	populate(objectMap, "sourceNetworkIntentPolicy", i.SourceNetworkIntentPolicy)
 18947  	return json.Marshal(objectMap)
 18948  }
 18949  
 18950  // UnmarshalJSON implements the json.Unmarshaller interface for type IntentPolicyConfiguration.
 18951  func (i *IntentPolicyConfiguration) UnmarshalJSON(data []byte) error {
 18952  	var rawMsg map[string]json.RawMessage
 18953  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 18954  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18955  	}
 18956  	for key, val := range rawMsg {
 18957  		var err error
 18958  		switch key {
 18959  		case "networkIntentPolicyName":
 18960  			err = unpopulate(val, "NetworkIntentPolicyName", &i.NetworkIntentPolicyName)
 18961  			delete(rawMsg, key)
 18962  		case "sourceNetworkIntentPolicy":
 18963  			err = unpopulate(val, "SourceNetworkIntentPolicy", &i.SourceNetworkIntentPolicy)
 18964  			delete(rawMsg, key)
 18965  		}
 18966  		if err != nil {
 18967  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18968  		}
 18969  	}
 18970  	return nil
 18971  }
 18972  
 18973  // MarshalJSON implements the json.Marshaller interface for type Interface.
 18974  func (i Interface) MarshalJSON() ([]byte, error) {
 18975  	objectMap := make(map[string]any)
 18976  	populate(objectMap, "etag", i.Etag)
 18977  	populate(objectMap, "extendedLocation", i.ExtendedLocation)
 18978  	populate(objectMap, "id", i.ID)
 18979  	populate(objectMap, "location", i.Location)
 18980  	populate(objectMap, "name", i.Name)
 18981  	populate(objectMap, "properties", i.Properties)
 18982  	populate(objectMap, "tags", i.Tags)
 18983  	populate(objectMap, "type", i.Type)
 18984  	return json.Marshal(objectMap)
 18985  }
 18986  
 18987  // UnmarshalJSON implements the json.Unmarshaller interface for type Interface.
 18988  func (i *Interface) UnmarshalJSON(data []byte) error {
 18989  	var rawMsg map[string]json.RawMessage
 18990  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 18991  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 18992  	}
 18993  	for key, val := range rawMsg {
 18994  		var err error
 18995  		switch key {
 18996  		case "etag":
 18997  			err = unpopulate(val, "Etag", &i.Etag)
 18998  			delete(rawMsg, key)
 18999  		case "extendedLocation":
 19000  			err = unpopulate(val, "ExtendedLocation", &i.ExtendedLocation)
 19001  			delete(rawMsg, key)
 19002  		case "id":
 19003  			err = unpopulate(val, "ID", &i.ID)
 19004  			delete(rawMsg, key)
 19005  		case "location":
 19006  			err = unpopulate(val, "Location", &i.Location)
 19007  			delete(rawMsg, key)
 19008  		case "name":
 19009  			err = unpopulate(val, "Name", &i.Name)
 19010  			delete(rawMsg, key)
 19011  		case "properties":
 19012  			err = unpopulate(val, "Properties", &i.Properties)
 19013  			delete(rawMsg, key)
 19014  		case "tags":
 19015  			err = unpopulate(val, "Tags", &i.Tags)
 19016  			delete(rawMsg, key)
 19017  		case "type":
 19018  			err = unpopulate(val, "Type", &i.Type)
 19019  			delete(rawMsg, key)
 19020  		}
 19021  		if err != nil {
 19022  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19023  		}
 19024  	}
 19025  	return nil
 19026  }
 19027  
 19028  // MarshalJSON implements the json.Marshaller interface for type InterfaceAssociation.
 19029  func (i InterfaceAssociation) MarshalJSON() ([]byte, error) {
 19030  	objectMap := make(map[string]any)
 19031  	populate(objectMap, "id", i.ID)
 19032  	populate(objectMap, "securityRules", i.SecurityRules)
 19033  	return json.Marshal(objectMap)
 19034  }
 19035  
 19036  // UnmarshalJSON implements the json.Unmarshaller interface for type InterfaceAssociation.
 19037  func (i *InterfaceAssociation) UnmarshalJSON(data []byte) error {
 19038  	var rawMsg map[string]json.RawMessage
 19039  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 19040  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19041  	}
 19042  	for key, val := range rawMsg {
 19043  		var err error
 19044  		switch key {
 19045  		case "id":
 19046  			err = unpopulate(val, "ID", &i.ID)
 19047  			delete(rawMsg, key)
 19048  		case "securityRules":
 19049  			err = unpopulate(val, "SecurityRules", &i.SecurityRules)
 19050  			delete(rawMsg, key)
 19051  		}
 19052  		if err != nil {
 19053  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19054  		}
 19055  	}
 19056  	return nil
 19057  }
 19058  
 19059  // MarshalJSON implements the json.Marshaller interface for type InterfaceDNSSettings.
 19060  func (i InterfaceDNSSettings) MarshalJSON() ([]byte, error) {
 19061  	objectMap := make(map[string]any)
 19062  	populate(objectMap, "appliedDnsServers", i.AppliedDNSServers)
 19063  	populate(objectMap, "dnsServers", i.DNSServers)
 19064  	populate(objectMap, "internalDnsNameLabel", i.InternalDNSNameLabel)
 19065  	populate(objectMap, "internalDomainNameSuffix", i.InternalDomainNameSuffix)
 19066  	populate(objectMap, "internalFqdn", i.InternalFqdn)
 19067  	return json.Marshal(objectMap)
 19068  }
 19069  
 19070  // UnmarshalJSON implements the json.Unmarshaller interface for type InterfaceDNSSettings.
 19071  func (i *InterfaceDNSSettings) UnmarshalJSON(data []byte) error {
 19072  	var rawMsg map[string]json.RawMessage
 19073  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 19074  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19075  	}
 19076  	for key, val := range rawMsg {
 19077  		var err error
 19078  		switch key {
 19079  		case "appliedDnsServers":
 19080  			err = unpopulate(val, "AppliedDNSServers", &i.AppliedDNSServers)
 19081  			delete(rawMsg, key)
 19082  		case "dnsServers":
 19083  			err = unpopulate(val, "DNSServers", &i.DNSServers)
 19084  			delete(rawMsg, key)
 19085  		case "internalDnsNameLabel":
 19086  			err = unpopulate(val, "InternalDNSNameLabel", &i.InternalDNSNameLabel)
 19087  			delete(rawMsg, key)
 19088  		case "internalDomainNameSuffix":
 19089  			err = unpopulate(val, "InternalDomainNameSuffix", &i.InternalDomainNameSuffix)
 19090  			delete(rawMsg, key)
 19091  		case "internalFqdn":
 19092  			err = unpopulate(val, "InternalFqdn", &i.InternalFqdn)
 19093  			delete(rawMsg, key)
 19094  		}
 19095  		if err != nil {
 19096  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19097  		}
 19098  	}
 19099  	return nil
 19100  }
 19101  
 19102  // MarshalJSON implements the json.Marshaller interface for type InterfaceIPConfiguration.
 19103  func (i InterfaceIPConfiguration) MarshalJSON() ([]byte, error) {
 19104  	objectMap := make(map[string]any)
 19105  	populate(objectMap, "etag", i.Etag)
 19106  	populate(objectMap, "id", i.ID)
 19107  	populate(objectMap, "name", i.Name)
 19108  	populate(objectMap, "properties", i.Properties)
 19109  	populate(objectMap, "type", i.Type)
 19110  	return json.Marshal(objectMap)
 19111  }
 19112  
 19113  // UnmarshalJSON implements the json.Unmarshaller interface for type InterfaceIPConfiguration.
 19114  func (i *InterfaceIPConfiguration) UnmarshalJSON(data []byte) error {
 19115  	var rawMsg map[string]json.RawMessage
 19116  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 19117  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19118  	}
 19119  	for key, val := range rawMsg {
 19120  		var err error
 19121  		switch key {
 19122  		case "etag":
 19123  			err = unpopulate(val, "Etag", &i.Etag)
 19124  			delete(rawMsg, key)
 19125  		case "id":
 19126  			err = unpopulate(val, "ID", &i.ID)
 19127  			delete(rawMsg, key)
 19128  		case "name":
 19129  			err = unpopulate(val, "Name", &i.Name)
 19130  			delete(rawMsg, key)
 19131  		case "properties":
 19132  			err = unpopulate(val, "Properties", &i.Properties)
 19133  			delete(rawMsg, key)
 19134  		case "type":
 19135  			err = unpopulate(val, "Type", &i.Type)
 19136  			delete(rawMsg, key)
 19137  		}
 19138  		if err != nil {
 19139  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19140  		}
 19141  	}
 19142  	return nil
 19143  }
 19144  
 19145  // MarshalJSON implements the json.Marshaller interface for type InterfaceIPConfigurationListResult.
 19146  func (i InterfaceIPConfigurationListResult) MarshalJSON() ([]byte, error) {
 19147  	objectMap := make(map[string]any)
 19148  	populate(objectMap, "nextLink", i.NextLink)
 19149  	populate(objectMap, "value", i.Value)
 19150  	return json.Marshal(objectMap)
 19151  }
 19152  
 19153  // UnmarshalJSON implements the json.Unmarshaller interface for type InterfaceIPConfigurationListResult.
 19154  func (i *InterfaceIPConfigurationListResult) UnmarshalJSON(data []byte) error {
 19155  	var rawMsg map[string]json.RawMessage
 19156  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 19157  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19158  	}
 19159  	for key, val := range rawMsg {
 19160  		var err error
 19161  		switch key {
 19162  		case "nextLink":
 19163  			err = unpopulate(val, "NextLink", &i.NextLink)
 19164  			delete(rawMsg, key)
 19165  		case "value":
 19166  			err = unpopulate(val, "Value", &i.Value)
 19167  			delete(rawMsg, key)
 19168  		}
 19169  		if err != nil {
 19170  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19171  		}
 19172  	}
 19173  	return nil
 19174  }
 19175  
 19176  // MarshalJSON implements the json.Marshaller interface for type InterfaceIPConfigurationPrivateLinkConnectionProperties.
 19177  func (i InterfaceIPConfigurationPrivateLinkConnectionProperties) MarshalJSON() ([]byte, error) {
 19178  	objectMap := make(map[string]any)
 19179  	populate(objectMap, "fqdns", i.Fqdns)
 19180  	populate(objectMap, "groupId", i.GroupID)
 19181  	populate(objectMap, "requiredMemberName", i.RequiredMemberName)
 19182  	return json.Marshal(objectMap)
 19183  }
 19184  
 19185  // UnmarshalJSON implements the json.Unmarshaller interface for type InterfaceIPConfigurationPrivateLinkConnectionProperties.
 19186  func (i *InterfaceIPConfigurationPrivateLinkConnectionProperties) UnmarshalJSON(data []byte) error {
 19187  	var rawMsg map[string]json.RawMessage
 19188  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 19189  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19190  	}
 19191  	for key, val := range rawMsg {
 19192  		var err error
 19193  		switch key {
 19194  		case "fqdns":
 19195  			err = unpopulate(val, "Fqdns", &i.Fqdns)
 19196  			delete(rawMsg, key)
 19197  		case "groupId":
 19198  			err = unpopulate(val, "GroupID", &i.GroupID)
 19199  			delete(rawMsg, key)
 19200  		case "requiredMemberName":
 19201  			err = unpopulate(val, "RequiredMemberName", &i.RequiredMemberName)
 19202  			delete(rawMsg, key)
 19203  		}
 19204  		if err != nil {
 19205  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19206  		}
 19207  	}
 19208  	return nil
 19209  }
 19210  
 19211  // MarshalJSON implements the json.Marshaller interface for type InterfaceIPConfigurationPropertiesFormat.
 19212  func (i InterfaceIPConfigurationPropertiesFormat) MarshalJSON() ([]byte, error) {
 19213  	objectMap := make(map[string]any)
 19214  	populate(objectMap, "applicationGatewayBackendAddressPools", i.ApplicationGatewayBackendAddressPools)
 19215  	populate(objectMap, "applicationSecurityGroups", i.ApplicationSecurityGroups)
 19216  	populate(objectMap, "gatewayLoadBalancer", i.GatewayLoadBalancer)
 19217  	populate(objectMap, "loadBalancerBackendAddressPools", i.LoadBalancerBackendAddressPools)
 19218  	populate(objectMap, "loadBalancerInboundNatRules", i.LoadBalancerInboundNatRules)
 19219  	populate(objectMap, "primary", i.Primary)
 19220  	populate(objectMap, "privateIPAddress", i.PrivateIPAddress)
 19221  	populate(objectMap, "privateIPAddressPrefixLength", i.PrivateIPAddressPrefixLength)
 19222  	populate(objectMap, "privateIPAddressVersion", i.PrivateIPAddressVersion)
 19223  	populate(objectMap, "privateIPAllocationMethod", i.PrivateIPAllocationMethod)
 19224  	populate(objectMap, "privateLinkConnectionProperties", i.PrivateLinkConnectionProperties)
 19225  	populate(objectMap, "provisioningState", i.ProvisioningState)
 19226  	populate(objectMap, "publicIPAddress", i.PublicIPAddress)
 19227  	populate(objectMap, "subnet", i.Subnet)
 19228  	populate(objectMap, "virtualNetworkTaps", i.VirtualNetworkTaps)
 19229  	return json.Marshal(objectMap)
 19230  }
 19231  
 19232  // UnmarshalJSON implements the json.Unmarshaller interface for type InterfaceIPConfigurationPropertiesFormat.
 19233  func (i *InterfaceIPConfigurationPropertiesFormat) UnmarshalJSON(data []byte) error {
 19234  	var rawMsg map[string]json.RawMessage
 19235  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 19236  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19237  	}
 19238  	for key, val := range rawMsg {
 19239  		var err error
 19240  		switch key {
 19241  		case "applicationGatewayBackendAddressPools":
 19242  			err = unpopulate(val, "ApplicationGatewayBackendAddressPools", &i.ApplicationGatewayBackendAddressPools)
 19243  			delete(rawMsg, key)
 19244  		case "applicationSecurityGroups":
 19245  			err = unpopulate(val, "ApplicationSecurityGroups", &i.ApplicationSecurityGroups)
 19246  			delete(rawMsg, key)
 19247  		case "gatewayLoadBalancer":
 19248  			err = unpopulate(val, "GatewayLoadBalancer", &i.GatewayLoadBalancer)
 19249  			delete(rawMsg, key)
 19250  		case "loadBalancerBackendAddressPools":
 19251  			err = unpopulate(val, "LoadBalancerBackendAddressPools", &i.LoadBalancerBackendAddressPools)
 19252  			delete(rawMsg, key)
 19253  		case "loadBalancerInboundNatRules":
 19254  			err = unpopulate(val, "LoadBalancerInboundNatRules", &i.LoadBalancerInboundNatRules)
 19255  			delete(rawMsg, key)
 19256  		case "primary":
 19257  			err = unpopulate(val, "Primary", &i.Primary)
 19258  			delete(rawMsg, key)
 19259  		case "privateIPAddress":
 19260  			err = unpopulate(val, "PrivateIPAddress", &i.PrivateIPAddress)
 19261  			delete(rawMsg, key)
 19262  		case "privateIPAddressPrefixLength":
 19263  			err = unpopulate(val, "PrivateIPAddressPrefixLength", &i.PrivateIPAddressPrefixLength)
 19264  			delete(rawMsg, key)
 19265  		case "privateIPAddressVersion":
 19266  			err = unpopulate(val, "PrivateIPAddressVersion", &i.PrivateIPAddressVersion)
 19267  			delete(rawMsg, key)
 19268  		case "privateIPAllocationMethod":
 19269  			err = unpopulate(val, "PrivateIPAllocationMethod", &i.PrivateIPAllocationMethod)
 19270  			delete(rawMsg, key)
 19271  		case "privateLinkConnectionProperties":
 19272  			err = unpopulate(val, "PrivateLinkConnectionProperties", &i.PrivateLinkConnectionProperties)
 19273  			delete(rawMsg, key)
 19274  		case "provisioningState":
 19275  			err = unpopulate(val, "ProvisioningState", &i.ProvisioningState)
 19276  			delete(rawMsg, key)
 19277  		case "publicIPAddress":
 19278  			err = unpopulate(val, "PublicIPAddress", &i.PublicIPAddress)
 19279  			delete(rawMsg, key)
 19280  		case "subnet":
 19281  			err = unpopulate(val, "Subnet", &i.Subnet)
 19282  			delete(rawMsg, key)
 19283  		case "virtualNetworkTaps":
 19284  			err = unpopulate(val, "VirtualNetworkTaps", &i.VirtualNetworkTaps)
 19285  			delete(rawMsg, key)
 19286  		}
 19287  		if err != nil {
 19288  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19289  		}
 19290  	}
 19291  	return nil
 19292  }
 19293  
 19294  // MarshalJSON implements the json.Marshaller interface for type InterfaceListResult.
 19295  func (i InterfaceListResult) MarshalJSON() ([]byte, error) {
 19296  	objectMap := make(map[string]any)
 19297  	populate(objectMap, "nextLink", i.NextLink)
 19298  	populate(objectMap, "value", i.Value)
 19299  	return json.Marshal(objectMap)
 19300  }
 19301  
 19302  // UnmarshalJSON implements the json.Unmarshaller interface for type InterfaceListResult.
 19303  func (i *InterfaceListResult) UnmarshalJSON(data []byte) error {
 19304  	var rawMsg map[string]json.RawMessage
 19305  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 19306  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19307  	}
 19308  	for key, val := range rawMsg {
 19309  		var err error
 19310  		switch key {
 19311  		case "nextLink":
 19312  			err = unpopulate(val, "NextLink", &i.NextLink)
 19313  			delete(rawMsg, key)
 19314  		case "value":
 19315  			err = unpopulate(val, "Value", &i.Value)
 19316  			delete(rawMsg, key)
 19317  		}
 19318  		if err != nil {
 19319  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19320  		}
 19321  	}
 19322  	return nil
 19323  }
 19324  
 19325  // MarshalJSON implements the json.Marshaller interface for type InterfaceLoadBalancerListResult.
 19326  func (i InterfaceLoadBalancerListResult) MarshalJSON() ([]byte, error) {
 19327  	objectMap := make(map[string]any)
 19328  	populate(objectMap, "nextLink", i.NextLink)
 19329  	populate(objectMap, "value", i.Value)
 19330  	return json.Marshal(objectMap)
 19331  }
 19332  
 19333  // UnmarshalJSON implements the json.Unmarshaller interface for type InterfaceLoadBalancerListResult.
 19334  func (i *InterfaceLoadBalancerListResult) UnmarshalJSON(data []byte) error {
 19335  	var rawMsg map[string]json.RawMessage
 19336  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 19337  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19338  	}
 19339  	for key, val := range rawMsg {
 19340  		var err error
 19341  		switch key {
 19342  		case "nextLink":
 19343  			err = unpopulate(val, "NextLink", &i.NextLink)
 19344  			delete(rawMsg, key)
 19345  		case "value":
 19346  			err = unpopulate(val, "Value", &i.Value)
 19347  			delete(rawMsg, key)
 19348  		}
 19349  		if err != nil {
 19350  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19351  		}
 19352  	}
 19353  	return nil
 19354  }
 19355  
 19356  // MarshalJSON implements the json.Marshaller interface for type InterfacePropertiesFormat.
 19357  func (i InterfacePropertiesFormat) MarshalJSON() ([]byte, error) {
 19358  	objectMap := make(map[string]any)
 19359  	populate(objectMap, "auxiliaryMode", i.AuxiliaryMode)
 19360  	populate(objectMap, "auxiliarySku", i.AuxiliarySKU)
 19361  	populate(objectMap, "dnsSettings", i.DNSSettings)
 19362  	populate(objectMap, "defaultOutboundConnectivityEnabled", i.DefaultOutboundConnectivityEnabled)
 19363  	populate(objectMap, "disableTcpStateTracking", i.DisableTCPStateTracking)
 19364  	populate(objectMap, "dscpConfiguration", i.DscpConfiguration)
 19365  	populate(objectMap, "enableAcceleratedNetworking", i.EnableAcceleratedNetworking)
 19366  	populate(objectMap, "enableIPForwarding", i.EnableIPForwarding)
 19367  	populate(objectMap, "hostedWorkloads", i.HostedWorkloads)
 19368  	populate(objectMap, "ipConfigurations", i.IPConfigurations)
 19369  	populate(objectMap, "macAddress", i.MacAddress)
 19370  	populate(objectMap, "migrationPhase", i.MigrationPhase)
 19371  	populate(objectMap, "networkSecurityGroup", i.NetworkSecurityGroup)
 19372  	populate(objectMap, "nicType", i.NicType)
 19373  	populate(objectMap, "primary", i.Primary)
 19374  	populate(objectMap, "privateEndpoint", i.PrivateEndpoint)
 19375  	populate(objectMap, "privateLinkService", i.PrivateLinkService)
 19376  	populate(objectMap, "provisioningState", i.ProvisioningState)
 19377  	populate(objectMap, "resourceGuid", i.ResourceGUID)
 19378  	populate(objectMap, "tapConfigurations", i.TapConfigurations)
 19379  	populate(objectMap, "virtualMachine", i.VirtualMachine)
 19380  	populate(objectMap, "vnetEncryptionSupported", i.VnetEncryptionSupported)
 19381  	populate(objectMap, "workloadType", i.WorkloadType)
 19382  	return json.Marshal(objectMap)
 19383  }
 19384  
 19385  // UnmarshalJSON implements the json.Unmarshaller interface for type InterfacePropertiesFormat.
 19386  func (i *InterfacePropertiesFormat) UnmarshalJSON(data []byte) error {
 19387  	var rawMsg map[string]json.RawMessage
 19388  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 19389  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19390  	}
 19391  	for key, val := range rawMsg {
 19392  		var err error
 19393  		switch key {
 19394  		case "auxiliaryMode":
 19395  			err = unpopulate(val, "AuxiliaryMode", &i.AuxiliaryMode)
 19396  			delete(rawMsg, key)
 19397  		case "auxiliarySku":
 19398  			err = unpopulate(val, "AuxiliarySKU", &i.AuxiliarySKU)
 19399  			delete(rawMsg, key)
 19400  		case "dnsSettings":
 19401  			err = unpopulate(val, "DNSSettings", &i.DNSSettings)
 19402  			delete(rawMsg, key)
 19403  		case "defaultOutboundConnectivityEnabled":
 19404  			err = unpopulate(val, "DefaultOutboundConnectivityEnabled", &i.DefaultOutboundConnectivityEnabled)
 19405  			delete(rawMsg, key)
 19406  		case "disableTcpStateTracking":
 19407  			err = unpopulate(val, "DisableTCPStateTracking", &i.DisableTCPStateTracking)
 19408  			delete(rawMsg, key)
 19409  		case "dscpConfiguration":
 19410  			err = unpopulate(val, "DscpConfiguration", &i.DscpConfiguration)
 19411  			delete(rawMsg, key)
 19412  		case "enableAcceleratedNetworking":
 19413  			err = unpopulate(val, "EnableAcceleratedNetworking", &i.EnableAcceleratedNetworking)
 19414  			delete(rawMsg, key)
 19415  		case "enableIPForwarding":
 19416  			err = unpopulate(val, "EnableIPForwarding", &i.EnableIPForwarding)
 19417  			delete(rawMsg, key)
 19418  		case "hostedWorkloads":
 19419  			err = unpopulate(val, "HostedWorkloads", &i.HostedWorkloads)
 19420  			delete(rawMsg, key)
 19421  		case "ipConfigurations":
 19422  			err = unpopulate(val, "IPConfigurations", &i.IPConfigurations)
 19423  			delete(rawMsg, key)
 19424  		case "macAddress":
 19425  			err = unpopulate(val, "MacAddress", &i.MacAddress)
 19426  			delete(rawMsg, key)
 19427  		case "migrationPhase":
 19428  			err = unpopulate(val, "MigrationPhase", &i.MigrationPhase)
 19429  			delete(rawMsg, key)
 19430  		case "networkSecurityGroup":
 19431  			err = unpopulate(val, "NetworkSecurityGroup", &i.NetworkSecurityGroup)
 19432  			delete(rawMsg, key)
 19433  		case "nicType":
 19434  			err = unpopulate(val, "NicType", &i.NicType)
 19435  			delete(rawMsg, key)
 19436  		case "primary":
 19437  			err = unpopulate(val, "Primary", &i.Primary)
 19438  			delete(rawMsg, key)
 19439  		case "privateEndpoint":
 19440  			err = unpopulate(val, "PrivateEndpoint", &i.PrivateEndpoint)
 19441  			delete(rawMsg, key)
 19442  		case "privateLinkService":
 19443  			err = unpopulate(val, "PrivateLinkService", &i.PrivateLinkService)
 19444  			delete(rawMsg, key)
 19445  		case "provisioningState":
 19446  			err = unpopulate(val, "ProvisioningState", &i.ProvisioningState)
 19447  			delete(rawMsg, key)
 19448  		case "resourceGuid":
 19449  			err = unpopulate(val, "ResourceGUID", &i.ResourceGUID)
 19450  			delete(rawMsg, key)
 19451  		case "tapConfigurations":
 19452  			err = unpopulate(val, "TapConfigurations", &i.TapConfigurations)
 19453  			delete(rawMsg, key)
 19454  		case "virtualMachine":
 19455  			err = unpopulate(val, "VirtualMachine", &i.VirtualMachine)
 19456  			delete(rawMsg, key)
 19457  		case "vnetEncryptionSupported":
 19458  			err = unpopulate(val, "VnetEncryptionSupported", &i.VnetEncryptionSupported)
 19459  			delete(rawMsg, key)
 19460  		case "workloadType":
 19461  			err = unpopulate(val, "WorkloadType", &i.WorkloadType)
 19462  			delete(rawMsg, key)
 19463  		}
 19464  		if err != nil {
 19465  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19466  		}
 19467  	}
 19468  	return nil
 19469  }
 19470  
 19471  // MarshalJSON implements the json.Marshaller interface for type InterfaceTapConfiguration.
 19472  func (i InterfaceTapConfiguration) MarshalJSON() ([]byte, error) {
 19473  	objectMap := make(map[string]any)
 19474  	populate(objectMap, "etag", i.Etag)
 19475  	populate(objectMap, "id", i.ID)
 19476  	populate(objectMap, "name", i.Name)
 19477  	populate(objectMap, "properties", i.Properties)
 19478  	populate(objectMap, "type", i.Type)
 19479  	return json.Marshal(objectMap)
 19480  }
 19481  
 19482  // UnmarshalJSON implements the json.Unmarshaller interface for type InterfaceTapConfiguration.
 19483  func (i *InterfaceTapConfiguration) UnmarshalJSON(data []byte) error {
 19484  	var rawMsg map[string]json.RawMessage
 19485  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 19486  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19487  	}
 19488  	for key, val := range rawMsg {
 19489  		var err error
 19490  		switch key {
 19491  		case "etag":
 19492  			err = unpopulate(val, "Etag", &i.Etag)
 19493  			delete(rawMsg, key)
 19494  		case "id":
 19495  			err = unpopulate(val, "ID", &i.ID)
 19496  			delete(rawMsg, key)
 19497  		case "name":
 19498  			err = unpopulate(val, "Name", &i.Name)
 19499  			delete(rawMsg, key)
 19500  		case "properties":
 19501  			err = unpopulate(val, "Properties", &i.Properties)
 19502  			delete(rawMsg, key)
 19503  		case "type":
 19504  			err = unpopulate(val, "Type", &i.Type)
 19505  			delete(rawMsg, key)
 19506  		}
 19507  		if err != nil {
 19508  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19509  		}
 19510  	}
 19511  	return nil
 19512  }
 19513  
 19514  // MarshalJSON implements the json.Marshaller interface for type InterfaceTapConfigurationListResult.
 19515  func (i InterfaceTapConfigurationListResult) MarshalJSON() ([]byte, error) {
 19516  	objectMap := make(map[string]any)
 19517  	populate(objectMap, "nextLink", i.NextLink)
 19518  	populate(objectMap, "value", i.Value)
 19519  	return json.Marshal(objectMap)
 19520  }
 19521  
 19522  // UnmarshalJSON implements the json.Unmarshaller interface for type InterfaceTapConfigurationListResult.
 19523  func (i *InterfaceTapConfigurationListResult) UnmarshalJSON(data []byte) error {
 19524  	var rawMsg map[string]json.RawMessage
 19525  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 19526  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19527  	}
 19528  	for key, val := range rawMsg {
 19529  		var err error
 19530  		switch key {
 19531  		case "nextLink":
 19532  			err = unpopulate(val, "NextLink", &i.NextLink)
 19533  			delete(rawMsg, key)
 19534  		case "value":
 19535  			err = unpopulate(val, "Value", &i.Value)
 19536  			delete(rawMsg, key)
 19537  		}
 19538  		if err != nil {
 19539  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19540  		}
 19541  	}
 19542  	return nil
 19543  }
 19544  
 19545  // MarshalJSON implements the json.Marshaller interface for type InterfaceTapConfigurationPropertiesFormat.
 19546  func (i InterfaceTapConfigurationPropertiesFormat) MarshalJSON() ([]byte, error) {
 19547  	objectMap := make(map[string]any)
 19548  	populate(objectMap, "provisioningState", i.ProvisioningState)
 19549  	populate(objectMap, "virtualNetworkTap", i.VirtualNetworkTap)
 19550  	return json.Marshal(objectMap)
 19551  }
 19552  
 19553  // UnmarshalJSON implements the json.Unmarshaller interface for type InterfaceTapConfigurationPropertiesFormat.
 19554  func (i *InterfaceTapConfigurationPropertiesFormat) UnmarshalJSON(data []byte) error {
 19555  	var rawMsg map[string]json.RawMessage
 19556  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 19557  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19558  	}
 19559  	for key, val := range rawMsg {
 19560  		var err error
 19561  		switch key {
 19562  		case "provisioningState":
 19563  			err = unpopulate(val, "ProvisioningState", &i.ProvisioningState)
 19564  			delete(rawMsg, key)
 19565  		case "virtualNetworkTap":
 19566  			err = unpopulate(val, "VirtualNetworkTap", &i.VirtualNetworkTap)
 19567  			delete(rawMsg, key)
 19568  		}
 19569  		if err != nil {
 19570  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19571  		}
 19572  	}
 19573  	return nil
 19574  }
 19575  
 19576  // MarshalJSON implements the json.Marshaller interface for type InternetIngressPublicIPsProperties.
 19577  func (i InternetIngressPublicIPsProperties) MarshalJSON() ([]byte, error) {
 19578  	objectMap := make(map[string]any)
 19579  	populate(objectMap, "id", i.ID)
 19580  	return json.Marshal(objectMap)
 19581  }
 19582  
 19583  // UnmarshalJSON implements the json.Unmarshaller interface for type InternetIngressPublicIPsProperties.
 19584  func (i *InternetIngressPublicIPsProperties) UnmarshalJSON(data []byte) error {
 19585  	var rawMsg map[string]json.RawMessage
 19586  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 19587  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19588  	}
 19589  	for key, val := range rawMsg {
 19590  		var err error
 19591  		switch key {
 19592  		case "id":
 19593  			err = unpopulate(val, "ID", &i.ID)
 19594  			delete(rawMsg, key)
 19595  		}
 19596  		if err != nil {
 19597  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19598  		}
 19599  	}
 19600  	return nil
 19601  }
 19602  
 19603  // MarshalJSON implements the json.Marshaller interface for type IpamPool.
 19604  func (i IpamPool) MarshalJSON() ([]byte, error) {
 19605  	objectMap := make(map[string]any)
 19606  	populate(objectMap, "id", i.ID)
 19607  	populate(objectMap, "location", i.Location)
 19608  	populate(objectMap, "name", i.Name)
 19609  	populate(objectMap, "properties", i.Properties)
 19610  	populate(objectMap, "systemData", i.SystemData)
 19611  	populate(objectMap, "tags", i.Tags)
 19612  	populate(objectMap, "type", i.Type)
 19613  	return json.Marshal(objectMap)
 19614  }
 19615  
 19616  // UnmarshalJSON implements the json.Unmarshaller interface for type IpamPool.
 19617  func (i *IpamPool) UnmarshalJSON(data []byte) error {
 19618  	var rawMsg map[string]json.RawMessage
 19619  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 19620  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19621  	}
 19622  	for key, val := range rawMsg {
 19623  		var err error
 19624  		switch key {
 19625  		case "id":
 19626  			err = unpopulate(val, "ID", &i.ID)
 19627  			delete(rawMsg, key)
 19628  		case "location":
 19629  			err = unpopulate(val, "Location", &i.Location)
 19630  			delete(rawMsg, key)
 19631  		case "name":
 19632  			err = unpopulate(val, "Name", &i.Name)
 19633  			delete(rawMsg, key)
 19634  		case "properties":
 19635  			err = unpopulate(val, "Properties", &i.Properties)
 19636  			delete(rawMsg, key)
 19637  		case "systemData":
 19638  			err = unpopulate(val, "SystemData", &i.SystemData)
 19639  			delete(rawMsg, key)
 19640  		case "tags":
 19641  			err = unpopulate(val, "Tags", &i.Tags)
 19642  			delete(rawMsg, key)
 19643  		case "type":
 19644  			err = unpopulate(val, "Type", &i.Type)
 19645  			delete(rawMsg, key)
 19646  		}
 19647  		if err != nil {
 19648  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19649  		}
 19650  	}
 19651  	return nil
 19652  }
 19653  
 19654  // MarshalJSON implements the json.Marshaller interface for type IpamPoolList.
 19655  func (i IpamPoolList) MarshalJSON() ([]byte, error) {
 19656  	objectMap := make(map[string]any)
 19657  	populate(objectMap, "nextLink", i.NextLink)
 19658  	populate(objectMap, "value", i.Value)
 19659  	return json.Marshal(objectMap)
 19660  }
 19661  
 19662  // UnmarshalJSON implements the json.Unmarshaller interface for type IpamPoolList.
 19663  func (i *IpamPoolList) UnmarshalJSON(data []byte) error {
 19664  	var rawMsg map[string]json.RawMessage
 19665  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 19666  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19667  	}
 19668  	for key, val := range rawMsg {
 19669  		var err error
 19670  		switch key {
 19671  		case "nextLink":
 19672  			err = unpopulate(val, "NextLink", &i.NextLink)
 19673  			delete(rawMsg, key)
 19674  		case "value":
 19675  			err = unpopulate(val, "Value", &i.Value)
 19676  			delete(rawMsg, key)
 19677  		}
 19678  		if err != nil {
 19679  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19680  		}
 19681  	}
 19682  	return nil
 19683  }
 19684  
 19685  // MarshalJSON implements the json.Marshaller interface for type IpamPoolPrefixAllocation.
 19686  func (i IpamPoolPrefixAllocation) MarshalJSON() ([]byte, error) {
 19687  	objectMap := make(map[string]any)
 19688  	populate(objectMap, "allocatedAddressPrefixes", i.AllocatedAddressPrefixes)
 19689  	populate(objectMap, "numberOfIpAddresses", i.NumberOfIPAddresses)
 19690  	populate(objectMap, "pool", i.Pool)
 19691  	return json.Marshal(objectMap)
 19692  }
 19693  
 19694  // UnmarshalJSON implements the json.Unmarshaller interface for type IpamPoolPrefixAllocation.
 19695  func (i *IpamPoolPrefixAllocation) UnmarshalJSON(data []byte) error {
 19696  	var rawMsg map[string]json.RawMessage
 19697  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 19698  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19699  	}
 19700  	for key, val := range rawMsg {
 19701  		var err error
 19702  		switch key {
 19703  		case "allocatedAddressPrefixes":
 19704  			err = unpopulate(val, "AllocatedAddressPrefixes", &i.AllocatedAddressPrefixes)
 19705  			delete(rawMsg, key)
 19706  		case "numberOfIpAddresses":
 19707  			err = unpopulate(val, "NumberOfIPAddresses", &i.NumberOfIPAddresses)
 19708  			delete(rawMsg, key)
 19709  		case "pool":
 19710  			err = unpopulate(val, "Pool", &i.Pool)
 19711  			delete(rawMsg, key)
 19712  		}
 19713  		if err != nil {
 19714  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19715  		}
 19716  	}
 19717  	return nil
 19718  }
 19719  
 19720  // MarshalJSON implements the json.Marshaller interface for type IpamPoolPrefixAllocationPool.
 19721  func (i IpamPoolPrefixAllocationPool) MarshalJSON() ([]byte, error) {
 19722  	objectMap := make(map[string]any)
 19723  	populate(objectMap, "id", i.ID)
 19724  	return json.Marshal(objectMap)
 19725  }
 19726  
 19727  // UnmarshalJSON implements the json.Unmarshaller interface for type IpamPoolPrefixAllocationPool.
 19728  func (i *IpamPoolPrefixAllocationPool) UnmarshalJSON(data []byte) error {
 19729  	var rawMsg map[string]json.RawMessage
 19730  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 19731  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19732  	}
 19733  	for key, val := range rawMsg {
 19734  		var err error
 19735  		switch key {
 19736  		case "id":
 19737  			err = unpopulate(val, "ID", &i.ID)
 19738  			delete(rawMsg, key)
 19739  		}
 19740  		if err != nil {
 19741  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19742  		}
 19743  	}
 19744  	return nil
 19745  }
 19746  
 19747  // MarshalJSON implements the json.Marshaller interface for type IpamPoolProperties.
 19748  func (i IpamPoolProperties) MarshalJSON() ([]byte, error) {
 19749  	objectMap := make(map[string]any)
 19750  	populate(objectMap, "addressPrefixes", i.AddressPrefixes)
 19751  	populate(objectMap, "description", i.Description)
 19752  	populate(objectMap, "displayName", i.DisplayName)
 19753  	populate(objectMap, "ipAddressType", i.IPAddressType)
 19754  	populate(objectMap, "parentPoolName", i.ParentPoolName)
 19755  	populate(objectMap, "provisioningState", i.ProvisioningState)
 19756  	return json.Marshal(objectMap)
 19757  }
 19758  
 19759  // UnmarshalJSON implements the json.Unmarshaller interface for type IpamPoolProperties.
 19760  func (i *IpamPoolProperties) UnmarshalJSON(data []byte) error {
 19761  	var rawMsg map[string]json.RawMessage
 19762  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 19763  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19764  	}
 19765  	for key, val := range rawMsg {
 19766  		var err error
 19767  		switch key {
 19768  		case "addressPrefixes":
 19769  			err = unpopulate(val, "AddressPrefixes", &i.AddressPrefixes)
 19770  			delete(rawMsg, key)
 19771  		case "description":
 19772  			err = unpopulate(val, "Description", &i.Description)
 19773  			delete(rawMsg, key)
 19774  		case "displayName":
 19775  			err = unpopulate(val, "DisplayName", &i.DisplayName)
 19776  			delete(rawMsg, key)
 19777  		case "ipAddressType":
 19778  			err = unpopulate(val, "IPAddressType", &i.IPAddressType)
 19779  			delete(rawMsg, key)
 19780  		case "parentPoolName":
 19781  			err = unpopulate(val, "ParentPoolName", &i.ParentPoolName)
 19782  			delete(rawMsg, key)
 19783  		case "provisioningState":
 19784  			err = unpopulate(val, "ProvisioningState", &i.ProvisioningState)
 19785  			delete(rawMsg, key)
 19786  		}
 19787  		if err != nil {
 19788  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19789  		}
 19790  	}
 19791  	return nil
 19792  }
 19793  
 19794  // MarshalJSON implements the json.Marshaller interface for type IpamPoolUpdate.
 19795  func (i IpamPoolUpdate) MarshalJSON() ([]byte, error) {
 19796  	objectMap := make(map[string]any)
 19797  	populate(objectMap, "properties", i.Properties)
 19798  	populate(objectMap, "tags", i.Tags)
 19799  	return json.Marshal(objectMap)
 19800  }
 19801  
 19802  // UnmarshalJSON implements the json.Unmarshaller interface for type IpamPoolUpdate.
 19803  func (i *IpamPoolUpdate) UnmarshalJSON(data []byte) error {
 19804  	var rawMsg map[string]json.RawMessage
 19805  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 19806  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19807  	}
 19808  	for key, val := range rawMsg {
 19809  		var err error
 19810  		switch key {
 19811  		case "properties":
 19812  			err = unpopulate(val, "Properties", &i.Properties)
 19813  			delete(rawMsg, key)
 19814  		case "tags":
 19815  			err = unpopulate(val, "Tags", &i.Tags)
 19816  			delete(rawMsg, key)
 19817  		}
 19818  		if err != nil {
 19819  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19820  		}
 19821  	}
 19822  	return nil
 19823  }
 19824  
 19825  // MarshalJSON implements the json.Marshaller interface for type IpamPoolUpdateProperties.
 19826  func (i IpamPoolUpdateProperties) MarshalJSON() ([]byte, error) {
 19827  	objectMap := make(map[string]any)
 19828  	populate(objectMap, "description", i.Description)
 19829  	populate(objectMap, "displayName", i.DisplayName)
 19830  	return json.Marshal(objectMap)
 19831  }
 19832  
 19833  // UnmarshalJSON implements the json.Unmarshaller interface for type IpamPoolUpdateProperties.
 19834  func (i *IpamPoolUpdateProperties) UnmarshalJSON(data []byte) error {
 19835  	var rawMsg map[string]json.RawMessage
 19836  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 19837  		return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19838  	}
 19839  	for key, val := range rawMsg {
 19840  		var err error
 19841  		switch key {
 19842  		case "description":
 19843  			err = unpopulate(val, "Description", &i.Description)
 19844  			delete(rawMsg, key)
 19845  		case "displayName":
 19846  			err = unpopulate(val, "DisplayName", &i.DisplayName)
 19847  			delete(rawMsg, key)
 19848  		}
 19849  		if err != nil {
 19850  			return fmt.Errorf("unmarshalling type %T: %v", i, err)
 19851  		}
 19852  	}
 19853  	return nil
 19854  }
 19855  
 19856  // MarshalJSON implements the json.Marshaller interface for type ListHubRouteTablesResult.
 19857  func (l ListHubRouteTablesResult) MarshalJSON() ([]byte, error) {
 19858  	objectMap := make(map[string]any)
 19859  	populate(objectMap, "nextLink", l.NextLink)
 19860  	populate(objectMap, "value", l.Value)
 19861  	return json.Marshal(objectMap)
 19862  }
 19863  
 19864  // UnmarshalJSON implements the json.Unmarshaller interface for type ListHubRouteTablesResult.
 19865  func (l *ListHubRouteTablesResult) UnmarshalJSON(data []byte) error {
 19866  	var rawMsg map[string]json.RawMessage
 19867  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 19868  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 19869  	}
 19870  	for key, val := range rawMsg {
 19871  		var err error
 19872  		switch key {
 19873  		case "nextLink":
 19874  			err = unpopulate(val, "NextLink", &l.NextLink)
 19875  			delete(rawMsg, key)
 19876  		case "value":
 19877  			err = unpopulate(val, "Value", &l.Value)
 19878  			delete(rawMsg, key)
 19879  		}
 19880  		if err != nil {
 19881  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 19882  		}
 19883  	}
 19884  	return nil
 19885  }
 19886  
 19887  // MarshalJSON implements the json.Marshaller interface for type ListHubVirtualNetworkConnectionsResult.
 19888  func (l ListHubVirtualNetworkConnectionsResult) MarshalJSON() ([]byte, error) {
 19889  	objectMap := make(map[string]any)
 19890  	populate(objectMap, "nextLink", l.NextLink)
 19891  	populate(objectMap, "value", l.Value)
 19892  	return json.Marshal(objectMap)
 19893  }
 19894  
 19895  // UnmarshalJSON implements the json.Unmarshaller interface for type ListHubVirtualNetworkConnectionsResult.
 19896  func (l *ListHubVirtualNetworkConnectionsResult) UnmarshalJSON(data []byte) error {
 19897  	var rawMsg map[string]json.RawMessage
 19898  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 19899  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 19900  	}
 19901  	for key, val := range rawMsg {
 19902  		var err error
 19903  		switch key {
 19904  		case "nextLink":
 19905  			err = unpopulate(val, "NextLink", &l.NextLink)
 19906  			delete(rawMsg, key)
 19907  		case "value":
 19908  			err = unpopulate(val, "Value", &l.Value)
 19909  			delete(rawMsg, key)
 19910  		}
 19911  		if err != nil {
 19912  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 19913  		}
 19914  	}
 19915  	return nil
 19916  }
 19917  
 19918  // MarshalJSON implements the json.Marshaller interface for type ListP2SVPNGatewaysResult.
 19919  func (l ListP2SVPNGatewaysResult) MarshalJSON() ([]byte, error) {
 19920  	objectMap := make(map[string]any)
 19921  	populate(objectMap, "nextLink", l.NextLink)
 19922  	populate(objectMap, "value", l.Value)
 19923  	return json.Marshal(objectMap)
 19924  }
 19925  
 19926  // UnmarshalJSON implements the json.Unmarshaller interface for type ListP2SVPNGatewaysResult.
 19927  func (l *ListP2SVPNGatewaysResult) UnmarshalJSON(data []byte) error {
 19928  	var rawMsg map[string]json.RawMessage
 19929  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 19930  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 19931  	}
 19932  	for key, val := range rawMsg {
 19933  		var err error
 19934  		switch key {
 19935  		case "nextLink":
 19936  			err = unpopulate(val, "NextLink", &l.NextLink)
 19937  			delete(rawMsg, key)
 19938  		case "value":
 19939  			err = unpopulate(val, "Value", &l.Value)
 19940  			delete(rawMsg, key)
 19941  		}
 19942  		if err != nil {
 19943  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 19944  		}
 19945  	}
 19946  	return nil
 19947  }
 19948  
 19949  // MarshalJSON implements the json.Marshaller interface for type ListRouteMapsResult.
 19950  func (l ListRouteMapsResult) MarshalJSON() ([]byte, error) {
 19951  	objectMap := make(map[string]any)
 19952  	populate(objectMap, "nextLink", l.NextLink)
 19953  	populate(objectMap, "value", l.Value)
 19954  	return json.Marshal(objectMap)
 19955  }
 19956  
 19957  // UnmarshalJSON implements the json.Unmarshaller interface for type ListRouteMapsResult.
 19958  func (l *ListRouteMapsResult) UnmarshalJSON(data []byte) error {
 19959  	var rawMsg map[string]json.RawMessage
 19960  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 19961  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 19962  	}
 19963  	for key, val := range rawMsg {
 19964  		var err error
 19965  		switch key {
 19966  		case "nextLink":
 19967  			err = unpopulate(val, "NextLink", &l.NextLink)
 19968  			delete(rawMsg, key)
 19969  		case "value":
 19970  			err = unpopulate(val, "Value", &l.Value)
 19971  			delete(rawMsg, key)
 19972  		}
 19973  		if err != nil {
 19974  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 19975  		}
 19976  	}
 19977  	return nil
 19978  }
 19979  
 19980  // MarshalJSON implements the json.Marshaller interface for type ListRoutingIntentResult.
 19981  func (l ListRoutingIntentResult) MarshalJSON() ([]byte, error) {
 19982  	objectMap := make(map[string]any)
 19983  	populate(objectMap, "nextLink", l.NextLink)
 19984  	populate(objectMap, "value", l.Value)
 19985  	return json.Marshal(objectMap)
 19986  }
 19987  
 19988  // UnmarshalJSON implements the json.Unmarshaller interface for type ListRoutingIntentResult.
 19989  func (l *ListRoutingIntentResult) UnmarshalJSON(data []byte) error {
 19990  	var rawMsg map[string]json.RawMessage
 19991  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 19992  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 19993  	}
 19994  	for key, val := range rawMsg {
 19995  		var err error
 19996  		switch key {
 19997  		case "nextLink":
 19998  			err = unpopulate(val, "NextLink", &l.NextLink)
 19999  			delete(rawMsg, key)
 20000  		case "value":
 20001  			err = unpopulate(val, "Value", &l.Value)
 20002  			delete(rawMsg, key)
 20003  		}
 20004  		if err != nil {
 20005  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20006  		}
 20007  	}
 20008  	return nil
 20009  }
 20010  
 20011  // MarshalJSON implements the json.Marshaller interface for type ListVPNConnectionsResult.
 20012  func (l ListVPNConnectionsResult) MarshalJSON() ([]byte, error) {
 20013  	objectMap := make(map[string]any)
 20014  	populate(objectMap, "nextLink", l.NextLink)
 20015  	populate(objectMap, "value", l.Value)
 20016  	return json.Marshal(objectMap)
 20017  }
 20018  
 20019  // UnmarshalJSON implements the json.Unmarshaller interface for type ListVPNConnectionsResult.
 20020  func (l *ListVPNConnectionsResult) UnmarshalJSON(data []byte) error {
 20021  	var rawMsg map[string]json.RawMessage
 20022  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20023  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20024  	}
 20025  	for key, val := range rawMsg {
 20026  		var err error
 20027  		switch key {
 20028  		case "nextLink":
 20029  			err = unpopulate(val, "NextLink", &l.NextLink)
 20030  			delete(rawMsg, key)
 20031  		case "value":
 20032  			err = unpopulate(val, "Value", &l.Value)
 20033  			delete(rawMsg, key)
 20034  		}
 20035  		if err != nil {
 20036  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20037  		}
 20038  	}
 20039  	return nil
 20040  }
 20041  
 20042  // MarshalJSON implements the json.Marshaller interface for type ListVPNGatewayNatRulesResult.
 20043  func (l ListVPNGatewayNatRulesResult) MarshalJSON() ([]byte, error) {
 20044  	objectMap := make(map[string]any)
 20045  	populate(objectMap, "nextLink", l.NextLink)
 20046  	populate(objectMap, "value", l.Value)
 20047  	return json.Marshal(objectMap)
 20048  }
 20049  
 20050  // UnmarshalJSON implements the json.Unmarshaller interface for type ListVPNGatewayNatRulesResult.
 20051  func (l *ListVPNGatewayNatRulesResult) UnmarshalJSON(data []byte) error {
 20052  	var rawMsg map[string]json.RawMessage
 20053  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20054  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20055  	}
 20056  	for key, val := range rawMsg {
 20057  		var err error
 20058  		switch key {
 20059  		case "nextLink":
 20060  			err = unpopulate(val, "NextLink", &l.NextLink)
 20061  			delete(rawMsg, key)
 20062  		case "value":
 20063  			err = unpopulate(val, "Value", &l.Value)
 20064  			delete(rawMsg, key)
 20065  		}
 20066  		if err != nil {
 20067  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20068  		}
 20069  	}
 20070  	return nil
 20071  }
 20072  
 20073  // MarshalJSON implements the json.Marshaller interface for type ListVPNGatewaysResult.
 20074  func (l ListVPNGatewaysResult) MarshalJSON() ([]byte, error) {
 20075  	objectMap := make(map[string]any)
 20076  	populate(objectMap, "nextLink", l.NextLink)
 20077  	populate(objectMap, "value", l.Value)
 20078  	return json.Marshal(objectMap)
 20079  }
 20080  
 20081  // UnmarshalJSON implements the json.Unmarshaller interface for type ListVPNGatewaysResult.
 20082  func (l *ListVPNGatewaysResult) UnmarshalJSON(data []byte) error {
 20083  	var rawMsg map[string]json.RawMessage
 20084  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20085  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20086  	}
 20087  	for key, val := range rawMsg {
 20088  		var err error
 20089  		switch key {
 20090  		case "nextLink":
 20091  			err = unpopulate(val, "NextLink", &l.NextLink)
 20092  			delete(rawMsg, key)
 20093  		case "value":
 20094  			err = unpopulate(val, "Value", &l.Value)
 20095  			delete(rawMsg, key)
 20096  		}
 20097  		if err != nil {
 20098  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20099  		}
 20100  	}
 20101  	return nil
 20102  }
 20103  
 20104  // MarshalJSON implements the json.Marshaller interface for type ListVPNServerConfigurationPolicyGroupsResult.
 20105  func (l ListVPNServerConfigurationPolicyGroupsResult) MarshalJSON() ([]byte, error) {
 20106  	objectMap := make(map[string]any)
 20107  	populate(objectMap, "nextLink", l.NextLink)
 20108  	populate(objectMap, "value", l.Value)
 20109  	return json.Marshal(objectMap)
 20110  }
 20111  
 20112  // UnmarshalJSON implements the json.Unmarshaller interface for type ListVPNServerConfigurationPolicyGroupsResult.
 20113  func (l *ListVPNServerConfigurationPolicyGroupsResult) UnmarshalJSON(data []byte) error {
 20114  	var rawMsg map[string]json.RawMessage
 20115  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20116  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20117  	}
 20118  	for key, val := range rawMsg {
 20119  		var err error
 20120  		switch key {
 20121  		case "nextLink":
 20122  			err = unpopulate(val, "NextLink", &l.NextLink)
 20123  			delete(rawMsg, key)
 20124  		case "value":
 20125  			err = unpopulate(val, "Value", &l.Value)
 20126  			delete(rawMsg, key)
 20127  		}
 20128  		if err != nil {
 20129  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20130  		}
 20131  	}
 20132  	return nil
 20133  }
 20134  
 20135  // MarshalJSON implements the json.Marshaller interface for type ListVPNServerConfigurationsResult.
 20136  func (l ListVPNServerConfigurationsResult) MarshalJSON() ([]byte, error) {
 20137  	objectMap := make(map[string]any)
 20138  	populate(objectMap, "nextLink", l.NextLink)
 20139  	populate(objectMap, "value", l.Value)
 20140  	return json.Marshal(objectMap)
 20141  }
 20142  
 20143  // UnmarshalJSON implements the json.Unmarshaller interface for type ListVPNServerConfigurationsResult.
 20144  func (l *ListVPNServerConfigurationsResult) UnmarshalJSON(data []byte) error {
 20145  	var rawMsg map[string]json.RawMessage
 20146  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20147  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20148  	}
 20149  	for key, val := range rawMsg {
 20150  		var err error
 20151  		switch key {
 20152  		case "nextLink":
 20153  			err = unpopulate(val, "NextLink", &l.NextLink)
 20154  			delete(rawMsg, key)
 20155  		case "value":
 20156  			err = unpopulate(val, "Value", &l.Value)
 20157  			delete(rawMsg, key)
 20158  		}
 20159  		if err != nil {
 20160  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20161  		}
 20162  	}
 20163  	return nil
 20164  }
 20165  
 20166  // MarshalJSON implements the json.Marshaller interface for type ListVPNSiteLinkConnectionsResult.
 20167  func (l ListVPNSiteLinkConnectionsResult) MarshalJSON() ([]byte, error) {
 20168  	objectMap := make(map[string]any)
 20169  	populate(objectMap, "nextLink", l.NextLink)
 20170  	populate(objectMap, "value", l.Value)
 20171  	return json.Marshal(objectMap)
 20172  }
 20173  
 20174  // UnmarshalJSON implements the json.Unmarshaller interface for type ListVPNSiteLinkConnectionsResult.
 20175  func (l *ListVPNSiteLinkConnectionsResult) UnmarshalJSON(data []byte) error {
 20176  	var rawMsg map[string]json.RawMessage
 20177  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20178  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20179  	}
 20180  	for key, val := range rawMsg {
 20181  		var err error
 20182  		switch key {
 20183  		case "nextLink":
 20184  			err = unpopulate(val, "NextLink", &l.NextLink)
 20185  			delete(rawMsg, key)
 20186  		case "value":
 20187  			err = unpopulate(val, "Value", &l.Value)
 20188  			delete(rawMsg, key)
 20189  		}
 20190  		if err != nil {
 20191  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20192  		}
 20193  	}
 20194  	return nil
 20195  }
 20196  
 20197  // MarshalJSON implements the json.Marshaller interface for type ListVPNSiteLinksResult.
 20198  func (l ListVPNSiteLinksResult) MarshalJSON() ([]byte, error) {
 20199  	objectMap := make(map[string]any)
 20200  	populate(objectMap, "nextLink", l.NextLink)
 20201  	populate(objectMap, "value", l.Value)
 20202  	return json.Marshal(objectMap)
 20203  }
 20204  
 20205  // UnmarshalJSON implements the json.Unmarshaller interface for type ListVPNSiteLinksResult.
 20206  func (l *ListVPNSiteLinksResult) UnmarshalJSON(data []byte) error {
 20207  	var rawMsg map[string]json.RawMessage
 20208  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20209  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20210  	}
 20211  	for key, val := range rawMsg {
 20212  		var err error
 20213  		switch key {
 20214  		case "nextLink":
 20215  			err = unpopulate(val, "NextLink", &l.NextLink)
 20216  			delete(rawMsg, key)
 20217  		case "value":
 20218  			err = unpopulate(val, "Value", &l.Value)
 20219  			delete(rawMsg, key)
 20220  		}
 20221  		if err != nil {
 20222  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20223  		}
 20224  	}
 20225  	return nil
 20226  }
 20227  
 20228  // MarshalJSON implements the json.Marshaller interface for type ListVPNSitesResult.
 20229  func (l ListVPNSitesResult) MarshalJSON() ([]byte, error) {
 20230  	objectMap := make(map[string]any)
 20231  	populate(objectMap, "nextLink", l.NextLink)
 20232  	populate(objectMap, "value", l.Value)
 20233  	return json.Marshal(objectMap)
 20234  }
 20235  
 20236  // UnmarshalJSON implements the json.Unmarshaller interface for type ListVPNSitesResult.
 20237  func (l *ListVPNSitesResult) UnmarshalJSON(data []byte) error {
 20238  	var rawMsg map[string]json.RawMessage
 20239  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20240  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20241  	}
 20242  	for key, val := range rawMsg {
 20243  		var err error
 20244  		switch key {
 20245  		case "nextLink":
 20246  			err = unpopulate(val, "NextLink", &l.NextLink)
 20247  			delete(rawMsg, key)
 20248  		case "value":
 20249  			err = unpopulate(val, "Value", &l.Value)
 20250  			delete(rawMsg, key)
 20251  		}
 20252  		if err != nil {
 20253  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20254  		}
 20255  	}
 20256  	return nil
 20257  }
 20258  
 20259  // MarshalJSON implements the json.Marshaller interface for type ListVirtualHubBgpConnectionResults.
 20260  func (l ListVirtualHubBgpConnectionResults) MarshalJSON() ([]byte, error) {
 20261  	objectMap := make(map[string]any)
 20262  	populate(objectMap, "nextLink", l.NextLink)
 20263  	populate(objectMap, "value", l.Value)
 20264  	return json.Marshal(objectMap)
 20265  }
 20266  
 20267  // UnmarshalJSON implements the json.Unmarshaller interface for type ListVirtualHubBgpConnectionResults.
 20268  func (l *ListVirtualHubBgpConnectionResults) UnmarshalJSON(data []byte) error {
 20269  	var rawMsg map[string]json.RawMessage
 20270  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20271  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20272  	}
 20273  	for key, val := range rawMsg {
 20274  		var err error
 20275  		switch key {
 20276  		case "nextLink":
 20277  			err = unpopulate(val, "NextLink", &l.NextLink)
 20278  			delete(rawMsg, key)
 20279  		case "value":
 20280  			err = unpopulate(val, "Value", &l.Value)
 20281  			delete(rawMsg, key)
 20282  		}
 20283  		if err != nil {
 20284  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20285  		}
 20286  	}
 20287  	return nil
 20288  }
 20289  
 20290  // MarshalJSON implements the json.Marshaller interface for type ListVirtualHubIPConfigurationResults.
 20291  func (l ListVirtualHubIPConfigurationResults) MarshalJSON() ([]byte, error) {
 20292  	objectMap := make(map[string]any)
 20293  	populate(objectMap, "nextLink", l.NextLink)
 20294  	populate(objectMap, "value", l.Value)
 20295  	return json.Marshal(objectMap)
 20296  }
 20297  
 20298  // UnmarshalJSON implements the json.Unmarshaller interface for type ListVirtualHubIPConfigurationResults.
 20299  func (l *ListVirtualHubIPConfigurationResults) UnmarshalJSON(data []byte) error {
 20300  	var rawMsg map[string]json.RawMessage
 20301  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20302  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20303  	}
 20304  	for key, val := range rawMsg {
 20305  		var err error
 20306  		switch key {
 20307  		case "nextLink":
 20308  			err = unpopulate(val, "NextLink", &l.NextLink)
 20309  			delete(rawMsg, key)
 20310  		case "value":
 20311  			err = unpopulate(val, "Value", &l.Value)
 20312  			delete(rawMsg, key)
 20313  		}
 20314  		if err != nil {
 20315  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20316  		}
 20317  	}
 20318  	return nil
 20319  }
 20320  
 20321  // MarshalJSON implements the json.Marshaller interface for type ListVirtualHubRouteTableV2SResult.
 20322  func (l ListVirtualHubRouteTableV2SResult) MarshalJSON() ([]byte, error) {
 20323  	objectMap := make(map[string]any)
 20324  	populate(objectMap, "nextLink", l.NextLink)
 20325  	populate(objectMap, "value", l.Value)
 20326  	return json.Marshal(objectMap)
 20327  }
 20328  
 20329  // UnmarshalJSON implements the json.Unmarshaller interface for type ListVirtualHubRouteTableV2SResult.
 20330  func (l *ListVirtualHubRouteTableV2SResult) UnmarshalJSON(data []byte) error {
 20331  	var rawMsg map[string]json.RawMessage
 20332  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20333  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20334  	}
 20335  	for key, val := range rawMsg {
 20336  		var err error
 20337  		switch key {
 20338  		case "nextLink":
 20339  			err = unpopulate(val, "NextLink", &l.NextLink)
 20340  			delete(rawMsg, key)
 20341  		case "value":
 20342  			err = unpopulate(val, "Value", &l.Value)
 20343  			delete(rawMsg, key)
 20344  		}
 20345  		if err != nil {
 20346  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20347  		}
 20348  	}
 20349  	return nil
 20350  }
 20351  
 20352  // MarshalJSON implements the json.Marshaller interface for type ListVirtualHubsResult.
 20353  func (l ListVirtualHubsResult) MarshalJSON() ([]byte, error) {
 20354  	objectMap := make(map[string]any)
 20355  	populate(objectMap, "nextLink", l.NextLink)
 20356  	populate(objectMap, "value", l.Value)
 20357  	return json.Marshal(objectMap)
 20358  }
 20359  
 20360  // UnmarshalJSON implements the json.Unmarshaller interface for type ListVirtualHubsResult.
 20361  func (l *ListVirtualHubsResult) UnmarshalJSON(data []byte) error {
 20362  	var rawMsg map[string]json.RawMessage
 20363  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20364  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20365  	}
 20366  	for key, val := range rawMsg {
 20367  		var err error
 20368  		switch key {
 20369  		case "nextLink":
 20370  			err = unpopulate(val, "NextLink", &l.NextLink)
 20371  			delete(rawMsg, key)
 20372  		case "value":
 20373  			err = unpopulate(val, "Value", &l.Value)
 20374  			delete(rawMsg, key)
 20375  		}
 20376  		if err != nil {
 20377  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20378  		}
 20379  	}
 20380  	return nil
 20381  }
 20382  
 20383  // MarshalJSON implements the json.Marshaller interface for type ListVirtualNetworkGatewayNatRulesResult.
 20384  func (l ListVirtualNetworkGatewayNatRulesResult) MarshalJSON() ([]byte, error) {
 20385  	objectMap := make(map[string]any)
 20386  	populate(objectMap, "nextLink", l.NextLink)
 20387  	populate(objectMap, "value", l.Value)
 20388  	return json.Marshal(objectMap)
 20389  }
 20390  
 20391  // UnmarshalJSON implements the json.Unmarshaller interface for type ListVirtualNetworkGatewayNatRulesResult.
 20392  func (l *ListVirtualNetworkGatewayNatRulesResult) UnmarshalJSON(data []byte) error {
 20393  	var rawMsg map[string]json.RawMessage
 20394  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20395  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20396  	}
 20397  	for key, val := range rawMsg {
 20398  		var err error
 20399  		switch key {
 20400  		case "nextLink":
 20401  			err = unpopulate(val, "NextLink", &l.NextLink)
 20402  			delete(rawMsg, key)
 20403  		case "value":
 20404  			err = unpopulate(val, "Value", &l.Value)
 20405  			delete(rawMsg, key)
 20406  		}
 20407  		if err != nil {
 20408  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20409  		}
 20410  	}
 20411  	return nil
 20412  }
 20413  
 20414  // MarshalJSON implements the json.Marshaller interface for type ListVirtualWANsResult.
 20415  func (l ListVirtualWANsResult) MarshalJSON() ([]byte, error) {
 20416  	objectMap := make(map[string]any)
 20417  	populate(objectMap, "nextLink", l.NextLink)
 20418  	populate(objectMap, "value", l.Value)
 20419  	return json.Marshal(objectMap)
 20420  }
 20421  
 20422  // UnmarshalJSON implements the json.Unmarshaller interface for type ListVirtualWANsResult.
 20423  func (l *ListVirtualWANsResult) UnmarshalJSON(data []byte) error {
 20424  	var rawMsg map[string]json.RawMessage
 20425  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20426  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20427  	}
 20428  	for key, val := range rawMsg {
 20429  		var err error
 20430  		switch key {
 20431  		case "nextLink":
 20432  			err = unpopulate(val, "NextLink", &l.NextLink)
 20433  			delete(rawMsg, key)
 20434  		case "value":
 20435  			err = unpopulate(val, "Value", &l.Value)
 20436  			delete(rawMsg, key)
 20437  		}
 20438  		if err != nil {
 20439  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20440  		}
 20441  	}
 20442  	return nil
 20443  }
 20444  
 20445  // MarshalJSON implements the json.Marshaller interface for type LoadBalancer.
 20446  func (l LoadBalancer) MarshalJSON() ([]byte, error) {
 20447  	objectMap := make(map[string]any)
 20448  	populate(objectMap, "etag", l.Etag)
 20449  	populate(objectMap, "extendedLocation", l.ExtendedLocation)
 20450  	populate(objectMap, "id", l.ID)
 20451  	populate(objectMap, "location", l.Location)
 20452  	populate(objectMap, "name", l.Name)
 20453  	populate(objectMap, "properties", l.Properties)
 20454  	populate(objectMap, "sku", l.SKU)
 20455  	populate(objectMap, "tags", l.Tags)
 20456  	populate(objectMap, "type", l.Type)
 20457  	return json.Marshal(objectMap)
 20458  }
 20459  
 20460  // UnmarshalJSON implements the json.Unmarshaller interface for type LoadBalancer.
 20461  func (l *LoadBalancer) UnmarshalJSON(data []byte) error {
 20462  	var rawMsg map[string]json.RawMessage
 20463  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20464  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20465  	}
 20466  	for key, val := range rawMsg {
 20467  		var err error
 20468  		switch key {
 20469  		case "etag":
 20470  			err = unpopulate(val, "Etag", &l.Etag)
 20471  			delete(rawMsg, key)
 20472  		case "extendedLocation":
 20473  			err = unpopulate(val, "ExtendedLocation", &l.ExtendedLocation)
 20474  			delete(rawMsg, key)
 20475  		case "id":
 20476  			err = unpopulate(val, "ID", &l.ID)
 20477  			delete(rawMsg, key)
 20478  		case "location":
 20479  			err = unpopulate(val, "Location", &l.Location)
 20480  			delete(rawMsg, key)
 20481  		case "name":
 20482  			err = unpopulate(val, "Name", &l.Name)
 20483  			delete(rawMsg, key)
 20484  		case "properties":
 20485  			err = unpopulate(val, "Properties", &l.Properties)
 20486  			delete(rawMsg, key)
 20487  		case "sku":
 20488  			err = unpopulate(val, "SKU", &l.SKU)
 20489  			delete(rawMsg, key)
 20490  		case "tags":
 20491  			err = unpopulate(val, "Tags", &l.Tags)
 20492  			delete(rawMsg, key)
 20493  		case "type":
 20494  			err = unpopulate(val, "Type", &l.Type)
 20495  			delete(rawMsg, key)
 20496  		}
 20497  		if err != nil {
 20498  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20499  		}
 20500  	}
 20501  	return nil
 20502  }
 20503  
 20504  // MarshalJSON implements the json.Marshaller interface for type LoadBalancerBackendAddress.
 20505  func (l LoadBalancerBackendAddress) MarshalJSON() ([]byte, error) {
 20506  	objectMap := make(map[string]any)
 20507  	populate(objectMap, "name", l.Name)
 20508  	populate(objectMap, "properties", l.Properties)
 20509  	return json.Marshal(objectMap)
 20510  }
 20511  
 20512  // UnmarshalJSON implements the json.Unmarshaller interface for type LoadBalancerBackendAddress.
 20513  func (l *LoadBalancerBackendAddress) UnmarshalJSON(data []byte) error {
 20514  	var rawMsg map[string]json.RawMessage
 20515  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20516  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20517  	}
 20518  	for key, val := range rawMsg {
 20519  		var err error
 20520  		switch key {
 20521  		case "name":
 20522  			err = unpopulate(val, "Name", &l.Name)
 20523  			delete(rawMsg, key)
 20524  		case "properties":
 20525  			err = unpopulate(val, "Properties", &l.Properties)
 20526  			delete(rawMsg, key)
 20527  		}
 20528  		if err != nil {
 20529  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20530  		}
 20531  	}
 20532  	return nil
 20533  }
 20534  
 20535  // MarshalJSON implements the json.Marshaller interface for type LoadBalancerBackendAddressPoolListResult.
 20536  func (l LoadBalancerBackendAddressPoolListResult) MarshalJSON() ([]byte, error) {
 20537  	objectMap := make(map[string]any)
 20538  	populate(objectMap, "nextLink", l.NextLink)
 20539  	populate(objectMap, "value", l.Value)
 20540  	return json.Marshal(objectMap)
 20541  }
 20542  
 20543  // UnmarshalJSON implements the json.Unmarshaller interface for type LoadBalancerBackendAddressPoolListResult.
 20544  func (l *LoadBalancerBackendAddressPoolListResult) UnmarshalJSON(data []byte) error {
 20545  	var rawMsg map[string]json.RawMessage
 20546  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20547  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20548  	}
 20549  	for key, val := range rawMsg {
 20550  		var err error
 20551  		switch key {
 20552  		case "nextLink":
 20553  			err = unpopulate(val, "NextLink", &l.NextLink)
 20554  			delete(rawMsg, key)
 20555  		case "value":
 20556  			err = unpopulate(val, "Value", &l.Value)
 20557  			delete(rawMsg, key)
 20558  		}
 20559  		if err != nil {
 20560  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20561  		}
 20562  	}
 20563  	return nil
 20564  }
 20565  
 20566  // MarshalJSON implements the json.Marshaller interface for type LoadBalancerBackendAddressPropertiesFormat.
 20567  func (l LoadBalancerBackendAddressPropertiesFormat) MarshalJSON() ([]byte, error) {
 20568  	objectMap := make(map[string]any)
 20569  	populate(objectMap, "adminState", l.AdminState)
 20570  	populate(objectMap, "ipAddress", l.IPAddress)
 20571  	populate(objectMap, "inboundNatRulesPortMapping", l.InboundNatRulesPortMapping)
 20572  	populate(objectMap, "loadBalancerFrontendIPConfiguration", l.LoadBalancerFrontendIPConfiguration)
 20573  	populate(objectMap, "networkInterfaceIPConfiguration", l.NetworkInterfaceIPConfiguration)
 20574  	populate(objectMap, "subnet", l.Subnet)
 20575  	populate(objectMap, "virtualNetwork", l.VirtualNetwork)
 20576  	return json.Marshal(objectMap)
 20577  }
 20578  
 20579  // UnmarshalJSON implements the json.Unmarshaller interface for type LoadBalancerBackendAddressPropertiesFormat.
 20580  func (l *LoadBalancerBackendAddressPropertiesFormat) UnmarshalJSON(data []byte) error {
 20581  	var rawMsg map[string]json.RawMessage
 20582  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20583  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20584  	}
 20585  	for key, val := range rawMsg {
 20586  		var err error
 20587  		switch key {
 20588  		case "adminState":
 20589  			err = unpopulate(val, "AdminState", &l.AdminState)
 20590  			delete(rawMsg, key)
 20591  		case "ipAddress":
 20592  			err = unpopulate(val, "IPAddress", &l.IPAddress)
 20593  			delete(rawMsg, key)
 20594  		case "inboundNatRulesPortMapping":
 20595  			err = unpopulate(val, "InboundNatRulesPortMapping", &l.InboundNatRulesPortMapping)
 20596  			delete(rawMsg, key)
 20597  		case "loadBalancerFrontendIPConfiguration":
 20598  			err = unpopulate(val, "LoadBalancerFrontendIPConfiguration", &l.LoadBalancerFrontendIPConfiguration)
 20599  			delete(rawMsg, key)
 20600  		case "networkInterfaceIPConfiguration":
 20601  			err = unpopulate(val, "NetworkInterfaceIPConfiguration", &l.NetworkInterfaceIPConfiguration)
 20602  			delete(rawMsg, key)
 20603  		case "subnet":
 20604  			err = unpopulate(val, "Subnet", &l.Subnet)
 20605  			delete(rawMsg, key)
 20606  		case "virtualNetwork":
 20607  			err = unpopulate(val, "VirtualNetwork", &l.VirtualNetwork)
 20608  			delete(rawMsg, key)
 20609  		}
 20610  		if err != nil {
 20611  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20612  		}
 20613  	}
 20614  	return nil
 20615  }
 20616  
 20617  // MarshalJSON implements the json.Marshaller interface for type LoadBalancerFrontendIPConfigurationListResult.
 20618  func (l LoadBalancerFrontendIPConfigurationListResult) MarshalJSON() ([]byte, error) {
 20619  	objectMap := make(map[string]any)
 20620  	populate(objectMap, "nextLink", l.NextLink)
 20621  	populate(objectMap, "value", l.Value)
 20622  	return json.Marshal(objectMap)
 20623  }
 20624  
 20625  // UnmarshalJSON implements the json.Unmarshaller interface for type LoadBalancerFrontendIPConfigurationListResult.
 20626  func (l *LoadBalancerFrontendIPConfigurationListResult) UnmarshalJSON(data []byte) error {
 20627  	var rawMsg map[string]json.RawMessage
 20628  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20629  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20630  	}
 20631  	for key, val := range rawMsg {
 20632  		var err error
 20633  		switch key {
 20634  		case "nextLink":
 20635  			err = unpopulate(val, "NextLink", &l.NextLink)
 20636  			delete(rawMsg, key)
 20637  		case "value":
 20638  			err = unpopulate(val, "Value", &l.Value)
 20639  			delete(rawMsg, key)
 20640  		}
 20641  		if err != nil {
 20642  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20643  		}
 20644  	}
 20645  	return nil
 20646  }
 20647  
 20648  // MarshalJSON implements the json.Marshaller interface for type LoadBalancerHealthPerRule.
 20649  func (l LoadBalancerHealthPerRule) MarshalJSON() ([]byte, error) {
 20650  	objectMap := make(map[string]any)
 20651  	populate(objectMap, "down", l.Down)
 20652  	populate(objectMap, "loadBalancerBackendAddresses", l.LoadBalancerBackendAddresses)
 20653  	populate(objectMap, "up", l.Up)
 20654  	return json.Marshal(objectMap)
 20655  }
 20656  
 20657  // UnmarshalJSON implements the json.Unmarshaller interface for type LoadBalancerHealthPerRule.
 20658  func (l *LoadBalancerHealthPerRule) UnmarshalJSON(data []byte) error {
 20659  	var rawMsg map[string]json.RawMessage
 20660  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20661  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20662  	}
 20663  	for key, val := range rawMsg {
 20664  		var err error
 20665  		switch key {
 20666  		case "down":
 20667  			err = unpopulate(val, "Down", &l.Down)
 20668  			delete(rawMsg, key)
 20669  		case "loadBalancerBackendAddresses":
 20670  			err = unpopulate(val, "LoadBalancerBackendAddresses", &l.LoadBalancerBackendAddresses)
 20671  			delete(rawMsg, key)
 20672  		case "up":
 20673  			err = unpopulate(val, "Up", &l.Up)
 20674  			delete(rawMsg, key)
 20675  		}
 20676  		if err != nil {
 20677  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20678  		}
 20679  	}
 20680  	return nil
 20681  }
 20682  
 20683  // MarshalJSON implements the json.Marshaller interface for type LoadBalancerHealthPerRulePerBackendAddress.
 20684  func (l LoadBalancerHealthPerRulePerBackendAddress) MarshalJSON() ([]byte, error) {
 20685  	objectMap := make(map[string]any)
 20686  	populate(objectMap, "ipAddress", l.IPAddress)
 20687  	populate(objectMap, "networkInterfaceIPConfigurationId", l.NetworkInterfaceIPConfigurationID)
 20688  	populate(objectMap, "reason", l.Reason)
 20689  	populate(objectMap, "state", l.State)
 20690  	return json.Marshal(objectMap)
 20691  }
 20692  
 20693  // UnmarshalJSON implements the json.Unmarshaller interface for type LoadBalancerHealthPerRulePerBackendAddress.
 20694  func (l *LoadBalancerHealthPerRulePerBackendAddress) UnmarshalJSON(data []byte) error {
 20695  	var rawMsg map[string]json.RawMessage
 20696  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20697  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20698  	}
 20699  	for key, val := range rawMsg {
 20700  		var err error
 20701  		switch key {
 20702  		case "ipAddress":
 20703  			err = unpopulate(val, "IPAddress", &l.IPAddress)
 20704  			delete(rawMsg, key)
 20705  		case "networkInterfaceIPConfigurationId":
 20706  			err = unpopulate(val, "NetworkInterfaceIPConfigurationID", &l.NetworkInterfaceIPConfigurationID)
 20707  			delete(rawMsg, key)
 20708  		case "reason":
 20709  			err = unpopulate(val, "Reason", &l.Reason)
 20710  			delete(rawMsg, key)
 20711  		case "state":
 20712  			err = unpopulate(val, "State", &l.State)
 20713  			delete(rawMsg, key)
 20714  		}
 20715  		if err != nil {
 20716  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20717  		}
 20718  	}
 20719  	return nil
 20720  }
 20721  
 20722  // MarshalJSON implements the json.Marshaller interface for type LoadBalancerListResult.
 20723  func (l LoadBalancerListResult) MarshalJSON() ([]byte, error) {
 20724  	objectMap := make(map[string]any)
 20725  	populate(objectMap, "nextLink", l.NextLink)
 20726  	populate(objectMap, "value", l.Value)
 20727  	return json.Marshal(objectMap)
 20728  }
 20729  
 20730  // UnmarshalJSON implements the json.Unmarshaller interface for type LoadBalancerListResult.
 20731  func (l *LoadBalancerListResult) UnmarshalJSON(data []byte) error {
 20732  	var rawMsg map[string]json.RawMessage
 20733  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20734  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20735  	}
 20736  	for key, val := range rawMsg {
 20737  		var err error
 20738  		switch key {
 20739  		case "nextLink":
 20740  			err = unpopulate(val, "NextLink", &l.NextLink)
 20741  			delete(rawMsg, key)
 20742  		case "value":
 20743  			err = unpopulate(val, "Value", &l.Value)
 20744  			delete(rawMsg, key)
 20745  		}
 20746  		if err != nil {
 20747  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20748  		}
 20749  	}
 20750  	return nil
 20751  }
 20752  
 20753  // MarshalJSON implements the json.Marshaller interface for type LoadBalancerLoadBalancingRuleListResult.
 20754  func (l LoadBalancerLoadBalancingRuleListResult) MarshalJSON() ([]byte, error) {
 20755  	objectMap := make(map[string]any)
 20756  	populate(objectMap, "nextLink", l.NextLink)
 20757  	populate(objectMap, "value", l.Value)
 20758  	return json.Marshal(objectMap)
 20759  }
 20760  
 20761  // UnmarshalJSON implements the json.Unmarshaller interface for type LoadBalancerLoadBalancingRuleListResult.
 20762  func (l *LoadBalancerLoadBalancingRuleListResult) UnmarshalJSON(data []byte) error {
 20763  	var rawMsg map[string]json.RawMessage
 20764  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20765  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20766  	}
 20767  	for key, val := range rawMsg {
 20768  		var err error
 20769  		switch key {
 20770  		case "nextLink":
 20771  			err = unpopulate(val, "NextLink", &l.NextLink)
 20772  			delete(rawMsg, key)
 20773  		case "value":
 20774  			err = unpopulate(val, "Value", &l.Value)
 20775  			delete(rawMsg, key)
 20776  		}
 20777  		if err != nil {
 20778  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20779  		}
 20780  	}
 20781  	return nil
 20782  }
 20783  
 20784  // MarshalJSON implements the json.Marshaller interface for type LoadBalancerOutboundRuleListResult.
 20785  func (l LoadBalancerOutboundRuleListResult) MarshalJSON() ([]byte, error) {
 20786  	objectMap := make(map[string]any)
 20787  	populate(objectMap, "nextLink", l.NextLink)
 20788  	populate(objectMap, "value", l.Value)
 20789  	return json.Marshal(objectMap)
 20790  }
 20791  
 20792  // UnmarshalJSON implements the json.Unmarshaller interface for type LoadBalancerOutboundRuleListResult.
 20793  func (l *LoadBalancerOutboundRuleListResult) UnmarshalJSON(data []byte) error {
 20794  	var rawMsg map[string]json.RawMessage
 20795  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20796  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20797  	}
 20798  	for key, val := range rawMsg {
 20799  		var err error
 20800  		switch key {
 20801  		case "nextLink":
 20802  			err = unpopulate(val, "NextLink", &l.NextLink)
 20803  			delete(rawMsg, key)
 20804  		case "value":
 20805  			err = unpopulate(val, "Value", &l.Value)
 20806  			delete(rawMsg, key)
 20807  		}
 20808  		if err != nil {
 20809  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20810  		}
 20811  	}
 20812  	return nil
 20813  }
 20814  
 20815  // MarshalJSON implements the json.Marshaller interface for type LoadBalancerProbeListResult.
 20816  func (l LoadBalancerProbeListResult) MarshalJSON() ([]byte, error) {
 20817  	objectMap := make(map[string]any)
 20818  	populate(objectMap, "nextLink", l.NextLink)
 20819  	populate(objectMap, "value", l.Value)
 20820  	return json.Marshal(objectMap)
 20821  }
 20822  
 20823  // UnmarshalJSON implements the json.Unmarshaller interface for type LoadBalancerProbeListResult.
 20824  func (l *LoadBalancerProbeListResult) UnmarshalJSON(data []byte) error {
 20825  	var rawMsg map[string]json.RawMessage
 20826  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20827  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20828  	}
 20829  	for key, val := range rawMsg {
 20830  		var err error
 20831  		switch key {
 20832  		case "nextLink":
 20833  			err = unpopulate(val, "NextLink", &l.NextLink)
 20834  			delete(rawMsg, key)
 20835  		case "value":
 20836  			err = unpopulate(val, "Value", &l.Value)
 20837  			delete(rawMsg, key)
 20838  		}
 20839  		if err != nil {
 20840  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20841  		}
 20842  	}
 20843  	return nil
 20844  }
 20845  
 20846  // MarshalJSON implements the json.Marshaller interface for type LoadBalancerPropertiesFormat.
 20847  func (l LoadBalancerPropertiesFormat) MarshalJSON() ([]byte, error) {
 20848  	objectMap := make(map[string]any)
 20849  	populate(objectMap, "backendAddressPools", l.BackendAddressPools)
 20850  	populate(objectMap, "frontendIPConfigurations", l.FrontendIPConfigurations)
 20851  	populate(objectMap, "inboundNatPools", l.InboundNatPools)
 20852  	populate(objectMap, "inboundNatRules", l.InboundNatRules)
 20853  	populate(objectMap, "loadBalancingRules", l.LoadBalancingRules)
 20854  	populate(objectMap, "outboundRules", l.OutboundRules)
 20855  	populate(objectMap, "probes", l.Probes)
 20856  	populate(objectMap, "provisioningState", l.ProvisioningState)
 20857  	populate(objectMap, "resourceGuid", l.ResourceGUID)
 20858  	return json.Marshal(objectMap)
 20859  }
 20860  
 20861  // UnmarshalJSON implements the json.Unmarshaller interface for type LoadBalancerPropertiesFormat.
 20862  func (l *LoadBalancerPropertiesFormat) UnmarshalJSON(data []byte) error {
 20863  	var rawMsg map[string]json.RawMessage
 20864  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20865  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20866  	}
 20867  	for key, val := range rawMsg {
 20868  		var err error
 20869  		switch key {
 20870  		case "backendAddressPools":
 20871  			err = unpopulate(val, "BackendAddressPools", &l.BackendAddressPools)
 20872  			delete(rawMsg, key)
 20873  		case "frontendIPConfigurations":
 20874  			err = unpopulate(val, "FrontendIPConfigurations", &l.FrontendIPConfigurations)
 20875  			delete(rawMsg, key)
 20876  		case "inboundNatPools":
 20877  			err = unpopulate(val, "InboundNatPools", &l.InboundNatPools)
 20878  			delete(rawMsg, key)
 20879  		case "inboundNatRules":
 20880  			err = unpopulate(val, "InboundNatRules", &l.InboundNatRules)
 20881  			delete(rawMsg, key)
 20882  		case "loadBalancingRules":
 20883  			err = unpopulate(val, "LoadBalancingRules", &l.LoadBalancingRules)
 20884  			delete(rawMsg, key)
 20885  		case "outboundRules":
 20886  			err = unpopulate(val, "OutboundRules", &l.OutboundRules)
 20887  			delete(rawMsg, key)
 20888  		case "probes":
 20889  			err = unpopulate(val, "Probes", &l.Probes)
 20890  			delete(rawMsg, key)
 20891  		case "provisioningState":
 20892  			err = unpopulate(val, "ProvisioningState", &l.ProvisioningState)
 20893  			delete(rawMsg, key)
 20894  		case "resourceGuid":
 20895  			err = unpopulate(val, "ResourceGUID", &l.ResourceGUID)
 20896  			delete(rawMsg, key)
 20897  		}
 20898  		if err != nil {
 20899  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20900  		}
 20901  	}
 20902  	return nil
 20903  }
 20904  
 20905  // MarshalJSON implements the json.Marshaller interface for type LoadBalancerSKU.
 20906  func (l LoadBalancerSKU) MarshalJSON() ([]byte, error) {
 20907  	objectMap := make(map[string]any)
 20908  	populate(objectMap, "name", l.Name)
 20909  	populate(objectMap, "tier", l.Tier)
 20910  	return json.Marshal(objectMap)
 20911  }
 20912  
 20913  // UnmarshalJSON implements the json.Unmarshaller interface for type LoadBalancerSKU.
 20914  func (l *LoadBalancerSKU) UnmarshalJSON(data []byte) error {
 20915  	var rawMsg map[string]json.RawMessage
 20916  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20917  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20918  	}
 20919  	for key, val := range rawMsg {
 20920  		var err error
 20921  		switch key {
 20922  		case "name":
 20923  			err = unpopulate(val, "Name", &l.Name)
 20924  			delete(rawMsg, key)
 20925  		case "tier":
 20926  			err = unpopulate(val, "Tier", &l.Tier)
 20927  			delete(rawMsg, key)
 20928  		}
 20929  		if err != nil {
 20930  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20931  		}
 20932  	}
 20933  	return nil
 20934  }
 20935  
 20936  // MarshalJSON implements the json.Marshaller interface for type LoadBalancerVipSwapRequest.
 20937  func (l LoadBalancerVipSwapRequest) MarshalJSON() ([]byte, error) {
 20938  	objectMap := make(map[string]any)
 20939  	populate(objectMap, "frontendIPConfigurations", l.FrontendIPConfigurations)
 20940  	return json.Marshal(objectMap)
 20941  }
 20942  
 20943  // UnmarshalJSON implements the json.Unmarshaller interface for type LoadBalancerVipSwapRequest.
 20944  func (l *LoadBalancerVipSwapRequest) UnmarshalJSON(data []byte) error {
 20945  	var rawMsg map[string]json.RawMessage
 20946  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20947  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20948  	}
 20949  	for key, val := range rawMsg {
 20950  		var err error
 20951  		switch key {
 20952  		case "frontendIPConfigurations":
 20953  			err = unpopulate(val, "FrontendIPConfigurations", &l.FrontendIPConfigurations)
 20954  			delete(rawMsg, key)
 20955  		}
 20956  		if err != nil {
 20957  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20958  		}
 20959  	}
 20960  	return nil
 20961  }
 20962  
 20963  // MarshalJSON implements the json.Marshaller interface for type LoadBalancerVipSwapRequestFrontendIPConfiguration.
 20964  func (l LoadBalancerVipSwapRequestFrontendIPConfiguration) MarshalJSON() ([]byte, error) {
 20965  	objectMap := make(map[string]any)
 20966  	populate(objectMap, "id", l.ID)
 20967  	populate(objectMap, "properties", l.Properties)
 20968  	return json.Marshal(objectMap)
 20969  }
 20970  
 20971  // UnmarshalJSON implements the json.Unmarshaller interface for type LoadBalancerVipSwapRequestFrontendIPConfiguration.
 20972  func (l *LoadBalancerVipSwapRequestFrontendIPConfiguration) UnmarshalJSON(data []byte) error {
 20973  	var rawMsg map[string]json.RawMessage
 20974  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 20975  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20976  	}
 20977  	for key, val := range rawMsg {
 20978  		var err error
 20979  		switch key {
 20980  		case "id":
 20981  			err = unpopulate(val, "ID", &l.ID)
 20982  			delete(rawMsg, key)
 20983  		case "properties":
 20984  			err = unpopulate(val, "Properties", &l.Properties)
 20985  			delete(rawMsg, key)
 20986  		}
 20987  		if err != nil {
 20988  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 20989  		}
 20990  	}
 20991  	return nil
 20992  }
 20993  
 20994  // MarshalJSON implements the json.Marshaller interface for type LoadBalancerVipSwapRequestFrontendIPConfigurationProperties.
 20995  func (l LoadBalancerVipSwapRequestFrontendIPConfigurationProperties) MarshalJSON() ([]byte, error) {
 20996  	objectMap := make(map[string]any)
 20997  	populate(objectMap, "publicIPAddress", l.PublicIPAddress)
 20998  	return json.Marshal(objectMap)
 20999  }
 21000  
 21001  // UnmarshalJSON implements the json.Unmarshaller interface for type LoadBalancerVipSwapRequestFrontendIPConfigurationProperties.
 21002  func (l *LoadBalancerVipSwapRequestFrontendIPConfigurationProperties) UnmarshalJSON(data []byte) error {
 21003  	var rawMsg map[string]json.RawMessage
 21004  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 21005  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 21006  	}
 21007  	for key, val := range rawMsg {
 21008  		var err error
 21009  		switch key {
 21010  		case "publicIPAddress":
 21011  			err = unpopulate(val, "PublicIPAddress", &l.PublicIPAddress)
 21012  			delete(rawMsg, key)
 21013  		}
 21014  		if err != nil {
 21015  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 21016  		}
 21017  	}
 21018  	return nil
 21019  }
 21020  
 21021  // MarshalJSON implements the json.Marshaller interface for type LoadBalancingRule.
 21022  func (l LoadBalancingRule) MarshalJSON() ([]byte, error) {
 21023  	objectMap := make(map[string]any)
 21024  	populate(objectMap, "etag", l.Etag)
 21025  	populate(objectMap, "id", l.ID)
 21026  	populate(objectMap, "name", l.Name)
 21027  	populate(objectMap, "properties", l.Properties)
 21028  	populate(objectMap, "type", l.Type)
 21029  	return json.Marshal(objectMap)
 21030  }
 21031  
 21032  // UnmarshalJSON implements the json.Unmarshaller interface for type LoadBalancingRule.
 21033  func (l *LoadBalancingRule) UnmarshalJSON(data []byte) error {
 21034  	var rawMsg map[string]json.RawMessage
 21035  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 21036  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 21037  	}
 21038  	for key, val := range rawMsg {
 21039  		var err error
 21040  		switch key {
 21041  		case "etag":
 21042  			err = unpopulate(val, "Etag", &l.Etag)
 21043  			delete(rawMsg, key)
 21044  		case "id":
 21045  			err = unpopulate(val, "ID", &l.ID)
 21046  			delete(rawMsg, key)
 21047  		case "name":
 21048  			err = unpopulate(val, "Name", &l.Name)
 21049  			delete(rawMsg, key)
 21050  		case "properties":
 21051  			err = unpopulate(val, "Properties", &l.Properties)
 21052  			delete(rawMsg, key)
 21053  		case "type":
 21054  			err = unpopulate(val, "Type", &l.Type)
 21055  			delete(rawMsg, key)
 21056  		}
 21057  		if err != nil {
 21058  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 21059  		}
 21060  	}
 21061  	return nil
 21062  }
 21063  
 21064  // MarshalJSON implements the json.Marshaller interface for type LoadBalancingRulePropertiesFormat.
 21065  func (l LoadBalancingRulePropertiesFormat) MarshalJSON() ([]byte, error) {
 21066  	objectMap := make(map[string]any)
 21067  	populate(objectMap, "backendAddressPool", l.BackendAddressPool)
 21068  	populate(objectMap, "backendAddressPools", l.BackendAddressPools)
 21069  	populate(objectMap, "backendPort", l.BackendPort)
 21070  	populate(objectMap, "disableOutboundSnat", l.DisableOutboundSnat)
 21071  	populate(objectMap, "enableFloatingIP", l.EnableFloatingIP)
 21072  	populate(objectMap, "enableTcpReset", l.EnableTCPReset)
 21073  	populate(objectMap, "frontendIPConfiguration", l.FrontendIPConfiguration)
 21074  	populate(objectMap, "frontendPort", l.FrontendPort)
 21075  	populate(objectMap, "idleTimeoutInMinutes", l.IdleTimeoutInMinutes)
 21076  	populate(objectMap, "loadDistribution", l.LoadDistribution)
 21077  	populate(objectMap, "probe", l.Probe)
 21078  	populate(objectMap, "protocol", l.Protocol)
 21079  	populate(objectMap, "provisioningState", l.ProvisioningState)
 21080  	return json.Marshal(objectMap)
 21081  }
 21082  
 21083  // UnmarshalJSON implements the json.Unmarshaller interface for type LoadBalancingRulePropertiesFormat.
 21084  func (l *LoadBalancingRulePropertiesFormat) UnmarshalJSON(data []byte) error {
 21085  	var rawMsg map[string]json.RawMessage
 21086  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 21087  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 21088  	}
 21089  	for key, val := range rawMsg {
 21090  		var err error
 21091  		switch key {
 21092  		case "backendAddressPool":
 21093  			err = unpopulate(val, "BackendAddressPool", &l.BackendAddressPool)
 21094  			delete(rawMsg, key)
 21095  		case "backendAddressPools":
 21096  			err = unpopulate(val, "BackendAddressPools", &l.BackendAddressPools)
 21097  			delete(rawMsg, key)
 21098  		case "backendPort":
 21099  			err = unpopulate(val, "BackendPort", &l.BackendPort)
 21100  			delete(rawMsg, key)
 21101  		case "disableOutboundSnat":
 21102  			err = unpopulate(val, "DisableOutboundSnat", &l.DisableOutboundSnat)
 21103  			delete(rawMsg, key)
 21104  		case "enableFloatingIP":
 21105  			err = unpopulate(val, "EnableFloatingIP", &l.EnableFloatingIP)
 21106  			delete(rawMsg, key)
 21107  		case "enableTcpReset":
 21108  			err = unpopulate(val, "EnableTCPReset", &l.EnableTCPReset)
 21109  			delete(rawMsg, key)
 21110  		case "frontendIPConfiguration":
 21111  			err = unpopulate(val, "FrontendIPConfiguration", &l.FrontendIPConfiguration)
 21112  			delete(rawMsg, key)
 21113  		case "frontendPort":
 21114  			err = unpopulate(val, "FrontendPort", &l.FrontendPort)
 21115  			delete(rawMsg, key)
 21116  		case "idleTimeoutInMinutes":
 21117  			err = unpopulate(val, "IdleTimeoutInMinutes", &l.IdleTimeoutInMinutes)
 21118  			delete(rawMsg, key)
 21119  		case "loadDistribution":
 21120  			err = unpopulate(val, "LoadDistribution", &l.LoadDistribution)
 21121  			delete(rawMsg, key)
 21122  		case "probe":
 21123  			err = unpopulate(val, "Probe", &l.Probe)
 21124  			delete(rawMsg, key)
 21125  		case "protocol":
 21126  			err = unpopulate(val, "Protocol", &l.Protocol)
 21127  			delete(rawMsg, key)
 21128  		case "provisioningState":
 21129  			err = unpopulate(val, "ProvisioningState", &l.ProvisioningState)
 21130  			delete(rawMsg, key)
 21131  		}
 21132  		if err != nil {
 21133  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 21134  		}
 21135  	}
 21136  	return nil
 21137  }
 21138  
 21139  // MarshalJSON implements the json.Marshaller interface for type LocalNetworkGateway.
 21140  func (l LocalNetworkGateway) MarshalJSON() ([]byte, error) {
 21141  	objectMap := make(map[string]any)
 21142  	populate(objectMap, "etag", l.Etag)
 21143  	populate(objectMap, "id", l.ID)
 21144  	populate(objectMap, "location", l.Location)
 21145  	populate(objectMap, "name", l.Name)
 21146  	populate(objectMap, "properties", l.Properties)
 21147  	populate(objectMap, "tags", l.Tags)
 21148  	populate(objectMap, "type", l.Type)
 21149  	return json.Marshal(objectMap)
 21150  }
 21151  
 21152  // UnmarshalJSON implements the json.Unmarshaller interface for type LocalNetworkGateway.
 21153  func (l *LocalNetworkGateway) UnmarshalJSON(data []byte) error {
 21154  	var rawMsg map[string]json.RawMessage
 21155  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 21156  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 21157  	}
 21158  	for key, val := range rawMsg {
 21159  		var err error
 21160  		switch key {
 21161  		case "etag":
 21162  			err = unpopulate(val, "Etag", &l.Etag)
 21163  			delete(rawMsg, key)
 21164  		case "id":
 21165  			err = unpopulate(val, "ID", &l.ID)
 21166  			delete(rawMsg, key)
 21167  		case "location":
 21168  			err = unpopulate(val, "Location", &l.Location)
 21169  			delete(rawMsg, key)
 21170  		case "name":
 21171  			err = unpopulate(val, "Name", &l.Name)
 21172  			delete(rawMsg, key)
 21173  		case "properties":
 21174  			err = unpopulate(val, "Properties", &l.Properties)
 21175  			delete(rawMsg, key)
 21176  		case "tags":
 21177  			err = unpopulate(val, "Tags", &l.Tags)
 21178  			delete(rawMsg, key)
 21179  		case "type":
 21180  			err = unpopulate(val, "Type", &l.Type)
 21181  			delete(rawMsg, key)
 21182  		}
 21183  		if err != nil {
 21184  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 21185  		}
 21186  	}
 21187  	return nil
 21188  }
 21189  
 21190  // MarshalJSON implements the json.Marshaller interface for type LocalNetworkGatewayListResult.
 21191  func (l LocalNetworkGatewayListResult) MarshalJSON() ([]byte, error) {
 21192  	objectMap := make(map[string]any)
 21193  	populate(objectMap, "nextLink", l.NextLink)
 21194  	populate(objectMap, "value", l.Value)
 21195  	return json.Marshal(objectMap)
 21196  }
 21197  
 21198  // UnmarshalJSON implements the json.Unmarshaller interface for type LocalNetworkGatewayListResult.
 21199  func (l *LocalNetworkGatewayListResult) UnmarshalJSON(data []byte) error {
 21200  	var rawMsg map[string]json.RawMessage
 21201  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 21202  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 21203  	}
 21204  	for key, val := range rawMsg {
 21205  		var err error
 21206  		switch key {
 21207  		case "nextLink":
 21208  			err = unpopulate(val, "NextLink", &l.NextLink)
 21209  			delete(rawMsg, key)
 21210  		case "value":
 21211  			err = unpopulate(val, "Value", &l.Value)
 21212  			delete(rawMsg, key)
 21213  		}
 21214  		if err != nil {
 21215  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 21216  		}
 21217  	}
 21218  	return nil
 21219  }
 21220  
 21221  // MarshalJSON implements the json.Marshaller interface for type LocalNetworkGatewayPropertiesFormat.
 21222  func (l LocalNetworkGatewayPropertiesFormat) MarshalJSON() ([]byte, error) {
 21223  	objectMap := make(map[string]any)
 21224  	populate(objectMap, "bgpSettings", l.BgpSettings)
 21225  	populate(objectMap, "fqdn", l.Fqdn)
 21226  	populate(objectMap, "gatewayIpAddress", l.GatewayIPAddress)
 21227  	populate(objectMap, "localNetworkAddressSpace", l.LocalNetworkAddressSpace)
 21228  	populate(objectMap, "provisioningState", l.ProvisioningState)
 21229  	populate(objectMap, "resourceGuid", l.ResourceGUID)
 21230  	return json.Marshal(objectMap)
 21231  }
 21232  
 21233  // UnmarshalJSON implements the json.Unmarshaller interface for type LocalNetworkGatewayPropertiesFormat.
 21234  func (l *LocalNetworkGatewayPropertiesFormat) UnmarshalJSON(data []byte) error {
 21235  	var rawMsg map[string]json.RawMessage
 21236  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 21237  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 21238  	}
 21239  	for key, val := range rawMsg {
 21240  		var err error
 21241  		switch key {
 21242  		case "bgpSettings":
 21243  			err = unpopulate(val, "BgpSettings", &l.BgpSettings)
 21244  			delete(rawMsg, key)
 21245  		case "fqdn":
 21246  			err = unpopulate(val, "Fqdn", &l.Fqdn)
 21247  			delete(rawMsg, key)
 21248  		case "gatewayIpAddress":
 21249  			err = unpopulate(val, "GatewayIPAddress", &l.GatewayIPAddress)
 21250  			delete(rawMsg, key)
 21251  		case "localNetworkAddressSpace":
 21252  			err = unpopulate(val, "LocalNetworkAddressSpace", &l.LocalNetworkAddressSpace)
 21253  			delete(rawMsg, key)
 21254  		case "provisioningState":
 21255  			err = unpopulate(val, "ProvisioningState", &l.ProvisioningState)
 21256  			delete(rawMsg, key)
 21257  		case "resourceGuid":
 21258  			err = unpopulate(val, "ResourceGUID", &l.ResourceGUID)
 21259  			delete(rawMsg, key)
 21260  		}
 21261  		if err != nil {
 21262  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 21263  		}
 21264  	}
 21265  	return nil
 21266  }
 21267  
 21268  // MarshalJSON implements the json.Marshaller interface for type LogSpecification.
 21269  func (l LogSpecification) MarshalJSON() ([]byte, error) {
 21270  	objectMap := make(map[string]any)
 21271  	populate(objectMap, "blobDuration", l.BlobDuration)
 21272  	populate(objectMap, "displayName", l.DisplayName)
 21273  	populate(objectMap, "name", l.Name)
 21274  	return json.Marshal(objectMap)
 21275  }
 21276  
 21277  // UnmarshalJSON implements the json.Unmarshaller interface for type LogSpecification.
 21278  func (l *LogSpecification) UnmarshalJSON(data []byte) error {
 21279  	var rawMsg map[string]json.RawMessage
 21280  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 21281  		return fmt.Errorf("unmarshalling type %T: %v", l, err)
 21282  	}
 21283  	for key, val := range rawMsg {
 21284  		var err error
 21285  		switch key {
 21286  		case "blobDuration":
 21287  			err = unpopulate(val, "BlobDuration", &l.BlobDuration)
 21288  			delete(rawMsg, key)
 21289  		case "displayName":
 21290  			err = unpopulate(val, "DisplayName", &l.DisplayName)
 21291  			delete(rawMsg, key)
 21292  		case "name":
 21293  			err = unpopulate(val, "Name", &l.Name)
 21294  			delete(rawMsg, key)
 21295  		}
 21296  		if err != nil {
 21297  			return fmt.Errorf("unmarshalling type %T: %v", l, err)
 21298  		}
 21299  	}
 21300  	return nil
 21301  }
 21302  
 21303  // MarshalJSON implements the json.Marshaller interface for type ManagedRuleGroupOverride.
 21304  func (m ManagedRuleGroupOverride) MarshalJSON() ([]byte, error) {
 21305  	objectMap := make(map[string]any)
 21306  	populate(objectMap, "ruleGroupName", m.RuleGroupName)
 21307  	populate(objectMap, "rules", m.Rules)
 21308  	return json.Marshal(objectMap)
 21309  }
 21310  
 21311  // UnmarshalJSON implements the json.Unmarshaller interface for type ManagedRuleGroupOverride.
 21312  func (m *ManagedRuleGroupOverride) UnmarshalJSON(data []byte) error {
 21313  	var rawMsg map[string]json.RawMessage
 21314  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 21315  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21316  	}
 21317  	for key, val := range rawMsg {
 21318  		var err error
 21319  		switch key {
 21320  		case "ruleGroupName":
 21321  			err = unpopulate(val, "RuleGroupName", &m.RuleGroupName)
 21322  			delete(rawMsg, key)
 21323  		case "rules":
 21324  			err = unpopulate(val, "Rules", &m.Rules)
 21325  			delete(rawMsg, key)
 21326  		}
 21327  		if err != nil {
 21328  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21329  		}
 21330  	}
 21331  	return nil
 21332  }
 21333  
 21334  // MarshalJSON implements the json.Marshaller interface for type ManagedRuleOverride.
 21335  func (m ManagedRuleOverride) MarshalJSON() ([]byte, error) {
 21336  	objectMap := make(map[string]any)
 21337  	populate(objectMap, "action", m.Action)
 21338  	populate(objectMap, "ruleId", m.RuleID)
 21339  	populate(objectMap, "sensitivity", m.Sensitivity)
 21340  	populate(objectMap, "state", m.State)
 21341  	return json.Marshal(objectMap)
 21342  }
 21343  
 21344  // UnmarshalJSON implements the json.Unmarshaller interface for type ManagedRuleOverride.
 21345  func (m *ManagedRuleOverride) UnmarshalJSON(data []byte) error {
 21346  	var rawMsg map[string]json.RawMessage
 21347  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 21348  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21349  	}
 21350  	for key, val := range rawMsg {
 21351  		var err error
 21352  		switch key {
 21353  		case "action":
 21354  			err = unpopulate(val, "Action", &m.Action)
 21355  			delete(rawMsg, key)
 21356  		case "ruleId":
 21357  			err = unpopulate(val, "RuleID", &m.RuleID)
 21358  			delete(rawMsg, key)
 21359  		case "sensitivity":
 21360  			err = unpopulate(val, "Sensitivity", &m.Sensitivity)
 21361  			delete(rawMsg, key)
 21362  		case "state":
 21363  			err = unpopulate(val, "State", &m.State)
 21364  			delete(rawMsg, key)
 21365  		}
 21366  		if err != nil {
 21367  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21368  		}
 21369  	}
 21370  	return nil
 21371  }
 21372  
 21373  // MarshalJSON implements the json.Marshaller interface for type ManagedRuleSet.
 21374  func (m ManagedRuleSet) MarshalJSON() ([]byte, error) {
 21375  	objectMap := make(map[string]any)
 21376  	populate(objectMap, "ruleGroupOverrides", m.RuleGroupOverrides)
 21377  	populate(objectMap, "ruleSetType", m.RuleSetType)
 21378  	populate(objectMap, "ruleSetVersion", m.RuleSetVersion)
 21379  	return json.Marshal(objectMap)
 21380  }
 21381  
 21382  // UnmarshalJSON implements the json.Unmarshaller interface for type ManagedRuleSet.
 21383  func (m *ManagedRuleSet) UnmarshalJSON(data []byte) error {
 21384  	var rawMsg map[string]json.RawMessage
 21385  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 21386  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21387  	}
 21388  	for key, val := range rawMsg {
 21389  		var err error
 21390  		switch key {
 21391  		case "ruleGroupOverrides":
 21392  			err = unpopulate(val, "RuleGroupOverrides", &m.RuleGroupOverrides)
 21393  			delete(rawMsg, key)
 21394  		case "ruleSetType":
 21395  			err = unpopulate(val, "RuleSetType", &m.RuleSetType)
 21396  			delete(rawMsg, key)
 21397  		case "ruleSetVersion":
 21398  			err = unpopulate(val, "RuleSetVersion", &m.RuleSetVersion)
 21399  			delete(rawMsg, key)
 21400  		}
 21401  		if err != nil {
 21402  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21403  		}
 21404  	}
 21405  	return nil
 21406  }
 21407  
 21408  // MarshalJSON implements the json.Marshaller interface for type ManagedRulesDefinition.
 21409  func (m ManagedRulesDefinition) MarshalJSON() ([]byte, error) {
 21410  	objectMap := make(map[string]any)
 21411  	populate(objectMap, "exceptions", m.Exceptions)
 21412  	populate(objectMap, "exclusions", m.Exclusions)
 21413  	populate(objectMap, "managedRuleSets", m.ManagedRuleSets)
 21414  	return json.Marshal(objectMap)
 21415  }
 21416  
 21417  // UnmarshalJSON implements the json.Unmarshaller interface for type ManagedRulesDefinition.
 21418  func (m *ManagedRulesDefinition) UnmarshalJSON(data []byte) error {
 21419  	var rawMsg map[string]json.RawMessage
 21420  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 21421  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21422  	}
 21423  	for key, val := range rawMsg {
 21424  		var err error
 21425  		switch key {
 21426  		case "exceptions":
 21427  			err = unpopulate(val, "Exceptions", &m.Exceptions)
 21428  			delete(rawMsg, key)
 21429  		case "exclusions":
 21430  			err = unpopulate(val, "Exclusions", &m.Exclusions)
 21431  			delete(rawMsg, key)
 21432  		case "managedRuleSets":
 21433  			err = unpopulate(val, "ManagedRuleSets", &m.ManagedRuleSets)
 21434  			delete(rawMsg, key)
 21435  		}
 21436  		if err != nil {
 21437  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21438  		}
 21439  	}
 21440  	return nil
 21441  }
 21442  
 21443  // MarshalJSON implements the json.Marshaller interface for type ManagedServiceIdentity.
 21444  func (m ManagedServiceIdentity) MarshalJSON() ([]byte, error) {
 21445  	objectMap := make(map[string]any)
 21446  	populate(objectMap, "principalId", m.PrincipalID)
 21447  	populate(objectMap, "tenantId", m.TenantID)
 21448  	populate(objectMap, "type", m.Type)
 21449  	populate(objectMap, "userAssignedIdentities", m.UserAssignedIdentities)
 21450  	return json.Marshal(objectMap)
 21451  }
 21452  
 21453  // UnmarshalJSON implements the json.Unmarshaller interface for type ManagedServiceIdentity.
 21454  func (m *ManagedServiceIdentity) UnmarshalJSON(data []byte) error {
 21455  	var rawMsg map[string]json.RawMessage
 21456  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 21457  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21458  	}
 21459  	for key, val := range rawMsg {
 21460  		var err error
 21461  		switch key {
 21462  		case "principalId":
 21463  			err = unpopulate(val, "PrincipalID", &m.PrincipalID)
 21464  			delete(rawMsg, key)
 21465  		case "tenantId":
 21466  			err = unpopulate(val, "TenantID", &m.TenantID)
 21467  			delete(rawMsg, key)
 21468  		case "type":
 21469  			err = unpopulate(val, "Type", &m.Type)
 21470  			delete(rawMsg, key)
 21471  		case "userAssignedIdentities":
 21472  			err = unpopulate(val, "UserAssignedIdentities", &m.UserAssignedIdentities)
 21473  			delete(rawMsg, key)
 21474  		}
 21475  		if err != nil {
 21476  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21477  		}
 21478  	}
 21479  	return nil
 21480  }
 21481  
 21482  // MarshalJSON implements the json.Marshaller interface for type Manager.
 21483  func (m Manager) MarshalJSON() ([]byte, error) {
 21484  	objectMap := make(map[string]any)
 21485  	populate(objectMap, "etag", m.Etag)
 21486  	populate(objectMap, "id", m.ID)
 21487  	populate(objectMap, "location", m.Location)
 21488  	populate(objectMap, "name", m.Name)
 21489  	populate(objectMap, "properties", m.Properties)
 21490  	populate(objectMap, "systemData", m.SystemData)
 21491  	populate(objectMap, "tags", m.Tags)
 21492  	populate(objectMap, "type", m.Type)
 21493  	return json.Marshal(objectMap)
 21494  }
 21495  
 21496  // UnmarshalJSON implements the json.Unmarshaller interface for type Manager.
 21497  func (m *Manager) UnmarshalJSON(data []byte) error {
 21498  	var rawMsg map[string]json.RawMessage
 21499  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 21500  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21501  	}
 21502  	for key, val := range rawMsg {
 21503  		var err error
 21504  		switch key {
 21505  		case "etag":
 21506  			err = unpopulate(val, "Etag", &m.Etag)
 21507  			delete(rawMsg, key)
 21508  		case "id":
 21509  			err = unpopulate(val, "ID", &m.ID)
 21510  			delete(rawMsg, key)
 21511  		case "location":
 21512  			err = unpopulate(val, "Location", &m.Location)
 21513  			delete(rawMsg, key)
 21514  		case "name":
 21515  			err = unpopulate(val, "Name", &m.Name)
 21516  			delete(rawMsg, key)
 21517  		case "properties":
 21518  			err = unpopulate(val, "Properties", &m.Properties)
 21519  			delete(rawMsg, key)
 21520  		case "systemData":
 21521  			err = unpopulate(val, "SystemData", &m.SystemData)
 21522  			delete(rawMsg, key)
 21523  		case "tags":
 21524  			err = unpopulate(val, "Tags", &m.Tags)
 21525  			delete(rawMsg, key)
 21526  		case "type":
 21527  			err = unpopulate(val, "Type", &m.Type)
 21528  			delete(rawMsg, key)
 21529  		}
 21530  		if err != nil {
 21531  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21532  		}
 21533  	}
 21534  	return nil
 21535  }
 21536  
 21537  // MarshalJSON implements the json.Marshaller interface for type ManagerCommit.
 21538  func (m ManagerCommit) MarshalJSON() ([]byte, error) {
 21539  	objectMap := make(map[string]any)
 21540  	populate(objectMap, "commitId", m.CommitID)
 21541  	populate(objectMap, "commitType", m.CommitType)
 21542  	populate(objectMap, "configurationIds", m.ConfigurationIDs)
 21543  	populate(objectMap, "targetLocations", m.TargetLocations)
 21544  	return json.Marshal(objectMap)
 21545  }
 21546  
 21547  // UnmarshalJSON implements the json.Unmarshaller interface for type ManagerCommit.
 21548  func (m *ManagerCommit) UnmarshalJSON(data []byte) error {
 21549  	var rawMsg map[string]json.RawMessage
 21550  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 21551  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21552  	}
 21553  	for key, val := range rawMsg {
 21554  		var err error
 21555  		switch key {
 21556  		case "commitId":
 21557  			err = unpopulate(val, "CommitID", &m.CommitID)
 21558  			delete(rawMsg, key)
 21559  		case "commitType":
 21560  			err = unpopulate(val, "CommitType", &m.CommitType)
 21561  			delete(rawMsg, key)
 21562  		case "configurationIds":
 21563  			err = unpopulate(val, "ConfigurationIDs", &m.ConfigurationIDs)
 21564  			delete(rawMsg, key)
 21565  		case "targetLocations":
 21566  			err = unpopulate(val, "TargetLocations", &m.TargetLocations)
 21567  			delete(rawMsg, key)
 21568  		}
 21569  		if err != nil {
 21570  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21571  		}
 21572  	}
 21573  	return nil
 21574  }
 21575  
 21576  // MarshalJSON implements the json.Marshaller interface for type ManagerConnection.
 21577  func (m ManagerConnection) MarshalJSON() ([]byte, error) {
 21578  	objectMap := make(map[string]any)
 21579  	populate(objectMap, "etag", m.Etag)
 21580  	populate(objectMap, "id", m.ID)
 21581  	populate(objectMap, "name", m.Name)
 21582  	populate(objectMap, "properties", m.Properties)
 21583  	populate(objectMap, "systemData", m.SystemData)
 21584  	populate(objectMap, "type", m.Type)
 21585  	return json.Marshal(objectMap)
 21586  }
 21587  
 21588  // UnmarshalJSON implements the json.Unmarshaller interface for type ManagerConnection.
 21589  func (m *ManagerConnection) UnmarshalJSON(data []byte) error {
 21590  	var rawMsg map[string]json.RawMessage
 21591  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 21592  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21593  	}
 21594  	for key, val := range rawMsg {
 21595  		var err error
 21596  		switch key {
 21597  		case "etag":
 21598  			err = unpopulate(val, "Etag", &m.Etag)
 21599  			delete(rawMsg, key)
 21600  		case "id":
 21601  			err = unpopulate(val, "ID", &m.ID)
 21602  			delete(rawMsg, key)
 21603  		case "name":
 21604  			err = unpopulate(val, "Name", &m.Name)
 21605  			delete(rawMsg, key)
 21606  		case "properties":
 21607  			err = unpopulate(val, "Properties", &m.Properties)
 21608  			delete(rawMsg, key)
 21609  		case "systemData":
 21610  			err = unpopulate(val, "SystemData", &m.SystemData)
 21611  			delete(rawMsg, key)
 21612  		case "type":
 21613  			err = unpopulate(val, "Type", &m.Type)
 21614  			delete(rawMsg, key)
 21615  		}
 21616  		if err != nil {
 21617  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21618  		}
 21619  	}
 21620  	return nil
 21621  }
 21622  
 21623  // MarshalJSON implements the json.Marshaller interface for type ManagerConnectionListResult.
 21624  func (m ManagerConnectionListResult) MarshalJSON() ([]byte, error) {
 21625  	objectMap := make(map[string]any)
 21626  	populate(objectMap, "nextLink", m.NextLink)
 21627  	populate(objectMap, "value", m.Value)
 21628  	return json.Marshal(objectMap)
 21629  }
 21630  
 21631  // UnmarshalJSON implements the json.Unmarshaller interface for type ManagerConnectionListResult.
 21632  func (m *ManagerConnectionListResult) UnmarshalJSON(data []byte) error {
 21633  	var rawMsg map[string]json.RawMessage
 21634  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 21635  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21636  	}
 21637  	for key, val := range rawMsg {
 21638  		var err error
 21639  		switch key {
 21640  		case "nextLink":
 21641  			err = unpopulate(val, "NextLink", &m.NextLink)
 21642  			delete(rawMsg, key)
 21643  		case "value":
 21644  			err = unpopulate(val, "Value", &m.Value)
 21645  			delete(rawMsg, key)
 21646  		}
 21647  		if err != nil {
 21648  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21649  		}
 21650  	}
 21651  	return nil
 21652  }
 21653  
 21654  // MarshalJSON implements the json.Marshaller interface for type ManagerConnectionProperties.
 21655  func (m ManagerConnectionProperties) MarshalJSON() ([]byte, error) {
 21656  	objectMap := make(map[string]any)
 21657  	populate(objectMap, "connectionState", m.ConnectionState)
 21658  	populate(objectMap, "description", m.Description)
 21659  	populate(objectMap, "networkManagerId", m.NetworkManagerID)
 21660  	return json.Marshal(objectMap)
 21661  }
 21662  
 21663  // UnmarshalJSON implements the json.Unmarshaller interface for type ManagerConnectionProperties.
 21664  func (m *ManagerConnectionProperties) UnmarshalJSON(data []byte) error {
 21665  	var rawMsg map[string]json.RawMessage
 21666  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 21667  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21668  	}
 21669  	for key, val := range rawMsg {
 21670  		var err error
 21671  		switch key {
 21672  		case "connectionState":
 21673  			err = unpopulate(val, "ConnectionState", &m.ConnectionState)
 21674  			delete(rawMsg, key)
 21675  		case "description":
 21676  			err = unpopulate(val, "Description", &m.Description)
 21677  			delete(rawMsg, key)
 21678  		case "networkManagerId":
 21679  			err = unpopulate(val, "NetworkManagerID", &m.NetworkManagerID)
 21680  			delete(rawMsg, key)
 21681  		}
 21682  		if err != nil {
 21683  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21684  		}
 21685  	}
 21686  	return nil
 21687  }
 21688  
 21689  // MarshalJSON implements the json.Marshaller interface for type ManagerDeploymentStatus.
 21690  func (m ManagerDeploymentStatus) MarshalJSON() ([]byte, error) {
 21691  	objectMap := make(map[string]any)
 21692  	populateDateTimeRFC3339(objectMap, "commitTime", m.CommitTime)
 21693  	populate(objectMap, "configurationIds", m.ConfigurationIDs)
 21694  	populate(objectMap, "deploymentStatus", m.DeploymentStatus)
 21695  	populate(objectMap, "deploymentType", m.DeploymentType)
 21696  	populate(objectMap, "errorMessage", m.ErrorMessage)
 21697  	populate(objectMap, "region", m.Region)
 21698  	return json.Marshal(objectMap)
 21699  }
 21700  
 21701  // UnmarshalJSON implements the json.Unmarshaller interface for type ManagerDeploymentStatus.
 21702  func (m *ManagerDeploymentStatus) UnmarshalJSON(data []byte) error {
 21703  	var rawMsg map[string]json.RawMessage
 21704  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 21705  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21706  	}
 21707  	for key, val := range rawMsg {
 21708  		var err error
 21709  		switch key {
 21710  		case "commitTime":
 21711  			err = unpopulateDateTimeRFC3339(val, "CommitTime", &m.CommitTime)
 21712  			delete(rawMsg, key)
 21713  		case "configurationIds":
 21714  			err = unpopulate(val, "ConfigurationIDs", &m.ConfigurationIDs)
 21715  			delete(rawMsg, key)
 21716  		case "deploymentStatus":
 21717  			err = unpopulate(val, "DeploymentStatus", &m.DeploymentStatus)
 21718  			delete(rawMsg, key)
 21719  		case "deploymentType":
 21720  			err = unpopulate(val, "DeploymentType", &m.DeploymentType)
 21721  			delete(rawMsg, key)
 21722  		case "errorMessage":
 21723  			err = unpopulate(val, "ErrorMessage", &m.ErrorMessage)
 21724  			delete(rawMsg, key)
 21725  		case "region":
 21726  			err = unpopulate(val, "Region", &m.Region)
 21727  			delete(rawMsg, key)
 21728  		}
 21729  		if err != nil {
 21730  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21731  		}
 21732  	}
 21733  	return nil
 21734  }
 21735  
 21736  // MarshalJSON implements the json.Marshaller interface for type ManagerDeploymentStatusListResult.
 21737  func (m ManagerDeploymentStatusListResult) MarshalJSON() ([]byte, error) {
 21738  	objectMap := make(map[string]any)
 21739  	populate(objectMap, "skipToken", m.SkipToken)
 21740  	populate(objectMap, "value", m.Value)
 21741  	return json.Marshal(objectMap)
 21742  }
 21743  
 21744  // UnmarshalJSON implements the json.Unmarshaller interface for type ManagerDeploymentStatusListResult.
 21745  func (m *ManagerDeploymentStatusListResult) UnmarshalJSON(data []byte) error {
 21746  	var rawMsg map[string]json.RawMessage
 21747  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 21748  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21749  	}
 21750  	for key, val := range rawMsg {
 21751  		var err error
 21752  		switch key {
 21753  		case "skipToken":
 21754  			err = unpopulate(val, "SkipToken", &m.SkipToken)
 21755  			delete(rawMsg, key)
 21756  		case "value":
 21757  			err = unpopulate(val, "Value", &m.Value)
 21758  			delete(rawMsg, key)
 21759  		}
 21760  		if err != nil {
 21761  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21762  		}
 21763  	}
 21764  	return nil
 21765  }
 21766  
 21767  // MarshalJSON implements the json.Marshaller interface for type ManagerDeploymentStatusParameter.
 21768  func (m ManagerDeploymentStatusParameter) MarshalJSON() ([]byte, error) {
 21769  	objectMap := make(map[string]any)
 21770  	populate(objectMap, "deploymentTypes", m.DeploymentTypes)
 21771  	populate(objectMap, "regions", m.Regions)
 21772  	populate(objectMap, "skipToken", m.SkipToken)
 21773  	return json.Marshal(objectMap)
 21774  }
 21775  
 21776  // UnmarshalJSON implements the json.Unmarshaller interface for type ManagerDeploymentStatusParameter.
 21777  func (m *ManagerDeploymentStatusParameter) UnmarshalJSON(data []byte) error {
 21778  	var rawMsg map[string]json.RawMessage
 21779  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 21780  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21781  	}
 21782  	for key, val := range rawMsg {
 21783  		var err error
 21784  		switch key {
 21785  		case "deploymentTypes":
 21786  			err = unpopulate(val, "DeploymentTypes", &m.DeploymentTypes)
 21787  			delete(rawMsg, key)
 21788  		case "regions":
 21789  			err = unpopulate(val, "Regions", &m.Regions)
 21790  			delete(rawMsg, key)
 21791  		case "skipToken":
 21792  			err = unpopulate(val, "SkipToken", &m.SkipToken)
 21793  			delete(rawMsg, key)
 21794  		}
 21795  		if err != nil {
 21796  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21797  		}
 21798  	}
 21799  	return nil
 21800  }
 21801  
 21802  // MarshalJSON implements the json.Marshaller interface for type ManagerEffectiveConnectivityConfigurationListResult.
 21803  func (m ManagerEffectiveConnectivityConfigurationListResult) MarshalJSON() ([]byte, error) {
 21804  	objectMap := make(map[string]any)
 21805  	populate(objectMap, "skipToken", m.SkipToken)
 21806  	populate(objectMap, "value", m.Value)
 21807  	return json.Marshal(objectMap)
 21808  }
 21809  
 21810  // UnmarshalJSON implements the json.Unmarshaller interface for type ManagerEffectiveConnectivityConfigurationListResult.
 21811  func (m *ManagerEffectiveConnectivityConfigurationListResult) UnmarshalJSON(data []byte) error {
 21812  	var rawMsg map[string]json.RawMessage
 21813  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 21814  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21815  	}
 21816  	for key, val := range rawMsg {
 21817  		var err error
 21818  		switch key {
 21819  		case "skipToken":
 21820  			err = unpopulate(val, "SkipToken", &m.SkipToken)
 21821  			delete(rawMsg, key)
 21822  		case "value":
 21823  			err = unpopulate(val, "Value", &m.Value)
 21824  			delete(rawMsg, key)
 21825  		}
 21826  		if err != nil {
 21827  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21828  		}
 21829  	}
 21830  	return nil
 21831  }
 21832  
 21833  // MarshalJSON implements the json.Marshaller interface for type ManagerEffectiveSecurityAdminRulesListResult.
 21834  func (m ManagerEffectiveSecurityAdminRulesListResult) MarshalJSON() ([]byte, error) {
 21835  	objectMap := make(map[string]any)
 21836  	populate(objectMap, "skipToken", m.SkipToken)
 21837  	populate(objectMap, "value", m.Value)
 21838  	return json.Marshal(objectMap)
 21839  }
 21840  
 21841  // UnmarshalJSON implements the json.Unmarshaller interface for type ManagerEffectiveSecurityAdminRulesListResult.
 21842  func (m *ManagerEffectiveSecurityAdminRulesListResult) UnmarshalJSON(data []byte) error {
 21843  	var rawMsg map[string]json.RawMessage
 21844  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 21845  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21846  	}
 21847  	for key, val := range rawMsg {
 21848  		var err error
 21849  		switch key {
 21850  		case "skipToken":
 21851  			err = unpopulate(val, "SkipToken", &m.SkipToken)
 21852  			delete(rawMsg, key)
 21853  		case "value":
 21854  			m.Value, err = unmarshalEffectiveBaseSecurityAdminRuleClassificationArray(val)
 21855  			delete(rawMsg, key)
 21856  		}
 21857  		if err != nil {
 21858  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21859  		}
 21860  	}
 21861  	return nil
 21862  }
 21863  
 21864  // MarshalJSON implements the json.Marshaller interface for type ManagerListResult.
 21865  func (m ManagerListResult) MarshalJSON() ([]byte, error) {
 21866  	objectMap := make(map[string]any)
 21867  	populate(objectMap, "nextLink", m.NextLink)
 21868  	populate(objectMap, "value", m.Value)
 21869  	return json.Marshal(objectMap)
 21870  }
 21871  
 21872  // UnmarshalJSON implements the json.Unmarshaller interface for type ManagerListResult.
 21873  func (m *ManagerListResult) UnmarshalJSON(data []byte) error {
 21874  	var rawMsg map[string]json.RawMessage
 21875  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 21876  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21877  	}
 21878  	for key, val := range rawMsg {
 21879  		var err error
 21880  		switch key {
 21881  		case "nextLink":
 21882  			err = unpopulate(val, "NextLink", &m.NextLink)
 21883  			delete(rawMsg, key)
 21884  		case "value":
 21885  			err = unpopulate(val, "Value", &m.Value)
 21886  			delete(rawMsg, key)
 21887  		}
 21888  		if err != nil {
 21889  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21890  		}
 21891  	}
 21892  	return nil
 21893  }
 21894  
 21895  // MarshalJSON implements the json.Marshaller interface for type ManagerProperties.
 21896  func (m ManagerProperties) MarshalJSON() ([]byte, error) {
 21897  	objectMap := make(map[string]any)
 21898  	populate(objectMap, "description", m.Description)
 21899  	populate(objectMap, "networkManagerScopeAccesses", m.NetworkManagerScopeAccesses)
 21900  	populate(objectMap, "networkManagerScopes", m.NetworkManagerScopes)
 21901  	populate(objectMap, "provisioningState", m.ProvisioningState)
 21902  	populate(objectMap, "resourceGuid", m.ResourceGUID)
 21903  	return json.Marshal(objectMap)
 21904  }
 21905  
 21906  // UnmarshalJSON implements the json.Unmarshaller interface for type ManagerProperties.
 21907  func (m *ManagerProperties) UnmarshalJSON(data []byte) error {
 21908  	var rawMsg map[string]json.RawMessage
 21909  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 21910  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21911  	}
 21912  	for key, val := range rawMsg {
 21913  		var err error
 21914  		switch key {
 21915  		case "description":
 21916  			err = unpopulate(val, "Description", &m.Description)
 21917  			delete(rawMsg, key)
 21918  		case "networkManagerScopeAccesses":
 21919  			err = unpopulate(val, "NetworkManagerScopeAccesses", &m.NetworkManagerScopeAccesses)
 21920  			delete(rawMsg, key)
 21921  		case "networkManagerScopes":
 21922  			err = unpopulate(val, "NetworkManagerScopes", &m.NetworkManagerScopes)
 21923  			delete(rawMsg, key)
 21924  		case "provisioningState":
 21925  			err = unpopulate(val, "ProvisioningState", &m.ProvisioningState)
 21926  			delete(rawMsg, key)
 21927  		case "resourceGuid":
 21928  			err = unpopulate(val, "ResourceGUID", &m.ResourceGUID)
 21929  			delete(rawMsg, key)
 21930  		}
 21931  		if err != nil {
 21932  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21933  		}
 21934  	}
 21935  	return nil
 21936  }
 21937  
 21938  // MarshalJSON implements the json.Marshaller interface for type ManagerPropertiesNetworkManagerScopes.
 21939  func (m ManagerPropertiesNetworkManagerScopes) MarshalJSON() ([]byte, error) {
 21940  	objectMap := make(map[string]any)
 21941  	populate(objectMap, "crossTenantScopes", m.CrossTenantScopes)
 21942  	populate(objectMap, "managementGroups", m.ManagementGroups)
 21943  	populate(objectMap, "subscriptions", m.Subscriptions)
 21944  	return json.Marshal(objectMap)
 21945  }
 21946  
 21947  // UnmarshalJSON implements the json.Unmarshaller interface for type ManagerPropertiesNetworkManagerScopes.
 21948  func (m *ManagerPropertiesNetworkManagerScopes) UnmarshalJSON(data []byte) error {
 21949  	var rawMsg map[string]json.RawMessage
 21950  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 21951  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21952  	}
 21953  	for key, val := range rawMsg {
 21954  		var err error
 21955  		switch key {
 21956  		case "crossTenantScopes":
 21957  			err = unpopulate(val, "CrossTenantScopes", &m.CrossTenantScopes)
 21958  			delete(rawMsg, key)
 21959  		case "managementGroups":
 21960  			err = unpopulate(val, "ManagementGroups", &m.ManagementGroups)
 21961  			delete(rawMsg, key)
 21962  		case "subscriptions":
 21963  			err = unpopulate(val, "Subscriptions", &m.Subscriptions)
 21964  			delete(rawMsg, key)
 21965  		}
 21966  		if err != nil {
 21967  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21968  		}
 21969  	}
 21970  	return nil
 21971  }
 21972  
 21973  // MarshalJSON implements the json.Marshaller interface for type ManagerRoutingConfiguration.
 21974  func (m ManagerRoutingConfiguration) MarshalJSON() ([]byte, error) {
 21975  	objectMap := make(map[string]any)
 21976  	populate(objectMap, "etag", m.Etag)
 21977  	populate(objectMap, "id", m.ID)
 21978  	populate(objectMap, "name", m.Name)
 21979  	populate(objectMap, "properties", m.Properties)
 21980  	populate(objectMap, "systemData", m.SystemData)
 21981  	populate(objectMap, "type", m.Type)
 21982  	return json.Marshal(objectMap)
 21983  }
 21984  
 21985  // UnmarshalJSON implements the json.Unmarshaller interface for type ManagerRoutingConfiguration.
 21986  func (m *ManagerRoutingConfiguration) UnmarshalJSON(data []byte) error {
 21987  	var rawMsg map[string]json.RawMessage
 21988  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 21989  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 21990  	}
 21991  	for key, val := range rawMsg {
 21992  		var err error
 21993  		switch key {
 21994  		case "etag":
 21995  			err = unpopulate(val, "Etag", &m.Etag)
 21996  			delete(rawMsg, key)
 21997  		case "id":
 21998  			err = unpopulate(val, "ID", &m.ID)
 21999  			delete(rawMsg, key)
 22000  		case "name":
 22001  			err = unpopulate(val, "Name", &m.Name)
 22002  			delete(rawMsg, key)
 22003  		case "properties":
 22004  			err = unpopulate(val, "Properties", &m.Properties)
 22005  			delete(rawMsg, key)
 22006  		case "systemData":
 22007  			err = unpopulate(val, "SystemData", &m.SystemData)
 22008  			delete(rawMsg, key)
 22009  		case "type":
 22010  			err = unpopulate(val, "Type", &m.Type)
 22011  			delete(rawMsg, key)
 22012  		}
 22013  		if err != nil {
 22014  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 22015  		}
 22016  	}
 22017  	return nil
 22018  }
 22019  
 22020  // MarshalJSON implements the json.Marshaller interface for type ManagerRoutingConfigurationListResult.
 22021  func (m ManagerRoutingConfigurationListResult) MarshalJSON() ([]byte, error) {
 22022  	objectMap := make(map[string]any)
 22023  	populate(objectMap, "nextLink", m.NextLink)
 22024  	populate(objectMap, "value", m.Value)
 22025  	return json.Marshal(objectMap)
 22026  }
 22027  
 22028  // UnmarshalJSON implements the json.Unmarshaller interface for type ManagerRoutingConfigurationListResult.
 22029  func (m *ManagerRoutingConfigurationListResult) UnmarshalJSON(data []byte) error {
 22030  	var rawMsg map[string]json.RawMessage
 22031  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22032  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 22033  	}
 22034  	for key, val := range rawMsg {
 22035  		var err error
 22036  		switch key {
 22037  		case "nextLink":
 22038  			err = unpopulate(val, "NextLink", &m.NextLink)
 22039  			delete(rawMsg, key)
 22040  		case "value":
 22041  			err = unpopulate(val, "Value", &m.Value)
 22042  			delete(rawMsg, key)
 22043  		}
 22044  		if err != nil {
 22045  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 22046  		}
 22047  	}
 22048  	return nil
 22049  }
 22050  
 22051  // MarshalJSON implements the json.Marshaller interface for type ManagerRoutingConfigurationPropertiesFormat.
 22052  func (m ManagerRoutingConfigurationPropertiesFormat) MarshalJSON() ([]byte, error) {
 22053  	objectMap := make(map[string]any)
 22054  	populate(objectMap, "description", m.Description)
 22055  	populate(objectMap, "provisioningState", m.ProvisioningState)
 22056  	populate(objectMap, "resourceGuid", m.ResourceGUID)
 22057  	return json.Marshal(objectMap)
 22058  }
 22059  
 22060  // UnmarshalJSON implements the json.Unmarshaller interface for type ManagerRoutingConfigurationPropertiesFormat.
 22061  func (m *ManagerRoutingConfigurationPropertiesFormat) UnmarshalJSON(data []byte) error {
 22062  	var rawMsg map[string]json.RawMessage
 22063  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22064  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 22065  	}
 22066  	for key, val := range rawMsg {
 22067  		var err error
 22068  		switch key {
 22069  		case "description":
 22070  			err = unpopulate(val, "Description", &m.Description)
 22071  			delete(rawMsg, key)
 22072  		case "provisioningState":
 22073  			err = unpopulate(val, "ProvisioningState", &m.ProvisioningState)
 22074  			delete(rawMsg, key)
 22075  		case "resourceGuid":
 22076  			err = unpopulate(val, "ResourceGUID", &m.ResourceGUID)
 22077  			delete(rawMsg, key)
 22078  		}
 22079  		if err != nil {
 22080  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 22081  		}
 22082  	}
 22083  	return nil
 22084  }
 22085  
 22086  // MarshalJSON implements the json.Marshaller interface for type ManagerRoutingGroupItem.
 22087  func (m ManagerRoutingGroupItem) MarshalJSON() ([]byte, error) {
 22088  	objectMap := make(map[string]any)
 22089  	populate(objectMap, "networkGroupId", m.NetworkGroupID)
 22090  	return json.Marshal(objectMap)
 22091  }
 22092  
 22093  // UnmarshalJSON implements the json.Unmarshaller interface for type ManagerRoutingGroupItem.
 22094  func (m *ManagerRoutingGroupItem) UnmarshalJSON(data []byte) error {
 22095  	var rawMsg map[string]json.RawMessage
 22096  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22097  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 22098  	}
 22099  	for key, val := range rawMsg {
 22100  		var err error
 22101  		switch key {
 22102  		case "networkGroupId":
 22103  			err = unpopulate(val, "NetworkGroupID", &m.NetworkGroupID)
 22104  			delete(rawMsg, key)
 22105  		}
 22106  		if err != nil {
 22107  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 22108  		}
 22109  	}
 22110  	return nil
 22111  }
 22112  
 22113  // MarshalJSON implements the json.Marshaller interface for type ManagerSecurityGroupItem.
 22114  func (m ManagerSecurityGroupItem) MarshalJSON() ([]byte, error) {
 22115  	objectMap := make(map[string]any)
 22116  	populate(objectMap, "networkGroupId", m.NetworkGroupID)
 22117  	return json.Marshal(objectMap)
 22118  }
 22119  
 22120  // UnmarshalJSON implements the json.Unmarshaller interface for type ManagerSecurityGroupItem.
 22121  func (m *ManagerSecurityGroupItem) UnmarshalJSON(data []byte) error {
 22122  	var rawMsg map[string]json.RawMessage
 22123  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22124  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 22125  	}
 22126  	for key, val := range rawMsg {
 22127  		var err error
 22128  		switch key {
 22129  		case "networkGroupId":
 22130  			err = unpopulate(val, "NetworkGroupID", &m.NetworkGroupID)
 22131  			delete(rawMsg, key)
 22132  		}
 22133  		if err != nil {
 22134  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 22135  		}
 22136  	}
 22137  	return nil
 22138  }
 22139  
 22140  // MarshalJSON implements the json.Marshaller interface for type MatchCondition.
 22141  func (m MatchCondition) MarshalJSON() ([]byte, error) {
 22142  	objectMap := make(map[string]any)
 22143  	populate(objectMap, "matchValues", m.MatchValues)
 22144  	populate(objectMap, "matchVariables", m.MatchVariables)
 22145  	populate(objectMap, "negationConditon", m.NegationConditon)
 22146  	populate(objectMap, "operator", m.Operator)
 22147  	populate(objectMap, "transforms", m.Transforms)
 22148  	return json.Marshal(objectMap)
 22149  }
 22150  
 22151  // UnmarshalJSON implements the json.Unmarshaller interface for type MatchCondition.
 22152  func (m *MatchCondition) UnmarshalJSON(data []byte) error {
 22153  	var rawMsg map[string]json.RawMessage
 22154  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22155  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 22156  	}
 22157  	for key, val := range rawMsg {
 22158  		var err error
 22159  		switch key {
 22160  		case "matchValues":
 22161  			err = unpopulate(val, "MatchValues", &m.MatchValues)
 22162  			delete(rawMsg, key)
 22163  		case "matchVariables":
 22164  			err = unpopulate(val, "MatchVariables", &m.MatchVariables)
 22165  			delete(rawMsg, key)
 22166  		case "negationConditon":
 22167  			err = unpopulate(val, "NegationConditon", &m.NegationConditon)
 22168  			delete(rawMsg, key)
 22169  		case "operator":
 22170  			err = unpopulate(val, "Operator", &m.Operator)
 22171  			delete(rawMsg, key)
 22172  		case "transforms":
 22173  			err = unpopulate(val, "Transforms", &m.Transforms)
 22174  			delete(rawMsg, key)
 22175  		}
 22176  		if err != nil {
 22177  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 22178  		}
 22179  	}
 22180  	return nil
 22181  }
 22182  
 22183  // MarshalJSON implements the json.Marshaller interface for type MatchVariable.
 22184  func (m MatchVariable) MarshalJSON() ([]byte, error) {
 22185  	objectMap := make(map[string]any)
 22186  	populate(objectMap, "selector", m.Selector)
 22187  	populate(objectMap, "variableName", m.VariableName)
 22188  	return json.Marshal(objectMap)
 22189  }
 22190  
 22191  // UnmarshalJSON implements the json.Unmarshaller interface for type MatchVariable.
 22192  func (m *MatchVariable) UnmarshalJSON(data []byte) error {
 22193  	var rawMsg map[string]json.RawMessage
 22194  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22195  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 22196  	}
 22197  	for key, val := range rawMsg {
 22198  		var err error
 22199  		switch key {
 22200  		case "selector":
 22201  			err = unpopulate(val, "Selector", &m.Selector)
 22202  			delete(rawMsg, key)
 22203  		case "variableName":
 22204  			err = unpopulate(val, "VariableName", &m.VariableName)
 22205  			delete(rawMsg, key)
 22206  		}
 22207  		if err != nil {
 22208  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 22209  		}
 22210  	}
 22211  	return nil
 22212  }
 22213  
 22214  // MarshalJSON implements the json.Marshaller interface for type MatchedRule.
 22215  func (m MatchedRule) MarshalJSON() ([]byte, error) {
 22216  	objectMap := make(map[string]any)
 22217  	populate(objectMap, "action", m.Action)
 22218  	populate(objectMap, "ruleName", m.RuleName)
 22219  	return json.Marshal(objectMap)
 22220  }
 22221  
 22222  // UnmarshalJSON implements the json.Unmarshaller interface for type MatchedRule.
 22223  func (m *MatchedRule) UnmarshalJSON(data []byte) error {
 22224  	var rawMsg map[string]json.RawMessage
 22225  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22226  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 22227  	}
 22228  	for key, val := range rawMsg {
 22229  		var err error
 22230  		switch key {
 22231  		case "action":
 22232  			err = unpopulate(val, "Action", &m.Action)
 22233  			delete(rawMsg, key)
 22234  		case "ruleName":
 22235  			err = unpopulate(val, "RuleName", &m.RuleName)
 22236  			delete(rawMsg, key)
 22237  		}
 22238  		if err != nil {
 22239  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 22240  		}
 22241  	}
 22242  	return nil
 22243  }
 22244  
 22245  // MarshalJSON implements the json.Marshaller interface for type MetricSpecification.
 22246  func (m MetricSpecification) MarshalJSON() ([]byte, error) {
 22247  	objectMap := make(map[string]any)
 22248  	populate(objectMap, "aggregationType", m.AggregationType)
 22249  	populate(objectMap, "availabilities", m.Availabilities)
 22250  	populate(objectMap, "dimensions", m.Dimensions)
 22251  	populate(objectMap, "displayDescription", m.DisplayDescription)
 22252  	populate(objectMap, "displayName", m.DisplayName)
 22253  	populate(objectMap, "enableRegionalMdmAccount", m.EnableRegionalMdmAccount)
 22254  	populate(objectMap, "fillGapWithZero", m.FillGapWithZero)
 22255  	populate(objectMap, "isInternal", m.IsInternal)
 22256  	populate(objectMap, "metricFilterPattern", m.MetricFilterPattern)
 22257  	populate(objectMap, "name", m.Name)
 22258  	populate(objectMap, "resourceIdDimensionNameOverride", m.ResourceIDDimensionNameOverride)
 22259  	populate(objectMap, "sourceMdmAccount", m.SourceMdmAccount)
 22260  	populate(objectMap, "sourceMdmNamespace", m.SourceMdmNamespace)
 22261  	populate(objectMap, "unit", m.Unit)
 22262  	return json.Marshal(objectMap)
 22263  }
 22264  
 22265  // UnmarshalJSON implements the json.Unmarshaller interface for type MetricSpecification.
 22266  func (m *MetricSpecification) UnmarshalJSON(data []byte) error {
 22267  	var rawMsg map[string]json.RawMessage
 22268  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22269  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 22270  	}
 22271  	for key, val := range rawMsg {
 22272  		var err error
 22273  		switch key {
 22274  		case "aggregationType":
 22275  			err = unpopulate(val, "AggregationType", &m.AggregationType)
 22276  			delete(rawMsg, key)
 22277  		case "availabilities":
 22278  			err = unpopulate(val, "Availabilities", &m.Availabilities)
 22279  			delete(rawMsg, key)
 22280  		case "dimensions":
 22281  			err = unpopulate(val, "Dimensions", &m.Dimensions)
 22282  			delete(rawMsg, key)
 22283  		case "displayDescription":
 22284  			err = unpopulate(val, "DisplayDescription", &m.DisplayDescription)
 22285  			delete(rawMsg, key)
 22286  		case "displayName":
 22287  			err = unpopulate(val, "DisplayName", &m.DisplayName)
 22288  			delete(rawMsg, key)
 22289  		case "enableRegionalMdmAccount":
 22290  			err = unpopulate(val, "EnableRegionalMdmAccount", &m.EnableRegionalMdmAccount)
 22291  			delete(rawMsg, key)
 22292  		case "fillGapWithZero":
 22293  			err = unpopulate(val, "FillGapWithZero", &m.FillGapWithZero)
 22294  			delete(rawMsg, key)
 22295  		case "isInternal":
 22296  			err = unpopulate(val, "IsInternal", &m.IsInternal)
 22297  			delete(rawMsg, key)
 22298  		case "metricFilterPattern":
 22299  			err = unpopulate(val, "MetricFilterPattern", &m.MetricFilterPattern)
 22300  			delete(rawMsg, key)
 22301  		case "name":
 22302  			err = unpopulate(val, "Name", &m.Name)
 22303  			delete(rawMsg, key)
 22304  		case "resourceIdDimensionNameOverride":
 22305  			err = unpopulate(val, "ResourceIDDimensionNameOverride", &m.ResourceIDDimensionNameOverride)
 22306  			delete(rawMsg, key)
 22307  		case "sourceMdmAccount":
 22308  			err = unpopulate(val, "SourceMdmAccount", &m.SourceMdmAccount)
 22309  			delete(rawMsg, key)
 22310  		case "sourceMdmNamespace":
 22311  			err = unpopulate(val, "SourceMdmNamespace", &m.SourceMdmNamespace)
 22312  			delete(rawMsg, key)
 22313  		case "unit":
 22314  			err = unpopulate(val, "Unit", &m.Unit)
 22315  			delete(rawMsg, key)
 22316  		}
 22317  		if err != nil {
 22318  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 22319  		}
 22320  	}
 22321  	return nil
 22322  }
 22323  
 22324  // MarshalJSON implements the json.Marshaller interface for type MigrateLoadBalancerToIPBasedRequest.
 22325  func (m MigrateLoadBalancerToIPBasedRequest) MarshalJSON() ([]byte, error) {
 22326  	objectMap := make(map[string]any)
 22327  	populate(objectMap, "pools", m.Pools)
 22328  	return json.Marshal(objectMap)
 22329  }
 22330  
 22331  // UnmarshalJSON implements the json.Unmarshaller interface for type MigrateLoadBalancerToIPBasedRequest.
 22332  func (m *MigrateLoadBalancerToIPBasedRequest) UnmarshalJSON(data []byte) error {
 22333  	var rawMsg map[string]json.RawMessage
 22334  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22335  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 22336  	}
 22337  	for key, val := range rawMsg {
 22338  		var err error
 22339  		switch key {
 22340  		case "pools":
 22341  			err = unpopulate(val, "Pools", &m.Pools)
 22342  			delete(rawMsg, key)
 22343  		}
 22344  		if err != nil {
 22345  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 22346  		}
 22347  	}
 22348  	return nil
 22349  }
 22350  
 22351  // MarshalJSON implements the json.Marshaller interface for type MigratedPools.
 22352  func (m MigratedPools) MarshalJSON() ([]byte, error) {
 22353  	objectMap := make(map[string]any)
 22354  	populate(objectMap, "migratedPools", m.MigratedPools)
 22355  	return json.Marshal(objectMap)
 22356  }
 22357  
 22358  // UnmarshalJSON implements the json.Unmarshaller interface for type MigratedPools.
 22359  func (m *MigratedPools) UnmarshalJSON(data []byte) error {
 22360  	var rawMsg map[string]json.RawMessage
 22361  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22362  		return fmt.Errorf("unmarshalling type %T: %v", m, err)
 22363  	}
 22364  	for key, val := range rawMsg {
 22365  		var err error
 22366  		switch key {
 22367  		case "migratedPools":
 22368  			err = unpopulate(val, "MigratedPools", &m.MigratedPools)
 22369  			delete(rawMsg, key)
 22370  		}
 22371  		if err != nil {
 22372  			return fmt.Errorf("unmarshalling type %T: %v", m, err)
 22373  		}
 22374  	}
 22375  	return nil
 22376  }
 22377  
 22378  // MarshalJSON implements the json.Marshaller interface for type NatGateway.
 22379  func (n NatGateway) MarshalJSON() ([]byte, error) {
 22380  	objectMap := make(map[string]any)
 22381  	populate(objectMap, "etag", n.Etag)
 22382  	populate(objectMap, "id", n.ID)
 22383  	populate(objectMap, "location", n.Location)
 22384  	populate(objectMap, "name", n.Name)
 22385  	populate(objectMap, "properties", n.Properties)
 22386  	populate(objectMap, "sku", n.SKU)
 22387  	populate(objectMap, "tags", n.Tags)
 22388  	populate(objectMap, "type", n.Type)
 22389  	populate(objectMap, "zones", n.Zones)
 22390  	return json.Marshal(objectMap)
 22391  }
 22392  
 22393  // UnmarshalJSON implements the json.Unmarshaller interface for type NatGateway.
 22394  func (n *NatGateway) UnmarshalJSON(data []byte) error {
 22395  	var rawMsg map[string]json.RawMessage
 22396  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22397  		return fmt.Errorf("unmarshalling type %T: %v", n, err)
 22398  	}
 22399  	for key, val := range rawMsg {
 22400  		var err error
 22401  		switch key {
 22402  		case "etag":
 22403  			err = unpopulate(val, "Etag", &n.Etag)
 22404  			delete(rawMsg, key)
 22405  		case "id":
 22406  			err = unpopulate(val, "ID", &n.ID)
 22407  			delete(rawMsg, key)
 22408  		case "location":
 22409  			err = unpopulate(val, "Location", &n.Location)
 22410  			delete(rawMsg, key)
 22411  		case "name":
 22412  			err = unpopulate(val, "Name", &n.Name)
 22413  			delete(rawMsg, key)
 22414  		case "properties":
 22415  			err = unpopulate(val, "Properties", &n.Properties)
 22416  			delete(rawMsg, key)
 22417  		case "sku":
 22418  			err = unpopulate(val, "SKU", &n.SKU)
 22419  			delete(rawMsg, key)
 22420  		case "tags":
 22421  			err = unpopulate(val, "Tags", &n.Tags)
 22422  			delete(rawMsg, key)
 22423  		case "type":
 22424  			err = unpopulate(val, "Type", &n.Type)
 22425  			delete(rawMsg, key)
 22426  		case "zones":
 22427  			err = unpopulate(val, "Zones", &n.Zones)
 22428  			delete(rawMsg, key)
 22429  		}
 22430  		if err != nil {
 22431  			return fmt.Errorf("unmarshalling type %T: %v", n, err)
 22432  		}
 22433  	}
 22434  	return nil
 22435  }
 22436  
 22437  // MarshalJSON implements the json.Marshaller interface for type NatGatewayListResult.
 22438  func (n NatGatewayListResult) MarshalJSON() ([]byte, error) {
 22439  	objectMap := make(map[string]any)
 22440  	populate(objectMap, "nextLink", n.NextLink)
 22441  	populate(objectMap, "value", n.Value)
 22442  	return json.Marshal(objectMap)
 22443  }
 22444  
 22445  // UnmarshalJSON implements the json.Unmarshaller interface for type NatGatewayListResult.
 22446  func (n *NatGatewayListResult) UnmarshalJSON(data []byte) error {
 22447  	var rawMsg map[string]json.RawMessage
 22448  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22449  		return fmt.Errorf("unmarshalling type %T: %v", n, err)
 22450  	}
 22451  	for key, val := range rawMsg {
 22452  		var err error
 22453  		switch key {
 22454  		case "nextLink":
 22455  			err = unpopulate(val, "NextLink", &n.NextLink)
 22456  			delete(rawMsg, key)
 22457  		case "value":
 22458  			err = unpopulate(val, "Value", &n.Value)
 22459  			delete(rawMsg, key)
 22460  		}
 22461  		if err != nil {
 22462  			return fmt.Errorf("unmarshalling type %T: %v", n, err)
 22463  		}
 22464  	}
 22465  	return nil
 22466  }
 22467  
 22468  // MarshalJSON implements the json.Marshaller interface for type NatGatewayPropertiesFormat.
 22469  func (n NatGatewayPropertiesFormat) MarshalJSON() ([]byte, error) {
 22470  	objectMap := make(map[string]any)
 22471  	populate(objectMap, "idleTimeoutInMinutes", n.IdleTimeoutInMinutes)
 22472  	populate(objectMap, "provisioningState", n.ProvisioningState)
 22473  	populate(objectMap, "publicIpAddresses", n.PublicIPAddresses)
 22474  	populate(objectMap, "publicIpPrefixes", n.PublicIPPrefixes)
 22475  	populate(objectMap, "resourceGuid", n.ResourceGUID)
 22476  	populate(objectMap, "subnets", n.Subnets)
 22477  	return json.Marshal(objectMap)
 22478  }
 22479  
 22480  // UnmarshalJSON implements the json.Unmarshaller interface for type NatGatewayPropertiesFormat.
 22481  func (n *NatGatewayPropertiesFormat) UnmarshalJSON(data []byte) error {
 22482  	var rawMsg map[string]json.RawMessage
 22483  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22484  		return fmt.Errorf("unmarshalling type %T: %v", n, err)
 22485  	}
 22486  	for key, val := range rawMsg {
 22487  		var err error
 22488  		switch key {
 22489  		case "idleTimeoutInMinutes":
 22490  			err = unpopulate(val, "IdleTimeoutInMinutes", &n.IdleTimeoutInMinutes)
 22491  			delete(rawMsg, key)
 22492  		case "provisioningState":
 22493  			err = unpopulate(val, "ProvisioningState", &n.ProvisioningState)
 22494  			delete(rawMsg, key)
 22495  		case "publicIpAddresses":
 22496  			err = unpopulate(val, "PublicIPAddresses", &n.PublicIPAddresses)
 22497  			delete(rawMsg, key)
 22498  		case "publicIpPrefixes":
 22499  			err = unpopulate(val, "PublicIPPrefixes", &n.PublicIPPrefixes)
 22500  			delete(rawMsg, key)
 22501  		case "resourceGuid":
 22502  			err = unpopulate(val, "ResourceGUID", &n.ResourceGUID)
 22503  			delete(rawMsg, key)
 22504  		case "subnets":
 22505  			err = unpopulate(val, "Subnets", &n.Subnets)
 22506  			delete(rawMsg, key)
 22507  		}
 22508  		if err != nil {
 22509  			return fmt.Errorf("unmarshalling type %T: %v", n, err)
 22510  		}
 22511  	}
 22512  	return nil
 22513  }
 22514  
 22515  // MarshalJSON implements the json.Marshaller interface for type NatGatewaySKU.
 22516  func (n NatGatewaySKU) MarshalJSON() ([]byte, error) {
 22517  	objectMap := make(map[string]any)
 22518  	populate(objectMap, "name", n.Name)
 22519  	return json.Marshal(objectMap)
 22520  }
 22521  
 22522  // UnmarshalJSON implements the json.Unmarshaller interface for type NatGatewaySKU.
 22523  func (n *NatGatewaySKU) UnmarshalJSON(data []byte) error {
 22524  	var rawMsg map[string]json.RawMessage
 22525  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22526  		return fmt.Errorf("unmarshalling type %T: %v", n, err)
 22527  	}
 22528  	for key, val := range rawMsg {
 22529  		var err error
 22530  		switch key {
 22531  		case "name":
 22532  			err = unpopulate(val, "Name", &n.Name)
 22533  			delete(rawMsg, key)
 22534  		}
 22535  		if err != nil {
 22536  			return fmt.Errorf("unmarshalling type %T: %v", n, err)
 22537  		}
 22538  	}
 22539  	return nil
 22540  }
 22541  
 22542  // MarshalJSON implements the json.Marshaller interface for type NatRule.
 22543  func (n NatRule) MarshalJSON() ([]byte, error) {
 22544  	objectMap := make(map[string]any)
 22545  	populate(objectMap, "description", n.Description)
 22546  	populate(objectMap, "destinationAddresses", n.DestinationAddresses)
 22547  	populate(objectMap, "destinationPorts", n.DestinationPorts)
 22548  	populate(objectMap, "ipProtocols", n.IPProtocols)
 22549  	populate(objectMap, "name", n.Name)
 22550  	objectMap["ruleType"] = FirewallPolicyRuleTypeNatRule
 22551  	populate(objectMap, "sourceAddresses", n.SourceAddresses)
 22552  	populate(objectMap, "sourceIpGroups", n.SourceIPGroups)
 22553  	populate(objectMap, "translatedAddress", n.TranslatedAddress)
 22554  	populate(objectMap, "translatedFqdn", n.TranslatedFqdn)
 22555  	populate(objectMap, "translatedPort", n.TranslatedPort)
 22556  	return json.Marshal(objectMap)
 22557  }
 22558  
 22559  // UnmarshalJSON implements the json.Unmarshaller interface for type NatRule.
 22560  func (n *NatRule) UnmarshalJSON(data []byte) error {
 22561  	var rawMsg map[string]json.RawMessage
 22562  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22563  		return fmt.Errorf("unmarshalling type %T: %v", n, err)
 22564  	}
 22565  	for key, val := range rawMsg {
 22566  		var err error
 22567  		switch key {
 22568  		case "description":
 22569  			err = unpopulate(val, "Description", &n.Description)
 22570  			delete(rawMsg, key)
 22571  		case "destinationAddresses":
 22572  			err = unpopulate(val, "DestinationAddresses", &n.DestinationAddresses)
 22573  			delete(rawMsg, key)
 22574  		case "destinationPorts":
 22575  			err = unpopulate(val, "DestinationPorts", &n.DestinationPorts)
 22576  			delete(rawMsg, key)
 22577  		case "ipProtocols":
 22578  			err = unpopulate(val, "IPProtocols", &n.IPProtocols)
 22579  			delete(rawMsg, key)
 22580  		case "name":
 22581  			err = unpopulate(val, "Name", &n.Name)
 22582  			delete(rawMsg, key)
 22583  		case "ruleType":
 22584  			err = unpopulate(val, "RuleType", &n.RuleType)
 22585  			delete(rawMsg, key)
 22586  		case "sourceAddresses":
 22587  			err = unpopulate(val, "SourceAddresses", &n.SourceAddresses)
 22588  			delete(rawMsg, key)
 22589  		case "sourceIpGroups":
 22590  			err = unpopulate(val, "SourceIPGroups", &n.SourceIPGroups)
 22591  			delete(rawMsg, key)
 22592  		case "translatedAddress":
 22593  			err = unpopulate(val, "TranslatedAddress", &n.TranslatedAddress)
 22594  			delete(rawMsg, key)
 22595  		case "translatedFqdn":
 22596  			err = unpopulate(val, "TranslatedFqdn", &n.TranslatedFqdn)
 22597  			delete(rawMsg, key)
 22598  		case "translatedPort":
 22599  			err = unpopulate(val, "TranslatedPort", &n.TranslatedPort)
 22600  			delete(rawMsg, key)
 22601  		}
 22602  		if err != nil {
 22603  			return fmt.Errorf("unmarshalling type %T: %v", n, err)
 22604  		}
 22605  	}
 22606  	return nil
 22607  }
 22608  
 22609  // MarshalJSON implements the json.Marshaller interface for type NatRulePortMapping.
 22610  func (n NatRulePortMapping) MarshalJSON() ([]byte, error) {
 22611  	objectMap := make(map[string]any)
 22612  	populate(objectMap, "backendPort", n.BackendPort)
 22613  	populate(objectMap, "frontendPort", n.FrontendPort)
 22614  	populate(objectMap, "inboundNatRuleName", n.InboundNatRuleName)
 22615  	return json.Marshal(objectMap)
 22616  }
 22617  
 22618  // UnmarshalJSON implements the json.Unmarshaller interface for type NatRulePortMapping.
 22619  func (n *NatRulePortMapping) UnmarshalJSON(data []byte) error {
 22620  	var rawMsg map[string]json.RawMessage
 22621  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22622  		return fmt.Errorf("unmarshalling type %T: %v", n, err)
 22623  	}
 22624  	for key, val := range rawMsg {
 22625  		var err error
 22626  		switch key {
 22627  		case "backendPort":
 22628  			err = unpopulate(val, "BackendPort", &n.BackendPort)
 22629  			delete(rawMsg, key)
 22630  		case "frontendPort":
 22631  			err = unpopulate(val, "FrontendPort", &n.FrontendPort)
 22632  			delete(rawMsg, key)
 22633  		case "inboundNatRuleName":
 22634  			err = unpopulate(val, "InboundNatRuleName", &n.InboundNatRuleName)
 22635  			delete(rawMsg, key)
 22636  		}
 22637  		if err != nil {
 22638  			return fmt.Errorf("unmarshalling type %T: %v", n, err)
 22639  		}
 22640  	}
 22641  	return nil
 22642  }
 22643  
 22644  // MarshalJSON implements the json.Marshaller interface for type NextHopParameters.
 22645  func (n NextHopParameters) MarshalJSON() ([]byte, error) {
 22646  	objectMap := make(map[string]any)
 22647  	populate(objectMap, "destinationIPAddress", n.DestinationIPAddress)
 22648  	populate(objectMap, "sourceIPAddress", n.SourceIPAddress)
 22649  	populate(objectMap, "targetNicResourceId", n.TargetNicResourceID)
 22650  	populate(objectMap, "targetResourceId", n.TargetResourceID)
 22651  	return json.Marshal(objectMap)
 22652  }
 22653  
 22654  // UnmarshalJSON implements the json.Unmarshaller interface for type NextHopParameters.
 22655  func (n *NextHopParameters) UnmarshalJSON(data []byte) error {
 22656  	var rawMsg map[string]json.RawMessage
 22657  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22658  		return fmt.Errorf("unmarshalling type %T: %v", n, err)
 22659  	}
 22660  	for key, val := range rawMsg {
 22661  		var err error
 22662  		switch key {
 22663  		case "destinationIPAddress":
 22664  			err = unpopulate(val, "DestinationIPAddress", &n.DestinationIPAddress)
 22665  			delete(rawMsg, key)
 22666  		case "sourceIPAddress":
 22667  			err = unpopulate(val, "SourceIPAddress", &n.SourceIPAddress)
 22668  			delete(rawMsg, key)
 22669  		case "targetNicResourceId":
 22670  			err = unpopulate(val, "TargetNicResourceID", &n.TargetNicResourceID)
 22671  			delete(rawMsg, key)
 22672  		case "targetResourceId":
 22673  			err = unpopulate(val, "TargetResourceID", &n.TargetResourceID)
 22674  			delete(rawMsg, key)
 22675  		}
 22676  		if err != nil {
 22677  			return fmt.Errorf("unmarshalling type %T: %v", n, err)
 22678  		}
 22679  	}
 22680  	return nil
 22681  }
 22682  
 22683  // MarshalJSON implements the json.Marshaller interface for type NextHopResult.
 22684  func (n NextHopResult) MarshalJSON() ([]byte, error) {
 22685  	objectMap := make(map[string]any)
 22686  	populate(objectMap, "nextHopIpAddress", n.NextHopIPAddress)
 22687  	populate(objectMap, "nextHopType", n.NextHopType)
 22688  	populate(objectMap, "routeTableId", n.RouteTableID)
 22689  	return json.Marshal(objectMap)
 22690  }
 22691  
 22692  // UnmarshalJSON implements the json.Unmarshaller interface for type NextHopResult.
 22693  func (n *NextHopResult) UnmarshalJSON(data []byte) error {
 22694  	var rawMsg map[string]json.RawMessage
 22695  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22696  		return fmt.Errorf("unmarshalling type %T: %v", n, err)
 22697  	}
 22698  	for key, val := range rawMsg {
 22699  		var err error
 22700  		switch key {
 22701  		case "nextHopIpAddress":
 22702  			err = unpopulate(val, "NextHopIPAddress", &n.NextHopIPAddress)
 22703  			delete(rawMsg, key)
 22704  		case "nextHopType":
 22705  			err = unpopulate(val, "NextHopType", &n.NextHopType)
 22706  			delete(rawMsg, key)
 22707  		case "routeTableId":
 22708  			err = unpopulate(val, "RouteTableID", &n.RouteTableID)
 22709  			delete(rawMsg, key)
 22710  		}
 22711  		if err != nil {
 22712  			return fmt.Errorf("unmarshalling type %T: %v", n, err)
 22713  		}
 22714  	}
 22715  	return nil
 22716  }
 22717  
 22718  // MarshalJSON implements the json.Marshaller interface for type O365BreakOutCategoryPolicies.
 22719  func (o O365BreakOutCategoryPolicies) MarshalJSON() ([]byte, error) {
 22720  	objectMap := make(map[string]any)
 22721  	populate(objectMap, "allow", o.Allow)
 22722  	populate(objectMap, "default", o.Default)
 22723  	populate(objectMap, "optimize", o.Optimize)
 22724  	return json.Marshal(objectMap)
 22725  }
 22726  
 22727  // UnmarshalJSON implements the json.Unmarshaller interface for type O365BreakOutCategoryPolicies.
 22728  func (o *O365BreakOutCategoryPolicies) UnmarshalJSON(data []byte) error {
 22729  	var rawMsg map[string]json.RawMessage
 22730  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22731  		return fmt.Errorf("unmarshalling type %T: %v", o, err)
 22732  	}
 22733  	for key, val := range rawMsg {
 22734  		var err error
 22735  		switch key {
 22736  		case "allow":
 22737  			err = unpopulate(val, "Allow", &o.Allow)
 22738  			delete(rawMsg, key)
 22739  		case "default":
 22740  			err = unpopulate(val, "Default", &o.Default)
 22741  			delete(rawMsg, key)
 22742  		case "optimize":
 22743  			err = unpopulate(val, "Optimize", &o.Optimize)
 22744  			delete(rawMsg, key)
 22745  		}
 22746  		if err != nil {
 22747  			return fmt.Errorf("unmarshalling type %T: %v", o, err)
 22748  		}
 22749  	}
 22750  	return nil
 22751  }
 22752  
 22753  // MarshalJSON implements the json.Marshaller interface for type O365PolicyProperties.
 22754  func (o O365PolicyProperties) MarshalJSON() ([]byte, error) {
 22755  	objectMap := make(map[string]any)
 22756  	populate(objectMap, "breakOutCategories", o.BreakOutCategories)
 22757  	return json.Marshal(objectMap)
 22758  }
 22759  
 22760  // UnmarshalJSON implements the json.Unmarshaller interface for type O365PolicyProperties.
 22761  func (o *O365PolicyProperties) UnmarshalJSON(data []byte) error {
 22762  	var rawMsg map[string]json.RawMessage
 22763  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22764  		return fmt.Errorf("unmarshalling type %T: %v", o, err)
 22765  	}
 22766  	for key, val := range rawMsg {
 22767  		var err error
 22768  		switch key {
 22769  		case "breakOutCategories":
 22770  			err = unpopulate(val, "BreakOutCategories", &o.BreakOutCategories)
 22771  			delete(rawMsg, key)
 22772  		}
 22773  		if err != nil {
 22774  			return fmt.Errorf("unmarshalling type %T: %v", o, err)
 22775  		}
 22776  	}
 22777  	return nil
 22778  }
 22779  
 22780  // MarshalJSON implements the json.Marshaller interface for type Office365PolicyProperties.
 22781  func (o Office365PolicyProperties) MarshalJSON() ([]byte, error) {
 22782  	objectMap := make(map[string]any)
 22783  	populate(objectMap, "breakOutCategories", o.BreakOutCategories)
 22784  	return json.Marshal(objectMap)
 22785  }
 22786  
 22787  // UnmarshalJSON implements the json.Unmarshaller interface for type Office365PolicyProperties.
 22788  func (o *Office365PolicyProperties) UnmarshalJSON(data []byte) error {
 22789  	var rawMsg map[string]json.RawMessage
 22790  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22791  		return fmt.Errorf("unmarshalling type %T: %v", o, err)
 22792  	}
 22793  	for key, val := range rawMsg {
 22794  		var err error
 22795  		switch key {
 22796  		case "breakOutCategories":
 22797  			err = unpopulate(val, "BreakOutCategories", &o.BreakOutCategories)
 22798  			delete(rawMsg, key)
 22799  		}
 22800  		if err != nil {
 22801  			return fmt.Errorf("unmarshalling type %T: %v", o, err)
 22802  		}
 22803  	}
 22804  	return nil
 22805  }
 22806  
 22807  // MarshalJSON implements the json.Marshaller interface for type Operation.
 22808  func (o Operation) MarshalJSON() ([]byte, error) {
 22809  	objectMap := make(map[string]any)
 22810  	populate(objectMap, "display", o.Display)
 22811  	populate(objectMap, "name", o.Name)
 22812  	populate(objectMap, "origin", o.Origin)
 22813  	populate(objectMap, "properties", o.Properties)
 22814  	return json.Marshal(objectMap)
 22815  }
 22816  
 22817  // UnmarshalJSON implements the json.Unmarshaller interface for type Operation.
 22818  func (o *Operation) UnmarshalJSON(data []byte) error {
 22819  	var rawMsg map[string]json.RawMessage
 22820  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22821  		return fmt.Errorf("unmarshalling type %T: %v", o, err)
 22822  	}
 22823  	for key, val := range rawMsg {
 22824  		var err error
 22825  		switch key {
 22826  		case "display":
 22827  			err = unpopulate(val, "Display", &o.Display)
 22828  			delete(rawMsg, key)
 22829  		case "name":
 22830  			err = unpopulate(val, "Name", &o.Name)
 22831  			delete(rawMsg, key)
 22832  		case "origin":
 22833  			err = unpopulate(val, "Origin", &o.Origin)
 22834  			delete(rawMsg, key)
 22835  		case "properties":
 22836  			err = unpopulate(val, "Properties", &o.Properties)
 22837  			delete(rawMsg, key)
 22838  		}
 22839  		if err != nil {
 22840  			return fmt.Errorf("unmarshalling type %T: %v", o, err)
 22841  		}
 22842  	}
 22843  	return nil
 22844  }
 22845  
 22846  // MarshalJSON implements the json.Marshaller interface for type OperationDisplay.
 22847  func (o OperationDisplay) MarshalJSON() ([]byte, error) {
 22848  	objectMap := make(map[string]any)
 22849  	populate(objectMap, "description", o.Description)
 22850  	populate(objectMap, "operation", o.Operation)
 22851  	populate(objectMap, "provider", o.Provider)
 22852  	populate(objectMap, "resource", o.Resource)
 22853  	return json.Marshal(objectMap)
 22854  }
 22855  
 22856  // UnmarshalJSON implements the json.Unmarshaller interface for type OperationDisplay.
 22857  func (o *OperationDisplay) UnmarshalJSON(data []byte) error {
 22858  	var rawMsg map[string]json.RawMessage
 22859  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22860  		return fmt.Errorf("unmarshalling type %T: %v", o, err)
 22861  	}
 22862  	for key, val := range rawMsg {
 22863  		var err error
 22864  		switch key {
 22865  		case "description":
 22866  			err = unpopulate(val, "Description", &o.Description)
 22867  			delete(rawMsg, key)
 22868  		case "operation":
 22869  			err = unpopulate(val, "Operation", &o.Operation)
 22870  			delete(rawMsg, key)
 22871  		case "provider":
 22872  			err = unpopulate(val, "Provider", &o.Provider)
 22873  			delete(rawMsg, key)
 22874  		case "resource":
 22875  			err = unpopulate(val, "Resource", &o.Resource)
 22876  			delete(rawMsg, key)
 22877  		}
 22878  		if err != nil {
 22879  			return fmt.Errorf("unmarshalling type %T: %v", o, err)
 22880  		}
 22881  	}
 22882  	return nil
 22883  }
 22884  
 22885  // MarshalJSON implements the json.Marshaller interface for type OperationListResult.
 22886  func (o OperationListResult) MarshalJSON() ([]byte, error) {
 22887  	objectMap := make(map[string]any)
 22888  	populate(objectMap, "nextLink", o.NextLink)
 22889  	populate(objectMap, "value", o.Value)
 22890  	return json.Marshal(objectMap)
 22891  }
 22892  
 22893  // UnmarshalJSON implements the json.Unmarshaller interface for type OperationListResult.
 22894  func (o *OperationListResult) UnmarshalJSON(data []byte) error {
 22895  	var rawMsg map[string]json.RawMessage
 22896  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22897  		return fmt.Errorf("unmarshalling type %T: %v", o, err)
 22898  	}
 22899  	for key, val := range rawMsg {
 22900  		var err error
 22901  		switch key {
 22902  		case "nextLink":
 22903  			err = unpopulate(val, "NextLink", &o.NextLink)
 22904  			delete(rawMsg, key)
 22905  		case "value":
 22906  			err = unpopulate(val, "Value", &o.Value)
 22907  			delete(rawMsg, key)
 22908  		}
 22909  		if err != nil {
 22910  			return fmt.Errorf("unmarshalling type %T: %v", o, err)
 22911  		}
 22912  	}
 22913  	return nil
 22914  }
 22915  
 22916  // MarshalJSON implements the json.Marshaller interface for type OperationPropertiesFormat.
 22917  func (o OperationPropertiesFormat) MarshalJSON() ([]byte, error) {
 22918  	objectMap := make(map[string]any)
 22919  	populate(objectMap, "serviceSpecification", o.ServiceSpecification)
 22920  	return json.Marshal(objectMap)
 22921  }
 22922  
 22923  // UnmarshalJSON implements the json.Unmarshaller interface for type OperationPropertiesFormat.
 22924  func (o *OperationPropertiesFormat) UnmarshalJSON(data []byte) error {
 22925  	var rawMsg map[string]json.RawMessage
 22926  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22927  		return fmt.Errorf("unmarshalling type %T: %v", o, err)
 22928  	}
 22929  	for key, val := range rawMsg {
 22930  		var err error
 22931  		switch key {
 22932  		case "serviceSpecification":
 22933  			err = unpopulate(val, "ServiceSpecification", &o.ServiceSpecification)
 22934  			delete(rawMsg, key)
 22935  		}
 22936  		if err != nil {
 22937  			return fmt.Errorf("unmarshalling type %T: %v", o, err)
 22938  		}
 22939  	}
 22940  	return nil
 22941  }
 22942  
 22943  // MarshalJSON implements the json.Marshaller interface for type OperationPropertiesFormatServiceSpecification.
 22944  func (o OperationPropertiesFormatServiceSpecification) MarshalJSON() ([]byte, error) {
 22945  	objectMap := make(map[string]any)
 22946  	populate(objectMap, "logSpecifications", o.LogSpecifications)
 22947  	populate(objectMap, "metricSpecifications", o.MetricSpecifications)
 22948  	return json.Marshal(objectMap)
 22949  }
 22950  
 22951  // UnmarshalJSON implements the json.Unmarshaller interface for type OperationPropertiesFormatServiceSpecification.
 22952  func (o *OperationPropertiesFormatServiceSpecification) UnmarshalJSON(data []byte) error {
 22953  	var rawMsg map[string]json.RawMessage
 22954  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22955  		return fmt.Errorf("unmarshalling type %T: %v", o, err)
 22956  	}
 22957  	for key, val := range rawMsg {
 22958  		var err error
 22959  		switch key {
 22960  		case "logSpecifications":
 22961  			err = unpopulate(val, "LogSpecifications", &o.LogSpecifications)
 22962  			delete(rawMsg, key)
 22963  		case "metricSpecifications":
 22964  			err = unpopulate(val, "MetricSpecifications", &o.MetricSpecifications)
 22965  			delete(rawMsg, key)
 22966  		}
 22967  		if err != nil {
 22968  			return fmt.Errorf("unmarshalling type %T: %v", o, err)
 22969  		}
 22970  	}
 22971  	return nil
 22972  }
 22973  
 22974  // MarshalJSON implements the json.Marshaller interface for type OrderBy.
 22975  func (o OrderBy) MarshalJSON() ([]byte, error) {
 22976  	objectMap := make(map[string]any)
 22977  	populate(objectMap, "field", o.Field)
 22978  	populate(objectMap, "order", o.Order)
 22979  	return json.Marshal(objectMap)
 22980  }
 22981  
 22982  // UnmarshalJSON implements the json.Unmarshaller interface for type OrderBy.
 22983  func (o *OrderBy) UnmarshalJSON(data []byte) error {
 22984  	var rawMsg map[string]json.RawMessage
 22985  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 22986  		return fmt.Errorf("unmarshalling type %T: %v", o, err)
 22987  	}
 22988  	for key, val := range rawMsg {
 22989  		var err error
 22990  		switch key {
 22991  		case "field":
 22992  			err = unpopulate(val, "Field", &o.Field)
 22993  			delete(rawMsg, key)
 22994  		case "order":
 22995  			err = unpopulate(val, "Order", &o.Order)
 22996  			delete(rawMsg, key)
 22997  		}
 22998  		if err != nil {
 22999  			return fmt.Errorf("unmarshalling type %T: %v", o, err)
 23000  		}
 23001  	}
 23002  	return nil
 23003  }
 23004  
 23005  // MarshalJSON implements the json.Marshaller interface for type OutboundRule.
 23006  func (o OutboundRule) MarshalJSON() ([]byte, error) {
 23007  	objectMap := make(map[string]any)
 23008  	populate(objectMap, "etag", o.Etag)
 23009  	populate(objectMap, "id", o.ID)
 23010  	populate(objectMap, "name", o.Name)
 23011  	populate(objectMap, "properties", o.Properties)
 23012  	populate(objectMap, "type", o.Type)
 23013  	return json.Marshal(objectMap)
 23014  }
 23015  
 23016  // UnmarshalJSON implements the json.Unmarshaller interface for type OutboundRule.
 23017  func (o *OutboundRule) UnmarshalJSON(data []byte) error {
 23018  	var rawMsg map[string]json.RawMessage
 23019  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 23020  		return fmt.Errorf("unmarshalling type %T: %v", o, err)
 23021  	}
 23022  	for key, val := range rawMsg {
 23023  		var err error
 23024  		switch key {
 23025  		case "etag":
 23026  			err = unpopulate(val, "Etag", &o.Etag)
 23027  			delete(rawMsg, key)
 23028  		case "id":
 23029  			err = unpopulate(val, "ID", &o.ID)
 23030  			delete(rawMsg, key)
 23031  		case "name":
 23032  			err = unpopulate(val, "Name", &o.Name)
 23033  			delete(rawMsg, key)
 23034  		case "properties":
 23035  			err = unpopulate(val, "Properties", &o.Properties)
 23036  			delete(rawMsg, key)
 23037  		case "type":
 23038  			err = unpopulate(val, "Type", &o.Type)
 23039  			delete(rawMsg, key)
 23040  		}
 23041  		if err != nil {
 23042  			return fmt.Errorf("unmarshalling type %T: %v", o, err)
 23043  		}
 23044  	}
 23045  	return nil
 23046  }
 23047  
 23048  // MarshalJSON implements the json.Marshaller interface for type OutboundRulePropertiesFormat.
 23049  func (o OutboundRulePropertiesFormat) MarshalJSON() ([]byte, error) {
 23050  	objectMap := make(map[string]any)
 23051  	populate(objectMap, "allocatedOutboundPorts", o.AllocatedOutboundPorts)
 23052  	populate(objectMap, "backendAddressPool", o.BackendAddressPool)
 23053  	populate(objectMap, "enableTcpReset", o.EnableTCPReset)
 23054  	populate(objectMap, "frontendIPConfigurations", o.FrontendIPConfigurations)
 23055  	populate(objectMap, "idleTimeoutInMinutes", o.IdleTimeoutInMinutes)
 23056  	populate(objectMap, "protocol", o.Protocol)
 23057  	populate(objectMap, "provisioningState", o.ProvisioningState)
 23058  	return json.Marshal(objectMap)
 23059  }
 23060  
 23061  // UnmarshalJSON implements the json.Unmarshaller interface for type OutboundRulePropertiesFormat.
 23062  func (o *OutboundRulePropertiesFormat) UnmarshalJSON(data []byte) error {
 23063  	var rawMsg map[string]json.RawMessage
 23064  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 23065  		return fmt.Errorf("unmarshalling type %T: %v", o, err)
 23066  	}
 23067  	for key, val := range rawMsg {
 23068  		var err error
 23069  		switch key {
 23070  		case "allocatedOutboundPorts":
 23071  			err = unpopulate(val, "AllocatedOutboundPorts", &o.AllocatedOutboundPorts)
 23072  			delete(rawMsg, key)
 23073  		case "backendAddressPool":
 23074  			err = unpopulate(val, "BackendAddressPool", &o.BackendAddressPool)
 23075  			delete(rawMsg, key)
 23076  		case "enableTcpReset":
 23077  			err = unpopulate(val, "EnableTCPReset", &o.EnableTCPReset)
 23078  			delete(rawMsg, key)
 23079  		case "frontendIPConfigurations":
 23080  			err = unpopulate(val, "FrontendIPConfigurations", &o.FrontendIPConfigurations)
 23081  			delete(rawMsg, key)
 23082  		case "idleTimeoutInMinutes":
 23083  			err = unpopulate(val, "IdleTimeoutInMinutes", &o.IdleTimeoutInMinutes)
 23084  			delete(rawMsg, key)
 23085  		case "protocol":
 23086  			err = unpopulate(val, "Protocol", &o.Protocol)
 23087  			delete(rawMsg, key)
 23088  		case "provisioningState":
 23089  			err = unpopulate(val, "ProvisioningState", &o.ProvisioningState)
 23090  			delete(rawMsg, key)
 23091  		}
 23092  		if err != nil {
 23093  			return fmt.Errorf("unmarshalling type %T: %v", o, err)
 23094  		}
 23095  	}
 23096  	return nil
 23097  }
 23098  
 23099  // MarshalJSON implements the json.Marshaller interface for type OwaspCrsExclusionEntry.
 23100  func (o OwaspCrsExclusionEntry) MarshalJSON() ([]byte, error) {
 23101  	objectMap := make(map[string]any)
 23102  	populate(objectMap, "exclusionManagedRuleSets", o.ExclusionManagedRuleSets)
 23103  	populate(objectMap, "matchVariable", o.MatchVariable)
 23104  	populate(objectMap, "selector", o.Selector)
 23105  	populate(objectMap, "selectorMatchOperator", o.SelectorMatchOperator)
 23106  	return json.Marshal(objectMap)
 23107  }
 23108  
 23109  // UnmarshalJSON implements the json.Unmarshaller interface for type OwaspCrsExclusionEntry.
 23110  func (o *OwaspCrsExclusionEntry) UnmarshalJSON(data []byte) error {
 23111  	var rawMsg map[string]json.RawMessage
 23112  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 23113  		return fmt.Errorf("unmarshalling type %T: %v", o, err)
 23114  	}
 23115  	for key, val := range rawMsg {
 23116  		var err error
 23117  		switch key {
 23118  		case "exclusionManagedRuleSets":
 23119  			err = unpopulate(val, "ExclusionManagedRuleSets", &o.ExclusionManagedRuleSets)
 23120  			delete(rawMsg, key)
 23121  		case "matchVariable":
 23122  			err = unpopulate(val, "MatchVariable", &o.MatchVariable)
 23123  			delete(rawMsg, key)
 23124  		case "selector":
 23125  			err = unpopulate(val, "Selector", &o.Selector)
 23126  			delete(rawMsg, key)
 23127  		case "selectorMatchOperator":
 23128  			err = unpopulate(val, "SelectorMatchOperator", &o.SelectorMatchOperator)
 23129  			delete(rawMsg, key)
 23130  		}
 23131  		if err != nil {
 23132  			return fmt.Errorf("unmarshalling type %T: %v", o, err)
 23133  		}
 23134  	}
 23135  	return nil
 23136  }
 23137  
 23138  // MarshalJSON implements the json.Marshaller interface for type P2SConnectionConfiguration.
 23139  func (p P2SConnectionConfiguration) MarshalJSON() ([]byte, error) {
 23140  	objectMap := make(map[string]any)
 23141  	populate(objectMap, "etag", p.Etag)
 23142  	populate(objectMap, "id", p.ID)
 23143  	populate(objectMap, "name", p.Name)
 23144  	populate(objectMap, "properties", p.Properties)
 23145  	return json.Marshal(objectMap)
 23146  }
 23147  
 23148  // UnmarshalJSON implements the json.Unmarshaller interface for type P2SConnectionConfiguration.
 23149  func (p *P2SConnectionConfiguration) UnmarshalJSON(data []byte) error {
 23150  	var rawMsg map[string]json.RawMessage
 23151  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 23152  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23153  	}
 23154  	for key, val := range rawMsg {
 23155  		var err error
 23156  		switch key {
 23157  		case "etag":
 23158  			err = unpopulate(val, "Etag", &p.Etag)
 23159  			delete(rawMsg, key)
 23160  		case "id":
 23161  			err = unpopulate(val, "ID", &p.ID)
 23162  			delete(rawMsg, key)
 23163  		case "name":
 23164  			err = unpopulate(val, "Name", &p.Name)
 23165  			delete(rawMsg, key)
 23166  		case "properties":
 23167  			err = unpopulate(val, "Properties", &p.Properties)
 23168  			delete(rawMsg, key)
 23169  		}
 23170  		if err != nil {
 23171  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23172  		}
 23173  	}
 23174  	return nil
 23175  }
 23176  
 23177  // MarshalJSON implements the json.Marshaller interface for type P2SConnectionConfigurationProperties.
 23178  func (p P2SConnectionConfigurationProperties) MarshalJSON() ([]byte, error) {
 23179  	objectMap := make(map[string]any)
 23180  	populate(objectMap, "configurationPolicyGroupAssociations", p.ConfigurationPolicyGroupAssociations)
 23181  	populate(objectMap, "enableInternetSecurity", p.EnableInternetSecurity)
 23182  	populate(objectMap, "previousConfigurationPolicyGroupAssociations", p.PreviousConfigurationPolicyGroupAssociations)
 23183  	populate(objectMap, "provisioningState", p.ProvisioningState)
 23184  	populate(objectMap, "routingConfiguration", p.RoutingConfiguration)
 23185  	populate(objectMap, "vpnClientAddressPool", p.VPNClientAddressPool)
 23186  	return json.Marshal(objectMap)
 23187  }
 23188  
 23189  // UnmarshalJSON implements the json.Unmarshaller interface for type P2SConnectionConfigurationProperties.
 23190  func (p *P2SConnectionConfigurationProperties) UnmarshalJSON(data []byte) error {
 23191  	var rawMsg map[string]json.RawMessage
 23192  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 23193  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23194  	}
 23195  	for key, val := range rawMsg {
 23196  		var err error
 23197  		switch key {
 23198  		case "configurationPolicyGroupAssociations":
 23199  			err = unpopulate(val, "ConfigurationPolicyGroupAssociations", &p.ConfigurationPolicyGroupAssociations)
 23200  			delete(rawMsg, key)
 23201  		case "enableInternetSecurity":
 23202  			err = unpopulate(val, "EnableInternetSecurity", &p.EnableInternetSecurity)
 23203  			delete(rawMsg, key)
 23204  		case "previousConfigurationPolicyGroupAssociations":
 23205  			err = unpopulate(val, "PreviousConfigurationPolicyGroupAssociations", &p.PreviousConfigurationPolicyGroupAssociations)
 23206  			delete(rawMsg, key)
 23207  		case "provisioningState":
 23208  			err = unpopulate(val, "ProvisioningState", &p.ProvisioningState)
 23209  			delete(rawMsg, key)
 23210  		case "routingConfiguration":
 23211  			err = unpopulate(val, "RoutingConfiguration", &p.RoutingConfiguration)
 23212  			delete(rawMsg, key)
 23213  		case "vpnClientAddressPool":
 23214  			err = unpopulate(val, "VPNClientAddressPool", &p.VPNClientAddressPool)
 23215  			delete(rawMsg, key)
 23216  		}
 23217  		if err != nil {
 23218  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23219  		}
 23220  	}
 23221  	return nil
 23222  }
 23223  
 23224  // MarshalJSON implements the json.Marshaller interface for type P2SVPNConnectionHealth.
 23225  func (p P2SVPNConnectionHealth) MarshalJSON() ([]byte, error) {
 23226  	objectMap := make(map[string]any)
 23227  	populate(objectMap, "sasUrl", p.SasURL)
 23228  	return json.Marshal(objectMap)
 23229  }
 23230  
 23231  // UnmarshalJSON implements the json.Unmarshaller interface for type P2SVPNConnectionHealth.
 23232  func (p *P2SVPNConnectionHealth) UnmarshalJSON(data []byte) error {
 23233  	var rawMsg map[string]json.RawMessage
 23234  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 23235  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23236  	}
 23237  	for key, val := range rawMsg {
 23238  		var err error
 23239  		switch key {
 23240  		case "sasUrl":
 23241  			err = unpopulate(val, "SasURL", &p.SasURL)
 23242  			delete(rawMsg, key)
 23243  		}
 23244  		if err != nil {
 23245  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23246  		}
 23247  	}
 23248  	return nil
 23249  }
 23250  
 23251  // MarshalJSON implements the json.Marshaller interface for type P2SVPNConnectionHealthRequest.
 23252  func (p P2SVPNConnectionHealthRequest) MarshalJSON() ([]byte, error) {
 23253  	objectMap := make(map[string]any)
 23254  	populate(objectMap, "outputBlobSasUrl", p.OutputBlobSasURL)
 23255  	populate(objectMap, "vpnUserNamesFilter", p.VPNUserNamesFilter)
 23256  	return json.Marshal(objectMap)
 23257  }
 23258  
 23259  // UnmarshalJSON implements the json.Unmarshaller interface for type P2SVPNConnectionHealthRequest.
 23260  func (p *P2SVPNConnectionHealthRequest) UnmarshalJSON(data []byte) error {
 23261  	var rawMsg map[string]json.RawMessage
 23262  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 23263  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23264  	}
 23265  	for key, val := range rawMsg {
 23266  		var err error
 23267  		switch key {
 23268  		case "outputBlobSasUrl":
 23269  			err = unpopulate(val, "OutputBlobSasURL", &p.OutputBlobSasURL)
 23270  			delete(rawMsg, key)
 23271  		case "vpnUserNamesFilter":
 23272  			err = unpopulate(val, "VPNUserNamesFilter", &p.VPNUserNamesFilter)
 23273  			delete(rawMsg, key)
 23274  		}
 23275  		if err != nil {
 23276  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23277  		}
 23278  	}
 23279  	return nil
 23280  }
 23281  
 23282  // MarshalJSON implements the json.Marshaller interface for type P2SVPNConnectionRequest.
 23283  func (p P2SVPNConnectionRequest) MarshalJSON() ([]byte, error) {
 23284  	objectMap := make(map[string]any)
 23285  	populate(objectMap, "vpnConnectionIds", p.VPNConnectionIDs)
 23286  	return json.Marshal(objectMap)
 23287  }
 23288  
 23289  // UnmarshalJSON implements the json.Unmarshaller interface for type P2SVPNConnectionRequest.
 23290  func (p *P2SVPNConnectionRequest) UnmarshalJSON(data []byte) error {
 23291  	var rawMsg map[string]json.RawMessage
 23292  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 23293  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23294  	}
 23295  	for key, val := range rawMsg {
 23296  		var err error
 23297  		switch key {
 23298  		case "vpnConnectionIds":
 23299  			err = unpopulate(val, "VPNConnectionIDs", &p.VPNConnectionIDs)
 23300  			delete(rawMsg, key)
 23301  		}
 23302  		if err != nil {
 23303  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23304  		}
 23305  	}
 23306  	return nil
 23307  }
 23308  
 23309  // MarshalJSON implements the json.Marshaller interface for type P2SVPNGateway.
 23310  func (p P2SVPNGateway) MarshalJSON() ([]byte, error) {
 23311  	objectMap := make(map[string]any)
 23312  	populate(objectMap, "etag", p.Etag)
 23313  	populate(objectMap, "id", p.ID)
 23314  	populate(objectMap, "location", p.Location)
 23315  	populate(objectMap, "name", p.Name)
 23316  	populate(objectMap, "properties", p.Properties)
 23317  	populate(objectMap, "tags", p.Tags)
 23318  	populate(objectMap, "type", p.Type)
 23319  	return json.Marshal(objectMap)
 23320  }
 23321  
 23322  // UnmarshalJSON implements the json.Unmarshaller interface for type P2SVPNGateway.
 23323  func (p *P2SVPNGateway) UnmarshalJSON(data []byte) error {
 23324  	var rawMsg map[string]json.RawMessage
 23325  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 23326  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23327  	}
 23328  	for key, val := range rawMsg {
 23329  		var err error
 23330  		switch key {
 23331  		case "etag":
 23332  			err = unpopulate(val, "Etag", &p.Etag)
 23333  			delete(rawMsg, key)
 23334  		case "id":
 23335  			err = unpopulate(val, "ID", &p.ID)
 23336  			delete(rawMsg, key)
 23337  		case "location":
 23338  			err = unpopulate(val, "Location", &p.Location)
 23339  			delete(rawMsg, key)
 23340  		case "name":
 23341  			err = unpopulate(val, "Name", &p.Name)
 23342  			delete(rawMsg, key)
 23343  		case "properties":
 23344  			err = unpopulate(val, "Properties", &p.Properties)
 23345  			delete(rawMsg, key)
 23346  		case "tags":
 23347  			err = unpopulate(val, "Tags", &p.Tags)
 23348  			delete(rawMsg, key)
 23349  		case "type":
 23350  			err = unpopulate(val, "Type", &p.Type)
 23351  			delete(rawMsg, key)
 23352  		}
 23353  		if err != nil {
 23354  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23355  		}
 23356  	}
 23357  	return nil
 23358  }
 23359  
 23360  // MarshalJSON implements the json.Marshaller interface for type P2SVPNGatewayProperties.
 23361  func (p P2SVPNGatewayProperties) MarshalJSON() ([]byte, error) {
 23362  	objectMap := make(map[string]any)
 23363  	populate(objectMap, "customDnsServers", p.CustomDNSServers)
 23364  	populate(objectMap, "isRoutingPreferenceInternet", p.IsRoutingPreferenceInternet)
 23365  	populate(objectMap, "p2SConnectionConfigurations", p.P2SConnectionConfigurations)
 23366  	populate(objectMap, "provisioningState", p.ProvisioningState)
 23367  	populate(objectMap, "vpnClientConnectionHealth", p.VPNClientConnectionHealth)
 23368  	populate(objectMap, "vpnGatewayScaleUnit", p.VPNGatewayScaleUnit)
 23369  	populate(objectMap, "vpnServerConfiguration", p.VPNServerConfiguration)
 23370  	populate(objectMap, "virtualHub", p.VirtualHub)
 23371  	return json.Marshal(objectMap)
 23372  }
 23373  
 23374  // UnmarshalJSON implements the json.Unmarshaller interface for type P2SVPNGatewayProperties.
 23375  func (p *P2SVPNGatewayProperties) UnmarshalJSON(data []byte) error {
 23376  	var rawMsg map[string]json.RawMessage
 23377  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 23378  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23379  	}
 23380  	for key, val := range rawMsg {
 23381  		var err error
 23382  		switch key {
 23383  		case "customDnsServers":
 23384  			err = unpopulate(val, "CustomDNSServers", &p.CustomDNSServers)
 23385  			delete(rawMsg, key)
 23386  		case "isRoutingPreferenceInternet":
 23387  			err = unpopulate(val, "IsRoutingPreferenceInternet", &p.IsRoutingPreferenceInternet)
 23388  			delete(rawMsg, key)
 23389  		case "p2SConnectionConfigurations":
 23390  			err = unpopulate(val, "P2SConnectionConfigurations", &p.P2SConnectionConfigurations)
 23391  			delete(rawMsg, key)
 23392  		case "provisioningState":
 23393  			err = unpopulate(val, "ProvisioningState", &p.ProvisioningState)
 23394  			delete(rawMsg, key)
 23395  		case "vpnClientConnectionHealth":
 23396  			err = unpopulate(val, "VPNClientConnectionHealth", &p.VPNClientConnectionHealth)
 23397  			delete(rawMsg, key)
 23398  		case "vpnGatewayScaleUnit":
 23399  			err = unpopulate(val, "VPNGatewayScaleUnit", &p.VPNGatewayScaleUnit)
 23400  			delete(rawMsg, key)
 23401  		case "vpnServerConfiguration":
 23402  			err = unpopulate(val, "VPNServerConfiguration", &p.VPNServerConfiguration)
 23403  			delete(rawMsg, key)
 23404  		case "virtualHub":
 23405  			err = unpopulate(val, "VirtualHub", &p.VirtualHub)
 23406  			delete(rawMsg, key)
 23407  		}
 23408  		if err != nil {
 23409  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23410  		}
 23411  	}
 23412  	return nil
 23413  }
 23414  
 23415  // MarshalJSON implements the json.Marshaller interface for type P2SVPNProfileParameters.
 23416  func (p P2SVPNProfileParameters) MarshalJSON() ([]byte, error) {
 23417  	objectMap := make(map[string]any)
 23418  	populate(objectMap, "authenticationMethod", p.AuthenticationMethod)
 23419  	return json.Marshal(objectMap)
 23420  }
 23421  
 23422  // UnmarshalJSON implements the json.Unmarshaller interface for type P2SVPNProfileParameters.
 23423  func (p *P2SVPNProfileParameters) UnmarshalJSON(data []byte) error {
 23424  	var rawMsg map[string]json.RawMessage
 23425  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 23426  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23427  	}
 23428  	for key, val := range rawMsg {
 23429  		var err error
 23430  		switch key {
 23431  		case "authenticationMethod":
 23432  			err = unpopulate(val, "AuthenticationMethod", &p.AuthenticationMethod)
 23433  			delete(rawMsg, key)
 23434  		}
 23435  		if err != nil {
 23436  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23437  		}
 23438  	}
 23439  	return nil
 23440  }
 23441  
 23442  // MarshalJSON implements the json.Marshaller interface for type PacketCapture.
 23443  func (p PacketCapture) MarshalJSON() ([]byte, error) {
 23444  	objectMap := make(map[string]any)
 23445  	populate(objectMap, "properties", p.Properties)
 23446  	return json.Marshal(objectMap)
 23447  }
 23448  
 23449  // UnmarshalJSON implements the json.Unmarshaller interface for type PacketCapture.
 23450  func (p *PacketCapture) UnmarshalJSON(data []byte) error {
 23451  	var rawMsg map[string]json.RawMessage
 23452  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 23453  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23454  	}
 23455  	for key, val := range rawMsg {
 23456  		var err error
 23457  		switch key {
 23458  		case "properties":
 23459  			err = unpopulate(val, "Properties", &p.Properties)
 23460  			delete(rawMsg, key)
 23461  		}
 23462  		if err != nil {
 23463  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23464  		}
 23465  	}
 23466  	return nil
 23467  }
 23468  
 23469  // MarshalJSON implements the json.Marshaller interface for type PacketCaptureFilter.
 23470  func (p PacketCaptureFilter) MarshalJSON() ([]byte, error) {
 23471  	objectMap := make(map[string]any)
 23472  	populate(objectMap, "localIPAddress", p.LocalIPAddress)
 23473  	populate(objectMap, "localPort", p.LocalPort)
 23474  	populate(objectMap, "protocol", p.Protocol)
 23475  	populate(objectMap, "remoteIPAddress", p.RemoteIPAddress)
 23476  	populate(objectMap, "remotePort", p.RemotePort)
 23477  	return json.Marshal(objectMap)
 23478  }
 23479  
 23480  // UnmarshalJSON implements the json.Unmarshaller interface for type PacketCaptureFilter.
 23481  func (p *PacketCaptureFilter) UnmarshalJSON(data []byte) error {
 23482  	var rawMsg map[string]json.RawMessage
 23483  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 23484  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23485  	}
 23486  	for key, val := range rawMsg {
 23487  		var err error
 23488  		switch key {
 23489  		case "localIPAddress":
 23490  			err = unpopulate(val, "LocalIPAddress", &p.LocalIPAddress)
 23491  			delete(rawMsg, key)
 23492  		case "localPort":
 23493  			err = unpopulate(val, "LocalPort", &p.LocalPort)
 23494  			delete(rawMsg, key)
 23495  		case "protocol":
 23496  			err = unpopulate(val, "Protocol", &p.Protocol)
 23497  			delete(rawMsg, key)
 23498  		case "remoteIPAddress":
 23499  			err = unpopulate(val, "RemoteIPAddress", &p.RemoteIPAddress)
 23500  			delete(rawMsg, key)
 23501  		case "remotePort":
 23502  			err = unpopulate(val, "RemotePort", &p.RemotePort)
 23503  			delete(rawMsg, key)
 23504  		}
 23505  		if err != nil {
 23506  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23507  		}
 23508  	}
 23509  	return nil
 23510  }
 23511  
 23512  // MarshalJSON implements the json.Marshaller interface for type PacketCaptureListResult.
 23513  func (p PacketCaptureListResult) MarshalJSON() ([]byte, error) {
 23514  	objectMap := make(map[string]any)
 23515  	populate(objectMap, "value", p.Value)
 23516  	return json.Marshal(objectMap)
 23517  }
 23518  
 23519  // UnmarshalJSON implements the json.Unmarshaller interface for type PacketCaptureListResult.
 23520  func (p *PacketCaptureListResult) UnmarshalJSON(data []byte) error {
 23521  	var rawMsg map[string]json.RawMessage
 23522  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 23523  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23524  	}
 23525  	for key, val := range rawMsg {
 23526  		var err error
 23527  		switch key {
 23528  		case "value":
 23529  			err = unpopulate(val, "Value", &p.Value)
 23530  			delete(rawMsg, key)
 23531  		}
 23532  		if err != nil {
 23533  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23534  		}
 23535  	}
 23536  	return nil
 23537  }
 23538  
 23539  // MarshalJSON implements the json.Marshaller interface for type PacketCaptureMachineScope.
 23540  func (p PacketCaptureMachineScope) MarshalJSON() ([]byte, error) {
 23541  	objectMap := make(map[string]any)
 23542  	populate(objectMap, "exclude", p.Exclude)
 23543  	populate(objectMap, "include", p.Include)
 23544  	return json.Marshal(objectMap)
 23545  }
 23546  
 23547  // UnmarshalJSON implements the json.Unmarshaller interface for type PacketCaptureMachineScope.
 23548  func (p *PacketCaptureMachineScope) UnmarshalJSON(data []byte) error {
 23549  	var rawMsg map[string]json.RawMessage
 23550  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 23551  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23552  	}
 23553  	for key, val := range rawMsg {
 23554  		var err error
 23555  		switch key {
 23556  		case "exclude":
 23557  			err = unpopulate(val, "Exclude", &p.Exclude)
 23558  			delete(rawMsg, key)
 23559  		case "include":
 23560  			err = unpopulate(val, "Include", &p.Include)
 23561  			delete(rawMsg, key)
 23562  		}
 23563  		if err != nil {
 23564  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23565  		}
 23566  	}
 23567  	return nil
 23568  }
 23569  
 23570  // MarshalJSON implements the json.Marshaller interface for type PacketCaptureParameters.
 23571  func (p PacketCaptureParameters) MarshalJSON() ([]byte, error) {
 23572  	objectMap := make(map[string]any)
 23573  	populate(objectMap, "bytesToCapturePerPacket", p.BytesToCapturePerPacket)
 23574  	populate(objectMap, "captureSettings", p.CaptureSettings)
 23575  	populate(objectMap, "continuousCapture", p.ContinuousCapture)
 23576  	populate(objectMap, "filters", p.Filters)
 23577  	populate(objectMap, "scope", p.Scope)
 23578  	populate(objectMap, "storageLocation", p.StorageLocation)
 23579  	populate(objectMap, "target", p.Target)
 23580  	populate(objectMap, "targetType", p.TargetType)
 23581  	populate(objectMap, "timeLimitInSeconds", p.TimeLimitInSeconds)
 23582  	populate(objectMap, "totalBytesPerSession", p.TotalBytesPerSession)
 23583  	return json.Marshal(objectMap)
 23584  }
 23585  
 23586  // UnmarshalJSON implements the json.Unmarshaller interface for type PacketCaptureParameters.
 23587  func (p *PacketCaptureParameters) UnmarshalJSON(data []byte) error {
 23588  	var rawMsg map[string]json.RawMessage
 23589  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 23590  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23591  	}
 23592  	for key, val := range rawMsg {
 23593  		var err error
 23594  		switch key {
 23595  		case "bytesToCapturePerPacket":
 23596  			err = unpopulate(val, "BytesToCapturePerPacket", &p.BytesToCapturePerPacket)
 23597  			delete(rawMsg, key)
 23598  		case "captureSettings":
 23599  			err = unpopulate(val, "CaptureSettings", &p.CaptureSettings)
 23600  			delete(rawMsg, key)
 23601  		case "continuousCapture":
 23602  			err = unpopulate(val, "ContinuousCapture", &p.ContinuousCapture)
 23603  			delete(rawMsg, key)
 23604  		case "filters":
 23605  			err = unpopulate(val, "Filters", &p.Filters)
 23606  			delete(rawMsg, key)
 23607  		case "scope":
 23608  			err = unpopulate(val, "Scope", &p.Scope)
 23609  			delete(rawMsg, key)
 23610  		case "storageLocation":
 23611  			err = unpopulate(val, "StorageLocation", &p.StorageLocation)
 23612  			delete(rawMsg, key)
 23613  		case "target":
 23614  			err = unpopulate(val, "Target", &p.Target)
 23615  			delete(rawMsg, key)
 23616  		case "targetType":
 23617  			err = unpopulate(val, "TargetType", &p.TargetType)
 23618  			delete(rawMsg, key)
 23619  		case "timeLimitInSeconds":
 23620  			err = unpopulate(val, "TimeLimitInSeconds", &p.TimeLimitInSeconds)
 23621  			delete(rawMsg, key)
 23622  		case "totalBytesPerSession":
 23623  			err = unpopulate(val, "TotalBytesPerSession", &p.TotalBytesPerSession)
 23624  			delete(rawMsg, key)
 23625  		}
 23626  		if err != nil {
 23627  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23628  		}
 23629  	}
 23630  	return nil
 23631  }
 23632  
 23633  // MarshalJSON implements the json.Marshaller interface for type PacketCaptureQueryStatusResult.
 23634  func (p PacketCaptureQueryStatusResult) MarshalJSON() ([]byte, error) {
 23635  	objectMap := make(map[string]any)
 23636  	populateDateTimeRFC3339(objectMap, "captureStartTime", p.CaptureStartTime)
 23637  	populate(objectMap, "id", p.ID)
 23638  	populate(objectMap, "name", p.Name)
 23639  	populate(objectMap, "packetCaptureError", p.PacketCaptureError)
 23640  	populate(objectMap, "packetCaptureStatus", p.PacketCaptureStatus)
 23641  	populate(objectMap, "stopReason", p.StopReason)
 23642  	return json.Marshal(objectMap)
 23643  }
 23644  
 23645  // UnmarshalJSON implements the json.Unmarshaller interface for type PacketCaptureQueryStatusResult.
 23646  func (p *PacketCaptureQueryStatusResult) UnmarshalJSON(data []byte) error {
 23647  	var rawMsg map[string]json.RawMessage
 23648  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 23649  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23650  	}
 23651  	for key, val := range rawMsg {
 23652  		var err error
 23653  		switch key {
 23654  		case "captureStartTime":
 23655  			err = unpopulateDateTimeRFC3339(val, "CaptureStartTime", &p.CaptureStartTime)
 23656  			delete(rawMsg, key)
 23657  		case "id":
 23658  			err = unpopulate(val, "ID", &p.ID)
 23659  			delete(rawMsg, key)
 23660  		case "name":
 23661  			err = unpopulate(val, "Name", &p.Name)
 23662  			delete(rawMsg, key)
 23663  		case "packetCaptureError":
 23664  			err = unpopulate(val, "PacketCaptureError", &p.PacketCaptureError)
 23665  			delete(rawMsg, key)
 23666  		case "packetCaptureStatus":
 23667  			err = unpopulate(val, "PacketCaptureStatus", &p.PacketCaptureStatus)
 23668  			delete(rawMsg, key)
 23669  		case "stopReason":
 23670  			err = unpopulate(val, "StopReason", &p.StopReason)
 23671  			delete(rawMsg, key)
 23672  		}
 23673  		if err != nil {
 23674  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23675  		}
 23676  	}
 23677  	return nil
 23678  }
 23679  
 23680  // MarshalJSON implements the json.Marshaller interface for type PacketCaptureResult.
 23681  func (p PacketCaptureResult) MarshalJSON() ([]byte, error) {
 23682  	objectMap := make(map[string]any)
 23683  	populate(objectMap, "etag", p.Etag)
 23684  	populate(objectMap, "id", p.ID)
 23685  	populate(objectMap, "name", p.Name)
 23686  	populate(objectMap, "properties", p.Properties)
 23687  	return json.Marshal(objectMap)
 23688  }
 23689  
 23690  // UnmarshalJSON implements the json.Unmarshaller interface for type PacketCaptureResult.
 23691  func (p *PacketCaptureResult) UnmarshalJSON(data []byte) error {
 23692  	var rawMsg map[string]json.RawMessage
 23693  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 23694  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23695  	}
 23696  	for key, val := range rawMsg {
 23697  		var err error
 23698  		switch key {
 23699  		case "etag":
 23700  			err = unpopulate(val, "Etag", &p.Etag)
 23701  			delete(rawMsg, key)
 23702  		case "id":
 23703  			err = unpopulate(val, "ID", &p.ID)
 23704  			delete(rawMsg, key)
 23705  		case "name":
 23706  			err = unpopulate(val, "Name", &p.Name)
 23707  			delete(rawMsg, key)
 23708  		case "properties":
 23709  			err = unpopulate(val, "Properties", &p.Properties)
 23710  			delete(rawMsg, key)
 23711  		}
 23712  		if err != nil {
 23713  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23714  		}
 23715  	}
 23716  	return nil
 23717  }
 23718  
 23719  // MarshalJSON implements the json.Marshaller interface for type PacketCaptureResultProperties.
 23720  func (p PacketCaptureResultProperties) MarshalJSON() ([]byte, error) {
 23721  	objectMap := make(map[string]any)
 23722  	populate(objectMap, "bytesToCapturePerPacket", p.BytesToCapturePerPacket)
 23723  	populate(objectMap, "captureSettings", p.CaptureSettings)
 23724  	populate(objectMap, "continuousCapture", p.ContinuousCapture)
 23725  	populate(objectMap, "filters", p.Filters)
 23726  	populate(objectMap, "provisioningState", p.ProvisioningState)
 23727  	populate(objectMap, "scope", p.Scope)
 23728  	populate(objectMap, "storageLocation", p.StorageLocation)
 23729  	populate(objectMap, "target", p.Target)
 23730  	populate(objectMap, "targetType", p.TargetType)
 23731  	populate(objectMap, "timeLimitInSeconds", p.TimeLimitInSeconds)
 23732  	populate(objectMap, "totalBytesPerSession", p.TotalBytesPerSession)
 23733  	return json.Marshal(objectMap)
 23734  }
 23735  
 23736  // UnmarshalJSON implements the json.Unmarshaller interface for type PacketCaptureResultProperties.
 23737  func (p *PacketCaptureResultProperties) UnmarshalJSON(data []byte) error {
 23738  	var rawMsg map[string]json.RawMessage
 23739  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 23740  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23741  	}
 23742  	for key, val := range rawMsg {
 23743  		var err error
 23744  		switch key {
 23745  		case "bytesToCapturePerPacket":
 23746  			err = unpopulate(val, "BytesToCapturePerPacket", &p.BytesToCapturePerPacket)
 23747  			delete(rawMsg, key)
 23748  		case "captureSettings":
 23749  			err = unpopulate(val, "CaptureSettings", &p.CaptureSettings)
 23750  			delete(rawMsg, key)
 23751  		case "continuousCapture":
 23752  			err = unpopulate(val, "ContinuousCapture", &p.ContinuousCapture)
 23753  			delete(rawMsg, key)
 23754  		case "filters":
 23755  			err = unpopulate(val, "Filters", &p.Filters)
 23756  			delete(rawMsg, key)
 23757  		case "provisioningState":
 23758  			err = unpopulate(val, "ProvisioningState", &p.ProvisioningState)
 23759  			delete(rawMsg, key)
 23760  		case "scope":
 23761  			err = unpopulate(val, "Scope", &p.Scope)
 23762  			delete(rawMsg, key)
 23763  		case "storageLocation":
 23764  			err = unpopulate(val, "StorageLocation", &p.StorageLocation)
 23765  			delete(rawMsg, key)
 23766  		case "target":
 23767  			err = unpopulate(val, "Target", &p.Target)
 23768  			delete(rawMsg, key)
 23769  		case "targetType":
 23770  			err = unpopulate(val, "TargetType", &p.TargetType)
 23771  			delete(rawMsg, key)
 23772  		case "timeLimitInSeconds":
 23773  			err = unpopulate(val, "TimeLimitInSeconds", &p.TimeLimitInSeconds)
 23774  			delete(rawMsg, key)
 23775  		case "totalBytesPerSession":
 23776  			err = unpopulate(val, "TotalBytesPerSession", &p.TotalBytesPerSession)
 23777  			delete(rawMsg, key)
 23778  		}
 23779  		if err != nil {
 23780  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23781  		}
 23782  	}
 23783  	return nil
 23784  }
 23785  
 23786  // MarshalJSON implements the json.Marshaller interface for type PacketCaptureSettings.
 23787  func (p PacketCaptureSettings) MarshalJSON() ([]byte, error) {
 23788  	objectMap := make(map[string]any)
 23789  	populate(objectMap, "fileCount", p.FileCount)
 23790  	populate(objectMap, "fileSizeInBytes", p.FileSizeInBytes)
 23791  	populate(objectMap, "sessionTimeLimitInSeconds", p.SessionTimeLimitInSeconds)
 23792  	return json.Marshal(objectMap)
 23793  }
 23794  
 23795  // UnmarshalJSON implements the json.Unmarshaller interface for type PacketCaptureSettings.
 23796  func (p *PacketCaptureSettings) UnmarshalJSON(data []byte) error {
 23797  	var rawMsg map[string]json.RawMessage
 23798  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 23799  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23800  	}
 23801  	for key, val := range rawMsg {
 23802  		var err error
 23803  		switch key {
 23804  		case "fileCount":
 23805  			err = unpopulate(val, "FileCount", &p.FileCount)
 23806  			delete(rawMsg, key)
 23807  		case "fileSizeInBytes":
 23808  			err = unpopulate(val, "FileSizeInBytes", &p.FileSizeInBytes)
 23809  			delete(rawMsg, key)
 23810  		case "sessionTimeLimitInSeconds":
 23811  			err = unpopulate(val, "SessionTimeLimitInSeconds", &p.SessionTimeLimitInSeconds)
 23812  			delete(rawMsg, key)
 23813  		}
 23814  		if err != nil {
 23815  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23816  		}
 23817  	}
 23818  	return nil
 23819  }
 23820  
 23821  // MarshalJSON implements the json.Marshaller interface for type PacketCaptureStorageLocation.
 23822  func (p PacketCaptureStorageLocation) MarshalJSON() ([]byte, error) {
 23823  	objectMap := make(map[string]any)
 23824  	populate(objectMap, "filePath", p.FilePath)
 23825  	populate(objectMap, "localPath", p.LocalPath)
 23826  	populate(objectMap, "storageId", p.StorageID)
 23827  	populate(objectMap, "storagePath", p.StoragePath)
 23828  	return json.Marshal(objectMap)
 23829  }
 23830  
 23831  // UnmarshalJSON implements the json.Unmarshaller interface for type PacketCaptureStorageLocation.
 23832  func (p *PacketCaptureStorageLocation) UnmarshalJSON(data []byte) error {
 23833  	var rawMsg map[string]json.RawMessage
 23834  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 23835  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23836  	}
 23837  	for key, val := range rawMsg {
 23838  		var err error
 23839  		switch key {
 23840  		case "filePath":
 23841  			err = unpopulate(val, "FilePath", &p.FilePath)
 23842  			delete(rawMsg, key)
 23843  		case "localPath":
 23844  			err = unpopulate(val, "LocalPath", &p.LocalPath)
 23845  			delete(rawMsg, key)
 23846  		case "storageId":
 23847  			err = unpopulate(val, "StorageID", &p.StorageID)
 23848  			delete(rawMsg, key)
 23849  		case "storagePath":
 23850  			err = unpopulate(val, "StoragePath", &p.StoragePath)
 23851  			delete(rawMsg, key)
 23852  		}
 23853  		if err != nil {
 23854  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23855  		}
 23856  	}
 23857  	return nil
 23858  }
 23859  
 23860  // MarshalJSON implements the json.Marshaller interface for type Parameter.
 23861  func (p Parameter) MarshalJSON() ([]byte, error) {
 23862  	objectMap := make(map[string]any)
 23863  	populate(objectMap, "asPath", p.AsPath)
 23864  	populate(objectMap, "community", p.Community)
 23865  	populate(objectMap, "routePrefix", p.RoutePrefix)
 23866  	return json.Marshal(objectMap)
 23867  }
 23868  
 23869  // UnmarshalJSON implements the json.Unmarshaller interface for type Parameter.
 23870  func (p *Parameter) UnmarshalJSON(data []byte) error {
 23871  	var rawMsg map[string]json.RawMessage
 23872  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 23873  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23874  	}
 23875  	for key, val := range rawMsg {
 23876  		var err error
 23877  		switch key {
 23878  		case "asPath":
 23879  			err = unpopulate(val, "AsPath", &p.AsPath)
 23880  			delete(rawMsg, key)
 23881  		case "community":
 23882  			err = unpopulate(val, "Community", &p.Community)
 23883  			delete(rawMsg, key)
 23884  		case "routePrefix":
 23885  			err = unpopulate(val, "RoutePrefix", &p.RoutePrefix)
 23886  			delete(rawMsg, key)
 23887  		}
 23888  		if err != nil {
 23889  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23890  		}
 23891  	}
 23892  	return nil
 23893  }
 23894  
 23895  // MarshalJSON implements the json.Marshaller interface for type PartnerManagedResourceProperties.
 23896  func (p PartnerManagedResourceProperties) MarshalJSON() ([]byte, error) {
 23897  	objectMap := make(map[string]any)
 23898  	populate(objectMap, "id", p.ID)
 23899  	populate(objectMap, "internalLoadBalancerId", p.InternalLoadBalancerID)
 23900  	populate(objectMap, "standardLoadBalancerId", p.StandardLoadBalancerID)
 23901  	return json.Marshal(objectMap)
 23902  }
 23903  
 23904  // UnmarshalJSON implements the json.Unmarshaller interface for type PartnerManagedResourceProperties.
 23905  func (p *PartnerManagedResourceProperties) UnmarshalJSON(data []byte) error {
 23906  	var rawMsg map[string]json.RawMessage
 23907  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 23908  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23909  	}
 23910  	for key, val := range rawMsg {
 23911  		var err error
 23912  		switch key {
 23913  		case "id":
 23914  			err = unpopulate(val, "ID", &p.ID)
 23915  			delete(rawMsg, key)
 23916  		case "internalLoadBalancerId":
 23917  			err = unpopulate(val, "InternalLoadBalancerID", &p.InternalLoadBalancerID)
 23918  			delete(rawMsg, key)
 23919  		case "standardLoadBalancerId":
 23920  			err = unpopulate(val, "StandardLoadBalancerID", &p.StandardLoadBalancerID)
 23921  			delete(rawMsg, key)
 23922  		}
 23923  		if err != nil {
 23924  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23925  		}
 23926  	}
 23927  	return nil
 23928  }
 23929  
 23930  // MarshalJSON implements the json.Marshaller interface for type PatchObject.
 23931  func (p PatchObject) MarshalJSON() ([]byte, error) {
 23932  	objectMap := make(map[string]any)
 23933  	populate(objectMap, "tags", p.Tags)
 23934  	return json.Marshal(objectMap)
 23935  }
 23936  
 23937  // UnmarshalJSON implements the json.Unmarshaller interface for type PatchObject.
 23938  func (p *PatchObject) UnmarshalJSON(data []byte) error {
 23939  	var rawMsg map[string]json.RawMessage
 23940  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 23941  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23942  	}
 23943  	for key, val := range rawMsg {
 23944  		var err error
 23945  		switch key {
 23946  		case "tags":
 23947  			err = unpopulate(val, "Tags", &p.Tags)
 23948  			delete(rawMsg, key)
 23949  		}
 23950  		if err != nil {
 23951  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23952  		}
 23953  	}
 23954  	return nil
 23955  }
 23956  
 23957  // MarshalJSON implements the json.Marshaller interface for type PatchRouteFilter.
 23958  func (p PatchRouteFilter) MarshalJSON() ([]byte, error) {
 23959  	objectMap := make(map[string]any)
 23960  	populate(objectMap, "etag", p.Etag)
 23961  	populate(objectMap, "id", p.ID)
 23962  	populate(objectMap, "name", p.Name)
 23963  	populate(objectMap, "properties", p.Properties)
 23964  	populate(objectMap, "tags", p.Tags)
 23965  	populate(objectMap, "type", p.Type)
 23966  	return json.Marshal(objectMap)
 23967  }
 23968  
 23969  // UnmarshalJSON implements the json.Unmarshaller interface for type PatchRouteFilter.
 23970  func (p *PatchRouteFilter) UnmarshalJSON(data []byte) error {
 23971  	var rawMsg map[string]json.RawMessage
 23972  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 23973  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23974  	}
 23975  	for key, val := range rawMsg {
 23976  		var err error
 23977  		switch key {
 23978  		case "etag":
 23979  			err = unpopulate(val, "Etag", &p.Etag)
 23980  			delete(rawMsg, key)
 23981  		case "id":
 23982  			err = unpopulate(val, "ID", &p.ID)
 23983  			delete(rawMsg, key)
 23984  		case "name":
 23985  			err = unpopulate(val, "Name", &p.Name)
 23986  			delete(rawMsg, key)
 23987  		case "properties":
 23988  			err = unpopulate(val, "Properties", &p.Properties)
 23989  			delete(rawMsg, key)
 23990  		case "tags":
 23991  			err = unpopulate(val, "Tags", &p.Tags)
 23992  			delete(rawMsg, key)
 23993  		case "type":
 23994  			err = unpopulate(val, "Type", &p.Type)
 23995  			delete(rawMsg, key)
 23996  		}
 23997  		if err != nil {
 23998  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 23999  		}
 24000  	}
 24001  	return nil
 24002  }
 24003  
 24004  // MarshalJSON implements the json.Marshaller interface for type PatchRouteFilterRule.
 24005  func (p PatchRouteFilterRule) MarshalJSON() ([]byte, error) {
 24006  	objectMap := make(map[string]any)
 24007  	populate(objectMap, "etag", p.Etag)
 24008  	populate(objectMap, "id", p.ID)
 24009  	populate(objectMap, "name", p.Name)
 24010  	populate(objectMap, "properties", p.Properties)
 24011  	return json.Marshal(objectMap)
 24012  }
 24013  
 24014  // UnmarshalJSON implements the json.Unmarshaller interface for type PatchRouteFilterRule.
 24015  func (p *PatchRouteFilterRule) UnmarshalJSON(data []byte) error {
 24016  	var rawMsg map[string]json.RawMessage
 24017  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 24018  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24019  	}
 24020  	for key, val := range rawMsg {
 24021  		var err error
 24022  		switch key {
 24023  		case "etag":
 24024  			err = unpopulate(val, "Etag", &p.Etag)
 24025  			delete(rawMsg, key)
 24026  		case "id":
 24027  			err = unpopulate(val, "ID", &p.ID)
 24028  			delete(rawMsg, key)
 24029  		case "name":
 24030  			err = unpopulate(val, "Name", &p.Name)
 24031  			delete(rawMsg, key)
 24032  		case "properties":
 24033  			err = unpopulate(val, "Properties", &p.Properties)
 24034  			delete(rawMsg, key)
 24035  		}
 24036  		if err != nil {
 24037  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24038  		}
 24039  	}
 24040  	return nil
 24041  }
 24042  
 24043  // MarshalJSON implements the json.Marshaller interface for type PeerExpressRouteCircuitConnection.
 24044  func (p PeerExpressRouteCircuitConnection) MarshalJSON() ([]byte, error) {
 24045  	objectMap := make(map[string]any)
 24046  	populate(objectMap, "etag", p.Etag)
 24047  	populate(objectMap, "id", p.ID)
 24048  	populate(objectMap, "name", p.Name)
 24049  	populate(objectMap, "properties", p.Properties)
 24050  	populate(objectMap, "type", p.Type)
 24051  	return json.Marshal(objectMap)
 24052  }
 24053  
 24054  // UnmarshalJSON implements the json.Unmarshaller interface for type PeerExpressRouteCircuitConnection.
 24055  func (p *PeerExpressRouteCircuitConnection) UnmarshalJSON(data []byte) error {
 24056  	var rawMsg map[string]json.RawMessage
 24057  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 24058  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24059  	}
 24060  	for key, val := range rawMsg {
 24061  		var err error
 24062  		switch key {
 24063  		case "etag":
 24064  			err = unpopulate(val, "Etag", &p.Etag)
 24065  			delete(rawMsg, key)
 24066  		case "id":
 24067  			err = unpopulate(val, "ID", &p.ID)
 24068  			delete(rawMsg, key)
 24069  		case "name":
 24070  			err = unpopulate(val, "Name", &p.Name)
 24071  			delete(rawMsg, key)
 24072  		case "properties":
 24073  			err = unpopulate(val, "Properties", &p.Properties)
 24074  			delete(rawMsg, key)
 24075  		case "type":
 24076  			err = unpopulate(val, "Type", &p.Type)
 24077  			delete(rawMsg, key)
 24078  		}
 24079  		if err != nil {
 24080  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24081  		}
 24082  	}
 24083  	return nil
 24084  }
 24085  
 24086  // MarshalJSON implements the json.Marshaller interface for type PeerExpressRouteCircuitConnectionListResult.
 24087  func (p PeerExpressRouteCircuitConnectionListResult) MarshalJSON() ([]byte, error) {
 24088  	objectMap := make(map[string]any)
 24089  	populate(objectMap, "nextLink", p.NextLink)
 24090  	populate(objectMap, "value", p.Value)
 24091  	return json.Marshal(objectMap)
 24092  }
 24093  
 24094  // UnmarshalJSON implements the json.Unmarshaller interface for type PeerExpressRouteCircuitConnectionListResult.
 24095  func (p *PeerExpressRouteCircuitConnectionListResult) UnmarshalJSON(data []byte) error {
 24096  	var rawMsg map[string]json.RawMessage
 24097  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 24098  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24099  	}
 24100  	for key, val := range rawMsg {
 24101  		var err error
 24102  		switch key {
 24103  		case "nextLink":
 24104  			err = unpopulate(val, "NextLink", &p.NextLink)
 24105  			delete(rawMsg, key)
 24106  		case "value":
 24107  			err = unpopulate(val, "Value", &p.Value)
 24108  			delete(rawMsg, key)
 24109  		}
 24110  		if err != nil {
 24111  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24112  		}
 24113  	}
 24114  	return nil
 24115  }
 24116  
 24117  // MarshalJSON implements the json.Marshaller interface for type PeerExpressRouteCircuitConnectionPropertiesFormat.
 24118  func (p PeerExpressRouteCircuitConnectionPropertiesFormat) MarshalJSON() ([]byte, error) {
 24119  	objectMap := make(map[string]any)
 24120  	populate(objectMap, "addressPrefix", p.AddressPrefix)
 24121  	populate(objectMap, "authResourceGuid", p.AuthResourceGUID)
 24122  	populate(objectMap, "circuitConnectionStatus", p.CircuitConnectionStatus)
 24123  	populate(objectMap, "connectionName", p.ConnectionName)
 24124  	populate(objectMap, "expressRouteCircuitPeering", p.ExpressRouteCircuitPeering)
 24125  	populate(objectMap, "peerExpressRouteCircuitPeering", p.PeerExpressRouteCircuitPeering)
 24126  	populate(objectMap, "provisioningState", p.ProvisioningState)
 24127  	return json.Marshal(objectMap)
 24128  }
 24129  
 24130  // UnmarshalJSON implements the json.Unmarshaller interface for type PeerExpressRouteCircuitConnectionPropertiesFormat.
 24131  func (p *PeerExpressRouteCircuitConnectionPropertiesFormat) UnmarshalJSON(data []byte) error {
 24132  	var rawMsg map[string]json.RawMessage
 24133  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 24134  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24135  	}
 24136  	for key, val := range rawMsg {
 24137  		var err error
 24138  		switch key {
 24139  		case "addressPrefix":
 24140  			err = unpopulate(val, "AddressPrefix", &p.AddressPrefix)
 24141  			delete(rawMsg, key)
 24142  		case "authResourceGuid":
 24143  			err = unpopulate(val, "AuthResourceGUID", &p.AuthResourceGUID)
 24144  			delete(rawMsg, key)
 24145  		case "circuitConnectionStatus":
 24146  			err = unpopulate(val, "CircuitConnectionStatus", &p.CircuitConnectionStatus)
 24147  			delete(rawMsg, key)
 24148  		case "connectionName":
 24149  			err = unpopulate(val, "ConnectionName", &p.ConnectionName)
 24150  			delete(rawMsg, key)
 24151  		case "expressRouteCircuitPeering":
 24152  			err = unpopulate(val, "ExpressRouteCircuitPeering", &p.ExpressRouteCircuitPeering)
 24153  			delete(rawMsg, key)
 24154  		case "peerExpressRouteCircuitPeering":
 24155  			err = unpopulate(val, "PeerExpressRouteCircuitPeering", &p.PeerExpressRouteCircuitPeering)
 24156  			delete(rawMsg, key)
 24157  		case "provisioningState":
 24158  			err = unpopulate(val, "ProvisioningState", &p.ProvisioningState)
 24159  			delete(rawMsg, key)
 24160  		}
 24161  		if err != nil {
 24162  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24163  		}
 24164  	}
 24165  	return nil
 24166  }
 24167  
 24168  // MarshalJSON implements the json.Marshaller interface for type PeerRoute.
 24169  func (p PeerRoute) MarshalJSON() ([]byte, error) {
 24170  	objectMap := make(map[string]any)
 24171  	populate(objectMap, "asPath", p.AsPath)
 24172  	populate(objectMap, "localAddress", p.LocalAddress)
 24173  	populate(objectMap, "network", p.Network)
 24174  	populate(objectMap, "nextHop", p.NextHop)
 24175  	populate(objectMap, "origin", p.Origin)
 24176  	populate(objectMap, "sourcePeer", p.SourcePeer)
 24177  	populate(objectMap, "weight", p.Weight)
 24178  	return json.Marshal(objectMap)
 24179  }
 24180  
 24181  // UnmarshalJSON implements the json.Unmarshaller interface for type PeerRoute.
 24182  func (p *PeerRoute) UnmarshalJSON(data []byte) error {
 24183  	var rawMsg map[string]json.RawMessage
 24184  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 24185  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24186  	}
 24187  	for key, val := range rawMsg {
 24188  		var err error
 24189  		switch key {
 24190  		case "asPath":
 24191  			err = unpopulate(val, "AsPath", &p.AsPath)
 24192  			delete(rawMsg, key)
 24193  		case "localAddress":
 24194  			err = unpopulate(val, "LocalAddress", &p.LocalAddress)
 24195  			delete(rawMsg, key)
 24196  		case "network":
 24197  			err = unpopulate(val, "Network", &p.Network)
 24198  			delete(rawMsg, key)
 24199  		case "nextHop":
 24200  			err = unpopulate(val, "NextHop", &p.NextHop)
 24201  			delete(rawMsg, key)
 24202  		case "origin":
 24203  			err = unpopulate(val, "Origin", &p.Origin)
 24204  			delete(rawMsg, key)
 24205  		case "sourcePeer":
 24206  			err = unpopulate(val, "SourcePeer", &p.SourcePeer)
 24207  			delete(rawMsg, key)
 24208  		case "weight":
 24209  			err = unpopulate(val, "Weight", &p.Weight)
 24210  			delete(rawMsg, key)
 24211  		}
 24212  		if err != nil {
 24213  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24214  		}
 24215  	}
 24216  	return nil
 24217  }
 24218  
 24219  // MarshalJSON implements the json.Marshaller interface for type PolicySettings.
 24220  func (p PolicySettings) MarshalJSON() ([]byte, error) {
 24221  	objectMap := make(map[string]any)
 24222  	populate(objectMap, "customBlockResponseBody", p.CustomBlockResponseBody)
 24223  	populate(objectMap, "customBlockResponseStatusCode", p.CustomBlockResponseStatusCode)
 24224  	populate(objectMap, "fileUploadEnforcement", p.FileUploadEnforcement)
 24225  	populate(objectMap, "fileUploadLimitInMb", p.FileUploadLimitInMb)
 24226  	populate(objectMap, "jsChallengeCookieExpirationInMins", p.JsChallengeCookieExpirationInMins)
 24227  	populate(objectMap, "logScrubbing", p.LogScrubbing)
 24228  	populate(objectMap, "maxRequestBodySizeInKb", p.MaxRequestBodySizeInKb)
 24229  	populate(objectMap, "mode", p.Mode)
 24230  	populate(objectMap, "requestBodyCheck", p.RequestBodyCheck)
 24231  	populate(objectMap, "requestBodyEnforcement", p.RequestBodyEnforcement)
 24232  	populate(objectMap, "requestBodyInspectLimitInKB", p.RequestBodyInspectLimitInKB)
 24233  	populate(objectMap, "state", p.State)
 24234  	return json.Marshal(objectMap)
 24235  }
 24236  
 24237  // UnmarshalJSON implements the json.Unmarshaller interface for type PolicySettings.
 24238  func (p *PolicySettings) UnmarshalJSON(data []byte) error {
 24239  	var rawMsg map[string]json.RawMessage
 24240  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 24241  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24242  	}
 24243  	for key, val := range rawMsg {
 24244  		var err error
 24245  		switch key {
 24246  		case "customBlockResponseBody":
 24247  			err = unpopulate(val, "CustomBlockResponseBody", &p.CustomBlockResponseBody)
 24248  			delete(rawMsg, key)
 24249  		case "customBlockResponseStatusCode":
 24250  			err = unpopulate(val, "CustomBlockResponseStatusCode", &p.CustomBlockResponseStatusCode)
 24251  			delete(rawMsg, key)
 24252  		case "fileUploadEnforcement":
 24253  			err = unpopulate(val, "FileUploadEnforcement", &p.FileUploadEnforcement)
 24254  			delete(rawMsg, key)
 24255  		case "fileUploadLimitInMb":
 24256  			err = unpopulate(val, "FileUploadLimitInMb", &p.FileUploadLimitInMb)
 24257  			delete(rawMsg, key)
 24258  		case "jsChallengeCookieExpirationInMins":
 24259  			err = unpopulate(val, "JsChallengeCookieExpirationInMins", &p.JsChallengeCookieExpirationInMins)
 24260  			delete(rawMsg, key)
 24261  		case "logScrubbing":
 24262  			err = unpopulate(val, "LogScrubbing", &p.LogScrubbing)
 24263  			delete(rawMsg, key)
 24264  		case "maxRequestBodySizeInKb":
 24265  			err = unpopulate(val, "MaxRequestBodySizeInKb", &p.MaxRequestBodySizeInKb)
 24266  			delete(rawMsg, key)
 24267  		case "mode":
 24268  			err = unpopulate(val, "Mode", &p.Mode)
 24269  			delete(rawMsg, key)
 24270  		case "requestBodyCheck":
 24271  			err = unpopulate(val, "RequestBodyCheck", &p.RequestBodyCheck)
 24272  			delete(rawMsg, key)
 24273  		case "requestBodyEnforcement":
 24274  			err = unpopulate(val, "RequestBodyEnforcement", &p.RequestBodyEnforcement)
 24275  			delete(rawMsg, key)
 24276  		case "requestBodyInspectLimitInKB":
 24277  			err = unpopulate(val, "RequestBodyInspectLimitInKB", &p.RequestBodyInspectLimitInKB)
 24278  			delete(rawMsg, key)
 24279  		case "state":
 24280  			err = unpopulate(val, "State", &p.State)
 24281  			delete(rawMsg, key)
 24282  		}
 24283  		if err != nil {
 24284  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24285  		}
 24286  	}
 24287  	return nil
 24288  }
 24289  
 24290  // MarshalJSON implements the json.Marshaller interface for type PolicySettingsLogScrubbing.
 24291  func (p PolicySettingsLogScrubbing) MarshalJSON() ([]byte, error) {
 24292  	objectMap := make(map[string]any)
 24293  	populate(objectMap, "scrubbingRules", p.ScrubbingRules)
 24294  	populate(objectMap, "state", p.State)
 24295  	return json.Marshal(objectMap)
 24296  }
 24297  
 24298  // UnmarshalJSON implements the json.Unmarshaller interface for type PolicySettingsLogScrubbing.
 24299  func (p *PolicySettingsLogScrubbing) UnmarshalJSON(data []byte) error {
 24300  	var rawMsg map[string]json.RawMessage
 24301  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 24302  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24303  	}
 24304  	for key, val := range rawMsg {
 24305  		var err error
 24306  		switch key {
 24307  		case "scrubbingRules":
 24308  			err = unpopulate(val, "ScrubbingRules", &p.ScrubbingRules)
 24309  			delete(rawMsg, key)
 24310  		case "state":
 24311  			err = unpopulate(val, "State", &p.State)
 24312  			delete(rawMsg, key)
 24313  		}
 24314  		if err != nil {
 24315  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24316  		}
 24317  	}
 24318  	return nil
 24319  }
 24320  
 24321  // MarshalJSON implements the json.Marshaller interface for type PoolAssociation.
 24322  func (p PoolAssociation) MarshalJSON() ([]byte, error) {
 24323  	objectMap := make(map[string]any)
 24324  	populate(objectMap, "addressPrefixes", p.AddressPrefixes)
 24325  	populateDateTimeRFC3339(objectMap, "createdAt", p.CreatedAt)
 24326  	populate(objectMap, "description", p.Description)
 24327  	populate(objectMap, "numberOfReservedIPAddresses", p.NumberOfReservedIPAddresses)
 24328  	populate(objectMap, "poolId", p.PoolID)
 24329  	populateDateTimeRFC3339(objectMap, "reservationExpiresAt", p.ReservationExpiresAt)
 24330  	populate(objectMap, "reservedPrefixes", p.ReservedPrefixes)
 24331  	populate(objectMap, "resourceId", p.ResourceID)
 24332  	populate(objectMap, "totalNumberOfIPAddresses", p.TotalNumberOfIPAddresses)
 24333  	return json.Marshal(objectMap)
 24334  }
 24335  
 24336  // UnmarshalJSON implements the json.Unmarshaller interface for type PoolAssociation.
 24337  func (p *PoolAssociation) UnmarshalJSON(data []byte) error {
 24338  	var rawMsg map[string]json.RawMessage
 24339  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 24340  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24341  	}
 24342  	for key, val := range rawMsg {
 24343  		var err error
 24344  		switch key {
 24345  		case "addressPrefixes":
 24346  			err = unpopulate(val, "AddressPrefixes", &p.AddressPrefixes)
 24347  			delete(rawMsg, key)
 24348  		case "createdAt":
 24349  			err = unpopulateDateTimeRFC3339(val, "CreatedAt", &p.CreatedAt)
 24350  			delete(rawMsg, key)
 24351  		case "description":
 24352  			err = unpopulate(val, "Description", &p.Description)
 24353  			delete(rawMsg, key)
 24354  		case "numberOfReservedIPAddresses":
 24355  			err = unpopulate(val, "NumberOfReservedIPAddresses", &p.NumberOfReservedIPAddresses)
 24356  			delete(rawMsg, key)
 24357  		case "poolId":
 24358  			err = unpopulate(val, "PoolID", &p.PoolID)
 24359  			delete(rawMsg, key)
 24360  		case "reservationExpiresAt":
 24361  			err = unpopulateDateTimeRFC3339(val, "ReservationExpiresAt", &p.ReservationExpiresAt)
 24362  			delete(rawMsg, key)
 24363  		case "reservedPrefixes":
 24364  			err = unpopulate(val, "ReservedPrefixes", &p.ReservedPrefixes)
 24365  			delete(rawMsg, key)
 24366  		case "resourceId":
 24367  			err = unpopulate(val, "ResourceID", &p.ResourceID)
 24368  			delete(rawMsg, key)
 24369  		case "totalNumberOfIPAddresses":
 24370  			err = unpopulate(val, "TotalNumberOfIPAddresses", &p.TotalNumberOfIPAddresses)
 24371  			delete(rawMsg, key)
 24372  		}
 24373  		if err != nil {
 24374  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24375  		}
 24376  	}
 24377  	return nil
 24378  }
 24379  
 24380  // MarshalJSON implements the json.Marshaller interface for type PoolAssociationList.
 24381  func (p PoolAssociationList) MarshalJSON() ([]byte, error) {
 24382  	objectMap := make(map[string]any)
 24383  	populate(objectMap, "nextLink", p.NextLink)
 24384  	populate(objectMap, "value", p.Value)
 24385  	return json.Marshal(objectMap)
 24386  }
 24387  
 24388  // UnmarshalJSON implements the json.Unmarshaller interface for type PoolAssociationList.
 24389  func (p *PoolAssociationList) UnmarshalJSON(data []byte) error {
 24390  	var rawMsg map[string]json.RawMessage
 24391  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 24392  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24393  	}
 24394  	for key, val := range rawMsg {
 24395  		var err error
 24396  		switch key {
 24397  		case "nextLink":
 24398  			err = unpopulate(val, "NextLink", &p.NextLink)
 24399  			delete(rawMsg, key)
 24400  		case "value":
 24401  			err = unpopulate(val, "Value", &p.Value)
 24402  			delete(rawMsg, key)
 24403  		}
 24404  		if err != nil {
 24405  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24406  		}
 24407  	}
 24408  	return nil
 24409  }
 24410  
 24411  // MarshalJSON implements the json.Marshaller interface for type PoolUsage.
 24412  func (p PoolUsage) MarshalJSON() ([]byte, error) {
 24413  	objectMap := make(map[string]any)
 24414  	populate(objectMap, "addressPrefixes", p.AddressPrefixes)
 24415  	populate(objectMap, "allocatedAddressPrefixes", p.AllocatedAddressPrefixes)
 24416  	populate(objectMap, "availableAddressPrefixes", p.AvailableAddressPrefixes)
 24417  	populate(objectMap, "childPools", p.ChildPools)
 24418  	populate(objectMap, "numberOfAllocatedIPAddresses", p.NumberOfAllocatedIPAddresses)
 24419  	populate(objectMap, "numberOfAvailableIPAddresses", p.NumberOfAvailableIPAddresses)
 24420  	populate(objectMap, "numberOfReservedIPAddresses", p.NumberOfReservedIPAddresses)
 24421  	populate(objectMap, "reservedAddressPrefixes", p.ReservedAddressPrefixes)
 24422  	populate(objectMap, "totalNumberOfIPAddresses", p.TotalNumberOfIPAddresses)
 24423  	return json.Marshal(objectMap)
 24424  }
 24425  
 24426  // UnmarshalJSON implements the json.Unmarshaller interface for type PoolUsage.
 24427  func (p *PoolUsage) UnmarshalJSON(data []byte) error {
 24428  	var rawMsg map[string]json.RawMessage
 24429  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 24430  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24431  	}
 24432  	for key, val := range rawMsg {
 24433  		var err error
 24434  		switch key {
 24435  		case "addressPrefixes":
 24436  			err = unpopulate(val, "AddressPrefixes", &p.AddressPrefixes)
 24437  			delete(rawMsg, key)
 24438  		case "allocatedAddressPrefixes":
 24439  			err = unpopulate(val, "AllocatedAddressPrefixes", &p.AllocatedAddressPrefixes)
 24440  			delete(rawMsg, key)
 24441  		case "availableAddressPrefixes":
 24442  			err = unpopulate(val, "AvailableAddressPrefixes", &p.AvailableAddressPrefixes)
 24443  			delete(rawMsg, key)
 24444  		case "childPools":
 24445  			err = unpopulate(val, "ChildPools", &p.ChildPools)
 24446  			delete(rawMsg, key)
 24447  		case "numberOfAllocatedIPAddresses":
 24448  			err = unpopulate(val, "NumberOfAllocatedIPAddresses", &p.NumberOfAllocatedIPAddresses)
 24449  			delete(rawMsg, key)
 24450  		case "numberOfAvailableIPAddresses":
 24451  			err = unpopulate(val, "NumberOfAvailableIPAddresses", &p.NumberOfAvailableIPAddresses)
 24452  			delete(rawMsg, key)
 24453  		case "numberOfReservedIPAddresses":
 24454  			err = unpopulate(val, "NumberOfReservedIPAddresses", &p.NumberOfReservedIPAddresses)
 24455  			delete(rawMsg, key)
 24456  		case "reservedAddressPrefixes":
 24457  			err = unpopulate(val, "ReservedAddressPrefixes", &p.ReservedAddressPrefixes)
 24458  			delete(rawMsg, key)
 24459  		case "totalNumberOfIPAddresses":
 24460  			err = unpopulate(val, "TotalNumberOfIPAddresses", &p.TotalNumberOfIPAddresses)
 24461  			delete(rawMsg, key)
 24462  		}
 24463  		if err != nil {
 24464  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24465  		}
 24466  	}
 24467  	return nil
 24468  }
 24469  
 24470  // MarshalJSON implements the json.Marshaller interface for type PrepareNetworkPoliciesRequest.
 24471  func (p PrepareNetworkPoliciesRequest) MarshalJSON() ([]byte, error) {
 24472  	objectMap := make(map[string]any)
 24473  	populate(objectMap, "networkIntentPolicyConfigurations", p.NetworkIntentPolicyConfigurations)
 24474  	populate(objectMap, "serviceName", p.ServiceName)
 24475  	return json.Marshal(objectMap)
 24476  }
 24477  
 24478  // UnmarshalJSON implements the json.Unmarshaller interface for type PrepareNetworkPoliciesRequest.
 24479  func (p *PrepareNetworkPoliciesRequest) UnmarshalJSON(data []byte) error {
 24480  	var rawMsg map[string]json.RawMessage
 24481  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 24482  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24483  	}
 24484  	for key, val := range rawMsg {
 24485  		var err error
 24486  		switch key {
 24487  		case "networkIntentPolicyConfigurations":
 24488  			err = unpopulate(val, "NetworkIntentPolicyConfigurations", &p.NetworkIntentPolicyConfigurations)
 24489  			delete(rawMsg, key)
 24490  		case "serviceName":
 24491  			err = unpopulate(val, "ServiceName", &p.ServiceName)
 24492  			delete(rawMsg, key)
 24493  		}
 24494  		if err != nil {
 24495  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24496  		}
 24497  	}
 24498  	return nil
 24499  }
 24500  
 24501  // MarshalJSON implements the json.Marshaller interface for type PrivateDNSZoneConfig.
 24502  func (p PrivateDNSZoneConfig) MarshalJSON() ([]byte, error) {
 24503  	objectMap := make(map[string]any)
 24504  	populate(objectMap, "name", p.Name)
 24505  	populate(objectMap, "properties", p.Properties)
 24506  	return json.Marshal(objectMap)
 24507  }
 24508  
 24509  // UnmarshalJSON implements the json.Unmarshaller interface for type PrivateDNSZoneConfig.
 24510  func (p *PrivateDNSZoneConfig) UnmarshalJSON(data []byte) error {
 24511  	var rawMsg map[string]json.RawMessage
 24512  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 24513  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24514  	}
 24515  	for key, val := range rawMsg {
 24516  		var err error
 24517  		switch key {
 24518  		case "name":
 24519  			err = unpopulate(val, "Name", &p.Name)
 24520  			delete(rawMsg, key)
 24521  		case "properties":
 24522  			err = unpopulate(val, "Properties", &p.Properties)
 24523  			delete(rawMsg, key)
 24524  		}
 24525  		if err != nil {
 24526  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24527  		}
 24528  	}
 24529  	return nil
 24530  }
 24531  
 24532  // MarshalJSON implements the json.Marshaller interface for type PrivateDNSZoneGroup.
 24533  func (p PrivateDNSZoneGroup) MarshalJSON() ([]byte, error) {
 24534  	objectMap := make(map[string]any)
 24535  	populate(objectMap, "etag", p.Etag)
 24536  	populate(objectMap, "id", p.ID)
 24537  	populate(objectMap, "name", p.Name)
 24538  	populate(objectMap, "properties", p.Properties)
 24539  	return json.Marshal(objectMap)
 24540  }
 24541  
 24542  // UnmarshalJSON implements the json.Unmarshaller interface for type PrivateDNSZoneGroup.
 24543  func (p *PrivateDNSZoneGroup) UnmarshalJSON(data []byte) error {
 24544  	var rawMsg map[string]json.RawMessage
 24545  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 24546  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24547  	}
 24548  	for key, val := range rawMsg {
 24549  		var err error
 24550  		switch key {
 24551  		case "etag":
 24552  			err = unpopulate(val, "Etag", &p.Etag)
 24553  			delete(rawMsg, key)
 24554  		case "id":
 24555  			err = unpopulate(val, "ID", &p.ID)
 24556  			delete(rawMsg, key)
 24557  		case "name":
 24558  			err = unpopulate(val, "Name", &p.Name)
 24559  			delete(rawMsg, key)
 24560  		case "properties":
 24561  			err = unpopulate(val, "Properties", &p.Properties)
 24562  			delete(rawMsg, key)
 24563  		}
 24564  		if err != nil {
 24565  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24566  		}
 24567  	}
 24568  	return nil
 24569  }
 24570  
 24571  // MarshalJSON implements the json.Marshaller interface for type PrivateDNSZoneGroupListResult.
 24572  func (p PrivateDNSZoneGroupListResult) MarshalJSON() ([]byte, error) {
 24573  	objectMap := make(map[string]any)
 24574  	populate(objectMap, "nextLink", p.NextLink)
 24575  	populate(objectMap, "value", p.Value)
 24576  	return json.Marshal(objectMap)
 24577  }
 24578  
 24579  // UnmarshalJSON implements the json.Unmarshaller interface for type PrivateDNSZoneGroupListResult.
 24580  func (p *PrivateDNSZoneGroupListResult) UnmarshalJSON(data []byte) error {
 24581  	var rawMsg map[string]json.RawMessage
 24582  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 24583  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24584  	}
 24585  	for key, val := range rawMsg {
 24586  		var err error
 24587  		switch key {
 24588  		case "nextLink":
 24589  			err = unpopulate(val, "NextLink", &p.NextLink)
 24590  			delete(rawMsg, key)
 24591  		case "value":
 24592  			err = unpopulate(val, "Value", &p.Value)
 24593  			delete(rawMsg, key)
 24594  		}
 24595  		if err != nil {
 24596  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24597  		}
 24598  	}
 24599  	return nil
 24600  }
 24601  
 24602  // MarshalJSON implements the json.Marshaller interface for type PrivateDNSZoneGroupPropertiesFormat.
 24603  func (p PrivateDNSZoneGroupPropertiesFormat) MarshalJSON() ([]byte, error) {
 24604  	objectMap := make(map[string]any)
 24605  	populate(objectMap, "privateDnsZoneConfigs", p.PrivateDNSZoneConfigs)
 24606  	populate(objectMap, "provisioningState", p.ProvisioningState)
 24607  	return json.Marshal(objectMap)
 24608  }
 24609  
 24610  // UnmarshalJSON implements the json.Unmarshaller interface for type PrivateDNSZoneGroupPropertiesFormat.
 24611  func (p *PrivateDNSZoneGroupPropertiesFormat) UnmarshalJSON(data []byte) error {
 24612  	var rawMsg map[string]json.RawMessage
 24613  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 24614  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24615  	}
 24616  	for key, val := range rawMsg {
 24617  		var err error
 24618  		switch key {
 24619  		case "privateDnsZoneConfigs":
 24620  			err = unpopulate(val, "PrivateDNSZoneConfigs", &p.PrivateDNSZoneConfigs)
 24621  			delete(rawMsg, key)
 24622  		case "provisioningState":
 24623  			err = unpopulate(val, "ProvisioningState", &p.ProvisioningState)
 24624  			delete(rawMsg, key)
 24625  		}
 24626  		if err != nil {
 24627  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24628  		}
 24629  	}
 24630  	return nil
 24631  }
 24632  
 24633  // MarshalJSON implements the json.Marshaller interface for type PrivateDNSZonePropertiesFormat.
 24634  func (p PrivateDNSZonePropertiesFormat) MarshalJSON() ([]byte, error) {
 24635  	objectMap := make(map[string]any)
 24636  	populate(objectMap, "privateDnsZoneId", p.PrivateDNSZoneID)
 24637  	populate(objectMap, "recordSets", p.RecordSets)
 24638  	return json.Marshal(objectMap)
 24639  }
 24640  
 24641  // UnmarshalJSON implements the json.Unmarshaller interface for type PrivateDNSZonePropertiesFormat.
 24642  func (p *PrivateDNSZonePropertiesFormat) UnmarshalJSON(data []byte) error {
 24643  	var rawMsg map[string]json.RawMessage
 24644  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 24645  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24646  	}
 24647  	for key, val := range rawMsg {
 24648  		var err error
 24649  		switch key {
 24650  		case "privateDnsZoneId":
 24651  			err = unpopulate(val, "PrivateDNSZoneID", &p.PrivateDNSZoneID)
 24652  			delete(rawMsg, key)
 24653  		case "recordSets":
 24654  			err = unpopulate(val, "RecordSets", &p.RecordSets)
 24655  			delete(rawMsg, key)
 24656  		}
 24657  		if err != nil {
 24658  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24659  		}
 24660  	}
 24661  	return nil
 24662  }
 24663  
 24664  // MarshalJSON implements the json.Marshaller interface for type PrivateEndpoint.
 24665  func (p PrivateEndpoint) MarshalJSON() ([]byte, error) {
 24666  	objectMap := make(map[string]any)
 24667  	populate(objectMap, "etag", p.Etag)
 24668  	populate(objectMap, "extendedLocation", p.ExtendedLocation)
 24669  	populate(objectMap, "id", p.ID)
 24670  	populate(objectMap, "location", p.Location)
 24671  	populate(objectMap, "name", p.Name)
 24672  	populate(objectMap, "properties", p.Properties)
 24673  	populate(objectMap, "tags", p.Tags)
 24674  	populate(objectMap, "type", p.Type)
 24675  	return json.Marshal(objectMap)
 24676  }
 24677  
 24678  // UnmarshalJSON implements the json.Unmarshaller interface for type PrivateEndpoint.
 24679  func (p *PrivateEndpoint) UnmarshalJSON(data []byte) error {
 24680  	var rawMsg map[string]json.RawMessage
 24681  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 24682  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24683  	}
 24684  	for key, val := range rawMsg {
 24685  		var err error
 24686  		switch key {
 24687  		case "etag":
 24688  			err = unpopulate(val, "Etag", &p.Etag)
 24689  			delete(rawMsg, key)
 24690  		case "extendedLocation":
 24691  			err = unpopulate(val, "ExtendedLocation", &p.ExtendedLocation)
 24692  			delete(rawMsg, key)
 24693  		case "id":
 24694  			err = unpopulate(val, "ID", &p.ID)
 24695  			delete(rawMsg, key)
 24696  		case "location":
 24697  			err = unpopulate(val, "Location", &p.Location)
 24698  			delete(rawMsg, key)
 24699  		case "name":
 24700  			err = unpopulate(val, "Name", &p.Name)
 24701  			delete(rawMsg, key)
 24702  		case "properties":
 24703  			err = unpopulate(val, "Properties", &p.Properties)
 24704  			delete(rawMsg, key)
 24705  		case "tags":
 24706  			err = unpopulate(val, "Tags", &p.Tags)
 24707  			delete(rawMsg, key)
 24708  		case "type":
 24709  			err = unpopulate(val, "Type", &p.Type)
 24710  			delete(rawMsg, key)
 24711  		}
 24712  		if err != nil {
 24713  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24714  		}
 24715  	}
 24716  	return nil
 24717  }
 24718  
 24719  // MarshalJSON implements the json.Marshaller interface for type PrivateEndpointConnection.
 24720  func (p PrivateEndpointConnection) MarshalJSON() ([]byte, error) {
 24721  	objectMap := make(map[string]any)
 24722  	populate(objectMap, "etag", p.Etag)
 24723  	populate(objectMap, "id", p.ID)
 24724  	populate(objectMap, "name", p.Name)
 24725  	populate(objectMap, "properties", p.Properties)
 24726  	populate(objectMap, "type", p.Type)
 24727  	return json.Marshal(objectMap)
 24728  }
 24729  
 24730  // UnmarshalJSON implements the json.Unmarshaller interface for type PrivateEndpointConnection.
 24731  func (p *PrivateEndpointConnection) UnmarshalJSON(data []byte) error {
 24732  	var rawMsg map[string]json.RawMessage
 24733  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 24734  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24735  	}
 24736  	for key, val := range rawMsg {
 24737  		var err error
 24738  		switch key {
 24739  		case "etag":
 24740  			err = unpopulate(val, "Etag", &p.Etag)
 24741  			delete(rawMsg, key)
 24742  		case "id":
 24743  			err = unpopulate(val, "ID", &p.ID)
 24744  			delete(rawMsg, key)
 24745  		case "name":
 24746  			err = unpopulate(val, "Name", &p.Name)
 24747  			delete(rawMsg, key)
 24748  		case "properties":
 24749  			err = unpopulate(val, "Properties", &p.Properties)
 24750  			delete(rawMsg, key)
 24751  		case "type":
 24752  			err = unpopulate(val, "Type", &p.Type)
 24753  			delete(rawMsg, key)
 24754  		}
 24755  		if err != nil {
 24756  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24757  		}
 24758  	}
 24759  	return nil
 24760  }
 24761  
 24762  // MarshalJSON implements the json.Marshaller interface for type PrivateEndpointConnectionListResult.
 24763  func (p PrivateEndpointConnectionListResult) MarshalJSON() ([]byte, error) {
 24764  	objectMap := make(map[string]any)
 24765  	populate(objectMap, "nextLink", p.NextLink)
 24766  	populate(objectMap, "value", p.Value)
 24767  	return json.Marshal(objectMap)
 24768  }
 24769  
 24770  // UnmarshalJSON implements the json.Unmarshaller interface for type PrivateEndpointConnectionListResult.
 24771  func (p *PrivateEndpointConnectionListResult) UnmarshalJSON(data []byte) error {
 24772  	var rawMsg map[string]json.RawMessage
 24773  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 24774  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24775  	}
 24776  	for key, val := range rawMsg {
 24777  		var err error
 24778  		switch key {
 24779  		case "nextLink":
 24780  			err = unpopulate(val, "NextLink", &p.NextLink)
 24781  			delete(rawMsg, key)
 24782  		case "value":
 24783  			err = unpopulate(val, "Value", &p.Value)
 24784  			delete(rawMsg, key)
 24785  		}
 24786  		if err != nil {
 24787  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24788  		}
 24789  	}
 24790  	return nil
 24791  }
 24792  
 24793  // MarshalJSON implements the json.Marshaller interface for type PrivateEndpointConnectionProperties.
 24794  func (p PrivateEndpointConnectionProperties) MarshalJSON() ([]byte, error) {
 24795  	objectMap := make(map[string]any)
 24796  	populate(objectMap, "linkIdentifier", p.LinkIdentifier)
 24797  	populate(objectMap, "privateEndpoint", p.PrivateEndpoint)
 24798  	populate(objectMap, "privateEndpointLocation", p.PrivateEndpointLocation)
 24799  	populate(objectMap, "privateLinkServiceConnectionState", p.PrivateLinkServiceConnectionState)
 24800  	populate(objectMap, "provisioningState", p.ProvisioningState)
 24801  	return json.Marshal(objectMap)
 24802  }
 24803  
 24804  // UnmarshalJSON implements the json.Unmarshaller interface for type PrivateEndpointConnectionProperties.
 24805  func (p *PrivateEndpointConnectionProperties) UnmarshalJSON(data []byte) error {
 24806  	var rawMsg map[string]json.RawMessage
 24807  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 24808  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24809  	}
 24810  	for key, val := range rawMsg {
 24811  		var err error
 24812  		switch key {
 24813  		case "linkIdentifier":
 24814  			err = unpopulate(val, "LinkIdentifier", &p.LinkIdentifier)
 24815  			delete(rawMsg, key)
 24816  		case "privateEndpoint":
 24817  			err = unpopulate(val, "PrivateEndpoint", &p.PrivateEndpoint)
 24818  			delete(rawMsg, key)
 24819  		case "privateEndpointLocation":
 24820  			err = unpopulate(val, "PrivateEndpointLocation", &p.PrivateEndpointLocation)
 24821  			delete(rawMsg, key)
 24822  		case "privateLinkServiceConnectionState":
 24823  			err = unpopulate(val, "PrivateLinkServiceConnectionState", &p.PrivateLinkServiceConnectionState)
 24824  			delete(rawMsg, key)
 24825  		case "provisioningState":
 24826  			err = unpopulate(val, "ProvisioningState", &p.ProvisioningState)
 24827  			delete(rawMsg, key)
 24828  		}
 24829  		if err != nil {
 24830  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24831  		}
 24832  	}
 24833  	return nil
 24834  }
 24835  
 24836  // MarshalJSON implements the json.Marshaller interface for type PrivateEndpointIPConfiguration.
 24837  func (p PrivateEndpointIPConfiguration) MarshalJSON() ([]byte, error) {
 24838  	objectMap := make(map[string]any)
 24839  	populate(objectMap, "etag", p.Etag)
 24840  	populate(objectMap, "name", p.Name)
 24841  	populate(objectMap, "properties", p.Properties)
 24842  	populate(objectMap, "type", p.Type)
 24843  	return json.Marshal(objectMap)
 24844  }
 24845  
 24846  // UnmarshalJSON implements the json.Unmarshaller interface for type PrivateEndpointIPConfiguration.
 24847  func (p *PrivateEndpointIPConfiguration) UnmarshalJSON(data []byte) error {
 24848  	var rawMsg map[string]json.RawMessage
 24849  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 24850  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24851  	}
 24852  	for key, val := range rawMsg {
 24853  		var err error
 24854  		switch key {
 24855  		case "etag":
 24856  			err = unpopulate(val, "Etag", &p.Etag)
 24857  			delete(rawMsg, key)
 24858  		case "name":
 24859  			err = unpopulate(val, "Name", &p.Name)
 24860  			delete(rawMsg, key)
 24861  		case "properties":
 24862  			err = unpopulate(val, "Properties", &p.Properties)
 24863  			delete(rawMsg, key)
 24864  		case "type":
 24865  			err = unpopulate(val, "Type", &p.Type)
 24866  			delete(rawMsg, key)
 24867  		}
 24868  		if err != nil {
 24869  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24870  		}
 24871  	}
 24872  	return nil
 24873  }
 24874  
 24875  // MarshalJSON implements the json.Marshaller interface for type PrivateEndpointIPConfigurationProperties.
 24876  func (p PrivateEndpointIPConfigurationProperties) MarshalJSON() ([]byte, error) {
 24877  	objectMap := make(map[string]any)
 24878  	populate(objectMap, "groupId", p.GroupID)
 24879  	populate(objectMap, "memberName", p.MemberName)
 24880  	populate(objectMap, "privateIPAddress", p.PrivateIPAddress)
 24881  	return json.Marshal(objectMap)
 24882  }
 24883  
 24884  // UnmarshalJSON implements the json.Unmarshaller interface for type PrivateEndpointIPConfigurationProperties.
 24885  func (p *PrivateEndpointIPConfigurationProperties) UnmarshalJSON(data []byte) error {
 24886  	var rawMsg map[string]json.RawMessage
 24887  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 24888  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24889  	}
 24890  	for key, val := range rawMsg {
 24891  		var err error
 24892  		switch key {
 24893  		case "groupId":
 24894  			err = unpopulate(val, "GroupID", &p.GroupID)
 24895  			delete(rawMsg, key)
 24896  		case "memberName":
 24897  			err = unpopulate(val, "MemberName", &p.MemberName)
 24898  			delete(rawMsg, key)
 24899  		case "privateIPAddress":
 24900  			err = unpopulate(val, "PrivateIPAddress", &p.PrivateIPAddress)
 24901  			delete(rawMsg, key)
 24902  		}
 24903  		if err != nil {
 24904  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24905  		}
 24906  	}
 24907  	return nil
 24908  }
 24909  
 24910  // MarshalJSON implements the json.Marshaller interface for type PrivateEndpointListResult.
 24911  func (p PrivateEndpointListResult) MarshalJSON() ([]byte, error) {
 24912  	objectMap := make(map[string]any)
 24913  	populate(objectMap, "nextLink", p.NextLink)
 24914  	populate(objectMap, "value", p.Value)
 24915  	return json.Marshal(objectMap)
 24916  }
 24917  
 24918  // UnmarshalJSON implements the json.Unmarshaller interface for type PrivateEndpointListResult.
 24919  func (p *PrivateEndpointListResult) UnmarshalJSON(data []byte) error {
 24920  	var rawMsg map[string]json.RawMessage
 24921  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 24922  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24923  	}
 24924  	for key, val := range rawMsg {
 24925  		var err error
 24926  		switch key {
 24927  		case "nextLink":
 24928  			err = unpopulate(val, "NextLink", &p.NextLink)
 24929  			delete(rawMsg, key)
 24930  		case "value":
 24931  			err = unpopulate(val, "Value", &p.Value)
 24932  			delete(rawMsg, key)
 24933  		}
 24934  		if err != nil {
 24935  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24936  		}
 24937  	}
 24938  	return nil
 24939  }
 24940  
 24941  // MarshalJSON implements the json.Marshaller interface for type PrivateEndpointProperties.
 24942  func (p PrivateEndpointProperties) MarshalJSON() ([]byte, error) {
 24943  	objectMap := make(map[string]any)
 24944  	populate(objectMap, "applicationSecurityGroups", p.ApplicationSecurityGroups)
 24945  	populate(objectMap, "customDnsConfigs", p.CustomDNSConfigs)
 24946  	populate(objectMap, "customNetworkInterfaceName", p.CustomNetworkInterfaceName)
 24947  	populate(objectMap, "ipConfigurations", p.IPConfigurations)
 24948  	populate(objectMap, "manualPrivateLinkServiceConnections", p.ManualPrivateLinkServiceConnections)
 24949  	populate(objectMap, "networkInterfaces", p.NetworkInterfaces)
 24950  	populate(objectMap, "privateLinkServiceConnections", p.PrivateLinkServiceConnections)
 24951  	populate(objectMap, "provisioningState", p.ProvisioningState)
 24952  	populate(objectMap, "subnet", p.Subnet)
 24953  	return json.Marshal(objectMap)
 24954  }
 24955  
 24956  // UnmarshalJSON implements the json.Unmarshaller interface for type PrivateEndpointProperties.
 24957  func (p *PrivateEndpointProperties) UnmarshalJSON(data []byte) error {
 24958  	var rawMsg map[string]json.RawMessage
 24959  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 24960  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24961  	}
 24962  	for key, val := range rawMsg {
 24963  		var err error
 24964  		switch key {
 24965  		case "applicationSecurityGroups":
 24966  			err = unpopulate(val, "ApplicationSecurityGroups", &p.ApplicationSecurityGroups)
 24967  			delete(rawMsg, key)
 24968  		case "customDnsConfigs":
 24969  			err = unpopulate(val, "CustomDNSConfigs", &p.CustomDNSConfigs)
 24970  			delete(rawMsg, key)
 24971  		case "customNetworkInterfaceName":
 24972  			err = unpopulate(val, "CustomNetworkInterfaceName", &p.CustomNetworkInterfaceName)
 24973  			delete(rawMsg, key)
 24974  		case "ipConfigurations":
 24975  			err = unpopulate(val, "IPConfigurations", &p.IPConfigurations)
 24976  			delete(rawMsg, key)
 24977  		case "manualPrivateLinkServiceConnections":
 24978  			err = unpopulate(val, "ManualPrivateLinkServiceConnections", &p.ManualPrivateLinkServiceConnections)
 24979  			delete(rawMsg, key)
 24980  		case "networkInterfaces":
 24981  			err = unpopulate(val, "NetworkInterfaces", &p.NetworkInterfaces)
 24982  			delete(rawMsg, key)
 24983  		case "privateLinkServiceConnections":
 24984  			err = unpopulate(val, "PrivateLinkServiceConnections", &p.PrivateLinkServiceConnections)
 24985  			delete(rawMsg, key)
 24986  		case "provisioningState":
 24987  			err = unpopulate(val, "ProvisioningState", &p.ProvisioningState)
 24988  			delete(rawMsg, key)
 24989  		case "subnet":
 24990  			err = unpopulate(val, "Subnet", &p.Subnet)
 24991  			delete(rawMsg, key)
 24992  		}
 24993  		if err != nil {
 24994  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 24995  		}
 24996  	}
 24997  	return nil
 24998  }
 24999  
 25000  // MarshalJSON implements the json.Marshaller interface for type PrivateLinkService.
 25001  func (p PrivateLinkService) MarshalJSON() ([]byte, error) {
 25002  	objectMap := make(map[string]any)
 25003  	populate(objectMap, "etag", p.Etag)
 25004  	populate(objectMap, "extendedLocation", p.ExtendedLocation)
 25005  	populate(objectMap, "id", p.ID)
 25006  	populate(objectMap, "location", p.Location)
 25007  	populate(objectMap, "name", p.Name)
 25008  	populate(objectMap, "properties", p.Properties)
 25009  	populate(objectMap, "tags", p.Tags)
 25010  	populate(objectMap, "type", p.Type)
 25011  	return json.Marshal(objectMap)
 25012  }
 25013  
 25014  // UnmarshalJSON implements the json.Unmarshaller interface for type PrivateLinkService.
 25015  func (p *PrivateLinkService) UnmarshalJSON(data []byte) error {
 25016  	var rawMsg map[string]json.RawMessage
 25017  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 25018  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25019  	}
 25020  	for key, val := range rawMsg {
 25021  		var err error
 25022  		switch key {
 25023  		case "etag":
 25024  			err = unpopulate(val, "Etag", &p.Etag)
 25025  			delete(rawMsg, key)
 25026  		case "extendedLocation":
 25027  			err = unpopulate(val, "ExtendedLocation", &p.ExtendedLocation)
 25028  			delete(rawMsg, key)
 25029  		case "id":
 25030  			err = unpopulate(val, "ID", &p.ID)
 25031  			delete(rawMsg, key)
 25032  		case "location":
 25033  			err = unpopulate(val, "Location", &p.Location)
 25034  			delete(rawMsg, key)
 25035  		case "name":
 25036  			err = unpopulate(val, "Name", &p.Name)
 25037  			delete(rawMsg, key)
 25038  		case "properties":
 25039  			err = unpopulate(val, "Properties", &p.Properties)
 25040  			delete(rawMsg, key)
 25041  		case "tags":
 25042  			err = unpopulate(val, "Tags", &p.Tags)
 25043  			delete(rawMsg, key)
 25044  		case "type":
 25045  			err = unpopulate(val, "Type", &p.Type)
 25046  			delete(rawMsg, key)
 25047  		}
 25048  		if err != nil {
 25049  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25050  		}
 25051  	}
 25052  	return nil
 25053  }
 25054  
 25055  // MarshalJSON implements the json.Marshaller interface for type PrivateLinkServiceConnection.
 25056  func (p PrivateLinkServiceConnection) MarshalJSON() ([]byte, error) {
 25057  	objectMap := make(map[string]any)
 25058  	populate(objectMap, "etag", p.Etag)
 25059  	populate(objectMap, "id", p.ID)
 25060  	populate(objectMap, "name", p.Name)
 25061  	populate(objectMap, "properties", p.Properties)
 25062  	populate(objectMap, "type", p.Type)
 25063  	return json.Marshal(objectMap)
 25064  }
 25065  
 25066  // UnmarshalJSON implements the json.Unmarshaller interface for type PrivateLinkServiceConnection.
 25067  func (p *PrivateLinkServiceConnection) UnmarshalJSON(data []byte) error {
 25068  	var rawMsg map[string]json.RawMessage
 25069  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 25070  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25071  	}
 25072  	for key, val := range rawMsg {
 25073  		var err error
 25074  		switch key {
 25075  		case "etag":
 25076  			err = unpopulate(val, "Etag", &p.Etag)
 25077  			delete(rawMsg, key)
 25078  		case "id":
 25079  			err = unpopulate(val, "ID", &p.ID)
 25080  			delete(rawMsg, key)
 25081  		case "name":
 25082  			err = unpopulate(val, "Name", &p.Name)
 25083  			delete(rawMsg, key)
 25084  		case "properties":
 25085  			err = unpopulate(val, "Properties", &p.Properties)
 25086  			delete(rawMsg, key)
 25087  		case "type":
 25088  			err = unpopulate(val, "Type", &p.Type)
 25089  			delete(rawMsg, key)
 25090  		}
 25091  		if err != nil {
 25092  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25093  		}
 25094  	}
 25095  	return nil
 25096  }
 25097  
 25098  // MarshalJSON implements the json.Marshaller interface for type PrivateLinkServiceConnectionProperties.
 25099  func (p PrivateLinkServiceConnectionProperties) MarshalJSON() ([]byte, error) {
 25100  	objectMap := make(map[string]any)
 25101  	populate(objectMap, "groupIds", p.GroupIDs)
 25102  	populate(objectMap, "privateLinkServiceConnectionState", p.PrivateLinkServiceConnectionState)
 25103  	populate(objectMap, "privateLinkServiceId", p.PrivateLinkServiceID)
 25104  	populate(objectMap, "provisioningState", p.ProvisioningState)
 25105  	populate(objectMap, "requestMessage", p.RequestMessage)
 25106  	return json.Marshal(objectMap)
 25107  }
 25108  
 25109  // UnmarshalJSON implements the json.Unmarshaller interface for type PrivateLinkServiceConnectionProperties.
 25110  func (p *PrivateLinkServiceConnectionProperties) UnmarshalJSON(data []byte) error {
 25111  	var rawMsg map[string]json.RawMessage
 25112  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 25113  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25114  	}
 25115  	for key, val := range rawMsg {
 25116  		var err error
 25117  		switch key {
 25118  		case "groupIds":
 25119  			err = unpopulate(val, "GroupIDs", &p.GroupIDs)
 25120  			delete(rawMsg, key)
 25121  		case "privateLinkServiceConnectionState":
 25122  			err = unpopulate(val, "PrivateLinkServiceConnectionState", &p.PrivateLinkServiceConnectionState)
 25123  			delete(rawMsg, key)
 25124  		case "privateLinkServiceId":
 25125  			err = unpopulate(val, "PrivateLinkServiceID", &p.PrivateLinkServiceID)
 25126  			delete(rawMsg, key)
 25127  		case "provisioningState":
 25128  			err = unpopulate(val, "ProvisioningState", &p.ProvisioningState)
 25129  			delete(rawMsg, key)
 25130  		case "requestMessage":
 25131  			err = unpopulate(val, "RequestMessage", &p.RequestMessage)
 25132  			delete(rawMsg, key)
 25133  		}
 25134  		if err != nil {
 25135  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25136  		}
 25137  	}
 25138  	return nil
 25139  }
 25140  
 25141  // MarshalJSON implements the json.Marshaller interface for type PrivateLinkServiceConnectionState.
 25142  func (p PrivateLinkServiceConnectionState) MarshalJSON() ([]byte, error) {
 25143  	objectMap := make(map[string]any)
 25144  	populate(objectMap, "actionsRequired", p.ActionsRequired)
 25145  	populate(objectMap, "description", p.Description)
 25146  	populate(objectMap, "status", p.Status)
 25147  	return json.Marshal(objectMap)
 25148  }
 25149  
 25150  // UnmarshalJSON implements the json.Unmarshaller interface for type PrivateLinkServiceConnectionState.
 25151  func (p *PrivateLinkServiceConnectionState) UnmarshalJSON(data []byte) error {
 25152  	var rawMsg map[string]json.RawMessage
 25153  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 25154  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25155  	}
 25156  	for key, val := range rawMsg {
 25157  		var err error
 25158  		switch key {
 25159  		case "actionsRequired":
 25160  			err = unpopulate(val, "ActionsRequired", &p.ActionsRequired)
 25161  			delete(rawMsg, key)
 25162  		case "description":
 25163  			err = unpopulate(val, "Description", &p.Description)
 25164  			delete(rawMsg, key)
 25165  		case "status":
 25166  			err = unpopulate(val, "Status", &p.Status)
 25167  			delete(rawMsg, key)
 25168  		}
 25169  		if err != nil {
 25170  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25171  		}
 25172  	}
 25173  	return nil
 25174  }
 25175  
 25176  // MarshalJSON implements the json.Marshaller interface for type PrivateLinkServiceIPConfiguration.
 25177  func (p PrivateLinkServiceIPConfiguration) MarshalJSON() ([]byte, error) {
 25178  	objectMap := make(map[string]any)
 25179  	populate(objectMap, "etag", p.Etag)
 25180  	populate(objectMap, "id", p.ID)
 25181  	populate(objectMap, "name", p.Name)
 25182  	populate(objectMap, "properties", p.Properties)
 25183  	populate(objectMap, "type", p.Type)
 25184  	return json.Marshal(objectMap)
 25185  }
 25186  
 25187  // UnmarshalJSON implements the json.Unmarshaller interface for type PrivateLinkServiceIPConfiguration.
 25188  func (p *PrivateLinkServiceIPConfiguration) UnmarshalJSON(data []byte) error {
 25189  	var rawMsg map[string]json.RawMessage
 25190  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 25191  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25192  	}
 25193  	for key, val := range rawMsg {
 25194  		var err error
 25195  		switch key {
 25196  		case "etag":
 25197  			err = unpopulate(val, "Etag", &p.Etag)
 25198  			delete(rawMsg, key)
 25199  		case "id":
 25200  			err = unpopulate(val, "ID", &p.ID)
 25201  			delete(rawMsg, key)
 25202  		case "name":
 25203  			err = unpopulate(val, "Name", &p.Name)
 25204  			delete(rawMsg, key)
 25205  		case "properties":
 25206  			err = unpopulate(val, "Properties", &p.Properties)
 25207  			delete(rawMsg, key)
 25208  		case "type":
 25209  			err = unpopulate(val, "Type", &p.Type)
 25210  			delete(rawMsg, key)
 25211  		}
 25212  		if err != nil {
 25213  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25214  		}
 25215  	}
 25216  	return nil
 25217  }
 25218  
 25219  // MarshalJSON implements the json.Marshaller interface for type PrivateLinkServiceIPConfigurationProperties.
 25220  func (p PrivateLinkServiceIPConfigurationProperties) MarshalJSON() ([]byte, error) {
 25221  	objectMap := make(map[string]any)
 25222  	populate(objectMap, "primary", p.Primary)
 25223  	populate(objectMap, "privateIPAddress", p.PrivateIPAddress)
 25224  	populate(objectMap, "privateIPAddressVersion", p.PrivateIPAddressVersion)
 25225  	populate(objectMap, "privateIPAllocationMethod", p.PrivateIPAllocationMethod)
 25226  	populate(objectMap, "provisioningState", p.ProvisioningState)
 25227  	populate(objectMap, "subnet", p.Subnet)
 25228  	return json.Marshal(objectMap)
 25229  }
 25230  
 25231  // UnmarshalJSON implements the json.Unmarshaller interface for type PrivateLinkServiceIPConfigurationProperties.
 25232  func (p *PrivateLinkServiceIPConfigurationProperties) UnmarshalJSON(data []byte) error {
 25233  	var rawMsg map[string]json.RawMessage
 25234  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 25235  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25236  	}
 25237  	for key, val := range rawMsg {
 25238  		var err error
 25239  		switch key {
 25240  		case "primary":
 25241  			err = unpopulate(val, "Primary", &p.Primary)
 25242  			delete(rawMsg, key)
 25243  		case "privateIPAddress":
 25244  			err = unpopulate(val, "PrivateIPAddress", &p.PrivateIPAddress)
 25245  			delete(rawMsg, key)
 25246  		case "privateIPAddressVersion":
 25247  			err = unpopulate(val, "PrivateIPAddressVersion", &p.PrivateIPAddressVersion)
 25248  			delete(rawMsg, key)
 25249  		case "privateIPAllocationMethod":
 25250  			err = unpopulate(val, "PrivateIPAllocationMethod", &p.PrivateIPAllocationMethod)
 25251  			delete(rawMsg, key)
 25252  		case "provisioningState":
 25253  			err = unpopulate(val, "ProvisioningState", &p.ProvisioningState)
 25254  			delete(rawMsg, key)
 25255  		case "subnet":
 25256  			err = unpopulate(val, "Subnet", &p.Subnet)
 25257  			delete(rawMsg, key)
 25258  		}
 25259  		if err != nil {
 25260  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25261  		}
 25262  	}
 25263  	return nil
 25264  }
 25265  
 25266  // MarshalJSON implements the json.Marshaller interface for type PrivateLinkServiceListResult.
 25267  func (p PrivateLinkServiceListResult) MarshalJSON() ([]byte, error) {
 25268  	objectMap := make(map[string]any)
 25269  	populate(objectMap, "nextLink", p.NextLink)
 25270  	populate(objectMap, "value", p.Value)
 25271  	return json.Marshal(objectMap)
 25272  }
 25273  
 25274  // UnmarshalJSON implements the json.Unmarshaller interface for type PrivateLinkServiceListResult.
 25275  func (p *PrivateLinkServiceListResult) UnmarshalJSON(data []byte) error {
 25276  	var rawMsg map[string]json.RawMessage
 25277  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 25278  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25279  	}
 25280  	for key, val := range rawMsg {
 25281  		var err error
 25282  		switch key {
 25283  		case "nextLink":
 25284  			err = unpopulate(val, "NextLink", &p.NextLink)
 25285  			delete(rawMsg, key)
 25286  		case "value":
 25287  			err = unpopulate(val, "Value", &p.Value)
 25288  			delete(rawMsg, key)
 25289  		}
 25290  		if err != nil {
 25291  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25292  		}
 25293  	}
 25294  	return nil
 25295  }
 25296  
 25297  // MarshalJSON implements the json.Marshaller interface for type PrivateLinkServiceProperties.
 25298  func (p PrivateLinkServiceProperties) MarshalJSON() ([]byte, error) {
 25299  	objectMap := make(map[string]any)
 25300  	populate(objectMap, "alias", p.Alias)
 25301  	populate(objectMap, "autoApproval", p.AutoApproval)
 25302  	populate(objectMap, "destinationIPAddress", p.DestinationIPAddress)
 25303  	populate(objectMap, "enableProxyProtocol", p.EnableProxyProtocol)
 25304  	populate(objectMap, "fqdns", p.Fqdns)
 25305  	populate(objectMap, "ipConfigurations", p.IPConfigurations)
 25306  	populate(objectMap, "loadBalancerFrontendIpConfigurations", p.LoadBalancerFrontendIPConfigurations)
 25307  	populate(objectMap, "networkInterfaces", p.NetworkInterfaces)
 25308  	populate(objectMap, "privateEndpointConnections", p.PrivateEndpointConnections)
 25309  	populate(objectMap, "provisioningState", p.ProvisioningState)
 25310  	populate(objectMap, "visibility", p.Visibility)
 25311  	return json.Marshal(objectMap)
 25312  }
 25313  
 25314  // UnmarshalJSON implements the json.Unmarshaller interface for type PrivateLinkServiceProperties.
 25315  func (p *PrivateLinkServiceProperties) UnmarshalJSON(data []byte) error {
 25316  	var rawMsg map[string]json.RawMessage
 25317  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 25318  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25319  	}
 25320  	for key, val := range rawMsg {
 25321  		var err error
 25322  		switch key {
 25323  		case "alias":
 25324  			err = unpopulate(val, "Alias", &p.Alias)
 25325  			delete(rawMsg, key)
 25326  		case "autoApproval":
 25327  			err = unpopulate(val, "AutoApproval", &p.AutoApproval)
 25328  			delete(rawMsg, key)
 25329  		case "destinationIPAddress":
 25330  			err = unpopulate(val, "DestinationIPAddress", &p.DestinationIPAddress)
 25331  			delete(rawMsg, key)
 25332  		case "enableProxyProtocol":
 25333  			err = unpopulate(val, "EnableProxyProtocol", &p.EnableProxyProtocol)
 25334  			delete(rawMsg, key)
 25335  		case "fqdns":
 25336  			err = unpopulate(val, "Fqdns", &p.Fqdns)
 25337  			delete(rawMsg, key)
 25338  		case "ipConfigurations":
 25339  			err = unpopulate(val, "IPConfigurations", &p.IPConfigurations)
 25340  			delete(rawMsg, key)
 25341  		case "loadBalancerFrontendIpConfigurations":
 25342  			err = unpopulate(val, "LoadBalancerFrontendIPConfigurations", &p.LoadBalancerFrontendIPConfigurations)
 25343  			delete(rawMsg, key)
 25344  		case "networkInterfaces":
 25345  			err = unpopulate(val, "NetworkInterfaces", &p.NetworkInterfaces)
 25346  			delete(rawMsg, key)
 25347  		case "privateEndpointConnections":
 25348  			err = unpopulate(val, "PrivateEndpointConnections", &p.PrivateEndpointConnections)
 25349  			delete(rawMsg, key)
 25350  		case "provisioningState":
 25351  			err = unpopulate(val, "ProvisioningState", &p.ProvisioningState)
 25352  			delete(rawMsg, key)
 25353  		case "visibility":
 25354  			err = unpopulate(val, "Visibility", &p.Visibility)
 25355  			delete(rawMsg, key)
 25356  		}
 25357  		if err != nil {
 25358  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25359  		}
 25360  	}
 25361  	return nil
 25362  }
 25363  
 25364  // MarshalJSON implements the json.Marshaller interface for type PrivateLinkServicePropertiesAutoApproval.
 25365  func (p PrivateLinkServicePropertiesAutoApproval) MarshalJSON() ([]byte, error) {
 25366  	objectMap := make(map[string]any)
 25367  	populate(objectMap, "subscriptions", p.Subscriptions)
 25368  	return json.Marshal(objectMap)
 25369  }
 25370  
 25371  // UnmarshalJSON implements the json.Unmarshaller interface for type PrivateLinkServicePropertiesAutoApproval.
 25372  func (p *PrivateLinkServicePropertiesAutoApproval) UnmarshalJSON(data []byte) error {
 25373  	var rawMsg map[string]json.RawMessage
 25374  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 25375  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25376  	}
 25377  	for key, val := range rawMsg {
 25378  		var err error
 25379  		switch key {
 25380  		case "subscriptions":
 25381  			err = unpopulate(val, "Subscriptions", &p.Subscriptions)
 25382  			delete(rawMsg, key)
 25383  		}
 25384  		if err != nil {
 25385  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25386  		}
 25387  	}
 25388  	return nil
 25389  }
 25390  
 25391  // MarshalJSON implements the json.Marshaller interface for type PrivateLinkServicePropertiesVisibility.
 25392  func (p PrivateLinkServicePropertiesVisibility) MarshalJSON() ([]byte, error) {
 25393  	objectMap := make(map[string]any)
 25394  	populate(objectMap, "subscriptions", p.Subscriptions)
 25395  	return json.Marshal(objectMap)
 25396  }
 25397  
 25398  // UnmarshalJSON implements the json.Unmarshaller interface for type PrivateLinkServicePropertiesVisibility.
 25399  func (p *PrivateLinkServicePropertiesVisibility) UnmarshalJSON(data []byte) error {
 25400  	var rawMsg map[string]json.RawMessage
 25401  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 25402  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25403  	}
 25404  	for key, val := range rawMsg {
 25405  		var err error
 25406  		switch key {
 25407  		case "subscriptions":
 25408  			err = unpopulate(val, "Subscriptions", &p.Subscriptions)
 25409  			delete(rawMsg, key)
 25410  		}
 25411  		if err != nil {
 25412  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25413  		}
 25414  	}
 25415  	return nil
 25416  }
 25417  
 25418  // MarshalJSON implements the json.Marshaller interface for type PrivateLinkServiceVisibility.
 25419  func (p PrivateLinkServiceVisibility) MarshalJSON() ([]byte, error) {
 25420  	objectMap := make(map[string]any)
 25421  	populate(objectMap, "visible", p.Visible)
 25422  	return json.Marshal(objectMap)
 25423  }
 25424  
 25425  // UnmarshalJSON implements the json.Unmarshaller interface for type PrivateLinkServiceVisibility.
 25426  func (p *PrivateLinkServiceVisibility) UnmarshalJSON(data []byte) error {
 25427  	var rawMsg map[string]json.RawMessage
 25428  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 25429  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25430  	}
 25431  	for key, val := range rawMsg {
 25432  		var err error
 25433  		switch key {
 25434  		case "visible":
 25435  			err = unpopulate(val, "Visible", &p.Visible)
 25436  			delete(rawMsg, key)
 25437  		}
 25438  		if err != nil {
 25439  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25440  		}
 25441  	}
 25442  	return nil
 25443  }
 25444  
 25445  // MarshalJSON implements the json.Marshaller interface for type Probe.
 25446  func (p Probe) MarshalJSON() ([]byte, error) {
 25447  	objectMap := make(map[string]any)
 25448  	populate(objectMap, "etag", p.Etag)
 25449  	populate(objectMap, "id", p.ID)
 25450  	populate(objectMap, "name", p.Name)
 25451  	populate(objectMap, "properties", p.Properties)
 25452  	populate(objectMap, "type", p.Type)
 25453  	return json.Marshal(objectMap)
 25454  }
 25455  
 25456  // UnmarshalJSON implements the json.Unmarshaller interface for type Probe.
 25457  func (p *Probe) UnmarshalJSON(data []byte) error {
 25458  	var rawMsg map[string]json.RawMessage
 25459  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 25460  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25461  	}
 25462  	for key, val := range rawMsg {
 25463  		var err error
 25464  		switch key {
 25465  		case "etag":
 25466  			err = unpopulate(val, "Etag", &p.Etag)
 25467  			delete(rawMsg, key)
 25468  		case "id":
 25469  			err = unpopulate(val, "ID", &p.ID)
 25470  			delete(rawMsg, key)
 25471  		case "name":
 25472  			err = unpopulate(val, "Name", &p.Name)
 25473  			delete(rawMsg, key)
 25474  		case "properties":
 25475  			err = unpopulate(val, "Properties", &p.Properties)
 25476  			delete(rawMsg, key)
 25477  		case "type":
 25478  			err = unpopulate(val, "Type", &p.Type)
 25479  			delete(rawMsg, key)
 25480  		}
 25481  		if err != nil {
 25482  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25483  		}
 25484  	}
 25485  	return nil
 25486  }
 25487  
 25488  // MarshalJSON implements the json.Marshaller interface for type ProbePropertiesFormat.
 25489  func (p ProbePropertiesFormat) MarshalJSON() ([]byte, error) {
 25490  	objectMap := make(map[string]any)
 25491  	populate(objectMap, "intervalInSeconds", p.IntervalInSeconds)
 25492  	populate(objectMap, "loadBalancingRules", p.LoadBalancingRules)
 25493  	populate(objectMap, "noHealthyBackendsBehavior", p.NoHealthyBackendsBehavior)
 25494  	populate(objectMap, "numberOfProbes", p.NumberOfProbes)
 25495  	populate(objectMap, "port", p.Port)
 25496  	populate(objectMap, "probeThreshold", p.ProbeThreshold)
 25497  	populate(objectMap, "protocol", p.Protocol)
 25498  	populate(objectMap, "provisioningState", p.ProvisioningState)
 25499  	populate(objectMap, "requestPath", p.RequestPath)
 25500  	return json.Marshal(objectMap)
 25501  }
 25502  
 25503  // UnmarshalJSON implements the json.Unmarshaller interface for type ProbePropertiesFormat.
 25504  func (p *ProbePropertiesFormat) UnmarshalJSON(data []byte) error {
 25505  	var rawMsg map[string]json.RawMessage
 25506  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 25507  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25508  	}
 25509  	for key, val := range rawMsg {
 25510  		var err error
 25511  		switch key {
 25512  		case "intervalInSeconds":
 25513  			err = unpopulate(val, "IntervalInSeconds", &p.IntervalInSeconds)
 25514  			delete(rawMsg, key)
 25515  		case "loadBalancingRules":
 25516  			err = unpopulate(val, "LoadBalancingRules", &p.LoadBalancingRules)
 25517  			delete(rawMsg, key)
 25518  		case "noHealthyBackendsBehavior":
 25519  			err = unpopulate(val, "NoHealthyBackendsBehavior", &p.NoHealthyBackendsBehavior)
 25520  			delete(rawMsg, key)
 25521  		case "numberOfProbes":
 25522  			err = unpopulate(val, "NumberOfProbes", &p.NumberOfProbes)
 25523  			delete(rawMsg, key)
 25524  		case "port":
 25525  			err = unpopulate(val, "Port", &p.Port)
 25526  			delete(rawMsg, key)
 25527  		case "probeThreshold":
 25528  			err = unpopulate(val, "ProbeThreshold", &p.ProbeThreshold)
 25529  			delete(rawMsg, key)
 25530  		case "protocol":
 25531  			err = unpopulate(val, "Protocol", &p.Protocol)
 25532  			delete(rawMsg, key)
 25533  		case "provisioningState":
 25534  			err = unpopulate(val, "ProvisioningState", &p.ProvisioningState)
 25535  			delete(rawMsg, key)
 25536  		case "requestPath":
 25537  			err = unpopulate(val, "RequestPath", &p.RequestPath)
 25538  			delete(rawMsg, key)
 25539  		}
 25540  		if err != nil {
 25541  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25542  		}
 25543  	}
 25544  	return nil
 25545  }
 25546  
 25547  // MarshalJSON implements the json.Marshaller interface for type Profile.
 25548  func (p Profile) MarshalJSON() ([]byte, error) {
 25549  	objectMap := make(map[string]any)
 25550  	populate(objectMap, "etag", p.Etag)
 25551  	populate(objectMap, "id", p.ID)
 25552  	populate(objectMap, "location", p.Location)
 25553  	populate(objectMap, "name", p.Name)
 25554  	populate(objectMap, "properties", p.Properties)
 25555  	populate(objectMap, "tags", p.Tags)
 25556  	populate(objectMap, "type", p.Type)
 25557  	return json.Marshal(objectMap)
 25558  }
 25559  
 25560  // UnmarshalJSON implements the json.Unmarshaller interface for type Profile.
 25561  func (p *Profile) UnmarshalJSON(data []byte) error {
 25562  	var rawMsg map[string]json.RawMessage
 25563  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 25564  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25565  	}
 25566  	for key, val := range rawMsg {
 25567  		var err error
 25568  		switch key {
 25569  		case "etag":
 25570  			err = unpopulate(val, "Etag", &p.Etag)
 25571  			delete(rawMsg, key)
 25572  		case "id":
 25573  			err = unpopulate(val, "ID", &p.ID)
 25574  			delete(rawMsg, key)
 25575  		case "location":
 25576  			err = unpopulate(val, "Location", &p.Location)
 25577  			delete(rawMsg, key)
 25578  		case "name":
 25579  			err = unpopulate(val, "Name", &p.Name)
 25580  			delete(rawMsg, key)
 25581  		case "properties":
 25582  			err = unpopulate(val, "Properties", &p.Properties)
 25583  			delete(rawMsg, key)
 25584  		case "tags":
 25585  			err = unpopulate(val, "Tags", &p.Tags)
 25586  			delete(rawMsg, key)
 25587  		case "type":
 25588  			err = unpopulate(val, "Type", &p.Type)
 25589  			delete(rawMsg, key)
 25590  		}
 25591  		if err != nil {
 25592  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25593  		}
 25594  	}
 25595  	return nil
 25596  }
 25597  
 25598  // MarshalJSON implements the json.Marshaller interface for type ProfileListResult.
 25599  func (p ProfileListResult) MarshalJSON() ([]byte, error) {
 25600  	objectMap := make(map[string]any)
 25601  	populate(objectMap, "nextLink", p.NextLink)
 25602  	populate(objectMap, "value", p.Value)
 25603  	return json.Marshal(objectMap)
 25604  }
 25605  
 25606  // UnmarshalJSON implements the json.Unmarshaller interface for type ProfileListResult.
 25607  func (p *ProfileListResult) UnmarshalJSON(data []byte) error {
 25608  	var rawMsg map[string]json.RawMessage
 25609  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 25610  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25611  	}
 25612  	for key, val := range rawMsg {
 25613  		var err error
 25614  		switch key {
 25615  		case "nextLink":
 25616  			err = unpopulate(val, "NextLink", &p.NextLink)
 25617  			delete(rawMsg, key)
 25618  		case "value":
 25619  			err = unpopulate(val, "Value", &p.Value)
 25620  			delete(rawMsg, key)
 25621  		}
 25622  		if err != nil {
 25623  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25624  		}
 25625  	}
 25626  	return nil
 25627  }
 25628  
 25629  // MarshalJSON implements the json.Marshaller interface for type ProfilePropertiesFormat.
 25630  func (p ProfilePropertiesFormat) MarshalJSON() ([]byte, error) {
 25631  	objectMap := make(map[string]any)
 25632  	populate(objectMap, "containerNetworkInterfaceConfigurations", p.ContainerNetworkInterfaceConfigurations)
 25633  	populate(objectMap, "containerNetworkInterfaces", p.ContainerNetworkInterfaces)
 25634  	populate(objectMap, "provisioningState", p.ProvisioningState)
 25635  	populate(objectMap, "resourceGuid", p.ResourceGUID)
 25636  	return json.Marshal(objectMap)
 25637  }
 25638  
 25639  // UnmarshalJSON implements the json.Unmarshaller interface for type ProfilePropertiesFormat.
 25640  func (p *ProfilePropertiesFormat) UnmarshalJSON(data []byte) error {
 25641  	var rawMsg map[string]json.RawMessage
 25642  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 25643  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25644  	}
 25645  	for key, val := range rawMsg {
 25646  		var err error
 25647  		switch key {
 25648  		case "containerNetworkInterfaceConfigurations":
 25649  			err = unpopulate(val, "ContainerNetworkInterfaceConfigurations", &p.ContainerNetworkInterfaceConfigurations)
 25650  			delete(rawMsg, key)
 25651  		case "containerNetworkInterfaces":
 25652  			err = unpopulate(val, "ContainerNetworkInterfaces", &p.ContainerNetworkInterfaces)
 25653  			delete(rawMsg, key)
 25654  		case "provisioningState":
 25655  			err = unpopulate(val, "ProvisioningState", &p.ProvisioningState)
 25656  			delete(rawMsg, key)
 25657  		case "resourceGuid":
 25658  			err = unpopulate(val, "ResourceGUID", &p.ResourceGUID)
 25659  			delete(rawMsg, key)
 25660  		}
 25661  		if err != nil {
 25662  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25663  		}
 25664  	}
 25665  	return nil
 25666  }
 25667  
 25668  // MarshalJSON implements the json.Marshaller interface for type PropagatedRouteTable.
 25669  func (p PropagatedRouteTable) MarshalJSON() ([]byte, error) {
 25670  	objectMap := make(map[string]any)
 25671  	populate(objectMap, "ids", p.IDs)
 25672  	populate(objectMap, "labels", p.Labels)
 25673  	return json.Marshal(objectMap)
 25674  }
 25675  
 25676  // UnmarshalJSON implements the json.Unmarshaller interface for type PropagatedRouteTable.
 25677  func (p *PropagatedRouteTable) UnmarshalJSON(data []byte) error {
 25678  	var rawMsg map[string]json.RawMessage
 25679  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 25680  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25681  	}
 25682  	for key, val := range rawMsg {
 25683  		var err error
 25684  		switch key {
 25685  		case "ids":
 25686  			err = unpopulate(val, "IDs", &p.IDs)
 25687  			delete(rawMsg, key)
 25688  		case "labels":
 25689  			err = unpopulate(val, "Labels", &p.Labels)
 25690  			delete(rawMsg, key)
 25691  		}
 25692  		if err != nil {
 25693  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25694  		}
 25695  	}
 25696  	return nil
 25697  }
 25698  
 25699  // MarshalJSON implements the json.Marshaller interface for type ProtocolConfiguration.
 25700  func (p ProtocolConfiguration) MarshalJSON() ([]byte, error) {
 25701  	objectMap := make(map[string]any)
 25702  	populate(objectMap, "HTTPConfiguration", p.HTTPConfiguration)
 25703  	return json.Marshal(objectMap)
 25704  }
 25705  
 25706  // UnmarshalJSON implements the json.Unmarshaller interface for type ProtocolConfiguration.
 25707  func (p *ProtocolConfiguration) UnmarshalJSON(data []byte) error {
 25708  	var rawMsg map[string]json.RawMessage
 25709  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 25710  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25711  	}
 25712  	for key, val := range rawMsg {
 25713  		var err error
 25714  		switch key {
 25715  		case "HTTPConfiguration":
 25716  			err = unpopulate(val, "HTTPConfiguration", &p.HTTPConfiguration)
 25717  			delete(rawMsg, key)
 25718  		}
 25719  		if err != nil {
 25720  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25721  		}
 25722  	}
 25723  	return nil
 25724  }
 25725  
 25726  // MarshalJSON implements the json.Marshaller interface for type PublicIPAddress.
 25727  func (p PublicIPAddress) MarshalJSON() ([]byte, error) {
 25728  	objectMap := make(map[string]any)
 25729  	populate(objectMap, "etag", p.Etag)
 25730  	populate(objectMap, "extendedLocation", p.ExtendedLocation)
 25731  	populate(objectMap, "id", p.ID)
 25732  	populate(objectMap, "location", p.Location)
 25733  	populate(objectMap, "name", p.Name)
 25734  	populate(objectMap, "properties", p.Properties)
 25735  	populate(objectMap, "sku", p.SKU)
 25736  	populate(objectMap, "tags", p.Tags)
 25737  	populate(objectMap, "type", p.Type)
 25738  	populate(objectMap, "zones", p.Zones)
 25739  	return json.Marshal(objectMap)
 25740  }
 25741  
 25742  // UnmarshalJSON implements the json.Unmarshaller interface for type PublicIPAddress.
 25743  func (p *PublicIPAddress) UnmarshalJSON(data []byte) error {
 25744  	var rawMsg map[string]json.RawMessage
 25745  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 25746  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25747  	}
 25748  	for key, val := range rawMsg {
 25749  		var err error
 25750  		switch key {
 25751  		case "etag":
 25752  			err = unpopulate(val, "Etag", &p.Etag)
 25753  			delete(rawMsg, key)
 25754  		case "extendedLocation":
 25755  			err = unpopulate(val, "ExtendedLocation", &p.ExtendedLocation)
 25756  			delete(rawMsg, key)
 25757  		case "id":
 25758  			err = unpopulate(val, "ID", &p.ID)
 25759  			delete(rawMsg, key)
 25760  		case "location":
 25761  			err = unpopulate(val, "Location", &p.Location)
 25762  			delete(rawMsg, key)
 25763  		case "name":
 25764  			err = unpopulate(val, "Name", &p.Name)
 25765  			delete(rawMsg, key)
 25766  		case "properties":
 25767  			err = unpopulate(val, "Properties", &p.Properties)
 25768  			delete(rawMsg, key)
 25769  		case "sku":
 25770  			err = unpopulate(val, "SKU", &p.SKU)
 25771  			delete(rawMsg, key)
 25772  		case "tags":
 25773  			err = unpopulate(val, "Tags", &p.Tags)
 25774  			delete(rawMsg, key)
 25775  		case "type":
 25776  			err = unpopulate(val, "Type", &p.Type)
 25777  			delete(rawMsg, key)
 25778  		case "zones":
 25779  			err = unpopulate(val, "Zones", &p.Zones)
 25780  			delete(rawMsg, key)
 25781  		}
 25782  		if err != nil {
 25783  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25784  		}
 25785  	}
 25786  	return nil
 25787  }
 25788  
 25789  // MarshalJSON implements the json.Marshaller interface for type PublicIPAddressDNSSettings.
 25790  func (p PublicIPAddressDNSSettings) MarshalJSON() ([]byte, error) {
 25791  	objectMap := make(map[string]any)
 25792  	populate(objectMap, "domainNameLabel", p.DomainNameLabel)
 25793  	populate(objectMap, "domainNameLabelScope", p.DomainNameLabelScope)
 25794  	populate(objectMap, "fqdn", p.Fqdn)
 25795  	populate(objectMap, "reverseFqdn", p.ReverseFqdn)
 25796  	return json.Marshal(objectMap)
 25797  }
 25798  
 25799  // UnmarshalJSON implements the json.Unmarshaller interface for type PublicIPAddressDNSSettings.
 25800  func (p *PublicIPAddressDNSSettings) UnmarshalJSON(data []byte) error {
 25801  	var rawMsg map[string]json.RawMessage
 25802  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 25803  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25804  	}
 25805  	for key, val := range rawMsg {
 25806  		var err error
 25807  		switch key {
 25808  		case "domainNameLabel":
 25809  			err = unpopulate(val, "DomainNameLabel", &p.DomainNameLabel)
 25810  			delete(rawMsg, key)
 25811  		case "domainNameLabelScope":
 25812  			err = unpopulate(val, "DomainNameLabelScope", &p.DomainNameLabelScope)
 25813  			delete(rawMsg, key)
 25814  		case "fqdn":
 25815  			err = unpopulate(val, "Fqdn", &p.Fqdn)
 25816  			delete(rawMsg, key)
 25817  		case "reverseFqdn":
 25818  			err = unpopulate(val, "ReverseFqdn", &p.ReverseFqdn)
 25819  			delete(rawMsg, key)
 25820  		}
 25821  		if err != nil {
 25822  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25823  		}
 25824  	}
 25825  	return nil
 25826  }
 25827  
 25828  // MarshalJSON implements the json.Marshaller interface for type PublicIPAddressListResult.
 25829  func (p PublicIPAddressListResult) MarshalJSON() ([]byte, error) {
 25830  	objectMap := make(map[string]any)
 25831  	populate(objectMap, "nextLink", p.NextLink)
 25832  	populate(objectMap, "value", p.Value)
 25833  	return json.Marshal(objectMap)
 25834  }
 25835  
 25836  // UnmarshalJSON implements the json.Unmarshaller interface for type PublicIPAddressListResult.
 25837  func (p *PublicIPAddressListResult) UnmarshalJSON(data []byte) error {
 25838  	var rawMsg map[string]json.RawMessage
 25839  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 25840  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25841  	}
 25842  	for key, val := range rawMsg {
 25843  		var err error
 25844  		switch key {
 25845  		case "nextLink":
 25846  			err = unpopulate(val, "NextLink", &p.NextLink)
 25847  			delete(rawMsg, key)
 25848  		case "value":
 25849  			err = unpopulate(val, "Value", &p.Value)
 25850  			delete(rawMsg, key)
 25851  		}
 25852  		if err != nil {
 25853  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25854  		}
 25855  	}
 25856  	return nil
 25857  }
 25858  
 25859  // MarshalJSON implements the json.Marshaller interface for type PublicIPAddressPropertiesFormat.
 25860  func (p PublicIPAddressPropertiesFormat) MarshalJSON() ([]byte, error) {
 25861  	objectMap := make(map[string]any)
 25862  	populate(objectMap, "dnsSettings", p.DNSSettings)
 25863  	populate(objectMap, "ddosSettings", p.DdosSettings)
 25864  	populate(objectMap, "deleteOption", p.DeleteOption)
 25865  	populate(objectMap, "ipAddress", p.IPAddress)
 25866  	populate(objectMap, "ipConfiguration", p.IPConfiguration)
 25867  	populate(objectMap, "ipTags", p.IPTags)
 25868  	populate(objectMap, "idleTimeoutInMinutes", p.IdleTimeoutInMinutes)
 25869  	populate(objectMap, "linkedPublicIPAddress", p.LinkedPublicIPAddress)
 25870  	populate(objectMap, "migrationPhase", p.MigrationPhase)
 25871  	populate(objectMap, "natGateway", p.NatGateway)
 25872  	populate(objectMap, "provisioningState", p.ProvisioningState)
 25873  	populate(objectMap, "publicIPAddressVersion", p.PublicIPAddressVersion)
 25874  	populate(objectMap, "publicIPAllocationMethod", p.PublicIPAllocationMethod)
 25875  	populate(objectMap, "publicIPPrefix", p.PublicIPPrefix)
 25876  	populate(objectMap, "resourceGuid", p.ResourceGUID)
 25877  	populate(objectMap, "servicePublicIPAddress", p.ServicePublicIPAddress)
 25878  	return json.Marshal(objectMap)
 25879  }
 25880  
 25881  // UnmarshalJSON implements the json.Unmarshaller interface for type PublicIPAddressPropertiesFormat.
 25882  func (p *PublicIPAddressPropertiesFormat) UnmarshalJSON(data []byte) error {
 25883  	var rawMsg map[string]json.RawMessage
 25884  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 25885  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25886  	}
 25887  	for key, val := range rawMsg {
 25888  		var err error
 25889  		switch key {
 25890  		case "dnsSettings":
 25891  			err = unpopulate(val, "DNSSettings", &p.DNSSettings)
 25892  			delete(rawMsg, key)
 25893  		case "ddosSettings":
 25894  			err = unpopulate(val, "DdosSettings", &p.DdosSettings)
 25895  			delete(rawMsg, key)
 25896  		case "deleteOption":
 25897  			err = unpopulate(val, "DeleteOption", &p.DeleteOption)
 25898  			delete(rawMsg, key)
 25899  		case "ipAddress":
 25900  			err = unpopulate(val, "IPAddress", &p.IPAddress)
 25901  			delete(rawMsg, key)
 25902  		case "ipConfiguration":
 25903  			err = unpopulate(val, "IPConfiguration", &p.IPConfiguration)
 25904  			delete(rawMsg, key)
 25905  		case "ipTags":
 25906  			err = unpopulate(val, "IPTags", &p.IPTags)
 25907  			delete(rawMsg, key)
 25908  		case "idleTimeoutInMinutes":
 25909  			err = unpopulate(val, "IdleTimeoutInMinutes", &p.IdleTimeoutInMinutes)
 25910  			delete(rawMsg, key)
 25911  		case "linkedPublicIPAddress":
 25912  			err = unpopulate(val, "LinkedPublicIPAddress", &p.LinkedPublicIPAddress)
 25913  			delete(rawMsg, key)
 25914  		case "migrationPhase":
 25915  			err = unpopulate(val, "MigrationPhase", &p.MigrationPhase)
 25916  			delete(rawMsg, key)
 25917  		case "natGateway":
 25918  			err = unpopulate(val, "NatGateway", &p.NatGateway)
 25919  			delete(rawMsg, key)
 25920  		case "provisioningState":
 25921  			err = unpopulate(val, "ProvisioningState", &p.ProvisioningState)
 25922  			delete(rawMsg, key)
 25923  		case "publicIPAddressVersion":
 25924  			err = unpopulate(val, "PublicIPAddressVersion", &p.PublicIPAddressVersion)
 25925  			delete(rawMsg, key)
 25926  		case "publicIPAllocationMethod":
 25927  			err = unpopulate(val, "PublicIPAllocationMethod", &p.PublicIPAllocationMethod)
 25928  			delete(rawMsg, key)
 25929  		case "publicIPPrefix":
 25930  			err = unpopulate(val, "PublicIPPrefix", &p.PublicIPPrefix)
 25931  			delete(rawMsg, key)
 25932  		case "resourceGuid":
 25933  			err = unpopulate(val, "ResourceGUID", &p.ResourceGUID)
 25934  			delete(rawMsg, key)
 25935  		case "servicePublicIPAddress":
 25936  			err = unpopulate(val, "ServicePublicIPAddress", &p.ServicePublicIPAddress)
 25937  			delete(rawMsg, key)
 25938  		}
 25939  		if err != nil {
 25940  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25941  		}
 25942  	}
 25943  	return nil
 25944  }
 25945  
 25946  // MarshalJSON implements the json.Marshaller interface for type PublicIPAddressSKU.
 25947  func (p PublicIPAddressSKU) MarshalJSON() ([]byte, error) {
 25948  	objectMap := make(map[string]any)
 25949  	populate(objectMap, "name", p.Name)
 25950  	populate(objectMap, "tier", p.Tier)
 25951  	return json.Marshal(objectMap)
 25952  }
 25953  
 25954  // UnmarshalJSON implements the json.Unmarshaller interface for type PublicIPAddressSKU.
 25955  func (p *PublicIPAddressSKU) UnmarshalJSON(data []byte) error {
 25956  	var rawMsg map[string]json.RawMessage
 25957  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 25958  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25959  	}
 25960  	for key, val := range rawMsg {
 25961  		var err error
 25962  		switch key {
 25963  		case "name":
 25964  			err = unpopulate(val, "Name", &p.Name)
 25965  			delete(rawMsg, key)
 25966  		case "tier":
 25967  			err = unpopulate(val, "Tier", &p.Tier)
 25968  			delete(rawMsg, key)
 25969  		}
 25970  		if err != nil {
 25971  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25972  		}
 25973  	}
 25974  	return nil
 25975  }
 25976  
 25977  // MarshalJSON implements the json.Marshaller interface for type PublicIPDdosProtectionStatusResult.
 25978  func (p PublicIPDdosProtectionStatusResult) MarshalJSON() ([]byte, error) {
 25979  	objectMap := make(map[string]any)
 25980  	populate(objectMap, "ddosProtectionPlanId", p.DdosProtectionPlanID)
 25981  	populate(objectMap, "isWorkloadProtected", p.IsWorkloadProtected)
 25982  	populate(objectMap, "publicIpAddress", p.PublicIPAddress)
 25983  	populate(objectMap, "publicIpAddressId", p.PublicIPAddressID)
 25984  	return json.Marshal(objectMap)
 25985  }
 25986  
 25987  // UnmarshalJSON implements the json.Unmarshaller interface for type PublicIPDdosProtectionStatusResult.
 25988  func (p *PublicIPDdosProtectionStatusResult) UnmarshalJSON(data []byte) error {
 25989  	var rawMsg map[string]json.RawMessage
 25990  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 25991  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 25992  	}
 25993  	for key, val := range rawMsg {
 25994  		var err error
 25995  		switch key {
 25996  		case "ddosProtectionPlanId":
 25997  			err = unpopulate(val, "DdosProtectionPlanID", &p.DdosProtectionPlanID)
 25998  			delete(rawMsg, key)
 25999  		case "isWorkloadProtected":
 26000  			err = unpopulate(val, "IsWorkloadProtected", &p.IsWorkloadProtected)
 26001  			delete(rawMsg, key)
 26002  		case "publicIpAddress":
 26003  			err = unpopulate(val, "PublicIPAddress", &p.PublicIPAddress)
 26004  			delete(rawMsg, key)
 26005  		case "publicIpAddressId":
 26006  			err = unpopulate(val, "PublicIPAddressID", &p.PublicIPAddressID)
 26007  			delete(rawMsg, key)
 26008  		}
 26009  		if err != nil {
 26010  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 26011  		}
 26012  	}
 26013  	return nil
 26014  }
 26015  
 26016  // MarshalJSON implements the json.Marshaller interface for type PublicIPPrefix.
 26017  func (p PublicIPPrefix) MarshalJSON() ([]byte, error) {
 26018  	objectMap := make(map[string]any)
 26019  	populate(objectMap, "etag", p.Etag)
 26020  	populate(objectMap, "extendedLocation", p.ExtendedLocation)
 26021  	populate(objectMap, "id", p.ID)
 26022  	populate(objectMap, "location", p.Location)
 26023  	populate(objectMap, "name", p.Name)
 26024  	populate(objectMap, "properties", p.Properties)
 26025  	populate(objectMap, "sku", p.SKU)
 26026  	populate(objectMap, "tags", p.Tags)
 26027  	populate(objectMap, "type", p.Type)
 26028  	populate(objectMap, "zones", p.Zones)
 26029  	return json.Marshal(objectMap)
 26030  }
 26031  
 26032  // UnmarshalJSON implements the json.Unmarshaller interface for type PublicIPPrefix.
 26033  func (p *PublicIPPrefix) UnmarshalJSON(data []byte) error {
 26034  	var rawMsg map[string]json.RawMessage
 26035  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26036  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 26037  	}
 26038  	for key, val := range rawMsg {
 26039  		var err error
 26040  		switch key {
 26041  		case "etag":
 26042  			err = unpopulate(val, "Etag", &p.Etag)
 26043  			delete(rawMsg, key)
 26044  		case "extendedLocation":
 26045  			err = unpopulate(val, "ExtendedLocation", &p.ExtendedLocation)
 26046  			delete(rawMsg, key)
 26047  		case "id":
 26048  			err = unpopulate(val, "ID", &p.ID)
 26049  			delete(rawMsg, key)
 26050  		case "location":
 26051  			err = unpopulate(val, "Location", &p.Location)
 26052  			delete(rawMsg, key)
 26053  		case "name":
 26054  			err = unpopulate(val, "Name", &p.Name)
 26055  			delete(rawMsg, key)
 26056  		case "properties":
 26057  			err = unpopulate(val, "Properties", &p.Properties)
 26058  			delete(rawMsg, key)
 26059  		case "sku":
 26060  			err = unpopulate(val, "SKU", &p.SKU)
 26061  			delete(rawMsg, key)
 26062  		case "tags":
 26063  			err = unpopulate(val, "Tags", &p.Tags)
 26064  			delete(rawMsg, key)
 26065  		case "type":
 26066  			err = unpopulate(val, "Type", &p.Type)
 26067  			delete(rawMsg, key)
 26068  		case "zones":
 26069  			err = unpopulate(val, "Zones", &p.Zones)
 26070  			delete(rawMsg, key)
 26071  		}
 26072  		if err != nil {
 26073  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 26074  		}
 26075  	}
 26076  	return nil
 26077  }
 26078  
 26079  // MarshalJSON implements the json.Marshaller interface for type PublicIPPrefixListResult.
 26080  func (p PublicIPPrefixListResult) MarshalJSON() ([]byte, error) {
 26081  	objectMap := make(map[string]any)
 26082  	populate(objectMap, "nextLink", p.NextLink)
 26083  	populate(objectMap, "value", p.Value)
 26084  	return json.Marshal(objectMap)
 26085  }
 26086  
 26087  // UnmarshalJSON implements the json.Unmarshaller interface for type PublicIPPrefixListResult.
 26088  func (p *PublicIPPrefixListResult) UnmarshalJSON(data []byte) error {
 26089  	var rawMsg map[string]json.RawMessage
 26090  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26091  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 26092  	}
 26093  	for key, val := range rawMsg {
 26094  		var err error
 26095  		switch key {
 26096  		case "nextLink":
 26097  			err = unpopulate(val, "NextLink", &p.NextLink)
 26098  			delete(rawMsg, key)
 26099  		case "value":
 26100  			err = unpopulate(val, "Value", &p.Value)
 26101  			delete(rawMsg, key)
 26102  		}
 26103  		if err != nil {
 26104  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 26105  		}
 26106  	}
 26107  	return nil
 26108  }
 26109  
 26110  // MarshalJSON implements the json.Marshaller interface for type PublicIPPrefixPropertiesFormat.
 26111  func (p PublicIPPrefixPropertiesFormat) MarshalJSON() ([]byte, error) {
 26112  	objectMap := make(map[string]any)
 26113  	populate(objectMap, "customIPPrefix", p.CustomIPPrefix)
 26114  	populate(objectMap, "ipPrefix", p.IPPrefix)
 26115  	populate(objectMap, "ipTags", p.IPTags)
 26116  	populate(objectMap, "loadBalancerFrontendIpConfiguration", p.LoadBalancerFrontendIPConfiguration)
 26117  	populate(objectMap, "natGateway", p.NatGateway)
 26118  	populate(objectMap, "prefixLength", p.PrefixLength)
 26119  	populate(objectMap, "provisioningState", p.ProvisioningState)
 26120  	populate(objectMap, "publicIPAddressVersion", p.PublicIPAddressVersion)
 26121  	populate(objectMap, "publicIPAddresses", p.PublicIPAddresses)
 26122  	populate(objectMap, "resourceGuid", p.ResourceGUID)
 26123  	return json.Marshal(objectMap)
 26124  }
 26125  
 26126  // UnmarshalJSON implements the json.Unmarshaller interface for type PublicIPPrefixPropertiesFormat.
 26127  func (p *PublicIPPrefixPropertiesFormat) UnmarshalJSON(data []byte) error {
 26128  	var rawMsg map[string]json.RawMessage
 26129  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26130  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 26131  	}
 26132  	for key, val := range rawMsg {
 26133  		var err error
 26134  		switch key {
 26135  		case "customIPPrefix":
 26136  			err = unpopulate(val, "CustomIPPrefix", &p.CustomIPPrefix)
 26137  			delete(rawMsg, key)
 26138  		case "ipPrefix":
 26139  			err = unpopulate(val, "IPPrefix", &p.IPPrefix)
 26140  			delete(rawMsg, key)
 26141  		case "ipTags":
 26142  			err = unpopulate(val, "IPTags", &p.IPTags)
 26143  			delete(rawMsg, key)
 26144  		case "loadBalancerFrontendIpConfiguration":
 26145  			err = unpopulate(val, "LoadBalancerFrontendIPConfiguration", &p.LoadBalancerFrontendIPConfiguration)
 26146  			delete(rawMsg, key)
 26147  		case "natGateway":
 26148  			err = unpopulate(val, "NatGateway", &p.NatGateway)
 26149  			delete(rawMsg, key)
 26150  		case "prefixLength":
 26151  			err = unpopulate(val, "PrefixLength", &p.PrefixLength)
 26152  			delete(rawMsg, key)
 26153  		case "provisioningState":
 26154  			err = unpopulate(val, "ProvisioningState", &p.ProvisioningState)
 26155  			delete(rawMsg, key)
 26156  		case "publicIPAddressVersion":
 26157  			err = unpopulate(val, "PublicIPAddressVersion", &p.PublicIPAddressVersion)
 26158  			delete(rawMsg, key)
 26159  		case "publicIPAddresses":
 26160  			err = unpopulate(val, "PublicIPAddresses", &p.PublicIPAddresses)
 26161  			delete(rawMsg, key)
 26162  		case "resourceGuid":
 26163  			err = unpopulate(val, "ResourceGUID", &p.ResourceGUID)
 26164  			delete(rawMsg, key)
 26165  		}
 26166  		if err != nil {
 26167  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 26168  		}
 26169  	}
 26170  	return nil
 26171  }
 26172  
 26173  // MarshalJSON implements the json.Marshaller interface for type PublicIPPrefixSKU.
 26174  func (p PublicIPPrefixSKU) MarshalJSON() ([]byte, error) {
 26175  	objectMap := make(map[string]any)
 26176  	populate(objectMap, "name", p.Name)
 26177  	populate(objectMap, "tier", p.Tier)
 26178  	return json.Marshal(objectMap)
 26179  }
 26180  
 26181  // UnmarshalJSON implements the json.Unmarshaller interface for type PublicIPPrefixSKU.
 26182  func (p *PublicIPPrefixSKU) UnmarshalJSON(data []byte) error {
 26183  	var rawMsg map[string]json.RawMessage
 26184  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26185  		return fmt.Errorf("unmarshalling type %T: %v", p, err)
 26186  	}
 26187  	for key, val := range rawMsg {
 26188  		var err error
 26189  		switch key {
 26190  		case "name":
 26191  			err = unpopulate(val, "Name", &p.Name)
 26192  			delete(rawMsg, key)
 26193  		case "tier":
 26194  			err = unpopulate(val, "Tier", &p.Tier)
 26195  			delete(rawMsg, key)
 26196  		}
 26197  		if err != nil {
 26198  			return fmt.Errorf("unmarshalling type %T: %v", p, err)
 26199  		}
 26200  	}
 26201  	return nil
 26202  }
 26203  
 26204  // MarshalJSON implements the json.Marshaller interface for type QosDefinition.
 26205  func (q QosDefinition) MarshalJSON() ([]byte, error) {
 26206  	objectMap := make(map[string]any)
 26207  	populate(objectMap, "destinationIpRanges", q.DestinationIPRanges)
 26208  	populate(objectMap, "destinationPortRanges", q.DestinationPortRanges)
 26209  	populate(objectMap, "markings", q.Markings)
 26210  	populate(objectMap, "protocol", q.Protocol)
 26211  	populate(objectMap, "sourceIpRanges", q.SourceIPRanges)
 26212  	populate(objectMap, "sourcePortRanges", q.SourcePortRanges)
 26213  	return json.Marshal(objectMap)
 26214  }
 26215  
 26216  // UnmarshalJSON implements the json.Unmarshaller interface for type QosDefinition.
 26217  func (q *QosDefinition) UnmarshalJSON(data []byte) error {
 26218  	var rawMsg map[string]json.RawMessage
 26219  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26220  		return fmt.Errorf("unmarshalling type %T: %v", q, err)
 26221  	}
 26222  	for key, val := range rawMsg {
 26223  		var err error
 26224  		switch key {
 26225  		case "destinationIpRanges":
 26226  			err = unpopulate(val, "DestinationIPRanges", &q.DestinationIPRanges)
 26227  			delete(rawMsg, key)
 26228  		case "destinationPortRanges":
 26229  			err = unpopulate(val, "DestinationPortRanges", &q.DestinationPortRanges)
 26230  			delete(rawMsg, key)
 26231  		case "markings":
 26232  			err = unpopulate(val, "Markings", &q.Markings)
 26233  			delete(rawMsg, key)
 26234  		case "protocol":
 26235  			err = unpopulate(val, "Protocol", &q.Protocol)
 26236  			delete(rawMsg, key)
 26237  		case "sourceIpRanges":
 26238  			err = unpopulate(val, "SourceIPRanges", &q.SourceIPRanges)
 26239  			delete(rawMsg, key)
 26240  		case "sourcePortRanges":
 26241  			err = unpopulate(val, "SourcePortRanges", &q.SourcePortRanges)
 26242  			delete(rawMsg, key)
 26243  		}
 26244  		if err != nil {
 26245  			return fmt.Errorf("unmarshalling type %T: %v", q, err)
 26246  		}
 26247  	}
 26248  	return nil
 26249  }
 26250  
 26251  // MarshalJSON implements the json.Marshaller interface for type QosIPRange.
 26252  func (q QosIPRange) MarshalJSON() ([]byte, error) {
 26253  	objectMap := make(map[string]any)
 26254  	populate(objectMap, "endIP", q.EndIP)
 26255  	populate(objectMap, "startIP", q.StartIP)
 26256  	return json.Marshal(objectMap)
 26257  }
 26258  
 26259  // UnmarshalJSON implements the json.Unmarshaller interface for type QosIPRange.
 26260  func (q *QosIPRange) UnmarshalJSON(data []byte) error {
 26261  	var rawMsg map[string]json.RawMessage
 26262  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26263  		return fmt.Errorf("unmarshalling type %T: %v", q, err)
 26264  	}
 26265  	for key, val := range rawMsg {
 26266  		var err error
 26267  		switch key {
 26268  		case "endIP":
 26269  			err = unpopulate(val, "EndIP", &q.EndIP)
 26270  			delete(rawMsg, key)
 26271  		case "startIP":
 26272  			err = unpopulate(val, "StartIP", &q.StartIP)
 26273  			delete(rawMsg, key)
 26274  		}
 26275  		if err != nil {
 26276  			return fmt.Errorf("unmarshalling type %T: %v", q, err)
 26277  		}
 26278  	}
 26279  	return nil
 26280  }
 26281  
 26282  // MarshalJSON implements the json.Marshaller interface for type QosPortRange.
 26283  func (q QosPortRange) MarshalJSON() ([]byte, error) {
 26284  	objectMap := make(map[string]any)
 26285  	populate(objectMap, "end", q.End)
 26286  	populate(objectMap, "start", q.Start)
 26287  	return json.Marshal(objectMap)
 26288  }
 26289  
 26290  // UnmarshalJSON implements the json.Unmarshaller interface for type QosPortRange.
 26291  func (q *QosPortRange) UnmarshalJSON(data []byte) error {
 26292  	var rawMsg map[string]json.RawMessage
 26293  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26294  		return fmt.Errorf("unmarshalling type %T: %v", q, err)
 26295  	}
 26296  	for key, val := range rawMsg {
 26297  		var err error
 26298  		switch key {
 26299  		case "end":
 26300  			err = unpopulate(val, "End", &q.End)
 26301  			delete(rawMsg, key)
 26302  		case "start":
 26303  			err = unpopulate(val, "Start", &q.Start)
 26304  			delete(rawMsg, key)
 26305  		}
 26306  		if err != nil {
 26307  			return fmt.Errorf("unmarshalling type %T: %v", q, err)
 26308  		}
 26309  	}
 26310  	return nil
 26311  }
 26312  
 26313  // MarshalJSON implements the json.Marshaller interface for type QueryInboundNatRulePortMappingRequest.
 26314  func (q QueryInboundNatRulePortMappingRequest) MarshalJSON() ([]byte, error) {
 26315  	objectMap := make(map[string]any)
 26316  	populate(objectMap, "ipAddress", q.IPAddress)
 26317  	populate(objectMap, "ipConfiguration", q.IPConfiguration)
 26318  	return json.Marshal(objectMap)
 26319  }
 26320  
 26321  // UnmarshalJSON implements the json.Unmarshaller interface for type QueryInboundNatRulePortMappingRequest.
 26322  func (q *QueryInboundNatRulePortMappingRequest) UnmarshalJSON(data []byte) error {
 26323  	var rawMsg map[string]json.RawMessage
 26324  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26325  		return fmt.Errorf("unmarshalling type %T: %v", q, err)
 26326  	}
 26327  	for key, val := range rawMsg {
 26328  		var err error
 26329  		switch key {
 26330  		case "ipAddress":
 26331  			err = unpopulate(val, "IPAddress", &q.IPAddress)
 26332  			delete(rawMsg, key)
 26333  		case "ipConfiguration":
 26334  			err = unpopulate(val, "IPConfiguration", &q.IPConfiguration)
 26335  			delete(rawMsg, key)
 26336  		}
 26337  		if err != nil {
 26338  			return fmt.Errorf("unmarshalling type %T: %v", q, err)
 26339  		}
 26340  	}
 26341  	return nil
 26342  }
 26343  
 26344  // MarshalJSON implements the json.Marshaller interface for type QueryRequestOptions.
 26345  func (q QueryRequestOptions) MarshalJSON() ([]byte, error) {
 26346  	objectMap := make(map[string]any)
 26347  	populate(objectMap, "skipToken", q.SkipToken)
 26348  	return json.Marshal(objectMap)
 26349  }
 26350  
 26351  // UnmarshalJSON implements the json.Unmarshaller interface for type QueryRequestOptions.
 26352  func (q *QueryRequestOptions) UnmarshalJSON(data []byte) error {
 26353  	var rawMsg map[string]json.RawMessage
 26354  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26355  		return fmt.Errorf("unmarshalling type %T: %v", q, err)
 26356  	}
 26357  	for key, val := range rawMsg {
 26358  		var err error
 26359  		switch key {
 26360  		case "skipToken":
 26361  			err = unpopulate(val, "SkipToken", &q.SkipToken)
 26362  			delete(rawMsg, key)
 26363  		}
 26364  		if err != nil {
 26365  			return fmt.Errorf("unmarshalling type %T: %v", q, err)
 26366  		}
 26367  	}
 26368  	return nil
 26369  }
 26370  
 26371  // MarshalJSON implements the json.Marshaller interface for type QueryResults.
 26372  func (q QueryResults) MarshalJSON() ([]byte, error) {
 26373  	objectMap := make(map[string]any)
 26374  	populate(objectMap, "matchingRecordsCount", q.MatchingRecordsCount)
 26375  	populate(objectMap, "signatures", q.Signatures)
 26376  	return json.Marshal(objectMap)
 26377  }
 26378  
 26379  // UnmarshalJSON implements the json.Unmarshaller interface for type QueryResults.
 26380  func (q *QueryResults) UnmarshalJSON(data []byte) error {
 26381  	var rawMsg map[string]json.RawMessage
 26382  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26383  		return fmt.Errorf("unmarshalling type %T: %v", q, err)
 26384  	}
 26385  	for key, val := range rawMsg {
 26386  		var err error
 26387  		switch key {
 26388  		case "matchingRecordsCount":
 26389  			err = unpopulate(val, "MatchingRecordsCount", &q.MatchingRecordsCount)
 26390  			delete(rawMsg, key)
 26391  		case "signatures":
 26392  			err = unpopulate(val, "Signatures", &q.Signatures)
 26393  			delete(rawMsg, key)
 26394  		}
 26395  		if err != nil {
 26396  			return fmt.Errorf("unmarshalling type %T: %v", q, err)
 26397  		}
 26398  	}
 26399  	return nil
 26400  }
 26401  
 26402  // MarshalJSON implements the json.Marshaller interface for type QueryTroubleshootingParameters.
 26403  func (q QueryTroubleshootingParameters) MarshalJSON() ([]byte, error) {
 26404  	objectMap := make(map[string]any)
 26405  	populate(objectMap, "targetResourceId", q.TargetResourceID)
 26406  	return json.Marshal(objectMap)
 26407  }
 26408  
 26409  // UnmarshalJSON implements the json.Unmarshaller interface for type QueryTroubleshootingParameters.
 26410  func (q *QueryTroubleshootingParameters) UnmarshalJSON(data []byte) error {
 26411  	var rawMsg map[string]json.RawMessage
 26412  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26413  		return fmt.Errorf("unmarshalling type %T: %v", q, err)
 26414  	}
 26415  	for key, val := range rawMsg {
 26416  		var err error
 26417  		switch key {
 26418  		case "targetResourceId":
 26419  			err = unpopulate(val, "TargetResourceID", &q.TargetResourceID)
 26420  			delete(rawMsg, key)
 26421  		}
 26422  		if err != nil {
 26423  			return fmt.Errorf("unmarshalling type %T: %v", q, err)
 26424  		}
 26425  	}
 26426  	return nil
 26427  }
 26428  
 26429  // MarshalJSON implements the json.Marshaller interface for type RadiusServer.
 26430  func (r RadiusServer) MarshalJSON() ([]byte, error) {
 26431  	objectMap := make(map[string]any)
 26432  	populate(objectMap, "radiusServerAddress", r.RadiusServerAddress)
 26433  	populate(objectMap, "radiusServerScore", r.RadiusServerScore)
 26434  	populate(objectMap, "radiusServerSecret", r.RadiusServerSecret)
 26435  	return json.Marshal(objectMap)
 26436  }
 26437  
 26438  // UnmarshalJSON implements the json.Unmarshaller interface for type RadiusServer.
 26439  func (r *RadiusServer) UnmarshalJSON(data []byte) error {
 26440  	var rawMsg map[string]json.RawMessage
 26441  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26442  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26443  	}
 26444  	for key, val := range rawMsg {
 26445  		var err error
 26446  		switch key {
 26447  		case "radiusServerAddress":
 26448  			err = unpopulate(val, "RadiusServerAddress", &r.RadiusServerAddress)
 26449  			delete(rawMsg, key)
 26450  		case "radiusServerScore":
 26451  			err = unpopulate(val, "RadiusServerScore", &r.RadiusServerScore)
 26452  			delete(rawMsg, key)
 26453  		case "radiusServerSecret":
 26454  			err = unpopulate(val, "RadiusServerSecret", &r.RadiusServerSecret)
 26455  			delete(rawMsg, key)
 26456  		}
 26457  		if err != nil {
 26458  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26459  		}
 26460  	}
 26461  	return nil
 26462  }
 26463  
 26464  // MarshalJSON implements the json.Marshaller interface for type ReachabilityAnalysisIntent.
 26465  func (r ReachabilityAnalysisIntent) MarshalJSON() ([]byte, error) {
 26466  	objectMap := make(map[string]any)
 26467  	populate(objectMap, "id", r.ID)
 26468  	populate(objectMap, "name", r.Name)
 26469  	populate(objectMap, "properties", r.Properties)
 26470  	populate(objectMap, "systemData", r.SystemData)
 26471  	populate(objectMap, "type", r.Type)
 26472  	return json.Marshal(objectMap)
 26473  }
 26474  
 26475  // UnmarshalJSON implements the json.Unmarshaller interface for type ReachabilityAnalysisIntent.
 26476  func (r *ReachabilityAnalysisIntent) UnmarshalJSON(data []byte) error {
 26477  	var rawMsg map[string]json.RawMessage
 26478  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26479  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26480  	}
 26481  	for key, val := range rawMsg {
 26482  		var err error
 26483  		switch key {
 26484  		case "id":
 26485  			err = unpopulate(val, "ID", &r.ID)
 26486  			delete(rawMsg, key)
 26487  		case "name":
 26488  			err = unpopulate(val, "Name", &r.Name)
 26489  			delete(rawMsg, key)
 26490  		case "properties":
 26491  			err = unpopulate(val, "Properties", &r.Properties)
 26492  			delete(rawMsg, key)
 26493  		case "systemData":
 26494  			err = unpopulate(val, "SystemData", &r.SystemData)
 26495  			delete(rawMsg, key)
 26496  		case "type":
 26497  			err = unpopulate(val, "Type", &r.Type)
 26498  			delete(rawMsg, key)
 26499  		}
 26500  		if err != nil {
 26501  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26502  		}
 26503  	}
 26504  	return nil
 26505  }
 26506  
 26507  // MarshalJSON implements the json.Marshaller interface for type ReachabilityAnalysisIntentListResult.
 26508  func (r ReachabilityAnalysisIntentListResult) MarshalJSON() ([]byte, error) {
 26509  	objectMap := make(map[string]any)
 26510  	populate(objectMap, "nextLink", r.NextLink)
 26511  	populate(objectMap, "value", r.Value)
 26512  	return json.Marshal(objectMap)
 26513  }
 26514  
 26515  // UnmarshalJSON implements the json.Unmarshaller interface for type ReachabilityAnalysisIntentListResult.
 26516  func (r *ReachabilityAnalysisIntentListResult) UnmarshalJSON(data []byte) error {
 26517  	var rawMsg map[string]json.RawMessage
 26518  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26519  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26520  	}
 26521  	for key, val := range rawMsg {
 26522  		var err error
 26523  		switch key {
 26524  		case "nextLink":
 26525  			err = unpopulate(val, "NextLink", &r.NextLink)
 26526  			delete(rawMsg, key)
 26527  		case "value":
 26528  			err = unpopulate(val, "Value", &r.Value)
 26529  			delete(rawMsg, key)
 26530  		}
 26531  		if err != nil {
 26532  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26533  		}
 26534  	}
 26535  	return nil
 26536  }
 26537  
 26538  // MarshalJSON implements the json.Marshaller interface for type ReachabilityAnalysisIntentProperties.
 26539  func (r ReachabilityAnalysisIntentProperties) MarshalJSON() ([]byte, error) {
 26540  	objectMap := make(map[string]any)
 26541  	populate(objectMap, "description", r.Description)
 26542  	populate(objectMap, "destinationResourceId", r.DestinationResourceID)
 26543  	populate(objectMap, "ipTraffic", r.IPTraffic)
 26544  	populate(objectMap, "provisioningState", r.ProvisioningState)
 26545  	populate(objectMap, "sourceResourceId", r.SourceResourceID)
 26546  	return json.Marshal(objectMap)
 26547  }
 26548  
 26549  // UnmarshalJSON implements the json.Unmarshaller interface for type ReachabilityAnalysisIntentProperties.
 26550  func (r *ReachabilityAnalysisIntentProperties) UnmarshalJSON(data []byte) error {
 26551  	var rawMsg map[string]json.RawMessage
 26552  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26553  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26554  	}
 26555  	for key, val := range rawMsg {
 26556  		var err error
 26557  		switch key {
 26558  		case "description":
 26559  			err = unpopulate(val, "Description", &r.Description)
 26560  			delete(rawMsg, key)
 26561  		case "destinationResourceId":
 26562  			err = unpopulate(val, "DestinationResourceID", &r.DestinationResourceID)
 26563  			delete(rawMsg, key)
 26564  		case "ipTraffic":
 26565  			err = unpopulate(val, "IPTraffic", &r.IPTraffic)
 26566  			delete(rawMsg, key)
 26567  		case "provisioningState":
 26568  			err = unpopulate(val, "ProvisioningState", &r.ProvisioningState)
 26569  			delete(rawMsg, key)
 26570  		case "sourceResourceId":
 26571  			err = unpopulate(val, "SourceResourceID", &r.SourceResourceID)
 26572  			delete(rawMsg, key)
 26573  		}
 26574  		if err != nil {
 26575  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26576  		}
 26577  	}
 26578  	return nil
 26579  }
 26580  
 26581  // MarshalJSON implements the json.Marshaller interface for type ReachabilityAnalysisRun.
 26582  func (r ReachabilityAnalysisRun) MarshalJSON() ([]byte, error) {
 26583  	objectMap := make(map[string]any)
 26584  	populate(objectMap, "id", r.ID)
 26585  	populate(objectMap, "name", r.Name)
 26586  	populate(objectMap, "properties", r.Properties)
 26587  	populate(objectMap, "systemData", r.SystemData)
 26588  	populate(objectMap, "type", r.Type)
 26589  	return json.Marshal(objectMap)
 26590  }
 26591  
 26592  // UnmarshalJSON implements the json.Unmarshaller interface for type ReachabilityAnalysisRun.
 26593  func (r *ReachabilityAnalysisRun) UnmarshalJSON(data []byte) error {
 26594  	var rawMsg map[string]json.RawMessage
 26595  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26596  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26597  	}
 26598  	for key, val := range rawMsg {
 26599  		var err error
 26600  		switch key {
 26601  		case "id":
 26602  			err = unpopulate(val, "ID", &r.ID)
 26603  			delete(rawMsg, key)
 26604  		case "name":
 26605  			err = unpopulate(val, "Name", &r.Name)
 26606  			delete(rawMsg, key)
 26607  		case "properties":
 26608  			err = unpopulate(val, "Properties", &r.Properties)
 26609  			delete(rawMsg, key)
 26610  		case "systemData":
 26611  			err = unpopulate(val, "SystemData", &r.SystemData)
 26612  			delete(rawMsg, key)
 26613  		case "type":
 26614  			err = unpopulate(val, "Type", &r.Type)
 26615  			delete(rawMsg, key)
 26616  		}
 26617  		if err != nil {
 26618  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26619  		}
 26620  	}
 26621  	return nil
 26622  }
 26623  
 26624  // MarshalJSON implements the json.Marshaller interface for type ReachabilityAnalysisRunListResult.
 26625  func (r ReachabilityAnalysisRunListResult) MarshalJSON() ([]byte, error) {
 26626  	objectMap := make(map[string]any)
 26627  	populate(objectMap, "nextLink", r.NextLink)
 26628  	populate(objectMap, "value", r.Value)
 26629  	return json.Marshal(objectMap)
 26630  }
 26631  
 26632  // UnmarshalJSON implements the json.Unmarshaller interface for type ReachabilityAnalysisRunListResult.
 26633  func (r *ReachabilityAnalysisRunListResult) UnmarshalJSON(data []byte) error {
 26634  	var rawMsg map[string]json.RawMessage
 26635  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26636  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26637  	}
 26638  	for key, val := range rawMsg {
 26639  		var err error
 26640  		switch key {
 26641  		case "nextLink":
 26642  			err = unpopulate(val, "NextLink", &r.NextLink)
 26643  			delete(rawMsg, key)
 26644  		case "value":
 26645  			err = unpopulate(val, "Value", &r.Value)
 26646  			delete(rawMsg, key)
 26647  		}
 26648  		if err != nil {
 26649  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26650  		}
 26651  	}
 26652  	return nil
 26653  }
 26654  
 26655  // MarshalJSON implements the json.Marshaller interface for type ReachabilityAnalysisRunProperties.
 26656  func (r ReachabilityAnalysisRunProperties) MarshalJSON() ([]byte, error) {
 26657  	objectMap := make(map[string]any)
 26658  	populate(objectMap, "analysisResult", r.AnalysisResult)
 26659  	populate(objectMap, "description", r.Description)
 26660  	populate(objectMap, "errorMessage", r.ErrorMessage)
 26661  	populate(objectMap, "intentContent", r.IntentContent)
 26662  	populate(objectMap, "intentId", r.IntentID)
 26663  	populate(objectMap, "provisioningState", r.ProvisioningState)
 26664  	return json.Marshal(objectMap)
 26665  }
 26666  
 26667  // UnmarshalJSON implements the json.Unmarshaller interface for type ReachabilityAnalysisRunProperties.
 26668  func (r *ReachabilityAnalysisRunProperties) UnmarshalJSON(data []byte) error {
 26669  	var rawMsg map[string]json.RawMessage
 26670  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26671  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26672  	}
 26673  	for key, val := range rawMsg {
 26674  		var err error
 26675  		switch key {
 26676  		case "analysisResult":
 26677  			err = unpopulate(val, "AnalysisResult", &r.AnalysisResult)
 26678  			delete(rawMsg, key)
 26679  		case "description":
 26680  			err = unpopulate(val, "Description", &r.Description)
 26681  			delete(rawMsg, key)
 26682  		case "errorMessage":
 26683  			err = unpopulate(val, "ErrorMessage", &r.ErrorMessage)
 26684  			delete(rawMsg, key)
 26685  		case "intentContent":
 26686  			err = unpopulate(val, "IntentContent", &r.IntentContent)
 26687  			delete(rawMsg, key)
 26688  		case "intentId":
 26689  			err = unpopulate(val, "IntentID", &r.IntentID)
 26690  			delete(rawMsg, key)
 26691  		case "provisioningState":
 26692  			err = unpopulate(val, "ProvisioningState", &r.ProvisioningState)
 26693  			delete(rawMsg, key)
 26694  		}
 26695  		if err != nil {
 26696  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26697  		}
 26698  	}
 26699  	return nil
 26700  }
 26701  
 26702  // MarshalJSON implements the json.Marshaller interface for type RecordSet.
 26703  func (r RecordSet) MarshalJSON() ([]byte, error) {
 26704  	objectMap := make(map[string]any)
 26705  	populate(objectMap, "fqdn", r.Fqdn)
 26706  	populate(objectMap, "ipAddresses", r.IPAddresses)
 26707  	populate(objectMap, "provisioningState", r.ProvisioningState)
 26708  	populate(objectMap, "recordSetName", r.RecordSetName)
 26709  	populate(objectMap, "recordType", r.RecordType)
 26710  	populate(objectMap, "ttl", r.TTL)
 26711  	return json.Marshal(objectMap)
 26712  }
 26713  
 26714  // UnmarshalJSON implements the json.Unmarshaller interface for type RecordSet.
 26715  func (r *RecordSet) UnmarshalJSON(data []byte) error {
 26716  	var rawMsg map[string]json.RawMessage
 26717  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26718  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26719  	}
 26720  	for key, val := range rawMsg {
 26721  		var err error
 26722  		switch key {
 26723  		case "fqdn":
 26724  			err = unpopulate(val, "Fqdn", &r.Fqdn)
 26725  			delete(rawMsg, key)
 26726  		case "ipAddresses":
 26727  			err = unpopulate(val, "IPAddresses", &r.IPAddresses)
 26728  			delete(rawMsg, key)
 26729  		case "provisioningState":
 26730  			err = unpopulate(val, "ProvisioningState", &r.ProvisioningState)
 26731  			delete(rawMsg, key)
 26732  		case "recordSetName":
 26733  			err = unpopulate(val, "RecordSetName", &r.RecordSetName)
 26734  			delete(rawMsg, key)
 26735  		case "recordType":
 26736  			err = unpopulate(val, "RecordType", &r.RecordType)
 26737  			delete(rawMsg, key)
 26738  		case "ttl":
 26739  			err = unpopulate(val, "TTL", &r.TTL)
 26740  			delete(rawMsg, key)
 26741  		}
 26742  		if err != nil {
 26743  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26744  		}
 26745  	}
 26746  	return nil
 26747  }
 26748  
 26749  // MarshalJSON implements the json.Marshaller interface for type ReferencedPublicIPAddress.
 26750  func (r ReferencedPublicIPAddress) MarshalJSON() ([]byte, error) {
 26751  	objectMap := make(map[string]any)
 26752  	populate(objectMap, "id", r.ID)
 26753  	return json.Marshal(objectMap)
 26754  }
 26755  
 26756  // UnmarshalJSON implements the json.Unmarshaller interface for type ReferencedPublicIPAddress.
 26757  func (r *ReferencedPublicIPAddress) UnmarshalJSON(data []byte) error {
 26758  	var rawMsg map[string]json.RawMessage
 26759  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26760  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26761  	}
 26762  	for key, val := range rawMsg {
 26763  		var err error
 26764  		switch key {
 26765  		case "id":
 26766  			err = unpopulate(val, "ID", &r.ID)
 26767  			delete(rawMsg, key)
 26768  		}
 26769  		if err != nil {
 26770  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26771  		}
 26772  	}
 26773  	return nil
 26774  }
 26775  
 26776  // MarshalJSON implements the json.Marshaller interface for type Resource.
 26777  func (r Resource) MarshalJSON() ([]byte, error) {
 26778  	objectMap := make(map[string]any)
 26779  	populate(objectMap, "id", r.ID)
 26780  	populate(objectMap, "location", r.Location)
 26781  	populate(objectMap, "name", r.Name)
 26782  	populate(objectMap, "tags", r.Tags)
 26783  	populate(objectMap, "type", r.Type)
 26784  	return json.Marshal(objectMap)
 26785  }
 26786  
 26787  // UnmarshalJSON implements the json.Unmarshaller interface for type Resource.
 26788  func (r *Resource) UnmarshalJSON(data []byte) error {
 26789  	var rawMsg map[string]json.RawMessage
 26790  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26791  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26792  	}
 26793  	for key, val := range rawMsg {
 26794  		var err error
 26795  		switch key {
 26796  		case "id":
 26797  			err = unpopulate(val, "ID", &r.ID)
 26798  			delete(rawMsg, key)
 26799  		case "location":
 26800  			err = unpopulate(val, "Location", &r.Location)
 26801  			delete(rawMsg, key)
 26802  		case "name":
 26803  			err = unpopulate(val, "Name", &r.Name)
 26804  			delete(rawMsg, key)
 26805  		case "tags":
 26806  			err = unpopulate(val, "Tags", &r.Tags)
 26807  			delete(rawMsg, key)
 26808  		case "type":
 26809  			err = unpopulate(val, "Type", &r.Type)
 26810  			delete(rawMsg, key)
 26811  		}
 26812  		if err != nil {
 26813  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26814  		}
 26815  	}
 26816  	return nil
 26817  }
 26818  
 26819  // MarshalJSON implements the json.Marshaller interface for type ResourceBasics.
 26820  func (r ResourceBasics) MarshalJSON() ([]byte, error) {
 26821  	objectMap := make(map[string]any)
 26822  	populate(objectMap, "addressPrefixes", r.AddressPrefixes)
 26823  	populate(objectMap, "resourceId", r.ResourceID)
 26824  	return json.Marshal(objectMap)
 26825  }
 26826  
 26827  // UnmarshalJSON implements the json.Unmarshaller interface for type ResourceBasics.
 26828  func (r *ResourceBasics) UnmarshalJSON(data []byte) error {
 26829  	var rawMsg map[string]json.RawMessage
 26830  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26831  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26832  	}
 26833  	for key, val := range rawMsg {
 26834  		var err error
 26835  		switch key {
 26836  		case "addressPrefixes":
 26837  			err = unpopulate(val, "AddressPrefixes", &r.AddressPrefixes)
 26838  			delete(rawMsg, key)
 26839  		case "resourceId":
 26840  			err = unpopulate(val, "ResourceID", &r.ResourceID)
 26841  			delete(rawMsg, key)
 26842  		}
 26843  		if err != nil {
 26844  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26845  		}
 26846  	}
 26847  	return nil
 26848  }
 26849  
 26850  // MarshalJSON implements the json.Marshaller interface for type ResourceNavigationLink.
 26851  func (r ResourceNavigationLink) MarshalJSON() ([]byte, error) {
 26852  	objectMap := make(map[string]any)
 26853  	populate(objectMap, "etag", r.Etag)
 26854  	populate(objectMap, "id", r.ID)
 26855  	populate(objectMap, "name", r.Name)
 26856  	populate(objectMap, "properties", r.Properties)
 26857  	populate(objectMap, "type", r.Type)
 26858  	return json.Marshal(objectMap)
 26859  }
 26860  
 26861  // UnmarshalJSON implements the json.Unmarshaller interface for type ResourceNavigationLink.
 26862  func (r *ResourceNavigationLink) UnmarshalJSON(data []byte) error {
 26863  	var rawMsg map[string]json.RawMessage
 26864  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26865  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26866  	}
 26867  	for key, val := range rawMsg {
 26868  		var err error
 26869  		switch key {
 26870  		case "etag":
 26871  			err = unpopulate(val, "Etag", &r.Etag)
 26872  			delete(rawMsg, key)
 26873  		case "id":
 26874  			err = unpopulate(val, "ID", &r.ID)
 26875  			delete(rawMsg, key)
 26876  		case "name":
 26877  			err = unpopulate(val, "Name", &r.Name)
 26878  			delete(rawMsg, key)
 26879  		case "properties":
 26880  			err = unpopulate(val, "Properties", &r.Properties)
 26881  			delete(rawMsg, key)
 26882  		case "type":
 26883  			err = unpopulate(val, "Type", &r.Type)
 26884  			delete(rawMsg, key)
 26885  		}
 26886  		if err != nil {
 26887  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26888  		}
 26889  	}
 26890  	return nil
 26891  }
 26892  
 26893  // MarshalJSON implements the json.Marshaller interface for type ResourceNavigationLinkFormat.
 26894  func (r ResourceNavigationLinkFormat) MarshalJSON() ([]byte, error) {
 26895  	objectMap := make(map[string]any)
 26896  	populate(objectMap, "link", r.Link)
 26897  	populate(objectMap, "linkedResourceType", r.LinkedResourceType)
 26898  	populate(objectMap, "provisioningState", r.ProvisioningState)
 26899  	return json.Marshal(objectMap)
 26900  }
 26901  
 26902  // UnmarshalJSON implements the json.Unmarshaller interface for type ResourceNavigationLinkFormat.
 26903  func (r *ResourceNavigationLinkFormat) UnmarshalJSON(data []byte) error {
 26904  	var rawMsg map[string]json.RawMessage
 26905  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26906  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26907  	}
 26908  	for key, val := range rawMsg {
 26909  		var err error
 26910  		switch key {
 26911  		case "link":
 26912  			err = unpopulate(val, "Link", &r.Link)
 26913  			delete(rawMsg, key)
 26914  		case "linkedResourceType":
 26915  			err = unpopulate(val, "LinkedResourceType", &r.LinkedResourceType)
 26916  			delete(rawMsg, key)
 26917  		case "provisioningState":
 26918  			err = unpopulate(val, "ProvisioningState", &r.ProvisioningState)
 26919  			delete(rawMsg, key)
 26920  		}
 26921  		if err != nil {
 26922  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26923  		}
 26924  	}
 26925  	return nil
 26926  }
 26927  
 26928  // MarshalJSON implements the json.Marshaller interface for type ResourceNavigationLinksListResult.
 26929  func (r ResourceNavigationLinksListResult) MarshalJSON() ([]byte, error) {
 26930  	objectMap := make(map[string]any)
 26931  	populate(objectMap, "nextLink", r.NextLink)
 26932  	populate(objectMap, "value", r.Value)
 26933  	return json.Marshal(objectMap)
 26934  }
 26935  
 26936  // UnmarshalJSON implements the json.Unmarshaller interface for type ResourceNavigationLinksListResult.
 26937  func (r *ResourceNavigationLinksListResult) UnmarshalJSON(data []byte) error {
 26938  	var rawMsg map[string]json.RawMessage
 26939  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26940  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26941  	}
 26942  	for key, val := range rawMsg {
 26943  		var err error
 26944  		switch key {
 26945  		case "nextLink":
 26946  			err = unpopulate(val, "NextLink", &r.NextLink)
 26947  			delete(rawMsg, key)
 26948  		case "value":
 26949  			err = unpopulate(val, "Value", &r.Value)
 26950  			delete(rawMsg, key)
 26951  		}
 26952  		if err != nil {
 26953  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26954  		}
 26955  	}
 26956  	return nil
 26957  }
 26958  
 26959  // MarshalJSON implements the json.Marshaller interface for type ResourceSet.
 26960  func (r ResourceSet) MarshalJSON() ([]byte, error) {
 26961  	objectMap := make(map[string]any)
 26962  	populate(objectMap, "subscriptions", r.Subscriptions)
 26963  	return json.Marshal(objectMap)
 26964  }
 26965  
 26966  // UnmarshalJSON implements the json.Unmarshaller interface for type ResourceSet.
 26967  func (r *ResourceSet) UnmarshalJSON(data []byte) error {
 26968  	var rawMsg map[string]json.RawMessage
 26969  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26970  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26971  	}
 26972  	for key, val := range rawMsg {
 26973  		var err error
 26974  		switch key {
 26975  		case "subscriptions":
 26976  			err = unpopulate(val, "Subscriptions", &r.Subscriptions)
 26977  			delete(rawMsg, key)
 26978  		}
 26979  		if err != nil {
 26980  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26981  		}
 26982  	}
 26983  	return nil
 26984  }
 26985  
 26986  // MarshalJSON implements the json.Marshaller interface for type RetentionPolicyParameters.
 26987  func (r RetentionPolicyParameters) MarshalJSON() ([]byte, error) {
 26988  	objectMap := make(map[string]any)
 26989  	populate(objectMap, "days", r.Days)
 26990  	populate(objectMap, "enabled", r.Enabled)
 26991  	return json.Marshal(objectMap)
 26992  }
 26993  
 26994  // UnmarshalJSON implements the json.Unmarshaller interface for type RetentionPolicyParameters.
 26995  func (r *RetentionPolicyParameters) UnmarshalJSON(data []byte) error {
 26996  	var rawMsg map[string]json.RawMessage
 26997  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 26998  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 26999  	}
 27000  	for key, val := range rawMsg {
 27001  		var err error
 27002  		switch key {
 27003  		case "days":
 27004  			err = unpopulate(val, "Days", &r.Days)
 27005  			delete(rawMsg, key)
 27006  		case "enabled":
 27007  			err = unpopulate(val, "Enabled", &r.Enabled)
 27008  			delete(rawMsg, key)
 27009  		}
 27010  		if err != nil {
 27011  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27012  		}
 27013  	}
 27014  	return nil
 27015  }
 27016  
 27017  // MarshalJSON implements the json.Marshaller interface for type Route.
 27018  func (r Route) MarshalJSON() ([]byte, error) {
 27019  	objectMap := make(map[string]any)
 27020  	populate(objectMap, "etag", r.Etag)
 27021  	populate(objectMap, "id", r.ID)
 27022  	populate(objectMap, "name", r.Name)
 27023  	populate(objectMap, "properties", r.Properties)
 27024  	populate(objectMap, "type", r.Type)
 27025  	return json.Marshal(objectMap)
 27026  }
 27027  
 27028  // UnmarshalJSON implements the json.Unmarshaller interface for type Route.
 27029  func (r *Route) UnmarshalJSON(data []byte) error {
 27030  	var rawMsg map[string]json.RawMessage
 27031  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 27032  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27033  	}
 27034  	for key, val := range rawMsg {
 27035  		var err error
 27036  		switch key {
 27037  		case "etag":
 27038  			err = unpopulate(val, "Etag", &r.Etag)
 27039  			delete(rawMsg, key)
 27040  		case "id":
 27041  			err = unpopulate(val, "ID", &r.ID)
 27042  			delete(rawMsg, key)
 27043  		case "name":
 27044  			err = unpopulate(val, "Name", &r.Name)
 27045  			delete(rawMsg, key)
 27046  		case "properties":
 27047  			err = unpopulate(val, "Properties", &r.Properties)
 27048  			delete(rawMsg, key)
 27049  		case "type":
 27050  			err = unpopulate(val, "Type", &r.Type)
 27051  			delete(rawMsg, key)
 27052  		}
 27053  		if err != nil {
 27054  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27055  		}
 27056  	}
 27057  	return nil
 27058  }
 27059  
 27060  // MarshalJSON implements the json.Marshaller interface for type RouteFilter.
 27061  func (r RouteFilter) MarshalJSON() ([]byte, error) {
 27062  	objectMap := make(map[string]any)
 27063  	populate(objectMap, "etag", r.Etag)
 27064  	populate(objectMap, "id", r.ID)
 27065  	populate(objectMap, "location", r.Location)
 27066  	populate(objectMap, "name", r.Name)
 27067  	populate(objectMap, "properties", r.Properties)
 27068  	populate(objectMap, "tags", r.Tags)
 27069  	populate(objectMap, "type", r.Type)
 27070  	return json.Marshal(objectMap)
 27071  }
 27072  
 27073  // UnmarshalJSON implements the json.Unmarshaller interface for type RouteFilter.
 27074  func (r *RouteFilter) UnmarshalJSON(data []byte) error {
 27075  	var rawMsg map[string]json.RawMessage
 27076  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 27077  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27078  	}
 27079  	for key, val := range rawMsg {
 27080  		var err error
 27081  		switch key {
 27082  		case "etag":
 27083  			err = unpopulate(val, "Etag", &r.Etag)
 27084  			delete(rawMsg, key)
 27085  		case "id":
 27086  			err = unpopulate(val, "ID", &r.ID)
 27087  			delete(rawMsg, key)
 27088  		case "location":
 27089  			err = unpopulate(val, "Location", &r.Location)
 27090  			delete(rawMsg, key)
 27091  		case "name":
 27092  			err = unpopulate(val, "Name", &r.Name)
 27093  			delete(rawMsg, key)
 27094  		case "properties":
 27095  			err = unpopulate(val, "Properties", &r.Properties)
 27096  			delete(rawMsg, key)
 27097  		case "tags":
 27098  			err = unpopulate(val, "Tags", &r.Tags)
 27099  			delete(rawMsg, key)
 27100  		case "type":
 27101  			err = unpopulate(val, "Type", &r.Type)
 27102  			delete(rawMsg, key)
 27103  		}
 27104  		if err != nil {
 27105  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27106  		}
 27107  	}
 27108  	return nil
 27109  }
 27110  
 27111  // MarshalJSON implements the json.Marshaller interface for type RouteFilterListResult.
 27112  func (r RouteFilterListResult) MarshalJSON() ([]byte, error) {
 27113  	objectMap := make(map[string]any)
 27114  	populate(objectMap, "nextLink", r.NextLink)
 27115  	populate(objectMap, "value", r.Value)
 27116  	return json.Marshal(objectMap)
 27117  }
 27118  
 27119  // UnmarshalJSON implements the json.Unmarshaller interface for type RouteFilterListResult.
 27120  func (r *RouteFilterListResult) UnmarshalJSON(data []byte) error {
 27121  	var rawMsg map[string]json.RawMessage
 27122  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 27123  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27124  	}
 27125  	for key, val := range rawMsg {
 27126  		var err error
 27127  		switch key {
 27128  		case "nextLink":
 27129  			err = unpopulate(val, "NextLink", &r.NextLink)
 27130  			delete(rawMsg, key)
 27131  		case "value":
 27132  			err = unpopulate(val, "Value", &r.Value)
 27133  			delete(rawMsg, key)
 27134  		}
 27135  		if err != nil {
 27136  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27137  		}
 27138  	}
 27139  	return nil
 27140  }
 27141  
 27142  // MarshalJSON implements the json.Marshaller interface for type RouteFilterPropertiesFormat.
 27143  func (r RouteFilterPropertiesFormat) MarshalJSON() ([]byte, error) {
 27144  	objectMap := make(map[string]any)
 27145  	populate(objectMap, "ipv6Peerings", r.IPv6Peerings)
 27146  	populate(objectMap, "peerings", r.Peerings)
 27147  	populate(objectMap, "provisioningState", r.ProvisioningState)
 27148  	populate(objectMap, "rules", r.Rules)
 27149  	return json.Marshal(objectMap)
 27150  }
 27151  
 27152  // UnmarshalJSON implements the json.Unmarshaller interface for type RouteFilterPropertiesFormat.
 27153  func (r *RouteFilterPropertiesFormat) UnmarshalJSON(data []byte) error {
 27154  	var rawMsg map[string]json.RawMessage
 27155  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 27156  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27157  	}
 27158  	for key, val := range rawMsg {
 27159  		var err error
 27160  		switch key {
 27161  		case "ipv6Peerings":
 27162  			err = unpopulate(val, "IPv6Peerings", &r.IPv6Peerings)
 27163  			delete(rawMsg, key)
 27164  		case "peerings":
 27165  			err = unpopulate(val, "Peerings", &r.Peerings)
 27166  			delete(rawMsg, key)
 27167  		case "provisioningState":
 27168  			err = unpopulate(val, "ProvisioningState", &r.ProvisioningState)
 27169  			delete(rawMsg, key)
 27170  		case "rules":
 27171  			err = unpopulate(val, "Rules", &r.Rules)
 27172  			delete(rawMsg, key)
 27173  		}
 27174  		if err != nil {
 27175  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27176  		}
 27177  	}
 27178  	return nil
 27179  }
 27180  
 27181  // MarshalJSON implements the json.Marshaller interface for type RouteFilterRule.
 27182  func (r RouteFilterRule) MarshalJSON() ([]byte, error) {
 27183  	objectMap := make(map[string]any)
 27184  	populate(objectMap, "etag", r.Etag)
 27185  	populate(objectMap, "id", r.ID)
 27186  	populate(objectMap, "location", r.Location)
 27187  	populate(objectMap, "name", r.Name)
 27188  	populate(objectMap, "properties", r.Properties)
 27189  	return json.Marshal(objectMap)
 27190  }
 27191  
 27192  // UnmarshalJSON implements the json.Unmarshaller interface for type RouteFilterRule.
 27193  func (r *RouteFilterRule) UnmarshalJSON(data []byte) error {
 27194  	var rawMsg map[string]json.RawMessage
 27195  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 27196  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27197  	}
 27198  	for key, val := range rawMsg {
 27199  		var err error
 27200  		switch key {
 27201  		case "etag":
 27202  			err = unpopulate(val, "Etag", &r.Etag)
 27203  			delete(rawMsg, key)
 27204  		case "id":
 27205  			err = unpopulate(val, "ID", &r.ID)
 27206  			delete(rawMsg, key)
 27207  		case "location":
 27208  			err = unpopulate(val, "Location", &r.Location)
 27209  			delete(rawMsg, key)
 27210  		case "name":
 27211  			err = unpopulate(val, "Name", &r.Name)
 27212  			delete(rawMsg, key)
 27213  		case "properties":
 27214  			err = unpopulate(val, "Properties", &r.Properties)
 27215  			delete(rawMsg, key)
 27216  		}
 27217  		if err != nil {
 27218  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27219  		}
 27220  	}
 27221  	return nil
 27222  }
 27223  
 27224  // MarshalJSON implements the json.Marshaller interface for type RouteFilterRuleListResult.
 27225  func (r RouteFilterRuleListResult) MarshalJSON() ([]byte, error) {
 27226  	objectMap := make(map[string]any)
 27227  	populate(objectMap, "nextLink", r.NextLink)
 27228  	populate(objectMap, "value", r.Value)
 27229  	return json.Marshal(objectMap)
 27230  }
 27231  
 27232  // UnmarshalJSON implements the json.Unmarshaller interface for type RouteFilterRuleListResult.
 27233  func (r *RouteFilterRuleListResult) UnmarshalJSON(data []byte) error {
 27234  	var rawMsg map[string]json.RawMessage
 27235  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 27236  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27237  	}
 27238  	for key, val := range rawMsg {
 27239  		var err error
 27240  		switch key {
 27241  		case "nextLink":
 27242  			err = unpopulate(val, "NextLink", &r.NextLink)
 27243  			delete(rawMsg, key)
 27244  		case "value":
 27245  			err = unpopulate(val, "Value", &r.Value)
 27246  			delete(rawMsg, key)
 27247  		}
 27248  		if err != nil {
 27249  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27250  		}
 27251  	}
 27252  	return nil
 27253  }
 27254  
 27255  // MarshalJSON implements the json.Marshaller interface for type RouteFilterRulePropertiesFormat.
 27256  func (r RouteFilterRulePropertiesFormat) MarshalJSON() ([]byte, error) {
 27257  	objectMap := make(map[string]any)
 27258  	populate(objectMap, "access", r.Access)
 27259  	populate(objectMap, "communities", r.Communities)
 27260  	populate(objectMap, "provisioningState", r.ProvisioningState)
 27261  	populate(objectMap, "routeFilterRuleType", r.RouteFilterRuleType)
 27262  	return json.Marshal(objectMap)
 27263  }
 27264  
 27265  // UnmarshalJSON implements the json.Unmarshaller interface for type RouteFilterRulePropertiesFormat.
 27266  func (r *RouteFilterRulePropertiesFormat) UnmarshalJSON(data []byte) error {
 27267  	var rawMsg map[string]json.RawMessage
 27268  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 27269  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27270  	}
 27271  	for key, val := range rawMsg {
 27272  		var err error
 27273  		switch key {
 27274  		case "access":
 27275  			err = unpopulate(val, "Access", &r.Access)
 27276  			delete(rawMsg, key)
 27277  		case "communities":
 27278  			err = unpopulate(val, "Communities", &r.Communities)
 27279  			delete(rawMsg, key)
 27280  		case "provisioningState":
 27281  			err = unpopulate(val, "ProvisioningState", &r.ProvisioningState)
 27282  			delete(rawMsg, key)
 27283  		case "routeFilterRuleType":
 27284  			err = unpopulate(val, "RouteFilterRuleType", &r.RouteFilterRuleType)
 27285  			delete(rawMsg, key)
 27286  		}
 27287  		if err != nil {
 27288  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27289  		}
 27290  	}
 27291  	return nil
 27292  }
 27293  
 27294  // MarshalJSON implements the json.Marshaller interface for type RouteListResult.
 27295  func (r RouteListResult) MarshalJSON() ([]byte, error) {
 27296  	objectMap := make(map[string]any)
 27297  	populate(objectMap, "nextLink", r.NextLink)
 27298  	populate(objectMap, "value", r.Value)
 27299  	return json.Marshal(objectMap)
 27300  }
 27301  
 27302  // UnmarshalJSON implements the json.Unmarshaller interface for type RouteListResult.
 27303  func (r *RouteListResult) UnmarshalJSON(data []byte) error {
 27304  	var rawMsg map[string]json.RawMessage
 27305  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 27306  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27307  	}
 27308  	for key, val := range rawMsg {
 27309  		var err error
 27310  		switch key {
 27311  		case "nextLink":
 27312  			err = unpopulate(val, "NextLink", &r.NextLink)
 27313  			delete(rawMsg, key)
 27314  		case "value":
 27315  			err = unpopulate(val, "Value", &r.Value)
 27316  			delete(rawMsg, key)
 27317  		}
 27318  		if err != nil {
 27319  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27320  		}
 27321  	}
 27322  	return nil
 27323  }
 27324  
 27325  // MarshalJSON implements the json.Marshaller interface for type RouteMap.
 27326  func (r RouteMap) MarshalJSON() ([]byte, error) {
 27327  	objectMap := make(map[string]any)
 27328  	populate(objectMap, "etag", r.Etag)
 27329  	populate(objectMap, "id", r.ID)
 27330  	populate(objectMap, "name", r.Name)
 27331  	populate(objectMap, "properties", r.Properties)
 27332  	populate(objectMap, "type", r.Type)
 27333  	return json.Marshal(objectMap)
 27334  }
 27335  
 27336  // UnmarshalJSON implements the json.Unmarshaller interface for type RouteMap.
 27337  func (r *RouteMap) UnmarshalJSON(data []byte) error {
 27338  	var rawMsg map[string]json.RawMessage
 27339  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 27340  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27341  	}
 27342  	for key, val := range rawMsg {
 27343  		var err error
 27344  		switch key {
 27345  		case "etag":
 27346  			err = unpopulate(val, "Etag", &r.Etag)
 27347  			delete(rawMsg, key)
 27348  		case "id":
 27349  			err = unpopulate(val, "ID", &r.ID)
 27350  			delete(rawMsg, key)
 27351  		case "name":
 27352  			err = unpopulate(val, "Name", &r.Name)
 27353  			delete(rawMsg, key)
 27354  		case "properties":
 27355  			err = unpopulate(val, "Properties", &r.Properties)
 27356  			delete(rawMsg, key)
 27357  		case "type":
 27358  			err = unpopulate(val, "Type", &r.Type)
 27359  			delete(rawMsg, key)
 27360  		}
 27361  		if err != nil {
 27362  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27363  		}
 27364  	}
 27365  	return nil
 27366  }
 27367  
 27368  // MarshalJSON implements the json.Marshaller interface for type RouteMapProperties.
 27369  func (r RouteMapProperties) MarshalJSON() ([]byte, error) {
 27370  	objectMap := make(map[string]any)
 27371  	populate(objectMap, "associatedInboundConnections", r.AssociatedInboundConnections)
 27372  	populate(objectMap, "associatedOutboundConnections", r.AssociatedOutboundConnections)
 27373  	populate(objectMap, "provisioningState", r.ProvisioningState)
 27374  	populate(objectMap, "rules", r.Rules)
 27375  	return json.Marshal(objectMap)
 27376  }
 27377  
 27378  // UnmarshalJSON implements the json.Unmarshaller interface for type RouteMapProperties.
 27379  func (r *RouteMapProperties) UnmarshalJSON(data []byte) error {
 27380  	var rawMsg map[string]json.RawMessage
 27381  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 27382  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27383  	}
 27384  	for key, val := range rawMsg {
 27385  		var err error
 27386  		switch key {
 27387  		case "associatedInboundConnections":
 27388  			err = unpopulate(val, "AssociatedInboundConnections", &r.AssociatedInboundConnections)
 27389  			delete(rawMsg, key)
 27390  		case "associatedOutboundConnections":
 27391  			err = unpopulate(val, "AssociatedOutboundConnections", &r.AssociatedOutboundConnections)
 27392  			delete(rawMsg, key)
 27393  		case "provisioningState":
 27394  			err = unpopulate(val, "ProvisioningState", &r.ProvisioningState)
 27395  			delete(rawMsg, key)
 27396  		case "rules":
 27397  			err = unpopulate(val, "Rules", &r.Rules)
 27398  			delete(rawMsg, key)
 27399  		}
 27400  		if err != nil {
 27401  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27402  		}
 27403  	}
 27404  	return nil
 27405  }
 27406  
 27407  // MarshalJSON implements the json.Marshaller interface for type RouteMapRule.
 27408  func (r RouteMapRule) MarshalJSON() ([]byte, error) {
 27409  	objectMap := make(map[string]any)
 27410  	populate(objectMap, "actions", r.Actions)
 27411  	populate(objectMap, "matchCriteria", r.MatchCriteria)
 27412  	populate(objectMap, "name", r.Name)
 27413  	populate(objectMap, "nextStepIfMatched", r.NextStepIfMatched)
 27414  	return json.Marshal(objectMap)
 27415  }
 27416  
 27417  // UnmarshalJSON implements the json.Unmarshaller interface for type RouteMapRule.
 27418  func (r *RouteMapRule) UnmarshalJSON(data []byte) error {
 27419  	var rawMsg map[string]json.RawMessage
 27420  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 27421  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27422  	}
 27423  	for key, val := range rawMsg {
 27424  		var err error
 27425  		switch key {
 27426  		case "actions":
 27427  			err = unpopulate(val, "Actions", &r.Actions)
 27428  			delete(rawMsg, key)
 27429  		case "matchCriteria":
 27430  			err = unpopulate(val, "MatchCriteria", &r.MatchCriteria)
 27431  			delete(rawMsg, key)
 27432  		case "name":
 27433  			err = unpopulate(val, "Name", &r.Name)
 27434  			delete(rawMsg, key)
 27435  		case "nextStepIfMatched":
 27436  			err = unpopulate(val, "NextStepIfMatched", &r.NextStepIfMatched)
 27437  			delete(rawMsg, key)
 27438  		}
 27439  		if err != nil {
 27440  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27441  		}
 27442  	}
 27443  	return nil
 27444  }
 27445  
 27446  // MarshalJSON implements the json.Marshaller interface for type RoutePropertiesFormat.
 27447  func (r RoutePropertiesFormat) MarshalJSON() ([]byte, error) {
 27448  	objectMap := make(map[string]any)
 27449  	populate(objectMap, "addressPrefix", r.AddressPrefix)
 27450  	populate(objectMap, "hasBgpOverride", r.HasBgpOverride)
 27451  	populate(objectMap, "nextHopIpAddress", r.NextHopIPAddress)
 27452  	populate(objectMap, "nextHopType", r.NextHopType)
 27453  	populate(objectMap, "provisioningState", r.ProvisioningState)
 27454  	return json.Marshal(objectMap)
 27455  }
 27456  
 27457  // UnmarshalJSON implements the json.Unmarshaller interface for type RoutePropertiesFormat.
 27458  func (r *RoutePropertiesFormat) UnmarshalJSON(data []byte) error {
 27459  	var rawMsg map[string]json.RawMessage
 27460  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 27461  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27462  	}
 27463  	for key, val := range rawMsg {
 27464  		var err error
 27465  		switch key {
 27466  		case "addressPrefix":
 27467  			err = unpopulate(val, "AddressPrefix", &r.AddressPrefix)
 27468  			delete(rawMsg, key)
 27469  		case "hasBgpOverride":
 27470  			err = unpopulate(val, "HasBgpOverride", &r.HasBgpOverride)
 27471  			delete(rawMsg, key)
 27472  		case "nextHopIpAddress":
 27473  			err = unpopulate(val, "NextHopIPAddress", &r.NextHopIPAddress)
 27474  			delete(rawMsg, key)
 27475  		case "nextHopType":
 27476  			err = unpopulate(val, "NextHopType", &r.NextHopType)
 27477  			delete(rawMsg, key)
 27478  		case "provisioningState":
 27479  			err = unpopulate(val, "ProvisioningState", &r.ProvisioningState)
 27480  			delete(rawMsg, key)
 27481  		}
 27482  		if err != nil {
 27483  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27484  		}
 27485  	}
 27486  	return nil
 27487  }
 27488  
 27489  // MarshalJSON implements the json.Marshaller interface for type RouteTable.
 27490  func (r RouteTable) MarshalJSON() ([]byte, error) {
 27491  	objectMap := make(map[string]any)
 27492  	populate(objectMap, "etag", r.Etag)
 27493  	populate(objectMap, "id", r.ID)
 27494  	populate(objectMap, "location", r.Location)
 27495  	populate(objectMap, "name", r.Name)
 27496  	populate(objectMap, "properties", r.Properties)
 27497  	populate(objectMap, "tags", r.Tags)
 27498  	populate(objectMap, "type", r.Type)
 27499  	return json.Marshal(objectMap)
 27500  }
 27501  
 27502  // UnmarshalJSON implements the json.Unmarshaller interface for type RouteTable.
 27503  func (r *RouteTable) UnmarshalJSON(data []byte) error {
 27504  	var rawMsg map[string]json.RawMessage
 27505  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 27506  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27507  	}
 27508  	for key, val := range rawMsg {
 27509  		var err error
 27510  		switch key {
 27511  		case "etag":
 27512  			err = unpopulate(val, "Etag", &r.Etag)
 27513  			delete(rawMsg, key)
 27514  		case "id":
 27515  			err = unpopulate(val, "ID", &r.ID)
 27516  			delete(rawMsg, key)
 27517  		case "location":
 27518  			err = unpopulate(val, "Location", &r.Location)
 27519  			delete(rawMsg, key)
 27520  		case "name":
 27521  			err = unpopulate(val, "Name", &r.Name)
 27522  			delete(rawMsg, key)
 27523  		case "properties":
 27524  			err = unpopulate(val, "Properties", &r.Properties)
 27525  			delete(rawMsg, key)
 27526  		case "tags":
 27527  			err = unpopulate(val, "Tags", &r.Tags)
 27528  			delete(rawMsg, key)
 27529  		case "type":
 27530  			err = unpopulate(val, "Type", &r.Type)
 27531  			delete(rawMsg, key)
 27532  		}
 27533  		if err != nil {
 27534  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27535  		}
 27536  	}
 27537  	return nil
 27538  }
 27539  
 27540  // MarshalJSON implements the json.Marshaller interface for type RouteTableListResult.
 27541  func (r RouteTableListResult) MarshalJSON() ([]byte, error) {
 27542  	objectMap := make(map[string]any)
 27543  	populate(objectMap, "nextLink", r.NextLink)
 27544  	populate(objectMap, "value", r.Value)
 27545  	return json.Marshal(objectMap)
 27546  }
 27547  
 27548  // UnmarshalJSON implements the json.Unmarshaller interface for type RouteTableListResult.
 27549  func (r *RouteTableListResult) UnmarshalJSON(data []byte) error {
 27550  	var rawMsg map[string]json.RawMessage
 27551  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 27552  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27553  	}
 27554  	for key, val := range rawMsg {
 27555  		var err error
 27556  		switch key {
 27557  		case "nextLink":
 27558  			err = unpopulate(val, "NextLink", &r.NextLink)
 27559  			delete(rawMsg, key)
 27560  		case "value":
 27561  			err = unpopulate(val, "Value", &r.Value)
 27562  			delete(rawMsg, key)
 27563  		}
 27564  		if err != nil {
 27565  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27566  		}
 27567  	}
 27568  	return nil
 27569  }
 27570  
 27571  // MarshalJSON implements the json.Marshaller interface for type RouteTablePropertiesFormat.
 27572  func (r RouteTablePropertiesFormat) MarshalJSON() ([]byte, error) {
 27573  	objectMap := make(map[string]any)
 27574  	populate(objectMap, "disableBgpRoutePropagation", r.DisableBgpRoutePropagation)
 27575  	populate(objectMap, "provisioningState", r.ProvisioningState)
 27576  	populate(objectMap, "resourceGuid", r.ResourceGUID)
 27577  	populate(objectMap, "routes", r.Routes)
 27578  	populate(objectMap, "subnets", r.Subnets)
 27579  	return json.Marshal(objectMap)
 27580  }
 27581  
 27582  // UnmarshalJSON implements the json.Unmarshaller interface for type RouteTablePropertiesFormat.
 27583  func (r *RouteTablePropertiesFormat) UnmarshalJSON(data []byte) error {
 27584  	var rawMsg map[string]json.RawMessage
 27585  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 27586  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27587  	}
 27588  	for key, val := range rawMsg {
 27589  		var err error
 27590  		switch key {
 27591  		case "disableBgpRoutePropagation":
 27592  			err = unpopulate(val, "DisableBgpRoutePropagation", &r.DisableBgpRoutePropagation)
 27593  			delete(rawMsg, key)
 27594  		case "provisioningState":
 27595  			err = unpopulate(val, "ProvisioningState", &r.ProvisioningState)
 27596  			delete(rawMsg, key)
 27597  		case "resourceGuid":
 27598  			err = unpopulate(val, "ResourceGUID", &r.ResourceGUID)
 27599  			delete(rawMsg, key)
 27600  		case "routes":
 27601  			err = unpopulate(val, "Routes", &r.Routes)
 27602  			delete(rawMsg, key)
 27603  		case "subnets":
 27604  			err = unpopulate(val, "Subnets", &r.Subnets)
 27605  			delete(rawMsg, key)
 27606  		}
 27607  		if err != nil {
 27608  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27609  		}
 27610  	}
 27611  	return nil
 27612  }
 27613  
 27614  // MarshalJSON implements the json.Marshaller interface for type RoutingConfiguration.
 27615  func (r RoutingConfiguration) MarshalJSON() ([]byte, error) {
 27616  	objectMap := make(map[string]any)
 27617  	populate(objectMap, "associatedRouteTable", r.AssociatedRouteTable)
 27618  	populate(objectMap, "inboundRouteMap", r.InboundRouteMap)
 27619  	populate(objectMap, "outboundRouteMap", r.OutboundRouteMap)
 27620  	populate(objectMap, "propagatedRouteTables", r.PropagatedRouteTables)
 27621  	populate(objectMap, "vnetRoutes", r.VnetRoutes)
 27622  	return json.Marshal(objectMap)
 27623  }
 27624  
 27625  // UnmarshalJSON implements the json.Unmarshaller interface for type RoutingConfiguration.
 27626  func (r *RoutingConfiguration) UnmarshalJSON(data []byte) error {
 27627  	var rawMsg map[string]json.RawMessage
 27628  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 27629  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27630  	}
 27631  	for key, val := range rawMsg {
 27632  		var err error
 27633  		switch key {
 27634  		case "associatedRouteTable":
 27635  			err = unpopulate(val, "AssociatedRouteTable", &r.AssociatedRouteTable)
 27636  			delete(rawMsg, key)
 27637  		case "inboundRouteMap":
 27638  			err = unpopulate(val, "InboundRouteMap", &r.InboundRouteMap)
 27639  			delete(rawMsg, key)
 27640  		case "outboundRouteMap":
 27641  			err = unpopulate(val, "OutboundRouteMap", &r.OutboundRouteMap)
 27642  			delete(rawMsg, key)
 27643  		case "propagatedRouteTables":
 27644  			err = unpopulate(val, "PropagatedRouteTables", &r.PropagatedRouteTables)
 27645  			delete(rawMsg, key)
 27646  		case "vnetRoutes":
 27647  			err = unpopulate(val, "VnetRoutes", &r.VnetRoutes)
 27648  			delete(rawMsg, key)
 27649  		}
 27650  		if err != nil {
 27651  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27652  		}
 27653  	}
 27654  	return nil
 27655  }
 27656  
 27657  // MarshalJSON implements the json.Marshaller interface for type RoutingIntent.
 27658  func (r RoutingIntent) MarshalJSON() ([]byte, error) {
 27659  	objectMap := make(map[string]any)
 27660  	populate(objectMap, "etag", r.Etag)
 27661  	populate(objectMap, "id", r.ID)
 27662  	populate(objectMap, "name", r.Name)
 27663  	populate(objectMap, "properties", r.Properties)
 27664  	populate(objectMap, "type", r.Type)
 27665  	return json.Marshal(objectMap)
 27666  }
 27667  
 27668  // UnmarshalJSON implements the json.Unmarshaller interface for type RoutingIntent.
 27669  func (r *RoutingIntent) UnmarshalJSON(data []byte) error {
 27670  	var rawMsg map[string]json.RawMessage
 27671  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 27672  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27673  	}
 27674  	for key, val := range rawMsg {
 27675  		var err error
 27676  		switch key {
 27677  		case "etag":
 27678  			err = unpopulate(val, "Etag", &r.Etag)
 27679  			delete(rawMsg, key)
 27680  		case "id":
 27681  			err = unpopulate(val, "ID", &r.ID)
 27682  			delete(rawMsg, key)
 27683  		case "name":
 27684  			err = unpopulate(val, "Name", &r.Name)
 27685  			delete(rawMsg, key)
 27686  		case "properties":
 27687  			err = unpopulate(val, "Properties", &r.Properties)
 27688  			delete(rawMsg, key)
 27689  		case "type":
 27690  			err = unpopulate(val, "Type", &r.Type)
 27691  			delete(rawMsg, key)
 27692  		}
 27693  		if err != nil {
 27694  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27695  		}
 27696  	}
 27697  	return nil
 27698  }
 27699  
 27700  // MarshalJSON implements the json.Marshaller interface for type RoutingIntentProperties.
 27701  func (r RoutingIntentProperties) MarshalJSON() ([]byte, error) {
 27702  	objectMap := make(map[string]any)
 27703  	populate(objectMap, "provisioningState", r.ProvisioningState)
 27704  	populate(objectMap, "routingPolicies", r.RoutingPolicies)
 27705  	return json.Marshal(objectMap)
 27706  }
 27707  
 27708  // UnmarshalJSON implements the json.Unmarshaller interface for type RoutingIntentProperties.
 27709  func (r *RoutingIntentProperties) UnmarshalJSON(data []byte) error {
 27710  	var rawMsg map[string]json.RawMessage
 27711  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 27712  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27713  	}
 27714  	for key, val := range rawMsg {
 27715  		var err error
 27716  		switch key {
 27717  		case "provisioningState":
 27718  			err = unpopulate(val, "ProvisioningState", &r.ProvisioningState)
 27719  			delete(rawMsg, key)
 27720  		case "routingPolicies":
 27721  			err = unpopulate(val, "RoutingPolicies", &r.RoutingPolicies)
 27722  			delete(rawMsg, key)
 27723  		}
 27724  		if err != nil {
 27725  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27726  		}
 27727  	}
 27728  	return nil
 27729  }
 27730  
 27731  // MarshalJSON implements the json.Marshaller interface for type RoutingPolicy.
 27732  func (r RoutingPolicy) MarshalJSON() ([]byte, error) {
 27733  	objectMap := make(map[string]any)
 27734  	populate(objectMap, "destinations", r.Destinations)
 27735  	populate(objectMap, "name", r.Name)
 27736  	populate(objectMap, "nextHop", r.NextHop)
 27737  	return json.Marshal(objectMap)
 27738  }
 27739  
 27740  // UnmarshalJSON implements the json.Unmarshaller interface for type RoutingPolicy.
 27741  func (r *RoutingPolicy) UnmarshalJSON(data []byte) error {
 27742  	var rawMsg map[string]json.RawMessage
 27743  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 27744  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27745  	}
 27746  	for key, val := range rawMsg {
 27747  		var err error
 27748  		switch key {
 27749  		case "destinations":
 27750  			err = unpopulate(val, "Destinations", &r.Destinations)
 27751  			delete(rawMsg, key)
 27752  		case "name":
 27753  			err = unpopulate(val, "Name", &r.Name)
 27754  			delete(rawMsg, key)
 27755  		case "nextHop":
 27756  			err = unpopulate(val, "NextHop", &r.NextHop)
 27757  			delete(rawMsg, key)
 27758  		}
 27759  		if err != nil {
 27760  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27761  		}
 27762  	}
 27763  	return nil
 27764  }
 27765  
 27766  // MarshalJSON implements the json.Marshaller interface for type RoutingRule.
 27767  func (r RoutingRule) MarshalJSON() ([]byte, error) {
 27768  	objectMap := make(map[string]any)
 27769  	populate(objectMap, "etag", r.Etag)
 27770  	populate(objectMap, "id", r.ID)
 27771  	populate(objectMap, "name", r.Name)
 27772  	populate(objectMap, "properties", r.Properties)
 27773  	populate(objectMap, "systemData", r.SystemData)
 27774  	populate(objectMap, "type", r.Type)
 27775  	return json.Marshal(objectMap)
 27776  }
 27777  
 27778  // UnmarshalJSON implements the json.Unmarshaller interface for type RoutingRule.
 27779  func (r *RoutingRule) UnmarshalJSON(data []byte) error {
 27780  	var rawMsg map[string]json.RawMessage
 27781  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 27782  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27783  	}
 27784  	for key, val := range rawMsg {
 27785  		var err error
 27786  		switch key {
 27787  		case "etag":
 27788  			err = unpopulate(val, "Etag", &r.Etag)
 27789  			delete(rawMsg, key)
 27790  		case "id":
 27791  			err = unpopulate(val, "ID", &r.ID)
 27792  			delete(rawMsg, key)
 27793  		case "name":
 27794  			err = unpopulate(val, "Name", &r.Name)
 27795  			delete(rawMsg, key)
 27796  		case "properties":
 27797  			err = unpopulate(val, "Properties", &r.Properties)
 27798  			delete(rawMsg, key)
 27799  		case "systemData":
 27800  			err = unpopulate(val, "SystemData", &r.SystemData)
 27801  			delete(rawMsg, key)
 27802  		case "type":
 27803  			err = unpopulate(val, "Type", &r.Type)
 27804  			delete(rawMsg, key)
 27805  		}
 27806  		if err != nil {
 27807  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27808  		}
 27809  	}
 27810  	return nil
 27811  }
 27812  
 27813  // MarshalJSON implements the json.Marshaller interface for type RoutingRuleCollection.
 27814  func (r RoutingRuleCollection) MarshalJSON() ([]byte, error) {
 27815  	objectMap := make(map[string]any)
 27816  	populate(objectMap, "etag", r.Etag)
 27817  	populate(objectMap, "id", r.ID)
 27818  	populate(objectMap, "name", r.Name)
 27819  	populate(objectMap, "properties", r.Properties)
 27820  	populate(objectMap, "systemData", r.SystemData)
 27821  	populate(objectMap, "type", r.Type)
 27822  	return json.Marshal(objectMap)
 27823  }
 27824  
 27825  // UnmarshalJSON implements the json.Unmarshaller interface for type RoutingRuleCollection.
 27826  func (r *RoutingRuleCollection) UnmarshalJSON(data []byte) error {
 27827  	var rawMsg map[string]json.RawMessage
 27828  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 27829  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27830  	}
 27831  	for key, val := range rawMsg {
 27832  		var err error
 27833  		switch key {
 27834  		case "etag":
 27835  			err = unpopulate(val, "Etag", &r.Etag)
 27836  			delete(rawMsg, key)
 27837  		case "id":
 27838  			err = unpopulate(val, "ID", &r.ID)
 27839  			delete(rawMsg, key)
 27840  		case "name":
 27841  			err = unpopulate(val, "Name", &r.Name)
 27842  			delete(rawMsg, key)
 27843  		case "properties":
 27844  			err = unpopulate(val, "Properties", &r.Properties)
 27845  			delete(rawMsg, key)
 27846  		case "systemData":
 27847  			err = unpopulate(val, "SystemData", &r.SystemData)
 27848  			delete(rawMsg, key)
 27849  		case "type":
 27850  			err = unpopulate(val, "Type", &r.Type)
 27851  			delete(rawMsg, key)
 27852  		}
 27853  		if err != nil {
 27854  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27855  		}
 27856  	}
 27857  	return nil
 27858  }
 27859  
 27860  // MarshalJSON implements the json.Marshaller interface for type RoutingRuleCollectionListResult.
 27861  func (r RoutingRuleCollectionListResult) MarshalJSON() ([]byte, error) {
 27862  	objectMap := make(map[string]any)
 27863  	populate(objectMap, "nextLink", r.NextLink)
 27864  	populate(objectMap, "value", r.Value)
 27865  	return json.Marshal(objectMap)
 27866  }
 27867  
 27868  // UnmarshalJSON implements the json.Unmarshaller interface for type RoutingRuleCollectionListResult.
 27869  func (r *RoutingRuleCollectionListResult) UnmarshalJSON(data []byte) error {
 27870  	var rawMsg map[string]json.RawMessage
 27871  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 27872  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27873  	}
 27874  	for key, val := range rawMsg {
 27875  		var err error
 27876  		switch key {
 27877  		case "nextLink":
 27878  			err = unpopulate(val, "NextLink", &r.NextLink)
 27879  			delete(rawMsg, key)
 27880  		case "value":
 27881  			err = unpopulate(val, "Value", &r.Value)
 27882  			delete(rawMsg, key)
 27883  		}
 27884  		if err != nil {
 27885  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27886  		}
 27887  	}
 27888  	return nil
 27889  }
 27890  
 27891  // MarshalJSON implements the json.Marshaller interface for type RoutingRuleCollectionPropertiesFormat.
 27892  func (r RoutingRuleCollectionPropertiesFormat) MarshalJSON() ([]byte, error) {
 27893  	objectMap := make(map[string]any)
 27894  	populate(objectMap, "appliesTo", r.AppliesTo)
 27895  	populate(objectMap, "description", r.Description)
 27896  	populate(objectMap, "disableBgpRoutePropagation", r.DisableBgpRoutePropagation)
 27897  	populate(objectMap, "provisioningState", r.ProvisioningState)
 27898  	populate(objectMap, "resourceGuid", r.ResourceGUID)
 27899  	return json.Marshal(objectMap)
 27900  }
 27901  
 27902  // UnmarshalJSON implements the json.Unmarshaller interface for type RoutingRuleCollectionPropertiesFormat.
 27903  func (r *RoutingRuleCollectionPropertiesFormat) UnmarshalJSON(data []byte) error {
 27904  	var rawMsg map[string]json.RawMessage
 27905  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 27906  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27907  	}
 27908  	for key, val := range rawMsg {
 27909  		var err error
 27910  		switch key {
 27911  		case "appliesTo":
 27912  			err = unpopulate(val, "AppliesTo", &r.AppliesTo)
 27913  			delete(rawMsg, key)
 27914  		case "description":
 27915  			err = unpopulate(val, "Description", &r.Description)
 27916  			delete(rawMsg, key)
 27917  		case "disableBgpRoutePropagation":
 27918  			err = unpopulate(val, "DisableBgpRoutePropagation", &r.DisableBgpRoutePropagation)
 27919  			delete(rawMsg, key)
 27920  		case "provisioningState":
 27921  			err = unpopulate(val, "ProvisioningState", &r.ProvisioningState)
 27922  			delete(rawMsg, key)
 27923  		case "resourceGuid":
 27924  			err = unpopulate(val, "ResourceGUID", &r.ResourceGUID)
 27925  			delete(rawMsg, key)
 27926  		}
 27927  		if err != nil {
 27928  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27929  		}
 27930  	}
 27931  	return nil
 27932  }
 27933  
 27934  // MarshalJSON implements the json.Marshaller interface for type RoutingRuleListResult.
 27935  func (r RoutingRuleListResult) MarshalJSON() ([]byte, error) {
 27936  	objectMap := make(map[string]any)
 27937  	populate(objectMap, "nextLink", r.NextLink)
 27938  	populate(objectMap, "value", r.Value)
 27939  	return json.Marshal(objectMap)
 27940  }
 27941  
 27942  // UnmarshalJSON implements the json.Unmarshaller interface for type RoutingRuleListResult.
 27943  func (r *RoutingRuleListResult) UnmarshalJSON(data []byte) error {
 27944  	var rawMsg map[string]json.RawMessage
 27945  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 27946  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27947  	}
 27948  	for key, val := range rawMsg {
 27949  		var err error
 27950  		switch key {
 27951  		case "nextLink":
 27952  			err = unpopulate(val, "NextLink", &r.NextLink)
 27953  			delete(rawMsg, key)
 27954  		case "value":
 27955  			err = unpopulate(val, "Value", &r.Value)
 27956  			delete(rawMsg, key)
 27957  		}
 27958  		if err != nil {
 27959  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27960  		}
 27961  	}
 27962  	return nil
 27963  }
 27964  
 27965  // MarshalJSON implements the json.Marshaller interface for type RoutingRuleNextHop.
 27966  func (r RoutingRuleNextHop) MarshalJSON() ([]byte, error) {
 27967  	objectMap := make(map[string]any)
 27968  	populate(objectMap, "nextHopAddress", r.NextHopAddress)
 27969  	populate(objectMap, "nextHopType", r.NextHopType)
 27970  	return json.Marshal(objectMap)
 27971  }
 27972  
 27973  // UnmarshalJSON implements the json.Unmarshaller interface for type RoutingRuleNextHop.
 27974  func (r *RoutingRuleNextHop) UnmarshalJSON(data []byte) error {
 27975  	var rawMsg map[string]json.RawMessage
 27976  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 27977  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27978  	}
 27979  	for key, val := range rawMsg {
 27980  		var err error
 27981  		switch key {
 27982  		case "nextHopAddress":
 27983  			err = unpopulate(val, "NextHopAddress", &r.NextHopAddress)
 27984  			delete(rawMsg, key)
 27985  		case "nextHopType":
 27986  			err = unpopulate(val, "NextHopType", &r.NextHopType)
 27987  			delete(rawMsg, key)
 27988  		}
 27989  		if err != nil {
 27990  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 27991  		}
 27992  	}
 27993  	return nil
 27994  }
 27995  
 27996  // MarshalJSON implements the json.Marshaller interface for type RoutingRulePropertiesFormat.
 27997  func (r RoutingRulePropertiesFormat) MarshalJSON() ([]byte, error) {
 27998  	objectMap := make(map[string]any)
 27999  	populate(objectMap, "description", r.Description)
 28000  	populate(objectMap, "destination", r.Destination)
 28001  	populate(objectMap, "nextHop", r.NextHop)
 28002  	populate(objectMap, "provisioningState", r.ProvisioningState)
 28003  	populate(objectMap, "resourceGuid", r.ResourceGUID)
 28004  	return json.Marshal(objectMap)
 28005  }
 28006  
 28007  // UnmarshalJSON implements the json.Unmarshaller interface for type RoutingRulePropertiesFormat.
 28008  func (r *RoutingRulePropertiesFormat) UnmarshalJSON(data []byte) error {
 28009  	var rawMsg map[string]json.RawMessage
 28010  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 28011  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 28012  	}
 28013  	for key, val := range rawMsg {
 28014  		var err error
 28015  		switch key {
 28016  		case "description":
 28017  			err = unpopulate(val, "Description", &r.Description)
 28018  			delete(rawMsg, key)
 28019  		case "destination":
 28020  			err = unpopulate(val, "Destination", &r.Destination)
 28021  			delete(rawMsg, key)
 28022  		case "nextHop":
 28023  			err = unpopulate(val, "NextHop", &r.NextHop)
 28024  			delete(rawMsg, key)
 28025  		case "provisioningState":
 28026  			err = unpopulate(val, "ProvisioningState", &r.ProvisioningState)
 28027  			delete(rawMsg, key)
 28028  		case "resourceGuid":
 28029  			err = unpopulate(val, "ResourceGUID", &r.ResourceGUID)
 28030  			delete(rawMsg, key)
 28031  		}
 28032  		if err != nil {
 28033  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 28034  		}
 28035  	}
 28036  	return nil
 28037  }
 28038  
 28039  // MarshalJSON implements the json.Marshaller interface for type RoutingRuleRouteDestination.
 28040  func (r RoutingRuleRouteDestination) MarshalJSON() ([]byte, error) {
 28041  	objectMap := make(map[string]any)
 28042  	populate(objectMap, "destinationAddress", r.DestinationAddress)
 28043  	populate(objectMap, "type", r.Type)
 28044  	return json.Marshal(objectMap)
 28045  }
 28046  
 28047  // UnmarshalJSON implements the json.Unmarshaller interface for type RoutingRuleRouteDestination.
 28048  func (r *RoutingRuleRouteDestination) UnmarshalJSON(data []byte) error {
 28049  	var rawMsg map[string]json.RawMessage
 28050  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 28051  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 28052  	}
 28053  	for key, val := range rawMsg {
 28054  		var err error
 28055  		switch key {
 28056  		case "destinationAddress":
 28057  			err = unpopulate(val, "DestinationAddress", &r.DestinationAddress)
 28058  			delete(rawMsg, key)
 28059  		case "type":
 28060  			err = unpopulate(val, "Type", &r.Type)
 28061  			delete(rawMsg, key)
 28062  		}
 28063  		if err != nil {
 28064  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 28065  		}
 28066  	}
 28067  	return nil
 28068  }
 28069  
 28070  // MarshalJSON implements the json.Marshaller interface for type Rule.
 28071  func (r Rule) MarshalJSON() ([]byte, error) {
 28072  	objectMap := make(map[string]any)
 28073  	populate(objectMap, "description", r.Description)
 28074  	populate(objectMap, "destinationAddresses", r.DestinationAddresses)
 28075  	populate(objectMap, "destinationFqdns", r.DestinationFqdns)
 28076  	populate(objectMap, "destinationIpGroups", r.DestinationIPGroups)
 28077  	populate(objectMap, "destinationPorts", r.DestinationPorts)
 28078  	populate(objectMap, "ipProtocols", r.IPProtocols)
 28079  	populate(objectMap, "name", r.Name)
 28080  	objectMap["ruleType"] = FirewallPolicyRuleTypeNetworkRule
 28081  	populate(objectMap, "sourceAddresses", r.SourceAddresses)
 28082  	populate(objectMap, "sourceIpGroups", r.SourceIPGroups)
 28083  	return json.Marshal(objectMap)
 28084  }
 28085  
 28086  // UnmarshalJSON implements the json.Unmarshaller interface for type Rule.
 28087  func (r *Rule) UnmarshalJSON(data []byte) error {
 28088  	var rawMsg map[string]json.RawMessage
 28089  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 28090  		return fmt.Errorf("unmarshalling type %T: %v", r, err)
 28091  	}
 28092  	for key, val := range rawMsg {
 28093  		var err error
 28094  		switch key {
 28095  		case "description":
 28096  			err = unpopulate(val, "Description", &r.Description)
 28097  			delete(rawMsg, key)
 28098  		case "destinationAddresses":
 28099  			err = unpopulate(val, "DestinationAddresses", &r.DestinationAddresses)
 28100  			delete(rawMsg, key)
 28101  		case "destinationFqdns":
 28102  			err = unpopulate(val, "DestinationFqdns", &r.DestinationFqdns)
 28103  			delete(rawMsg, key)
 28104  		case "destinationIpGroups":
 28105  			err = unpopulate(val, "DestinationIPGroups", &r.DestinationIPGroups)
 28106  			delete(rawMsg, key)
 28107  		case "destinationPorts":
 28108  			err = unpopulate(val, "DestinationPorts", &r.DestinationPorts)
 28109  			delete(rawMsg, key)
 28110  		case "ipProtocols":
 28111  			err = unpopulate(val, "IPProtocols", &r.IPProtocols)
 28112  			delete(rawMsg, key)
 28113  		case "name":
 28114  			err = unpopulate(val, "Name", &r.Name)
 28115  			delete(rawMsg, key)
 28116  		case "ruleType":
 28117  			err = unpopulate(val, "RuleType", &r.RuleType)
 28118  			delete(rawMsg, key)
 28119  		case "sourceAddresses":
 28120  			err = unpopulate(val, "SourceAddresses", &r.SourceAddresses)
 28121  			delete(rawMsg, key)
 28122  		case "sourceIpGroups":
 28123  			err = unpopulate(val, "SourceIPGroups", &r.SourceIPGroups)
 28124  			delete(rawMsg, key)
 28125  		}
 28126  		if err != nil {
 28127  			return fmt.Errorf("unmarshalling type %T: %v", r, err)
 28128  		}
 28129  	}
 28130  	return nil
 28131  }
 28132  
 28133  // MarshalJSON implements the json.Marshaller interface for type SKU.
 28134  func (s SKU) MarshalJSON() ([]byte, error) {
 28135  	objectMap := make(map[string]any)
 28136  	populate(objectMap, "name", s.Name)
 28137  	return json.Marshal(objectMap)
 28138  }
 28139  
 28140  // UnmarshalJSON implements the json.Unmarshaller interface for type SKU.
 28141  func (s *SKU) UnmarshalJSON(data []byte) error {
 28142  	var rawMsg map[string]json.RawMessage
 28143  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 28144  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28145  	}
 28146  	for key, val := range rawMsg {
 28147  		var err error
 28148  		switch key {
 28149  		case "name":
 28150  			err = unpopulate(val, "Name", &s.Name)
 28151  			delete(rawMsg, key)
 28152  		}
 28153  		if err != nil {
 28154  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28155  		}
 28156  	}
 28157  	return nil
 28158  }
 28159  
 28160  // MarshalJSON implements the json.Marshaller interface for type ScopeConnection.
 28161  func (s ScopeConnection) MarshalJSON() ([]byte, error) {
 28162  	objectMap := make(map[string]any)
 28163  	populate(objectMap, "etag", s.Etag)
 28164  	populate(objectMap, "id", s.ID)
 28165  	populate(objectMap, "name", s.Name)
 28166  	populate(objectMap, "properties", s.Properties)
 28167  	populate(objectMap, "systemData", s.SystemData)
 28168  	populate(objectMap, "type", s.Type)
 28169  	return json.Marshal(objectMap)
 28170  }
 28171  
 28172  // UnmarshalJSON implements the json.Unmarshaller interface for type ScopeConnection.
 28173  func (s *ScopeConnection) UnmarshalJSON(data []byte) error {
 28174  	var rawMsg map[string]json.RawMessage
 28175  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 28176  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28177  	}
 28178  	for key, val := range rawMsg {
 28179  		var err error
 28180  		switch key {
 28181  		case "etag":
 28182  			err = unpopulate(val, "Etag", &s.Etag)
 28183  			delete(rawMsg, key)
 28184  		case "id":
 28185  			err = unpopulate(val, "ID", &s.ID)
 28186  			delete(rawMsg, key)
 28187  		case "name":
 28188  			err = unpopulate(val, "Name", &s.Name)
 28189  			delete(rawMsg, key)
 28190  		case "properties":
 28191  			err = unpopulate(val, "Properties", &s.Properties)
 28192  			delete(rawMsg, key)
 28193  		case "systemData":
 28194  			err = unpopulate(val, "SystemData", &s.SystemData)
 28195  			delete(rawMsg, key)
 28196  		case "type":
 28197  			err = unpopulate(val, "Type", &s.Type)
 28198  			delete(rawMsg, key)
 28199  		}
 28200  		if err != nil {
 28201  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28202  		}
 28203  	}
 28204  	return nil
 28205  }
 28206  
 28207  // MarshalJSON implements the json.Marshaller interface for type ScopeConnectionListResult.
 28208  func (s ScopeConnectionListResult) MarshalJSON() ([]byte, error) {
 28209  	objectMap := make(map[string]any)
 28210  	populate(objectMap, "nextLink", s.NextLink)
 28211  	populate(objectMap, "value", s.Value)
 28212  	return json.Marshal(objectMap)
 28213  }
 28214  
 28215  // UnmarshalJSON implements the json.Unmarshaller interface for type ScopeConnectionListResult.
 28216  func (s *ScopeConnectionListResult) UnmarshalJSON(data []byte) error {
 28217  	var rawMsg map[string]json.RawMessage
 28218  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 28219  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28220  	}
 28221  	for key, val := range rawMsg {
 28222  		var err error
 28223  		switch key {
 28224  		case "nextLink":
 28225  			err = unpopulate(val, "NextLink", &s.NextLink)
 28226  			delete(rawMsg, key)
 28227  		case "value":
 28228  			err = unpopulate(val, "Value", &s.Value)
 28229  			delete(rawMsg, key)
 28230  		}
 28231  		if err != nil {
 28232  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28233  		}
 28234  	}
 28235  	return nil
 28236  }
 28237  
 28238  // MarshalJSON implements the json.Marshaller interface for type ScopeConnectionProperties.
 28239  func (s ScopeConnectionProperties) MarshalJSON() ([]byte, error) {
 28240  	objectMap := make(map[string]any)
 28241  	populate(objectMap, "connectionState", s.ConnectionState)
 28242  	populate(objectMap, "description", s.Description)
 28243  	populate(objectMap, "resourceId", s.ResourceID)
 28244  	populate(objectMap, "tenantId", s.TenantID)
 28245  	return json.Marshal(objectMap)
 28246  }
 28247  
 28248  // UnmarshalJSON implements the json.Unmarshaller interface for type ScopeConnectionProperties.
 28249  func (s *ScopeConnectionProperties) UnmarshalJSON(data []byte) error {
 28250  	var rawMsg map[string]json.RawMessage
 28251  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 28252  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28253  	}
 28254  	for key, val := range rawMsg {
 28255  		var err error
 28256  		switch key {
 28257  		case "connectionState":
 28258  			err = unpopulate(val, "ConnectionState", &s.ConnectionState)
 28259  			delete(rawMsg, key)
 28260  		case "description":
 28261  			err = unpopulate(val, "Description", &s.Description)
 28262  			delete(rawMsg, key)
 28263  		case "resourceId":
 28264  			err = unpopulate(val, "ResourceID", &s.ResourceID)
 28265  			delete(rawMsg, key)
 28266  		case "tenantId":
 28267  			err = unpopulate(val, "TenantID", &s.TenantID)
 28268  			delete(rawMsg, key)
 28269  		}
 28270  		if err != nil {
 28271  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28272  		}
 28273  	}
 28274  	return nil
 28275  }
 28276  
 28277  // MarshalJSON implements the json.Marshaller interface for type SecurityAdminConfiguration.
 28278  func (s SecurityAdminConfiguration) MarshalJSON() ([]byte, error) {
 28279  	objectMap := make(map[string]any)
 28280  	populate(objectMap, "etag", s.Etag)
 28281  	populate(objectMap, "id", s.ID)
 28282  	populate(objectMap, "name", s.Name)
 28283  	populate(objectMap, "properties", s.Properties)
 28284  	populate(objectMap, "systemData", s.SystemData)
 28285  	populate(objectMap, "type", s.Type)
 28286  	return json.Marshal(objectMap)
 28287  }
 28288  
 28289  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityAdminConfiguration.
 28290  func (s *SecurityAdminConfiguration) UnmarshalJSON(data []byte) error {
 28291  	var rawMsg map[string]json.RawMessage
 28292  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 28293  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28294  	}
 28295  	for key, val := range rawMsg {
 28296  		var err error
 28297  		switch key {
 28298  		case "etag":
 28299  			err = unpopulate(val, "Etag", &s.Etag)
 28300  			delete(rawMsg, key)
 28301  		case "id":
 28302  			err = unpopulate(val, "ID", &s.ID)
 28303  			delete(rawMsg, key)
 28304  		case "name":
 28305  			err = unpopulate(val, "Name", &s.Name)
 28306  			delete(rawMsg, key)
 28307  		case "properties":
 28308  			err = unpopulate(val, "Properties", &s.Properties)
 28309  			delete(rawMsg, key)
 28310  		case "systemData":
 28311  			err = unpopulate(val, "SystemData", &s.SystemData)
 28312  			delete(rawMsg, key)
 28313  		case "type":
 28314  			err = unpopulate(val, "Type", &s.Type)
 28315  			delete(rawMsg, key)
 28316  		}
 28317  		if err != nil {
 28318  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28319  		}
 28320  	}
 28321  	return nil
 28322  }
 28323  
 28324  // MarshalJSON implements the json.Marshaller interface for type SecurityAdminConfigurationListResult.
 28325  func (s SecurityAdminConfigurationListResult) MarshalJSON() ([]byte, error) {
 28326  	objectMap := make(map[string]any)
 28327  	populate(objectMap, "nextLink", s.NextLink)
 28328  	populate(objectMap, "value", s.Value)
 28329  	return json.Marshal(objectMap)
 28330  }
 28331  
 28332  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityAdminConfigurationListResult.
 28333  func (s *SecurityAdminConfigurationListResult) UnmarshalJSON(data []byte) error {
 28334  	var rawMsg map[string]json.RawMessage
 28335  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 28336  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28337  	}
 28338  	for key, val := range rawMsg {
 28339  		var err error
 28340  		switch key {
 28341  		case "nextLink":
 28342  			err = unpopulate(val, "NextLink", &s.NextLink)
 28343  			delete(rawMsg, key)
 28344  		case "value":
 28345  			err = unpopulate(val, "Value", &s.Value)
 28346  			delete(rawMsg, key)
 28347  		}
 28348  		if err != nil {
 28349  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28350  		}
 28351  	}
 28352  	return nil
 28353  }
 28354  
 28355  // MarshalJSON implements the json.Marshaller interface for type SecurityAdminConfigurationPropertiesFormat.
 28356  func (s SecurityAdminConfigurationPropertiesFormat) MarshalJSON() ([]byte, error) {
 28357  	objectMap := make(map[string]any)
 28358  	populate(objectMap, "applyOnNetworkIntentPolicyBasedServices", s.ApplyOnNetworkIntentPolicyBasedServices)
 28359  	populate(objectMap, "description", s.Description)
 28360  	populate(objectMap, "networkGroupAddressSpaceAggregationOption", s.NetworkGroupAddressSpaceAggregationOption)
 28361  	populate(objectMap, "provisioningState", s.ProvisioningState)
 28362  	populate(objectMap, "resourceGuid", s.ResourceGUID)
 28363  	return json.Marshal(objectMap)
 28364  }
 28365  
 28366  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityAdminConfigurationPropertiesFormat.
 28367  func (s *SecurityAdminConfigurationPropertiesFormat) UnmarshalJSON(data []byte) error {
 28368  	var rawMsg map[string]json.RawMessage
 28369  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 28370  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28371  	}
 28372  	for key, val := range rawMsg {
 28373  		var err error
 28374  		switch key {
 28375  		case "applyOnNetworkIntentPolicyBasedServices":
 28376  			err = unpopulate(val, "ApplyOnNetworkIntentPolicyBasedServices", &s.ApplyOnNetworkIntentPolicyBasedServices)
 28377  			delete(rawMsg, key)
 28378  		case "description":
 28379  			err = unpopulate(val, "Description", &s.Description)
 28380  			delete(rawMsg, key)
 28381  		case "networkGroupAddressSpaceAggregationOption":
 28382  			err = unpopulate(val, "NetworkGroupAddressSpaceAggregationOption", &s.NetworkGroupAddressSpaceAggregationOption)
 28383  			delete(rawMsg, key)
 28384  		case "provisioningState":
 28385  			err = unpopulate(val, "ProvisioningState", &s.ProvisioningState)
 28386  			delete(rawMsg, key)
 28387  		case "resourceGuid":
 28388  			err = unpopulate(val, "ResourceGUID", &s.ResourceGUID)
 28389  			delete(rawMsg, key)
 28390  		}
 28391  		if err != nil {
 28392  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28393  		}
 28394  	}
 28395  	return nil
 28396  }
 28397  
 28398  // MarshalJSON implements the json.Marshaller interface for type SecurityGroup.
 28399  func (s SecurityGroup) MarshalJSON() ([]byte, error) {
 28400  	objectMap := make(map[string]any)
 28401  	populate(objectMap, "etag", s.Etag)
 28402  	populate(objectMap, "id", s.ID)
 28403  	populate(objectMap, "location", s.Location)
 28404  	populate(objectMap, "name", s.Name)
 28405  	populate(objectMap, "properties", s.Properties)
 28406  	populate(objectMap, "tags", s.Tags)
 28407  	populate(objectMap, "type", s.Type)
 28408  	return json.Marshal(objectMap)
 28409  }
 28410  
 28411  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityGroup.
 28412  func (s *SecurityGroup) UnmarshalJSON(data []byte) error {
 28413  	var rawMsg map[string]json.RawMessage
 28414  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 28415  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28416  	}
 28417  	for key, val := range rawMsg {
 28418  		var err error
 28419  		switch key {
 28420  		case "etag":
 28421  			err = unpopulate(val, "Etag", &s.Etag)
 28422  			delete(rawMsg, key)
 28423  		case "id":
 28424  			err = unpopulate(val, "ID", &s.ID)
 28425  			delete(rawMsg, key)
 28426  		case "location":
 28427  			err = unpopulate(val, "Location", &s.Location)
 28428  			delete(rawMsg, key)
 28429  		case "name":
 28430  			err = unpopulate(val, "Name", &s.Name)
 28431  			delete(rawMsg, key)
 28432  		case "properties":
 28433  			err = unpopulate(val, "Properties", &s.Properties)
 28434  			delete(rawMsg, key)
 28435  		case "tags":
 28436  			err = unpopulate(val, "Tags", &s.Tags)
 28437  			delete(rawMsg, key)
 28438  		case "type":
 28439  			err = unpopulate(val, "Type", &s.Type)
 28440  			delete(rawMsg, key)
 28441  		}
 28442  		if err != nil {
 28443  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28444  		}
 28445  	}
 28446  	return nil
 28447  }
 28448  
 28449  // MarshalJSON implements the json.Marshaller interface for type SecurityGroupListResult.
 28450  func (s SecurityGroupListResult) MarshalJSON() ([]byte, error) {
 28451  	objectMap := make(map[string]any)
 28452  	populate(objectMap, "nextLink", s.NextLink)
 28453  	populate(objectMap, "value", s.Value)
 28454  	return json.Marshal(objectMap)
 28455  }
 28456  
 28457  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityGroupListResult.
 28458  func (s *SecurityGroupListResult) UnmarshalJSON(data []byte) error {
 28459  	var rawMsg map[string]json.RawMessage
 28460  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 28461  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28462  	}
 28463  	for key, val := range rawMsg {
 28464  		var err error
 28465  		switch key {
 28466  		case "nextLink":
 28467  			err = unpopulate(val, "NextLink", &s.NextLink)
 28468  			delete(rawMsg, key)
 28469  		case "value":
 28470  			err = unpopulate(val, "Value", &s.Value)
 28471  			delete(rawMsg, key)
 28472  		}
 28473  		if err != nil {
 28474  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28475  		}
 28476  	}
 28477  	return nil
 28478  }
 28479  
 28480  // MarshalJSON implements the json.Marshaller interface for type SecurityGroupNetworkInterface.
 28481  func (s SecurityGroupNetworkInterface) MarshalJSON() ([]byte, error) {
 28482  	objectMap := make(map[string]any)
 28483  	populate(objectMap, "id", s.ID)
 28484  	populate(objectMap, "securityRuleAssociations", s.SecurityRuleAssociations)
 28485  	return json.Marshal(objectMap)
 28486  }
 28487  
 28488  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityGroupNetworkInterface.
 28489  func (s *SecurityGroupNetworkInterface) UnmarshalJSON(data []byte) error {
 28490  	var rawMsg map[string]json.RawMessage
 28491  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 28492  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28493  	}
 28494  	for key, val := range rawMsg {
 28495  		var err error
 28496  		switch key {
 28497  		case "id":
 28498  			err = unpopulate(val, "ID", &s.ID)
 28499  			delete(rawMsg, key)
 28500  		case "securityRuleAssociations":
 28501  			err = unpopulate(val, "SecurityRuleAssociations", &s.SecurityRuleAssociations)
 28502  			delete(rawMsg, key)
 28503  		}
 28504  		if err != nil {
 28505  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28506  		}
 28507  	}
 28508  	return nil
 28509  }
 28510  
 28511  // MarshalJSON implements the json.Marshaller interface for type SecurityGroupPropertiesFormat.
 28512  func (s SecurityGroupPropertiesFormat) MarshalJSON() ([]byte, error) {
 28513  	objectMap := make(map[string]any)
 28514  	populate(objectMap, "defaultSecurityRules", s.DefaultSecurityRules)
 28515  	populate(objectMap, "flowLogs", s.FlowLogs)
 28516  	populate(objectMap, "flushConnection", s.FlushConnection)
 28517  	populate(objectMap, "networkInterfaces", s.NetworkInterfaces)
 28518  	populate(objectMap, "provisioningState", s.ProvisioningState)
 28519  	populate(objectMap, "resourceGuid", s.ResourceGUID)
 28520  	populate(objectMap, "securityRules", s.SecurityRules)
 28521  	populate(objectMap, "subnets", s.Subnets)
 28522  	return json.Marshal(objectMap)
 28523  }
 28524  
 28525  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityGroupPropertiesFormat.
 28526  func (s *SecurityGroupPropertiesFormat) UnmarshalJSON(data []byte) error {
 28527  	var rawMsg map[string]json.RawMessage
 28528  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 28529  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28530  	}
 28531  	for key, val := range rawMsg {
 28532  		var err error
 28533  		switch key {
 28534  		case "defaultSecurityRules":
 28535  			err = unpopulate(val, "DefaultSecurityRules", &s.DefaultSecurityRules)
 28536  			delete(rawMsg, key)
 28537  		case "flowLogs":
 28538  			err = unpopulate(val, "FlowLogs", &s.FlowLogs)
 28539  			delete(rawMsg, key)
 28540  		case "flushConnection":
 28541  			err = unpopulate(val, "FlushConnection", &s.FlushConnection)
 28542  			delete(rawMsg, key)
 28543  		case "networkInterfaces":
 28544  			err = unpopulate(val, "NetworkInterfaces", &s.NetworkInterfaces)
 28545  			delete(rawMsg, key)
 28546  		case "provisioningState":
 28547  			err = unpopulate(val, "ProvisioningState", &s.ProvisioningState)
 28548  			delete(rawMsg, key)
 28549  		case "resourceGuid":
 28550  			err = unpopulate(val, "ResourceGUID", &s.ResourceGUID)
 28551  			delete(rawMsg, key)
 28552  		case "securityRules":
 28553  			err = unpopulate(val, "SecurityRules", &s.SecurityRules)
 28554  			delete(rawMsg, key)
 28555  		case "subnets":
 28556  			err = unpopulate(val, "Subnets", &s.Subnets)
 28557  			delete(rawMsg, key)
 28558  		}
 28559  		if err != nil {
 28560  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28561  		}
 28562  	}
 28563  	return nil
 28564  }
 28565  
 28566  // MarshalJSON implements the json.Marshaller interface for type SecurityGroupResult.
 28567  func (s SecurityGroupResult) MarshalJSON() ([]byte, error) {
 28568  	objectMap := make(map[string]any)
 28569  	populate(objectMap, "evaluatedNetworkSecurityGroups", s.EvaluatedNetworkSecurityGroups)
 28570  	populate(objectMap, "securityRuleAccessResult", s.SecurityRuleAccessResult)
 28571  	return json.Marshal(objectMap)
 28572  }
 28573  
 28574  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityGroupResult.
 28575  func (s *SecurityGroupResult) UnmarshalJSON(data []byte) error {
 28576  	var rawMsg map[string]json.RawMessage
 28577  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 28578  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28579  	}
 28580  	for key, val := range rawMsg {
 28581  		var err error
 28582  		switch key {
 28583  		case "evaluatedNetworkSecurityGroups":
 28584  			err = unpopulate(val, "EvaluatedNetworkSecurityGroups", &s.EvaluatedNetworkSecurityGroups)
 28585  			delete(rawMsg, key)
 28586  		case "securityRuleAccessResult":
 28587  			err = unpopulate(val, "SecurityRuleAccessResult", &s.SecurityRuleAccessResult)
 28588  			delete(rawMsg, key)
 28589  		}
 28590  		if err != nil {
 28591  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28592  		}
 28593  	}
 28594  	return nil
 28595  }
 28596  
 28597  // MarshalJSON implements the json.Marshaller interface for type SecurityGroupViewParameters.
 28598  func (s SecurityGroupViewParameters) MarshalJSON() ([]byte, error) {
 28599  	objectMap := make(map[string]any)
 28600  	populate(objectMap, "targetResourceId", s.TargetResourceID)
 28601  	return json.Marshal(objectMap)
 28602  }
 28603  
 28604  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityGroupViewParameters.
 28605  func (s *SecurityGroupViewParameters) UnmarshalJSON(data []byte) error {
 28606  	var rawMsg map[string]json.RawMessage
 28607  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 28608  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28609  	}
 28610  	for key, val := range rawMsg {
 28611  		var err error
 28612  		switch key {
 28613  		case "targetResourceId":
 28614  			err = unpopulate(val, "TargetResourceID", &s.TargetResourceID)
 28615  			delete(rawMsg, key)
 28616  		}
 28617  		if err != nil {
 28618  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28619  		}
 28620  	}
 28621  	return nil
 28622  }
 28623  
 28624  // MarshalJSON implements the json.Marshaller interface for type SecurityGroupViewResult.
 28625  func (s SecurityGroupViewResult) MarshalJSON() ([]byte, error) {
 28626  	objectMap := make(map[string]any)
 28627  	populate(objectMap, "networkInterfaces", s.NetworkInterfaces)
 28628  	return json.Marshal(objectMap)
 28629  }
 28630  
 28631  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityGroupViewResult.
 28632  func (s *SecurityGroupViewResult) UnmarshalJSON(data []byte) error {
 28633  	var rawMsg map[string]json.RawMessage
 28634  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 28635  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28636  	}
 28637  	for key, val := range rawMsg {
 28638  		var err error
 28639  		switch key {
 28640  		case "networkInterfaces":
 28641  			err = unpopulate(val, "NetworkInterfaces", &s.NetworkInterfaces)
 28642  			delete(rawMsg, key)
 28643  		}
 28644  		if err != nil {
 28645  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28646  		}
 28647  	}
 28648  	return nil
 28649  }
 28650  
 28651  // MarshalJSON implements the json.Marshaller interface for type SecurityPartnerProvider.
 28652  func (s SecurityPartnerProvider) MarshalJSON() ([]byte, error) {
 28653  	objectMap := make(map[string]any)
 28654  	populate(objectMap, "etag", s.Etag)
 28655  	populate(objectMap, "id", s.ID)
 28656  	populate(objectMap, "location", s.Location)
 28657  	populate(objectMap, "name", s.Name)
 28658  	populate(objectMap, "properties", s.Properties)
 28659  	populate(objectMap, "tags", s.Tags)
 28660  	populate(objectMap, "type", s.Type)
 28661  	return json.Marshal(objectMap)
 28662  }
 28663  
 28664  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityPartnerProvider.
 28665  func (s *SecurityPartnerProvider) UnmarshalJSON(data []byte) error {
 28666  	var rawMsg map[string]json.RawMessage
 28667  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 28668  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28669  	}
 28670  	for key, val := range rawMsg {
 28671  		var err error
 28672  		switch key {
 28673  		case "etag":
 28674  			err = unpopulate(val, "Etag", &s.Etag)
 28675  			delete(rawMsg, key)
 28676  		case "id":
 28677  			err = unpopulate(val, "ID", &s.ID)
 28678  			delete(rawMsg, key)
 28679  		case "location":
 28680  			err = unpopulate(val, "Location", &s.Location)
 28681  			delete(rawMsg, key)
 28682  		case "name":
 28683  			err = unpopulate(val, "Name", &s.Name)
 28684  			delete(rawMsg, key)
 28685  		case "properties":
 28686  			err = unpopulate(val, "Properties", &s.Properties)
 28687  			delete(rawMsg, key)
 28688  		case "tags":
 28689  			err = unpopulate(val, "Tags", &s.Tags)
 28690  			delete(rawMsg, key)
 28691  		case "type":
 28692  			err = unpopulate(val, "Type", &s.Type)
 28693  			delete(rawMsg, key)
 28694  		}
 28695  		if err != nil {
 28696  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28697  		}
 28698  	}
 28699  	return nil
 28700  }
 28701  
 28702  // MarshalJSON implements the json.Marshaller interface for type SecurityPartnerProviderListResult.
 28703  func (s SecurityPartnerProviderListResult) MarshalJSON() ([]byte, error) {
 28704  	objectMap := make(map[string]any)
 28705  	populate(objectMap, "nextLink", s.NextLink)
 28706  	populate(objectMap, "value", s.Value)
 28707  	return json.Marshal(objectMap)
 28708  }
 28709  
 28710  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityPartnerProviderListResult.
 28711  func (s *SecurityPartnerProviderListResult) UnmarshalJSON(data []byte) error {
 28712  	var rawMsg map[string]json.RawMessage
 28713  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 28714  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28715  	}
 28716  	for key, val := range rawMsg {
 28717  		var err error
 28718  		switch key {
 28719  		case "nextLink":
 28720  			err = unpopulate(val, "NextLink", &s.NextLink)
 28721  			delete(rawMsg, key)
 28722  		case "value":
 28723  			err = unpopulate(val, "Value", &s.Value)
 28724  			delete(rawMsg, key)
 28725  		}
 28726  		if err != nil {
 28727  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28728  		}
 28729  	}
 28730  	return nil
 28731  }
 28732  
 28733  // MarshalJSON implements the json.Marshaller interface for type SecurityPartnerProviderPropertiesFormat.
 28734  func (s SecurityPartnerProviderPropertiesFormat) MarshalJSON() ([]byte, error) {
 28735  	objectMap := make(map[string]any)
 28736  	populate(objectMap, "connectionStatus", s.ConnectionStatus)
 28737  	populate(objectMap, "provisioningState", s.ProvisioningState)
 28738  	populate(objectMap, "securityProviderName", s.SecurityProviderName)
 28739  	populate(objectMap, "virtualHub", s.VirtualHub)
 28740  	return json.Marshal(objectMap)
 28741  }
 28742  
 28743  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityPartnerProviderPropertiesFormat.
 28744  func (s *SecurityPartnerProviderPropertiesFormat) UnmarshalJSON(data []byte) error {
 28745  	var rawMsg map[string]json.RawMessage
 28746  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 28747  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28748  	}
 28749  	for key, val := range rawMsg {
 28750  		var err error
 28751  		switch key {
 28752  		case "connectionStatus":
 28753  			err = unpopulate(val, "ConnectionStatus", &s.ConnectionStatus)
 28754  			delete(rawMsg, key)
 28755  		case "provisioningState":
 28756  			err = unpopulate(val, "ProvisioningState", &s.ProvisioningState)
 28757  			delete(rawMsg, key)
 28758  		case "securityProviderName":
 28759  			err = unpopulate(val, "SecurityProviderName", &s.SecurityProviderName)
 28760  			delete(rawMsg, key)
 28761  		case "virtualHub":
 28762  			err = unpopulate(val, "VirtualHub", &s.VirtualHub)
 28763  			delete(rawMsg, key)
 28764  		}
 28765  		if err != nil {
 28766  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28767  		}
 28768  	}
 28769  	return nil
 28770  }
 28771  
 28772  // MarshalJSON implements the json.Marshaller interface for type SecurityRule.
 28773  func (s SecurityRule) MarshalJSON() ([]byte, error) {
 28774  	objectMap := make(map[string]any)
 28775  	populate(objectMap, "etag", s.Etag)
 28776  	populate(objectMap, "id", s.ID)
 28777  	populate(objectMap, "name", s.Name)
 28778  	populate(objectMap, "properties", s.Properties)
 28779  	populate(objectMap, "type", s.Type)
 28780  	return json.Marshal(objectMap)
 28781  }
 28782  
 28783  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityRule.
 28784  func (s *SecurityRule) UnmarshalJSON(data []byte) error {
 28785  	var rawMsg map[string]json.RawMessage
 28786  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 28787  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28788  	}
 28789  	for key, val := range rawMsg {
 28790  		var err error
 28791  		switch key {
 28792  		case "etag":
 28793  			err = unpopulate(val, "Etag", &s.Etag)
 28794  			delete(rawMsg, key)
 28795  		case "id":
 28796  			err = unpopulate(val, "ID", &s.ID)
 28797  			delete(rawMsg, key)
 28798  		case "name":
 28799  			err = unpopulate(val, "Name", &s.Name)
 28800  			delete(rawMsg, key)
 28801  		case "properties":
 28802  			err = unpopulate(val, "Properties", &s.Properties)
 28803  			delete(rawMsg, key)
 28804  		case "type":
 28805  			err = unpopulate(val, "Type", &s.Type)
 28806  			delete(rawMsg, key)
 28807  		}
 28808  		if err != nil {
 28809  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28810  		}
 28811  	}
 28812  	return nil
 28813  }
 28814  
 28815  // MarshalJSON implements the json.Marshaller interface for type SecurityRuleAssociations.
 28816  func (s SecurityRuleAssociations) MarshalJSON() ([]byte, error) {
 28817  	objectMap := make(map[string]any)
 28818  	populate(objectMap, "defaultSecurityRules", s.DefaultSecurityRules)
 28819  	populate(objectMap, "effectiveSecurityRules", s.EffectiveSecurityRules)
 28820  	populate(objectMap, "networkInterfaceAssociation", s.NetworkInterfaceAssociation)
 28821  	populate(objectMap, "subnetAssociation", s.SubnetAssociation)
 28822  	return json.Marshal(objectMap)
 28823  }
 28824  
 28825  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityRuleAssociations.
 28826  func (s *SecurityRuleAssociations) UnmarshalJSON(data []byte) error {
 28827  	var rawMsg map[string]json.RawMessage
 28828  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 28829  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28830  	}
 28831  	for key, val := range rawMsg {
 28832  		var err error
 28833  		switch key {
 28834  		case "defaultSecurityRules":
 28835  			err = unpopulate(val, "DefaultSecurityRules", &s.DefaultSecurityRules)
 28836  			delete(rawMsg, key)
 28837  		case "effectiveSecurityRules":
 28838  			err = unpopulate(val, "EffectiveSecurityRules", &s.EffectiveSecurityRules)
 28839  			delete(rawMsg, key)
 28840  		case "networkInterfaceAssociation":
 28841  			err = unpopulate(val, "NetworkInterfaceAssociation", &s.NetworkInterfaceAssociation)
 28842  			delete(rawMsg, key)
 28843  		case "subnetAssociation":
 28844  			err = unpopulate(val, "SubnetAssociation", &s.SubnetAssociation)
 28845  			delete(rawMsg, key)
 28846  		}
 28847  		if err != nil {
 28848  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28849  		}
 28850  	}
 28851  	return nil
 28852  }
 28853  
 28854  // MarshalJSON implements the json.Marshaller interface for type SecurityRuleListResult.
 28855  func (s SecurityRuleListResult) MarshalJSON() ([]byte, error) {
 28856  	objectMap := make(map[string]any)
 28857  	populate(objectMap, "nextLink", s.NextLink)
 28858  	populate(objectMap, "value", s.Value)
 28859  	return json.Marshal(objectMap)
 28860  }
 28861  
 28862  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityRuleListResult.
 28863  func (s *SecurityRuleListResult) UnmarshalJSON(data []byte) error {
 28864  	var rawMsg map[string]json.RawMessage
 28865  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 28866  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28867  	}
 28868  	for key, val := range rawMsg {
 28869  		var err error
 28870  		switch key {
 28871  		case "nextLink":
 28872  			err = unpopulate(val, "NextLink", &s.NextLink)
 28873  			delete(rawMsg, key)
 28874  		case "value":
 28875  			err = unpopulate(val, "Value", &s.Value)
 28876  			delete(rawMsg, key)
 28877  		}
 28878  		if err != nil {
 28879  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28880  		}
 28881  	}
 28882  	return nil
 28883  }
 28884  
 28885  // MarshalJSON implements the json.Marshaller interface for type SecurityRulePropertiesFormat.
 28886  func (s SecurityRulePropertiesFormat) MarshalJSON() ([]byte, error) {
 28887  	objectMap := make(map[string]any)
 28888  	populate(objectMap, "access", s.Access)
 28889  	populate(objectMap, "description", s.Description)
 28890  	populate(objectMap, "destinationAddressPrefix", s.DestinationAddressPrefix)
 28891  	populate(objectMap, "destinationAddressPrefixes", s.DestinationAddressPrefixes)
 28892  	populate(objectMap, "destinationApplicationSecurityGroups", s.DestinationApplicationSecurityGroups)
 28893  	populate(objectMap, "destinationPortRange", s.DestinationPortRange)
 28894  	populate(objectMap, "destinationPortRanges", s.DestinationPortRanges)
 28895  	populate(objectMap, "direction", s.Direction)
 28896  	populate(objectMap, "priority", s.Priority)
 28897  	populate(objectMap, "protocol", s.Protocol)
 28898  	populate(objectMap, "provisioningState", s.ProvisioningState)
 28899  	populate(objectMap, "sourceAddressPrefix", s.SourceAddressPrefix)
 28900  	populate(objectMap, "sourceAddressPrefixes", s.SourceAddressPrefixes)
 28901  	populate(objectMap, "sourceApplicationSecurityGroups", s.SourceApplicationSecurityGroups)
 28902  	populate(objectMap, "sourcePortRange", s.SourcePortRange)
 28903  	populate(objectMap, "sourcePortRanges", s.SourcePortRanges)
 28904  	return json.Marshal(objectMap)
 28905  }
 28906  
 28907  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityRulePropertiesFormat.
 28908  func (s *SecurityRulePropertiesFormat) UnmarshalJSON(data []byte) error {
 28909  	var rawMsg map[string]json.RawMessage
 28910  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 28911  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28912  	}
 28913  	for key, val := range rawMsg {
 28914  		var err error
 28915  		switch key {
 28916  		case "access":
 28917  			err = unpopulate(val, "Access", &s.Access)
 28918  			delete(rawMsg, key)
 28919  		case "description":
 28920  			err = unpopulate(val, "Description", &s.Description)
 28921  			delete(rawMsg, key)
 28922  		case "destinationAddressPrefix":
 28923  			err = unpopulate(val, "DestinationAddressPrefix", &s.DestinationAddressPrefix)
 28924  			delete(rawMsg, key)
 28925  		case "destinationAddressPrefixes":
 28926  			err = unpopulate(val, "DestinationAddressPrefixes", &s.DestinationAddressPrefixes)
 28927  			delete(rawMsg, key)
 28928  		case "destinationApplicationSecurityGroups":
 28929  			err = unpopulate(val, "DestinationApplicationSecurityGroups", &s.DestinationApplicationSecurityGroups)
 28930  			delete(rawMsg, key)
 28931  		case "destinationPortRange":
 28932  			err = unpopulate(val, "DestinationPortRange", &s.DestinationPortRange)
 28933  			delete(rawMsg, key)
 28934  		case "destinationPortRanges":
 28935  			err = unpopulate(val, "DestinationPortRanges", &s.DestinationPortRanges)
 28936  			delete(rawMsg, key)
 28937  		case "direction":
 28938  			err = unpopulate(val, "Direction", &s.Direction)
 28939  			delete(rawMsg, key)
 28940  		case "priority":
 28941  			err = unpopulate(val, "Priority", &s.Priority)
 28942  			delete(rawMsg, key)
 28943  		case "protocol":
 28944  			err = unpopulate(val, "Protocol", &s.Protocol)
 28945  			delete(rawMsg, key)
 28946  		case "provisioningState":
 28947  			err = unpopulate(val, "ProvisioningState", &s.ProvisioningState)
 28948  			delete(rawMsg, key)
 28949  		case "sourceAddressPrefix":
 28950  			err = unpopulate(val, "SourceAddressPrefix", &s.SourceAddressPrefix)
 28951  			delete(rawMsg, key)
 28952  		case "sourceAddressPrefixes":
 28953  			err = unpopulate(val, "SourceAddressPrefixes", &s.SourceAddressPrefixes)
 28954  			delete(rawMsg, key)
 28955  		case "sourceApplicationSecurityGroups":
 28956  			err = unpopulate(val, "SourceApplicationSecurityGroups", &s.SourceApplicationSecurityGroups)
 28957  			delete(rawMsg, key)
 28958  		case "sourcePortRange":
 28959  			err = unpopulate(val, "SourcePortRange", &s.SourcePortRange)
 28960  			delete(rawMsg, key)
 28961  		case "sourcePortRanges":
 28962  			err = unpopulate(val, "SourcePortRanges", &s.SourcePortRanges)
 28963  			delete(rawMsg, key)
 28964  		}
 28965  		if err != nil {
 28966  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28967  		}
 28968  	}
 28969  	return nil
 28970  }
 28971  
 28972  // MarshalJSON implements the json.Marshaller interface for type SecurityRulesEvaluationResult.
 28973  func (s SecurityRulesEvaluationResult) MarshalJSON() ([]byte, error) {
 28974  	objectMap := make(map[string]any)
 28975  	populate(objectMap, "destinationMatched", s.DestinationMatched)
 28976  	populate(objectMap, "destinationPortMatched", s.DestinationPortMatched)
 28977  	populate(objectMap, "name", s.Name)
 28978  	populate(objectMap, "protocolMatched", s.ProtocolMatched)
 28979  	populate(objectMap, "sourceMatched", s.SourceMatched)
 28980  	populate(objectMap, "sourcePortMatched", s.SourcePortMatched)
 28981  	return json.Marshal(objectMap)
 28982  }
 28983  
 28984  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityRulesEvaluationResult.
 28985  func (s *SecurityRulesEvaluationResult) UnmarshalJSON(data []byte) error {
 28986  	var rawMsg map[string]json.RawMessage
 28987  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 28988  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 28989  	}
 28990  	for key, val := range rawMsg {
 28991  		var err error
 28992  		switch key {
 28993  		case "destinationMatched":
 28994  			err = unpopulate(val, "DestinationMatched", &s.DestinationMatched)
 28995  			delete(rawMsg, key)
 28996  		case "destinationPortMatched":
 28997  			err = unpopulate(val, "DestinationPortMatched", &s.DestinationPortMatched)
 28998  			delete(rawMsg, key)
 28999  		case "name":
 29000  			err = unpopulate(val, "Name", &s.Name)
 29001  			delete(rawMsg, key)
 29002  		case "protocolMatched":
 29003  			err = unpopulate(val, "ProtocolMatched", &s.ProtocolMatched)
 29004  			delete(rawMsg, key)
 29005  		case "sourceMatched":
 29006  			err = unpopulate(val, "SourceMatched", &s.SourceMatched)
 29007  			delete(rawMsg, key)
 29008  		case "sourcePortMatched":
 29009  			err = unpopulate(val, "SourcePortMatched", &s.SourcePortMatched)
 29010  			delete(rawMsg, key)
 29011  		}
 29012  		if err != nil {
 29013  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29014  		}
 29015  	}
 29016  	return nil
 29017  }
 29018  
 29019  // MarshalJSON implements the json.Marshaller interface for type SecurityUserConfiguration.
 29020  func (s SecurityUserConfiguration) MarshalJSON() ([]byte, error) {
 29021  	objectMap := make(map[string]any)
 29022  	populate(objectMap, "etag", s.Etag)
 29023  	populate(objectMap, "id", s.ID)
 29024  	populate(objectMap, "name", s.Name)
 29025  	populate(objectMap, "properties", s.Properties)
 29026  	populate(objectMap, "systemData", s.SystemData)
 29027  	populate(objectMap, "type", s.Type)
 29028  	return json.Marshal(objectMap)
 29029  }
 29030  
 29031  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityUserConfiguration.
 29032  func (s *SecurityUserConfiguration) UnmarshalJSON(data []byte) error {
 29033  	var rawMsg map[string]json.RawMessage
 29034  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 29035  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29036  	}
 29037  	for key, val := range rawMsg {
 29038  		var err error
 29039  		switch key {
 29040  		case "etag":
 29041  			err = unpopulate(val, "Etag", &s.Etag)
 29042  			delete(rawMsg, key)
 29043  		case "id":
 29044  			err = unpopulate(val, "ID", &s.ID)
 29045  			delete(rawMsg, key)
 29046  		case "name":
 29047  			err = unpopulate(val, "Name", &s.Name)
 29048  			delete(rawMsg, key)
 29049  		case "properties":
 29050  			err = unpopulate(val, "Properties", &s.Properties)
 29051  			delete(rawMsg, key)
 29052  		case "systemData":
 29053  			err = unpopulate(val, "SystemData", &s.SystemData)
 29054  			delete(rawMsg, key)
 29055  		case "type":
 29056  			err = unpopulate(val, "Type", &s.Type)
 29057  			delete(rawMsg, key)
 29058  		}
 29059  		if err != nil {
 29060  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29061  		}
 29062  	}
 29063  	return nil
 29064  }
 29065  
 29066  // MarshalJSON implements the json.Marshaller interface for type SecurityUserConfigurationListResult.
 29067  func (s SecurityUserConfigurationListResult) MarshalJSON() ([]byte, error) {
 29068  	objectMap := make(map[string]any)
 29069  	populate(objectMap, "nextLink", s.NextLink)
 29070  	populate(objectMap, "value", s.Value)
 29071  	return json.Marshal(objectMap)
 29072  }
 29073  
 29074  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityUserConfigurationListResult.
 29075  func (s *SecurityUserConfigurationListResult) UnmarshalJSON(data []byte) error {
 29076  	var rawMsg map[string]json.RawMessage
 29077  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 29078  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29079  	}
 29080  	for key, val := range rawMsg {
 29081  		var err error
 29082  		switch key {
 29083  		case "nextLink":
 29084  			err = unpopulate(val, "NextLink", &s.NextLink)
 29085  			delete(rawMsg, key)
 29086  		case "value":
 29087  			err = unpopulate(val, "Value", &s.Value)
 29088  			delete(rawMsg, key)
 29089  		}
 29090  		if err != nil {
 29091  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29092  		}
 29093  	}
 29094  	return nil
 29095  }
 29096  
 29097  // MarshalJSON implements the json.Marshaller interface for type SecurityUserConfigurationPropertiesFormat.
 29098  func (s SecurityUserConfigurationPropertiesFormat) MarshalJSON() ([]byte, error) {
 29099  	objectMap := make(map[string]any)
 29100  	populate(objectMap, "description", s.Description)
 29101  	populate(objectMap, "provisioningState", s.ProvisioningState)
 29102  	populate(objectMap, "resourceGuid", s.ResourceGUID)
 29103  	return json.Marshal(objectMap)
 29104  }
 29105  
 29106  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityUserConfigurationPropertiesFormat.
 29107  func (s *SecurityUserConfigurationPropertiesFormat) UnmarshalJSON(data []byte) error {
 29108  	var rawMsg map[string]json.RawMessage
 29109  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 29110  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29111  	}
 29112  	for key, val := range rawMsg {
 29113  		var err error
 29114  		switch key {
 29115  		case "description":
 29116  			err = unpopulate(val, "Description", &s.Description)
 29117  			delete(rawMsg, key)
 29118  		case "provisioningState":
 29119  			err = unpopulate(val, "ProvisioningState", &s.ProvisioningState)
 29120  			delete(rawMsg, key)
 29121  		case "resourceGuid":
 29122  			err = unpopulate(val, "ResourceGUID", &s.ResourceGUID)
 29123  			delete(rawMsg, key)
 29124  		}
 29125  		if err != nil {
 29126  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29127  		}
 29128  	}
 29129  	return nil
 29130  }
 29131  
 29132  // MarshalJSON implements the json.Marshaller interface for type SecurityUserGroupItem.
 29133  func (s SecurityUserGroupItem) MarshalJSON() ([]byte, error) {
 29134  	objectMap := make(map[string]any)
 29135  	populate(objectMap, "networkGroupId", s.NetworkGroupID)
 29136  	return json.Marshal(objectMap)
 29137  }
 29138  
 29139  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityUserGroupItem.
 29140  func (s *SecurityUserGroupItem) UnmarshalJSON(data []byte) error {
 29141  	var rawMsg map[string]json.RawMessage
 29142  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 29143  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29144  	}
 29145  	for key, val := range rawMsg {
 29146  		var err error
 29147  		switch key {
 29148  		case "networkGroupId":
 29149  			err = unpopulate(val, "NetworkGroupID", &s.NetworkGroupID)
 29150  			delete(rawMsg, key)
 29151  		}
 29152  		if err != nil {
 29153  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29154  		}
 29155  	}
 29156  	return nil
 29157  }
 29158  
 29159  // MarshalJSON implements the json.Marshaller interface for type SecurityUserRule.
 29160  func (s SecurityUserRule) MarshalJSON() ([]byte, error) {
 29161  	objectMap := make(map[string]any)
 29162  	populate(objectMap, "etag", s.Etag)
 29163  	populate(objectMap, "id", s.ID)
 29164  	populate(objectMap, "name", s.Name)
 29165  	populate(objectMap, "properties", s.Properties)
 29166  	populate(objectMap, "systemData", s.SystemData)
 29167  	populate(objectMap, "type", s.Type)
 29168  	return json.Marshal(objectMap)
 29169  }
 29170  
 29171  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityUserRule.
 29172  func (s *SecurityUserRule) UnmarshalJSON(data []byte) error {
 29173  	var rawMsg map[string]json.RawMessage
 29174  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 29175  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29176  	}
 29177  	for key, val := range rawMsg {
 29178  		var err error
 29179  		switch key {
 29180  		case "etag":
 29181  			err = unpopulate(val, "Etag", &s.Etag)
 29182  			delete(rawMsg, key)
 29183  		case "id":
 29184  			err = unpopulate(val, "ID", &s.ID)
 29185  			delete(rawMsg, key)
 29186  		case "name":
 29187  			err = unpopulate(val, "Name", &s.Name)
 29188  			delete(rawMsg, key)
 29189  		case "properties":
 29190  			err = unpopulate(val, "Properties", &s.Properties)
 29191  			delete(rawMsg, key)
 29192  		case "systemData":
 29193  			err = unpopulate(val, "SystemData", &s.SystemData)
 29194  			delete(rawMsg, key)
 29195  		case "type":
 29196  			err = unpopulate(val, "Type", &s.Type)
 29197  			delete(rawMsg, key)
 29198  		}
 29199  		if err != nil {
 29200  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29201  		}
 29202  	}
 29203  	return nil
 29204  }
 29205  
 29206  // MarshalJSON implements the json.Marshaller interface for type SecurityUserRuleCollection.
 29207  func (s SecurityUserRuleCollection) MarshalJSON() ([]byte, error) {
 29208  	objectMap := make(map[string]any)
 29209  	populate(objectMap, "etag", s.Etag)
 29210  	populate(objectMap, "id", s.ID)
 29211  	populate(objectMap, "name", s.Name)
 29212  	populate(objectMap, "properties", s.Properties)
 29213  	populate(objectMap, "systemData", s.SystemData)
 29214  	populate(objectMap, "type", s.Type)
 29215  	return json.Marshal(objectMap)
 29216  }
 29217  
 29218  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityUserRuleCollection.
 29219  func (s *SecurityUserRuleCollection) UnmarshalJSON(data []byte) error {
 29220  	var rawMsg map[string]json.RawMessage
 29221  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 29222  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29223  	}
 29224  	for key, val := range rawMsg {
 29225  		var err error
 29226  		switch key {
 29227  		case "etag":
 29228  			err = unpopulate(val, "Etag", &s.Etag)
 29229  			delete(rawMsg, key)
 29230  		case "id":
 29231  			err = unpopulate(val, "ID", &s.ID)
 29232  			delete(rawMsg, key)
 29233  		case "name":
 29234  			err = unpopulate(val, "Name", &s.Name)
 29235  			delete(rawMsg, key)
 29236  		case "properties":
 29237  			err = unpopulate(val, "Properties", &s.Properties)
 29238  			delete(rawMsg, key)
 29239  		case "systemData":
 29240  			err = unpopulate(val, "SystemData", &s.SystemData)
 29241  			delete(rawMsg, key)
 29242  		case "type":
 29243  			err = unpopulate(val, "Type", &s.Type)
 29244  			delete(rawMsg, key)
 29245  		}
 29246  		if err != nil {
 29247  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29248  		}
 29249  	}
 29250  	return nil
 29251  }
 29252  
 29253  // MarshalJSON implements the json.Marshaller interface for type SecurityUserRuleCollectionListResult.
 29254  func (s SecurityUserRuleCollectionListResult) MarshalJSON() ([]byte, error) {
 29255  	objectMap := make(map[string]any)
 29256  	populate(objectMap, "nextLink", s.NextLink)
 29257  	populate(objectMap, "value", s.Value)
 29258  	return json.Marshal(objectMap)
 29259  }
 29260  
 29261  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityUserRuleCollectionListResult.
 29262  func (s *SecurityUserRuleCollectionListResult) UnmarshalJSON(data []byte) error {
 29263  	var rawMsg map[string]json.RawMessage
 29264  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 29265  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29266  	}
 29267  	for key, val := range rawMsg {
 29268  		var err error
 29269  		switch key {
 29270  		case "nextLink":
 29271  			err = unpopulate(val, "NextLink", &s.NextLink)
 29272  			delete(rawMsg, key)
 29273  		case "value":
 29274  			err = unpopulate(val, "Value", &s.Value)
 29275  			delete(rawMsg, key)
 29276  		}
 29277  		if err != nil {
 29278  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29279  		}
 29280  	}
 29281  	return nil
 29282  }
 29283  
 29284  // MarshalJSON implements the json.Marshaller interface for type SecurityUserRuleCollectionPropertiesFormat.
 29285  func (s SecurityUserRuleCollectionPropertiesFormat) MarshalJSON() ([]byte, error) {
 29286  	objectMap := make(map[string]any)
 29287  	populate(objectMap, "appliesToGroups", s.AppliesToGroups)
 29288  	populate(objectMap, "description", s.Description)
 29289  	populate(objectMap, "provisioningState", s.ProvisioningState)
 29290  	populate(objectMap, "resourceGuid", s.ResourceGUID)
 29291  	return json.Marshal(objectMap)
 29292  }
 29293  
 29294  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityUserRuleCollectionPropertiesFormat.
 29295  func (s *SecurityUserRuleCollectionPropertiesFormat) UnmarshalJSON(data []byte) error {
 29296  	var rawMsg map[string]json.RawMessage
 29297  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 29298  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29299  	}
 29300  	for key, val := range rawMsg {
 29301  		var err error
 29302  		switch key {
 29303  		case "appliesToGroups":
 29304  			err = unpopulate(val, "AppliesToGroups", &s.AppliesToGroups)
 29305  			delete(rawMsg, key)
 29306  		case "description":
 29307  			err = unpopulate(val, "Description", &s.Description)
 29308  			delete(rawMsg, key)
 29309  		case "provisioningState":
 29310  			err = unpopulate(val, "ProvisioningState", &s.ProvisioningState)
 29311  			delete(rawMsg, key)
 29312  		case "resourceGuid":
 29313  			err = unpopulate(val, "ResourceGUID", &s.ResourceGUID)
 29314  			delete(rawMsg, key)
 29315  		}
 29316  		if err != nil {
 29317  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29318  		}
 29319  	}
 29320  	return nil
 29321  }
 29322  
 29323  // MarshalJSON implements the json.Marshaller interface for type SecurityUserRuleListResult.
 29324  func (s SecurityUserRuleListResult) MarshalJSON() ([]byte, error) {
 29325  	objectMap := make(map[string]any)
 29326  	populate(objectMap, "nextLink", s.NextLink)
 29327  	populate(objectMap, "value", s.Value)
 29328  	return json.Marshal(objectMap)
 29329  }
 29330  
 29331  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityUserRuleListResult.
 29332  func (s *SecurityUserRuleListResult) UnmarshalJSON(data []byte) error {
 29333  	var rawMsg map[string]json.RawMessage
 29334  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 29335  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29336  	}
 29337  	for key, val := range rawMsg {
 29338  		var err error
 29339  		switch key {
 29340  		case "nextLink":
 29341  			err = unpopulate(val, "NextLink", &s.NextLink)
 29342  			delete(rawMsg, key)
 29343  		case "value":
 29344  			err = unpopulate(val, "Value", &s.Value)
 29345  			delete(rawMsg, key)
 29346  		}
 29347  		if err != nil {
 29348  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29349  		}
 29350  	}
 29351  	return nil
 29352  }
 29353  
 29354  // MarshalJSON implements the json.Marshaller interface for type SecurityUserRulePropertiesFormat.
 29355  func (s SecurityUserRulePropertiesFormat) MarshalJSON() ([]byte, error) {
 29356  	objectMap := make(map[string]any)
 29357  	populate(objectMap, "description", s.Description)
 29358  	populate(objectMap, "destinationPortRanges", s.DestinationPortRanges)
 29359  	populate(objectMap, "destinations", s.Destinations)
 29360  	populate(objectMap, "direction", s.Direction)
 29361  	populate(objectMap, "protocol", s.Protocol)
 29362  	populate(objectMap, "provisioningState", s.ProvisioningState)
 29363  	populate(objectMap, "resourceGuid", s.ResourceGUID)
 29364  	populate(objectMap, "sourcePortRanges", s.SourcePortRanges)
 29365  	populate(objectMap, "sources", s.Sources)
 29366  	return json.Marshal(objectMap)
 29367  }
 29368  
 29369  // UnmarshalJSON implements the json.Unmarshaller interface for type SecurityUserRulePropertiesFormat.
 29370  func (s *SecurityUserRulePropertiesFormat) UnmarshalJSON(data []byte) error {
 29371  	var rawMsg map[string]json.RawMessage
 29372  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 29373  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29374  	}
 29375  	for key, val := range rawMsg {
 29376  		var err error
 29377  		switch key {
 29378  		case "description":
 29379  			err = unpopulate(val, "Description", &s.Description)
 29380  			delete(rawMsg, key)
 29381  		case "destinationPortRanges":
 29382  			err = unpopulate(val, "DestinationPortRanges", &s.DestinationPortRanges)
 29383  			delete(rawMsg, key)
 29384  		case "destinations":
 29385  			err = unpopulate(val, "Destinations", &s.Destinations)
 29386  			delete(rawMsg, key)
 29387  		case "direction":
 29388  			err = unpopulate(val, "Direction", &s.Direction)
 29389  			delete(rawMsg, key)
 29390  		case "protocol":
 29391  			err = unpopulate(val, "Protocol", &s.Protocol)
 29392  			delete(rawMsg, key)
 29393  		case "provisioningState":
 29394  			err = unpopulate(val, "ProvisioningState", &s.ProvisioningState)
 29395  			delete(rawMsg, key)
 29396  		case "resourceGuid":
 29397  			err = unpopulate(val, "ResourceGUID", &s.ResourceGUID)
 29398  			delete(rawMsg, key)
 29399  		case "sourcePortRanges":
 29400  			err = unpopulate(val, "SourcePortRanges", &s.SourcePortRanges)
 29401  			delete(rawMsg, key)
 29402  		case "sources":
 29403  			err = unpopulate(val, "Sources", &s.Sources)
 29404  			delete(rawMsg, key)
 29405  		}
 29406  		if err != nil {
 29407  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29408  		}
 29409  	}
 29410  	return nil
 29411  }
 29412  
 29413  // MarshalJSON implements the json.Marshaller interface for type ServiceAssociationLink.
 29414  func (s ServiceAssociationLink) MarshalJSON() ([]byte, error) {
 29415  	objectMap := make(map[string]any)
 29416  	populate(objectMap, "etag", s.Etag)
 29417  	populate(objectMap, "id", s.ID)
 29418  	populate(objectMap, "name", s.Name)
 29419  	populate(objectMap, "properties", s.Properties)
 29420  	populate(objectMap, "type", s.Type)
 29421  	return json.Marshal(objectMap)
 29422  }
 29423  
 29424  // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceAssociationLink.
 29425  func (s *ServiceAssociationLink) UnmarshalJSON(data []byte) error {
 29426  	var rawMsg map[string]json.RawMessage
 29427  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 29428  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29429  	}
 29430  	for key, val := range rawMsg {
 29431  		var err error
 29432  		switch key {
 29433  		case "etag":
 29434  			err = unpopulate(val, "Etag", &s.Etag)
 29435  			delete(rawMsg, key)
 29436  		case "id":
 29437  			err = unpopulate(val, "ID", &s.ID)
 29438  			delete(rawMsg, key)
 29439  		case "name":
 29440  			err = unpopulate(val, "Name", &s.Name)
 29441  			delete(rawMsg, key)
 29442  		case "properties":
 29443  			err = unpopulate(val, "Properties", &s.Properties)
 29444  			delete(rawMsg, key)
 29445  		case "type":
 29446  			err = unpopulate(val, "Type", &s.Type)
 29447  			delete(rawMsg, key)
 29448  		}
 29449  		if err != nil {
 29450  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29451  		}
 29452  	}
 29453  	return nil
 29454  }
 29455  
 29456  // MarshalJSON implements the json.Marshaller interface for type ServiceAssociationLinkPropertiesFormat.
 29457  func (s ServiceAssociationLinkPropertiesFormat) MarshalJSON() ([]byte, error) {
 29458  	objectMap := make(map[string]any)
 29459  	populate(objectMap, "allowDelete", s.AllowDelete)
 29460  	populate(objectMap, "link", s.Link)
 29461  	populate(objectMap, "linkedResourceType", s.LinkedResourceType)
 29462  	populate(objectMap, "locations", s.Locations)
 29463  	populate(objectMap, "provisioningState", s.ProvisioningState)
 29464  	return json.Marshal(objectMap)
 29465  }
 29466  
 29467  // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceAssociationLinkPropertiesFormat.
 29468  func (s *ServiceAssociationLinkPropertiesFormat) UnmarshalJSON(data []byte) error {
 29469  	var rawMsg map[string]json.RawMessage
 29470  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 29471  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29472  	}
 29473  	for key, val := range rawMsg {
 29474  		var err error
 29475  		switch key {
 29476  		case "allowDelete":
 29477  			err = unpopulate(val, "AllowDelete", &s.AllowDelete)
 29478  			delete(rawMsg, key)
 29479  		case "link":
 29480  			err = unpopulate(val, "Link", &s.Link)
 29481  			delete(rawMsg, key)
 29482  		case "linkedResourceType":
 29483  			err = unpopulate(val, "LinkedResourceType", &s.LinkedResourceType)
 29484  			delete(rawMsg, key)
 29485  		case "locations":
 29486  			err = unpopulate(val, "Locations", &s.Locations)
 29487  			delete(rawMsg, key)
 29488  		case "provisioningState":
 29489  			err = unpopulate(val, "ProvisioningState", &s.ProvisioningState)
 29490  			delete(rawMsg, key)
 29491  		}
 29492  		if err != nil {
 29493  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29494  		}
 29495  	}
 29496  	return nil
 29497  }
 29498  
 29499  // MarshalJSON implements the json.Marshaller interface for type ServiceAssociationLinksListResult.
 29500  func (s ServiceAssociationLinksListResult) MarshalJSON() ([]byte, error) {
 29501  	objectMap := make(map[string]any)
 29502  	populate(objectMap, "nextLink", s.NextLink)
 29503  	populate(objectMap, "value", s.Value)
 29504  	return json.Marshal(objectMap)
 29505  }
 29506  
 29507  // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceAssociationLinksListResult.
 29508  func (s *ServiceAssociationLinksListResult) UnmarshalJSON(data []byte) error {
 29509  	var rawMsg map[string]json.RawMessage
 29510  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 29511  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29512  	}
 29513  	for key, val := range rawMsg {
 29514  		var err error
 29515  		switch key {
 29516  		case "nextLink":
 29517  			err = unpopulate(val, "NextLink", &s.NextLink)
 29518  			delete(rawMsg, key)
 29519  		case "value":
 29520  			err = unpopulate(val, "Value", &s.Value)
 29521  			delete(rawMsg, key)
 29522  		}
 29523  		if err != nil {
 29524  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29525  		}
 29526  	}
 29527  	return nil
 29528  }
 29529  
 29530  // MarshalJSON implements the json.Marshaller interface for type ServiceDelegationPropertiesFormat.
 29531  func (s ServiceDelegationPropertiesFormat) MarshalJSON() ([]byte, error) {
 29532  	objectMap := make(map[string]any)
 29533  	populate(objectMap, "actions", s.Actions)
 29534  	populate(objectMap, "provisioningState", s.ProvisioningState)
 29535  	populate(objectMap, "serviceName", s.ServiceName)
 29536  	return json.Marshal(objectMap)
 29537  }
 29538  
 29539  // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceDelegationPropertiesFormat.
 29540  func (s *ServiceDelegationPropertiesFormat) UnmarshalJSON(data []byte) error {
 29541  	var rawMsg map[string]json.RawMessage
 29542  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 29543  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29544  	}
 29545  	for key, val := range rawMsg {
 29546  		var err error
 29547  		switch key {
 29548  		case "actions":
 29549  			err = unpopulate(val, "Actions", &s.Actions)
 29550  			delete(rawMsg, key)
 29551  		case "provisioningState":
 29552  			err = unpopulate(val, "ProvisioningState", &s.ProvisioningState)
 29553  			delete(rawMsg, key)
 29554  		case "serviceName":
 29555  			err = unpopulate(val, "ServiceName", &s.ServiceName)
 29556  			delete(rawMsg, key)
 29557  		}
 29558  		if err != nil {
 29559  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29560  		}
 29561  	}
 29562  	return nil
 29563  }
 29564  
 29565  // MarshalJSON implements the json.Marshaller interface for type ServiceEndpointPolicy.
 29566  func (s ServiceEndpointPolicy) MarshalJSON() ([]byte, error) {
 29567  	objectMap := make(map[string]any)
 29568  	populate(objectMap, "etag", s.Etag)
 29569  	populate(objectMap, "id", s.ID)
 29570  	populate(objectMap, "kind", s.Kind)
 29571  	populate(objectMap, "location", s.Location)
 29572  	populate(objectMap, "name", s.Name)
 29573  	populate(objectMap, "properties", s.Properties)
 29574  	populate(objectMap, "tags", s.Tags)
 29575  	populate(objectMap, "type", s.Type)
 29576  	return json.Marshal(objectMap)
 29577  }
 29578  
 29579  // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceEndpointPolicy.
 29580  func (s *ServiceEndpointPolicy) UnmarshalJSON(data []byte) error {
 29581  	var rawMsg map[string]json.RawMessage
 29582  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 29583  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29584  	}
 29585  	for key, val := range rawMsg {
 29586  		var err error
 29587  		switch key {
 29588  		case "etag":
 29589  			err = unpopulate(val, "Etag", &s.Etag)
 29590  			delete(rawMsg, key)
 29591  		case "id":
 29592  			err = unpopulate(val, "ID", &s.ID)
 29593  			delete(rawMsg, key)
 29594  		case "kind":
 29595  			err = unpopulate(val, "Kind", &s.Kind)
 29596  			delete(rawMsg, key)
 29597  		case "location":
 29598  			err = unpopulate(val, "Location", &s.Location)
 29599  			delete(rawMsg, key)
 29600  		case "name":
 29601  			err = unpopulate(val, "Name", &s.Name)
 29602  			delete(rawMsg, key)
 29603  		case "properties":
 29604  			err = unpopulate(val, "Properties", &s.Properties)
 29605  			delete(rawMsg, key)
 29606  		case "tags":
 29607  			err = unpopulate(val, "Tags", &s.Tags)
 29608  			delete(rawMsg, key)
 29609  		case "type":
 29610  			err = unpopulate(val, "Type", &s.Type)
 29611  			delete(rawMsg, key)
 29612  		}
 29613  		if err != nil {
 29614  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29615  		}
 29616  	}
 29617  	return nil
 29618  }
 29619  
 29620  // MarshalJSON implements the json.Marshaller interface for type ServiceEndpointPolicyDefinition.
 29621  func (s ServiceEndpointPolicyDefinition) MarshalJSON() ([]byte, error) {
 29622  	objectMap := make(map[string]any)
 29623  	populate(objectMap, "etag", s.Etag)
 29624  	populate(objectMap, "id", s.ID)
 29625  	populate(objectMap, "name", s.Name)
 29626  	populate(objectMap, "properties", s.Properties)
 29627  	populate(objectMap, "type", s.Type)
 29628  	return json.Marshal(objectMap)
 29629  }
 29630  
 29631  // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceEndpointPolicyDefinition.
 29632  func (s *ServiceEndpointPolicyDefinition) UnmarshalJSON(data []byte) error {
 29633  	var rawMsg map[string]json.RawMessage
 29634  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 29635  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29636  	}
 29637  	for key, val := range rawMsg {
 29638  		var err error
 29639  		switch key {
 29640  		case "etag":
 29641  			err = unpopulate(val, "Etag", &s.Etag)
 29642  			delete(rawMsg, key)
 29643  		case "id":
 29644  			err = unpopulate(val, "ID", &s.ID)
 29645  			delete(rawMsg, key)
 29646  		case "name":
 29647  			err = unpopulate(val, "Name", &s.Name)
 29648  			delete(rawMsg, key)
 29649  		case "properties":
 29650  			err = unpopulate(val, "Properties", &s.Properties)
 29651  			delete(rawMsg, key)
 29652  		case "type":
 29653  			err = unpopulate(val, "Type", &s.Type)
 29654  			delete(rawMsg, key)
 29655  		}
 29656  		if err != nil {
 29657  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29658  		}
 29659  	}
 29660  	return nil
 29661  }
 29662  
 29663  // MarshalJSON implements the json.Marshaller interface for type ServiceEndpointPolicyDefinitionListResult.
 29664  func (s ServiceEndpointPolicyDefinitionListResult) MarshalJSON() ([]byte, error) {
 29665  	objectMap := make(map[string]any)
 29666  	populate(objectMap, "nextLink", s.NextLink)
 29667  	populate(objectMap, "value", s.Value)
 29668  	return json.Marshal(objectMap)
 29669  }
 29670  
 29671  // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceEndpointPolicyDefinitionListResult.
 29672  func (s *ServiceEndpointPolicyDefinitionListResult) UnmarshalJSON(data []byte) error {
 29673  	var rawMsg map[string]json.RawMessage
 29674  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 29675  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29676  	}
 29677  	for key, val := range rawMsg {
 29678  		var err error
 29679  		switch key {
 29680  		case "nextLink":
 29681  			err = unpopulate(val, "NextLink", &s.NextLink)
 29682  			delete(rawMsg, key)
 29683  		case "value":
 29684  			err = unpopulate(val, "Value", &s.Value)
 29685  			delete(rawMsg, key)
 29686  		}
 29687  		if err != nil {
 29688  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29689  		}
 29690  	}
 29691  	return nil
 29692  }
 29693  
 29694  // MarshalJSON implements the json.Marshaller interface for type ServiceEndpointPolicyDefinitionPropertiesFormat.
 29695  func (s ServiceEndpointPolicyDefinitionPropertiesFormat) MarshalJSON() ([]byte, error) {
 29696  	objectMap := make(map[string]any)
 29697  	populate(objectMap, "description", s.Description)
 29698  	populate(objectMap, "provisioningState", s.ProvisioningState)
 29699  	populate(objectMap, "service", s.Service)
 29700  	populate(objectMap, "serviceResources", s.ServiceResources)
 29701  	return json.Marshal(objectMap)
 29702  }
 29703  
 29704  // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceEndpointPolicyDefinitionPropertiesFormat.
 29705  func (s *ServiceEndpointPolicyDefinitionPropertiesFormat) UnmarshalJSON(data []byte) error {
 29706  	var rawMsg map[string]json.RawMessage
 29707  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 29708  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29709  	}
 29710  	for key, val := range rawMsg {
 29711  		var err error
 29712  		switch key {
 29713  		case "description":
 29714  			err = unpopulate(val, "Description", &s.Description)
 29715  			delete(rawMsg, key)
 29716  		case "provisioningState":
 29717  			err = unpopulate(val, "ProvisioningState", &s.ProvisioningState)
 29718  			delete(rawMsg, key)
 29719  		case "service":
 29720  			err = unpopulate(val, "Service", &s.Service)
 29721  			delete(rawMsg, key)
 29722  		case "serviceResources":
 29723  			err = unpopulate(val, "ServiceResources", &s.ServiceResources)
 29724  			delete(rawMsg, key)
 29725  		}
 29726  		if err != nil {
 29727  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29728  		}
 29729  	}
 29730  	return nil
 29731  }
 29732  
 29733  // MarshalJSON implements the json.Marshaller interface for type ServiceEndpointPolicyListResult.
 29734  func (s ServiceEndpointPolicyListResult) MarshalJSON() ([]byte, error) {
 29735  	objectMap := make(map[string]any)
 29736  	populate(objectMap, "nextLink", s.NextLink)
 29737  	populate(objectMap, "value", s.Value)
 29738  	return json.Marshal(objectMap)
 29739  }
 29740  
 29741  // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceEndpointPolicyListResult.
 29742  func (s *ServiceEndpointPolicyListResult) UnmarshalJSON(data []byte) error {
 29743  	var rawMsg map[string]json.RawMessage
 29744  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 29745  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29746  	}
 29747  	for key, val := range rawMsg {
 29748  		var err error
 29749  		switch key {
 29750  		case "nextLink":
 29751  			err = unpopulate(val, "NextLink", &s.NextLink)
 29752  			delete(rawMsg, key)
 29753  		case "value":
 29754  			err = unpopulate(val, "Value", &s.Value)
 29755  			delete(rawMsg, key)
 29756  		}
 29757  		if err != nil {
 29758  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29759  		}
 29760  	}
 29761  	return nil
 29762  }
 29763  
 29764  // MarshalJSON implements the json.Marshaller interface for type ServiceEndpointPolicyPropertiesFormat.
 29765  func (s ServiceEndpointPolicyPropertiesFormat) MarshalJSON() ([]byte, error) {
 29766  	objectMap := make(map[string]any)
 29767  	populate(objectMap, "contextualServiceEndpointPolicies", s.ContextualServiceEndpointPolicies)
 29768  	populate(objectMap, "provisioningState", s.ProvisioningState)
 29769  	populate(objectMap, "resourceGuid", s.ResourceGUID)
 29770  	populate(objectMap, "serviceAlias", s.ServiceAlias)
 29771  	populate(objectMap, "serviceEndpointPolicyDefinitions", s.ServiceEndpointPolicyDefinitions)
 29772  	populate(objectMap, "subnets", s.Subnets)
 29773  	return json.Marshal(objectMap)
 29774  }
 29775  
 29776  // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceEndpointPolicyPropertiesFormat.
 29777  func (s *ServiceEndpointPolicyPropertiesFormat) UnmarshalJSON(data []byte) error {
 29778  	var rawMsg map[string]json.RawMessage
 29779  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 29780  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29781  	}
 29782  	for key, val := range rawMsg {
 29783  		var err error
 29784  		switch key {
 29785  		case "contextualServiceEndpointPolicies":
 29786  			err = unpopulate(val, "ContextualServiceEndpointPolicies", &s.ContextualServiceEndpointPolicies)
 29787  			delete(rawMsg, key)
 29788  		case "provisioningState":
 29789  			err = unpopulate(val, "ProvisioningState", &s.ProvisioningState)
 29790  			delete(rawMsg, key)
 29791  		case "resourceGuid":
 29792  			err = unpopulate(val, "ResourceGUID", &s.ResourceGUID)
 29793  			delete(rawMsg, key)
 29794  		case "serviceAlias":
 29795  			err = unpopulate(val, "ServiceAlias", &s.ServiceAlias)
 29796  			delete(rawMsg, key)
 29797  		case "serviceEndpointPolicyDefinitions":
 29798  			err = unpopulate(val, "ServiceEndpointPolicyDefinitions", &s.ServiceEndpointPolicyDefinitions)
 29799  			delete(rawMsg, key)
 29800  		case "subnets":
 29801  			err = unpopulate(val, "Subnets", &s.Subnets)
 29802  			delete(rawMsg, key)
 29803  		}
 29804  		if err != nil {
 29805  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29806  		}
 29807  	}
 29808  	return nil
 29809  }
 29810  
 29811  // MarshalJSON implements the json.Marshaller interface for type ServiceEndpointPropertiesFormat.
 29812  func (s ServiceEndpointPropertiesFormat) MarshalJSON() ([]byte, error) {
 29813  	objectMap := make(map[string]any)
 29814  	populate(objectMap, "locations", s.Locations)
 29815  	populate(objectMap, "networkIdentifier", s.NetworkIdentifier)
 29816  	populate(objectMap, "provisioningState", s.ProvisioningState)
 29817  	populate(objectMap, "service", s.Service)
 29818  	return json.Marshal(objectMap)
 29819  }
 29820  
 29821  // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceEndpointPropertiesFormat.
 29822  func (s *ServiceEndpointPropertiesFormat) UnmarshalJSON(data []byte) error {
 29823  	var rawMsg map[string]json.RawMessage
 29824  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 29825  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29826  	}
 29827  	for key, val := range rawMsg {
 29828  		var err error
 29829  		switch key {
 29830  		case "locations":
 29831  			err = unpopulate(val, "Locations", &s.Locations)
 29832  			delete(rawMsg, key)
 29833  		case "networkIdentifier":
 29834  			err = unpopulate(val, "NetworkIdentifier", &s.NetworkIdentifier)
 29835  			delete(rawMsg, key)
 29836  		case "provisioningState":
 29837  			err = unpopulate(val, "ProvisioningState", &s.ProvisioningState)
 29838  			delete(rawMsg, key)
 29839  		case "service":
 29840  			err = unpopulate(val, "Service", &s.Service)
 29841  			delete(rawMsg, key)
 29842  		}
 29843  		if err != nil {
 29844  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29845  		}
 29846  	}
 29847  	return nil
 29848  }
 29849  
 29850  // MarshalJSON implements the json.Marshaller interface for type ServiceTagInformation.
 29851  func (s ServiceTagInformation) MarshalJSON() ([]byte, error) {
 29852  	objectMap := make(map[string]any)
 29853  	populate(objectMap, "id", s.ID)
 29854  	populate(objectMap, "name", s.Name)
 29855  	populate(objectMap, "properties", s.Properties)
 29856  	populate(objectMap, "serviceTagChangeNumber", s.ServiceTagChangeNumber)
 29857  	return json.Marshal(objectMap)
 29858  }
 29859  
 29860  // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceTagInformation.
 29861  func (s *ServiceTagInformation) UnmarshalJSON(data []byte) error {
 29862  	var rawMsg map[string]json.RawMessage
 29863  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 29864  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29865  	}
 29866  	for key, val := range rawMsg {
 29867  		var err error
 29868  		switch key {
 29869  		case "id":
 29870  			err = unpopulate(val, "ID", &s.ID)
 29871  			delete(rawMsg, key)
 29872  		case "name":
 29873  			err = unpopulate(val, "Name", &s.Name)
 29874  			delete(rawMsg, key)
 29875  		case "properties":
 29876  			err = unpopulate(val, "Properties", &s.Properties)
 29877  			delete(rawMsg, key)
 29878  		case "serviceTagChangeNumber":
 29879  			err = unpopulate(val, "ServiceTagChangeNumber", &s.ServiceTagChangeNumber)
 29880  			delete(rawMsg, key)
 29881  		}
 29882  		if err != nil {
 29883  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29884  		}
 29885  	}
 29886  	return nil
 29887  }
 29888  
 29889  // MarshalJSON implements the json.Marshaller interface for type ServiceTagInformationListResult.
 29890  func (s ServiceTagInformationListResult) MarshalJSON() ([]byte, error) {
 29891  	objectMap := make(map[string]any)
 29892  	populate(objectMap, "nextLink", s.NextLink)
 29893  	populate(objectMap, "value", s.Value)
 29894  	return json.Marshal(objectMap)
 29895  }
 29896  
 29897  // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceTagInformationListResult.
 29898  func (s *ServiceTagInformationListResult) UnmarshalJSON(data []byte) error {
 29899  	var rawMsg map[string]json.RawMessage
 29900  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 29901  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29902  	}
 29903  	for key, val := range rawMsg {
 29904  		var err error
 29905  		switch key {
 29906  		case "nextLink":
 29907  			err = unpopulate(val, "NextLink", &s.NextLink)
 29908  			delete(rawMsg, key)
 29909  		case "value":
 29910  			err = unpopulate(val, "Value", &s.Value)
 29911  			delete(rawMsg, key)
 29912  		}
 29913  		if err != nil {
 29914  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29915  		}
 29916  	}
 29917  	return nil
 29918  }
 29919  
 29920  // MarshalJSON implements the json.Marshaller interface for type ServiceTagInformationPropertiesFormat.
 29921  func (s ServiceTagInformationPropertiesFormat) MarshalJSON() ([]byte, error) {
 29922  	objectMap := make(map[string]any)
 29923  	populate(objectMap, "addressPrefixes", s.AddressPrefixes)
 29924  	populate(objectMap, "changeNumber", s.ChangeNumber)
 29925  	populate(objectMap, "region", s.Region)
 29926  	populate(objectMap, "state", s.State)
 29927  	populate(objectMap, "systemService", s.SystemService)
 29928  	return json.Marshal(objectMap)
 29929  }
 29930  
 29931  // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceTagInformationPropertiesFormat.
 29932  func (s *ServiceTagInformationPropertiesFormat) UnmarshalJSON(data []byte) error {
 29933  	var rawMsg map[string]json.RawMessage
 29934  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 29935  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29936  	}
 29937  	for key, val := range rawMsg {
 29938  		var err error
 29939  		switch key {
 29940  		case "addressPrefixes":
 29941  			err = unpopulate(val, "AddressPrefixes", &s.AddressPrefixes)
 29942  			delete(rawMsg, key)
 29943  		case "changeNumber":
 29944  			err = unpopulate(val, "ChangeNumber", &s.ChangeNumber)
 29945  			delete(rawMsg, key)
 29946  		case "region":
 29947  			err = unpopulate(val, "Region", &s.Region)
 29948  			delete(rawMsg, key)
 29949  		case "state":
 29950  			err = unpopulate(val, "State", &s.State)
 29951  			delete(rawMsg, key)
 29952  		case "systemService":
 29953  			err = unpopulate(val, "SystemService", &s.SystemService)
 29954  			delete(rawMsg, key)
 29955  		}
 29956  		if err != nil {
 29957  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29958  		}
 29959  	}
 29960  	return nil
 29961  }
 29962  
 29963  // MarshalJSON implements the json.Marshaller interface for type ServiceTagsListResult.
 29964  func (s ServiceTagsListResult) MarshalJSON() ([]byte, error) {
 29965  	objectMap := make(map[string]any)
 29966  	populate(objectMap, "changeNumber", s.ChangeNumber)
 29967  	populate(objectMap, "cloud", s.Cloud)
 29968  	populate(objectMap, "id", s.ID)
 29969  	populate(objectMap, "name", s.Name)
 29970  	populate(objectMap, "nextLink", s.NextLink)
 29971  	populate(objectMap, "type", s.Type)
 29972  	populate(objectMap, "values", s.Values)
 29973  	return json.Marshal(objectMap)
 29974  }
 29975  
 29976  // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceTagsListResult.
 29977  func (s *ServiceTagsListResult) UnmarshalJSON(data []byte) error {
 29978  	var rawMsg map[string]json.RawMessage
 29979  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 29980  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 29981  	}
 29982  	for key, val := range rawMsg {
 29983  		var err error
 29984  		switch key {
 29985  		case "changeNumber":
 29986  			err = unpopulate(val, "ChangeNumber", &s.ChangeNumber)
 29987  			delete(rawMsg, key)
 29988  		case "cloud":
 29989  			err = unpopulate(val, "Cloud", &s.Cloud)
 29990  			delete(rawMsg, key)
 29991  		case "id":
 29992  			err = unpopulate(val, "ID", &s.ID)
 29993  			delete(rawMsg, key)
 29994  		case "name":
 29995  			err = unpopulate(val, "Name", &s.Name)
 29996  			delete(rawMsg, key)
 29997  		case "nextLink":
 29998  			err = unpopulate(val, "NextLink", &s.NextLink)
 29999  			delete(rawMsg, key)
 30000  		case "type":
 30001  			err = unpopulate(val, "Type", &s.Type)
 30002  			delete(rawMsg, key)
 30003  		case "values":
 30004  			err = unpopulate(val, "Values", &s.Values)
 30005  			delete(rawMsg, key)
 30006  		}
 30007  		if err != nil {
 30008  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30009  		}
 30010  	}
 30011  	return nil
 30012  }
 30013  
 30014  // MarshalJSON implements the json.Marshaller interface for type SessionIDs.
 30015  func (s SessionIDs) MarshalJSON() ([]byte, error) {
 30016  	objectMap := make(map[string]any)
 30017  	populate(objectMap, "sessionIds", s.SessionIDs)
 30018  	return json.Marshal(objectMap)
 30019  }
 30020  
 30021  // UnmarshalJSON implements the json.Unmarshaller interface for type SessionIDs.
 30022  func (s *SessionIDs) UnmarshalJSON(data []byte) error {
 30023  	var rawMsg map[string]json.RawMessage
 30024  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 30025  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30026  	}
 30027  	for key, val := range rawMsg {
 30028  		var err error
 30029  		switch key {
 30030  		case "sessionIds":
 30031  			err = unpopulate(val, "SessionIDs", &s.SessionIDs)
 30032  			delete(rawMsg, key)
 30033  		}
 30034  		if err != nil {
 30035  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30036  		}
 30037  	}
 30038  	return nil
 30039  }
 30040  
 30041  // MarshalJSON implements the json.Marshaller interface for type SharedKeyProperties.
 30042  func (s SharedKeyProperties) MarshalJSON() ([]byte, error) {
 30043  	objectMap := make(map[string]any)
 30044  	populate(objectMap, "provisioningState", s.ProvisioningState)
 30045  	populate(objectMap, "sharedKey", s.SharedKey)
 30046  	populate(objectMap, "sharedKeyLength", s.SharedKeyLength)
 30047  	return json.Marshal(objectMap)
 30048  }
 30049  
 30050  // UnmarshalJSON implements the json.Unmarshaller interface for type SharedKeyProperties.
 30051  func (s *SharedKeyProperties) UnmarshalJSON(data []byte) error {
 30052  	var rawMsg map[string]json.RawMessage
 30053  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 30054  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30055  	}
 30056  	for key, val := range rawMsg {
 30057  		var err error
 30058  		switch key {
 30059  		case "provisioningState":
 30060  			err = unpopulate(val, "ProvisioningState", &s.ProvisioningState)
 30061  			delete(rawMsg, key)
 30062  		case "sharedKey":
 30063  			err = unpopulate(val, "SharedKey", &s.SharedKey)
 30064  			delete(rawMsg, key)
 30065  		case "sharedKeyLength":
 30066  			err = unpopulate(val, "SharedKeyLength", &s.SharedKeyLength)
 30067  			delete(rawMsg, key)
 30068  		}
 30069  		if err != nil {
 30070  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30071  		}
 30072  	}
 30073  	return nil
 30074  }
 30075  
 30076  // MarshalJSON implements the json.Marshaller interface for type SignatureOverridesFilterValuesQuery.
 30077  func (s SignatureOverridesFilterValuesQuery) MarshalJSON() ([]byte, error) {
 30078  	objectMap := make(map[string]any)
 30079  	populate(objectMap, "filterName", s.FilterName)
 30080  	return json.Marshal(objectMap)
 30081  }
 30082  
 30083  // UnmarshalJSON implements the json.Unmarshaller interface for type SignatureOverridesFilterValuesQuery.
 30084  func (s *SignatureOverridesFilterValuesQuery) UnmarshalJSON(data []byte) error {
 30085  	var rawMsg map[string]json.RawMessage
 30086  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 30087  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30088  	}
 30089  	for key, val := range rawMsg {
 30090  		var err error
 30091  		switch key {
 30092  		case "filterName":
 30093  			err = unpopulate(val, "FilterName", &s.FilterName)
 30094  			delete(rawMsg, key)
 30095  		}
 30096  		if err != nil {
 30097  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30098  		}
 30099  	}
 30100  	return nil
 30101  }
 30102  
 30103  // MarshalJSON implements the json.Marshaller interface for type SignatureOverridesFilterValuesResponse.
 30104  func (s SignatureOverridesFilterValuesResponse) MarshalJSON() ([]byte, error) {
 30105  	objectMap := make(map[string]any)
 30106  	populate(objectMap, "filterValues", s.FilterValues)
 30107  	return json.Marshal(objectMap)
 30108  }
 30109  
 30110  // UnmarshalJSON implements the json.Unmarshaller interface for type SignatureOverridesFilterValuesResponse.
 30111  func (s *SignatureOverridesFilterValuesResponse) UnmarshalJSON(data []byte) error {
 30112  	var rawMsg map[string]json.RawMessage
 30113  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 30114  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30115  	}
 30116  	for key, val := range rawMsg {
 30117  		var err error
 30118  		switch key {
 30119  		case "filterValues":
 30120  			err = unpopulate(val, "FilterValues", &s.FilterValues)
 30121  			delete(rawMsg, key)
 30122  		}
 30123  		if err != nil {
 30124  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30125  		}
 30126  	}
 30127  	return nil
 30128  }
 30129  
 30130  // MarshalJSON implements the json.Marshaller interface for type SignaturesOverrides.
 30131  func (s SignaturesOverrides) MarshalJSON() ([]byte, error) {
 30132  	objectMap := make(map[string]any)
 30133  	populate(objectMap, "id", s.ID)
 30134  	populate(objectMap, "name", s.Name)
 30135  	populate(objectMap, "properties", s.Properties)
 30136  	populate(objectMap, "type", s.Type)
 30137  	return json.Marshal(objectMap)
 30138  }
 30139  
 30140  // UnmarshalJSON implements the json.Unmarshaller interface for type SignaturesOverrides.
 30141  func (s *SignaturesOverrides) UnmarshalJSON(data []byte) error {
 30142  	var rawMsg map[string]json.RawMessage
 30143  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 30144  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30145  	}
 30146  	for key, val := range rawMsg {
 30147  		var err error
 30148  		switch key {
 30149  		case "id":
 30150  			err = unpopulate(val, "ID", &s.ID)
 30151  			delete(rawMsg, key)
 30152  		case "name":
 30153  			err = unpopulate(val, "Name", &s.Name)
 30154  			delete(rawMsg, key)
 30155  		case "properties":
 30156  			err = unpopulate(val, "Properties", &s.Properties)
 30157  			delete(rawMsg, key)
 30158  		case "type":
 30159  			err = unpopulate(val, "Type", &s.Type)
 30160  			delete(rawMsg, key)
 30161  		}
 30162  		if err != nil {
 30163  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30164  		}
 30165  	}
 30166  	return nil
 30167  }
 30168  
 30169  // MarshalJSON implements the json.Marshaller interface for type SignaturesOverridesList.
 30170  func (s SignaturesOverridesList) MarshalJSON() ([]byte, error) {
 30171  	objectMap := make(map[string]any)
 30172  	populate(objectMap, "value", s.Value)
 30173  	return json.Marshal(objectMap)
 30174  }
 30175  
 30176  // UnmarshalJSON implements the json.Unmarshaller interface for type SignaturesOverridesList.
 30177  func (s *SignaturesOverridesList) UnmarshalJSON(data []byte) error {
 30178  	var rawMsg map[string]json.RawMessage
 30179  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 30180  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30181  	}
 30182  	for key, val := range rawMsg {
 30183  		var err error
 30184  		switch key {
 30185  		case "value":
 30186  			err = unpopulate(val, "Value", &s.Value)
 30187  			delete(rawMsg, key)
 30188  		}
 30189  		if err != nil {
 30190  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30191  		}
 30192  	}
 30193  	return nil
 30194  }
 30195  
 30196  // MarshalJSON implements the json.Marshaller interface for type SignaturesOverridesProperties.
 30197  func (s SignaturesOverridesProperties) MarshalJSON() ([]byte, error) {
 30198  	objectMap := make(map[string]any)
 30199  	populate(objectMap, "signatures", s.Signatures)
 30200  	return json.Marshal(objectMap)
 30201  }
 30202  
 30203  // UnmarshalJSON implements the json.Unmarshaller interface for type SignaturesOverridesProperties.
 30204  func (s *SignaturesOverridesProperties) UnmarshalJSON(data []byte) error {
 30205  	var rawMsg map[string]json.RawMessage
 30206  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 30207  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30208  	}
 30209  	for key, val := range rawMsg {
 30210  		var err error
 30211  		switch key {
 30212  		case "signatures":
 30213  			err = unpopulate(val, "Signatures", &s.Signatures)
 30214  			delete(rawMsg, key)
 30215  		}
 30216  		if err != nil {
 30217  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30218  		}
 30219  	}
 30220  	return nil
 30221  }
 30222  
 30223  // MarshalJSON implements the json.Marshaller interface for type SingleQueryResult.
 30224  func (s SingleQueryResult) MarshalJSON() ([]byte, error) {
 30225  	objectMap := make(map[string]any)
 30226  	populate(objectMap, "description", s.Description)
 30227  	populate(objectMap, "destinationPorts", s.DestinationPorts)
 30228  	populate(objectMap, "direction", s.Direction)
 30229  	populate(objectMap, "group", s.Group)
 30230  	populate(objectMap, "inheritedFromParentPolicy", s.InheritedFromParentPolicy)
 30231  	populate(objectMap, "lastUpdated", s.LastUpdated)
 30232  	populate(objectMap, "mode", s.Mode)
 30233  	populate(objectMap, "protocol", s.Protocol)
 30234  	populate(objectMap, "severity", s.Severity)
 30235  	populate(objectMap, "signatureId", s.SignatureID)
 30236  	populate(objectMap, "sourcePorts", s.SourcePorts)
 30237  	return json.Marshal(objectMap)
 30238  }
 30239  
 30240  // UnmarshalJSON implements the json.Unmarshaller interface for type SingleQueryResult.
 30241  func (s *SingleQueryResult) UnmarshalJSON(data []byte) error {
 30242  	var rawMsg map[string]json.RawMessage
 30243  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 30244  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30245  	}
 30246  	for key, val := range rawMsg {
 30247  		var err error
 30248  		switch key {
 30249  		case "description":
 30250  			err = unpopulate(val, "Description", &s.Description)
 30251  			delete(rawMsg, key)
 30252  		case "destinationPorts":
 30253  			err = unpopulate(val, "DestinationPorts", &s.DestinationPorts)
 30254  			delete(rawMsg, key)
 30255  		case "direction":
 30256  			err = unpopulate(val, "Direction", &s.Direction)
 30257  			delete(rawMsg, key)
 30258  		case "group":
 30259  			err = unpopulate(val, "Group", &s.Group)
 30260  			delete(rawMsg, key)
 30261  		case "inheritedFromParentPolicy":
 30262  			err = unpopulate(val, "InheritedFromParentPolicy", &s.InheritedFromParentPolicy)
 30263  			delete(rawMsg, key)
 30264  		case "lastUpdated":
 30265  			err = unpopulate(val, "LastUpdated", &s.LastUpdated)
 30266  			delete(rawMsg, key)
 30267  		case "mode":
 30268  			err = unpopulate(val, "Mode", &s.Mode)
 30269  			delete(rawMsg, key)
 30270  		case "protocol":
 30271  			err = unpopulate(val, "Protocol", &s.Protocol)
 30272  			delete(rawMsg, key)
 30273  		case "severity":
 30274  			err = unpopulate(val, "Severity", &s.Severity)
 30275  			delete(rawMsg, key)
 30276  		case "signatureId":
 30277  			err = unpopulate(val, "SignatureID", &s.SignatureID)
 30278  			delete(rawMsg, key)
 30279  		case "sourcePorts":
 30280  			err = unpopulate(val, "SourcePorts", &s.SourcePorts)
 30281  			delete(rawMsg, key)
 30282  		}
 30283  		if err != nil {
 30284  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30285  		}
 30286  	}
 30287  	return nil
 30288  }
 30289  
 30290  // MarshalJSON implements the json.Marshaller interface for type StaticCidr.
 30291  func (s StaticCidr) MarshalJSON() ([]byte, error) {
 30292  	objectMap := make(map[string]any)
 30293  	populate(objectMap, "id", s.ID)
 30294  	populate(objectMap, "name", s.Name)
 30295  	populate(objectMap, "properties", s.Properties)
 30296  	populate(objectMap, "systemData", s.SystemData)
 30297  	populate(objectMap, "type", s.Type)
 30298  	return json.Marshal(objectMap)
 30299  }
 30300  
 30301  // UnmarshalJSON implements the json.Unmarshaller interface for type StaticCidr.
 30302  func (s *StaticCidr) UnmarshalJSON(data []byte) error {
 30303  	var rawMsg map[string]json.RawMessage
 30304  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 30305  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30306  	}
 30307  	for key, val := range rawMsg {
 30308  		var err error
 30309  		switch key {
 30310  		case "id":
 30311  			err = unpopulate(val, "ID", &s.ID)
 30312  			delete(rawMsg, key)
 30313  		case "name":
 30314  			err = unpopulate(val, "Name", &s.Name)
 30315  			delete(rawMsg, key)
 30316  		case "properties":
 30317  			err = unpopulate(val, "Properties", &s.Properties)
 30318  			delete(rawMsg, key)
 30319  		case "systemData":
 30320  			err = unpopulate(val, "SystemData", &s.SystemData)
 30321  			delete(rawMsg, key)
 30322  		case "type":
 30323  			err = unpopulate(val, "Type", &s.Type)
 30324  			delete(rawMsg, key)
 30325  		}
 30326  		if err != nil {
 30327  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30328  		}
 30329  	}
 30330  	return nil
 30331  }
 30332  
 30333  // MarshalJSON implements the json.Marshaller interface for type StaticCidrList.
 30334  func (s StaticCidrList) MarshalJSON() ([]byte, error) {
 30335  	objectMap := make(map[string]any)
 30336  	populate(objectMap, "nextLink", s.NextLink)
 30337  	populate(objectMap, "value", s.Value)
 30338  	return json.Marshal(objectMap)
 30339  }
 30340  
 30341  // UnmarshalJSON implements the json.Unmarshaller interface for type StaticCidrList.
 30342  func (s *StaticCidrList) UnmarshalJSON(data []byte) error {
 30343  	var rawMsg map[string]json.RawMessage
 30344  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 30345  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30346  	}
 30347  	for key, val := range rawMsg {
 30348  		var err error
 30349  		switch key {
 30350  		case "nextLink":
 30351  			err = unpopulate(val, "NextLink", &s.NextLink)
 30352  			delete(rawMsg, key)
 30353  		case "value":
 30354  			err = unpopulate(val, "Value", &s.Value)
 30355  			delete(rawMsg, key)
 30356  		}
 30357  		if err != nil {
 30358  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30359  		}
 30360  	}
 30361  	return nil
 30362  }
 30363  
 30364  // MarshalJSON implements the json.Marshaller interface for type StaticCidrProperties.
 30365  func (s StaticCidrProperties) MarshalJSON() ([]byte, error) {
 30366  	objectMap := make(map[string]any)
 30367  	populate(objectMap, "addressPrefixes", s.AddressPrefixes)
 30368  	populate(objectMap, "description", s.Description)
 30369  	populate(objectMap, "numberOfIPAddressesToAllocate", s.NumberOfIPAddressesToAllocate)
 30370  	populate(objectMap, "provisioningState", s.ProvisioningState)
 30371  	populate(objectMap, "totalNumberOfIPAddresses", s.TotalNumberOfIPAddresses)
 30372  	return json.Marshal(objectMap)
 30373  }
 30374  
 30375  // UnmarshalJSON implements the json.Unmarshaller interface for type StaticCidrProperties.
 30376  func (s *StaticCidrProperties) UnmarshalJSON(data []byte) error {
 30377  	var rawMsg map[string]json.RawMessage
 30378  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 30379  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30380  	}
 30381  	for key, val := range rawMsg {
 30382  		var err error
 30383  		switch key {
 30384  		case "addressPrefixes":
 30385  			err = unpopulate(val, "AddressPrefixes", &s.AddressPrefixes)
 30386  			delete(rawMsg, key)
 30387  		case "description":
 30388  			err = unpopulate(val, "Description", &s.Description)
 30389  			delete(rawMsg, key)
 30390  		case "numberOfIPAddressesToAllocate":
 30391  			err = unpopulate(val, "NumberOfIPAddressesToAllocate", &s.NumberOfIPAddressesToAllocate)
 30392  			delete(rawMsg, key)
 30393  		case "provisioningState":
 30394  			err = unpopulate(val, "ProvisioningState", &s.ProvisioningState)
 30395  			delete(rawMsg, key)
 30396  		case "totalNumberOfIPAddresses":
 30397  			err = unpopulate(val, "TotalNumberOfIPAddresses", &s.TotalNumberOfIPAddresses)
 30398  			delete(rawMsg, key)
 30399  		}
 30400  		if err != nil {
 30401  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30402  		}
 30403  	}
 30404  	return nil
 30405  }
 30406  
 30407  // MarshalJSON implements the json.Marshaller interface for type StaticMember.
 30408  func (s StaticMember) MarshalJSON() ([]byte, error) {
 30409  	objectMap := make(map[string]any)
 30410  	populate(objectMap, "etag", s.Etag)
 30411  	populate(objectMap, "id", s.ID)
 30412  	populate(objectMap, "name", s.Name)
 30413  	populate(objectMap, "properties", s.Properties)
 30414  	populate(objectMap, "systemData", s.SystemData)
 30415  	populate(objectMap, "type", s.Type)
 30416  	return json.Marshal(objectMap)
 30417  }
 30418  
 30419  // UnmarshalJSON implements the json.Unmarshaller interface for type StaticMember.
 30420  func (s *StaticMember) UnmarshalJSON(data []byte) error {
 30421  	var rawMsg map[string]json.RawMessage
 30422  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 30423  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30424  	}
 30425  	for key, val := range rawMsg {
 30426  		var err error
 30427  		switch key {
 30428  		case "etag":
 30429  			err = unpopulate(val, "Etag", &s.Etag)
 30430  			delete(rawMsg, key)
 30431  		case "id":
 30432  			err = unpopulate(val, "ID", &s.ID)
 30433  			delete(rawMsg, key)
 30434  		case "name":
 30435  			err = unpopulate(val, "Name", &s.Name)
 30436  			delete(rawMsg, key)
 30437  		case "properties":
 30438  			err = unpopulate(val, "Properties", &s.Properties)
 30439  			delete(rawMsg, key)
 30440  		case "systemData":
 30441  			err = unpopulate(val, "SystemData", &s.SystemData)
 30442  			delete(rawMsg, key)
 30443  		case "type":
 30444  			err = unpopulate(val, "Type", &s.Type)
 30445  			delete(rawMsg, key)
 30446  		}
 30447  		if err != nil {
 30448  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30449  		}
 30450  	}
 30451  	return nil
 30452  }
 30453  
 30454  // MarshalJSON implements the json.Marshaller interface for type StaticMemberListResult.
 30455  func (s StaticMemberListResult) MarshalJSON() ([]byte, error) {
 30456  	objectMap := make(map[string]any)
 30457  	populate(objectMap, "nextLink", s.NextLink)
 30458  	populate(objectMap, "value", s.Value)
 30459  	return json.Marshal(objectMap)
 30460  }
 30461  
 30462  // UnmarshalJSON implements the json.Unmarshaller interface for type StaticMemberListResult.
 30463  func (s *StaticMemberListResult) UnmarshalJSON(data []byte) error {
 30464  	var rawMsg map[string]json.RawMessage
 30465  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 30466  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30467  	}
 30468  	for key, val := range rawMsg {
 30469  		var err error
 30470  		switch key {
 30471  		case "nextLink":
 30472  			err = unpopulate(val, "NextLink", &s.NextLink)
 30473  			delete(rawMsg, key)
 30474  		case "value":
 30475  			err = unpopulate(val, "Value", &s.Value)
 30476  			delete(rawMsg, key)
 30477  		}
 30478  		if err != nil {
 30479  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30480  		}
 30481  	}
 30482  	return nil
 30483  }
 30484  
 30485  // MarshalJSON implements the json.Marshaller interface for type StaticMemberProperties.
 30486  func (s StaticMemberProperties) MarshalJSON() ([]byte, error) {
 30487  	objectMap := make(map[string]any)
 30488  	populate(objectMap, "provisioningState", s.ProvisioningState)
 30489  	populate(objectMap, "region", s.Region)
 30490  	populate(objectMap, "resourceId", s.ResourceID)
 30491  	return json.Marshal(objectMap)
 30492  }
 30493  
 30494  // UnmarshalJSON implements the json.Unmarshaller interface for type StaticMemberProperties.
 30495  func (s *StaticMemberProperties) UnmarshalJSON(data []byte) error {
 30496  	var rawMsg map[string]json.RawMessage
 30497  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 30498  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30499  	}
 30500  	for key, val := range rawMsg {
 30501  		var err error
 30502  		switch key {
 30503  		case "provisioningState":
 30504  			err = unpopulate(val, "ProvisioningState", &s.ProvisioningState)
 30505  			delete(rawMsg, key)
 30506  		case "region":
 30507  			err = unpopulate(val, "Region", &s.Region)
 30508  			delete(rawMsg, key)
 30509  		case "resourceId":
 30510  			err = unpopulate(val, "ResourceID", &s.ResourceID)
 30511  			delete(rawMsg, key)
 30512  		}
 30513  		if err != nil {
 30514  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30515  		}
 30516  	}
 30517  	return nil
 30518  }
 30519  
 30520  // MarshalJSON implements the json.Marshaller interface for type StaticRoute.
 30521  func (s StaticRoute) MarshalJSON() ([]byte, error) {
 30522  	objectMap := make(map[string]any)
 30523  	populate(objectMap, "addressPrefixes", s.AddressPrefixes)
 30524  	populate(objectMap, "name", s.Name)
 30525  	populate(objectMap, "nextHopIpAddress", s.NextHopIPAddress)
 30526  	return json.Marshal(objectMap)
 30527  }
 30528  
 30529  // UnmarshalJSON implements the json.Unmarshaller interface for type StaticRoute.
 30530  func (s *StaticRoute) UnmarshalJSON(data []byte) error {
 30531  	var rawMsg map[string]json.RawMessage
 30532  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 30533  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30534  	}
 30535  	for key, val := range rawMsg {
 30536  		var err error
 30537  		switch key {
 30538  		case "addressPrefixes":
 30539  			err = unpopulate(val, "AddressPrefixes", &s.AddressPrefixes)
 30540  			delete(rawMsg, key)
 30541  		case "name":
 30542  			err = unpopulate(val, "Name", &s.Name)
 30543  			delete(rawMsg, key)
 30544  		case "nextHopIpAddress":
 30545  			err = unpopulate(val, "NextHopIPAddress", &s.NextHopIPAddress)
 30546  			delete(rawMsg, key)
 30547  		}
 30548  		if err != nil {
 30549  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30550  		}
 30551  	}
 30552  	return nil
 30553  }
 30554  
 30555  // MarshalJSON implements the json.Marshaller interface for type StaticRoutesConfig.
 30556  func (s StaticRoutesConfig) MarshalJSON() ([]byte, error) {
 30557  	objectMap := make(map[string]any)
 30558  	populate(objectMap, "propagateStaticRoutes", s.PropagateStaticRoutes)
 30559  	populate(objectMap, "vnetLocalRouteOverrideCriteria", s.VnetLocalRouteOverrideCriteria)
 30560  	return json.Marshal(objectMap)
 30561  }
 30562  
 30563  // UnmarshalJSON implements the json.Unmarshaller interface for type StaticRoutesConfig.
 30564  func (s *StaticRoutesConfig) UnmarshalJSON(data []byte) error {
 30565  	var rawMsg map[string]json.RawMessage
 30566  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 30567  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30568  	}
 30569  	for key, val := range rawMsg {
 30570  		var err error
 30571  		switch key {
 30572  		case "propagateStaticRoutes":
 30573  			err = unpopulate(val, "PropagateStaticRoutes", &s.PropagateStaticRoutes)
 30574  			delete(rawMsg, key)
 30575  		case "vnetLocalRouteOverrideCriteria":
 30576  			err = unpopulate(val, "VnetLocalRouteOverrideCriteria", &s.VnetLocalRouteOverrideCriteria)
 30577  			delete(rawMsg, key)
 30578  		}
 30579  		if err != nil {
 30580  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30581  		}
 30582  	}
 30583  	return nil
 30584  }
 30585  
 30586  // MarshalJSON implements the json.Marshaller interface for type SubResource.
 30587  func (s SubResource) MarshalJSON() ([]byte, error) {
 30588  	objectMap := make(map[string]any)
 30589  	populate(objectMap, "id", s.ID)
 30590  	return json.Marshal(objectMap)
 30591  }
 30592  
 30593  // UnmarshalJSON implements the json.Unmarshaller interface for type SubResource.
 30594  func (s *SubResource) UnmarshalJSON(data []byte) error {
 30595  	var rawMsg map[string]json.RawMessage
 30596  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 30597  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30598  	}
 30599  	for key, val := range rawMsg {
 30600  		var err error
 30601  		switch key {
 30602  		case "id":
 30603  			err = unpopulate(val, "ID", &s.ID)
 30604  			delete(rawMsg, key)
 30605  		}
 30606  		if err != nil {
 30607  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30608  		}
 30609  	}
 30610  	return nil
 30611  }
 30612  
 30613  // MarshalJSON implements the json.Marshaller interface for type Subnet.
 30614  func (s Subnet) MarshalJSON() ([]byte, error) {
 30615  	objectMap := make(map[string]any)
 30616  	populate(objectMap, "etag", s.Etag)
 30617  	populate(objectMap, "id", s.ID)
 30618  	populate(objectMap, "name", s.Name)
 30619  	populate(objectMap, "properties", s.Properties)
 30620  	populate(objectMap, "type", s.Type)
 30621  	return json.Marshal(objectMap)
 30622  }
 30623  
 30624  // UnmarshalJSON implements the json.Unmarshaller interface for type Subnet.
 30625  func (s *Subnet) UnmarshalJSON(data []byte) error {
 30626  	var rawMsg map[string]json.RawMessage
 30627  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 30628  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30629  	}
 30630  	for key, val := range rawMsg {
 30631  		var err error
 30632  		switch key {
 30633  		case "etag":
 30634  			err = unpopulate(val, "Etag", &s.Etag)
 30635  			delete(rawMsg, key)
 30636  		case "id":
 30637  			err = unpopulate(val, "ID", &s.ID)
 30638  			delete(rawMsg, key)
 30639  		case "name":
 30640  			err = unpopulate(val, "Name", &s.Name)
 30641  			delete(rawMsg, key)
 30642  		case "properties":
 30643  			err = unpopulate(val, "Properties", &s.Properties)
 30644  			delete(rawMsg, key)
 30645  		case "type":
 30646  			err = unpopulate(val, "Type", &s.Type)
 30647  			delete(rawMsg, key)
 30648  		}
 30649  		if err != nil {
 30650  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30651  		}
 30652  	}
 30653  	return nil
 30654  }
 30655  
 30656  // MarshalJSON implements the json.Marshaller interface for type SubnetAssociation.
 30657  func (s SubnetAssociation) MarshalJSON() ([]byte, error) {
 30658  	objectMap := make(map[string]any)
 30659  	populate(objectMap, "id", s.ID)
 30660  	populate(objectMap, "securityRules", s.SecurityRules)
 30661  	return json.Marshal(objectMap)
 30662  }
 30663  
 30664  // UnmarshalJSON implements the json.Unmarshaller interface for type SubnetAssociation.
 30665  func (s *SubnetAssociation) UnmarshalJSON(data []byte) error {
 30666  	var rawMsg map[string]json.RawMessage
 30667  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 30668  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30669  	}
 30670  	for key, val := range rawMsg {
 30671  		var err error
 30672  		switch key {
 30673  		case "id":
 30674  			err = unpopulate(val, "ID", &s.ID)
 30675  			delete(rawMsg, key)
 30676  		case "securityRules":
 30677  			err = unpopulate(val, "SecurityRules", &s.SecurityRules)
 30678  			delete(rawMsg, key)
 30679  		}
 30680  		if err != nil {
 30681  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30682  		}
 30683  	}
 30684  	return nil
 30685  }
 30686  
 30687  // MarshalJSON implements the json.Marshaller interface for type SubnetListResult.
 30688  func (s SubnetListResult) MarshalJSON() ([]byte, error) {
 30689  	objectMap := make(map[string]any)
 30690  	populate(objectMap, "nextLink", s.NextLink)
 30691  	populate(objectMap, "value", s.Value)
 30692  	return json.Marshal(objectMap)
 30693  }
 30694  
 30695  // UnmarshalJSON implements the json.Unmarshaller interface for type SubnetListResult.
 30696  func (s *SubnetListResult) UnmarshalJSON(data []byte) error {
 30697  	var rawMsg map[string]json.RawMessage
 30698  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 30699  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30700  	}
 30701  	for key, val := range rawMsg {
 30702  		var err error
 30703  		switch key {
 30704  		case "nextLink":
 30705  			err = unpopulate(val, "NextLink", &s.NextLink)
 30706  			delete(rawMsg, key)
 30707  		case "value":
 30708  			err = unpopulate(val, "Value", &s.Value)
 30709  			delete(rawMsg, key)
 30710  		}
 30711  		if err != nil {
 30712  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30713  		}
 30714  	}
 30715  	return nil
 30716  }
 30717  
 30718  // MarshalJSON implements the json.Marshaller interface for type SubnetPropertiesFormat.
 30719  func (s SubnetPropertiesFormat) MarshalJSON() ([]byte, error) {
 30720  	objectMap := make(map[string]any)
 30721  	populate(objectMap, "addressPrefix", s.AddressPrefix)
 30722  	populate(objectMap, "addressPrefixes", s.AddressPrefixes)
 30723  	populate(objectMap, "applicationGatewayIPConfigurations", s.ApplicationGatewayIPConfigurations)
 30724  	populate(objectMap, "defaultOutboundAccess", s.DefaultOutboundAccess)
 30725  	populate(objectMap, "delegations", s.Delegations)
 30726  	populate(objectMap, "ipAllocations", s.IPAllocations)
 30727  	populate(objectMap, "ipConfigurationProfiles", s.IPConfigurationProfiles)
 30728  	populate(objectMap, "ipConfigurations", s.IPConfigurations)
 30729  	populate(objectMap, "ipamPoolPrefixAllocations", s.IpamPoolPrefixAllocations)
 30730  	populate(objectMap, "natGateway", s.NatGateway)
 30731  	populate(objectMap, "networkSecurityGroup", s.NetworkSecurityGroup)
 30732  	populate(objectMap, "privateEndpointNetworkPolicies", s.PrivateEndpointNetworkPolicies)
 30733  	populate(objectMap, "privateEndpoints", s.PrivateEndpoints)
 30734  	populate(objectMap, "privateLinkServiceNetworkPolicies", s.PrivateLinkServiceNetworkPolicies)
 30735  	populate(objectMap, "provisioningState", s.ProvisioningState)
 30736  	populate(objectMap, "purpose", s.Purpose)
 30737  	populate(objectMap, "resourceNavigationLinks", s.ResourceNavigationLinks)
 30738  	populate(objectMap, "routeTable", s.RouteTable)
 30739  	populate(objectMap, "serviceAssociationLinks", s.ServiceAssociationLinks)
 30740  	populate(objectMap, "serviceEndpointPolicies", s.ServiceEndpointPolicies)
 30741  	populate(objectMap, "serviceEndpoints", s.ServiceEndpoints)
 30742  	populate(objectMap, "sharingScope", s.SharingScope)
 30743  	return json.Marshal(objectMap)
 30744  }
 30745  
 30746  // UnmarshalJSON implements the json.Unmarshaller interface for type SubnetPropertiesFormat.
 30747  func (s *SubnetPropertiesFormat) UnmarshalJSON(data []byte) error {
 30748  	var rawMsg map[string]json.RawMessage
 30749  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 30750  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30751  	}
 30752  	for key, val := range rawMsg {
 30753  		var err error
 30754  		switch key {
 30755  		case "addressPrefix":
 30756  			err = unpopulate(val, "AddressPrefix", &s.AddressPrefix)
 30757  			delete(rawMsg, key)
 30758  		case "addressPrefixes":
 30759  			err = unpopulate(val, "AddressPrefixes", &s.AddressPrefixes)
 30760  			delete(rawMsg, key)
 30761  		case "applicationGatewayIPConfigurations":
 30762  			err = unpopulate(val, "ApplicationGatewayIPConfigurations", &s.ApplicationGatewayIPConfigurations)
 30763  			delete(rawMsg, key)
 30764  		case "defaultOutboundAccess":
 30765  			err = unpopulate(val, "DefaultOutboundAccess", &s.DefaultOutboundAccess)
 30766  			delete(rawMsg, key)
 30767  		case "delegations":
 30768  			err = unpopulate(val, "Delegations", &s.Delegations)
 30769  			delete(rawMsg, key)
 30770  		case "ipAllocations":
 30771  			err = unpopulate(val, "IPAllocations", &s.IPAllocations)
 30772  			delete(rawMsg, key)
 30773  		case "ipConfigurationProfiles":
 30774  			err = unpopulate(val, "IPConfigurationProfiles", &s.IPConfigurationProfiles)
 30775  			delete(rawMsg, key)
 30776  		case "ipConfigurations":
 30777  			err = unpopulate(val, "IPConfigurations", &s.IPConfigurations)
 30778  			delete(rawMsg, key)
 30779  		case "ipamPoolPrefixAllocations":
 30780  			err = unpopulate(val, "IpamPoolPrefixAllocations", &s.IpamPoolPrefixAllocations)
 30781  			delete(rawMsg, key)
 30782  		case "natGateway":
 30783  			err = unpopulate(val, "NatGateway", &s.NatGateway)
 30784  			delete(rawMsg, key)
 30785  		case "networkSecurityGroup":
 30786  			err = unpopulate(val, "NetworkSecurityGroup", &s.NetworkSecurityGroup)
 30787  			delete(rawMsg, key)
 30788  		case "privateEndpointNetworkPolicies":
 30789  			err = unpopulate(val, "PrivateEndpointNetworkPolicies", &s.PrivateEndpointNetworkPolicies)
 30790  			delete(rawMsg, key)
 30791  		case "privateEndpoints":
 30792  			err = unpopulate(val, "PrivateEndpoints", &s.PrivateEndpoints)
 30793  			delete(rawMsg, key)
 30794  		case "privateLinkServiceNetworkPolicies":
 30795  			err = unpopulate(val, "PrivateLinkServiceNetworkPolicies", &s.PrivateLinkServiceNetworkPolicies)
 30796  			delete(rawMsg, key)
 30797  		case "provisioningState":
 30798  			err = unpopulate(val, "ProvisioningState", &s.ProvisioningState)
 30799  			delete(rawMsg, key)
 30800  		case "purpose":
 30801  			err = unpopulate(val, "Purpose", &s.Purpose)
 30802  			delete(rawMsg, key)
 30803  		case "resourceNavigationLinks":
 30804  			err = unpopulate(val, "ResourceNavigationLinks", &s.ResourceNavigationLinks)
 30805  			delete(rawMsg, key)
 30806  		case "routeTable":
 30807  			err = unpopulate(val, "RouteTable", &s.RouteTable)
 30808  			delete(rawMsg, key)
 30809  		case "serviceAssociationLinks":
 30810  			err = unpopulate(val, "ServiceAssociationLinks", &s.ServiceAssociationLinks)
 30811  			delete(rawMsg, key)
 30812  		case "serviceEndpointPolicies":
 30813  			err = unpopulate(val, "ServiceEndpointPolicies", &s.ServiceEndpointPolicies)
 30814  			delete(rawMsg, key)
 30815  		case "serviceEndpoints":
 30816  			err = unpopulate(val, "ServiceEndpoints", &s.ServiceEndpoints)
 30817  			delete(rawMsg, key)
 30818  		case "sharingScope":
 30819  			err = unpopulate(val, "SharingScope", &s.SharingScope)
 30820  			delete(rawMsg, key)
 30821  		}
 30822  		if err != nil {
 30823  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30824  		}
 30825  	}
 30826  	return nil
 30827  }
 30828  
 30829  // MarshalJSON implements the json.Marshaller interface for type SwapResource.
 30830  func (s SwapResource) MarshalJSON() ([]byte, error) {
 30831  	objectMap := make(map[string]any)
 30832  	populate(objectMap, "id", s.ID)
 30833  	populate(objectMap, "name", s.Name)
 30834  	populate(objectMap, "properties", s.Properties)
 30835  	populate(objectMap, "type", s.Type)
 30836  	return json.Marshal(objectMap)
 30837  }
 30838  
 30839  // UnmarshalJSON implements the json.Unmarshaller interface for type SwapResource.
 30840  func (s *SwapResource) UnmarshalJSON(data []byte) error {
 30841  	var rawMsg map[string]json.RawMessage
 30842  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 30843  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30844  	}
 30845  	for key, val := range rawMsg {
 30846  		var err error
 30847  		switch key {
 30848  		case "id":
 30849  			err = unpopulate(val, "ID", &s.ID)
 30850  			delete(rawMsg, key)
 30851  		case "name":
 30852  			err = unpopulate(val, "Name", &s.Name)
 30853  			delete(rawMsg, key)
 30854  		case "properties":
 30855  			err = unpopulate(val, "Properties", &s.Properties)
 30856  			delete(rawMsg, key)
 30857  		case "type":
 30858  			err = unpopulate(val, "Type", &s.Type)
 30859  			delete(rawMsg, key)
 30860  		}
 30861  		if err != nil {
 30862  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30863  		}
 30864  	}
 30865  	return nil
 30866  }
 30867  
 30868  // MarshalJSON implements the json.Marshaller interface for type SwapResourceListResult.
 30869  func (s SwapResourceListResult) MarshalJSON() ([]byte, error) {
 30870  	objectMap := make(map[string]any)
 30871  	populate(objectMap, "value", s.Value)
 30872  	return json.Marshal(objectMap)
 30873  }
 30874  
 30875  // UnmarshalJSON implements the json.Unmarshaller interface for type SwapResourceListResult.
 30876  func (s *SwapResourceListResult) UnmarshalJSON(data []byte) error {
 30877  	var rawMsg map[string]json.RawMessage
 30878  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 30879  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30880  	}
 30881  	for key, val := range rawMsg {
 30882  		var err error
 30883  		switch key {
 30884  		case "value":
 30885  			err = unpopulate(val, "Value", &s.Value)
 30886  			delete(rawMsg, key)
 30887  		}
 30888  		if err != nil {
 30889  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30890  		}
 30891  	}
 30892  	return nil
 30893  }
 30894  
 30895  // MarshalJSON implements the json.Marshaller interface for type SwapResourceProperties.
 30896  func (s SwapResourceProperties) MarshalJSON() ([]byte, error) {
 30897  	objectMap := make(map[string]any)
 30898  	populate(objectMap, "slotType", s.SlotType)
 30899  	return json.Marshal(objectMap)
 30900  }
 30901  
 30902  // UnmarshalJSON implements the json.Unmarshaller interface for type SwapResourceProperties.
 30903  func (s *SwapResourceProperties) UnmarshalJSON(data []byte) error {
 30904  	var rawMsg map[string]json.RawMessage
 30905  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 30906  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30907  	}
 30908  	for key, val := range rawMsg {
 30909  		var err error
 30910  		switch key {
 30911  		case "slotType":
 30912  			err = unpopulate(val, "SlotType", &s.SlotType)
 30913  			delete(rawMsg, key)
 30914  		}
 30915  		if err != nil {
 30916  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30917  		}
 30918  	}
 30919  	return nil
 30920  }
 30921  
 30922  // MarshalJSON implements the json.Marshaller interface for type SystemData.
 30923  func (s SystemData) MarshalJSON() ([]byte, error) {
 30924  	objectMap := make(map[string]any)
 30925  	populateDateTimeRFC3339(objectMap, "createdAt", s.CreatedAt)
 30926  	populate(objectMap, "createdBy", s.CreatedBy)
 30927  	populate(objectMap, "createdByType", s.CreatedByType)
 30928  	populateDateTimeRFC3339(objectMap, "lastModifiedAt", s.LastModifiedAt)
 30929  	populate(objectMap, "lastModifiedBy", s.LastModifiedBy)
 30930  	populate(objectMap, "lastModifiedByType", s.LastModifiedByType)
 30931  	return json.Marshal(objectMap)
 30932  }
 30933  
 30934  // UnmarshalJSON implements the json.Unmarshaller interface for type SystemData.
 30935  func (s *SystemData) UnmarshalJSON(data []byte) error {
 30936  	var rawMsg map[string]json.RawMessage
 30937  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 30938  		return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30939  	}
 30940  	for key, val := range rawMsg {
 30941  		var err error
 30942  		switch key {
 30943  		case "createdAt":
 30944  			err = unpopulateDateTimeRFC3339(val, "CreatedAt", &s.CreatedAt)
 30945  			delete(rawMsg, key)
 30946  		case "createdBy":
 30947  			err = unpopulate(val, "CreatedBy", &s.CreatedBy)
 30948  			delete(rawMsg, key)
 30949  		case "createdByType":
 30950  			err = unpopulate(val, "CreatedByType", &s.CreatedByType)
 30951  			delete(rawMsg, key)
 30952  		case "lastModifiedAt":
 30953  			err = unpopulateDateTimeRFC3339(val, "LastModifiedAt", &s.LastModifiedAt)
 30954  			delete(rawMsg, key)
 30955  		case "lastModifiedBy":
 30956  			err = unpopulate(val, "LastModifiedBy", &s.LastModifiedBy)
 30957  			delete(rawMsg, key)
 30958  		case "lastModifiedByType":
 30959  			err = unpopulate(val, "LastModifiedByType", &s.LastModifiedByType)
 30960  			delete(rawMsg, key)
 30961  		}
 30962  		if err != nil {
 30963  			return fmt.Errorf("unmarshalling type %T: %v", s, err)
 30964  		}
 30965  	}
 30966  	return nil
 30967  }
 30968  
 30969  // MarshalJSON implements the json.Marshaller interface for type TagsObject.
 30970  func (t TagsObject) MarshalJSON() ([]byte, error) {
 30971  	objectMap := make(map[string]any)
 30972  	populate(objectMap, "tags", t.Tags)
 30973  	return json.Marshal(objectMap)
 30974  }
 30975  
 30976  // UnmarshalJSON implements the json.Unmarshaller interface for type TagsObject.
 30977  func (t *TagsObject) UnmarshalJSON(data []byte) error {
 30978  	var rawMsg map[string]json.RawMessage
 30979  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 30980  		return fmt.Errorf("unmarshalling type %T: %v", t, err)
 30981  	}
 30982  	for key, val := range rawMsg {
 30983  		var err error
 30984  		switch key {
 30985  		case "tags":
 30986  			err = unpopulate(val, "Tags", &t.Tags)
 30987  			delete(rawMsg, key)
 30988  		}
 30989  		if err != nil {
 30990  			return fmt.Errorf("unmarshalling type %T: %v", t, err)
 30991  		}
 30992  	}
 30993  	return nil
 30994  }
 30995  
 30996  // MarshalJSON implements the json.Marshaller interface for type Topology.
 30997  func (t Topology) MarshalJSON() ([]byte, error) {
 30998  	objectMap := make(map[string]any)
 30999  	populateDateTimeRFC3339(objectMap, "createdDateTime", t.CreatedDateTime)
 31000  	populate(objectMap, "id", t.ID)
 31001  	populateDateTimeRFC3339(objectMap, "lastModified", t.LastModified)
 31002  	populate(objectMap, "resources", t.Resources)
 31003  	return json.Marshal(objectMap)
 31004  }
 31005  
 31006  // UnmarshalJSON implements the json.Unmarshaller interface for type Topology.
 31007  func (t *Topology) UnmarshalJSON(data []byte) error {
 31008  	var rawMsg map[string]json.RawMessage
 31009  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 31010  		return fmt.Errorf("unmarshalling type %T: %v", t, err)
 31011  	}
 31012  	for key, val := range rawMsg {
 31013  		var err error
 31014  		switch key {
 31015  		case "createdDateTime":
 31016  			err = unpopulateDateTimeRFC3339(val, "CreatedDateTime", &t.CreatedDateTime)
 31017  			delete(rawMsg, key)
 31018  		case "id":
 31019  			err = unpopulate(val, "ID", &t.ID)
 31020  			delete(rawMsg, key)
 31021  		case "lastModified":
 31022  			err = unpopulateDateTimeRFC3339(val, "LastModified", &t.LastModified)
 31023  			delete(rawMsg, key)
 31024  		case "resources":
 31025  			err = unpopulate(val, "Resources", &t.Resources)
 31026  			delete(rawMsg, key)
 31027  		}
 31028  		if err != nil {
 31029  			return fmt.Errorf("unmarshalling type %T: %v", t, err)
 31030  		}
 31031  	}
 31032  	return nil
 31033  }
 31034  
 31035  // MarshalJSON implements the json.Marshaller interface for type TopologyAssociation.
 31036  func (t TopologyAssociation) MarshalJSON() ([]byte, error) {
 31037  	objectMap := make(map[string]any)
 31038  	populate(objectMap, "associationType", t.AssociationType)
 31039  	populate(objectMap, "name", t.Name)
 31040  	populate(objectMap, "resourceId", t.ResourceID)
 31041  	return json.Marshal(objectMap)
 31042  }
 31043  
 31044  // UnmarshalJSON implements the json.Unmarshaller interface for type TopologyAssociation.
 31045  func (t *TopologyAssociation) UnmarshalJSON(data []byte) error {
 31046  	var rawMsg map[string]json.RawMessage
 31047  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 31048  		return fmt.Errorf("unmarshalling type %T: %v", t, err)
 31049  	}
 31050  	for key, val := range rawMsg {
 31051  		var err error
 31052  		switch key {
 31053  		case "associationType":
 31054  			err = unpopulate(val, "AssociationType", &t.AssociationType)
 31055  			delete(rawMsg, key)
 31056  		case "name":
 31057  			err = unpopulate(val, "Name", &t.Name)
 31058  			delete(rawMsg, key)
 31059  		case "resourceId":
 31060  			err = unpopulate(val, "ResourceID", &t.ResourceID)
 31061  			delete(rawMsg, key)
 31062  		}
 31063  		if err != nil {
 31064  			return fmt.Errorf("unmarshalling type %T: %v", t, err)
 31065  		}
 31066  	}
 31067  	return nil
 31068  }
 31069  
 31070  // MarshalJSON implements the json.Marshaller interface for type TopologyParameters.
 31071  func (t TopologyParameters) MarshalJSON() ([]byte, error) {
 31072  	objectMap := make(map[string]any)
 31073  	populate(objectMap, "targetResourceGroupName", t.TargetResourceGroupName)
 31074  	populate(objectMap, "targetSubnet", t.TargetSubnet)
 31075  	populate(objectMap, "targetVirtualNetwork", t.TargetVirtualNetwork)
 31076  	return json.Marshal(objectMap)
 31077  }
 31078  
 31079  // UnmarshalJSON implements the json.Unmarshaller interface for type TopologyParameters.
 31080  func (t *TopologyParameters) UnmarshalJSON(data []byte) error {
 31081  	var rawMsg map[string]json.RawMessage
 31082  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 31083  		return fmt.Errorf("unmarshalling type %T: %v", t, err)
 31084  	}
 31085  	for key, val := range rawMsg {
 31086  		var err error
 31087  		switch key {
 31088  		case "targetResourceGroupName":
 31089  			err = unpopulate(val, "TargetResourceGroupName", &t.TargetResourceGroupName)
 31090  			delete(rawMsg, key)
 31091  		case "targetSubnet":
 31092  			err = unpopulate(val, "TargetSubnet", &t.TargetSubnet)
 31093  			delete(rawMsg, key)
 31094  		case "targetVirtualNetwork":
 31095  			err = unpopulate(val, "TargetVirtualNetwork", &t.TargetVirtualNetwork)
 31096  			delete(rawMsg, key)
 31097  		}
 31098  		if err != nil {
 31099  			return fmt.Errorf("unmarshalling type %T: %v", t, err)
 31100  		}
 31101  	}
 31102  	return nil
 31103  }
 31104  
 31105  // MarshalJSON implements the json.Marshaller interface for type TopologyResource.
 31106  func (t TopologyResource) MarshalJSON() ([]byte, error) {
 31107  	objectMap := make(map[string]any)
 31108  	populate(objectMap, "associations", t.Associations)
 31109  	populate(objectMap, "id", t.ID)
 31110  	populate(objectMap, "location", t.Location)
 31111  	populate(objectMap, "name", t.Name)
 31112  	return json.Marshal(objectMap)
 31113  }
 31114  
 31115  // UnmarshalJSON implements the json.Unmarshaller interface for type TopologyResource.
 31116  func (t *TopologyResource) UnmarshalJSON(data []byte) error {
 31117  	var rawMsg map[string]json.RawMessage
 31118  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 31119  		return fmt.Errorf("unmarshalling type %T: %v", t, err)
 31120  	}
 31121  	for key, val := range rawMsg {
 31122  		var err error
 31123  		switch key {
 31124  		case "associations":
 31125  			err = unpopulate(val, "Associations", &t.Associations)
 31126  			delete(rawMsg, key)
 31127  		case "id":
 31128  			err = unpopulate(val, "ID", &t.ID)
 31129  			delete(rawMsg, key)
 31130  		case "location":
 31131  			err = unpopulate(val, "Location", &t.Location)
 31132  			delete(rawMsg, key)
 31133  		case "name":
 31134  			err = unpopulate(val, "Name", &t.Name)
 31135  			delete(rawMsg, key)
 31136  		}
 31137  		if err != nil {
 31138  			return fmt.Errorf("unmarshalling type %T: %v", t, err)
 31139  		}
 31140  	}
 31141  	return nil
 31142  }
 31143  
 31144  // MarshalJSON implements the json.Marshaller interface for type TrafficAnalyticsConfigurationProperties.
 31145  func (t TrafficAnalyticsConfigurationProperties) MarshalJSON() ([]byte, error) {
 31146  	objectMap := make(map[string]any)
 31147  	populate(objectMap, "enabled", t.Enabled)
 31148  	populate(objectMap, "trafficAnalyticsInterval", t.TrafficAnalyticsInterval)
 31149  	populate(objectMap, "workspaceId", t.WorkspaceID)
 31150  	populate(objectMap, "workspaceRegion", t.WorkspaceRegion)
 31151  	populate(objectMap, "workspaceResourceId", t.WorkspaceResourceID)
 31152  	return json.Marshal(objectMap)
 31153  }
 31154  
 31155  // UnmarshalJSON implements the json.Unmarshaller interface for type TrafficAnalyticsConfigurationProperties.
 31156  func (t *TrafficAnalyticsConfigurationProperties) UnmarshalJSON(data []byte) error {
 31157  	var rawMsg map[string]json.RawMessage
 31158  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 31159  		return fmt.Errorf("unmarshalling type %T: %v", t, err)
 31160  	}
 31161  	for key, val := range rawMsg {
 31162  		var err error
 31163  		switch key {
 31164  		case "enabled":
 31165  			err = unpopulate(val, "Enabled", &t.Enabled)
 31166  			delete(rawMsg, key)
 31167  		case "trafficAnalyticsInterval":
 31168  			err = unpopulate(val, "TrafficAnalyticsInterval", &t.TrafficAnalyticsInterval)
 31169  			delete(rawMsg, key)
 31170  		case "workspaceId":
 31171  			err = unpopulate(val, "WorkspaceID", &t.WorkspaceID)
 31172  			delete(rawMsg, key)
 31173  		case "workspaceRegion":
 31174  			err = unpopulate(val, "WorkspaceRegion", &t.WorkspaceRegion)
 31175  			delete(rawMsg, key)
 31176  		case "workspaceResourceId":
 31177  			err = unpopulate(val, "WorkspaceResourceID", &t.WorkspaceResourceID)
 31178  			delete(rawMsg, key)
 31179  		}
 31180  		if err != nil {
 31181  			return fmt.Errorf("unmarshalling type %T: %v", t, err)
 31182  		}
 31183  	}
 31184  	return nil
 31185  }
 31186  
 31187  // MarshalJSON implements the json.Marshaller interface for type TrafficAnalyticsProperties.
 31188  func (t TrafficAnalyticsProperties) MarshalJSON() ([]byte, error) {
 31189  	objectMap := make(map[string]any)
 31190  	populate(objectMap, "networkWatcherFlowAnalyticsConfiguration", t.NetworkWatcherFlowAnalyticsConfiguration)
 31191  	return json.Marshal(objectMap)
 31192  }
 31193  
 31194  // UnmarshalJSON implements the json.Unmarshaller interface for type TrafficAnalyticsProperties.
 31195  func (t *TrafficAnalyticsProperties) UnmarshalJSON(data []byte) error {
 31196  	var rawMsg map[string]json.RawMessage
 31197  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 31198  		return fmt.Errorf("unmarshalling type %T: %v", t, err)
 31199  	}
 31200  	for key, val := range rawMsg {
 31201  		var err error
 31202  		switch key {
 31203  		case "networkWatcherFlowAnalyticsConfiguration":
 31204  			err = unpopulate(val, "NetworkWatcherFlowAnalyticsConfiguration", &t.NetworkWatcherFlowAnalyticsConfiguration)
 31205  			delete(rawMsg, key)
 31206  		}
 31207  		if err != nil {
 31208  			return fmt.Errorf("unmarshalling type %T: %v", t, err)
 31209  		}
 31210  	}
 31211  	return nil
 31212  }
 31213  
 31214  // MarshalJSON implements the json.Marshaller interface for type TrafficSelectorPolicy.
 31215  func (t TrafficSelectorPolicy) MarshalJSON() ([]byte, error) {
 31216  	objectMap := make(map[string]any)
 31217  	populate(objectMap, "localAddressRanges", t.LocalAddressRanges)
 31218  	populate(objectMap, "remoteAddressRanges", t.RemoteAddressRanges)
 31219  	return json.Marshal(objectMap)
 31220  }
 31221  
 31222  // UnmarshalJSON implements the json.Unmarshaller interface for type TrafficSelectorPolicy.
 31223  func (t *TrafficSelectorPolicy) UnmarshalJSON(data []byte) error {
 31224  	var rawMsg map[string]json.RawMessage
 31225  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 31226  		return fmt.Errorf("unmarshalling type %T: %v", t, err)
 31227  	}
 31228  	for key, val := range rawMsg {
 31229  		var err error
 31230  		switch key {
 31231  		case "localAddressRanges":
 31232  			err = unpopulate(val, "LocalAddressRanges", &t.LocalAddressRanges)
 31233  			delete(rawMsg, key)
 31234  		case "remoteAddressRanges":
 31235  			err = unpopulate(val, "RemoteAddressRanges", &t.RemoteAddressRanges)
 31236  			delete(rawMsg, key)
 31237  		}
 31238  		if err != nil {
 31239  			return fmt.Errorf("unmarshalling type %T: %v", t, err)
 31240  		}
 31241  	}
 31242  	return nil
 31243  }
 31244  
 31245  // MarshalJSON implements the json.Marshaller interface for type TroubleshootingDetails.
 31246  func (t TroubleshootingDetails) MarshalJSON() ([]byte, error) {
 31247  	objectMap := make(map[string]any)
 31248  	populate(objectMap, "detail", t.Detail)
 31249  	populate(objectMap, "id", t.ID)
 31250  	populate(objectMap, "reasonType", t.ReasonType)
 31251  	populate(objectMap, "recommendedActions", t.RecommendedActions)
 31252  	populate(objectMap, "summary", t.Summary)
 31253  	return json.Marshal(objectMap)
 31254  }
 31255  
 31256  // UnmarshalJSON implements the json.Unmarshaller interface for type TroubleshootingDetails.
 31257  func (t *TroubleshootingDetails) UnmarshalJSON(data []byte) error {
 31258  	var rawMsg map[string]json.RawMessage
 31259  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 31260  		return fmt.Errorf("unmarshalling type %T: %v", t, err)
 31261  	}
 31262  	for key, val := range rawMsg {
 31263  		var err error
 31264  		switch key {
 31265  		case "detail":
 31266  			err = unpopulate(val, "Detail", &t.Detail)
 31267  			delete(rawMsg, key)
 31268  		case "id":
 31269  			err = unpopulate(val, "ID", &t.ID)
 31270  			delete(rawMsg, key)
 31271  		case "reasonType":
 31272  			err = unpopulate(val, "ReasonType", &t.ReasonType)
 31273  			delete(rawMsg, key)
 31274  		case "recommendedActions":
 31275  			err = unpopulate(val, "RecommendedActions", &t.RecommendedActions)
 31276  			delete(rawMsg, key)
 31277  		case "summary":
 31278  			err = unpopulate(val, "Summary", &t.Summary)
 31279  			delete(rawMsg, key)
 31280  		}
 31281  		if err != nil {
 31282  			return fmt.Errorf("unmarshalling type %T: %v", t, err)
 31283  		}
 31284  	}
 31285  	return nil
 31286  }
 31287  
 31288  // MarshalJSON implements the json.Marshaller interface for type TroubleshootingParameters.
 31289  func (t TroubleshootingParameters) MarshalJSON() ([]byte, error) {
 31290  	objectMap := make(map[string]any)
 31291  	populate(objectMap, "properties", t.Properties)
 31292  	populate(objectMap, "targetResourceId", t.TargetResourceID)
 31293  	return json.Marshal(objectMap)
 31294  }
 31295  
 31296  // UnmarshalJSON implements the json.Unmarshaller interface for type TroubleshootingParameters.
 31297  func (t *TroubleshootingParameters) UnmarshalJSON(data []byte) error {
 31298  	var rawMsg map[string]json.RawMessage
 31299  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 31300  		return fmt.Errorf("unmarshalling type %T: %v", t, err)
 31301  	}
 31302  	for key, val := range rawMsg {
 31303  		var err error
 31304  		switch key {
 31305  		case "properties":
 31306  			err = unpopulate(val, "Properties", &t.Properties)
 31307  			delete(rawMsg, key)
 31308  		case "targetResourceId":
 31309  			err = unpopulate(val, "TargetResourceID", &t.TargetResourceID)
 31310  			delete(rawMsg, key)
 31311  		}
 31312  		if err != nil {
 31313  			return fmt.Errorf("unmarshalling type %T: %v", t, err)
 31314  		}
 31315  	}
 31316  	return nil
 31317  }
 31318  
 31319  // MarshalJSON implements the json.Marshaller interface for type TroubleshootingProperties.
 31320  func (t TroubleshootingProperties) MarshalJSON() ([]byte, error) {
 31321  	objectMap := make(map[string]any)
 31322  	populate(objectMap, "storageId", t.StorageID)
 31323  	populate(objectMap, "storagePath", t.StoragePath)
 31324  	return json.Marshal(objectMap)
 31325  }
 31326  
 31327  // UnmarshalJSON implements the json.Unmarshaller interface for type TroubleshootingProperties.
 31328  func (t *TroubleshootingProperties) UnmarshalJSON(data []byte) error {
 31329  	var rawMsg map[string]json.RawMessage
 31330  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 31331  		return fmt.Errorf("unmarshalling type %T: %v", t, err)
 31332  	}
 31333  	for key, val := range rawMsg {
 31334  		var err error
 31335  		switch key {
 31336  		case "storageId":
 31337  			err = unpopulate(val, "StorageID", &t.StorageID)
 31338  			delete(rawMsg, key)
 31339  		case "storagePath":
 31340  			err = unpopulate(val, "StoragePath", &t.StoragePath)
 31341  			delete(rawMsg, key)
 31342  		}
 31343  		if err != nil {
 31344  			return fmt.Errorf("unmarshalling type %T: %v", t, err)
 31345  		}
 31346  	}
 31347  	return nil
 31348  }
 31349  
 31350  // MarshalJSON implements the json.Marshaller interface for type TroubleshootingRecommendedActions.
 31351  func (t TroubleshootingRecommendedActions) MarshalJSON() ([]byte, error) {
 31352  	objectMap := make(map[string]any)
 31353  	populate(objectMap, "actionId", t.ActionID)
 31354  	populate(objectMap, "actionText", t.ActionText)
 31355  	populate(objectMap, "actionUri", t.ActionURI)
 31356  	populate(objectMap, "actionUriText", t.ActionURIText)
 31357  	return json.Marshal(objectMap)
 31358  }
 31359  
 31360  // UnmarshalJSON implements the json.Unmarshaller interface for type TroubleshootingRecommendedActions.
 31361  func (t *TroubleshootingRecommendedActions) UnmarshalJSON(data []byte) error {
 31362  	var rawMsg map[string]json.RawMessage
 31363  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 31364  		return fmt.Errorf("unmarshalling type %T: %v", t, err)
 31365  	}
 31366  	for key, val := range rawMsg {
 31367  		var err error
 31368  		switch key {
 31369  		case "actionId":
 31370  			err = unpopulate(val, "ActionID", &t.ActionID)
 31371  			delete(rawMsg, key)
 31372  		case "actionText":
 31373  			err = unpopulate(val, "ActionText", &t.ActionText)
 31374  			delete(rawMsg, key)
 31375  		case "actionUri":
 31376  			err = unpopulate(val, "ActionURI", &t.ActionURI)
 31377  			delete(rawMsg, key)
 31378  		case "actionUriText":
 31379  			err = unpopulate(val, "ActionURIText", &t.ActionURIText)
 31380  			delete(rawMsg, key)
 31381  		}
 31382  		if err != nil {
 31383  			return fmt.Errorf("unmarshalling type %T: %v", t, err)
 31384  		}
 31385  	}
 31386  	return nil
 31387  }
 31388  
 31389  // MarshalJSON implements the json.Marshaller interface for type TroubleshootingResult.
 31390  func (t TroubleshootingResult) MarshalJSON() ([]byte, error) {
 31391  	objectMap := make(map[string]any)
 31392  	populate(objectMap, "code", t.Code)
 31393  	populateDateTimeRFC3339(objectMap, "endTime", t.EndTime)
 31394  	populate(objectMap, "results", t.Results)
 31395  	populateDateTimeRFC3339(objectMap, "startTime", t.StartTime)
 31396  	return json.Marshal(objectMap)
 31397  }
 31398  
 31399  // UnmarshalJSON implements the json.Unmarshaller interface for type TroubleshootingResult.
 31400  func (t *TroubleshootingResult) UnmarshalJSON(data []byte) error {
 31401  	var rawMsg map[string]json.RawMessage
 31402  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 31403  		return fmt.Errorf("unmarshalling type %T: %v", t, err)
 31404  	}
 31405  	for key, val := range rawMsg {
 31406  		var err error
 31407  		switch key {
 31408  		case "code":
 31409  			err = unpopulate(val, "Code", &t.Code)
 31410  			delete(rawMsg, key)
 31411  		case "endTime":
 31412  			err = unpopulateDateTimeRFC3339(val, "EndTime", &t.EndTime)
 31413  			delete(rawMsg, key)
 31414  		case "results":
 31415  			err = unpopulate(val, "Results", &t.Results)
 31416  			delete(rawMsg, key)
 31417  		case "startTime":
 31418  			err = unpopulateDateTimeRFC3339(val, "StartTime", &t.StartTime)
 31419  			delete(rawMsg, key)
 31420  		}
 31421  		if err != nil {
 31422  			return fmt.Errorf("unmarshalling type %T: %v", t, err)
 31423  		}
 31424  	}
 31425  	return nil
 31426  }
 31427  
 31428  // MarshalJSON implements the json.Marshaller interface for type TunnelConnectionHealth.
 31429  func (t TunnelConnectionHealth) MarshalJSON() ([]byte, error) {
 31430  	objectMap := make(map[string]any)
 31431  	populate(objectMap, "connectionStatus", t.ConnectionStatus)
 31432  	populate(objectMap, "egressBytesTransferred", t.EgressBytesTransferred)
 31433  	populate(objectMap, "ingressBytesTransferred", t.IngressBytesTransferred)
 31434  	populate(objectMap, "lastConnectionEstablishedUtcTime", t.LastConnectionEstablishedUTCTime)
 31435  	populate(objectMap, "tunnel", t.Tunnel)
 31436  	return json.Marshal(objectMap)
 31437  }
 31438  
 31439  // UnmarshalJSON implements the json.Unmarshaller interface for type TunnelConnectionHealth.
 31440  func (t *TunnelConnectionHealth) UnmarshalJSON(data []byte) error {
 31441  	var rawMsg map[string]json.RawMessage
 31442  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 31443  		return fmt.Errorf("unmarshalling type %T: %v", t, err)
 31444  	}
 31445  	for key, val := range rawMsg {
 31446  		var err error
 31447  		switch key {
 31448  		case "connectionStatus":
 31449  			err = unpopulate(val, "ConnectionStatus", &t.ConnectionStatus)
 31450  			delete(rawMsg, key)
 31451  		case "egressBytesTransferred":
 31452  			err = unpopulate(val, "EgressBytesTransferred", &t.EgressBytesTransferred)
 31453  			delete(rawMsg, key)
 31454  		case "ingressBytesTransferred":
 31455  			err = unpopulate(val, "IngressBytesTransferred", &t.IngressBytesTransferred)
 31456  			delete(rawMsg, key)
 31457  		case "lastConnectionEstablishedUtcTime":
 31458  			err = unpopulate(val, "LastConnectionEstablishedUTCTime", &t.LastConnectionEstablishedUTCTime)
 31459  			delete(rawMsg, key)
 31460  		case "tunnel":
 31461  			err = unpopulate(val, "Tunnel", &t.Tunnel)
 31462  			delete(rawMsg, key)
 31463  		}
 31464  		if err != nil {
 31465  			return fmt.Errorf("unmarshalling type %T: %v", t, err)
 31466  		}
 31467  	}
 31468  	return nil
 31469  }
 31470  
 31471  // MarshalJSON implements the json.Marshaller interface for type UnprepareNetworkPoliciesRequest.
 31472  func (u UnprepareNetworkPoliciesRequest) MarshalJSON() ([]byte, error) {
 31473  	objectMap := make(map[string]any)
 31474  	populate(objectMap, "serviceName", u.ServiceName)
 31475  	return json.Marshal(objectMap)
 31476  }
 31477  
 31478  // UnmarshalJSON implements the json.Unmarshaller interface for type UnprepareNetworkPoliciesRequest.
 31479  func (u *UnprepareNetworkPoliciesRequest) UnmarshalJSON(data []byte) error {
 31480  	var rawMsg map[string]json.RawMessage
 31481  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 31482  		return fmt.Errorf("unmarshalling type %T: %v", u, err)
 31483  	}
 31484  	for key, val := range rawMsg {
 31485  		var err error
 31486  		switch key {
 31487  		case "serviceName":
 31488  			err = unpopulate(val, "ServiceName", &u.ServiceName)
 31489  			delete(rawMsg, key)
 31490  		}
 31491  		if err != nil {
 31492  			return fmt.Errorf("unmarshalling type %T: %v", u, err)
 31493  		}
 31494  	}
 31495  	return nil
 31496  }
 31497  
 31498  // MarshalJSON implements the json.Marshaller interface for type Usage.
 31499  func (u Usage) MarshalJSON() ([]byte, error) {
 31500  	objectMap := make(map[string]any)
 31501  	populate(objectMap, "currentValue", u.CurrentValue)
 31502  	populate(objectMap, "id", u.ID)
 31503  	populate(objectMap, "limit", u.Limit)
 31504  	populate(objectMap, "name", u.Name)
 31505  	populate(objectMap, "unit", u.Unit)
 31506  	return json.Marshal(objectMap)
 31507  }
 31508  
 31509  // UnmarshalJSON implements the json.Unmarshaller interface for type Usage.
 31510  func (u *Usage) UnmarshalJSON(data []byte) error {
 31511  	var rawMsg map[string]json.RawMessage
 31512  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 31513  		return fmt.Errorf("unmarshalling type %T: %v", u, err)
 31514  	}
 31515  	for key, val := range rawMsg {
 31516  		var err error
 31517  		switch key {
 31518  		case "currentValue":
 31519  			err = unpopulate(val, "CurrentValue", &u.CurrentValue)
 31520  			delete(rawMsg, key)
 31521  		case "id":
 31522  			err = unpopulate(val, "ID", &u.ID)
 31523  			delete(rawMsg, key)
 31524  		case "limit":
 31525  			err = unpopulate(val, "Limit", &u.Limit)
 31526  			delete(rawMsg, key)
 31527  		case "name":
 31528  			err = unpopulate(val, "Name", &u.Name)
 31529  			delete(rawMsg, key)
 31530  		case "unit":
 31531  			err = unpopulate(val, "Unit", &u.Unit)
 31532  			delete(rawMsg, key)
 31533  		}
 31534  		if err != nil {
 31535  			return fmt.Errorf("unmarshalling type %T: %v", u, err)
 31536  		}
 31537  	}
 31538  	return nil
 31539  }
 31540  
 31541  // MarshalJSON implements the json.Marshaller interface for type UsageName.
 31542  func (u UsageName) MarshalJSON() ([]byte, error) {
 31543  	objectMap := make(map[string]any)
 31544  	populate(objectMap, "localizedValue", u.LocalizedValue)
 31545  	populate(objectMap, "value", u.Value)
 31546  	return json.Marshal(objectMap)
 31547  }
 31548  
 31549  // UnmarshalJSON implements the json.Unmarshaller interface for type UsageName.
 31550  func (u *UsageName) UnmarshalJSON(data []byte) error {
 31551  	var rawMsg map[string]json.RawMessage
 31552  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 31553  		return fmt.Errorf("unmarshalling type %T: %v", u, err)
 31554  	}
 31555  	for key, val := range rawMsg {
 31556  		var err error
 31557  		switch key {
 31558  		case "localizedValue":
 31559  			err = unpopulate(val, "LocalizedValue", &u.LocalizedValue)
 31560  			delete(rawMsg, key)
 31561  		case "value":
 31562  			err = unpopulate(val, "Value", &u.Value)
 31563  			delete(rawMsg, key)
 31564  		}
 31565  		if err != nil {
 31566  			return fmt.Errorf("unmarshalling type %T: %v", u, err)
 31567  		}
 31568  	}
 31569  	return nil
 31570  }
 31571  
 31572  // MarshalJSON implements the json.Marshaller interface for type UsagesListResult.
 31573  func (u UsagesListResult) MarshalJSON() ([]byte, error) {
 31574  	objectMap := make(map[string]any)
 31575  	populate(objectMap, "nextLink", u.NextLink)
 31576  	populate(objectMap, "value", u.Value)
 31577  	return json.Marshal(objectMap)
 31578  }
 31579  
 31580  // UnmarshalJSON implements the json.Unmarshaller interface for type UsagesListResult.
 31581  func (u *UsagesListResult) UnmarshalJSON(data []byte) error {
 31582  	var rawMsg map[string]json.RawMessage
 31583  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 31584  		return fmt.Errorf("unmarshalling type %T: %v", u, err)
 31585  	}
 31586  	for key, val := range rawMsg {
 31587  		var err error
 31588  		switch key {
 31589  		case "nextLink":
 31590  			err = unpopulate(val, "NextLink", &u.NextLink)
 31591  			delete(rawMsg, key)
 31592  		case "value":
 31593  			err = unpopulate(val, "Value", &u.Value)
 31594  			delete(rawMsg, key)
 31595  		}
 31596  		if err != nil {
 31597  			return fmt.Errorf("unmarshalling type %T: %v", u, err)
 31598  		}
 31599  	}
 31600  	return nil
 31601  }
 31602  
 31603  // MarshalJSON implements the json.Marshaller interface for type VM.
 31604  func (v VM) MarshalJSON() ([]byte, error) {
 31605  	objectMap := make(map[string]any)
 31606  	populate(objectMap, "id", v.ID)
 31607  	populate(objectMap, "location", v.Location)
 31608  	populate(objectMap, "name", v.Name)
 31609  	populate(objectMap, "tags", v.Tags)
 31610  	populate(objectMap, "type", v.Type)
 31611  	return json.Marshal(objectMap)
 31612  }
 31613  
 31614  // UnmarshalJSON implements the json.Unmarshaller interface for type VM.
 31615  func (v *VM) UnmarshalJSON(data []byte) error {
 31616  	var rawMsg map[string]json.RawMessage
 31617  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 31618  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 31619  	}
 31620  	for key, val := range rawMsg {
 31621  		var err error
 31622  		switch key {
 31623  		case "id":
 31624  			err = unpopulate(val, "ID", &v.ID)
 31625  			delete(rawMsg, key)
 31626  		case "location":
 31627  			err = unpopulate(val, "Location", &v.Location)
 31628  			delete(rawMsg, key)
 31629  		case "name":
 31630  			err = unpopulate(val, "Name", &v.Name)
 31631  			delete(rawMsg, key)
 31632  		case "tags":
 31633  			err = unpopulate(val, "Tags", &v.Tags)
 31634  			delete(rawMsg, key)
 31635  		case "type":
 31636  			err = unpopulate(val, "Type", &v.Type)
 31637  			delete(rawMsg, key)
 31638  		}
 31639  		if err != nil {
 31640  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 31641  		}
 31642  	}
 31643  	return nil
 31644  }
 31645  
 31646  // MarshalJSON implements the json.Marshaller interface for type VPNClientConfiguration.
 31647  func (v VPNClientConfiguration) MarshalJSON() ([]byte, error) {
 31648  	objectMap := make(map[string]any)
 31649  	populate(objectMap, "aadAudience", v.AADAudience)
 31650  	populate(objectMap, "aadIssuer", v.AADIssuer)
 31651  	populate(objectMap, "aadTenant", v.AADTenant)
 31652  	populate(objectMap, "radiusServerAddress", v.RadiusServerAddress)
 31653  	populate(objectMap, "radiusServerSecret", v.RadiusServerSecret)
 31654  	populate(objectMap, "radiusServers", v.RadiusServers)
 31655  	populate(objectMap, "vpnAuthenticationTypes", v.VPNAuthenticationTypes)
 31656  	populate(objectMap, "vpnClientAddressPool", v.VPNClientAddressPool)
 31657  	populate(objectMap, "vpnClientIpsecPolicies", v.VPNClientIPSecPolicies)
 31658  	populate(objectMap, "vpnClientProtocols", v.VPNClientProtocols)
 31659  	populate(objectMap, "vpnClientRevokedCertificates", v.VPNClientRevokedCertificates)
 31660  	populate(objectMap, "vpnClientRootCertificates", v.VPNClientRootCertificates)
 31661  	populate(objectMap, "vngClientConnectionConfigurations", v.VngClientConnectionConfigurations)
 31662  	return json.Marshal(objectMap)
 31663  }
 31664  
 31665  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNClientConfiguration.
 31666  func (v *VPNClientConfiguration) UnmarshalJSON(data []byte) error {
 31667  	var rawMsg map[string]json.RawMessage
 31668  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 31669  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 31670  	}
 31671  	for key, val := range rawMsg {
 31672  		var err error
 31673  		switch key {
 31674  		case "aadAudience":
 31675  			err = unpopulate(val, "AADAudience", &v.AADAudience)
 31676  			delete(rawMsg, key)
 31677  		case "aadIssuer":
 31678  			err = unpopulate(val, "AADIssuer", &v.AADIssuer)
 31679  			delete(rawMsg, key)
 31680  		case "aadTenant":
 31681  			err = unpopulate(val, "AADTenant", &v.AADTenant)
 31682  			delete(rawMsg, key)
 31683  		case "radiusServerAddress":
 31684  			err = unpopulate(val, "RadiusServerAddress", &v.RadiusServerAddress)
 31685  			delete(rawMsg, key)
 31686  		case "radiusServerSecret":
 31687  			err = unpopulate(val, "RadiusServerSecret", &v.RadiusServerSecret)
 31688  			delete(rawMsg, key)
 31689  		case "radiusServers":
 31690  			err = unpopulate(val, "RadiusServers", &v.RadiusServers)
 31691  			delete(rawMsg, key)
 31692  		case "vpnAuthenticationTypes":
 31693  			err = unpopulate(val, "VPNAuthenticationTypes", &v.VPNAuthenticationTypes)
 31694  			delete(rawMsg, key)
 31695  		case "vpnClientAddressPool":
 31696  			err = unpopulate(val, "VPNClientAddressPool", &v.VPNClientAddressPool)
 31697  			delete(rawMsg, key)
 31698  		case "vpnClientIpsecPolicies":
 31699  			err = unpopulate(val, "VPNClientIPSecPolicies", &v.VPNClientIPSecPolicies)
 31700  			delete(rawMsg, key)
 31701  		case "vpnClientProtocols":
 31702  			err = unpopulate(val, "VPNClientProtocols", &v.VPNClientProtocols)
 31703  			delete(rawMsg, key)
 31704  		case "vpnClientRevokedCertificates":
 31705  			err = unpopulate(val, "VPNClientRevokedCertificates", &v.VPNClientRevokedCertificates)
 31706  			delete(rawMsg, key)
 31707  		case "vpnClientRootCertificates":
 31708  			err = unpopulate(val, "VPNClientRootCertificates", &v.VPNClientRootCertificates)
 31709  			delete(rawMsg, key)
 31710  		case "vngClientConnectionConfigurations":
 31711  			err = unpopulate(val, "VngClientConnectionConfigurations", &v.VngClientConnectionConfigurations)
 31712  			delete(rawMsg, key)
 31713  		}
 31714  		if err != nil {
 31715  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 31716  		}
 31717  	}
 31718  	return nil
 31719  }
 31720  
 31721  // MarshalJSON implements the json.Marshaller interface for type VPNClientConnectionHealth.
 31722  func (v VPNClientConnectionHealth) MarshalJSON() ([]byte, error) {
 31723  	objectMap := make(map[string]any)
 31724  	populate(objectMap, "allocatedIpAddresses", v.AllocatedIPAddresses)
 31725  	populate(objectMap, "totalEgressBytesTransferred", v.TotalEgressBytesTransferred)
 31726  	populate(objectMap, "totalIngressBytesTransferred", v.TotalIngressBytesTransferred)
 31727  	populate(objectMap, "vpnClientConnectionsCount", v.VPNClientConnectionsCount)
 31728  	return json.Marshal(objectMap)
 31729  }
 31730  
 31731  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNClientConnectionHealth.
 31732  func (v *VPNClientConnectionHealth) UnmarshalJSON(data []byte) error {
 31733  	var rawMsg map[string]json.RawMessage
 31734  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 31735  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 31736  	}
 31737  	for key, val := range rawMsg {
 31738  		var err error
 31739  		switch key {
 31740  		case "allocatedIpAddresses":
 31741  			err = unpopulate(val, "AllocatedIPAddresses", &v.AllocatedIPAddresses)
 31742  			delete(rawMsg, key)
 31743  		case "totalEgressBytesTransferred":
 31744  			err = unpopulate(val, "TotalEgressBytesTransferred", &v.TotalEgressBytesTransferred)
 31745  			delete(rawMsg, key)
 31746  		case "totalIngressBytesTransferred":
 31747  			err = unpopulate(val, "TotalIngressBytesTransferred", &v.TotalIngressBytesTransferred)
 31748  			delete(rawMsg, key)
 31749  		case "vpnClientConnectionsCount":
 31750  			err = unpopulate(val, "VPNClientConnectionsCount", &v.VPNClientConnectionsCount)
 31751  			delete(rawMsg, key)
 31752  		}
 31753  		if err != nil {
 31754  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 31755  		}
 31756  	}
 31757  	return nil
 31758  }
 31759  
 31760  // MarshalJSON implements the json.Marshaller interface for type VPNClientConnectionHealthDetail.
 31761  func (v VPNClientConnectionHealthDetail) MarshalJSON() ([]byte, error) {
 31762  	objectMap := make(map[string]any)
 31763  	populate(objectMap, "egressBytesTransferred", v.EgressBytesTransferred)
 31764  	populate(objectMap, "egressPacketsTransferred", v.EgressPacketsTransferred)
 31765  	populate(objectMap, "ingressBytesTransferred", v.IngressBytesTransferred)
 31766  	populate(objectMap, "ingressPacketsTransferred", v.IngressPacketsTransferred)
 31767  	populate(objectMap, "maxBandwidth", v.MaxBandwidth)
 31768  	populate(objectMap, "maxPacketsPerSecond", v.MaxPacketsPerSecond)
 31769  	populate(objectMap, "privateIpAddress", v.PrivateIPAddress)
 31770  	populate(objectMap, "publicIpAddress", v.PublicIPAddress)
 31771  	populate(objectMap, "vpnConnectionDuration", v.VPNConnectionDuration)
 31772  	populate(objectMap, "vpnConnectionId", v.VPNConnectionID)
 31773  	populate(objectMap, "vpnConnectionTime", v.VPNConnectionTime)
 31774  	populate(objectMap, "vpnUserName", v.VPNUserName)
 31775  	return json.Marshal(objectMap)
 31776  }
 31777  
 31778  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNClientConnectionHealthDetail.
 31779  func (v *VPNClientConnectionHealthDetail) UnmarshalJSON(data []byte) error {
 31780  	var rawMsg map[string]json.RawMessage
 31781  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 31782  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 31783  	}
 31784  	for key, val := range rawMsg {
 31785  		var err error
 31786  		switch key {
 31787  		case "egressBytesTransferred":
 31788  			err = unpopulate(val, "EgressBytesTransferred", &v.EgressBytesTransferred)
 31789  			delete(rawMsg, key)
 31790  		case "egressPacketsTransferred":
 31791  			err = unpopulate(val, "EgressPacketsTransferred", &v.EgressPacketsTransferred)
 31792  			delete(rawMsg, key)
 31793  		case "ingressBytesTransferred":
 31794  			err = unpopulate(val, "IngressBytesTransferred", &v.IngressBytesTransferred)
 31795  			delete(rawMsg, key)
 31796  		case "ingressPacketsTransferred":
 31797  			err = unpopulate(val, "IngressPacketsTransferred", &v.IngressPacketsTransferred)
 31798  			delete(rawMsg, key)
 31799  		case "maxBandwidth":
 31800  			err = unpopulate(val, "MaxBandwidth", &v.MaxBandwidth)
 31801  			delete(rawMsg, key)
 31802  		case "maxPacketsPerSecond":
 31803  			err = unpopulate(val, "MaxPacketsPerSecond", &v.MaxPacketsPerSecond)
 31804  			delete(rawMsg, key)
 31805  		case "privateIpAddress":
 31806  			err = unpopulate(val, "PrivateIPAddress", &v.PrivateIPAddress)
 31807  			delete(rawMsg, key)
 31808  		case "publicIpAddress":
 31809  			err = unpopulate(val, "PublicIPAddress", &v.PublicIPAddress)
 31810  			delete(rawMsg, key)
 31811  		case "vpnConnectionDuration":
 31812  			err = unpopulate(val, "VPNConnectionDuration", &v.VPNConnectionDuration)
 31813  			delete(rawMsg, key)
 31814  		case "vpnConnectionId":
 31815  			err = unpopulate(val, "VPNConnectionID", &v.VPNConnectionID)
 31816  			delete(rawMsg, key)
 31817  		case "vpnConnectionTime":
 31818  			err = unpopulate(val, "VPNConnectionTime", &v.VPNConnectionTime)
 31819  			delete(rawMsg, key)
 31820  		case "vpnUserName":
 31821  			err = unpopulate(val, "VPNUserName", &v.VPNUserName)
 31822  			delete(rawMsg, key)
 31823  		}
 31824  		if err != nil {
 31825  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 31826  		}
 31827  	}
 31828  	return nil
 31829  }
 31830  
 31831  // MarshalJSON implements the json.Marshaller interface for type VPNClientConnectionHealthDetailListResult.
 31832  func (v VPNClientConnectionHealthDetailListResult) MarshalJSON() ([]byte, error) {
 31833  	objectMap := make(map[string]any)
 31834  	populate(objectMap, "value", v.Value)
 31835  	return json.Marshal(objectMap)
 31836  }
 31837  
 31838  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNClientConnectionHealthDetailListResult.
 31839  func (v *VPNClientConnectionHealthDetailListResult) UnmarshalJSON(data []byte) error {
 31840  	var rawMsg map[string]json.RawMessage
 31841  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 31842  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 31843  	}
 31844  	for key, val := range rawMsg {
 31845  		var err error
 31846  		switch key {
 31847  		case "value":
 31848  			err = unpopulate(val, "Value", &v.Value)
 31849  			delete(rawMsg, key)
 31850  		}
 31851  		if err != nil {
 31852  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 31853  		}
 31854  	}
 31855  	return nil
 31856  }
 31857  
 31858  // MarshalJSON implements the json.Marshaller interface for type VPNClientIPsecParameters.
 31859  func (v VPNClientIPsecParameters) MarshalJSON() ([]byte, error) {
 31860  	objectMap := make(map[string]any)
 31861  	populate(objectMap, "dhGroup", v.DhGroup)
 31862  	populate(objectMap, "ipsecEncryption", v.IPSecEncryption)
 31863  	populate(objectMap, "ipsecIntegrity", v.IPSecIntegrity)
 31864  	populate(objectMap, "ikeEncryption", v.IkeEncryption)
 31865  	populate(objectMap, "ikeIntegrity", v.IkeIntegrity)
 31866  	populate(objectMap, "pfsGroup", v.PfsGroup)
 31867  	populate(objectMap, "saDataSizeKilobytes", v.SaDataSizeKilobytes)
 31868  	populate(objectMap, "saLifeTimeSeconds", v.SaLifeTimeSeconds)
 31869  	return json.Marshal(objectMap)
 31870  }
 31871  
 31872  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNClientIPsecParameters.
 31873  func (v *VPNClientIPsecParameters) UnmarshalJSON(data []byte) error {
 31874  	var rawMsg map[string]json.RawMessage
 31875  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 31876  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 31877  	}
 31878  	for key, val := range rawMsg {
 31879  		var err error
 31880  		switch key {
 31881  		case "dhGroup":
 31882  			err = unpopulate(val, "DhGroup", &v.DhGroup)
 31883  			delete(rawMsg, key)
 31884  		case "ipsecEncryption":
 31885  			err = unpopulate(val, "IPSecEncryption", &v.IPSecEncryption)
 31886  			delete(rawMsg, key)
 31887  		case "ipsecIntegrity":
 31888  			err = unpopulate(val, "IPSecIntegrity", &v.IPSecIntegrity)
 31889  			delete(rawMsg, key)
 31890  		case "ikeEncryption":
 31891  			err = unpopulate(val, "IkeEncryption", &v.IkeEncryption)
 31892  			delete(rawMsg, key)
 31893  		case "ikeIntegrity":
 31894  			err = unpopulate(val, "IkeIntegrity", &v.IkeIntegrity)
 31895  			delete(rawMsg, key)
 31896  		case "pfsGroup":
 31897  			err = unpopulate(val, "PfsGroup", &v.PfsGroup)
 31898  			delete(rawMsg, key)
 31899  		case "saDataSizeKilobytes":
 31900  			err = unpopulate(val, "SaDataSizeKilobytes", &v.SaDataSizeKilobytes)
 31901  			delete(rawMsg, key)
 31902  		case "saLifeTimeSeconds":
 31903  			err = unpopulate(val, "SaLifeTimeSeconds", &v.SaLifeTimeSeconds)
 31904  			delete(rawMsg, key)
 31905  		}
 31906  		if err != nil {
 31907  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 31908  		}
 31909  	}
 31910  	return nil
 31911  }
 31912  
 31913  // MarshalJSON implements the json.Marshaller interface for type VPNClientParameters.
 31914  func (v VPNClientParameters) MarshalJSON() ([]byte, error) {
 31915  	objectMap := make(map[string]any)
 31916  	populate(objectMap, "authenticationMethod", v.AuthenticationMethod)
 31917  	populate(objectMap, "clientRootCertificates", v.ClientRootCertificates)
 31918  	populate(objectMap, "processorArchitecture", v.ProcessorArchitecture)
 31919  	populate(objectMap, "radiusServerAuthCertificate", v.RadiusServerAuthCertificate)
 31920  	return json.Marshal(objectMap)
 31921  }
 31922  
 31923  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNClientParameters.
 31924  func (v *VPNClientParameters) UnmarshalJSON(data []byte) error {
 31925  	var rawMsg map[string]json.RawMessage
 31926  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 31927  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 31928  	}
 31929  	for key, val := range rawMsg {
 31930  		var err error
 31931  		switch key {
 31932  		case "authenticationMethod":
 31933  			err = unpopulate(val, "AuthenticationMethod", &v.AuthenticationMethod)
 31934  			delete(rawMsg, key)
 31935  		case "clientRootCertificates":
 31936  			err = unpopulate(val, "ClientRootCertificates", &v.ClientRootCertificates)
 31937  			delete(rawMsg, key)
 31938  		case "processorArchitecture":
 31939  			err = unpopulate(val, "ProcessorArchitecture", &v.ProcessorArchitecture)
 31940  			delete(rawMsg, key)
 31941  		case "radiusServerAuthCertificate":
 31942  			err = unpopulate(val, "RadiusServerAuthCertificate", &v.RadiusServerAuthCertificate)
 31943  			delete(rawMsg, key)
 31944  		}
 31945  		if err != nil {
 31946  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 31947  		}
 31948  	}
 31949  	return nil
 31950  }
 31951  
 31952  // MarshalJSON implements the json.Marshaller interface for type VPNClientRevokedCertificate.
 31953  func (v VPNClientRevokedCertificate) MarshalJSON() ([]byte, error) {
 31954  	objectMap := make(map[string]any)
 31955  	populate(objectMap, "etag", v.Etag)
 31956  	populate(objectMap, "id", v.ID)
 31957  	populate(objectMap, "name", v.Name)
 31958  	populate(objectMap, "properties", v.Properties)
 31959  	return json.Marshal(objectMap)
 31960  }
 31961  
 31962  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNClientRevokedCertificate.
 31963  func (v *VPNClientRevokedCertificate) UnmarshalJSON(data []byte) error {
 31964  	var rawMsg map[string]json.RawMessage
 31965  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 31966  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 31967  	}
 31968  	for key, val := range rawMsg {
 31969  		var err error
 31970  		switch key {
 31971  		case "etag":
 31972  			err = unpopulate(val, "Etag", &v.Etag)
 31973  			delete(rawMsg, key)
 31974  		case "id":
 31975  			err = unpopulate(val, "ID", &v.ID)
 31976  			delete(rawMsg, key)
 31977  		case "name":
 31978  			err = unpopulate(val, "Name", &v.Name)
 31979  			delete(rawMsg, key)
 31980  		case "properties":
 31981  			err = unpopulate(val, "Properties", &v.Properties)
 31982  			delete(rawMsg, key)
 31983  		}
 31984  		if err != nil {
 31985  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 31986  		}
 31987  	}
 31988  	return nil
 31989  }
 31990  
 31991  // MarshalJSON implements the json.Marshaller interface for type VPNClientRevokedCertificatePropertiesFormat.
 31992  func (v VPNClientRevokedCertificatePropertiesFormat) MarshalJSON() ([]byte, error) {
 31993  	objectMap := make(map[string]any)
 31994  	populate(objectMap, "provisioningState", v.ProvisioningState)
 31995  	populate(objectMap, "thumbprint", v.Thumbprint)
 31996  	return json.Marshal(objectMap)
 31997  }
 31998  
 31999  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNClientRevokedCertificatePropertiesFormat.
 32000  func (v *VPNClientRevokedCertificatePropertiesFormat) UnmarshalJSON(data []byte) error {
 32001  	var rawMsg map[string]json.RawMessage
 32002  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32003  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32004  	}
 32005  	for key, val := range rawMsg {
 32006  		var err error
 32007  		switch key {
 32008  		case "provisioningState":
 32009  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 32010  			delete(rawMsg, key)
 32011  		case "thumbprint":
 32012  			err = unpopulate(val, "Thumbprint", &v.Thumbprint)
 32013  			delete(rawMsg, key)
 32014  		}
 32015  		if err != nil {
 32016  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32017  		}
 32018  	}
 32019  	return nil
 32020  }
 32021  
 32022  // MarshalJSON implements the json.Marshaller interface for type VPNClientRootCertificate.
 32023  func (v VPNClientRootCertificate) MarshalJSON() ([]byte, error) {
 32024  	objectMap := make(map[string]any)
 32025  	populate(objectMap, "etag", v.Etag)
 32026  	populate(objectMap, "id", v.ID)
 32027  	populate(objectMap, "name", v.Name)
 32028  	populate(objectMap, "properties", v.Properties)
 32029  	return json.Marshal(objectMap)
 32030  }
 32031  
 32032  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNClientRootCertificate.
 32033  func (v *VPNClientRootCertificate) UnmarshalJSON(data []byte) error {
 32034  	var rawMsg map[string]json.RawMessage
 32035  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32036  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32037  	}
 32038  	for key, val := range rawMsg {
 32039  		var err error
 32040  		switch key {
 32041  		case "etag":
 32042  			err = unpopulate(val, "Etag", &v.Etag)
 32043  			delete(rawMsg, key)
 32044  		case "id":
 32045  			err = unpopulate(val, "ID", &v.ID)
 32046  			delete(rawMsg, key)
 32047  		case "name":
 32048  			err = unpopulate(val, "Name", &v.Name)
 32049  			delete(rawMsg, key)
 32050  		case "properties":
 32051  			err = unpopulate(val, "Properties", &v.Properties)
 32052  			delete(rawMsg, key)
 32053  		}
 32054  		if err != nil {
 32055  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32056  		}
 32057  	}
 32058  	return nil
 32059  }
 32060  
 32061  // MarshalJSON implements the json.Marshaller interface for type VPNClientRootCertificatePropertiesFormat.
 32062  func (v VPNClientRootCertificatePropertiesFormat) MarshalJSON() ([]byte, error) {
 32063  	objectMap := make(map[string]any)
 32064  	populate(objectMap, "provisioningState", v.ProvisioningState)
 32065  	populate(objectMap, "publicCertData", v.PublicCertData)
 32066  	return json.Marshal(objectMap)
 32067  }
 32068  
 32069  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNClientRootCertificatePropertiesFormat.
 32070  func (v *VPNClientRootCertificatePropertiesFormat) UnmarshalJSON(data []byte) error {
 32071  	var rawMsg map[string]json.RawMessage
 32072  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32073  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32074  	}
 32075  	for key, val := range rawMsg {
 32076  		var err error
 32077  		switch key {
 32078  		case "provisioningState":
 32079  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 32080  			delete(rawMsg, key)
 32081  		case "publicCertData":
 32082  			err = unpopulate(val, "PublicCertData", &v.PublicCertData)
 32083  			delete(rawMsg, key)
 32084  		}
 32085  		if err != nil {
 32086  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32087  		}
 32088  	}
 32089  	return nil
 32090  }
 32091  
 32092  // MarshalJSON implements the json.Marshaller interface for type VPNConnection.
 32093  func (v VPNConnection) MarshalJSON() ([]byte, error) {
 32094  	objectMap := make(map[string]any)
 32095  	populate(objectMap, "etag", v.Etag)
 32096  	populate(objectMap, "id", v.ID)
 32097  	populate(objectMap, "name", v.Name)
 32098  	populate(objectMap, "properties", v.Properties)
 32099  	return json.Marshal(objectMap)
 32100  }
 32101  
 32102  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNConnection.
 32103  func (v *VPNConnection) UnmarshalJSON(data []byte) error {
 32104  	var rawMsg map[string]json.RawMessage
 32105  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32106  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32107  	}
 32108  	for key, val := range rawMsg {
 32109  		var err error
 32110  		switch key {
 32111  		case "etag":
 32112  			err = unpopulate(val, "Etag", &v.Etag)
 32113  			delete(rawMsg, key)
 32114  		case "id":
 32115  			err = unpopulate(val, "ID", &v.ID)
 32116  			delete(rawMsg, key)
 32117  		case "name":
 32118  			err = unpopulate(val, "Name", &v.Name)
 32119  			delete(rawMsg, key)
 32120  		case "properties":
 32121  			err = unpopulate(val, "Properties", &v.Properties)
 32122  			delete(rawMsg, key)
 32123  		}
 32124  		if err != nil {
 32125  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32126  		}
 32127  	}
 32128  	return nil
 32129  }
 32130  
 32131  // MarshalJSON implements the json.Marshaller interface for type VPNConnectionPacketCaptureStartParameters.
 32132  func (v VPNConnectionPacketCaptureStartParameters) MarshalJSON() ([]byte, error) {
 32133  	objectMap := make(map[string]any)
 32134  	populate(objectMap, "filterData", v.FilterData)
 32135  	populate(objectMap, "linkConnectionNames", v.LinkConnectionNames)
 32136  	return json.Marshal(objectMap)
 32137  }
 32138  
 32139  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNConnectionPacketCaptureStartParameters.
 32140  func (v *VPNConnectionPacketCaptureStartParameters) UnmarshalJSON(data []byte) error {
 32141  	var rawMsg map[string]json.RawMessage
 32142  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32143  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32144  	}
 32145  	for key, val := range rawMsg {
 32146  		var err error
 32147  		switch key {
 32148  		case "filterData":
 32149  			err = unpopulate(val, "FilterData", &v.FilterData)
 32150  			delete(rawMsg, key)
 32151  		case "linkConnectionNames":
 32152  			err = unpopulate(val, "LinkConnectionNames", &v.LinkConnectionNames)
 32153  			delete(rawMsg, key)
 32154  		}
 32155  		if err != nil {
 32156  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32157  		}
 32158  	}
 32159  	return nil
 32160  }
 32161  
 32162  // MarshalJSON implements the json.Marshaller interface for type VPNConnectionPacketCaptureStopParameters.
 32163  func (v VPNConnectionPacketCaptureStopParameters) MarshalJSON() ([]byte, error) {
 32164  	objectMap := make(map[string]any)
 32165  	populate(objectMap, "linkConnectionNames", v.LinkConnectionNames)
 32166  	populate(objectMap, "sasUrl", v.SasURL)
 32167  	return json.Marshal(objectMap)
 32168  }
 32169  
 32170  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNConnectionPacketCaptureStopParameters.
 32171  func (v *VPNConnectionPacketCaptureStopParameters) UnmarshalJSON(data []byte) error {
 32172  	var rawMsg map[string]json.RawMessage
 32173  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32174  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32175  	}
 32176  	for key, val := range rawMsg {
 32177  		var err error
 32178  		switch key {
 32179  		case "linkConnectionNames":
 32180  			err = unpopulate(val, "LinkConnectionNames", &v.LinkConnectionNames)
 32181  			delete(rawMsg, key)
 32182  		case "sasUrl":
 32183  			err = unpopulate(val, "SasURL", &v.SasURL)
 32184  			delete(rawMsg, key)
 32185  		}
 32186  		if err != nil {
 32187  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32188  		}
 32189  	}
 32190  	return nil
 32191  }
 32192  
 32193  // MarshalJSON implements the json.Marshaller interface for type VPNConnectionProperties.
 32194  func (v VPNConnectionProperties) MarshalJSON() ([]byte, error) {
 32195  	objectMap := make(map[string]any)
 32196  	populate(objectMap, "connectionBandwidth", v.ConnectionBandwidth)
 32197  	populate(objectMap, "connectionStatus", v.ConnectionStatus)
 32198  	populate(objectMap, "dpdTimeoutSeconds", v.DpdTimeoutSeconds)
 32199  	populate(objectMap, "egressBytesTransferred", v.EgressBytesTransferred)
 32200  	populate(objectMap, "enableBgp", v.EnableBgp)
 32201  	populate(objectMap, "enableInternetSecurity", v.EnableInternetSecurity)
 32202  	populate(objectMap, "enableRateLimiting", v.EnableRateLimiting)
 32203  	populate(objectMap, "ipsecPolicies", v.IPSecPolicies)
 32204  	populate(objectMap, "ingressBytesTransferred", v.IngressBytesTransferred)
 32205  	populate(objectMap, "provisioningState", v.ProvisioningState)
 32206  	populate(objectMap, "remoteVpnSite", v.RemoteVPNSite)
 32207  	populate(objectMap, "routingConfiguration", v.RoutingConfiguration)
 32208  	populate(objectMap, "routingWeight", v.RoutingWeight)
 32209  	populate(objectMap, "sharedKey", v.SharedKey)
 32210  	populate(objectMap, "trafficSelectorPolicies", v.TrafficSelectorPolicies)
 32211  	populate(objectMap, "useLocalAzureIpAddress", v.UseLocalAzureIPAddress)
 32212  	populate(objectMap, "usePolicyBasedTrafficSelectors", v.UsePolicyBasedTrafficSelectors)
 32213  	populate(objectMap, "vpnConnectionProtocolType", v.VPNConnectionProtocolType)
 32214  	populate(objectMap, "vpnLinkConnections", v.VPNLinkConnections)
 32215  	return json.Marshal(objectMap)
 32216  }
 32217  
 32218  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNConnectionProperties.
 32219  func (v *VPNConnectionProperties) UnmarshalJSON(data []byte) error {
 32220  	var rawMsg map[string]json.RawMessage
 32221  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32222  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32223  	}
 32224  	for key, val := range rawMsg {
 32225  		var err error
 32226  		switch key {
 32227  		case "connectionBandwidth":
 32228  			err = unpopulate(val, "ConnectionBandwidth", &v.ConnectionBandwidth)
 32229  			delete(rawMsg, key)
 32230  		case "connectionStatus":
 32231  			err = unpopulate(val, "ConnectionStatus", &v.ConnectionStatus)
 32232  			delete(rawMsg, key)
 32233  		case "dpdTimeoutSeconds":
 32234  			err = unpopulate(val, "DpdTimeoutSeconds", &v.DpdTimeoutSeconds)
 32235  			delete(rawMsg, key)
 32236  		case "egressBytesTransferred":
 32237  			err = unpopulate(val, "EgressBytesTransferred", &v.EgressBytesTransferred)
 32238  			delete(rawMsg, key)
 32239  		case "enableBgp":
 32240  			err = unpopulate(val, "EnableBgp", &v.EnableBgp)
 32241  			delete(rawMsg, key)
 32242  		case "enableInternetSecurity":
 32243  			err = unpopulate(val, "EnableInternetSecurity", &v.EnableInternetSecurity)
 32244  			delete(rawMsg, key)
 32245  		case "enableRateLimiting":
 32246  			err = unpopulate(val, "EnableRateLimiting", &v.EnableRateLimiting)
 32247  			delete(rawMsg, key)
 32248  		case "ipsecPolicies":
 32249  			err = unpopulate(val, "IPSecPolicies", &v.IPSecPolicies)
 32250  			delete(rawMsg, key)
 32251  		case "ingressBytesTransferred":
 32252  			err = unpopulate(val, "IngressBytesTransferred", &v.IngressBytesTransferred)
 32253  			delete(rawMsg, key)
 32254  		case "provisioningState":
 32255  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 32256  			delete(rawMsg, key)
 32257  		case "remoteVpnSite":
 32258  			err = unpopulate(val, "RemoteVPNSite", &v.RemoteVPNSite)
 32259  			delete(rawMsg, key)
 32260  		case "routingConfiguration":
 32261  			err = unpopulate(val, "RoutingConfiguration", &v.RoutingConfiguration)
 32262  			delete(rawMsg, key)
 32263  		case "routingWeight":
 32264  			err = unpopulate(val, "RoutingWeight", &v.RoutingWeight)
 32265  			delete(rawMsg, key)
 32266  		case "sharedKey":
 32267  			err = unpopulate(val, "SharedKey", &v.SharedKey)
 32268  			delete(rawMsg, key)
 32269  		case "trafficSelectorPolicies":
 32270  			err = unpopulate(val, "TrafficSelectorPolicies", &v.TrafficSelectorPolicies)
 32271  			delete(rawMsg, key)
 32272  		case "useLocalAzureIpAddress":
 32273  			err = unpopulate(val, "UseLocalAzureIPAddress", &v.UseLocalAzureIPAddress)
 32274  			delete(rawMsg, key)
 32275  		case "usePolicyBasedTrafficSelectors":
 32276  			err = unpopulate(val, "UsePolicyBasedTrafficSelectors", &v.UsePolicyBasedTrafficSelectors)
 32277  			delete(rawMsg, key)
 32278  		case "vpnConnectionProtocolType":
 32279  			err = unpopulate(val, "VPNConnectionProtocolType", &v.VPNConnectionProtocolType)
 32280  			delete(rawMsg, key)
 32281  		case "vpnLinkConnections":
 32282  			err = unpopulate(val, "VPNLinkConnections", &v.VPNLinkConnections)
 32283  			delete(rawMsg, key)
 32284  		}
 32285  		if err != nil {
 32286  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32287  		}
 32288  	}
 32289  	return nil
 32290  }
 32291  
 32292  // MarshalJSON implements the json.Marshaller interface for type VPNDeviceScriptParameters.
 32293  func (v VPNDeviceScriptParameters) MarshalJSON() ([]byte, error) {
 32294  	objectMap := make(map[string]any)
 32295  	populate(objectMap, "deviceFamily", v.DeviceFamily)
 32296  	populate(objectMap, "firmwareVersion", v.FirmwareVersion)
 32297  	populate(objectMap, "vendor", v.Vendor)
 32298  	return json.Marshal(objectMap)
 32299  }
 32300  
 32301  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNDeviceScriptParameters.
 32302  func (v *VPNDeviceScriptParameters) UnmarshalJSON(data []byte) error {
 32303  	var rawMsg map[string]json.RawMessage
 32304  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32305  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32306  	}
 32307  	for key, val := range rawMsg {
 32308  		var err error
 32309  		switch key {
 32310  		case "deviceFamily":
 32311  			err = unpopulate(val, "DeviceFamily", &v.DeviceFamily)
 32312  			delete(rawMsg, key)
 32313  		case "firmwareVersion":
 32314  			err = unpopulate(val, "FirmwareVersion", &v.FirmwareVersion)
 32315  			delete(rawMsg, key)
 32316  		case "vendor":
 32317  			err = unpopulate(val, "Vendor", &v.Vendor)
 32318  			delete(rawMsg, key)
 32319  		}
 32320  		if err != nil {
 32321  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32322  		}
 32323  	}
 32324  	return nil
 32325  }
 32326  
 32327  // MarshalJSON implements the json.Marshaller interface for type VPNGateway.
 32328  func (v VPNGateway) MarshalJSON() ([]byte, error) {
 32329  	objectMap := make(map[string]any)
 32330  	populate(objectMap, "etag", v.Etag)
 32331  	populate(objectMap, "id", v.ID)
 32332  	populate(objectMap, "location", v.Location)
 32333  	populate(objectMap, "name", v.Name)
 32334  	populate(objectMap, "properties", v.Properties)
 32335  	populate(objectMap, "tags", v.Tags)
 32336  	populate(objectMap, "type", v.Type)
 32337  	return json.Marshal(objectMap)
 32338  }
 32339  
 32340  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNGateway.
 32341  func (v *VPNGateway) UnmarshalJSON(data []byte) error {
 32342  	var rawMsg map[string]json.RawMessage
 32343  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32344  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32345  	}
 32346  	for key, val := range rawMsg {
 32347  		var err error
 32348  		switch key {
 32349  		case "etag":
 32350  			err = unpopulate(val, "Etag", &v.Etag)
 32351  			delete(rawMsg, key)
 32352  		case "id":
 32353  			err = unpopulate(val, "ID", &v.ID)
 32354  			delete(rawMsg, key)
 32355  		case "location":
 32356  			err = unpopulate(val, "Location", &v.Location)
 32357  			delete(rawMsg, key)
 32358  		case "name":
 32359  			err = unpopulate(val, "Name", &v.Name)
 32360  			delete(rawMsg, key)
 32361  		case "properties":
 32362  			err = unpopulate(val, "Properties", &v.Properties)
 32363  			delete(rawMsg, key)
 32364  		case "tags":
 32365  			err = unpopulate(val, "Tags", &v.Tags)
 32366  			delete(rawMsg, key)
 32367  		case "type":
 32368  			err = unpopulate(val, "Type", &v.Type)
 32369  			delete(rawMsg, key)
 32370  		}
 32371  		if err != nil {
 32372  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32373  		}
 32374  	}
 32375  	return nil
 32376  }
 32377  
 32378  // MarshalJSON implements the json.Marshaller interface for type VPNGatewayIPConfiguration.
 32379  func (v VPNGatewayIPConfiguration) MarshalJSON() ([]byte, error) {
 32380  	objectMap := make(map[string]any)
 32381  	populate(objectMap, "id", v.ID)
 32382  	populate(objectMap, "privateIpAddress", v.PrivateIPAddress)
 32383  	populate(objectMap, "publicIpAddress", v.PublicIPAddress)
 32384  	return json.Marshal(objectMap)
 32385  }
 32386  
 32387  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNGatewayIPConfiguration.
 32388  func (v *VPNGatewayIPConfiguration) UnmarshalJSON(data []byte) error {
 32389  	var rawMsg map[string]json.RawMessage
 32390  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32391  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32392  	}
 32393  	for key, val := range rawMsg {
 32394  		var err error
 32395  		switch key {
 32396  		case "id":
 32397  			err = unpopulate(val, "ID", &v.ID)
 32398  			delete(rawMsg, key)
 32399  		case "privateIpAddress":
 32400  			err = unpopulate(val, "PrivateIPAddress", &v.PrivateIPAddress)
 32401  			delete(rawMsg, key)
 32402  		case "publicIpAddress":
 32403  			err = unpopulate(val, "PublicIPAddress", &v.PublicIPAddress)
 32404  			delete(rawMsg, key)
 32405  		}
 32406  		if err != nil {
 32407  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32408  		}
 32409  	}
 32410  	return nil
 32411  }
 32412  
 32413  // MarshalJSON implements the json.Marshaller interface for type VPNGatewayNatRule.
 32414  func (v VPNGatewayNatRule) MarshalJSON() ([]byte, error) {
 32415  	objectMap := make(map[string]any)
 32416  	populate(objectMap, "etag", v.Etag)
 32417  	populate(objectMap, "id", v.ID)
 32418  	populate(objectMap, "name", v.Name)
 32419  	populate(objectMap, "properties", v.Properties)
 32420  	populate(objectMap, "type", v.Type)
 32421  	return json.Marshal(objectMap)
 32422  }
 32423  
 32424  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNGatewayNatRule.
 32425  func (v *VPNGatewayNatRule) UnmarshalJSON(data []byte) error {
 32426  	var rawMsg map[string]json.RawMessage
 32427  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32428  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32429  	}
 32430  	for key, val := range rawMsg {
 32431  		var err error
 32432  		switch key {
 32433  		case "etag":
 32434  			err = unpopulate(val, "Etag", &v.Etag)
 32435  			delete(rawMsg, key)
 32436  		case "id":
 32437  			err = unpopulate(val, "ID", &v.ID)
 32438  			delete(rawMsg, key)
 32439  		case "name":
 32440  			err = unpopulate(val, "Name", &v.Name)
 32441  			delete(rawMsg, key)
 32442  		case "properties":
 32443  			err = unpopulate(val, "Properties", &v.Properties)
 32444  			delete(rawMsg, key)
 32445  		case "type":
 32446  			err = unpopulate(val, "Type", &v.Type)
 32447  			delete(rawMsg, key)
 32448  		}
 32449  		if err != nil {
 32450  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32451  		}
 32452  	}
 32453  	return nil
 32454  }
 32455  
 32456  // MarshalJSON implements the json.Marshaller interface for type VPNGatewayNatRuleProperties.
 32457  func (v VPNGatewayNatRuleProperties) MarshalJSON() ([]byte, error) {
 32458  	objectMap := make(map[string]any)
 32459  	populate(objectMap, "egressVpnSiteLinkConnections", v.EgressVPNSiteLinkConnections)
 32460  	populate(objectMap, "externalMappings", v.ExternalMappings)
 32461  	populate(objectMap, "ipConfigurationId", v.IPConfigurationID)
 32462  	populate(objectMap, "ingressVpnSiteLinkConnections", v.IngressVPNSiteLinkConnections)
 32463  	populate(objectMap, "internalMappings", v.InternalMappings)
 32464  	populate(objectMap, "mode", v.Mode)
 32465  	populate(objectMap, "provisioningState", v.ProvisioningState)
 32466  	populate(objectMap, "type", v.Type)
 32467  	return json.Marshal(objectMap)
 32468  }
 32469  
 32470  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNGatewayNatRuleProperties.
 32471  func (v *VPNGatewayNatRuleProperties) UnmarshalJSON(data []byte) error {
 32472  	var rawMsg map[string]json.RawMessage
 32473  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32474  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32475  	}
 32476  	for key, val := range rawMsg {
 32477  		var err error
 32478  		switch key {
 32479  		case "egressVpnSiteLinkConnections":
 32480  			err = unpopulate(val, "EgressVPNSiteLinkConnections", &v.EgressVPNSiteLinkConnections)
 32481  			delete(rawMsg, key)
 32482  		case "externalMappings":
 32483  			err = unpopulate(val, "ExternalMappings", &v.ExternalMappings)
 32484  			delete(rawMsg, key)
 32485  		case "ipConfigurationId":
 32486  			err = unpopulate(val, "IPConfigurationID", &v.IPConfigurationID)
 32487  			delete(rawMsg, key)
 32488  		case "ingressVpnSiteLinkConnections":
 32489  			err = unpopulate(val, "IngressVPNSiteLinkConnections", &v.IngressVPNSiteLinkConnections)
 32490  			delete(rawMsg, key)
 32491  		case "internalMappings":
 32492  			err = unpopulate(val, "InternalMappings", &v.InternalMappings)
 32493  			delete(rawMsg, key)
 32494  		case "mode":
 32495  			err = unpopulate(val, "Mode", &v.Mode)
 32496  			delete(rawMsg, key)
 32497  		case "provisioningState":
 32498  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 32499  			delete(rawMsg, key)
 32500  		case "type":
 32501  			err = unpopulate(val, "Type", &v.Type)
 32502  			delete(rawMsg, key)
 32503  		}
 32504  		if err != nil {
 32505  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32506  		}
 32507  	}
 32508  	return nil
 32509  }
 32510  
 32511  // MarshalJSON implements the json.Marshaller interface for type VPNGatewayPacketCaptureStartParameters.
 32512  func (v VPNGatewayPacketCaptureStartParameters) MarshalJSON() ([]byte, error) {
 32513  	objectMap := make(map[string]any)
 32514  	populate(objectMap, "filterData", v.FilterData)
 32515  	return json.Marshal(objectMap)
 32516  }
 32517  
 32518  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNGatewayPacketCaptureStartParameters.
 32519  func (v *VPNGatewayPacketCaptureStartParameters) UnmarshalJSON(data []byte) error {
 32520  	var rawMsg map[string]json.RawMessage
 32521  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32522  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32523  	}
 32524  	for key, val := range rawMsg {
 32525  		var err error
 32526  		switch key {
 32527  		case "filterData":
 32528  			err = unpopulate(val, "FilterData", &v.FilterData)
 32529  			delete(rawMsg, key)
 32530  		}
 32531  		if err != nil {
 32532  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32533  		}
 32534  	}
 32535  	return nil
 32536  }
 32537  
 32538  // MarshalJSON implements the json.Marshaller interface for type VPNGatewayPacketCaptureStopParameters.
 32539  func (v VPNGatewayPacketCaptureStopParameters) MarshalJSON() ([]byte, error) {
 32540  	objectMap := make(map[string]any)
 32541  	populate(objectMap, "sasUrl", v.SasURL)
 32542  	return json.Marshal(objectMap)
 32543  }
 32544  
 32545  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNGatewayPacketCaptureStopParameters.
 32546  func (v *VPNGatewayPacketCaptureStopParameters) UnmarshalJSON(data []byte) error {
 32547  	var rawMsg map[string]json.RawMessage
 32548  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32549  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32550  	}
 32551  	for key, val := range rawMsg {
 32552  		var err error
 32553  		switch key {
 32554  		case "sasUrl":
 32555  			err = unpopulate(val, "SasURL", &v.SasURL)
 32556  			delete(rawMsg, key)
 32557  		}
 32558  		if err != nil {
 32559  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32560  		}
 32561  	}
 32562  	return nil
 32563  }
 32564  
 32565  // MarshalJSON implements the json.Marshaller interface for type VPNGatewayProperties.
 32566  func (v VPNGatewayProperties) MarshalJSON() ([]byte, error) {
 32567  	objectMap := make(map[string]any)
 32568  	populate(objectMap, "bgpSettings", v.BgpSettings)
 32569  	populate(objectMap, "connections", v.Connections)
 32570  	populate(objectMap, "enableBgpRouteTranslationForNat", v.EnableBgpRouteTranslationForNat)
 32571  	populate(objectMap, "ipConfigurations", v.IPConfigurations)
 32572  	populate(objectMap, "isRoutingPreferenceInternet", v.IsRoutingPreferenceInternet)
 32573  	populate(objectMap, "natRules", v.NatRules)
 32574  	populate(objectMap, "provisioningState", v.ProvisioningState)
 32575  	populate(objectMap, "vpnGatewayScaleUnit", v.VPNGatewayScaleUnit)
 32576  	populate(objectMap, "virtualHub", v.VirtualHub)
 32577  	return json.Marshal(objectMap)
 32578  }
 32579  
 32580  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNGatewayProperties.
 32581  func (v *VPNGatewayProperties) UnmarshalJSON(data []byte) error {
 32582  	var rawMsg map[string]json.RawMessage
 32583  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32584  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32585  	}
 32586  	for key, val := range rawMsg {
 32587  		var err error
 32588  		switch key {
 32589  		case "bgpSettings":
 32590  			err = unpopulate(val, "BgpSettings", &v.BgpSettings)
 32591  			delete(rawMsg, key)
 32592  		case "connections":
 32593  			err = unpopulate(val, "Connections", &v.Connections)
 32594  			delete(rawMsg, key)
 32595  		case "enableBgpRouteTranslationForNat":
 32596  			err = unpopulate(val, "EnableBgpRouteTranslationForNat", &v.EnableBgpRouteTranslationForNat)
 32597  			delete(rawMsg, key)
 32598  		case "ipConfigurations":
 32599  			err = unpopulate(val, "IPConfigurations", &v.IPConfigurations)
 32600  			delete(rawMsg, key)
 32601  		case "isRoutingPreferenceInternet":
 32602  			err = unpopulate(val, "IsRoutingPreferenceInternet", &v.IsRoutingPreferenceInternet)
 32603  			delete(rawMsg, key)
 32604  		case "natRules":
 32605  			err = unpopulate(val, "NatRules", &v.NatRules)
 32606  			delete(rawMsg, key)
 32607  		case "provisioningState":
 32608  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 32609  			delete(rawMsg, key)
 32610  		case "vpnGatewayScaleUnit":
 32611  			err = unpopulate(val, "VPNGatewayScaleUnit", &v.VPNGatewayScaleUnit)
 32612  			delete(rawMsg, key)
 32613  		case "virtualHub":
 32614  			err = unpopulate(val, "VirtualHub", &v.VirtualHub)
 32615  			delete(rawMsg, key)
 32616  		}
 32617  		if err != nil {
 32618  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32619  		}
 32620  	}
 32621  	return nil
 32622  }
 32623  
 32624  // MarshalJSON implements the json.Marshaller interface for type VPNLinkBgpSettings.
 32625  func (v VPNLinkBgpSettings) MarshalJSON() ([]byte, error) {
 32626  	objectMap := make(map[string]any)
 32627  	populate(objectMap, "asn", v.Asn)
 32628  	populate(objectMap, "bgpPeeringAddress", v.BgpPeeringAddress)
 32629  	return json.Marshal(objectMap)
 32630  }
 32631  
 32632  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNLinkBgpSettings.
 32633  func (v *VPNLinkBgpSettings) UnmarshalJSON(data []byte) error {
 32634  	var rawMsg map[string]json.RawMessage
 32635  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32636  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32637  	}
 32638  	for key, val := range rawMsg {
 32639  		var err error
 32640  		switch key {
 32641  		case "asn":
 32642  			err = unpopulate(val, "Asn", &v.Asn)
 32643  			delete(rawMsg, key)
 32644  		case "bgpPeeringAddress":
 32645  			err = unpopulate(val, "BgpPeeringAddress", &v.BgpPeeringAddress)
 32646  			delete(rawMsg, key)
 32647  		}
 32648  		if err != nil {
 32649  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32650  		}
 32651  	}
 32652  	return nil
 32653  }
 32654  
 32655  // MarshalJSON implements the json.Marshaller interface for type VPNLinkProviderProperties.
 32656  func (v VPNLinkProviderProperties) MarshalJSON() ([]byte, error) {
 32657  	objectMap := make(map[string]any)
 32658  	populate(objectMap, "linkProviderName", v.LinkProviderName)
 32659  	populate(objectMap, "linkSpeedInMbps", v.LinkSpeedInMbps)
 32660  	return json.Marshal(objectMap)
 32661  }
 32662  
 32663  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNLinkProviderProperties.
 32664  func (v *VPNLinkProviderProperties) UnmarshalJSON(data []byte) error {
 32665  	var rawMsg map[string]json.RawMessage
 32666  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32667  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32668  	}
 32669  	for key, val := range rawMsg {
 32670  		var err error
 32671  		switch key {
 32672  		case "linkProviderName":
 32673  			err = unpopulate(val, "LinkProviderName", &v.LinkProviderName)
 32674  			delete(rawMsg, key)
 32675  		case "linkSpeedInMbps":
 32676  			err = unpopulate(val, "LinkSpeedInMbps", &v.LinkSpeedInMbps)
 32677  			delete(rawMsg, key)
 32678  		}
 32679  		if err != nil {
 32680  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32681  		}
 32682  	}
 32683  	return nil
 32684  }
 32685  
 32686  // MarshalJSON implements the json.Marshaller interface for type VPNNatRuleMapping.
 32687  func (v VPNNatRuleMapping) MarshalJSON() ([]byte, error) {
 32688  	objectMap := make(map[string]any)
 32689  	populate(objectMap, "addressSpace", v.AddressSpace)
 32690  	populate(objectMap, "portRange", v.PortRange)
 32691  	return json.Marshal(objectMap)
 32692  }
 32693  
 32694  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNNatRuleMapping.
 32695  func (v *VPNNatRuleMapping) UnmarshalJSON(data []byte) error {
 32696  	var rawMsg map[string]json.RawMessage
 32697  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32698  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32699  	}
 32700  	for key, val := range rawMsg {
 32701  		var err error
 32702  		switch key {
 32703  		case "addressSpace":
 32704  			err = unpopulate(val, "AddressSpace", &v.AddressSpace)
 32705  			delete(rawMsg, key)
 32706  		case "portRange":
 32707  			err = unpopulate(val, "PortRange", &v.PortRange)
 32708  			delete(rawMsg, key)
 32709  		}
 32710  		if err != nil {
 32711  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32712  		}
 32713  	}
 32714  	return nil
 32715  }
 32716  
 32717  // MarshalJSON implements the json.Marshaller interface for type VPNPacketCaptureStartParameters.
 32718  func (v VPNPacketCaptureStartParameters) MarshalJSON() ([]byte, error) {
 32719  	objectMap := make(map[string]any)
 32720  	populate(objectMap, "filterData", v.FilterData)
 32721  	return json.Marshal(objectMap)
 32722  }
 32723  
 32724  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNPacketCaptureStartParameters.
 32725  func (v *VPNPacketCaptureStartParameters) UnmarshalJSON(data []byte) error {
 32726  	var rawMsg map[string]json.RawMessage
 32727  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32728  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32729  	}
 32730  	for key, val := range rawMsg {
 32731  		var err error
 32732  		switch key {
 32733  		case "filterData":
 32734  			err = unpopulate(val, "FilterData", &v.FilterData)
 32735  			delete(rawMsg, key)
 32736  		}
 32737  		if err != nil {
 32738  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32739  		}
 32740  	}
 32741  	return nil
 32742  }
 32743  
 32744  // MarshalJSON implements the json.Marshaller interface for type VPNPacketCaptureStopParameters.
 32745  func (v VPNPacketCaptureStopParameters) MarshalJSON() ([]byte, error) {
 32746  	objectMap := make(map[string]any)
 32747  	populate(objectMap, "sasUrl", v.SasURL)
 32748  	return json.Marshal(objectMap)
 32749  }
 32750  
 32751  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNPacketCaptureStopParameters.
 32752  func (v *VPNPacketCaptureStopParameters) UnmarshalJSON(data []byte) error {
 32753  	var rawMsg map[string]json.RawMessage
 32754  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32755  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32756  	}
 32757  	for key, val := range rawMsg {
 32758  		var err error
 32759  		switch key {
 32760  		case "sasUrl":
 32761  			err = unpopulate(val, "SasURL", &v.SasURL)
 32762  			delete(rawMsg, key)
 32763  		}
 32764  		if err != nil {
 32765  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32766  		}
 32767  	}
 32768  	return nil
 32769  }
 32770  
 32771  // MarshalJSON implements the json.Marshaller interface for type VPNProfileResponse.
 32772  func (v VPNProfileResponse) MarshalJSON() ([]byte, error) {
 32773  	objectMap := make(map[string]any)
 32774  	populate(objectMap, "profileUrl", v.ProfileURL)
 32775  	return json.Marshal(objectMap)
 32776  }
 32777  
 32778  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNProfileResponse.
 32779  func (v *VPNProfileResponse) UnmarshalJSON(data []byte) error {
 32780  	var rawMsg map[string]json.RawMessage
 32781  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32782  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32783  	}
 32784  	for key, val := range rawMsg {
 32785  		var err error
 32786  		switch key {
 32787  		case "profileUrl":
 32788  			err = unpopulate(val, "ProfileURL", &v.ProfileURL)
 32789  			delete(rawMsg, key)
 32790  		}
 32791  		if err != nil {
 32792  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32793  		}
 32794  	}
 32795  	return nil
 32796  }
 32797  
 32798  // MarshalJSON implements the json.Marshaller interface for type VPNServerConfigRadiusClientRootCertificate.
 32799  func (v VPNServerConfigRadiusClientRootCertificate) MarshalJSON() ([]byte, error) {
 32800  	objectMap := make(map[string]any)
 32801  	populate(objectMap, "name", v.Name)
 32802  	populate(objectMap, "thumbprint", v.Thumbprint)
 32803  	return json.Marshal(objectMap)
 32804  }
 32805  
 32806  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNServerConfigRadiusClientRootCertificate.
 32807  func (v *VPNServerConfigRadiusClientRootCertificate) UnmarshalJSON(data []byte) error {
 32808  	var rawMsg map[string]json.RawMessage
 32809  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32810  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32811  	}
 32812  	for key, val := range rawMsg {
 32813  		var err error
 32814  		switch key {
 32815  		case "name":
 32816  			err = unpopulate(val, "Name", &v.Name)
 32817  			delete(rawMsg, key)
 32818  		case "thumbprint":
 32819  			err = unpopulate(val, "Thumbprint", &v.Thumbprint)
 32820  			delete(rawMsg, key)
 32821  		}
 32822  		if err != nil {
 32823  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32824  		}
 32825  	}
 32826  	return nil
 32827  }
 32828  
 32829  // MarshalJSON implements the json.Marshaller interface for type VPNServerConfigRadiusServerRootCertificate.
 32830  func (v VPNServerConfigRadiusServerRootCertificate) MarshalJSON() ([]byte, error) {
 32831  	objectMap := make(map[string]any)
 32832  	populate(objectMap, "name", v.Name)
 32833  	populate(objectMap, "publicCertData", v.PublicCertData)
 32834  	return json.Marshal(objectMap)
 32835  }
 32836  
 32837  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNServerConfigRadiusServerRootCertificate.
 32838  func (v *VPNServerConfigRadiusServerRootCertificate) UnmarshalJSON(data []byte) error {
 32839  	var rawMsg map[string]json.RawMessage
 32840  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32841  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32842  	}
 32843  	for key, val := range rawMsg {
 32844  		var err error
 32845  		switch key {
 32846  		case "name":
 32847  			err = unpopulate(val, "Name", &v.Name)
 32848  			delete(rawMsg, key)
 32849  		case "publicCertData":
 32850  			err = unpopulate(val, "PublicCertData", &v.PublicCertData)
 32851  			delete(rawMsg, key)
 32852  		}
 32853  		if err != nil {
 32854  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32855  		}
 32856  	}
 32857  	return nil
 32858  }
 32859  
 32860  // MarshalJSON implements the json.Marshaller interface for type VPNServerConfigVPNClientRevokedCertificate.
 32861  func (v VPNServerConfigVPNClientRevokedCertificate) MarshalJSON() ([]byte, error) {
 32862  	objectMap := make(map[string]any)
 32863  	populate(objectMap, "name", v.Name)
 32864  	populate(objectMap, "thumbprint", v.Thumbprint)
 32865  	return json.Marshal(objectMap)
 32866  }
 32867  
 32868  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNServerConfigVPNClientRevokedCertificate.
 32869  func (v *VPNServerConfigVPNClientRevokedCertificate) UnmarshalJSON(data []byte) error {
 32870  	var rawMsg map[string]json.RawMessage
 32871  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32872  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32873  	}
 32874  	for key, val := range rawMsg {
 32875  		var err error
 32876  		switch key {
 32877  		case "name":
 32878  			err = unpopulate(val, "Name", &v.Name)
 32879  			delete(rawMsg, key)
 32880  		case "thumbprint":
 32881  			err = unpopulate(val, "Thumbprint", &v.Thumbprint)
 32882  			delete(rawMsg, key)
 32883  		}
 32884  		if err != nil {
 32885  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32886  		}
 32887  	}
 32888  	return nil
 32889  }
 32890  
 32891  // MarshalJSON implements the json.Marshaller interface for type VPNServerConfigVPNClientRootCertificate.
 32892  func (v VPNServerConfigVPNClientRootCertificate) MarshalJSON() ([]byte, error) {
 32893  	objectMap := make(map[string]any)
 32894  	populate(objectMap, "name", v.Name)
 32895  	populate(objectMap, "publicCertData", v.PublicCertData)
 32896  	return json.Marshal(objectMap)
 32897  }
 32898  
 32899  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNServerConfigVPNClientRootCertificate.
 32900  func (v *VPNServerConfigVPNClientRootCertificate) UnmarshalJSON(data []byte) error {
 32901  	var rawMsg map[string]json.RawMessage
 32902  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32903  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32904  	}
 32905  	for key, val := range rawMsg {
 32906  		var err error
 32907  		switch key {
 32908  		case "name":
 32909  			err = unpopulate(val, "Name", &v.Name)
 32910  			delete(rawMsg, key)
 32911  		case "publicCertData":
 32912  			err = unpopulate(val, "PublicCertData", &v.PublicCertData)
 32913  			delete(rawMsg, key)
 32914  		}
 32915  		if err != nil {
 32916  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32917  		}
 32918  	}
 32919  	return nil
 32920  }
 32921  
 32922  // MarshalJSON implements the json.Marshaller interface for type VPNServerConfiguration.
 32923  func (v VPNServerConfiguration) MarshalJSON() ([]byte, error) {
 32924  	objectMap := make(map[string]any)
 32925  	populate(objectMap, "etag", v.Etag)
 32926  	populate(objectMap, "id", v.ID)
 32927  	populate(objectMap, "location", v.Location)
 32928  	populate(objectMap, "name", v.Name)
 32929  	populate(objectMap, "properties", v.Properties)
 32930  	populate(objectMap, "tags", v.Tags)
 32931  	populate(objectMap, "type", v.Type)
 32932  	return json.Marshal(objectMap)
 32933  }
 32934  
 32935  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNServerConfiguration.
 32936  func (v *VPNServerConfiguration) UnmarshalJSON(data []byte) error {
 32937  	var rawMsg map[string]json.RawMessage
 32938  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32939  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32940  	}
 32941  	for key, val := range rawMsg {
 32942  		var err error
 32943  		switch key {
 32944  		case "etag":
 32945  			err = unpopulate(val, "Etag", &v.Etag)
 32946  			delete(rawMsg, key)
 32947  		case "id":
 32948  			err = unpopulate(val, "ID", &v.ID)
 32949  			delete(rawMsg, key)
 32950  		case "location":
 32951  			err = unpopulate(val, "Location", &v.Location)
 32952  			delete(rawMsg, key)
 32953  		case "name":
 32954  			err = unpopulate(val, "Name", &v.Name)
 32955  			delete(rawMsg, key)
 32956  		case "properties":
 32957  			err = unpopulate(val, "Properties", &v.Properties)
 32958  			delete(rawMsg, key)
 32959  		case "tags":
 32960  			err = unpopulate(val, "Tags", &v.Tags)
 32961  			delete(rawMsg, key)
 32962  		case "type":
 32963  			err = unpopulate(val, "Type", &v.Type)
 32964  			delete(rawMsg, key)
 32965  		}
 32966  		if err != nil {
 32967  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32968  		}
 32969  	}
 32970  	return nil
 32971  }
 32972  
 32973  // MarshalJSON implements the json.Marshaller interface for type VPNServerConfigurationPolicyGroup.
 32974  func (v VPNServerConfigurationPolicyGroup) MarshalJSON() ([]byte, error) {
 32975  	objectMap := make(map[string]any)
 32976  	populate(objectMap, "etag", v.Etag)
 32977  	populate(objectMap, "id", v.ID)
 32978  	populate(objectMap, "name", v.Name)
 32979  	populate(objectMap, "properties", v.Properties)
 32980  	populate(objectMap, "type", v.Type)
 32981  	return json.Marshal(objectMap)
 32982  }
 32983  
 32984  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNServerConfigurationPolicyGroup.
 32985  func (v *VPNServerConfigurationPolicyGroup) UnmarshalJSON(data []byte) error {
 32986  	var rawMsg map[string]json.RawMessage
 32987  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 32988  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 32989  	}
 32990  	for key, val := range rawMsg {
 32991  		var err error
 32992  		switch key {
 32993  		case "etag":
 32994  			err = unpopulate(val, "Etag", &v.Etag)
 32995  			delete(rawMsg, key)
 32996  		case "id":
 32997  			err = unpopulate(val, "ID", &v.ID)
 32998  			delete(rawMsg, key)
 32999  		case "name":
 33000  			err = unpopulate(val, "Name", &v.Name)
 33001  			delete(rawMsg, key)
 33002  		case "properties":
 33003  			err = unpopulate(val, "Properties", &v.Properties)
 33004  			delete(rawMsg, key)
 33005  		case "type":
 33006  			err = unpopulate(val, "Type", &v.Type)
 33007  			delete(rawMsg, key)
 33008  		}
 33009  		if err != nil {
 33010  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33011  		}
 33012  	}
 33013  	return nil
 33014  }
 33015  
 33016  // MarshalJSON implements the json.Marshaller interface for type VPNServerConfigurationPolicyGroupMember.
 33017  func (v VPNServerConfigurationPolicyGroupMember) MarshalJSON() ([]byte, error) {
 33018  	objectMap := make(map[string]any)
 33019  	populate(objectMap, "attributeType", v.AttributeType)
 33020  	populate(objectMap, "attributeValue", v.AttributeValue)
 33021  	populate(objectMap, "name", v.Name)
 33022  	return json.Marshal(objectMap)
 33023  }
 33024  
 33025  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNServerConfigurationPolicyGroupMember.
 33026  func (v *VPNServerConfigurationPolicyGroupMember) UnmarshalJSON(data []byte) error {
 33027  	var rawMsg map[string]json.RawMessage
 33028  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 33029  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33030  	}
 33031  	for key, val := range rawMsg {
 33032  		var err error
 33033  		switch key {
 33034  		case "attributeType":
 33035  			err = unpopulate(val, "AttributeType", &v.AttributeType)
 33036  			delete(rawMsg, key)
 33037  		case "attributeValue":
 33038  			err = unpopulate(val, "AttributeValue", &v.AttributeValue)
 33039  			delete(rawMsg, key)
 33040  		case "name":
 33041  			err = unpopulate(val, "Name", &v.Name)
 33042  			delete(rawMsg, key)
 33043  		}
 33044  		if err != nil {
 33045  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33046  		}
 33047  	}
 33048  	return nil
 33049  }
 33050  
 33051  // MarshalJSON implements the json.Marshaller interface for type VPNServerConfigurationPolicyGroupProperties.
 33052  func (v VPNServerConfigurationPolicyGroupProperties) MarshalJSON() ([]byte, error) {
 33053  	objectMap := make(map[string]any)
 33054  	populate(objectMap, "isDefault", v.IsDefault)
 33055  	populate(objectMap, "p2SConnectionConfigurations", v.P2SConnectionConfigurations)
 33056  	populate(objectMap, "policyMembers", v.PolicyMembers)
 33057  	populate(objectMap, "priority", v.Priority)
 33058  	populate(objectMap, "provisioningState", v.ProvisioningState)
 33059  	return json.Marshal(objectMap)
 33060  }
 33061  
 33062  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNServerConfigurationPolicyGroupProperties.
 33063  func (v *VPNServerConfigurationPolicyGroupProperties) UnmarshalJSON(data []byte) error {
 33064  	var rawMsg map[string]json.RawMessage
 33065  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 33066  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33067  	}
 33068  	for key, val := range rawMsg {
 33069  		var err error
 33070  		switch key {
 33071  		case "isDefault":
 33072  			err = unpopulate(val, "IsDefault", &v.IsDefault)
 33073  			delete(rawMsg, key)
 33074  		case "p2SConnectionConfigurations":
 33075  			err = unpopulate(val, "P2SConnectionConfigurations", &v.P2SConnectionConfigurations)
 33076  			delete(rawMsg, key)
 33077  		case "policyMembers":
 33078  			err = unpopulate(val, "PolicyMembers", &v.PolicyMembers)
 33079  			delete(rawMsg, key)
 33080  		case "priority":
 33081  			err = unpopulate(val, "Priority", &v.Priority)
 33082  			delete(rawMsg, key)
 33083  		case "provisioningState":
 33084  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 33085  			delete(rawMsg, key)
 33086  		}
 33087  		if err != nil {
 33088  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33089  		}
 33090  	}
 33091  	return nil
 33092  }
 33093  
 33094  // MarshalJSON implements the json.Marshaller interface for type VPNServerConfigurationProperties.
 33095  func (v VPNServerConfigurationProperties) MarshalJSON() ([]byte, error) {
 33096  	objectMap := make(map[string]any)
 33097  	populate(objectMap, "aadAuthenticationParameters", v.AADAuthenticationParameters)
 33098  	populate(objectMap, "configurationPolicyGroups", v.ConfigurationPolicyGroups)
 33099  	populate(objectMap, "etag", v.Etag)
 33100  	populate(objectMap, "name", v.Name)
 33101  	populate(objectMap, "p2SVpnGateways", v.P2SVPNGateways)
 33102  	populate(objectMap, "provisioningState", v.ProvisioningState)
 33103  	populate(objectMap, "radiusClientRootCertificates", v.RadiusClientRootCertificates)
 33104  	populate(objectMap, "radiusServerAddress", v.RadiusServerAddress)
 33105  	populate(objectMap, "radiusServerRootCertificates", v.RadiusServerRootCertificates)
 33106  	populate(objectMap, "radiusServerSecret", v.RadiusServerSecret)
 33107  	populate(objectMap, "radiusServers", v.RadiusServers)
 33108  	populate(objectMap, "vpnAuthenticationTypes", v.VPNAuthenticationTypes)
 33109  	populate(objectMap, "vpnClientIpsecPolicies", v.VPNClientIPSecPolicies)
 33110  	populate(objectMap, "vpnClientRevokedCertificates", v.VPNClientRevokedCertificates)
 33111  	populate(objectMap, "vpnClientRootCertificates", v.VPNClientRootCertificates)
 33112  	populate(objectMap, "vpnProtocols", v.VPNProtocols)
 33113  	return json.Marshal(objectMap)
 33114  }
 33115  
 33116  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNServerConfigurationProperties.
 33117  func (v *VPNServerConfigurationProperties) UnmarshalJSON(data []byte) error {
 33118  	var rawMsg map[string]json.RawMessage
 33119  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 33120  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33121  	}
 33122  	for key, val := range rawMsg {
 33123  		var err error
 33124  		switch key {
 33125  		case "aadAuthenticationParameters":
 33126  			err = unpopulate(val, "AADAuthenticationParameters", &v.AADAuthenticationParameters)
 33127  			delete(rawMsg, key)
 33128  		case "configurationPolicyGroups":
 33129  			err = unpopulate(val, "ConfigurationPolicyGroups", &v.ConfigurationPolicyGroups)
 33130  			delete(rawMsg, key)
 33131  		case "etag":
 33132  			err = unpopulate(val, "Etag", &v.Etag)
 33133  			delete(rawMsg, key)
 33134  		case "name":
 33135  			err = unpopulate(val, "Name", &v.Name)
 33136  			delete(rawMsg, key)
 33137  		case "p2SVpnGateways":
 33138  			err = unpopulate(val, "P2SVPNGateways", &v.P2SVPNGateways)
 33139  			delete(rawMsg, key)
 33140  		case "provisioningState":
 33141  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 33142  			delete(rawMsg, key)
 33143  		case "radiusClientRootCertificates":
 33144  			err = unpopulate(val, "RadiusClientRootCertificates", &v.RadiusClientRootCertificates)
 33145  			delete(rawMsg, key)
 33146  		case "radiusServerAddress":
 33147  			err = unpopulate(val, "RadiusServerAddress", &v.RadiusServerAddress)
 33148  			delete(rawMsg, key)
 33149  		case "radiusServerRootCertificates":
 33150  			err = unpopulate(val, "RadiusServerRootCertificates", &v.RadiusServerRootCertificates)
 33151  			delete(rawMsg, key)
 33152  		case "radiusServerSecret":
 33153  			err = unpopulate(val, "RadiusServerSecret", &v.RadiusServerSecret)
 33154  			delete(rawMsg, key)
 33155  		case "radiusServers":
 33156  			err = unpopulate(val, "RadiusServers", &v.RadiusServers)
 33157  			delete(rawMsg, key)
 33158  		case "vpnAuthenticationTypes":
 33159  			err = unpopulate(val, "VPNAuthenticationTypes", &v.VPNAuthenticationTypes)
 33160  			delete(rawMsg, key)
 33161  		case "vpnClientIpsecPolicies":
 33162  			err = unpopulate(val, "VPNClientIPSecPolicies", &v.VPNClientIPSecPolicies)
 33163  			delete(rawMsg, key)
 33164  		case "vpnClientRevokedCertificates":
 33165  			err = unpopulate(val, "VPNClientRevokedCertificates", &v.VPNClientRevokedCertificates)
 33166  			delete(rawMsg, key)
 33167  		case "vpnClientRootCertificates":
 33168  			err = unpopulate(val, "VPNClientRootCertificates", &v.VPNClientRootCertificates)
 33169  			delete(rawMsg, key)
 33170  		case "vpnProtocols":
 33171  			err = unpopulate(val, "VPNProtocols", &v.VPNProtocols)
 33172  			delete(rawMsg, key)
 33173  		}
 33174  		if err != nil {
 33175  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33176  		}
 33177  	}
 33178  	return nil
 33179  }
 33180  
 33181  // MarshalJSON implements the json.Marshaller interface for type VPNServerConfigurationsResponse.
 33182  func (v VPNServerConfigurationsResponse) MarshalJSON() ([]byte, error) {
 33183  	objectMap := make(map[string]any)
 33184  	populate(objectMap, "vpnServerConfigurationResourceIds", v.VPNServerConfigurationResourceIDs)
 33185  	return json.Marshal(objectMap)
 33186  }
 33187  
 33188  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNServerConfigurationsResponse.
 33189  func (v *VPNServerConfigurationsResponse) UnmarshalJSON(data []byte) error {
 33190  	var rawMsg map[string]json.RawMessage
 33191  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 33192  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33193  	}
 33194  	for key, val := range rawMsg {
 33195  		var err error
 33196  		switch key {
 33197  		case "vpnServerConfigurationResourceIds":
 33198  			err = unpopulate(val, "VPNServerConfigurationResourceIDs", &v.VPNServerConfigurationResourceIDs)
 33199  			delete(rawMsg, key)
 33200  		}
 33201  		if err != nil {
 33202  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33203  		}
 33204  	}
 33205  	return nil
 33206  }
 33207  
 33208  // MarshalJSON implements the json.Marshaller interface for type VPNSite.
 33209  func (v VPNSite) MarshalJSON() ([]byte, error) {
 33210  	objectMap := make(map[string]any)
 33211  	populate(objectMap, "etag", v.Etag)
 33212  	populate(objectMap, "id", v.ID)
 33213  	populate(objectMap, "location", v.Location)
 33214  	populate(objectMap, "name", v.Name)
 33215  	populate(objectMap, "properties", v.Properties)
 33216  	populate(objectMap, "tags", v.Tags)
 33217  	populate(objectMap, "type", v.Type)
 33218  	return json.Marshal(objectMap)
 33219  }
 33220  
 33221  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNSite.
 33222  func (v *VPNSite) UnmarshalJSON(data []byte) error {
 33223  	var rawMsg map[string]json.RawMessage
 33224  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 33225  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33226  	}
 33227  	for key, val := range rawMsg {
 33228  		var err error
 33229  		switch key {
 33230  		case "etag":
 33231  			err = unpopulate(val, "Etag", &v.Etag)
 33232  			delete(rawMsg, key)
 33233  		case "id":
 33234  			err = unpopulate(val, "ID", &v.ID)
 33235  			delete(rawMsg, key)
 33236  		case "location":
 33237  			err = unpopulate(val, "Location", &v.Location)
 33238  			delete(rawMsg, key)
 33239  		case "name":
 33240  			err = unpopulate(val, "Name", &v.Name)
 33241  			delete(rawMsg, key)
 33242  		case "properties":
 33243  			err = unpopulate(val, "Properties", &v.Properties)
 33244  			delete(rawMsg, key)
 33245  		case "tags":
 33246  			err = unpopulate(val, "Tags", &v.Tags)
 33247  			delete(rawMsg, key)
 33248  		case "type":
 33249  			err = unpopulate(val, "Type", &v.Type)
 33250  			delete(rawMsg, key)
 33251  		}
 33252  		if err != nil {
 33253  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33254  		}
 33255  	}
 33256  	return nil
 33257  }
 33258  
 33259  // MarshalJSON implements the json.Marshaller interface for type VPNSiteID.
 33260  func (v VPNSiteID) MarshalJSON() ([]byte, error) {
 33261  	objectMap := make(map[string]any)
 33262  	populate(objectMap, "vpnSite", v.VPNSite)
 33263  	return json.Marshal(objectMap)
 33264  }
 33265  
 33266  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNSiteID.
 33267  func (v *VPNSiteID) UnmarshalJSON(data []byte) error {
 33268  	var rawMsg map[string]json.RawMessage
 33269  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 33270  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33271  	}
 33272  	for key, val := range rawMsg {
 33273  		var err error
 33274  		switch key {
 33275  		case "vpnSite":
 33276  			err = unpopulate(val, "VPNSite", &v.VPNSite)
 33277  			delete(rawMsg, key)
 33278  		}
 33279  		if err != nil {
 33280  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33281  		}
 33282  	}
 33283  	return nil
 33284  }
 33285  
 33286  // MarshalJSON implements the json.Marshaller interface for type VPNSiteLink.
 33287  func (v VPNSiteLink) MarshalJSON() ([]byte, error) {
 33288  	objectMap := make(map[string]any)
 33289  	populate(objectMap, "etag", v.Etag)
 33290  	populate(objectMap, "id", v.ID)
 33291  	populate(objectMap, "name", v.Name)
 33292  	populate(objectMap, "properties", v.Properties)
 33293  	populate(objectMap, "type", v.Type)
 33294  	return json.Marshal(objectMap)
 33295  }
 33296  
 33297  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNSiteLink.
 33298  func (v *VPNSiteLink) UnmarshalJSON(data []byte) error {
 33299  	var rawMsg map[string]json.RawMessage
 33300  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 33301  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33302  	}
 33303  	for key, val := range rawMsg {
 33304  		var err error
 33305  		switch key {
 33306  		case "etag":
 33307  			err = unpopulate(val, "Etag", &v.Etag)
 33308  			delete(rawMsg, key)
 33309  		case "id":
 33310  			err = unpopulate(val, "ID", &v.ID)
 33311  			delete(rawMsg, key)
 33312  		case "name":
 33313  			err = unpopulate(val, "Name", &v.Name)
 33314  			delete(rawMsg, key)
 33315  		case "properties":
 33316  			err = unpopulate(val, "Properties", &v.Properties)
 33317  			delete(rawMsg, key)
 33318  		case "type":
 33319  			err = unpopulate(val, "Type", &v.Type)
 33320  			delete(rawMsg, key)
 33321  		}
 33322  		if err != nil {
 33323  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33324  		}
 33325  	}
 33326  	return nil
 33327  }
 33328  
 33329  // MarshalJSON implements the json.Marshaller interface for type VPNSiteLinkConnection.
 33330  func (v VPNSiteLinkConnection) MarshalJSON() ([]byte, error) {
 33331  	objectMap := make(map[string]any)
 33332  	populate(objectMap, "etag", v.Etag)
 33333  	populate(objectMap, "id", v.ID)
 33334  	populate(objectMap, "name", v.Name)
 33335  	populate(objectMap, "properties", v.Properties)
 33336  	populate(objectMap, "type", v.Type)
 33337  	return json.Marshal(objectMap)
 33338  }
 33339  
 33340  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNSiteLinkConnection.
 33341  func (v *VPNSiteLinkConnection) UnmarshalJSON(data []byte) error {
 33342  	var rawMsg map[string]json.RawMessage
 33343  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 33344  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33345  	}
 33346  	for key, val := range rawMsg {
 33347  		var err error
 33348  		switch key {
 33349  		case "etag":
 33350  			err = unpopulate(val, "Etag", &v.Etag)
 33351  			delete(rawMsg, key)
 33352  		case "id":
 33353  			err = unpopulate(val, "ID", &v.ID)
 33354  			delete(rawMsg, key)
 33355  		case "name":
 33356  			err = unpopulate(val, "Name", &v.Name)
 33357  			delete(rawMsg, key)
 33358  		case "properties":
 33359  			err = unpopulate(val, "Properties", &v.Properties)
 33360  			delete(rawMsg, key)
 33361  		case "type":
 33362  			err = unpopulate(val, "Type", &v.Type)
 33363  			delete(rawMsg, key)
 33364  		}
 33365  		if err != nil {
 33366  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33367  		}
 33368  	}
 33369  	return nil
 33370  }
 33371  
 33372  // MarshalJSON implements the json.Marshaller interface for type VPNSiteLinkConnectionProperties.
 33373  func (v VPNSiteLinkConnectionProperties) MarshalJSON() ([]byte, error) {
 33374  	objectMap := make(map[string]any)
 33375  	populate(objectMap, "connectionBandwidth", v.ConnectionBandwidth)
 33376  	populate(objectMap, "connectionStatus", v.ConnectionStatus)
 33377  	populate(objectMap, "dpdTimeoutSeconds", v.DpdTimeoutSeconds)
 33378  	populate(objectMap, "egressBytesTransferred", v.EgressBytesTransferred)
 33379  	populate(objectMap, "egressNatRules", v.EgressNatRules)
 33380  	populate(objectMap, "enableBgp", v.EnableBgp)
 33381  	populate(objectMap, "enableRateLimiting", v.EnableRateLimiting)
 33382  	populate(objectMap, "ipsecPolicies", v.IPSecPolicies)
 33383  	populate(objectMap, "ingressBytesTransferred", v.IngressBytesTransferred)
 33384  	populate(objectMap, "ingressNatRules", v.IngressNatRules)
 33385  	populate(objectMap, "provisioningState", v.ProvisioningState)
 33386  	populate(objectMap, "routingWeight", v.RoutingWeight)
 33387  	populate(objectMap, "sharedKey", v.SharedKey)
 33388  	populate(objectMap, "useLocalAzureIpAddress", v.UseLocalAzureIPAddress)
 33389  	populate(objectMap, "usePolicyBasedTrafficSelectors", v.UsePolicyBasedTrafficSelectors)
 33390  	populate(objectMap, "vpnConnectionProtocolType", v.VPNConnectionProtocolType)
 33391  	populate(objectMap, "vpnGatewayCustomBgpAddresses", v.VPNGatewayCustomBgpAddresses)
 33392  	populate(objectMap, "vpnLinkConnectionMode", v.VPNLinkConnectionMode)
 33393  	populate(objectMap, "vpnSiteLink", v.VPNSiteLink)
 33394  	return json.Marshal(objectMap)
 33395  }
 33396  
 33397  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNSiteLinkConnectionProperties.
 33398  func (v *VPNSiteLinkConnectionProperties) UnmarshalJSON(data []byte) error {
 33399  	var rawMsg map[string]json.RawMessage
 33400  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 33401  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33402  	}
 33403  	for key, val := range rawMsg {
 33404  		var err error
 33405  		switch key {
 33406  		case "connectionBandwidth":
 33407  			err = unpopulate(val, "ConnectionBandwidth", &v.ConnectionBandwidth)
 33408  			delete(rawMsg, key)
 33409  		case "connectionStatus":
 33410  			err = unpopulate(val, "ConnectionStatus", &v.ConnectionStatus)
 33411  			delete(rawMsg, key)
 33412  		case "dpdTimeoutSeconds":
 33413  			err = unpopulate(val, "DpdTimeoutSeconds", &v.DpdTimeoutSeconds)
 33414  			delete(rawMsg, key)
 33415  		case "egressBytesTransferred":
 33416  			err = unpopulate(val, "EgressBytesTransferred", &v.EgressBytesTransferred)
 33417  			delete(rawMsg, key)
 33418  		case "egressNatRules":
 33419  			err = unpopulate(val, "EgressNatRules", &v.EgressNatRules)
 33420  			delete(rawMsg, key)
 33421  		case "enableBgp":
 33422  			err = unpopulate(val, "EnableBgp", &v.EnableBgp)
 33423  			delete(rawMsg, key)
 33424  		case "enableRateLimiting":
 33425  			err = unpopulate(val, "EnableRateLimiting", &v.EnableRateLimiting)
 33426  			delete(rawMsg, key)
 33427  		case "ipsecPolicies":
 33428  			err = unpopulate(val, "IPSecPolicies", &v.IPSecPolicies)
 33429  			delete(rawMsg, key)
 33430  		case "ingressBytesTransferred":
 33431  			err = unpopulate(val, "IngressBytesTransferred", &v.IngressBytesTransferred)
 33432  			delete(rawMsg, key)
 33433  		case "ingressNatRules":
 33434  			err = unpopulate(val, "IngressNatRules", &v.IngressNatRules)
 33435  			delete(rawMsg, key)
 33436  		case "provisioningState":
 33437  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 33438  			delete(rawMsg, key)
 33439  		case "routingWeight":
 33440  			err = unpopulate(val, "RoutingWeight", &v.RoutingWeight)
 33441  			delete(rawMsg, key)
 33442  		case "sharedKey":
 33443  			err = unpopulate(val, "SharedKey", &v.SharedKey)
 33444  			delete(rawMsg, key)
 33445  		case "useLocalAzureIpAddress":
 33446  			err = unpopulate(val, "UseLocalAzureIPAddress", &v.UseLocalAzureIPAddress)
 33447  			delete(rawMsg, key)
 33448  		case "usePolicyBasedTrafficSelectors":
 33449  			err = unpopulate(val, "UsePolicyBasedTrafficSelectors", &v.UsePolicyBasedTrafficSelectors)
 33450  			delete(rawMsg, key)
 33451  		case "vpnConnectionProtocolType":
 33452  			err = unpopulate(val, "VPNConnectionProtocolType", &v.VPNConnectionProtocolType)
 33453  			delete(rawMsg, key)
 33454  		case "vpnGatewayCustomBgpAddresses":
 33455  			err = unpopulate(val, "VPNGatewayCustomBgpAddresses", &v.VPNGatewayCustomBgpAddresses)
 33456  			delete(rawMsg, key)
 33457  		case "vpnLinkConnectionMode":
 33458  			err = unpopulate(val, "VPNLinkConnectionMode", &v.VPNLinkConnectionMode)
 33459  			delete(rawMsg, key)
 33460  		case "vpnSiteLink":
 33461  			err = unpopulate(val, "VPNSiteLink", &v.VPNSiteLink)
 33462  			delete(rawMsg, key)
 33463  		}
 33464  		if err != nil {
 33465  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33466  		}
 33467  	}
 33468  	return nil
 33469  }
 33470  
 33471  // MarshalJSON implements the json.Marshaller interface for type VPNSiteLinkProperties.
 33472  func (v VPNSiteLinkProperties) MarshalJSON() ([]byte, error) {
 33473  	objectMap := make(map[string]any)
 33474  	populate(objectMap, "bgpProperties", v.BgpProperties)
 33475  	populate(objectMap, "fqdn", v.Fqdn)
 33476  	populate(objectMap, "ipAddress", v.IPAddress)
 33477  	populate(objectMap, "linkProperties", v.LinkProperties)
 33478  	populate(objectMap, "provisioningState", v.ProvisioningState)
 33479  	return json.Marshal(objectMap)
 33480  }
 33481  
 33482  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNSiteLinkProperties.
 33483  func (v *VPNSiteLinkProperties) UnmarshalJSON(data []byte) error {
 33484  	var rawMsg map[string]json.RawMessage
 33485  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 33486  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33487  	}
 33488  	for key, val := range rawMsg {
 33489  		var err error
 33490  		switch key {
 33491  		case "bgpProperties":
 33492  			err = unpopulate(val, "BgpProperties", &v.BgpProperties)
 33493  			delete(rawMsg, key)
 33494  		case "fqdn":
 33495  			err = unpopulate(val, "Fqdn", &v.Fqdn)
 33496  			delete(rawMsg, key)
 33497  		case "ipAddress":
 33498  			err = unpopulate(val, "IPAddress", &v.IPAddress)
 33499  			delete(rawMsg, key)
 33500  		case "linkProperties":
 33501  			err = unpopulate(val, "LinkProperties", &v.LinkProperties)
 33502  			delete(rawMsg, key)
 33503  		case "provisioningState":
 33504  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 33505  			delete(rawMsg, key)
 33506  		}
 33507  		if err != nil {
 33508  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33509  		}
 33510  	}
 33511  	return nil
 33512  }
 33513  
 33514  // MarshalJSON implements the json.Marshaller interface for type VPNSiteProperties.
 33515  func (v VPNSiteProperties) MarshalJSON() ([]byte, error) {
 33516  	objectMap := make(map[string]any)
 33517  	populate(objectMap, "addressSpace", v.AddressSpace)
 33518  	populate(objectMap, "bgpProperties", v.BgpProperties)
 33519  	populate(objectMap, "deviceProperties", v.DeviceProperties)
 33520  	populate(objectMap, "ipAddress", v.IPAddress)
 33521  	populate(objectMap, "isSecuritySite", v.IsSecuritySite)
 33522  	populate(objectMap, "o365Policy", v.O365Policy)
 33523  	populate(objectMap, "provisioningState", v.ProvisioningState)
 33524  	populate(objectMap, "siteKey", v.SiteKey)
 33525  	populate(objectMap, "vpnSiteLinks", v.VPNSiteLinks)
 33526  	populate(objectMap, "virtualWan", v.VirtualWan)
 33527  	return json.Marshal(objectMap)
 33528  }
 33529  
 33530  // UnmarshalJSON implements the json.Unmarshaller interface for type VPNSiteProperties.
 33531  func (v *VPNSiteProperties) UnmarshalJSON(data []byte) error {
 33532  	var rawMsg map[string]json.RawMessage
 33533  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 33534  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33535  	}
 33536  	for key, val := range rawMsg {
 33537  		var err error
 33538  		switch key {
 33539  		case "addressSpace":
 33540  			err = unpopulate(val, "AddressSpace", &v.AddressSpace)
 33541  			delete(rawMsg, key)
 33542  		case "bgpProperties":
 33543  			err = unpopulate(val, "BgpProperties", &v.BgpProperties)
 33544  			delete(rawMsg, key)
 33545  		case "deviceProperties":
 33546  			err = unpopulate(val, "DeviceProperties", &v.DeviceProperties)
 33547  			delete(rawMsg, key)
 33548  		case "ipAddress":
 33549  			err = unpopulate(val, "IPAddress", &v.IPAddress)
 33550  			delete(rawMsg, key)
 33551  		case "isSecuritySite":
 33552  			err = unpopulate(val, "IsSecuritySite", &v.IsSecuritySite)
 33553  			delete(rawMsg, key)
 33554  		case "o365Policy":
 33555  			err = unpopulate(val, "O365Policy", &v.O365Policy)
 33556  			delete(rawMsg, key)
 33557  		case "provisioningState":
 33558  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 33559  			delete(rawMsg, key)
 33560  		case "siteKey":
 33561  			err = unpopulate(val, "SiteKey", &v.SiteKey)
 33562  			delete(rawMsg, key)
 33563  		case "vpnSiteLinks":
 33564  			err = unpopulate(val, "VPNSiteLinks", &v.VPNSiteLinks)
 33565  			delete(rawMsg, key)
 33566  		case "virtualWan":
 33567  			err = unpopulate(val, "VirtualWan", &v.VirtualWan)
 33568  			delete(rawMsg, key)
 33569  		}
 33570  		if err != nil {
 33571  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33572  		}
 33573  	}
 33574  	return nil
 33575  }
 33576  
 33577  // MarshalJSON implements the json.Marshaller interface for type VerificationIPFlowParameters.
 33578  func (v VerificationIPFlowParameters) MarshalJSON() ([]byte, error) {
 33579  	objectMap := make(map[string]any)
 33580  	populate(objectMap, "direction", v.Direction)
 33581  	populate(objectMap, "localIPAddress", v.LocalIPAddress)
 33582  	populate(objectMap, "localPort", v.LocalPort)
 33583  	populate(objectMap, "protocol", v.Protocol)
 33584  	populate(objectMap, "remoteIPAddress", v.RemoteIPAddress)
 33585  	populate(objectMap, "remotePort", v.RemotePort)
 33586  	populate(objectMap, "targetNicResourceId", v.TargetNicResourceID)
 33587  	populate(objectMap, "targetResourceId", v.TargetResourceID)
 33588  	return json.Marshal(objectMap)
 33589  }
 33590  
 33591  // UnmarshalJSON implements the json.Unmarshaller interface for type VerificationIPFlowParameters.
 33592  func (v *VerificationIPFlowParameters) UnmarshalJSON(data []byte) error {
 33593  	var rawMsg map[string]json.RawMessage
 33594  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 33595  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33596  	}
 33597  	for key, val := range rawMsg {
 33598  		var err error
 33599  		switch key {
 33600  		case "direction":
 33601  			err = unpopulate(val, "Direction", &v.Direction)
 33602  			delete(rawMsg, key)
 33603  		case "localIPAddress":
 33604  			err = unpopulate(val, "LocalIPAddress", &v.LocalIPAddress)
 33605  			delete(rawMsg, key)
 33606  		case "localPort":
 33607  			err = unpopulate(val, "LocalPort", &v.LocalPort)
 33608  			delete(rawMsg, key)
 33609  		case "protocol":
 33610  			err = unpopulate(val, "Protocol", &v.Protocol)
 33611  			delete(rawMsg, key)
 33612  		case "remoteIPAddress":
 33613  			err = unpopulate(val, "RemoteIPAddress", &v.RemoteIPAddress)
 33614  			delete(rawMsg, key)
 33615  		case "remotePort":
 33616  			err = unpopulate(val, "RemotePort", &v.RemotePort)
 33617  			delete(rawMsg, key)
 33618  		case "targetNicResourceId":
 33619  			err = unpopulate(val, "TargetNicResourceID", &v.TargetNicResourceID)
 33620  			delete(rawMsg, key)
 33621  		case "targetResourceId":
 33622  			err = unpopulate(val, "TargetResourceID", &v.TargetResourceID)
 33623  			delete(rawMsg, key)
 33624  		}
 33625  		if err != nil {
 33626  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33627  		}
 33628  	}
 33629  	return nil
 33630  }
 33631  
 33632  // MarshalJSON implements the json.Marshaller interface for type VerificationIPFlowResult.
 33633  func (v VerificationIPFlowResult) MarshalJSON() ([]byte, error) {
 33634  	objectMap := make(map[string]any)
 33635  	populate(objectMap, "access", v.Access)
 33636  	populate(objectMap, "ruleName", v.RuleName)
 33637  	return json.Marshal(objectMap)
 33638  }
 33639  
 33640  // UnmarshalJSON implements the json.Unmarshaller interface for type VerificationIPFlowResult.
 33641  func (v *VerificationIPFlowResult) UnmarshalJSON(data []byte) error {
 33642  	var rawMsg map[string]json.RawMessage
 33643  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 33644  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33645  	}
 33646  	for key, val := range rawMsg {
 33647  		var err error
 33648  		switch key {
 33649  		case "access":
 33650  			err = unpopulate(val, "Access", &v.Access)
 33651  			delete(rawMsg, key)
 33652  		case "ruleName":
 33653  			err = unpopulate(val, "RuleName", &v.RuleName)
 33654  			delete(rawMsg, key)
 33655  		}
 33656  		if err != nil {
 33657  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33658  		}
 33659  	}
 33660  	return nil
 33661  }
 33662  
 33663  // MarshalJSON implements the json.Marshaller interface for type VerifierWorkspace.
 33664  func (v VerifierWorkspace) MarshalJSON() ([]byte, error) {
 33665  	objectMap := make(map[string]any)
 33666  	populate(objectMap, "id", v.ID)
 33667  	populate(objectMap, "location", v.Location)
 33668  	populate(objectMap, "name", v.Name)
 33669  	populate(objectMap, "properties", v.Properties)
 33670  	populate(objectMap, "systemData", v.SystemData)
 33671  	populate(objectMap, "tags", v.Tags)
 33672  	populate(objectMap, "type", v.Type)
 33673  	return json.Marshal(objectMap)
 33674  }
 33675  
 33676  // UnmarshalJSON implements the json.Unmarshaller interface for type VerifierWorkspace.
 33677  func (v *VerifierWorkspace) UnmarshalJSON(data []byte) error {
 33678  	var rawMsg map[string]json.RawMessage
 33679  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 33680  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33681  	}
 33682  	for key, val := range rawMsg {
 33683  		var err error
 33684  		switch key {
 33685  		case "id":
 33686  			err = unpopulate(val, "ID", &v.ID)
 33687  			delete(rawMsg, key)
 33688  		case "location":
 33689  			err = unpopulate(val, "Location", &v.Location)
 33690  			delete(rawMsg, key)
 33691  		case "name":
 33692  			err = unpopulate(val, "Name", &v.Name)
 33693  			delete(rawMsg, key)
 33694  		case "properties":
 33695  			err = unpopulate(val, "Properties", &v.Properties)
 33696  			delete(rawMsg, key)
 33697  		case "systemData":
 33698  			err = unpopulate(val, "SystemData", &v.SystemData)
 33699  			delete(rawMsg, key)
 33700  		case "tags":
 33701  			err = unpopulate(val, "Tags", &v.Tags)
 33702  			delete(rawMsg, key)
 33703  		case "type":
 33704  			err = unpopulate(val, "Type", &v.Type)
 33705  			delete(rawMsg, key)
 33706  		}
 33707  		if err != nil {
 33708  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33709  		}
 33710  	}
 33711  	return nil
 33712  }
 33713  
 33714  // MarshalJSON implements the json.Marshaller interface for type VerifierWorkspaceListResult.
 33715  func (v VerifierWorkspaceListResult) MarshalJSON() ([]byte, error) {
 33716  	objectMap := make(map[string]any)
 33717  	populate(objectMap, "nextLink", v.NextLink)
 33718  	populate(objectMap, "value", v.Value)
 33719  	return json.Marshal(objectMap)
 33720  }
 33721  
 33722  // UnmarshalJSON implements the json.Unmarshaller interface for type VerifierWorkspaceListResult.
 33723  func (v *VerifierWorkspaceListResult) UnmarshalJSON(data []byte) error {
 33724  	var rawMsg map[string]json.RawMessage
 33725  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 33726  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33727  	}
 33728  	for key, val := range rawMsg {
 33729  		var err error
 33730  		switch key {
 33731  		case "nextLink":
 33732  			err = unpopulate(val, "NextLink", &v.NextLink)
 33733  			delete(rawMsg, key)
 33734  		case "value":
 33735  			err = unpopulate(val, "Value", &v.Value)
 33736  			delete(rawMsg, key)
 33737  		}
 33738  		if err != nil {
 33739  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33740  		}
 33741  	}
 33742  	return nil
 33743  }
 33744  
 33745  // MarshalJSON implements the json.Marshaller interface for type VerifierWorkspaceProperties.
 33746  func (v VerifierWorkspaceProperties) MarshalJSON() ([]byte, error) {
 33747  	objectMap := make(map[string]any)
 33748  	populate(objectMap, "description", v.Description)
 33749  	populate(objectMap, "provisioningState", v.ProvisioningState)
 33750  	return json.Marshal(objectMap)
 33751  }
 33752  
 33753  // UnmarshalJSON implements the json.Unmarshaller interface for type VerifierWorkspaceProperties.
 33754  func (v *VerifierWorkspaceProperties) UnmarshalJSON(data []byte) error {
 33755  	var rawMsg map[string]json.RawMessage
 33756  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 33757  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33758  	}
 33759  	for key, val := range rawMsg {
 33760  		var err error
 33761  		switch key {
 33762  		case "description":
 33763  			err = unpopulate(val, "Description", &v.Description)
 33764  			delete(rawMsg, key)
 33765  		case "provisioningState":
 33766  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 33767  			delete(rawMsg, key)
 33768  		}
 33769  		if err != nil {
 33770  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33771  		}
 33772  	}
 33773  	return nil
 33774  }
 33775  
 33776  // MarshalJSON implements the json.Marshaller interface for type VerifierWorkspaceUpdate.
 33777  func (v VerifierWorkspaceUpdate) MarshalJSON() ([]byte, error) {
 33778  	objectMap := make(map[string]any)
 33779  	populate(objectMap, "properties", v.Properties)
 33780  	populate(objectMap, "tags", v.Tags)
 33781  	return json.Marshal(objectMap)
 33782  }
 33783  
 33784  // UnmarshalJSON implements the json.Unmarshaller interface for type VerifierWorkspaceUpdate.
 33785  func (v *VerifierWorkspaceUpdate) UnmarshalJSON(data []byte) error {
 33786  	var rawMsg map[string]json.RawMessage
 33787  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 33788  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33789  	}
 33790  	for key, val := range rawMsg {
 33791  		var err error
 33792  		switch key {
 33793  		case "properties":
 33794  			err = unpopulate(val, "Properties", &v.Properties)
 33795  			delete(rawMsg, key)
 33796  		case "tags":
 33797  			err = unpopulate(val, "Tags", &v.Tags)
 33798  			delete(rawMsg, key)
 33799  		}
 33800  		if err != nil {
 33801  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33802  		}
 33803  	}
 33804  	return nil
 33805  }
 33806  
 33807  // MarshalJSON implements the json.Marshaller interface for type VerifierWorkspaceUpdateProperties.
 33808  func (v VerifierWorkspaceUpdateProperties) MarshalJSON() ([]byte, error) {
 33809  	objectMap := make(map[string]any)
 33810  	populate(objectMap, "description", v.Description)
 33811  	return json.Marshal(objectMap)
 33812  }
 33813  
 33814  // UnmarshalJSON implements the json.Unmarshaller interface for type VerifierWorkspaceUpdateProperties.
 33815  func (v *VerifierWorkspaceUpdateProperties) UnmarshalJSON(data []byte) error {
 33816  	var rawMsg map[string]json.RawMessage
 33817  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 33818  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33819  	}
 33820  	for key, val := range rawMsg {
 33821  		var err error
 33822  		switch key {
 33823  		case "description":
 33824  			err = unpopulate(val, "Description", &v.Description)
 33825  			delete(rawMsg, key)
 33826  		}
 33827  		if err != nil {
 33828  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33829  		}
 33830  	}
 33831  	return nil
 33832  }
 33833  
 33834  // MarshalJSON implements the json.Marshaller interface for type VirtualAppliance.
 33835  func (v VirtualAppliance) MarshalJSON() ([]byte, error) {
 33836  	objectMap := make(map[string]any)
 33837  	populate(objectMap, "etag", v.Etag)
 33838  	populate(objectMap, "id", v.ID)
 33839  	populate(objectMap, "identity", v.Identity)
 33840  	populate(objectMap, "location", v.Location)
 33841  	populate(objectMap, "name", v.Name)
 33842  	populate(objectMap, "properties", v.Properties)
 33843  	populate(objectMap, "tags", v.Tags)
 33844  	populate(objectMap, "type", v.Type)
 33845  	return json.Marshal(objectMap)
 33846  }
 33847  
 33848  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualAppliance.
 33849  func (v *VirtualAppliance) UnmarshalJSON(data []byte) error {
 33850  	var rawMsg map[string]json.RawMessage
 33851  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 33852  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33853  	}
 33854  	for key, val := range rawMsg {
 33855  		var err error
 33856  		switch key {
 33857  		case "etag":
 33858  			err = unpopulate(val, "Etag", &v.Etag)
 33859  			delete(rawMsg, key)
 33860  		case "id":
 33861  			err = unpopulate(val, "ID", &v.ID)
 33862  			delete(rawMsg, key)
 33863  		case "identity":
 33864  			err = unpopulate(val, "Identity", &v.Identity)
 33865  			delete(rawMsg, key)
 33866  		case "location":
 33867  			err = unpopulate(val, "Location", &v.Location)
 33868  			delete(rawMsg, key)
 33869  		case "name":
 33870  			err = unpopulate(val, "Name", &v.Name)
 33871  			delete(rawMsg, key)
 33872  		case "properties":
 33873  			err = unpopulate(val, "Properties", &v.Properties)
 33874  			delete(rawMsg, key)
 33875  		case "tags":
 33876  			err = unpopulate(val, "Tags", &v.Tags)
 33877  			delete(rawMsg, key)
 33878  		case "type":
 33879  			err = unpopulate(val, "Type", &v.Type)
 33880  			delete(rawMsg, key)
 33881  		}
 33882  		if err != nil {
 33883  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33884  		}
 33885  	}
 33886  	return nil
 33887  }
 33888  
 33889  // MarshalJSON implements the json.Marshaller interface for type VirtualApplianceAdditionalNicProperties.
 33890  func (v VirtualApplianceAdditionalNicProperties) MarshalJSON() ([]byte, error) {
 33891  	objectMap := make(map[string]any)
 33892  	populate(objectMap, "hasPublicIp", v.HasPublicIP)
 33893  	populate(objectMap, "name", v.Name)
 33894  	return json.Marshal(objectMap)
 33895  }
 33896  
 33897  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualApplianceAdditionalNicProperties.
 33898  func (v *VirtualApplianceAdditionalNicProperties) UnmarshalJSON(data []byte) error {
 33899  	var rawMsg map[string]json.RawMessage
 33900  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 33901  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33902  	}
 33903  	for key, val := range rawMsg {
 33904  		var err error
 33905  		switch key {
 33906  		case "hasPublicIp":
 33907  			err = unpopulate(val, "HasPublicIP", &v.HasPublicIP)
 33908  			delete(rawMsg, key)
 33909  		case "name":
 33910  			err = unpopulate(val, "Name", &v.Name)
 33911  			delete(rawMsg, key)
 33912  		}
 33913  		if err != nil {
 33914  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33915  		}
 33916  	}
 33917  	return nil
 33918  }
 33919  
 33920  // MarshalJSON implements the json.Marshaller interface for type VirtualApplianceConnection.
 33921  func (v VirtualApplianceConnection) MarshalJSON() ([]byte, error) {
 33922  	objectMap := make(map[string]any)
 33923  	populate(objectMap, "id", v.ID)
 33924  	populate(objectMap, "name", v.Name)
 33925  	populate(objectMap, "properties", v.Properties)
 33926  	return json.Marshal(objectMap)
 33927  }
 33928  
 33929  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualApplianceConnection.
 33930  func (v *VirtualApplianceConnection) UnmarshalJSON(data []byte) error {
 33931  	var rawMsg map[string]json.RawMessage
 33932  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 33933  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33934  	}
 33935  	for key, val := range rawMsg {
 33936  		var err error
 33937  		switch key {
 33938  		case "id":
 33939  			err = unpopulate(val, "ID", &v.ID)
 33940  			delete(rawMsg, key)
 33941  		case "name":
 33942  			err = unpopulate(val, "Name", &v.Name)
 33943  			delete(rawMsg, key)
 33944  		case "properties":
 33945  			err = unpopulate(val, "Properties", &v.Properties)
 33946  			delete(rawMsg, key)
 33947  		}
 33948  		if err != nil {
 33949  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33950  		}
 33951  	}
 33952  	return nil
 33953  }
 33954  
 33955  // MarshalJSON implements the json.Marshaller interface for type VirtualApplianceConnectionList.
 33956  func (v VirtualApplianceConnectionList) MarshalJSON() ([]byte, error) {
 33957  	objectMap := make(map[string]any)
 33958  	populate(objectMap, "nextLink", v.NextLink)
 33959  	populate(objectMap, "value", v.Value)
 33960  	return json.Marshal(objectMap)
 33961  }
 33962  
 33963  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualApplianceConnectionList.
 33964  func (v *VirtualApplianceConnectionList) UnmarshalJSON(data []byte) error {
 33965  	var rawMsg map[string]json.RawMessage
 33966  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 33967  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33968  	}
 33969  	for key, val := range rawMsg {
 33970  		var err error
 33971  		switch key {
 33972  		case "nextLink":
 33973  			err = unpopulate(val, "NextLink", &v.NextLink)
 33974  			delete(rawMsg, key)
 33975  		case "value":
 33976  			err = unpopulate(val, "Value", &v.Value)
 33977  			delete(rawMsg, key)
 33978  		}
 33979  		if err != nil {
 33980  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 33981  		}
 33982  	}
 33983  	return nil
 33984  }
 33985  
 33986  // MarshalJSON implements the json.Marshaller interface for type VirtualApplianceConnectionProperties.
 33987  func (v VirtualApplianceConnectionProperties) MarshalJSON() ([]byte, error) {
 33988  	objectMap := make(map[string]any)
 33989  	populate(objectMap, "asn", v.Asn)
 33990  	populate(objectMap, "bgpPeerAddress", v.BgpPeerAddress)
 33991  	populate(objectMap, "enableInternetSecurity", v.EnableInternetSecurity)
 33992  	populate(objectMap, "name", v.Name)
 33993  	populate(objectMap, "provisioningState", v.ProvisioningState)
 33994  	populate(objectMap, "routingConfiguration", v.RoutingConfiguration)
 33995  	populate(objectMap, "tunnelIdentifier", v.TunnelIdentifier)
 33996  	return json.Marshal(objectMap)
 33997  }
 33998  
 33999  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualApplianceConnectionProperties.
 34000  func (v *VirtualApplianceConnectionProperties) UnmarshalJSON(data []byte) error {
 34001  	var rawMsg map[string]json.RawMessage
 34002  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 34003  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34004  	}
 34005  	for key, val := range rawMsg {
 34006  		var err error
 34007  		switch key {
 34008  		case "asn":
 34009  			err = unpopulate(val, "Asn", &v.Asn)
 34010  			delete(rawMsg, key)
 34011  		case "bgpPeerAddress":
 34012  			err = unpopulate(val, "BgpPeerAddress", &v.BgpPeerAddress)
 34013  			delete(rawMsg, key)
 34014  		case "enableInternetSecurity":
 34015  			err = unpopulate(val, "EnableInternetSecurity", &v.EnableInternetSecurity)
 34016  			delete(rawMsg, key)
 34017  		case "name":
 34018  			err = unpopulate(val, "Name", &v.Name)
 34019  			delete(rawMsg, key)
 34020  		case "provisioningState":
 34021  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 34022  			delete(rawMsg, key)
 34023  		case "routingConfiguration":
 34024  			err = unpopulate(val, "RoutingConfiguration", &v.RoutingConfiguration)
 34025  			delete(rawMsg, key)
 34026  		case "tunnelIdentifier":
 34027  			err = unpopulate(val, "TunnelIdentifier", &v.TunnelIdentifier)
 34028  			delete(rawMsg, key)
 34029  		}
 34030  		if err != nil {
 34031  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34032  		}
 34033  	}
 34034  	return nil
 34035  }
 34036  
 34037  // MarshalJSON implements the json.Marshaller interface for type VirtualApplianceIPConfiguration.
 34038  func (v VirtualApplianceIPConfiguration) MarshalJSON() ([]byte, error) {
 34039  	objectMap := make(map[string]any)
 34040  	populate(objectMap, "name", v.Name)
 34041  	populate(objectMap, "properties", v.Properties)
 34042  	return json.Marshal(objectMap)
 34043  }
 34044  
 34045  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualApplianceIPConfiguration.
 34046  func (v *VirtualApplianceIPConfiguration) UnmarshalJSON(data []byte) error {
 34047  	var rawMsg map[string]json.RawMessage
 34048  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 34049  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34050  	}
 34051  	for key, val := range rawMsg {
 34052  		var err error
 34053  		switch key {
 34054  		case "name":
 34055  			err = unpopulate(val, "Name", &v.Name)
 34056  			delete(rawMsg, key)
 34057  		case "properties":
 34058  			err = unpopulate(val, "Properties", &v.Properties)
 34059  			delete(rawMsg, key)
 34060  		}
 34061  		if err != nil {
 34062  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34063  		}
 34064  	}
 34065  	return nil
 34066  }
 34067  
 34068  // MarshalJSON implements the json.Marshaller interface for type VirtualApplianceIPConfigurationProperties.
 34069  func (v VirtualApplianceIPConfigurationProperties) MarshalJSON() ([]byte, error) {
 34070  	objectMap := make(map[string]any)
 34071  	populate(objectMap, "primary", v.Primary)
 34072  	return json.Marshal(objectMap)
 34073  }
 34074  
 34075  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualApplianceIPConfigurationProperties.
 34076  func (v *VirtualApplianceIPConfigurationProperties) UnmarshalJSON(data []byte) error {
 34077  	var rawMsg map[string]json.RawMessage
 34078  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 34079  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34080  	}
 34081  	for key, val := range rawMsg {
 34082  		var err error
 34083  		switch key {
 34084  		case "primary":
 34085  			err = unpopulate(val, "Primary", &v.Primary)
 34086  			delete(rawMsg, key)
 34087  		}
 34088  		if err != nil {
 34089  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34090  		}
 34091  	}
 34092  	return nil
 34093  }
 34094  
 34095  // MarshalJSON implements the json.Marshaller interface for type VirtualApplianceInstanceIDs.
 34096  func (v VirtualApplianceInstanceIDs) MarshalJSON() ([]byte, error) {
 34097  	objectMap := make(map[string]any)
 34098  	populate(objectMap, "instanceIds", v.InstanceIDs)
 34099  	return json.Marshal(objectMap)
 34100  }
 34101  
 34102  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualApplianceInstanceIDs.
 34103  func (v *VirtualApplianceInstanceIDs) UnmarshalJSON(data []byte) error {
 34104  	var rawMsg map[string]json.RawMessage
 34105  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 34106  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34107  	}
 34108  	for key, val := range rawMsg {
 34109  		var err error
 34110  		switch key {
 34111  		case "instanceIds":
 34112  			err = unpopulate(val, "InstanceIDs", &v.InstanceIDs)
 34113  			delete(rawMsg, key)
 34114  		}
 34115  		if err != nil {
 34116  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34117  		}
 34118  	}
 34119  	return nil
 34120  }
 34121  
 34122  // MarshalJSON implements the json.Marshaller interface for type VirtualApplianceListResult.
 34123  func (v VirtualApplianceListResult) MarshalJSON() ([]byte, error) {
 34124  	objectMap := make(map[string]any)
 34125  	populate(objectMap, "nextLink", v.NextLink)
 34126  	populate(objectMap, "value", v.Value)
 34127  	return json.Marshal(objectMap)
 34128  }
 34129  
 34130  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualApplianceListResult.
 34131  func (v *VirtualApplianceListResult) UnmarshalJSON(data []byte) error {
 34132  	var rawMsg map[string]json.RawMessage
 34133  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 34134  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34135  	}
 34136  	for key, val := range rawMsg {
 34137  		var err error
 34138  		switch key {
 34139  		case "nextLink":
 34140  			err = unpopulate(val, "NextLink", &v.NextLink)
 34141  			delete(rawMsg, key)
 34142  		case "value":
 34143  			err = unpopulate(val, "Value", &v.Value)
 34144  			delete(rawMsg, key)
 34145  		}
 34146  		if err != nil {
 34147  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34148  		}
 34149  	}
 34150  	return nil
 34151  }
 34152  
 34153  // MarshalJSON implements the json.Marshaller interface for type VirtualApplianceNetworkInterfaceConfiguration.
 34154  func (v VirtualApplianceNetworkInterfaceConfiguration) MarshalJSON() ([]byte, error) {
 34155  	objectMap := make(map[string]any)
 34156  	populate(objectMap, "type", v.NicType)
 34157  	populate(objectMap, "properties", v.Properties)
 34158  	return json.Marshal(objectMap)
 34159  }
 34160  
 34161  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualApplianceNetworkInterfaceConfiguration.
 34162  func (v *VirtualApplianceNetworkInterfaceConfiguration) UnmarshalJSON(data []byte) error {
 34163  	var rawMsg map[string]json.RawMessage
 34164  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 34165  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34166  	}
 34167  	for key, val := range rawMsg {
 34168  		var err error
 34169  		switch key {
 34170  		case "type":
 34171  			err = unpopulate(val, "NicType", &v.NicType)
 34172  			delete(rawMsg, key)
 34173  		case "properties":
 34174  			err = unpopulate(val, "Properties", &v.Properties)
 34175  			delete(rawMsg, key)
 34176  		}
 34177  		if err != nil {
 34178  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34179  		}
 34180  	}
 34181  	return nil
 34182  }
 34183  
 34184  // MarshalJSON implements the json.Marshaller interface for type VirtualApplianceNetworkInterfaceConfigurationProperties.
 34185  func (v VirtualApplianceNetworkInterfaceConfigurationProperties) MarshalJSON() ([]byte, error) {
 34186  	objectMap := make(map[string]any)
 34187  	populate(objectMap, "ipConfigurations", v.IPConfigurations)
 34188  	return json.Marshal(objectMap)
 34189  }
 34190  
 34191  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualApplianceNetworkInterfaceConfigurationProperties.
 34192  func (v *VirtualApplianceNetworkInterfaceConfigurationProperties) UnmarshalJSON(data []byte) error {
 34193  	var rawMsg map[string]json.RawMessage
 34194  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 34195  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34196  	}
 34197  	for key, val := range rawMsg {
 34198  		var err error
 34199  		switch key {
 34200  		case "ipConfigurations":
 34201  			err = unpopulate(val, "IPConfigurations", &v.IPConfigurations)
 34202  			delete(rawMsg, key)
 34203  		}
 34204  		if err != nil {
 34205  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34206  		}
 34207  	}
 34208  	return nil
 34209  }
 34210  
 34211  // MarshalJSON implements the json.Marshaller interface for type VirtualApplianceNicProperties.
 34212  func (v VirtualApplianceNicProperties) MarshalJSON() ([]byte, error) {
 34213  	objectMap := make(map[string]any)
 34214  	populate(objectMap, "instanceName", v.InstanceName)
 34215  	populate(objectMap, "name", v.Name)
 34216  	populate(objectMap, "nicType", v.NicType)
 34217  	populate(objectMap, "privateIpAddress", v.PrivateIPAddress)
 34218  	populate(objectMap, "publicIpAddress", v.PublicIPAddress)
 34219  	return json.Marshal(objectMap)
 34220  }
 34221  
 34222  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualApplianceNicProperties.
 34223  func (v *VirtualApplianceNicProperties) UnmarshalJSON(data []byte) error {
 34224  	var rawMsg map[string]json.RawMessage
 34225  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 34226  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34227  	}
 34228  	for key, val := range rawMsg {
 34229  		var err error
 34230  		switch key {
 34231  		case "instanceName":
 34232  			err = unpopulate(val, "InstanceName", &v.InstanceName)
 34233  			delete(rawMsg, key)
 34234  		case "name":
 34235  			err = unpopulate(val, "Name", &v.Name)
 34236  			delete(rawMsg, key)
 34237  		case "nicType":
 34238  			err = unpopulate(val, "NicType", &v.NicType)
 34239  			delete(rawMsg, key)
 34240  		case "privateIpAddress":
 34241  			err = unpopulate(val, "PrivateIPAddress", &v.PrivateIPAddress)
 34242  			delete(rawMsg, key)
 34243  		case "publicIpAddress":
 34244  			err = unpopulate(val, "PublicIPAddress", &v.PublicIPAddress)
 34245  			delete(rawMsg, key)
 34246  		}
 34247  		if err != nil {
 34248  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34249  		}
 34250  	}
 34251  	return nil
 34252  }
 34253  
 34254  // MarshalJSON implements the json.Marshaller interface for type VirtualAppliancePropertiesFormat.
 34255  func (v VirtualAppliancePropertiesFormat) MarshalJSON() ([]byte, error) {
 34256  	objectMap := make(map[string]any)
 34257  	populate(objectMap, "additionalNics", v.AdditionalNics)
 34258  	populate(objectMap, "addressPrefix", v.AddressPrefix)
 34259  	populate(objectMap, "bootStrapConfigurationBlobs", v.BootStrapConfigurationBlobs)
 34260  	populate(objectMap, "cloudInitConfiguration", v.CloudInitConfiguration)
 34261  	populate(objectMap, "cloudInitConfigurationBlobs", v.CloudInitConfigurationBlobs)
 34262  	populate(objectMap, "delegation", v.Delegation)
 34263  	populate(objectMap, "deploymentType", v.DeploymentType)
 34264  	populate(objectMap, "inboundSecurityRules", v.InboundSecurityRules)
 34265  	populate(objectMap, "internetIngressPublicIps", v.InternetIngressPublicIPs)
 34266  	populate(objectMap, "networkProfile", v.NetworkProfile)
 34267  	populate(objectMap, "nvaSku", v.NvaSKU)
 34268  	populate(objectMap, "partnerManagedResource", v.PartnerManagedResource)
 34269  	populate(objectMap, "provisioningState", v.ProvisioningState)
 34270  	populate(objectMap, "sshPublicKey", v.SSHPublicKey)
 34271  	populate(objectMap, "virtualApplianceAsn", v.VirtualApplianceAsn)
 34272  	populate(objectMap, "virtualApplianceConnections", v.VirtualApplianceConnections)
 34273  	populate(objectMap, "virtualApplianceNics", v.VirtualApplianceNics)
 34274  	populate(objectMap, "virtualApplianceSites", v.VirtualApplianceSites)
 34275  	populate(objectMap, "virtualHub", v.VirtualHub)
 34276  	return json.Marshal(objectMap)
 34277  }
 34278  
 34279  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualAppliancePropertiesFormat.
 34280  func (v *VirtualAppliancePropertiesFormat) UnmarshalJSON(data []byte) error {
 34281  	var rawMsg map[string]json.RawMessage
 34282  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 34283  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34284  	}
 34285  	for key, val := range rawMsg {
 34286  		var err error
 34287  		switch key {
 34288  		case "additionalNics":
 34289  			err = unpopulate(val, "AdditionalNics", &v.AdditionalNics)
 34290  			delete(rawMsg, key)
 34291  		case "addressPrefix":
 34292  			err = unpopulate(val, "AddressPrefix", &v.AddressPrefix)
 34293  			delete(rawMsg, key)
 34294  		case "bootStrapConfigurationBlobs":
 34295  			err = unpopulate(val, "BootStrapConfigurationBlobs", &v.BootStrapConfigurationBlobs)
 34296  			delete(rawMsg, key)
 34297  		case "cloudInitConfiguration":
 34298  			err = unpopulate(val, "CloudInitConfiguration", &v.CloudInitConfiguration)
 34299  			delete(rawMsg, key)
 34300  		case "cloudInitConfigurationBlobs":
 34301  			err = unpopulate(val, "CloudInitConfigurationBlobs", &v.CloudInitConfigurationBlobs)
 34302  			delete(rawMsg, key)
 34303  		case "delegation":
 34304  			err = unpopulate(val, "Delegation", &v.Delegation)
 34305  			delete(rawMsg, key)
 34306  		case "deploymentType":
 34307  			err = unpopulate(val, "DeploymentType", &v.DeploymentType)
 34308  			delete(rawMsg, key)
 34309  		case "inboundSecurityRules":
 34310  			err = unpopulate(val, "InboundSecurityRules", &v.InboundSecurityRules)
 34311  			delete(rawMsg, key)
 34312  		case "internetIngressPublicIps":
 34313  			err = unpopulate(val, "InternetIngressPublicIPs", &v.InternetIngressPublicIPs)
 34314  			delete(rawMsg, key)
 34315  		case "networkProfile":
 34316  			err = unpopulate(val, "NetworkProfile", &v.NetworkProfile)
 34317  			delete(rawMsg, key)
 34318  		case "nvaSku":
 34319  			err = unpopulate(val, "NvaSKU", &v.NvaSKU)
 34320  			delete(rawMsg, key)
 34321  		case "partnerManagedResource":
 34322  			err = unpopulate(val, "PartnerManagedResource", &v.PartnerManagedResource)
 34323  			delete(rawMsg, key)
 34324  		case "provisioningState":
 34325  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 34326  			delete(rawMsg, key)
 34327  		case "sshPublicKey":
 34328  			err = unpopulate(val, "SSHPublicKey", &v.SSHPublicKey)
 34329  			delete(rawMsg, key)
 34330  		case "virtualApplianceAsn":
 34331  			err = unpopulate(val, "VirtualApplianceAsn", &v.VirtualApplianceAsn)
 34332  			delete(rawMsg, key)
 34333  		case "virtualApplianceConnections":
 34334  			err = unpopulate(val, "VirtualApplianceConnections", &v.VirtualApplianceConnections)
 34335  			delete(rawMsg, key)
 34336  		case "virtualApplianceNics":
 34337  			err = unpopulate(val, "VirtualApplianceNics", &v.VirtualApplianceNics)
 34338  			delete(rawMsg, key)
 34339  		case "virtualApplianceSites":
 34340  			err = unpopulate(val, "VirtualApplianceSites", &v.VirtualApplianceSites)
 34341  			delete(rawMsg, key)
 34342  		case "virtualHub":
 34343  			err = unpopulate(val, "VirtualHub", &v.VirtualHub)
 34344  			delete(rawMsg, key)
 34345  		}
 34346  		if err != nil {
 34347  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34348  		}
 34349  	}
 34350  	return nil
 34351  }
 34352  
 34353  // MarshalJSON implements the json.Marshaller interface for type VirtualAppliancePropertiesFormatNetworkProfile.
 34354  func (v VirtualAppliancePropertiesFormatNetworkProfile) MarshalJSON() ([]byte, error) {
 34355  	objectMap := make(map[string]any)
 34356  	populate(objectMap, "networkInterfaceConfigurations", v.NetworkInterfaceConfigurations)
 34357  	return json.Marshal(objectMap)
 34358  }
 34359  
 34360  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualAppliancePropertiesFormatNetworkProfile.
 34361  func (v *VirtualAppliancePropertiesFormatNetworkProfile) UnmarshalJSON(data []byte) error {
 34362  	var rawMsg map[string]json.RawMessage
 34363  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 34364  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34365  	}
 34366  	for key, val := range rawMsg {
 34367  		var err error
 34368  		switch key {
 34369  		case "networkInterfaceConfigurations":
 34370  			err = unpopulate(val, "NetworkInterfaceConfigurations", &v.NetworkInterfaceConfigurations)
 34371  			delete(rawMsg, key)
 34372  		}
 34373  		if err != nil {
 34374  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34375  		}
 34376  	}
 34377  	return nil
 34378  }
 34379  
 34380  // MarshalJSON implements the json.Marshaller interface for type VirtualApplianceSKU.
 34381  func (v VirtualApplianceSKU) MarshalJSON() ([]byte, error) {
 34382  	objectMap := make(map[string]any)
 34383  	populate(objectMap, "etag", v.Etag)
 34384  	populate(objectMap, "id", v.ID)
 34385  	populate(objectMap, "location", v.Location)
 34386  	populate(objectMap, "name", v.Name)
 34387  	populate(objectMap, "properties", v.Properties)
 34388  	populate(objectMap, "tags", v.Tags)
 34389  	populate(objectMap, "type", v.Type)
 34390  	return json.Marshal(objectMap)
 34391  }
 34392  
 34393  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualApplianceSKU.
 34394  func (v *VirtualApplianceSKU) UnmarshalJSON(data []byte) error {
 34395  	var rawMsg map[string]json.RawMessage
 34396  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 34397  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34398  	}
 34399  	for key, val := range rawMsg {
 34400  		var err error
 34401  		switch key {
 34402  		case "etag":
 34403  			err = unpopulate(val, "Etag", &v.Etag)
 34404  			delete(rawMsg, key)
 34405  		case "id":
 34406  			err = unpopulate(val, "ID", &v.ID)
 34407  			delete(rawMsg, key)
 34408  		case "location":
 34409  			err = unpopulate(val, "Location", &v.Location)
 34410  			delete(rawMsg, key)
 34411  		case "name":
 34412  			err = unpopulate(val, "Name", &v.Name)
 34413  			delete(rawMsg, key)
 34414  		case "properties":
 34415  			err = unpopulate(val, "Properties", &v.Properties)
 34416  			delete(rawMsg, key)
 34417  		case "tags":
 34418  			err = unpopulate(val, "Tags", &v.Tags)
 34419  			delete(rawMsg, key)
 34420  		case "type":
 34421  			err = unpopulate(val, "Type", &v.Type)
 34422  			delete(rawMsg, key)
 34423  		}
 34424  		if err != nil {
 34425  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34426  		}
 34427  	}
 34428  	return nil
 34429  }
 34430  
 34431  // MarshalJSON implements the json.Marshaller interface for type VirtualApplianceSKUInstances.
 34432  func (v VirtualApplianceSKUInstances) MarshalJSON() ([]byte, error) {
 34433  	objectMap := make(map[string]any)
 34434  	populate(objectMap, "instanceCount", v.InstanceCount)
 34435  	populate(objectMap, "scaleUnit", v.ScaleUnit)
 34436  	return json.Marshal(objectMap)
 34437  }
 34438  
 34439  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualApplianceSKUInstances.
 34440  func (v *VirtualApplianceSKUInstances) UnmarshalJSON(data []byte) error {
 34441  	var rawMsg map[string]json.RawMessage
 34442  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 34443  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34444  	}
 34445  	for key, val := range rawMsg {
 34446  		var err error
 34447  		switch key {
 34448  		case "instanceCount":
 34449  			err = unpopulate(val, "InstanceCount", &v.InstanceCount)
 34450  			delete(rawMsg, key)
 34451  		case "scaleUnit":
 34452  			err = unpopulate(val, "ScaleUnit", &v.ScaleUnit)
 34453  			delete(rawMsg, key)
 34454  		}
 34455  		if err != nil {
 34456  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34457  		}
 34458  	}
 34459  	return nil
 34460  }
 34461  
 34462  // MarshalJSON implements the json.Marshaller interface for type VirtualApplianceSKUListResult.
 34463  func (v VirtualApplianceSKUListResult) MarshalJSON() ([]byte, error) {
 34464  	objectMap := make(map[string]any)
 34465  	populate(objectMap, "nextLink", v.NextLink)
 34466  	populate(objectMap, "value", v.Value)
 34467  	return json.Marshal(objectMap)
 34468  }
 34469  
 34470  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualApplianceSKUListResult.
 34471  func (v *VirtualApplianceSKUListResult) UnmarshalJSON(data []byte) error {
 34472  	var rawMsg map[string]json.RawMessage
 34473  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 34474  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34475  	}
 34476  	for key, val := range rawMsg {
 34477  		var err error
 34478  		switch key {
 34479  		case "nextLink":
 34480  			err = unpopulate(val, "NextLink", &v.NextLink)
 34481  			delete(rawMsg, key)
 34482  		case "value":
 34483  			err = unpopulate(val, "Value", &v.Value)
 34484  			delete(rawMsg, key)
 34485  		}
 34486  		if err != nil {
 34487  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34488  		}
 34489  	}
 34490  	return nil
 34491  }
 34492  
 34493  // MarshalJSON implements the json.Marshaller interface for type VirtualApplianceSKUProperties.
 34494  func (v VirtualApplianceSKUProperties) MarshalJSON() ([]byte, error) {
 34495  	objectMap := make(map[string]any)
 34496  	populate(objectMap, "bundledScaleUnit", v.BundledScaleUnit)
 34497  	populate(objectMap, "marketPlaceVersion", v.MarketPlaceVersion)
 34498  	populate(objectMap, "vendor", v.Vendor)
 34499  	return json.Marshal(objectMap)
 34500  }
 34501  
 34502  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualApplianceSKUProperties.
 34503  func (v *VirtualApplianceSKUProperties) UnmarshalJSON(data []byte) error {
 34504  	var rawMsg map[string]json.RawMessage
 34505  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 34506  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34507  	}
 34508  	for key, val := range rawMsg {
 34509  		var err error
 34510  		switch key {
 34511  		case "bundledScaleUnit":
 34512  			err = unpopulate(val, "BundledScaleUnit", &v.BundledScaleUnit)
 34513  			delete(rawMsg, key)
 34514  		case "marketPlaceVersion":
 34515  			err = unpopulate(val, "MarketPlaceVersion", &v.MarketPlaceVersion)
 34516  			delete(rawMsg, key)
 34517  		case "vendor":
 34518  			err = unpopulate(val, "Vendor", &v.Vendor)
 34519  			delete(rawMsg, key)
 34520  		}
 34521  		if err != nil {
 34522  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34523  		}
 34524  	}
 34525  	return nil
 34526  }
 34527  
 34528  // MarshalJSON implements the json.Marshaller interface for type VirtualApplianceSKUPropertiesFormat.
 34529  func (v VirtualApplianceSKUPropertiesFormat) MarshalJSON() ([]byte, error) {
 34530  	objectMap := make(map[string]any)
 34531  	populate(objectMap, "availableScaleUnits", v.AvailableScaleUnits)
 34532  	populate(objectMap, "availableVersions", v.AvailableVersions)
 34533  	populate(objectMap, "vendor", v.Vendor)
 34534  	return json.Marshal(objectMap)
 34535  }
 34536  
 34537  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualApplianceSKUPropertiesFormat.
 34538  func (v *VirtualApplianceSKUPropertiesFormat) UnmarshalJSON(data []byte) error {
 34539  	var rawMsg map[string]json.RawMessage
 34540  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 34541  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34542  	}
 34543  	for key, val := range rawMsg {
 34544  		var err error
 34545  		switch key {
 34546  		case "availableScaleUnits":
 34547  			err = unpopulate(val, "AvailableScaleUnits", &v.AvailableScaleUnits)
 34548  			delete(rawMsg, key)
 34549  		case "availableVersions":
 34550  			err = unpopulate(val, "AvailableVersions", &v.AvailableVersions)
 34551  			delete(rawMsg, key)
 34552  		case "vendor":
 34553  			err = unpopulate(val, "Vendor", &v.Vendor)
 34554  			delete(rawMsg, key)
 34555  		}
 34556  		if err != nil {
 34557  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34558  		}
 34559  	}
 34560  	return nil
 34561  }
 34562  
 34563  // MarshalJSON implements the json.Marshaller interface for type VirtualApplianceSite.
 34564  func (v VirtualApplianceSite) MarshalJSON() ([]byte, error) {
 34565  	objectMap := make(map[string]any)
 34566  	populate(objectMap, "etag", v.Etag)
 34567  	populate(objectMap, "id", v.ID)
 34568  	populate(objectMap, "name", v.Name)
 34569  	populate(objectMap, "properties", v.Properties)
 34570  	populate(objectMap, "type", v.Type)
 34571  	return json.Marshal(objectMap)
 34572  }
 34573  
 34574  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualApplianceSite.
 34575  func (v *VirtualApplianceSite) UnmarshalJSON(data []byte) error {
 34576  	var rawMsg map[string]json.RawMessage
 34577  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 34578  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34579  	}
 34580  	for key, val := range rawMsg {
 34581  		var err error
 34582  		switch key {
 34583  		case "etag":
 34584  			err = unpopulate(val, "Etag", &v.Etag)
 34585  			delete(rawMsg, key)
 34586  		case "id":
 34587  			err = unpopulate(val, "ID", &v.ID)
 34588  			delete(rawMsg, key)
 34589  		case "name":
 34590  			err = unpopulate(val, "Name", &v.Name)
 34591  			delete(rawMsg, key)
 34592  		case "properties":
 34593  			err = unpopulate(val, "Properties", &v.Properties)
 34594  			delete(rawMsg, key)
 34595  		case "type":
 34596  			err = unpopulate(val, "Type", &v.Type)
 34597  			delete(rawMsg, key)
 34598  		}
 34599  		if err != nil {
 34600  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34601  		}
 34602  	}
 34603  	return nil
 34604  }
 34605  
 34606  // MarshalJSON implements the json.Marshaller interface for type VirtualApplianceSiteListResult.
 34607  func (v VirtualApplianceSiteListResult) MarshalJSON() ([]byte, error) {
 34608  	objectMap := make(map[string]any)
 34609  	populate(objectMap, "nextLink", v.NextLink)
 34610  	populate(objectMap, "value", v.Value)
 34611  	return json.Marshal(objectMap)
 34612  }
 34613  
 34614  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualApplianceSiteListResult.
 34615  func (v *VirtualApplianceSiteListResult) UnmarshalJSON(data []byte) error {
 34616  	var rawMsg map[string]json.RawMessage
 34617  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 34618  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34619  	}
 34620  	for key, val := range rawMsg {
 34621  		var err error
 34622  		switch key {
 34623  		case "nextLink":
 34624  			err = unpopulate(val, "NextLink", &v.NextLink)
 34625  			delete(rawMsg, key)
 34626  		case "value":
 34627  			err = unpopulate(val, "Value", &v.Value)
 34628  			delete(rawMsg, key)
 34629  		}
 34630  		if err != nil {
 34631  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34632  		}
 34633  	}
 34634  	return nil
 34635  }
 34636  
 34637  // MarshalJSON implements the json.Marshaller interface for type VirtualApplianceSiteProperties.
 34638  func (v VirtualApplianceSiteProperties) MarshalJSON() ([]byte, error) {
 34639  	objectMap := make(map[string]any)
 34640  	populate(objectMap, "addressPrefix", v.AddressPrefix)
 34641  	populate(objectMap, "o365Policy", v.O365Policy)
 34642  	populate(objectMap, "provisioningState", v.ProvisioningState)
 34643  	return json.Marshal(objectMap)
 34644  }
 34645  
 34646  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualApplianceSiteProperties.
 34647  func (v *VirtualApplianceSiteProperties) UnmarshalJSON(data []byte) error {
 34648  	var rawMsg map[string]json.RawMessage
 34649  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 34650  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34651  	}
 34652  	for key, val := range rawMsg {
 34653  		var err error
 34654  		switch key {
 34655  		case "addressPrefix":
 34656  			err = unpopulate(val, "AddressPrefix", &v.AddressPrefix)
 34657  			delete(rawMsg, key)
 34658  		case "o365Policy":
 34659  			err = unpopulate(val, "O365Policy", &v.O365Policy)
 34660  			delete(rawMsg, key)
 34661  		case "provisioningState":
 34662  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 34663  			delete(rawMsg, key)
 34664  		}
 34665  		if err != nil {
 34666  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34667  		}
 34668  	}
 34669  	return nil
 34670  }
 34671  
 34672  // MarshalJSON implements the json.Marshaller interface for type VirtualHub.
 34673  func (v VirtualHub) MarshalJSON() ([]byte, error) {
 34674  	objectMap := make(map[string]any)
 34675  	populate(objectMap, "etag", v.Etag)
 34676  	populate(objectMap, "id", v.ID)
 34677  	populate(objectMap, "kind", v.Kind)
 34678  	populate(objectMap, "location", v.Location)
 34679  	populate(objectMap, "name", v.Name)
 34680  	populate(objectMap, "properties", v.Properties)
 34681  	populate(objectMap, "tags", v.Tags)
 34682  	populate(objectMap, "type", v.Type)
 34683  	return json.Marshal(objectMap)
 34684  }
 34685  
 34686  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualHub.
 34687  func (v *VirtualHub) UnmarshalJSON(data []byte) error {
 34688  	var rawMsg map[string]json.RawMessage
 34689  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 34690  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34691  	}
 34692  	for key, val := range rawMsg {
 34693  		var err error
 34694  		switch key {
 34695  		case "etag":
 34696  			err = unpopulate(val, "Etag", &v.Etag)
 34697  			delete(rawMsg, key)
 34698  		case "id":
 34699  			err = unpopulate(val, "ID", &v.ID)
 34700  			delete(rawMsg, key)
 34701  		case "kind":
 34702  			err = unpopulate(val, "Kind", &v.Kind)
 34703  			delete(rawMsg, key)
 34704  		case "location":
 34705  			err = unpopulate(val, "Location", &v.Location)
 34706  			delete(rawMsg, key)
 34707  		case "name":
 34708  			err = unpopulate(val, "Name", &v.Name)
 34709  			delete(rawMsg, key)
 34710  		case "properties":
 34711  			err = unpopulate(val, "Properties", &v.Properties)
 34712  			delete(rawMsg, key)
 34713  		case "tags":
 34714  			err = unpopulate(val, "Tags", &v.Tags)
 34715  			delete(rawMsg, key)
 34716  		case "type":
 34717  			err = unpopulate(val, "Type", &v.Type)
 34718  			delete(rawMsg, key)
 34719  		}
 34720  		if err != nil {
 34721  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34722  		}
 34723  	}
 34724  	return nil
 34725  }
 34726  
 34727  // MarshalJSON implements the json.Marshaller interface for type VirtualHubEffectiveRoute.
 34728  func (v VirtualHubEffectiveRoute) MarshalJSON() ([]byte, error) {
 34729  	objectMap := make(map[string]any)
 34730  	populate(objectMap, "addressPrefixes", v.AddressPrefixes)
 34731  	populate(objectMap, "asPath", v.AsPath)
 34732  	populate(objectMap, "nextHopType", v.NextHopType)
 34733  	populate(objectMap, "nextHops", v.NextHops)
 34734  	populate(objectMap, "routeOrigin", v.RouteOrigin)
 34735  	return json.Marshal(objectMap)
 34736  }
 34737  
 34738  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualHubEffectiveRoute.
 34739  func (v *VirtualHubEffectiveRoute) UnmarshalJSON(data []byte) error {
 34740  	var rawMsg map[string]json.RawMessage
 34741  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 34742  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34743  	}
 34744  	for key, val := range rawMsg {
 34745  		var err error
 34746  		switch key {
 34747  		case "addressPrefixes":
 34748  			err = unpopulate(val, "AddressPrefixes", &v.AddressPrefixes)
 34749  			delete(rawMsg, key)
 34750  		case "asPath":
 34751  			err = unpopulate(val, "AsPath", &v.AsPath)
 34752  			delete(rawMsg, key)
 34753  		case "nextHopType":
 34754  			err = unpopulate(val, "NextHopType", &v.NextHopType)
 34755  			delete(rawMsg, key)
 34756  		case "nextHops":
 34757  			err = unpopulate(val, "NextHops", &v.NextHops)
 34758  			delete(rawMsg, key)
 34759  		case "routeOrigin":
 34760  			err = unpopulate(val, "RouteOrigin", &v.RouteOrigin)
 34761  			delete(rawMsg, key)
 34762  		}
 34763  		if err != nil {
 34764  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34765  		}
 34766  	}
 34767  	return nil
 34768  }
 34769  
 34770  // MarshalJSON implements the json.Marshaller interface for type VirtualHubEffectiveRouteList.
 34771  func (v VirtualHubEffectiveRouteList) MarshalJSON() ([]byte, error) {
 34772  	objectMap := make(map[string]any)
 34773  	populate(objectMap, "value", v.Value)
 34774  	return json.Marshal(objectMap)
 34775  }
 34776  
 34777  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualHubEffectiveRouteList.
 34778  func (v *VirtualHubEffectiveRouteList) UnmarshalJSON(data []byte) error {
 34779  	var rawMsg map[string]json.RawMessage
 34780  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 34781  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34782  	}
 34783  	for key, val := range rawMsg {
 34784  		var err error
 34785  		switch key {
 34786  		case "value":
 34787  			err = unpopulate(val, "Value", &v.Value)
 34788  			delete(rawMsg, key)
 34789  		}
 34790  		if err != nil {
 34791  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34792  		}
 34793  	}
 34794  	return nil
 34795  }
 34796  
 34797  // MarshalJSON implements the json.Marshaller interface for type VirtualHubID.
 34798  func (v VirtualHubID) MarshalJSON() ([]byte, error) {
 34799  	objectMap := make(map[string]any)
 34800  	populate(objectMap, "id", v.ID)
 34801  	return json.Marshal(objectMap)
 34802  }
 34803  
 34804  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualHubID.
 34805  func (v *VirtualHubID) UnmarshalJSON(data []byte) error {
 34806  	var rawMsg map[string]json.RawMessage
 34807  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 34808  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34809  	}
 34810  	for key, val := range rawMsg {
 34811  		var err error
 34812  		switch key {
 34813  		case "id":
 34814  			err = unpopulate(val, "ID", &v.ID)
 34815  			delete(rawMsg, key)
 34816  		}
 34817  		if err != nil {
 34818  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34819  		}
 34820  	}
 34821  	return nil
 34822  }
 34823  
 34824  // MarshalJSON implements the json.Marshaller interface for type VirtualHubProperties.
 34825  func (v VirtualHubProperties) MarshalJSON() ([]byte, error) {
 34826  	objectMap := make(map[string]any)
 34827  	populate(objectMap, "addressPrefix", v.AddressPrefix)
 34828  	populate(objectMap, "allowBranchToBranchTraffic", v.AllowBranchToBranchTraffic)
 34829  	populate(objectMap, "azureFirewall", v.AzureFirewall)
 34830  	populate(objectMap, "bgpConnections", v.BgpConnections)
 34831  	populate(objectMap, "expressRouteGateway", v.ExpressRouteGateway)
 34832  	populate(objectMap, "hubRoutingPreference", v.HubRoutingPreference)
 34833  	populate(objectMap, "ipConfigurations", v.IPConfigurations)
 34834  	populate(objectMap, "p2SVpnGateway", v.P2SVPNGateway)
 34835  	populate(objectMap, "preferredRoutingGateway", v.PreferredRoutingGateway)
 34836  	populate(objectMap, "provisioningState", v.ProvisioningState)
 34837  	populate(objectMap, "routeMaps", v.RouteMaps)
 34838  	populate(objectMap, "routeTable", v.RouteTable)
 34839  	populate(objectMap, "routingState", v.RoutingState)
 34840  	populate(objectMap, "sku", v.SKU)
 34841  	populate(objectMap, "securityPartnerProvider", v.SecurityPartnerProvider)
 34842  	populate(objectMap, "securityProviderName", v.SecurityProviderName)
 34843  	populate(objectMap, "vpnGateway", v.VPNGateway)
 34844  	populate(objectMap, "virtualHubRouteTableV2s", v.VirtualHubRouteTableV2S)
 34845  	populate(objectMap, "virtualRouterAsn", v.VirtualRouterAsn)
 34846  	populate(objectMap, "virtualRouterAutoScaleConfiguration", v.VirtualRouterAutoScaleConfiguration)
 34847  	populate(objectMap, "virtualRouterIps", v.VirtualRouterIPs)
 34848  	populate(objectMap, "virtualWan", v.VirtualWan)
 34849  	return json.Marshal(objectMap)
 34850  }
 34851  
 34852  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualHubProperties.
 34853  func (v *VirtualHubProperties) UnmarshalJSON(data []byte) error {
 34854  	var rawMsg map[string]json.RawMessage
 34855  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 34856  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34857  	}
 34858  	for key, val := range rawMsg {
 34859  		var err error
 34860  		switch key {
 34861  		case "addressPrefix":
 34862  			err = unpopulate(val, "AddressPrefix", &v.AddressPrefix)
 34863  			delete(rawMsg, key)
 34864  		case "allowBranchToBranchTraffic":
 34865  			err = unpopulate(val, "AllowBranchToBranchTraffic", &v.AllowBranchToBranchTraffic)
 34866  			delete(rawMsg, key)
 34867  		case "azureFirewall":
 34868  			err = unpopulate(val, "AzureFirewall", &v.AzureFirewall)
 34869  			delete(rawMsg, key)
 34870  		case "bgpConnections":
 34871  			err = unpopulate(val, "BgpConnections", &v.BgpConnections)
 34872  			delete(rawMsg, key)
 34873  		case "expressRouteGateway":
 34874  			err = unpopulate(val, "ExpressRouteGateway", &v.ExpressRouteGateway)
 34875  			delete(rawMsg, key)
 34876  		case "hubRoutingPreference":
 34877  			err = unpopulate(val, "HubRoutingPreference", &v.HubRoutingPreference)
 34878  			delete(rawMsg, key)
 34879  		case "ipConfigurations":
 34880  			err = unpopulate(val, "IPConfigurations", &v.IPConfigurations)
 34881  			delete(rawMsg, key)
 34882  		case "p2SVpnGateway":
 34883  			err = unpopulate(val, "P2SVPNGateway", &v.P2SVPNGateway)
 34884  			delete(rawMsg, key)
 34885  		case "preferredRoutingGateway":
 34886  			err = unpopulate(val, "PreferredRoutingGateway", &v.PreferredRoutingGateway)
 34887  			delete(rawMsg, key)
 34888  		case "provisioningState":
 34889  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 34890  			delete(rawMsg, key)
 34891  		case "routeMaps":
 34892  			err = unpopulate(val, "RouteMaps", &v.RouteMaps)
 34893  			delete(rawMsg, key)
 34894  		case "routeTable":
 34895  			err = unpopulate(val, "RouteTable", &v.RouteTable)
 34896  			delete(rawMsg, key)
 34897  		case "routingState":
 34898  			err = unpopulate(val, "RoutingState", &v.RoutingState)
 34899  			delete(rawMsg, key)
 34900  		case "sku":
 34901  			err = unpopulate(val, "SKU", &v.SKU)
 34902  			delete(rawMsg, key)
 34903  		case "securityPartnerProvider":
 34904  			err = unpopulate(val, "SecurityPartnerProvider", &v.SecurityPartnerProvider)
 34905  			delete(rawMsg, key)
 34906  		case "securityProviderName":
 34907  			err = unpopulate(val, "SecurityProviderName", &v.SecurityProviderName)
 34908  			delete(rawMsg, key)
 34909  		case "vpnGateway":
 34910  			err = unpopulate(val, "VPNGateway", &v.VPNGateway)
 34911  			delete(rawMsg, key)
 34912  		case "virtualHubRouteTableV2s":
 34913  			err = unpopulate(val, "VirtualHubRouteTableV2S", &v.VirtualHubRouteTableV2S)
 34914  			delete(rawMsg, key)
 34915  		case "virtualRouterAsn":
 34916  			err = unpopulate(val, "VirtualRouterAsn", &v.VirtualRouterAsn)
 34917  			delete(rawMsg, key)
 34918  		case "virtualRouterAutoScaleConfiguration":
 34919  			err = unpopulate(val, "VirtualRouterAutoScaleConfiguration", &v.VirtualRouterAutoScaleConfiguration)
 34920  			delete(rawMsg, key)
 34921  		case "virtualRouterIps":
 34922  			err = unpopulate(val, "VirtualRouterIPs", &v.VirtualRouterIPs)
 34923  			delete(rawMsg, key)
 34924  		case "virtualWan":
 34925  			err = unpopulate(val, "VirtualWan", &v.VirtualWan)
 34926  			delete(rawMsg, key)
 34927  		}
 34928  		if err != nil {
 34929  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34930  		}
 34931  	}
 34932  	return nil
 34933  }
 34934  
 34935  // MarshalJSON implements the json.Marshaller interface for type VirtualHubRoute.
 34936  func (v VirtualHubRoute) MarshalJSON() ([]byte, error) {
 34937  	objectMap := make(map[string]any)
 34938  	populate(objectMap, "addressPrefixes", v.AddressPrefixes)
 34939  	populate(objectMap, "nextHopIpAddress", v.NextHopIPAddress)
 34940  	return json.Marshal(objectMap)
 34941  }
 34942  
 34943  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualHubRoute.
 34944  func (v *VirtualHubRoute) UnmarshalJSON(data []byte) error {
 34945  	var rawMsg map[string]json.RawMessage
 34946  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 34947  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34948  	}
 34949  	for key, val := range rawMsg {
 34950  		var err error
 34951  		switch key {
 34952  		case "addressPrefixes":
 34953  			err = unpopulate(val, "AddressPrefixes", &v.AddressPrefixes)
 34954  			delete(rawMsg, key)
 34955  		case "nextHopIpAddress":
 34956  			err = unpopulate(val, "NextHopIPAddress", &v.NextHopIPAddress)
 34957  			delete(rawMsg, key)
 34958  		}
 34959  		if err != nil {
 34960  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34961  		}
 34962  	}
 34963  	return nil
 34964  }
 34965  
 34966  // MarshalJSON implements the json.Marshaller interface for type VirtualHubRouteTable.
 34967  func (v VirtualHubRouteTable) MarshalJSON() ([]byte, error) {
 34968  	objectMap := make(map[string]any)
 34969  	populate(objectMap, "routes", v.Routes)
 34970  	return json.Marshal(objectMap)
 34971  }
 34972  
 34973  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualHubRouteTable.
 34974  func (v *VirtualHubRouteTable) UnmarshalJSON(data []byte) error {
 34975  	var rawMsg map[string]json.RawMessage
 34976  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 34977  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34978  	}
 34979  	for key, val := range rawMsg {
 34980  		var err error
 34981  		switch key {
 34982  		case "routes":
 34983  			err = unpopulate(val, "Routes", &v.Routes)
 34984  			delete(rawMsg, key)
 34985  		}
 34986  		if err != nil {
 34987  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 34988  		}
 34989  	}
 34990  	return nil
 34991  }
 34992  
 34993  // MarshalJSON implements the json.Marshaller interface for type VirtualHubRouteTableV2.
 34994  func (v VirtualHubRouteTableV2) MarshalJSON() ([]byte, error) {
 34995  	objectMap := make(map[string]any)
 34996  	populate(objectMap, "etag", v.Etag)
 34997  	populate(objectMap, "id", v.ID)
 34998  	populate(objectMap, "name", v.Name)
 34999  	populate(objectMap, "properties", v.Properties)
 35000  	return json.Marshal(objectMap)
 35001  }
 35002  
 35003  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualHubRouteTableV2.
 35004  func (v *VirtualHubRouteTableV2) UnmarshalJSON(data []byte) error {
 35005  	var rawMsg map[string]json.RawMessage
 35006  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 35007  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35008  	}
 35009  	for key, val := range rawMsg {
 35010  		var err error
 35011  		switch key {
 35012  		case "etag":
 35013  			err = unpopulate(val, "Etag", &v.Etag)
 35014  			delete(rawMsg, key)
 35015  		case "id":
 35016  			err = unpopulate(val, "ID", &v.ID)
 35017  			delete(rawMsg, key)
 35018  		case "name":
 35019  			err = unpopulate(val, "Name", &v.Name)
 35020  			delete(rawMsg, key)
 35021  		case "properties":
 35022  			err = unpopulate(val, "Properties", &v.Properties)
 35023  			delete(rawMsg, key)
 35024  		}
 35025  		if err != nil {
 35026  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35027  		}
 35028  	}
 35029  	return nil
 35030  }
 35031  
 35032  // MarshalJSON implements the json.Marshaller interface for type VirtualHubRouteTableV2Properties.
 35033  func (v VirtualHubRouteTableV2Properties) MarshalJSON() ([]byte, error) {
 35034  	objectMap := make(map[string]any)
 35035  	populate(objectMap, "attachedConnections", v.AttachedConnections)
 35036  	populate(objectMap, "provisioningState", v.ProvisioningState)
 35037  	populate(objectMap, "routes", v.Routes)
 35038  	return json.Marshal(objectMap)
 35039  }
 35040  
 35041  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualHubRouteTableV2Properties.
 35042  func (v *VirtualHubRouteTableV2Properties) UnmarshalJSON(data []byte) error {
 35043  	var rawMsg map[string]json.RawMessage
 35044  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 35045  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35046  	}
 35047  	for key, val := range rawMsg {
 35048  		var err error
 35049  		switch key {
 35050  		case "attachedConnections":
 35051  			err = unpopulate(val, "AttachedConnections", &v.AttachedConnections)
 35052  			delete(rawMsg, key)
 35053  		case "provisioningState":
 35054  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 35055  			delete(rawMsg, key)
 35056  		case "routes":
 35057  			err = unpopulate(val, "Routes", &v.Routes)
 35058  			delete(rawMsg, key)
 35059  		}
 35060  		if err != nil {
 35061  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35062  		}
 35063  	}
 35064  	return nil
 35065  }
 35066  
 35067  // MarshalJSON implements the json.Marshaller interface for type VirtualHubRouteV2.
 35068  func (v VirtualHubRouteV2) MarshalJSON() ([]byte, error) {
 35069  	objectMap := make(map[string]any)
 35070  	populate(objectMap, "destinationType", v.DestinationType)
 35071  	populate(objectMap, "destinations", v.Destinations)
 35072  	populate(objectMap, "nextHopType", v.NextHopType)
 35073  	populate(objectMap, "nextHops", v.NextHops)
 35074  	return json.Marshal(objectMap)
 35075  }
 35076  
 35077  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualHubRouteV2.
 35078  func (v *VirtualHubRouteV2) UnmarshalJSON(data []byte) error {
 35079  	var rawMsg map[string]json.RawMessage
 35080  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 35081  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35082  	}
 35083  	for key, val := range rawMsg {
 35084  		var err error
 35085  		switch key {
 35086  		case "destinationType":
 35087  			err = unpopulate(val, "DestinationType", &v.DestinationType)
 35088  			delete(rawMsg, key)
 35089  		case "destinations":
 35090  			err = unpopulate(val, "Destinations", &v.Destinations)
 35091  			delete(rawMsg, key)
 35092  		case "nextHopType":
 35093  			err = unpopulate(val, "NextHopType", &v.NextHopType)
 35094  			delete(rawMsg, key)
 35095  		case "nextHops":
 35096  			err = unpopulate(val, "NextHops", &v.NextHops)
 35097  			delete(rawMsg, key)
 35098  		}
 35099  		if err != nil {
 35100  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35101  		}
 35102  	}
 35103  	return nil
 35104  }
 35105  
 35106  // MarshalJSON implements the json.Marshaller interface for type VirtualNetwork.
 35107  func (v VirtualNetwork) MarshalJSON() ([]byte, error) {
 35108  	objectMap := make(map[string]any)
 35109  	populate(objectMap, "etag", v.Etag)
 35110  	populate(objectMap, "extendedLocation", v.ExtendedLocation)
 35111  	populate(objectMap, "id", v.ID)
 35112  	populate(objectMap, "location", v.Location)
 35113  	populate(objectMap, "name", v.Name)
 35114  	populate(objectMap, "properties", v.Properties)
 35115  	populate(objectMap, "tags", v.Tags)
 35116  	populate(objectMap, "type", v.Type)
 35117  	return json.Marshal(objectMap)
 35118  }
 35119  
 35120  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetwork.
 35121  func (v *VirtualNetwork) UnmarshalJSON(data []byte) error {
 35122  	var rawMsg map[string]json.RawMessage
 35123  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 35124  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35125  	}
 35126  	for key, val := range rawMsg {
 35127  		var err error
 35128  		switch key {
 35129  		case "etag":
 35130  			err = unpopulate(val, "Etag", &v.Etag)
 35131  			delete(rawMsg, key)
 35132  		case "extendedLocation":
 35133  			err = unpopulate(val, "ExtendedLocation", &v.ExtendedLocation)
 35134  			delete(rawMsg, key)
 35135  		case "id":
 35136  			err = unpopulate(val, "ID", &v.ID)
 35137  			delete(rawMsg, key)
 35138  		case "location":
 35139  			err = unpopulate(val, "Location", &v.Location)
 35140  			delete(rawMsg, key)
 35141  		case "name":
 35142  			err = unpopulate(val, "Name", &v.Name)
 35143  			delete(rawMsg, key)
 35144  		case "properties":
 35145  			err = unpopulate(val, "Properties", &v.Properties)
 35146  			delete(rawMsg, key)
 35147  		case "tags":
 35148  			err = unpopulate(val, "Tags", &v.Tags)
 35149  			delete(rawMsg, key)
 35150  		case "type":
 35151  			err = unpopulate(val, "Type", &v.Type)
 35152  			delete(rawMsg, key)
 35153  		}
 35154  		if err != nil {
 35155  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35156  		}
 35157  	}
 35158  	return nil
 35159  }
 35160  
 35161  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkBgpCommunities.
 35162  func (v VirtualNetworkBgpCommunities) MarshalJSON() ([]byte, error) {
 35163  	objectMap := make(map[string]any)
 35164  	populate(objectMap, "regionalCommunity", v.RegionalCommunity)
 35165  	populate(objectMap, "virtualNetworkCommunity", v.VirtualNetworkCommunity)
 35166  	return json.Marshal(objectMap)
 35167  }
 35168  
 35169  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkBgpCommunities.
 35170  func (v *VirtualNetworkBgpCommunities) UnmarshalJSON(data []byte) error {
 35171  	var rawMsg map[string]json.RawMessage
 35172  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 35173  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35174  	}
 35175  	for key, val := range rawMsg {
 35176  		var err error
 35177  		switch key {
 35178  		case "regionalCommunity":
 35179  			err = unpopulate(val, "RegionalCommunity", &v.RegionalCommunity)
 35180  			delete(rawMsg, key)
 35181  		case "virtualNetworkCommunity":
 35182  			err = unpopulate(val, "VirtualNetworkCommunity", &v.VirtualNetworkCommunity)
 35183  			delete(rawMsg, key)
 35184  		}
 35185  		if err != nil {
 35186  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35187  		}
 35188  	}
 35189  	return nil
 35190  }
 35191  
 35192  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkConnectionGatewayReference.
 35193  func (v VirtualNetworkConnectionGatewayReference) MarshalJSON() ([]byte, error) {
 35194  	objectMap := make(map[string]any)
 35195  	populate(objectMap, "id", v.ID)
 35196  	return json.Marshal(objectMap)
 35197  }
 35198  
 35199  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkConnectionGatewayReference.
 35200  func (v *VirtualNetworkConnectionGatewayReference) UnmarshalJSON(data []byte) error {
 35201  	var rawMsg map[string]json.RawMessage
 35202  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 35203  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35204  	}
 35205  	for key, val := range rawMsg {
 35206  		var err error
 35207  		switch key {
 35208  		case "id":
 35209  			err = unpopulate(val, "ID", &v.ID)
 35210  			delete(rawMsg, key)
 35211  		}
 35212  		if err != nil {
 35213  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35214  		}
 35215  	}
 35216  	return nil
 35217  }
 35218  
 35219  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkDdosProtectionStatusResult.
 35220  func (v VirtualNetworkDdosProtectionStatusResult) MarshalJSON() ([]byte, error) {
 35221  	objectMap := make(map[string]any)
 35222  	populate(objectMap, "nextLink", v.NextLink)
 35223  	populate(objectMap, "value", v.Value)
 35224  	return json.Marshal(objectMap)
 35225  }
 35226  
 35227  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkDdosProtectionStatusResult.
 35228  func (v *VirtualNetworkDdosProtectionStatusResult) UnmarshalJSON(data []byte) error {
 35229  	var rawMsg map[string]json.RawMessage
 35230  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 35231  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35232  	}
 35233  	for key, val := range rawMsg {
 35234  		var err error
 35235  		switch key {
 35236  		case "nextLink":
 35237  			err = unpopulate(val, "NextLink", &v.NextLink)
 35238  			delete(rawMsg, key)
 35239  		case "value":
 35240  			err = unpopulate(val, "Value", &v.Value)
 35241  			delete(rawMsg, key)
 35242  		}
 35243  		if err != nil {
 35244  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35245  		}
 35246  	}
 35247  	return nil
 35248  }
 35249  
 35250  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkEncryption.
 35251  func (v VirtualNetworkEncryption) MarshalJSON() ([]byte, error) {
 35252  	objectMap := make(map[string]any)
 35253  	populate(objectMap, "enabled", v.Enabled)
 35254  	populate(objectMap, "enforcement", v.Enforcement)
 35255  	return json.Marshal(objectMap)
 35256  }
 35257  
 35258  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkEncryption.
 35259  func (v *VirtualNetworkEncryption) UnmarshalJSON(data []byte) error {
 35260  	var rawMsg map[string]json.RawMessage
 35261  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 35262  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35263  	}
 35264  	for key, val := range rawMsg {
 35265  		var err error
 35266  		switch key {
 35267  		case "enabled":
 35268  			err = unpopulate(val, "Enabled", &v.Enabled)
 35269  			delete(rawMsg, key)
 35270  		case "enforcement":
 35271  			err = unpopulate(val, "Enforcement", &v.Enforcement)
 35272  			delete(rawMsg, key)
 35273  		}
 35274  		if err != nil {
 35275  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35276  		}
 35277  	}
 35278  	return nil
 35279  }
 35280  
 35281  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGateway.
 35282  func (v VirtualNetworkGateway) MarshalJSON() ([]byte, error) {
 35283  	objectMap := make(map[string]any)
 35284  	populate(objectMap, "etag", v.Etag)
 35285  	populate(objectMap, "extendedLocation", v.ExtendedLocation)
 35286  	populate(objectMap, "id", v.ID)
 35287  	populate(objectMap, "identity", v.Identity)
 35288  	populate(objectMap, "location", v.Location)
 35289  	populate(objectMap, "name", v.Name)
 35290  	populate(objectMap, "properties", v.Properties)
 35291  	populate(objectMap, "tags", v.Tags)
 35292  	populate(objectMap, "type", v.Type)
 35293  	return json.Marshal(objectMap)
 35294  }
 35295  
 35296  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkGateway.
 35297  func (v *VirtualNetworkGateway) UnmarshalJSON(data []byte) error {
 35298  	var rawMsg map[string]json.RawMessage
 35299  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 35300  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35301  	}
 35302  	for key, val := range rawMsg {
 35303  		var err error
 35304  		switch key {
 35305  		case "etag":
 35306  			err = unpopulate(val, "Etag", &v.Etag)
 35307  			delete(rawMsg, key)
 35308  		case "extendedLocation":
 35309  			err = unpopulate(val, "ExtendedLocation", &v.ExtendedLocation)
 35310  			delete(rawMsg, key)
 35311  		case "id":
 35312  			err = unpopulate(val, "ID", &v.ID)
 35313  			delete(rawMsg, key)
 35314  		case "identity":
 35315  			err = unpopulate(val, "Identity", &v.Identity)
 35316  			delete(rawMsg, key)
 35317  		case "location":
 35318  			err = unpopulate(val, "Location", &v.Location)
 35319  			delete(rawMsg, key)
 35320  		case "name":
 35321  			err = unpopulate(val, "Name", &v.Name)
 35322  			delete(rawMsg, key)
 35323  		case "properties":
 35324  			err = unpopulate(val, "Properties", &v.Properties)
 35325  			delete(rawMsg, key)
 35326  		case "tags":
 35327  			err = unpopulate(val, "Tags", &v.Tags)
 35328  			delete(rawMsg, key)
 35329  		case "type":
 35330  			err = unpopulate(val, "Type", &v.Type)
 35331  			delete(rawMsg, key)
 35332  		}
 35333  		if err != nil {
 35334  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35335  		}
 35336  	}
 35337  	return nil
 35338  }
 35339  
 35340  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayAutoScaleBounds.
 35341  func (v VirtualNetworkGatewayAutoScaleBounds) MarshalJSON() ([]byte, error) {
 35342  	objectMap := make(map[string]any)
 35343  	populate(objectMap, "max", v.Max)
 35344  	populate(objectMap, "min", v.Min)
 35345  	return json.Marshal(objectMap)
 35346  }
 35347  
 35348  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkGatewayAutoScaleBounds.
 35349  func (v *VirtualNetworkGatewayAutoScaleBounds) UnmarshalJSON(data []byte) error {
 35350  	var rawMsg map[string]json.RawMessage
 35351  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 35352  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35353  	}
 35354  	for key, val := range rawMsg {
 35355  		var err error
 35356  		switch key {
 35357  		case "max":
 35358  			err = unpopulate(val, "Max", &v.Max)
 35359  			delete(rawMsg, key)
 35360  		case "min":
 35361  			err = unpopulate(val, "Min", &v.Min)
 35362  			delete(rawMsg, key)
 35363  		}
 35364  		if err != nil {
 35365  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35366  		}
 35367  	}
 35368  	return nil
 35369  }
 35370  
 35371  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayAutoScaleConfiguration.
 35372  func (v VirtualNetworkGatewayAutoScaleConfiguration) MarshalJSON() ([]byte, error) {
 35373  	objectMap := make(map[string]any)
 35374  	populate(objectMap, "bounds", v.Bounds)
 35375  	return json.Marshal(objectMap)
 35376  }
 35377  
 35378  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkGatewayAutoScaleConfiguration.
 35379  func (v *VirtualNetworkGatewayAutoScaleConfiguration) UnmarshalJSON(data []byte) error {
 35380  	var rawMsg map[string]json.RawMessage
 35381  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 35382  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35383  	}
 35384  	for key, val := range rawMsg {
 35385  		var err error
 35386  		switch key {
 35387  		case "bounds":
 35388  			err = unpopulate(val, "Bounds", &v.Bounds)
 35389  			delete(rawMsg, key)
 35390  		}
 35391  		if err != nil {
 35392  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35393  		}
 35394  	}
 35395  	return nil
 35396  }
 35397  
 35398  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayConnection.
 35399  func (v VirtualNetworkGatewayConnection) MarshalJSON() ([]byte, error) {
 35400  	objectMap := make(map[string]any)
 35401  	populate(objectMap, "etag", v.Etag)
 35402  	populate(objectMap, "id", v.ID)
 35403  	populate(objectMap, "location", v.Location)
 35404  	populate(objectMap, "name", v.Name)
 35405  	populate(objectMap, "properties", v.Properties)
 35406  	populate(objectMap, "tags", v.Tags)
 35407  	populate(objectMap, "type", v.Type)
 35408  	return json.Marshal(objectMap)
 35409  }
 35410  
 35411  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkGatewayConnection.
 35412  func (v *VirtualNetworkGatewayConnection) UnmarshalJSON(data []byte) error {
 35413  	var rawMsg map[string]json.RawMessage
 35414  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 35415  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35416  	}
 35417  	for key, val := range rawMsg {
 35418  		var err error
 35419  		switch key {
 35420  		case "etag":
 35421  			err = unpopulate(val, "Etag", &v.Etag)
 35422  			delete(rawMsg, key)
 35423  		case "id":
 35424  			err = unpopulate(val, "ID", &v.ID)
 35425  			delete(rawMsg, key)
 35426  		case "location":
 35427  			err = unpopulate(val, "Location", &v.Location)
 35428  			delete(rawMsg, key)
 35429  		case "name":
 35430  			err = unpopulate(val, "Name", &v.Name)
 35431  			delete(rawMsg, key)
 35432  		case "properties":
 35433  			err = unpopulate(val, "Properties", &v.Properties)
 35434  			delete(rawMsg, key)
 35435  		case "tags":
 35436  			err = unpopulate(val, "Tags", &v.Tags)
 35437  			delete(rawMsg, key)
 35438  		case "type":
 35439  			err = unpopulate(val, "Type", &v.Type)
 35440  			delete(rawMsg, key)
 35441  		}
 35442  		if err != nil {
 35443  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35444  		}
 35445  	}
 35446  	return nil
 35447  }
 35448  
 35449  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayConnectionListEntity.
 35450  func (v VirtualNetworkGatewayConnectionListEntity) MarshalJSON() ([]byte, error) {
 35451  	objectMap := make(map[string]any)
 35452  	populate(objectMap, "etag", v.Etag)
 35453  	populate(objectMap, "id", v.ID)
 35454  	populate(objectMap, "location", v.Location)
 35455  	populate(objectMap, "name", v.Name)
 35456  	populate(objectMap, "properties", v.Properties)
 35457  	populate(objectMap, "tags", v.Tags)
 35458  	populate(objectMap, "type", v.Type)
 35459  	return json.Marshal(objectMap)
 35460  }
 35461  
 35462  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkGatewayConnectionListEntity.
 35463  func (v *VirtualNetworkGatewayConnectionListEntity) UnmarshalJSON(data []byte) error {
 35464  	var rawMsg map[string]json.RawMessage
 35465  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 35466  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35467  	}
 35468  	for key, val := range rawMsg {
 35469  		var err error
 35470  		switch key {
 35471  		case "etag":
 35472  			err = unpopulate(val, "Etag", &v.Etag)
 35473  			delete(rawMsg, key)
 35474  		case "id":
 35475  			err = unpopulate(val, "ID", &v.ID)
 35476  			delete(rawMsg, key)
 35477  		case "location":
 35478  			err = unpopulate(val, "Location", &v.Location)
 35479  			delete(rawMsg, key)
 35480  		case "name":
 35481  			err = unpopulate(val, "Name", &v.Name)
 35482  			delete(rawMsg, key)
 35483  		case "properties":
 35484  			err = unpopulate(val, "Properties", &v.Properties)
 35485  			delete(rawMsg, key)
 35486  		case "tags":
 35487  			err = unpopulate(val, "Tags", &v.Tags)
 35488  			delete(rawMsg, key)
 35489  		case "type":
 35490  			err = unpopulate(val, "Type", &v.Type)
 35491  			delete(rawMsg, key)
 35492  		}
 35493  		if err != nil {
 35494  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35495  		}
 35496  	}
 35497  	return nil
 35498  }
 35499  
 35500  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayConnectionListEntityPropertiesFormat.
 35501  func (v VirtualNetworkGatewayConnectionListEntityPropertiesFormat) MarshalJSON() ([]byte, error) {
 35502  	objectMap := make(map[string]any)
 35503  	populate(objectMap, "authorizationKey", v.AuthorizationKey)
 35504  	populate(objectMap, "connectionMode", v.ConnectionMode)
 35505  	populate(objectMap, "connectionProtocol", v.ConnectionProtocol)
 35506  	populate(objectMap, "connectionStatus", v.ConnectionStatus)
 35507  	populate(objectMap, "connectionType", v.ConnectionType)
 35508  	populate(objectMap, "egressBytesTransferred", v.EgressBytesTransferred)
 35509  	populate(objectMap, "enableBgp", v.EnableBgp)
 35510  	populate(objectMap, "enablePrivateLinkFastPath", v.EnablePrivateLinkFastPath)
 35511  	populate(objectMap, "expressRouteGatewayBypass", v.ExpressRouteGatewayBypass)
 35512  	populate(objectMap, "gatewayCustomBgpIpAddresses", v.GatewayCustomBgpIPAddresses)
 35513  	populate(objectMap, "ipsecPolicies", v.IPSecPolicies)
 35514  	populate(objectMap, "ingressBytesTransferred", v.IngressBytesTransferred)
 35515  	populate(objectMap, "localNetworkGateway2", v.LocalNetworkGateway2)
 35516  	populate(objectMap, "peer", v.Peer)
 35517  	populate(objectMap, "provisioningState", v.ProvisioningState)
 35518  	populate(objectMap, "resourceGuid", v.ResourceGUID)
 35519  	populate(objectMap, "routingWeight", v.RoutingWeight)
 35520  	populate(objectMap, "sharedKey", v.SharedKey)
 35521  	populate(objectMap, "trafficSelectorPolicies", v.TrafficSelectorPolicies)
 35522  	populate(objectMap, "tunnelConnectionStatus", v.TunnelConnectionStatus)
 35523  	populate(objectMap, "usePolicyBasedTrafficSelectors", v.UsePolicyBasedTrafficSelectors)
 35524  	populate(objectMap, "virtualNetworkGateway1", v.VirtualNetworkGateway1)
 35525  	populate(objectMap, "virtualNetworkGateway2", v.VirtualNetworkGateway2)
 35526  	return json.Marshal(objectMap)
 35527  }
 35528  
 35529  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkGatewayConnectionListEntityPropertiesFormat.
 35530  func (v *VirtualNetworkGatewayConnectionListEntityPropertiesFormat) UnmarshalJSON(data []byte) error {
 35531  	var rawMsg map[string]json.RawMessage
 35532  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 35533  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35534  	}
 35535  	for key, val := range rawMsg {
 35536  		var err error
 35537  		switch key {
 35538  		case "authorizationKey":
 35539  			err = unpopulate(val, "AuthorizationKey", &v.AuthorizationKey)
 35540  			delete(rawMsg, key)
 35541  		case "connectionMode":
 35542  			err = unpopulate(val, "ConnectionMode", &v.ConnectionMode)
 35543  			delete(rawMsg, key)
 35544  		case "connectionProtocol":
 35545  			err = unpopulate(val, "ConnectionProtocol", &v.ConnectionProtocol)
 35546  			delete(rawMsg, key)
 35547  		case "connectionStatus":
 35548  			err = unpopulate(val, "ConnectionStatus", &v.ConnectionStatus)
 35549  			delete(rawMsg, key)
 35550  		case "connectionType":
 35551  			err = unpopulate(val, "ConnectionType", &v.ConnectionType)
 35552  			delete(rawMsg, key)
 35553  		case "egressBytesTransferred":
 35554  			err = unpopulate(val, "EgressBytesTransferred", &v.EgressBytesTransferred)
 35555  			delete(rawMsg, key)
 35556  		case "enableBgp":
 35557  			err = unpopulate(val, "EnableBgp", &v.EnableBgp)
 35558  			delete(rawMsg, key)
 35559  		case "enablePrivateLinkFastPath":
 35560  			err = unpopulate(val, "EnablePrivateLinkFastPath", &v.EnablePrivateLinkFastPath)
 35561  			delete(rawMsg, key)
 35562  		case "expressRouteGatewayBypass":
 35563  			err = unpopulate(val, "ExpressRouteGatewayBypass", &v.ExpressRouteGatewayBypass)
 35564  			delete(rawMsg, key)
 35565  		case "gatewayCustomBgpIpAddresses":
 35566  			err = unpopulate(val, "GatewayCustomBgpIPAddresses", &v.GatewayCustomBgpIPAddresses)
 35567  			delete(rawMsg, key)
 35568  		case "ipsecPolicies":
 35569  			err = unpopulate(val, "IPSecPolicies", &v.IPSecPolicies)
 35570  			delete(rawMsg, key)
 35571  		case "ingressBytesTransferred":
 35572  			err = unpopulate(val, "IngressBytesTransferred", &v.IngressBytesTransferred)
 35573  			delete(rawMsg, key)
 35574  		case "localNetworkGateway2":
 35575  			err = unpopulate(val, "LocalNetworkGateway2", &v.LocalNetworkGateway2)
 35576  			delete(rawMsg, key)
 35577  		case "peer":
 35578  			err = unpopulate(val, "Peer", &v.Peer)
 35579  			delete(rawMsg, key)
 35580  		case "provisioningState":
 35581  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 35582  			delete(rawMsg, key)
 35583  		case "resourceGuid":
 35584  			err = unpopulate(val, "ResourceGUID", &v.ResourceGUID)
 35585  			delete(rawMsg, key)
 35586  		case "routingWeight":
 35587  			err = unpopulate(val, "RoutingWeight", &v.RoutingWeight)
 35588  			delete(rawMsg, key)
 35589  		case "sharedKey":
 35590  			err = unpopulate(val, "SharedKey", &v.SharedKey)
 35591  			delete(rawMsg, key)
 35592  		case "trafficSelectorPolicies":
 35593  			err = unpopulate(val, "TrafficSelectorPolicies", &v.TrafficSelectorPolicies)
 35594  			delete(rawMsg, key)
 35595  		case "tunnelConnectionStatus":
 35596  			err = unpopulate(val, "TunnelConnectionStatus", &v.TunnelConnectionStatus)
 35597  			delete(rawMsg, key)
 35598  		case "usePolicyBasedTrafficSelectors":
 35599  			err = unpopulate(val, "UsePolicyBasedTrafficSelectors", &v.UsePolicyBasedTrafficSelectors)
 35600  			delete(rawMsg, key)
 35601  		case "virtualNetworkGateway1":
 35602  			err = unpopulate(val, "VirtualNetworkGateway1", &v.VirtualNetworkGateway1)
 35603  			delete(rawMsg, key)
 35604  		case "virtualNetworkGateway2":
 35605  			err = unpopulate(val, "VirtualNetworkGateway2", &v.VirtualNetworkGateway2)
 35606  			delete(rawMsg, key)
 35607  		}
 35608  		if err != nil {
 35609  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35610  		}
 35611  	}
 35612  	return nil
 35613  }
 35614  
 35615  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayConnectionListResult.
 35616  func (v VirtualNetworkGatewayConnectionListResult) MarshalJSON() ([]byte, error) {
 35617  	objectMap := make(map[string]any)
 35618  	populate(objectMap, "nextLink", v.NextLink)
 35619  	populate(objectMap, "value", v.Value)
 35620  	return json.Marshal(objectMap)
 35621  }
 35622  
 35623  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkGatewayConnectionListResult.
 35624  func (v *VirtualNetworkGatewayConnectionListResult) UnmarshalJSON(data []byte) error {
 35625  	var rawMsg map[string]json.RawMessage
 35626  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 35627  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35628  	}
 35629  	for key, val := range rawMsg {
 35630  		var err error
 35631  		switch key {
 35632  		case "nextLink":
 35633  			err = unpopulate(val, "NextLink", &v.NextLink)
 35634  			delete(rawMsg, key)
 35635  		case "value":
 35636  			err = unpopulate(val, "Value", &v.Value)
 35637  			delete(rawMsg, key)
 35638  		}
 35639  		if err != nil {
 35640  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35641  		}
 35642  	}
 35643  	return nil
 35644  }
 35645  
 35646  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayConnectionPropertiesFormat.
 35647  func (v VirtualNetworkGatewayConnectionPropertiesFormat) MarshalJSON() ([]byte, error) {
 35648  	objectMap := make(map[string]any)
 35649  	populate(objectMap, "authorizationKey", v.AuthorizationKey)
 35650  	populate(objectMap, "connectionMode", v.ConnectionMode)
 35651  	populate(objectMap, "connectionProtocol", v.ConnectionProtocol)
 35652  	populate(objectMap, "connectionStatus", v.ConnectionStatus)
 35653  	populate(objectMap, "connectionType", v.ConnectionType)
 35654  	populate(objectMap, "dpdTimeoutSeconds", v.DpdTimeoutSeconds)
 35655  	populate(objectMap, "egressBytesTransferred", v.EgressBytesTransferred)
 35656  	populate(objectMap, "egressNatRules", v.EgressNatRules)
 35657  	populate(objectMap, "enableBgp", v.EnableBgp)
 35658  	populate(objectMap, "enablePrivateLinkFastPath", v.EnablePrivateLinkFastPath)
 35659  	populate(objectMap, "expressRouteGatewayBypass", v.ExpressRouteGatewayBypass)
 35660  	populate(objectMap, "gatewayCustomBgpIpAddresses", v.GatewayCustomBgpIPAddresses)
 35661  	populate(objectMap, "ipsecPolicies", v.IPSecPolicies)
 35662  	populate(objectMap, "ingressBytesTransferred", v.IngressBytesTransferred)
 35663  	populate(objectMap, "ingressNatRules", v.IngressNatRules)
 35664  	populate(objectMap, "localNetworkGateway2", v.LocalNetworkGateway2)
 35665  	populate(objectMap, "peer", v.Peer)
 35666  	populate(objectMap, "provisioningState", v.ProvisioningState)
 35667  	populate(objectMap, "resourceGuid", v.ResourceGUID)
 35668  	populate(objectMap, "routingWeight", v.RoutingWeight)
 35669  	populate(objectMap, "sharedKey", v.SharedKey)
 35670  	populate(objectMap, "trafficSelectorPolicies", v.TrafficSelectorPolicies)
 35671  	populate(objectMap, "tunnelConnectionStatus", v.TunnelConnectionStatus)
 35672  	populate(objectMap, "useLocalAzureIpAddress", v.UseLocalAzureIPAddress)
 35673  	populate(objectMap, "usePolicyBasedTrafficSelectors", v.UsePolicyBasedTrafficSelectors)
 35674  	populate(objectMap, "virtualNetworkGateway1", v.VirtualNetworkGateway1)
 35675  	populate(objectMap, "virtualNetworkGateway2", v.VirtualNetworkGateway2)
 35676  	return json.Marshal(objectMap)
 35677  }
 35678  
 35679  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkGatewayConnectionPropertiesFormat.
 35680  func (v *VirtualNetworkGatewayConnectionPropertiesFormat) UnmarshalJSON(data []byte) error {
 35681  	var rawMsg map[string]json.RawMessage
 35682  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 35683  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35684  	}
 35685  	for key, val := range rawMsg {
 35686  		var err error
 35687  		switch key {
 35688  		case "authorizationKey":
 35689  			err = unpopulate(val, "AuthorizationKey", &v.AuthorizationKey)
 35690  			delete(rawMsg, key)
 35691  		case "connectionMode":
 35692  			err = unpopulate(val, "ConnectionMode", &v.ConnectionMode)
 35693  			delete(rawMsg, key)
 35694  		case "connectionProtocol":
 35695  			err = unpopulate(val, "ConnectionProtocol", &v.ConnectionProtocol)
 35696  			delete(rawMsg, key)
 35697  		case "connectionStatus":
 35698  			err = unpopulate(val, "ConnectionStatus", &v.ConnectionStatus)
 35699  			delete(rawMsg, key)
 35700  		case "connectionType":
 35701  			err = unpopulate(val, "ConnectionType", &v.ConnectionType)
 35702  			delete(rawMsg, key)
 35703  		case "dpdTimeoutSeconds":
 35704  			err = unpopulate(val, "DpdTimeoutSeconds", &v.DpdTimeoutSeconds)
 35705  			delete(rawMsg, key)
 35706  		case "egressBytesTransferred":
 35707  			err = unpopulate(val, "EgressBytesTransferred", &v.EgressBytesTransferred)
 35708  			delete(rawMsg, key)
 35709  		case "egressNatRules":
 35710  			err = unpopulate(val, "EgressNatRules", &v.EgressNatRules)
 35711  			delete(rawMsg, key)
 35712  		case "enableBgp":
 35713  			err = unpopulate(val, "EnableBgp", &v.EnableBgp)
 35714  			delete(rawMsg, key)
 35715  		case "enablePrivateLinkFastPath":
 35716  			err = unpopulate(val, "EnablePrivateLinkFastPath", &v.EnablePrivateLinkFastPath)
 35717  			delete(rawMsg, key)
 35718  		case "expressRouteGatewayBypass":
 35719  			err = unpopulate(val, "ExpressRouteGatewayBypass", &v.ExpressRouteGatewayBypass)
 35720  			delete(rawMsg, key)
 35721  		case "gatewayCustomBgpIpAddresses":
 35722  			err = unpopulate(val, "GatewayCustomBgpIPAddresses", &v.GatewayCustomBgpIPAddresses)
 35723  			delete(rawMsg, key)
 35724  		case "ipsecPolicies":
 35725  			err = unpopulate(val, "IPSecPolicies", &v.IPSecPolicies)
 35726  			delete(rawMsg, key)
 35727  		case "ingressBytesTransferred":
 35728  			err = unpopulate(val, "IngressBytesTransferred", &v.IngressBytesTransferred)
 35729  			delete(rawMsg, key)
 35730  		case "ingressNatRules":
 35731  			err = unpopulate(val, "IngressNatRules", &v.IngressNatRules)
 35732  			delete(rawMsg, key)
 35733  		case "localNetworkGateway2":
 35734  			err = unpopulate(val, "LocalNetworkGateway2", &v.LocalNetworkGateway2)
 35735  			delete(rawMsg, key)
 35736  		case "peer":
 35737  			err = unpopulate(val, "Peer", &v.Peer)
 35738  			delete(rawMsg, key)
 35739  		case "provisioningState":
 35740  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 35741  			delete(rawMsg, key)
 35742  		case "resourceGuid":
 35743  			err = unpopulate(val, "ResourceGUID", &v.ResourceGUID)
 35744  			delete(rawMsg, key)
 35745  		case "routingWeight":
 35746  			err = unpopulate(val, "RoutingWeight", &v.RoutingWeight)
 35747  			delete(rawMsg, key)
 35748  		case "sharedKey":
 35749  			err = unpopulate(val, "SharedKey", &v.SharedKey)
 35750  			delete(rawMsg, key)
 35751  		case "trafficSelectorPolicies":
 35752  			err = unpopulate(val, "TrafficSelectorPolicies", &v.TrafficSelectorPolicies)
 35753  			delete(rawMsg, key)
 35754  		case "tunnelConnectionStatus":
 35755  			err = unpopulate(val, "TunnelConnectionStatus", &v.TunnelConnectionStatus)
 35756  			delete(rawMsg, key)
 35757  		case "useLocalAzureIpAddress":
 35758  			err = unpopulate(val, "UseLocalAzureIPAddress", &v.UseLocalAzureIPAddress)
 35759  			delete(rawMsg, key)
 35760  		case "usePolicyBasedTrafficSelectors":
 35761  			err = unpopulate(val, "UsePolicyBasedTrafficSelectors", &v.UsePolicyBasedTrafficSelectors)
 35762  			delete(rawMsg, key)
 35763  		case "virtualNetworkGateway1":
 35764  			err = unpopulate(val, "VirtualNetworkGateway1", &v.VirtualNetworkGateway1)
 35765  			delete(rawMsg, key)
 35766  		case "virtualNetworkGateway2":
 35767  			err = unpopulate(val, "VirtualNetworkGateway2", &v.VirtualNetworkGateway2)
 35768  			delete(rawMsg, key)
 35769  		}
 35770  		if err != nil {
 35771  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35772  		}
 35773  	}
 35774  	return nil
 35775  }
 35776  
 35777  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayIPConfiguration.
 35778  func (v VirtualNetworkGatewayIPConfiguration) MarshalJSON() ([]byte, error) {
 35779  	objectMap := make(map[string]any)
 35780  	populate(objectMap, "etag", v.Etag)
 35781  	populate(objectMap, "id", v.ID)
 35782  	populate(objectMap, "name", v.Name)
 35783  	populate(objectMap, "properties", v.Properties)
 35784  	return json.Marshal(objectMap)
 35785  }
 35786  
 35787  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkGatewayIPConfiguration.
 35788  func (v *VirtualNetworkGatewayIPConfiguration) UnmarshalJSON(data []byte) error {
 35789  	var rawMsg map[string]json.RawMessage
 35790  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 35791  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35792  	}
 35793  	for key, val := range rawMsg {
 35794  		var err error
 35795  		switch key {
 35796  		case "etag":
 35797  			err = unpopulate(val, "Etag", &v.Etag)
 35798  			delete(rawMsg, key)
 35799  		case "id":
 35800  			err = unpopulate(val, "ID", &v.ID)
 35801  			delete(rawMsg, key)
 35802  		case "name":
 35803  			err = unpopulate(val, "Name", &v.Name)
 35804  			delete(rawMsg, key)
 35805  		case "properties":
 35806  			err = unpopulate(val, "Properties", &v.Properties)
 35807  			delete(rawMsg, key)
 35808  		}
 35809  		if err != nil {
 35810  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35811  		}
 35812  	}
 35813  	return nil
 35814  }
 35815  
 35816  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayIPConfigurationPropertiesFormat.
 35817  func (v VirtualNetworkGatewayIPConfigurationPropertiesFormat) MarshalJSON() ([]byte, error) {
 35818  	objectMap := make(map[string]any)
 35819  	populate(objectMap, "privateIPAddress", v.PrivateIPAddress)
 35820  	populate(objectMap, "privateIPAllocationMethod", v.PrivateIPAllocationMethod)
 35821  	populate(objectMap, "provisioningState", v.ProvisioningState)
 35822  	populate(objectMap, "publicIPAddress", v.PublicIPAddress)
 35823  	populate(objectMap, "subnet", v.Subnet)
 35824  	return json.Marshal(objectMap)
 35825  }
 35826  
 35827  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkGatewayIPConfigurationPropertiesFormat.
 35828  func (v *VirtualNetworkGatewayIPConfigurationPropertiesFormat) UnmarshalJSON(data []byte) error {
 35829  	var rawMsg map[string]json.RawMessage
 35830  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 35831  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35832  	}
 35833  	for key, val := range rawMsg {
 35834  		var err error
 35835  		switch key {
 35836  		case "privateIPAddress":
 35837  			err = unpopulate(val, "PrivateIPAddress", &v.PrivateIPAddress)
 35838  			delete(rawMsg, key)
 35839  		case "privateIPAllocationMethod":
 35840  			err = unpopulate(val, "PrivateIPAllocationMethod", &v.PrivateIPAllocationMethod)
 35841  			delete(rawMsg, key)
 35842  		case "provisioningState":
 35843  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 35844  			delete(rawMsg, key)
 35845  		case "publicIPAddress":
 35846  			err = unpopulate(val, "PublicIPAddress", &v.PublicIPAddress)
 35847  			delete(rawMsg, key)
 35848  		case "subnet":
 35849  			err = unpopulate(val, "Subnet", &v.Subnet)
 35850  			delete(rawMsg, key)
 35851  		}
 35852  		if err != nil {
 35853  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35854  		}
 35855  	}
 35856  	return nil
 35857  }
 35858  
 35859  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayListConnectionsResult.
 35860  func (v VirtualNetworkGatewayListConnectionsResult) MarshalJSON() ([]byte, error) {
 35861  	objectMap := make(map[string]any)
 35862  	populate(objectMap, "nextLink", v.NextLink)
 35863  	populate(objectMap, "value", v.Value)
 35864  	return json.Marshal(objectMap)
 35865  }
 35866  
 35867  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkGatewayListConnectionsResult.
 35868  func (v *VirtualNetworkGatewayListConnectionsResult) UnmarshalJSON(data []byte) error {
 35869  	var rawMsg map[string]json.RawMessage
 35870  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 35871  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35872  	}
 35873  	for key, val := range rawMsg {
 35874  		var err error
 35875  		switch key {
 35876  		case "nextLink":
 35877  			err = unpopulate(val, "NextLink", &v.NextLink)
 35878  			delete(rawMsg, key)
 35879  		case "value":
 35880  			err = unpopulate(val, "Value", &v.Value)
 35881  			delete(rawMsg, key)
 35882  		}
 35883  		if err != nil {
 35884  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35885  		}
 35886  	}
 35887  	return nil
 35888  }
 35889  
 35890  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayListResult.
 35891  func (v VirtualNetworkGatewayListResult) MarshalJSON() ([]byte, error) {
 35892  	objectMap := make(map[string]any)
 35893  	populate(objectMap, "nextLink", v.NextLink)
 35894  	populate(objectMap, "value", v.Value)
 35895  	return json.Marshal(objectMap)
 35896  }
 35897  
 35898  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkGatewayListResult.
 35899  func (v *VirtualNetworkGatewayListResult) UnmarshalJSON(data []byte) error {
 35900  	var rawMsg map[string]json.RawMessage
 35901  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 35902  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35903  	}
 35904  	for key, val := range rawMsg {
 35905  		var err error
 35906  		switch key {
 35907  		case "nextLink":
 35908  			err = unpopulate(val, "NextLink", &v.NextLink)
 35909  			delete(rawMsg, key)
 35910  		case "value":
 35911  			err = unpopulate(val, "Value", &v.Value)
 35912  			delete(rawMsg, key)
 35913  		}
 35914  		if err != nil {
 35915  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35916  		}
 35917  	}
 35918  	return nil
 35919  }
 35920  
 35921  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayNatRule.
 35922  func (v VirtualNetworkGatewayNatRule) MarshalJSON() ([]byte, error) {
 35923  	objectMap := make(map[string]any)
 35924  	populate(objectMap, "etag", v.Etag)
 35925  	populate(objectMap, "id", v.ID)
 35926  	populate(objectMap, "name", v.Name)
 35927  	populate(objectMap, "properties", v.Properties)
 35928  	populate(objectMap, "type", v.Type)
 35929  	return json.Marshal(objectMap)
 35930  }
 35931  
 35932  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkGatewayNatRule.
 35933  func (v *VirtualNetworkGatewayNatRule) UnmarshalJSON(data []byte) error {
 35934  	var rawMsg map[string]json.RawMessage
 35935  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 35936  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35937  	}
 35938  	for key, val := range rawMsg {
 35939  		var err error
 35940  		switch key {
 35941  		case "etag":
 35942  			err = unpopulate(val, "Etag", &v.Etag)
 35943  			delete(rawMsg, key)
 35944  		case "id":
 35945  			err = unpopulate(val, "ID", &v.ID)
 35946  			delete(rawMsg, key)
 35947  		case "name":
 35948  			err = unpopulate(val, "Name", &v.Name)
 35949  			delete(rawMsg, key)
 35950  		case "properties":
 35951  			err = unpopulate(val, "Properties", &v.Properties)
 35952  			delete(rawMsg, key)
 35953  		case "type":
 35954  			err = unpopulate(val, "Type", &v.Type)
 35955  			delete(rawMsg, key)
 35956  		}
 35957  		if err != nil {
 35958  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35959  		}
 35960  	}
 35961  	return nil
 35962  }
 35963  
 35964  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayNatRuleProperties.
 35965  func (v VirtualNetworkGatewayNatRuleProperties) MarshalJSON() ([]byte, error) {
 35966  	objectMap := make(map[string]any)
 35967  	populate(objectMap, "externalMappings", v.ExternalMappings)
 35968  	populate(objectMap, "ipConfigurationId", v.IPConfigurationID)
 35969  	populate(objectMap, "internalMappings", v.InternalMappings)
 35970  	populate(objectMap, "mode", v.Mode)
 35971  	populate(objectMap, "provisioningState", v.ProvisioningState)
 35972  	populate(objectMap, "type", v.Type)
 35973  	return json.Marshal(objectMap)
 35974  }
 35975  
 35976  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkGatewayNatRuleProperties.
 35977  func (v *VirtualNetworkGatewayNatRuleProperties) UnmarshalJSON(data []byte) error {
 35978  	var rawMsg map[string]json.RawMessage
 35979  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 35980  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 35981  	}
 35982  	for key, val := range rawMsg {
 35983  		var err error
 35984  		switch key {
 35985  		case "externalMappings":
 35986  			err = unpopulate(val, "ExternalMappings", &v.ExternalMappings)
 35987  			delete(rawMsg, key)
 35988  		case "ipConfigurationId":
 35989  			err = unpopulate(val, "IPConfigurationID", &v.IPConfigurationID)
 35990  			delete(rawMsg, key)
 35991  		case "internalMappings":
 35992  			err = unpopulate(val, "InternalMappings", &v.InternalMappings)
 35993  			delete(rawMsg, key)
 35994  		case "mode":
 35995  			err = unpopulate(val, "Mode", &v.Mode)
 35996  			delete(rawMsg, key)
 35997  		case "provisioningState":
 35998  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 35999  			delete(rawMsg, key)
 36000  		case "type":
 36001  			err = unpopulate(val, "Type", &v.Type)
 36002  			delete(rawMsg, key)
 36003  		}
 36004  		if err != nil {
 36005  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36006  		}
 36007  	}
 36008  	return nil
 36009  }
 36010  
 36011  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayPolicyGroup.
 36012  func (v VirtualNetworkGatewayPolicyGroup) MarshalJSON() ([]byte, error) {
 36013  	objectMap := make(map[string]any)
 36014  	populate(objectMap, "etag", v.Etag)
 36015  	populate(objectMap, "id", v.ID)
 36016  	populate(objectMap, "name", v.Name)
 36017  	populate(objectMap, "properties", v.Properties)
 36018  	return json.Marshal(objectMap)
 36019  }
 36020  
 36021  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkGatewayPolicyGroup.
 36022  func (v *VirtualNetworkGatewayPolicyGroup) UnmarshalJSON(data []byte) error {
 36023  	var rawMsg map[string]json.RawMessage
 36024  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 36025  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36026  	}
 36027  	for key, val := range rawMsg {
 36028  		var err error
 36029  		switch key {
 36030  		case "etag":
 36031  			err = unpopulate(val, "Etag", &v.Etag)
 36032  			delete(rawMsg, key)
 36033  		case "id":
 36034  			err = unpopulate(val, "ID", &v.ID)
 36035  			delete(rawMsg, key)
 36036  		case "name":
 36037  			err = unpopulate(val, "Name", &v.Name)
 36038  			delete(rawMsg, key)
 36039  		case "properties":
 36040  			err = unpopulate(val, "Properties", &v.Properties)
 36041  			delete(rawMsg, key)
 36042  		}
 36043  		if err != nil {
 36044  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36045  		}
 36046  	}
 36047  	return nil
 36048  }
 36049  
 36050  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayPolicyGroupMember.
 36051  func (v VirtualNetworkGatewayPolicyGroupMember) MarshalJSON() ([]byte, error) {
 36052  	objectMap := make(map[string]any)
 36053  	populate(objectMap, "attributeType", v.AttributeType)
 36054  	populate(objectMap, "attributeValue", v.AttributeValue)
 36055  	populate(objectMap, "name", v.Name)
 36056  	return json.Marshal(objectMap)
 36057  }
 36058  
 36059  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkGatewayPolicyGroupMember.
 36060  func (v *VirtualNetworkGatewayPolicyGroupMember) UnmarshalJSON(data []byte) error {
 36061  	var rawMsg map[string]json.RawMessage
 36062  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 36063  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36064  	}
 36065  	for key, val := range rawMsg {
 36066  		var err error
 36067  		switch key {
 36068  		case "attributeType":
 36069  			err = unpopulate(val, "AttributeType", &v.AttributeType)
 36070  			delete(rawMsg, key)
 36071  		case "attributeValue":
 36072  			err = unpopulate(val, "AttributeValue", &v.AttributeValue)
 36073  			delete(rawMsg, key)
 36074  		case "name":
 36075  			err = unpopulate(val, "Name", &v.Name)
 36076  			delete(rawMsg, key)
 36077  		}
 36078  		if err != nil {
 36079  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36080  		}
 36081  	}
 36082  	return nil
 36083  }
 36084  
 36085  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayPolicyGroupProperties.
 36086  func (v VirtualNetworkGatewayPolicyGroupProperties) MarshalJSON() ([]byte, error) {
 36087  	objectMap := make(map[string]any)
 36088  	populate(objectMap, "isDefault", v.IsDefault)
 36089  	populate(objectMap, "policyMembers", v.PolicyMembers)
 36090  	populate(objectMap, "priority", v.Priority)
 36091  	populate(objectMap, "provisioningState", v.ProvisioningState)
 36092  	populate(objectMap, "vngClientConnectionConfigurations", v.VngClientConnectionConfigurations)
 36093  	return json.Marshal(objectMap)
 36094  }
 36095  
 36096  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkGatewayPolicyGroupProperties.
 36097  func (v *VirtualNetworkGatewayPolicyGroupProperties) UnmarshalJSON(data []byte) error {
 36098  	var rawMsg map[string]json.RawMessage
 36099  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 36100  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36101  	}
 36102  	for key, val := range rawMsg {
 36103  		var err error
 36104  		switch key {
 36105  		case "isDefault":
 36106  			err = unpopulate(val, "IsDefault", &v.IsDefault)
 36107  			delete(rawMsg, key)
 36108  		case "policyMembers":
 36109  			err = unpopulate(val, "PolicyMembers", &v.PolicyMembers)
 36110  			delete(rawMsg, key)
 36111  		case "priority":
 36112  			err = unpopulate(val, "Priority", &v.Priority)
 36113  			delete(rawMsg, key)
 36114  		case "provisioningState":
 36115  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 36116  			delete(rawMsg, key)
 36117  		case "vngClientConnectionConfigurations":
 36118  			err = unpopulate(val, "VngClientConnectionConfigurations", &v.VngClientConnectionConfigurations)
 36119  			delete(rawMsg, key)
 36120  		}
 36121  		if err != nil {
 36122  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36123  		}
 36124  	}
 36125  	return nil
 36126  }
 36127  
 36128  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayPropertiesFormat.
 36129  func (v VirtualNetworkGatewayPropertiesFormat) MarshalJSON() ([]byte, error) {
 36130  	objectMap := make(map[string]any)
 36131  	populate(objectMap, "activeActive", v.Active)
 36132  	populate(objectMap, "adminState", v.AdminState)
 36133  	populate(objectMap, "allowRemoteVnetTraffic", v.AllowRemoteVnetTraffic)
 36134  	populate(objectMap, "allowVirtualWanTraffic", v.AllowVirtualWanTraffic)
 36135  	populate(objectMap, "autoScaleConfiguration", v.AutoScaleConfiguration)
 36136  	populate(objectMap, "bgpSettings", v.BgpSettings)
 36137  	populate(objectMap, "customRoutes", v.CustomRoutes)
 36138  	populate(objectMap, "disableIPSecReplayProtection", v.DisableIPSecReplayProtection)
 36139  	populate(objectMap, "enableBgp", v.EnableBgp)
 36140  	populate(objectMap, "enableBgpRouteTranslationForNat", v.EnableBgpRouteTranslationForNat)
 36141  	populate(objectMap, "enableDnsForwarding", v.EnableDNSForwarding)
 36142  	populate(objectMap, "enablePrivateIpAddress", v.EnablePrivateIPAddress)
 36143  	populate(objectMap, "gatewayDefaultSite", v.GatewayDefaultSite)
 36144  	populate(objectMap, "gatewayType", v.GatewayType)
 36145  	populate(objectMap, "ipConfigurations", v.IPConfigurations)
 36146  	populate(objectMap, "inboundDnsForwardingEndpoint", v.InboundDNSForwardingEndpoint)
 36147  	populate(objectMap, "natRules", v.NatRules)
 36148  	populate(objectMap, "provisioningState", v.ProvisioningState)
 36149  	populate(objectMap, "resiliencyModel", v.ResiliencyModel)
 36150  	populate(objectMap, "resourceGuid", v.ResourceGUID)
 36151  	populate(objectMap, "sku", v.SKU)
 36152  	populate(objectMap, "vNetExtendedLocationResourceId", v.VNetExtendedLocationResourceID)
 36153  	populate(objectMap, "vpnClientConfiguration", v.VPNClientConfiguration)
 36154  	populate(objectMap, "vpnGatewayGeneration", v.VPNGatewayGeneration)
 36155  	populate(objectMap, "vpnType", v.VPNType)
 36156  	populate(objectMap, "virtualNetworkGatewayPolicyGroups", v.VirtualNetworkGatewayPolicyGroups)
 36157  	return json.Marshal(objectMap)
 36158  }
 36159  
 36160  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkGatewayPropertiesFormat.
 36161  func (v *VirtualNetworkGatewayPropertiesFormat) UnmarshalJSON(data []byte) error {
 36162  	var rawMsg map[string]json.RawMessage
 36163  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 36164  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36165  	}
 36166  	for key, val := range rawMsg {
 36167  		var err error
 36168  		switch key {
 36169  		case "activeActive":
 36170  			err = unpopulate(val, "Active", &v.Active)
 36171  			delete(rawMsg, key)
 36172  		case "adminState":
 36173  			err = unpopulate(val, "AdminState", &v.AdminState)
 36174  			delete(rawMsg, key)
 36175  		case "allowRemoteVnetTraffic":
 36176  			err = unpopulate(val, "AllowRemoteVnetTraffic", &v.AllowRemoteVnetTraffic)
 36177  			delete(rawMsg, key)
 36178  		case "allowVirtualWanTraffic":
 36179  			err = unpopulate(val, "AllowVirtualWanTraffic", &v.AllowVirtualWanTraffic)
 36180  			delete(rawMsg, key)
 36181  		case "autoScaleConfiguration":
 36182  			err = unpopulate(val, "AutoScaleConfiguration", &v.AutoScaleConfiguration)
 36183  			delete(rawMsg, key)
 36184  		case "bgpSettings":
 36185  			err = unpopulate(val, "BgpSettings", &v.BgpSettings)
 36186  			delete(rawMsg, key)
 36187  		case "customRoutes":
 36188  			err = unpopulate(val, "CustomRoutes", &v.CustomRoutes)
 36189  			delete(rawMsg, key)
 36190  		case "disableIPSecReplayProtection":
 36191  			err = unpopulate(val, "DisableIPSecReplayProtection", &v.DisableIPSecReplayProtection)
 36192  			delete(rawMsg, key)
 36193  		case "enableBgp":
 36194  			err = unpopulate(val, "EnableBgp", &v.EnableBgp)
 36195  			delete(rawMsg, key)
 36196  		case "enableBgpRouteTranslationForNat":
 36197  			err = unpopulate(val, "EnableBgpRouteTranslationForNat", &v.EnableBgpRouteTranslationForNat)
 36198  			delete(rawMsg, key)
 36199  		case "enableDnsForwarding":
 36200  			err = unpopulate(val, "EnableDNSForwarding", &v.EnableDNSForwarding)
 36201  			delete(rawMsg, key)
 36202  		case "enablePrivateIpAddress":
 36203  			err = unpopulate(val, "EnablePrivateIPAddress", &v.EnablePrivateIPAddress)
 36204  			delete(rawMsg, key)
 36205  		case "gatewayDefaultSite":
 36206  			err = unpopulate(val, "GatewayDefaultSite", &v.GatewayDefaultSite)
 36207  			delete(rawMsg, key)
 36208  		case "gatewayType":
 36209  			err = unpopulate(val, "GatewayType", &v.GatewayType)
 36210  			delete(rawMsg, key)
 36211  		case "ipConfigurations":
 36212  			err = unpopulate(val, "IPConfigurations", &v.IPConfigurations)
 36213  			delete(rawMsg, key)
 36214  		case "inboundDnsForwardingEndpoint":
 36215  			err = unpopulate(val, "InboundDNSForwardingEndpoint", &v.InboundDNSForwardingEndpoint)
 36216  			delete(rawMsg, key)
 36217  		case "natRules":
 36218  			err = unpopulate(val, "NatRules", &v.NatRules)
 36219  			delete(rawMsg, key)
 36220  		case "provisioningState":
 36221  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 36222  			delete(rawMsg, key)
 36223  		case "resiliencyModel":
 36224  			err = unpopulate(val, "ResiliencyModel", &v.ResiliencyModel)
 36225  			delete(rawMsg, key)
 36226  		case "resourceGuid":
 36227  			err = unpopulate(val, "ResourceGUID", &v.ResourceGUID)
 36228  			delete(rawMsg, key)
 36229  		case "sku":
 36230  			err = unpopulate(val, "SKU", &v.SKU)
 36231  			delete(rawMsg, key)
 36232  		case "vNetExtendedLocationResourceId":
 36233  			err = unpopulate(val, "VNetExtendedLocationResourceID", &v.VNetExtendedLocationResourceID)
 36234  			delete(rawMsg, key)
 36235  		case "vpnClientConfiguration":
 36236  			err = unpopulate(val, "VPNClientConfiguration", &v.VPNClientConfiguration)
 36237  			delete(rawMsg, key)
 36238  		case "vpnGatewayGeneration":
 36239  			err = unpopulate(val, "VPNGatewayGeneration", &v.VPNGatewayGeneration)
 36240  			delete(rawMsg, key)
 36241  		case "vpnType":
 36242  			err = unpopulate(val, "VPNType", &v.VPNType)
 36243  			delete(rawMsg, key)
 36244  		case "virtualNetworkGatewayPolicyGroups":
 36245  			err = unpopulate(val, "VirtualNetworkGatewayPolicyGroups", &v.VirtualNetworkGatewayPolicyGroups)
 36246  			delete(rawMsg, key)
 36247  		}
 36248  		if err != nil {
 36249  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36250  		}
 36251  	}
 36252  	return nil
 36253  }
 36254  
 36255  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewaySKU.
 36256  func (v VirtualNetworkGatewaySKU) MarshalJSON() ([]byte, error) {
 36257  	objectMap := make(map[string]any)
 36258  	populate(objectMap, "capacity", v.Capacity)
 36259  	populate(objectMap, "name", v.Name)
 36260  	populate(objectMap, "tier", v.Tier)
 36261  	return json.Marshal(objectMap)
 36262  }
 36263  
 36264  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkGatewaySKU.
 36265  func (v *VirtualNetworkGatewaySKU) UnmarshalJSON(data []byte) error {
 36266  	var rawMsg map[string]json.RawMessage
 36267  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 36268  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36269  	}
 36270  	for key, val := range rawMsg {
 36271  		var err error
 36272  		switch key {
 36273  		case "capacity":
 36274  			err = unpopulate(val, "Capacity", &v.Capacity)
 36275  			delete(rawMsg, key)
 36276  		case "name":
 36277  			err = unpopulate(val, "Name", &v.Name)
 36278  			delete(rawMsg, key)
 36279  		case "tier":
 36280  			err = unpopulate(val, "Tier", &v.Tier)
 36281  			delete(rawMsg, key)
 36282  		}
 36283  		if err != nil {
 36284  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36285  		}
 36286  	}
 36287  	return nil
 36288  }
 36289  
 36290  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkListResult.
 36291  func (v VirtualNetworkListResult) MarshalJSON() ([]byte, error) {
 36292  	objectMap := make(map[string]any)
 36293  	populate(objectMap, "nextLink", v.NextLink)
 36294  	populate(objectMap, "value", v.Value)
 36295  	return json.Marshal(objectMap)
 36296  }
 36297  
 36298  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkListResult.
 36299  func (v *VirtualNetworkListResult) UnmarshalJSON(data []byte) error {
 36300  	var rawMsg map[string]json.RawMessage
 36301  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 36302  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36303  	}
 36304  	for key, val := range rawMsg {
 36305  		var err error
 36306  		switch key {
 36307  		case "nextLink":
 36308  			err = unpopulate(val, "NextLink", &v.NextLink)
 36309  			delete(rawMsg, key)
 36310  		case "value":
 36311  			err = unpopulate(val, "Value", &v.Value)
 36312  			delete(rawMsg, key)
 36313  		}
 36314  		if err != nil {
 36315  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36316  		}
 36317  	}
 36318  	return nil
 36319  }
 36320  
 36321  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkListUsageResult.
 36322  func (v VirtualNetworkListUsageResult) MarshalJSON() ([]byte, error) {
 36323  	objectMap := make(map[string]any)
 36324  	populate(objectMap, "nextLink", v.NextLink)
 36325  	populate(objectMap, "value", v.Value)
 36326  	return json.Marshal(objectMap)
 36327  }
 36328  
 36329  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkListUsageResult.
 36330  func (v *VirtualNetworkListUsageResult) UnmarshalJSON(data []byte) error {
 36331  	var rawMsg map[string]json.RawMessage
 36332  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 36333  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36334  	}
 36335  	for key, val := range rawMsg {
 36336  		var err error
 36337  		switch key {
 36338  		case "nextLink":
 36339  			err = unpopulate(val, "NextLink", &v.NextLink)
 36340  			delete(rawMsg, key)
 36341  		case "value":
 36342  			err = unpopulate(val, "Value", &v.Value)
 36343  			delete(rawMsg, key)
 36344  		}
 36345  		if err != nil {
 36346  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36347  		}
 36348  	}
 36349  	return nil
 36350  }
 36351  
 36352  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkPeering.
 36353  func (v VirtualNetworkPeering) MarshalJSON() ([]byte, error) {
 36354  	objectMap := make(map[string]any)
 36355  	populate(objectMap, "etag", v.Etag)
 36356  	populate(objectMap, "id", v.ID)
 36357  	populate(objectMap, "name", v.Name)
 36358  	populate(objectMap, "properties", v.Properties)
 36359  	populate(objectMap, "type", v.Type)
 36360  	return json.Marshal(objectMap)
 36361  }
 36362  
 36363  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkPeering.
 36364  func (v *VirtualNetworkPeering) UnmarshalJSON(data []byte) error {
 36365  	var rawMsg map[string]json.RawMessage
 36366  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 36367  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36368  	}
 36369  	for key, val := range rawMsg {
 36370  		var err error
 36371  		switch key {
 36372  		case "etag":
 36373  			err = unpopulate(val, "Etag", &v.Etag)
 36374  			delete(rawMsg, key)
 36375  		case "id":
 36376  			err = unpopulate(val, "ID", &v.ID)
 36377  			delete(rawMsg, key)
 36378  		case "name":
 36379  			err = unpopulate(val, "Name", &v.Name)
 36380  			delete(rawMsg, key)
 36381  		case "properties":
 36382  			err = unpopulate(val, "Properties", &v.Properties)
 36383  			delete(rawMsg, key)
 36384  		case "type":
 36385  			err = unpopulate(val, "Type", &v.Type)
 36386  			delete(rawMsg, key)
 36387  		}
 36388  		if err != nil {
 36389  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36390  		}
 36391  	}
 36392  	return nil
 36393  }
 36394  
 36395  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkPeeringListResult.
 36396  func (v VirtualNetworkPeeringListResult) MarshalJSON() ([]byte, error) {
 36397  	objectMap := make(map[string]any)
 36398  	populate(objectMap, "nextLink", v.NextLink)
 36399  	populate(objectMap, "value", v.Value)
 36400  	return json.Marshal(objectMap)
 36401  }
 36402  
 36403  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkPeeringListResult.
 36404  func (v *VirtualNetworkPeeringListResult) UnmarshalJSON(data []byte) error {
 36405  	var rawMsg map[string]json.RawMessage
 36406  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 36407  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36408  	}
 36409  	for key, val := range rawMsg {
 36410  		var err error
 36411  		switch key {
 36412  		case "nextLink":
 36413  			err = unpopulate(val, "NextLink", &v.NextLink)
 36414  			delete(rawMsg, key)
 36415  		case "value":
 36416  			err = unpopulate(val, "Value", &v.Value)
 36417  			delete(rawMsg, key)
 36418  		}
 36419  		if err != nil {
 36420  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36421  		}
 36422  	}
 36423  	return nil
 36424  }
 36425  
 36426  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkPeeringPropertiesFormat.
 36427  func (v VirtualNetworkPeeringPropertiesFormat) MarshalJSON() ([]byte, error) {
 36428  	objectMap := make(map[string]any)
 36429  	populate(objectMap, "allowForwardedTraffic", v.AllowForwardedTraffic)
 36430  	populate(objectMap, "allowGatewayTransit", v.AllowGatewayTransit)
 36431  	populate(objectMap, "allowVirtualNetworkAccess", v.AllowVirtualNetworkAccess)
 36432  	populate(objectMap, "doNotVerifyRemoteGateways", v.DoNotVerifyRemoteGateways)
 36433  	populate(objectMap, "enableOnlyIPv6Peering", v.EnableOnlyIPv6Peering)
 36434  	populate(objectMap, "localAddressSpace", v.LocalAddressSpace)
 36435  	populate(objectMap, "localSubnetNames", v.LocalSubnetNames)
 36436  	populate(objectMap, "localVirtualNetworkAddressSpace", v.LocalVirtualNetworkAddressSpace)
 36437  	populate(objectMap, "peerCompleteVnets", v.PeerCompleteVnets)
 36438  	populate(objectMap, "peeringState", v.PeeringState)
 36439  	populate(objectMap, "peeringSyncLevel", v.PeeringSyncLevel)
 36440  	populate(objectMap, "provisioningState", v.ProvisioningState)
 36441  	populate(objectMap, "remoteAddressSpace", v.RemoteAddressSpace)
 36442  	populate(objectMap, "remoteBgpCommunities", v.RemoteBgpCommunities)
 36443  	populate(objectMap, "remoteSubnetNames", v.RemoteSubnetNames)
 36444  	populate(objectMap, "remoteVirtualNetwork", v.RemoteVirtualNetwork)
 36445  	populate(objectMap, "remoteVirtualNetworkAddressSpace", v.RemoteVirtualNetworkAddressSpace)
 36446  	populate(objectMap, "remoteVirtualNetworkEncryption", v.RemoteVirtualNetworkEncryption)
 36447  	populate(objectMap, "resourceGuid", v.ResourceGUID)
 36448  	populate(objectMap, "useRemoteGateways", v.UseRemoteGateways)
 36449  	return json.Marshal(objectMap)
 36450  }
 36451  
 36452  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkPeeringPropertiesFormat.
 36453  func (v *VirtualNetworkPeeringPropertiesFormat) UnmarshalJSON(data []byte) error {
 36454  	var rawMsg map[string]json.RawMessage
 36455  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 36456  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36457  	}
 36458  	for key, val := range rawMsg {
 36459  		var err error
 36460  		switch key {
 36461  		case "allowForwardedTraffic":
 36462  			err = unpopulate(val, "AllowForwardedTraffic", &v.AllowForwardedTraffic)
 36463  			delete(rawMsg, key)
 36464  		case "allowGatewayTransit":
 36465  			err = unpopulate(val, "AllowGatewayTransit", &v.AllowGatewayTransit)
 36466  			delete(rawMsg, key)
 36467  		case "allowVirtualNetworkAccess":
 36468  			err = unpopulate(val, "AllowVirtualNetworkAccess", &v.AllowVirtualNetworkAccess)
 36469  			delete(rawMsg, key)
 36470  		case "doNotVerifyRemoteGateways":
 36471  			err = unpopulate(val, "DoNotVerifyRemoteGateways", &v.DoNotVerifyRemoteGateways)
 36472  			delete(rawMsg, key)
 36473  		case "enableOnlyIPv6Peering":
 36474  			err = unpopulate(val, "EnableOnlyIPv6Peering", &v.EnableOnlyIPv6Peering)
 36475  			delete(rawMsg, key)
 36476  		case "localAddressSpace":
 36477  			err = unpopulate(val, "LocalAddressSpace", &v.LocalAddressSpace)
 36478  			delete(rawMsg, key)
 36479  		case "localSubnetNames":
 36480  			err = unpopulate(val, "LocalSubnetNames", &v.LocalSubnetNames)
 36481  			delete(rawMsg, key)
 36482  		case "localVirtualNetworkAddressSpace":
 36483  			err = unpopulate(val, "LocalVirtualNetworkAddressSpace", &v.LocalVirtualNetworkAddressSpace)
 36484  			delete(rawMsg, key)
 36485  		case "peerCompleteVnets":
 36486  			err = unpopulate(val, "PeerCompleteVnets", &v.PeerCompleteVnets)
 36487  			delete(rawMsg, key)
 36488  		case "peeringState":
 36489  			err = unpopulate(val, "PeeringState", &v.PeeringState)
 36490  			delete(rawMsg, key)
 36491  		case "peeringSyncLevel":
 36492  			err = unpopulate(val, "PeeringSyncLevel", &v.PeeringSyncLevel)
 36493  			delete(rawMsg, key)
 36494  		case "provisioningState":
 36495  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 36496  			delete(rawMsg, key)
 36497  		case "remoteAddressSpace":
 36498  			err = unpopulate(val, "RemoteAddressSpace", &v.RemoteAddressSpace)
 36499  			delete(rawMsg, key)
 36500  		case "remoteBgpCommunities":
 36501  			err = unpopulate(val, "RemoteBgpCommunities", &v.RemoteBgpCommunities)
 36502  			delete(rawMsg, key)
 36503  		case "remoteSubnetNames":
 36504  			err = unpopulate(val, "RemoteSubnetNames", &v.RemoteSubnetNames)
 36505  			delete(rawMsg, key)
 36506  		case "remoteVirtualNetwork":
 36507  			err = unpopulate(val, "RemoteVirtualNetwork", &v.RemoteVirtualNetwork)
 36508  			delete(rawMsg, key)
 36509  		case "remoteVirtualNetworkAddressSpace":
 36510  			err = unpopulate(val, "RemoteVirtualNetworkAddressSpace", &v.RemoteVirtualNetworkAddressSpace)
 36511  			delete(rawMsg, key)
 36512  		case "remoteVirtualNetworkEncryption":
 36513  			err = unpopulate(val, "RemoteVirtualNetworkEncryption", &v.RemoteVirtualNetworkEncryption)
 36514  			delete(rawMsg, key)
 36515  		case "resourceGuid":
 36516  			err = unpopulate(val, "ResourceGUID", &v.ResourceGUID)
 36517  			delete(rawMsg, key)
 36518  		case "useRemoteGateways":
 36519  			err = unpopulate(val, "UseRemoteGateways", &v.UseRemoteGateways)
 36520  			delete(rawMsg, key)
 36521  		}
 36522  		if err != nil {
 36523  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36524  		}
 36525  	}
 36526  	return nil
 36527  }
 36528  
 36529  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkPropertiesFormat.
 36530  func (v VirtualNetworkPropertiesFormat) MarshalJSON() ([]byte, error) {
 36531  	objectMap := make(map[string]any)
 36532  	populate(objectMap, "addressSpace", v.AddressSpace)
 36533  	populate(objectMap, "bgpCommunities", v.BgpCommunities)
 36534  	populate(objectMap, "ddosProtectionPlan", v.DdosProtectionPlan)
 36535  	populate(objectMap, "dhcpOptions", v.DhcpOptions)
 36536  	populate(objectMap, "enableDdosProtection", v.EnableDdosProtection)
 36537  	populate(objectMap, "enableVmProtection", v.EnableVMProtection)
 36538  	populate(objectMap, "encryption", v.Encryption)
 36539  	populate(objectMap, "flowLogs", v.FlowLogs)
 36540  	populate(objectMap, "flowTimeoutInMinutes", v.FlowTimeoutInMinutes)
 36541  	populate(objectMap, "ipAllocations", v.IPAllocations)
 36542  	populate(objectMap, "privateEndpointVNetPolicies", v.PrivateEndpointVNetPolicies)
 36543  	populate(objectMap, "provisioningState", v.ProvisioningState)
 36544  	populate(objectMap, "resourceGuid", v.ResourceGUID)
 36545  	populate(objectMap, "subnets", v.Subnets)
 36546  	populate(objectMap, "virtualNetworkPeerings", v.VirtualNetworkPeerings)
 36547  	return json.Marshal(objectMap)
 36548  }
 36549  
 36550  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkPropertiesFormat.
 36551  func (v *VirtualNetworkPropertiesFormat) UnmarshalJSON(data []byte) error {
 36552  	var rawMsg map[string]json.RawMessage
 36553  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 36554  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36555  	}
 36556  	for key, val := range rawMsg {
 36557  		var err error
 36558  		switch key {
 36559  		case "addressSpace":
 36560  			err = unpopulate(val, "AddressSpace", &v.AddressSpace)
 36561  			delete(rawMsg, key)
 36562  		case "bgpCommunities":
 36563  			err = unpopulate(val, "BgpCommunities", &v.BgpCommunities)
 36564  			delete(rawMsg, key)
 36565  		case "ddosProtectionPlan":
 36566  			err = unpopulate(val, "DdosProtectionPlan", &v.DdosProtectionPlan)
 36567  			delete(rawMsg, key)
 36568  		case "dhcpOptions":
 36569  			err = unpopulate(val, "DhcpOptions", &v.DhcpOptions)
 36570  			delete(rawMsg, key)
 36571  		case "enableDdosProtection":
 36572  			err = unpopulate(val, "EnableDdosProtection", &v.EnableDdosProtection)
 36573  			delete(rawMsg, key)
 36574  		case "enableVmProtection":
 36575  			err = unpopulate(val, "EnableVMProtection", &v.EnableVMProtection)
 36576  			delete(rawMsg, key)
 36577  		case "encryption":
 36578  			err = unpopulate(val, "Encryption", &v.Encryption)
 36579  			delete(rawMsg, key)
 36580  		case "flowLogs":
 36581  			err = unpopulate(val, "FlowLogs", &v.FlowLogs)
 36582  			delete(rawMsg, key)
 36583  		case "flowTimeoutInMinutes":
 36584  			err = unpopulate(val, "FlowTimeoutInMinutes", &v.FlowTimeoutInMinutes)
 36585  			delete(rawMsg, key)
 36586  		case "ipAllocations":
 36587  			err = unpopulate(val, "IPAllocations", &v.IPAllocations)
 36588  			delete(rawMsg, key)
 36589  		case "privateEndpointVNetPolicies":
 36590  			err = unpopulate(val, "PrivateEndpointVNetPolicies", &v.PrivateEndpointVNetPolicies)
 36591  			delete(rawMsg, key)
 36592  		case "provisioningState":
 36593  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 36594  			delete(rawMsg, key)
 36595  		case "resourceGuid":
 36596  			err = unpopulate(val, "ResourceGUID", &v.ResourceGUID)
 36597  			delete(rawMsg, key)
 36598  		case "subnets":
 36599  			err = unpopulate(val, "Subnets", &v.Subnets)
 36600  			delete(rawMsg, key)
 36601  		case "virtualNetworkPeerings":
 36602  			err = unpopulate(val, "VirtualNetworkPeerings", &v.VirtualNetworkPeerings)
 36603  			delete(rawMsg, key)
 36604  		}
 36605  		if err != nil {
 36606  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36607  		}
 36608  	}
 36609  	return nil
 36610  }
 36611  
 36612  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkTap.
 36613  func (v VirtualNetworkTap) MarshalJSON() ([]byte, error) {
 36614  	objectMap := make(map[string]any)
 36615  	populate(objectMap, "etag", v.Etag)
 36616  	populate(objectMap, "id", v.ID)
 36617  	populate(objectMap, "location", v.Location)
 36618  	populate(objectMap, "name", v.Name)
 36619  	populate(objectMap, "properties", v.Properties)
 36620  	populate(objectMap, "tags", v.Tags)
 36621  	populate(objectMap, "type", v.Type)
 36622  	return json.Marshal(objectMap)
 36623  }
 36624  
 36625  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkTap.
 36626  func (v *VirtualNetworkTap) UnmarshalJSON(data []byte) error {
 36627  	var rawMsg map[string]json.RawMessage
 36628  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 36629  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36630  	}
 36631  	for key, val := range rawMsg {
 36632  		var err error
 36633  		switch key {
 36634  		case "etag":
 36635  			err = unpopulate(val, "Etag", &v.Etag)
 36636  			delete(rawMsg, key)
 36637  		case "id":
 36638  			err = unpopulate(val, "ID", &v.ID)
 36639  			delete(rawMsg, key)
 36640  		case "location":
 36641  			err = unpopulate(val, "Location", &v.Location)
 36642  			delete(rawMsg, key)
 36643  		case "name":
 36644  			err = unpopulate(val, "Name", &v.Name)
 36645  			delete(rawMsg, key)
 36646  		case "properties":
 36647  			err = unpopulate(val, "Properties", &v.Properties)
 36648  			delete(rawMsg, key)
 36649  		case "tags":
 36650  			err = unpopulate(val, "Tags", &v.Tags)
 36651  			delete(rawMsg, key)
 36652  		case "type":
 36653  			err = unpopulate(val, "Type", &v.Type)
 36654  			delete(rawMsg, key)
 36655  		}
 36656  		if err != nil {
 36657  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36658  		}
 36659  	}
 36660  	return nil
 36661  }
 36662  
 36663  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkTapListResult.
 36664  func (v VirtualNetworkTapListResult) MarshalJSON() ([]byte, error) {
 36665  	objectMap := make(map[string]any)
 36666  	populate(objectMap, "nextLink", v.NextLink)
 36667  	populate(objectMap, "value", v.Value)
 36668  	return json.Marshal(objectMap)
 36669  }
 36670  
 36671  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkTapListResult.
 36672  func (v *VirtualNetworkTapListResult) UnmarshalJSON(data []byte) error {
 36673  	var rawMsg map[string]json.RawMessage
 36674  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 36675  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36676  	}
 36677  	for key, val := range rawMsg {
 36678  		var err error
 36679  		switch key {
 36680  		case "nextLink":
 36681  			err = unpopulate(val, "NextLink", &v.NextLink)
 36682  			delete(rawMsg, key)
 36683  		case "value":
 36684  			err = unpopulate(val, "Value", &v.Value)
 36685  			delete(rawMsg, key)
 36686  		}
 36687  		if err != nil {
 36688  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36689  		}
 36690  	}
 36691  	return nil
 36692  }
 36693  
 36694  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkTapPropertiesFormat.
 36695  func (v VirtualNetworkTapPropertiesFormat) MarshalJSON() ([]byte, error) {
 36696  	objectMap := make(map[string]any)
 36697  	populate(objectMap, "destinationLoadBalancerFrontEndIPConfiguration", v.DestinationLoadBalancerFrontEndIPConfiguration)
 36698  	populate(objectMap, "destinationNetworkInterfaceIPConfiguration", v.DestinationNetworkInterfaceIPConfiguration)
 36699  	populate(objectMap, "destinationPort", v.DestinationPort)
 36700  	populate(objectMap, "networkInterfaceTapConfigurations", v.NetworkInterfaceTapConfigurations)
 36701  	populate(objectMap, "provisioningState", v.ProvisioningState)
 36702  	populate(objectMap, "resourceGuid", v.ResourceGUID)
 36703  	return json.Marshal(objectMap)
 36704  }
 36705  
 36706  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkTapPropertiesFormat.
 36707  func (v *VirtualNetworkTapPropertiesFormat) UnmarshalJSON(data []byte) error {
 36708  	var rawMsg map[string]json.RawMessage
 36709  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 36710  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36711  	}
 36712  	for key, val := range rawMsg {
 36713  		var err error
 36714  		switch key {
 36715  		case "destinationLoadBalancerFrontEndIPConfiguration":
 36716  			err = unpopulate(val, "DestinationLoadBalancerFrontEndIPConfiguration", &v.DestinationLoadBalancerFrontEndIPConfiguration)
 36717  			delete(rawMsg, key)
 36718  		case "destinationNetworkInterfaceIPConfiguration":
 36719  			err = unpopulate(val, "DestinationNetworkInterfaceIPConfiguration", &v.DestinationNetworkInterfaceIPConfiguration)
 36720  			delete(rawMsg, key)
 36721  		case "destinationPort":
 36722  			err = unpopulate(val, "DestinationPort", &v.DestinationPort)
 36723  			delete(rawMsg, key)
 36724  		case "networkInterfaceTapConfigurations":
 36725  			err = unpopulate(val, "NetworkInterfaceTapConfigurations", &v.NetworkInterfaceTapConfigurations)
 36726  			delete(rawMsg, key)
 36727  		case "provisioningState":
 36728  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 36729  			delete(rawMsg, key)
 36730  		case "resourceGuid":
 36731  			err = unpopulate(val, "ResourceGUID", &v.ResourceGUID)
 36732  			delete(rawMsg, key)
 36733  		}
 36734  		if err != nil {
 36735  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36736  		}
 36737  	}
 36738  	return nil
 36739  }
 36740  
 36741  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkUsage.
 36742  func (v VirtualNetworkUsage) MarshalJSON() ([]byte, error) {
 36743  	objectMap := make(map[string]any)
 36744  	populate(objectMap, "currentValue", v.CurrentValue)
 36745  	populate(objectMap, "id", v.ID)
 36746  	populate(objectMap, "limit", v.Limit)
 36747  	populate(objectMap, "name", v.Name)
 36748  	populate(objectMap, "unit", v.Unit)
 36749  	return json.Marshal(objectMap)
 36750  }
 36751  
 36752  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkUsage.
 36753  func (v *VirtualNetworkUsage) UnmarshalJSON(data []byte) error {
 36754  	var rawMsg map[string]json.RawMessage
 36755  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 36756  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36757  	}
 36758  	for key, val := range rawMsg {
 36759  		var err error
 36760  		switch key {
 36761  		case "currentValue":
 36762  			err = unpopulate(val, "CurrentValue", &v.CurrentValue)
 36763  			delete(rawMsg, key)
 36764  		case "id":
 36765  			err = unpopulate(val, "ID", &v.ID)
 36766  			delete(rawMsg, key)
 36767  		case "limit":
 36768  			err = unpopulate(val, "Limit", &v.Limit)
 36769  			delete(rawMsg, key)
 36770  		case "name":
 36771  			err = unpopulate(val, "Name", &v.Name)
 36772  			delete(rawMsg, key)
 36773  		case "unit":
 36774  			err = unpopulate(val, "Unit", &v.Unit)
 36775  			delete(rawMsg, key)
 36776  		}
 36777  		if err != nil {
 36778  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36779  		}
 36780  	}
 36781  	return nil
 36782  }
 36783  
 36784  // MarshalJSON implements the json.Marshaller interface for type VirtualNetworkUsageName.
 36785  func (v VirtualNetworkUsageName) MarshalJSON() ([]byte, error) {
 36786  	objectMap := make(map[string]any)
 36787  	populate(objectMap, "localizedValue", v.LocalizedValue)
 36788  	populate(objectMap, "value", v.Value)
 36789  	return json.Marshal(objectMap)
 36790  }
 36791  
 36792  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualNetworkUsageName.
 36793  func (v *VirtualNetworkUsageName) UnmarshalJSON(data []byte) error {
 36794  	var rawMsg map[string]json.RawMessage
 36795  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 36796  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36797  	}
 36798  	for key, val := range rawMsg {
 36799  		var err error
 36800  		switch key {
 36801  		case "localizedValue":
 36802  			err = unpopulate(val, "LocalizedValue", &v.LocalizedValue)
 36803  			delete(rawMsg, key)
 36804  		case "value":
 36805  			err = unpopulate(val, "Value", &v.Value)
 36806  			delete(rawMsg, key)
 36807  		}
 36808  		if err != nil {
 36809  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36810  		}
 36811  	}
 36812  	return nil
 36813  }
 36814  
 36815  // MarshalJSON implements the json.Marshaller interface for type VirtualRouter.
 36816  func (v VirtualRouter) MarshalJSON() ([]byte, error) {
 36817  	objectMap := make(map[string]any)
 36818  	populate(objectMap, "etag", v.Etag)
 36819  	populate(objectMap, "id", v.ID)
 36820  	populate(objectMap, "location", v.Location)
 36821  	populate(objectMap, "name", v.Name)
 36822  	populate(objectMap, "properties", v.Properties)
 36823  	populate(objectMap, "tags", v.Tags)
 36824  	populate(objectMap, "type", v.Type)
 36825  	return json.Marshal(objectMap)
 36826  }
 36827  
 36828  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualRouter.
 36829  func (v *VirtualRouter) UnmarshalJSON(data []byte) error {
 36830  	var rawMsg map[string]json.RawMessage
 36831  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 36832  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36833  	}
 36834  	for key, val := range rawMsg {
 36835  		var err error
 36836  		switch key {
 36837  		case "etag":
 36838  			err = unpopulate(val, "Etag", &v.Etag)
 36839  			delete(rawMsg, key)
 36840  		case "id":
 36841  			err = unpopulate(val, "ID", &v.ID)
 36842  			delete(rawMsg, key)
 36843  		case "location":
 36844  			err = unpopulate(val, "Location", &v.Location)
 36845  			delete(rawMsg, key)
 36846  		case "name":
 36847  			err = unpopulate(val, "Name", &v.Name)
 36848  			delete(rawMsg, key)
 36849  		case "properties":
 36850  			err = unpopulate(val, "Properties", &v.Properties)
 36851  			delete(rawMsg, key)
 36852  		case "tags":
 36853  			err = unpopulate(val, "Tags", &v.Tags)
 36854  			delete(rawMsg, key)
 36855  		case "type":
 36856  			err = unpopulate(val, "Type", &v.Type)
 36857  			delete(rawMsg, key)
 36858  		}
 36859  		if err != nil {
 36860  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36861  		}
 36862  	}
 36863  	return nil
 36864  }
 36865  
 36866  // MarshalJSON implements the json.Marshaller interface for type VirtualRouterAutoScaleConfiguration.
 36867  func (v VirtualRouterAutoScaleConfiguration) MarshalJSON() ([]byte, error) {
 36868  	objectMap := make(map[string]any)
 36869  	populate(objectMap, "minCapacity", v.MinCapacity)
 36870  	return json.Marshal(objectMap)
 36871  }
 36872  
 36873  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualRouterAutoScaleConfiguration.
 36874  func (v *VirtualRouterAutoScaleConfiguration) UnmarshalJSON(data []byte) error {
 36875  	var rawMsg map[string]json.RawMessage
 36876  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 36877  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36878  	}
 36879  	for key, val := range rawMsg {
 36880  		var err error
 36881  		switch key {
 36882  		case "minCapacity":
 36883  			err = unpopulate(val, "MinCapacity", &v.MinCapacity)
 36884  			delete(rawMsg, key)
 36885  		}
 36886  		if err != nil {
 36887  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36888  		}
 36889  	}
 36890  	return nil
 36891  }
 36892  
 36893  // MarshalJSON implements the json.Marshaller interface for type VirtualRouterListResult.
 36894  func (v VirtualRouterListResult) MarshalJSON() ([]byte, error) {
 36895  	objectMap := make(map[string]any)
 36896  	populate(objectMap, "nextLink", v.NextLink)
 36897  	populate(objectMap, "value", v.Value)
 36898  	return json.Marshal(objectMap)
 36899  }
 36900  
 36901  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualRouterListResult.
 36902  func (v *VirtualRouterListResult) UnmarshalJSON(data []byte) error {
 36903  	var rawMsg map[string]json.RawMessage
 36904  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 36905  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36906  	}
 36907  	for key, val := range rawMsg {
 36908  		var err error
 36909  		switch key {
 36910  		case "nextLink":
 36911  			err = unpopulate(val, "NextLink", &v.NextLink)
 36912  			delete(rawMsg, key)
 36913  		case "value":
 36914  			err = unpopulate(val, "Value", &v.Value)
 36915  			delete(rawMsg, key)
 36916  		}
 36917  		if err != nil {
 36918  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36919  		}
 36920  	}
 36921  	return nil
 36922  }
 36923  
 36924  // MarshalJSON implements the json.Marshaller interface for type VirtualRouterPeering.
 36925  func (v VirtualRouterPeering) MarshalJSON() ([]byte, error) {
 36926  	objectMap := make(map[string]any)
 36927  	populate(objectMap, "etag", v.Etag)
 36928  	populate(objectMap, "id", v.ID)
 36929  	populate(objectMap, "name", v.Name)
 36930  	populate(objectMap, "properties", v.Properties)
 36931  	populate(objectMap, "type", v.Type)
 36932  	return json.Marshal(objectMap)
 36933  }
 36934  
 36935  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualRouterPeering.
 36936  func (v *VirtualRouterPeering) UnmarshalJSON(data []byte) error {
 36937  	var rawMsg map[string]json.RawMessage
 36938  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 36939  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36940  	}
 36941  	for key, val := range rawMsg {
 36942  		var err error
 36943  		switch key {
 36944  		case "etag":
 36945  			err = unpopulate(val, "Etag", &v.Etag)
 36946  			delete(rawMsg, key)
 36947  		case "id":
 36948  			err = unpopulate(val, "ID", &v.ID)
 36949  			delete(rawMsg, key)
 36950  		case "name":
 36951  			err = unpopulate(val, "Name", &v.Name)
 36952  			delete(rawMsg, key)
 36953  		case "properties":
 36954  			err = unpopulate(val, "Properties", &v.Properties)
 36955  			delete(rawMsg, key)
 36956  		case "type":
 36957  			err = unpopulate(val, "Type", &v.Type)
 36958  			delete(rawMsg, key)
 36959  		}
 36960  		if err != nil {
 36961  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36962  		}
 36963  	}
 36964  	return nil
 36965  }
 36966  
 36967  // MarshalJSON implements the json.Marshaller interface for type VirtualRouterPeeringListResult.
 36968  func (v VirtualRouterPeeringListResult) MarshalJSON() ([]byte, error) {
 36969  	objectMap := make(map[string]any)
 36970  	populate(objectMap, "nextLink", v.NextLink)
 36971  	populate(objectMap, "value", v.Value)
 36972  	return json.Marshal(objectMap)
 36973  }
 36974  
 36975  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualRouterPeeringListResult.
 36976  func (v *VirtualRouterPeeringListResult) UnmarshalJSON(data []byte) error {
 36977  	var rawMsg map[string]json.RawMessage
 36978  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 36979  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36980  	}
 36981  	for key, val := range rawMsg {
 36982  		var err error
 36983  		switch key {
 36984  		case "nextLink":
 36985  			err = unpopulate(val, "NextLink", &v.NextLink)
 36986  			delete(rawMsg, key)
 36987  		case "value":
 36988  			err = unpopulate(val, "Value", &v.Value)
 36989  			delete(rawMsg, key)
 36990  		}
 36991  		if err != nil {
 36992  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 36993  		}
 36994  	}
 36995  	return nil
 36996  }
 36997  
 36998  // MarshalJSON implements the json.Marshaller interface for type VirtualRouterPeeringProperties.
 36999  func (v VirtualRouterPeeringProperties) MarshalJSON() ([]byte, error) {
 37000  	objectMap := make(map[string]any)
 37001  	populate(objectMap, "peerAsn", v.PeerAsn)
 37002  	populate(objectMap, "peerIp", v.PeerIP)
 37003  	populate(objectMap, "provisioningState", v.ProvisioningState)
 37004  	return json.Marshal(objectMap)
 37005  }
 37006  
 37007  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualRouterPeeringProperties.
 37008  func (v *VirtualRouterPeeringProperties) UnmarshalJSON(data []byte) error {
 37009  	var rawMsg map[string]json.RawMessage
 37010  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 37011  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 37012  	}
 37013  	for key, val := range rawMsg {
 37014  		var err error
 37015  		switch key {
 37016  		case "peerAsn":
 37017  			err = unpopulate(val, "PeerAsn", &v.PeerAsn)
 37018  			delete(rawMsg, key)
 37019  		case "peerIp":
 37020  			err = unpopulate(val, "PeerIP", &v.PeerIP)
 37021  			delete(rawMsg, key)
 37022  		case "provisioningState":
 37023  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 37024  			delete(rawMsg, key)
 37025  		}
 37026  		if err != nil {
 37027  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 37028  		}
 37029  	}
 37030  	return nil
 37031  }
 37032  
 37033  // MarshalJSON implements the json.Marshaller interface for type VirtualRouterPropertiesFormat.
 37034  func (v VirtualRouterPropertiesFormat) MarshalJSON() ([]byte, error) {
 37035  	objectMap := make(map[string]any)
 37036  	populate(objectMap, "hostedGateway", v.HostedGateway)
 37037  	populate(objectMap, "hostedSubnet", v.HostedSubnet)
 37038  	populate(objectMap, "peerings", v.Peerings)
 37039  	populate(objectMap, "provisioningState", v.ProvisioningState)
 37040  	populate(objectMap, "virtualRouterAsn", v.VirtualRouterAsn)
 37041  	populate(objectMap, "virtualRouterIps", v.VirtualRouterIPs)
 37042  	return json.Marshal(objectMap)
 37043  }
 37044  
 37045  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualRouterPropertiesFormat.
 37046  func (v *VirtualRouterPropertiesFormat) UnmarshalJSON(data []byte) error {
 37047  	var rawMsg map[string]json.RawMessage
 37048  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 37049  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 37050  	}
 37051  	for key, val := range rawMsg {
 37052  		var err error
 37053  		switch key {
 37054  		case "hostedGateway":
 37055  			err = unpopulate(val, "HostedGateway", &v.HostedGateway)
 37056  			delete(rawMsg, key)
 37057  		case "hostedSubnet":
 37058  			err = unpopulate(val, "HostedSubnet", &v.HostedSubnet)
 37059  			delete(rawMsg, key)
 37060  		case "peerings":
 37061  			err = unpopulate(val, "Peerings", &v.Peerings)
 37062  			delete(rawMsg, key)
 37063  		case "provisioningState":
 37064  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 37065  			delete(rawMsg, key)
 37066  		case "virtualRouterAsn":
 37067  			err = unpopulate(val, "VirtualRouterAsn", &v.VirtualRouterAsn)
 37068  			delete(rawMsg, key)
 37069  		case "virtualRouterIps":
 37070  			err = unpopulate(val, "VirtualRouterIPs", &v.VirtualRouterIPs)
 37071  			delete(rawMsg, key)
 37072  		}
 37073  		if err != nil {
 37074  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 37075  		}
 37076  	}
 37077  	return nil
 37078  }
 37079  
 37080  // MarshalJSON implements the json.Marshaller interface for type VirtualWAN.
 37081  func (v VirtualWAN) MarshalJSON() ([]byte, error) {
 37082  	objectMap := make(map[string]any)
 37083  	populate(objectMap, "etag", v.Etag)
 37084  	populate(objectMap, "id", v.ID)
 37085  	populate(objectMap, "location", v.Location)
 37086  	populate(objectMap, "name", v.Name)
 37087  	populate(objectMap, "properties", v.Properties)
 37088  	populate(objectMap, "tags", v.Tags)
 37089  	populate(objectMap, "type", v.Type)
 37090  	return json.Marshal(objectMap)
 37091  }
 37092  
 37093  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualWAN.
 37094  func (v *VirtualWAN) UnmarshalJSON(data []byte) error {
 37095  	var rawMsg map[string]json.RawMessage
 37096  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 37097  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 37098  	}
 37099  	for key, val := range rawMsg {
 37100  		var err error
 37101  		switch key {
 37102  		case "etag":
 37103  			err = unpopulate(val, "Etag", &v.Etag)
 37104  			delete(rawMsg, key)
 37105  		case "id":
 37106  			err = unpopulate(val, "ID", &v.ID)
 37107  			delete(rawMsg, key)
 37108  		case "location":
 37109  			err = unpopulate(val, "Location", &v.Location)
 37110  			delete(rawMsg, key)
 37111  		case "name":
 37112  			err = unpopulate(val, "Name", &v.Name)
 37113  			delete(rawMsg, key)
 37114  		case "properties":
 37115  			err = unpopulate(val, "Properties", &v.Properties)
 37116  			delete(rawMsg, key)
 37117  		case "tags":
 37118  			err = unpopulate(val, "Tags", &v.Tags)
 37119  			delete(rawMsg, key)
 37120  		case "type":
 37121  			err = unpopulate(val, "Type", &v.Type)
 37122  			delete(rawMsg, key)
 37123  		}
 37124  		if err != nil {
 37125  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 37126  		}
 37127  	}
 37128  	return nil
 37129  }
 37130  
 37131  // MarshalJSON implements the json.Marshaller interface for type VirtualWanProperties.
 37132  func (v VirtualWanProperties) MarshalJSON() ([]byte, error) {
 37133  	objectMap := make(map[string]any)
 37134  	populate(objectMap, "allowBranchToBranchTraffic", v.AllowBranchToBranchTraffic)
 37135  	populate(objectMap, "allowVnetToVnetTraffic", v.AllowVnetToVnetTraffic)
 37136  	populate(objectMap, "disableVpnEncryption", v.DisableVPNEncryption)
 37137  	populate(objectMap, "office365LocalBreakoutCategory", v.Office365LocalBreakoutCategory)
 37138  	populate(objectMap, "provisioningState", v.ProvisioningState)
 37139  	populate(objectMap, "type", v.Type)
 37140  	populate(objectMap, "vpnSites", v.VPNSites)
 37141  	populate(objectMap, "virtualHubs", v.VirtualHubs)
 37142  	return json.Marshal(objectMap)
 37143  }
 37144  
 37145  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualWanProperties.
 37146  func (v *VirtualWanProperties) UnmarshalJSON(data []byte) error {
 37147  	var rawMsg map[string]json.RawMessage
 37148  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 37149  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 37150  	}
 37151  	for key, val := range rawMsg {
 37152  		var err error
 37153  		switch key {
 37154  		case "allowBranchToBranchTraffic":
 37155  			err = unpopulate(val, "AllowBranchToBranchTraffic", &v.AllowBranchToBranchTraffic)
 37156  			delete(rawMsg, key)
 37157  		case "allowVnetToVnetTraffic":
 37158  			err = unpopulate(val, "AllowVnetToVnetTraffic", &v.AllowVnetToVnetTraffic)
 37159  			delete(rawMsg, key)
 37160  		case "disableVpnEncryption":
 37161  			err = unpopulate(val, "DisableVPNEncryption", &v.DisableVPNEncryption)
 37162  			delete(rawMsg, key)
 37163  		case "office365LocalBreakoutCategory":
 37164  			err = unpopulate(val, "Office365LocalBreakoutCategory", &v.Office365LocalBreakoutCategory)
 37165  			delete(rawMsg, key)
 37166  		case "provisioningState":
 37167  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 37168  			delete(rawMsg, key)
 37169  		case "type":
 37170  			err = unpopulate(val, "Type", &v.Type)
 37171  			delete(rawMsg, key)
 37172  		case "vpnSites":
 37173  			err = unpopulate(val, "VPNSites", &v.VPNSites)
 37174  			delete(rawMsg, key)
 37175  		case "virtualHubs":
 37176  			err = unpopulate(val, "VirtualHubs", &v.VirtualHubs)
 37177  			delete(rawMsg, key)
 37178  		}
 37179  		if err != nil {
 37180  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 37181  		}
 37182  	}
 37183  	return nil
 37184  }
 37185  
 37186  // MarshalJSON implements the json.Marshaller interface for type VirtualWanSecurityProvider.
 37187  func (v VirtualWanSecurityProvider) MarshalJSON() ([]byte, error) {
 37188  	objectMap := make(map[string]any)
 37189  	populate(objectMap, "name", v.Name)
 37190  	populate(objectMap, "type", v.Type)
 37191  	populate(objectMap, "url", v.URL)
 37192  	return json.Marshal(objectMap)
 37193  }
 37194  
 37195  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualWanSecurityProvider.
 37196  func (v *VirtualWanSecurityProvider) UnmarshalJSON(data []byte) error {
 37197  	var rawMsg map[string]json.RawMessage
 37198  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 37199  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 37200  	}
 37201  	for key, val := range rawMsg {
 37202  		var err error
 37203  		switch key {
 37204  		case "name":
 37205  			err = unpopulate(val, "Name", &v.Name)
 37206  			delete(rawMsg, key)
 37207  		case "type":
 37208  			err = unpopulate(val, "Type", &v.Type)
 37209  			delete(rawMsg, key)
 37210  		case "url":
 37211  			err = unpopulate(val, "URL", &v.URL)
 37212  			delete(rawMsg, key)
 37213  		}
 37214  		if err != nil {
 37215  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 37216  		}
 37217  	}
 37218  	return nil
 37219  }
 37220  
 37221  // MarshalJSON implements the json.Marshaller interface for type VirtualWanSecurityProviders.
 37222  func (v VirtualWanSecurityProviders) MarshalJSON() ([]byte, error) {
 37223  	objectMap := make(map[string]any)
 37224  	populate(objectMap, "supportedProviders", v.SupportedProviders)
 37225  	return json.Marshal(objectMap)
 37226  }
 37227  
 37228  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualWanSecurityProviders.
 37229  func (v *VirtualWanSecurityProviders) UnmarshalJSON(data []byte) error {
 37230  	var rawMsg map[string]json.RawMessage
 37231  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 37232  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 37233  	}
 37234  	for key, val := range rawMsg {
 37235  		var err error
 37236  		switch key {
 37237  		case "supportedProviders":
 37238  			err = unpopulate(val, "SupportedProviders", &v.SupportedProviders)
 37239  			delete(rawMsg, key)
 37240  		}
 37241  		if err != nil {
 37242  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 37243  		}
 37244  	}
 37245  	return nil
 37246  }
 37247  
 37248  // MarshalJSON implements the json.Marshaller interface for type VirtualWanVPNProfileParameters.
 37249  func (v VirtualWanVPNProfileParameters) MarshalJSON() ([]byte, error) {
 37250  	objectMap := make(map[string]any)
 37251  	populate(objectMap, "authenticationMethod", v.AuthenticationMethod)
 37252  	populate(objectMap, "vpnServerConfigurationResourceId", v.VPNServerConfigurationResourceID)
 37253  	return json.Marshal(objectMap)
 37254  }
 37255  
 37256  // UnmarshalJSON implements the json.Unmarshaller interface for type VirtualWanVPNProfileParameters.
 37257  func (v *VirtualWanVPNProfileParameters) UnmarshalJSON(data []byte) error {
 37258  	var rawMsg map[string]json.RawMessage
 37259  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 37260  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 37261  	}
 37262  	for key, val := range rawMsg {
 37263  		var err error
 37264  		switch key {
 37265  		case "authenticationMethod":
 37266  			err = unpopulate(val, "AuthenticationMethod", &v.AuthenticationMethod)
 37267  			delete(rawMsg, key)
 37268  		case "vpnServerConfigurationResourceId":
 37269  			err = unpopulate(val, "VPNServerConfigurationResourceID", &v.VPNServerConfigurationResourceID)
 37270  			delete(rawMsg, key)
 37271  		}
 37272  		if err != nil {
 37273  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 37274  		}
 37275  	}
 37276  	return nil
 37277  }
 37278  
 37279  // MarshalJSON implements the json.Marshaller interface for type VnetRoute.
 37280  func (v VnetRoute) MarshalJSON() ([]byte, error) {
 37281  	objectMap := make(map[string]any)
 37282  	populate(objectMap, "bgpConnections", v.BgpConnections)
 37283  	populate(objectMap, "staticRoutes", v.StaticRoutes)
 37284  	populate(objectMap, "staticRoutesConfig", v.StaticRoutesConfig)
 37285  	return json.Marshal(objectMap)
 37286  }
 37287  
 37288  // UnmarshalJSON implements the json.Unmarshaller interface for type VnetRoute.
 37289  func (v *VnetRoute) UnmarshalJSON(data []byte) error {
 37290  	var rawMsg map[string]json.RawMessage
 37291  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 37292  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 37293  	}
 37294  	for key, val := range rawMsg {
 37295  		var err error
 37296  		switch key {
 37297  		case "bgpConnections":
 37298  			err = unpopulate(val, "BgpConnections", &v.BgpConnections)
 37299  			delete(rawMsg, key)
 37300  		case "staticRoutes":
 37301  			err = unpopulate(val, "StaticRoutes", &v.StaticRoutes)
 37302  			delete(rawMsg, key)
 37303  		case "staticRoutesConfig":
 37304  			err = unpopulate(val, "StaticRoutesConfig", &v.StaticRoutesConfig)
 37305  			delete(rawMsg, key)
 37306  		}
 37307  		if err != nil {
 37308  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 37309  		}
 37310  	}
 37311  	return nil
 37312  }
 37313  
 37314  // MarshalJSON implements the json.Marshaller interface for type VngClientConnectionConfiguration.
 37315  func (v VngClientConnectionConfiguration) MarshalJSON() ([]byte, error) {
 37316  	objectMap := make(map[string]any)
 37317  	populate(objectMap, "etag", v.Etag)
 37318  	populate(objectMap, "id", v.ID)
 37319  	populate(objectMap, "name", v.Name)
 37320  	populate(objectMap, "properties", v.Properties)
 37321  	return json.Marshal(objectMap)
 37322  }
 37323  
 37324  // UnmarshalJSON implements the json.Unmarshaller interface for type VngClientConnectionConfiguration.
 37325  func (v *VngClientConnectionConfiguration) UnmarshalJSON(data []byte) error {
 37326  	var rawMsg map[string]json.RawMessage
 37327  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 37328  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 37329  	}
 37330  	for key, val := range rawMsg {
 37331  		var err error
 37332  		switch key {
 37333  		case "etag":
 37334  			err = unpopulate(val, "Etag", &v.Etag)
 37335  			delete(rawMsg, key)
 37336  		case "id":
 37337  			err = unpopulate(val, "ID", &v.ID)
 37338  			delete(rawMsg, key)
 37339  		case "name":
 37340  			err = unpopulate(val, "Name", &v.Name)
 37341  			delete(rawMsg, key)
 37342  		case "properties":
 37343  			err = unpopulate(val, "Properties", &v.Properties)
 37344  			delete(rawMsg, key)
 37345  		}
 37346  		if err != nil {
 37347  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 37348  		}
 37349  	}
 37350  	return nil
 37351  }
 37352  
 37353  // MarshalJSON implements the json.Marshaller interface for type VngClientConnectionConfigurationProperties.
 37354  func (v VngClientConnectionConfigurationProperties) MarshalJSON() ([]byte, error) {
 37355  	objectMap := make(map[string]any)
 37356  	populate(objectMap, "provisioningState", v.ProvisioningState)
 37357  	populate(objectMap, "vpnClientAddressPool", v.VPNClientAddressPool)
 37358  	populate(objectMap, "virtualNetworkGatewayPolicyGroups", v.VirtualNetworkGatewayPolicyGroups)
 37359  	return json.Marshal(objectMap)
 37360  }
 37361  
 37362  // UnmarshalJSON implements the json.Unmarshaller interface for type VngClientConnectionConfigurationProperties.
 37363  func (v *VngClientConnectionConfigurationProperties) UnmarshalJSON(data []byte) error {
 37364  	var rawMsg map[string]json.RawMessage
 37365  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 37366  		return fmt.Errorf("unmarshalling type %T: %v", v, err)
 37367  	}
 37368  	for key, val := range rawMsg {
 37369  		var err error
 37370  		switch key {
 37371  		case "provisioningState":
 37372  			err = unpopulate(val, "ProvisioningState", &v.ProvisioningState)
 37373  			delete(rawMsg, key)
 37374  		case "vpnClientAddressPool":
 37375  			err = unpopulate(val, "VPNClientAddressPool", &v.VPNClientAddressPool)
 37376  			delete(rawMsg, key)
 37377  		case "virtualNetworkGatewayPolicyGroups":
 37378  			err = unpopulate(val, "VirtualNetworkGatewayPolicyGroups", &v.VirtualNetworkGatewayPolicyGroups)
 37379  			delete(rawMsg, key)
 37380  		}
 37381  		if err != nil {
 37382  			return fmt.Errorf("unmarshalling type %T: %v", v, err)
 37383  		}
 37384  	}
 37385  	return nil
 37386  }
 37387  
 37388  // MarshalJSON implements the json.Marshaller interface for type Watcher.
 37389  func (w Watcher) MarshalJSON() ([]byte, error) {
 37390  	objectMap := make(map[string]any)
 37391  	populate(objectMap, "etag", w.Etag)
 37392  	populate(objectMap, "id", w.ID)
 37393  	populate(objectMap, "location", w.Location)
 37394  	populate(objectMap, "name", w.Name)
 37395  	populate(objectMap, "properties", w.Properties)
 37396  	populate(objectMap, "tags", w.Tags)
 37397  	populate(objectMap, "type", w.Type)
 37398  	return json.Marshal(objectMap)
 37399  }
 37400  
 37401  // UnmarshalJSON implements the json.Unmarshaller interface for type Watcher.
 37402  func (w *Watcher) UnmarshalJSON(data []byte) error {
 37403  	var rawMsg map[string]json.RawMessage
 37404  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 37405  		return fmt.Errorf("unmarshalling type %T: %v", w, err)
 37406  	}
 37407  	for key, val := range rawMsg {
 37408  		var err error
 37409  		switch key {
 37410  		case "etag":
 37411  			err = unpopulate(val, "Etag", &w.Etag)
 37412  			delete(rawMsg, key)
 37413  		case "id":
 37414  			err = unpopulate(val, "ID", &w.ID)
 37415  			delete(rawMsg, key)
 37416  		case "location":
 37417  			err = unpopulate(val, "Location", &w.Location)
 37418  			delete(rawMsg, key)
 37419  		case "name":
 37420  			err = unpopulate(val, "Name", &w.Name)
 37421  			delete(rawMsg, key)
 37422  		case "properties":
 37423  			err = unpopulate(val, "Properties", &w.Properties)
 37424  			delete(rawMsg, key)
 37425  		case "tags":
 37426  			err = unpopulate(val, "Tags", &w.Tags)
 37427  			delete(rawMsg, key)
 37428  		case "type":
 37429  			err = unpopulate(val, "Type", &w.Type)
 37430  			delete(rawMsg, key)
 37431  		}
 37432  		if err != nil {
 37433  			return fmt.Errorf("unmarshalling type %T: %v", w, err)
 37434  		}
 37435  	}
 37436  	return nil
 37437  }
 37438  
 37439  // MarshalJSON implements the json.Marshaller interface for type WatcherListResult.
 37440  func (w WatcherListResult) MarshalJSON() ([]byte, error) {
 37441  	objectMap := make(map[string]any)
 37442  	populate(objectMap, "value", w.Value)
 37443  	return json.Marshal(objectMap)
 37444  }
 37445  
 37446  // UnmarshalJSON implements the json.Unmarshaller interface for type WatcherListResult.
 37447  func (w *WatcherListResult) UnmarshalJSON(data []byte) error {
 37448  	var rawMsg map[string]json.RawMessage
 37449  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 37450  		return fmt.Errorf("unmarshalling type %T: %v", w, err)
 37451  	}
 37452  	for key, val := range rawMsg {
 37453  		var err error
 37454  		switch key {
 37455  		case "value":
 37456  			err = unpopulate(val, "Value", &w.Value)
 37457  			delete(rawMsg, key)
 37458  		}
 37459  		if err != nil {
 37460  			return fmt.Errorf("unmarshalling type %T: %v", w, err)
 37461  		}
 37462  	}
 37463  	return nil
 37464  }
 37465  
 37466  // MarshalJSON implements the json.Marshaller interface for type WatcherPropertiesFormat.
 37467  func (w WatcherPropertiesFormat) MarshalJSON() ([]byte, error) {
 37468  	objectMap := make(map[string]any)
 37469  	populate(objectMap, "provisioningState", w.ProvisioningState)
 37470  	return json.Marshal(objectMap)
 37471  }
 37472  
 37473  // UnmarshalJSON implements the json.Unmarshaller interface for type WatcherPropertiesFormat.
 37474  func (w *WatcherPropertiesFormat) UnmarshalJSON(data []byte) error {
 37475  	var rawMsg map[string]json.RawMessage
 37476  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 37477  		return fmt.Errorf("unmarshalling type %T: %v", w, err)
 37478  	}
 37479  	for key, val := range rawMsg {
 37480  		var err error
 37481  		switch key {
 37482  		case "provisioningState":
 37483  			err = unpopulate(val, "ProvisioningState", &w.ProvisioningState)
 37484  			delete(rawMsg, key)
 37485  		}
 37486  		if err != nil {
 37487  			return fmt.Errorf("unmarshalling type %T: %v", w, err)
 37488  		}
 37489  	}
 37490  	return nil
 37491  }
 37492  
 37493  // MarshalJSON implements the json.Marshaller interface for type WebApplicationFirewallCustomRule.
 37494  func (w WebApplicationFirewallCustomRule) MarshalJSON() ([]byte, error) {
 37495  	objectMap := make(map[string]any)
 37496  	populate(objectMap, "action", w.Action)
 37497  	populate(objectMap, "etag", w.Etag)
 37498  	populate(objectMap, "groupByUserSession", w.GroupByUserSession)
 37499  	populate(objectMap, "matchConditions", w.MatchConditions)
 37500  	populate(objectMap, "name", w.Name)
 37501  	populate(objectMap, "priority", w.Priority)
 37502  	populate(objectMap, "rateLimitDuration", w.RateLimitDuration)
 37503  	populate(objectMap, "rateLimitThreshold", w.RateLimitThreshold)
 37504  	populate(objectMap, "ruleType", w.RuleType)
 37505  	populate(objectMap, "state", w.State)
 37506  	return json.Marshal(objectMap)
 37507  }
 37508  
 37509  // UnmarshalJSON implements the json.Unmarshaller interface for type WebApplicationFirewallCustomRule.
 37510  func (w *WebApplicationFirewallCustomRule) UnmarshalJSON(data []byte) error {
 37511  	var rawMsg map[string]json.RawMessage
 37512  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 37513  		return fmt.Errorf("unmarshalling type %T: %v", w, err)
 37514  	}
 37515  	for key, val := range rawMsg {
 37516  		var err error
 37517  		switch key {
 37518  		case "action":
 37519  			err = unpopulate(val, "Action", &w.Action)
 37520  			delete(rawMsg, key)
 37521  		case "etag":
 37522  			err = unpopulate(val, "Etag", &w.Etag)
 37523  			delete(rawMsg, key)
 37524  		case "groupByUserSession":
 37525  			err = unpopulate(val, "GroupByUserSession", &w.GroupByUserSession)
 37526  			delete(rawMsg, key)
 37527  		case "matchConditions":
 37528  			err = unpopulate(val, "MatchConditions", &w.MatchConditions)
 37529  			delete(rawMsg, key)
 37530  		case "name":
 37531  			err = unpopulate(val, "Name", &w.Name)
 37532  			delete(rawMsg, key)
 37533  		case "priority":
 37534  			err = unpopulate(val, "Priority", &w.Priority)
 37535  			delete(rawMsg, key)
 37536  		case "rateLimitDuration":
 37537  			err = unpopulate(val, "RateLimitDuration", &w.RateLimitDuration)
 37538  			delete(rawMsg, key)
 37539  		case "rateLimitThreshold":
 37540  			err = unpopulate(val, "RateLimitThreshold", &w.RateLimitThreshold)
 37541  			delete(rawMsg, key)
 37542  		case "ruleType":
 37543  			err = unpopulate(val, "RuleType", &w.RuleType)
 37544  			delete(rawMsg, key)
 37545  		case "state":
 37546  			err = unpopulate(val, "State", &w.State)
 37547  			delete(rawMsg, key)
 37548  		}
 37549  		if err != nil {
 37550  			return fmt.Errorf("unmarshalling type %T: %v", w, err)
 37551  		}
 37552  	}
 37553  	return nil
 37554  }
 37555  
 37556  // MarshalJSON implements the json.Marshaller interface for type WebApplicationFirewallPolicy.
 37557  func (w WebApplicationFirewallPolicy) MarshalJSON() ([]byte, error) {
 37558  	objectMap := make(map[string]any)
 37559  	populate(objectMap, "etag", w.Etag)
 37560  	populate(objectMap, "id", w.ID)
 37561  	populate(objectMap, "location", w.Location)
 37562  	populate(objectMap, "name", w.Name)
 37563  	populate(objectMap, "properties", w.Properties)
 37564  	populate(objectMap, "tags", w.Tags)
 37565  	populate(objectMap, "type", w.Type)
 37566  	return json.Marshal(objectMap)
 37567  }
 37568  
 37569  // UnmarshalJSON implements the json.Unmarshaller interface for type WebApplicationFirewallPolicy.
 37570  func (w *WebApplicationFirewallPolicy) UnmarshalJSON(data []byte) error {
 37571  	var rawMsg map[string]json.RawMessage
 37572  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 37573  		return fmt.Errorf("unmarshalling type %T: %v", w, err)
 37574  	}
 37575  	for key, val := range rawMsg {
 37576  		var err error
 37577  		switch key {
 37578  		case "etag":
 37579  			err = unpopulate(val, "Etag", &w.Etag)
 37580  			delete(rawMsg, key)
 37581  		case "id":
 37582  			err = unpopulate(val, "ID", &w.ID)
 37583  			delete(rawMsg, key)
 37584  		case "location":
 37585  			err = unpopulate(val, "Location", &w.Location)
 37586  			delete(rawMsg, key)
 37587  		case "name":
 37588  			err = unpopulate(val, "Name", &w.Name)
 37589  			delete(rawMsg, key)
 37590  		case "properties":
 37591  			err = unpopulate(val, "Properties", &w.Properties)
 37592  			delete(rawMsg, key)
 37593  		case "tags":
 37594  			err = unpopulate(val, "Tags", &w.Tags)
 37595  			delete(rawMsg, key)
 37596  		case "type":
 37597  			err = unpopulate(val, "Type", &w.Type)
 37598  			delete(rawMsg, key)
 37599  		}
 37600  		if err != nil {
 37601  			return fmt.Errorf("unmarshalling type %T: %v", w, err)
 37602  		}
 37603  	}
 37604  	return nil
 37605  }
 37606  
 37607  // MarshalJSON implements the json.Marshaller interface for type WebApplicationFirewallPolicyListResult.
 37608  func (w WebApplicationFirewallPolicyListResult) MarshalJSON() ([]byte, error) {
 37609  	objectMap := make(map[string]any)
 37610  	populate(objectMap, "nextLink", w.NextLink)
 37611  	populate(objectMap, "value", w.Value)
 37612  	return json.Marshal(objectMap)
 37613  }
 37614  
 37615  // UnmarshalJSON implements the json.Unmarshaller interface for type WebApplicationFirewallPolicyListResult.
 37616  func (w *WebApplicationFirewallPolicyListResult) UnmarshalJSON(data []byte) error {
 37617  	var rawMsg map[string]json.RawMessage
 37618  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 37619  		return fmt.Errorf("unmarshalling type %T: %v", w, err)
 37620  	}
 37621  	for key, val := range rawMsg {
 37622  		var err error
 37623  		switch key {
 37624  		case "nextLink":
 37625  			err = unpopulate(val, "NextLink", &w.NextLink)
 37626  			delete(rawMsg, key)
 37627  		case "value":
 37628  			err = unpopulate(val, "Value", &w.Value)
 37629  			delete(rawMsg, key)
 37630  		}
 37631  		if err != nil {
 37632  			return fmt.Errorf("unmarshalling type %T: %v", w, err)
 37633  		}
 37634  	}
 37635  	return nil
 37636  }
 37637  
 37638  // MarshalJSON implements the json.Marshaller interface for type WebApplicationFirewallPolicyPropertiesFormat.
 37639  func (w WebApplicationFirewallPolicyPropertiesFormat) MarshalJSON() ([]byte, error) {
 37640  	objectMap := make(map[string]any)
 37641  	populate(objectMap, "applicationGatewayForContainers", w.ApplicationGatewayForContainers)
 37642  	populate(objectMap, "applicationGateways", w.ApplicationGateways)
 37643  	populate(objectMap, "customRules", w.CustomRules)
 37644  	populate(objectMap, "httpListeners", w.HTTPListeners)
 37645  	populate(objectMap, "managedRules", w.ManagedRules)
 37646  	populate(objectMap, "pathBasedRules", w.PathBasedRules)
 37647  	populate(objectMap, "policySettings", w.PolicySettings)
 37648  	populate(objectMap, "provisioningState", w.ProvisioningState)
 37649  	populate(objectMap, "resourceState", w.ResourceState)
 37650  	return json.Marshal(objectMap)
 37651  }
 37652  
 37653  // UnmarshalJSON implements the json.Unmarshaller interface for type WebApplicationFirewallPolicyPropertiesFormat.
 37654  func (w *WebApplicationFirewallPolicyPropertiesFormat) UnmarshalJSON(data []byte) error {
 37655  	var rawMsg map[string]json.RawMessage
 37656  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 37657  		return fmt.Errorf("unmarshalling type %T: %v", w, err)
 37658  	}
 37659  	for key, val := range rawMsg {
 37660  		var err error
 37661  		switch key {
 37662  		case "applicationGatewayForContainers":
 37663  			err = unpopulate(val, "ApplicationGatewayForContainers", &w.ApplicationGatewayForContainers)
 37664  			delete(rawMsg, key)
 37665  		case "applicationGateways":
 37666  			err = unpopulate(val, "ApplicationGateways", &w.ApplicationGateways)
 37667  			delete(rawMsg, key)
 37668  		case "customRules":
 37669  			err = unpopulate(val, "CustomRules", &w.CustomRules)
 37670  			delete(rawMsg, key)
 37671  		case "httpListeners":
 37672  			err = unpopulate(val, "HTTPListeners", &w.HTTPListeners)
 37673  			delete(rawMsg, key)
 37674  		case "managedRules":
 37675  			err = unpopulate(val, "ManagedRules", &w.ManagedRules)
 37676  			delete(rawMsg, key)
 37677  		case "pathBasedRules":
 37678  			err = unpopulate(val, "PathBasedRules", &w.PathBasedRules)
 37679  			delete(rawMsg, key)
 37680  		case "policySettings":
 37681  			err = unpopulate(val, "PolicySettings", &w.PolicySettings)
 37682  			delete(rawMsg, key)
 37683  		case "provisioningState":
 37684  			err = unpopulate(val, "ProvisioningState", &w.ProvisioningState)
 37685  			delete(rawMsg, key)
 37686  		case "resourceState":
 37687  			err = unpopulate(val, "ResourceState", &w.ResourceState)
 37688  			delete(rawMsg, key)
 37689  		}
 37690  		if err != nil {
 37691  			return fmt.Errorf("unmarshalling type %T: %v", w, err)
 37692  		}
 37693  	}
 37694  	return nil
 37695  }
 37696  
 37697  // MarshalJSON implements the json.Marshaller interface for type WebApplicationFirewallScrubbingRules.
 37698  func (w WebApplicationFirewallScrubbingRules) MarshalJSON() ([]byte, error) {
 37699  	objectMap := make(map[string]any)
 37700  	populate(objectMap, "matchVariable", w.MatchVariable)
 37701  	populate(objectMap, "selector", w.Selector)
 37702  	populate(objectMap, "selectorMatchOperator", w.SelectorMatchOperator)
 37703  	populate(objectMap, "state", w.State)
 37704  	return json.Marshal(objectMap)
 37705  }
 37706  
 37707  // UnmarshalJSON implements the json.Unmarshaller interface for type WebApplicationFirewallScrubbingRules.
 37708  func (w *WebApplicationFirewallScrubbingRules) UnmarshalJSON(data []byte) error {
 37709  	var rawMsg map[string]json.RawMessage
 37710  	if err := json.Unmarshal(data, &rawMsg); err != nil {
 37711  		return fmt.Errorf("unmarshalling type %T: %v", w, err)
 37712  	}
 37713  	for key, val := range rawMsg {
 37714  		var err error
 37715  		switch key {
 37716  		case "matchVariable":
 37717  			err = unpopulate(val, "MatchVariable", &w.MatchVariable)
 37718  			delete(rawMsg, key)
 37719  		case "selector":
 37720  			err = unpopulate(val, "Selector", &w.Selector)
 37721  			delete(rawMsg, key)
 37722  		case "selectorMatchOperator":
 37723  			err = unpopulate(val, "SelectorMatchOperator", &w.SelectorMatchOperator)
 37724  			delete(rawMsg, key)
 37725  		case "state":
 37726  			err = unpopulate(val, "State", &w.State)
 37727  			delete(rawMsg, key)
 37728  		}
 37729  		if err != nil {
 37730  			return fmt.Errorf("unmarshalling type %T: %v", w, err)
 37731  		}
 37732  	}
 37733  	return nil
 37734  }
 37735  
 37736  func populate(m map[string]any, k string, v any) {
 37737  	if v == nil {
 37738  		return
 37739  	} else if azcore.IsNullValue(v) {
 37740  		m[k] = nil
 37741  	} else if !reflect.ValueOf(v).IsNil() {
 37742  		m[k] = v
 37743  	}
 37744  }
 37745  
 37746  func populateAny(m map[string]any, k string, v any) {
 37747  	if v == nil {
 37748  		return
 37749  	} else if azcore.IsNullValue(v) {
 37750  		m[k] = nil
 37751  	} else {
 37752  		m[k] = v
 37753  	}
 37754  }
 37755  
 37756  func unpopulate(data json.RawMessage, fn string, v any) error {
 37757  	if data == nil || string(data) == "null" {
 37758  		return nil
 37759  	}
 37760  	if err := json.Unmarshal(data, v); err != nil {
 37761  		return fmt.Errorf("struct field %s: %v", fn, err)
 37762  	}
 37763  	return nil
 37764  }