code: func (p DistributedVirtualPortgroup) EthernetCardBackingInfo(ctx context.Context) (types.BaseVirtualDeviceBackingInfo, error) {
  	var dvp mo.DistributedVirtualPortgroup
  	var dvs mo.DistributedVirtualSwitch
  	prop := "config.distributedVirtualSwitch"
  
  	if err := p.Properties(ctx, p.Reference(), []string{"key", prop}, &dvp); err != nil {
  		return nil, err
  	}
  
  	// "This property should always be set unless the user's setting does not have System.Read privilege on the object referred to by this property."
  	if dvp.Config.DistributedVirtualSwitch == nil {
  		return nil, fmt.Errorf("no System.Read privilege on: %s.%s", p.Reference(), prop)
  	}
  
  	if err := p.Properties(ctx, *dvp.Config.DistributedVirtualSwitch, []string{"uuid"}, &dvs); err != nil {
  		return nil, err
  	}
  
  	backing := &types.VirtualEthernetCardDistributedVirtualPortBackingInfo{
  		Port: types.DistributedVirtualSwitchPortConnection{
  			PortgroupKey: dvp.Key,
  			SwitchUuid:   dvs.Uuid,
  		},
  	}
  
  	return backing, nil
  }
docs: // EthernetCardBackingInfo returns the VirtualDeviceBackingInfo for this DistributedVirtualPortgroup