code: func (s *PodDisruptionBudgetV2Generator) StructuredGenerate() (runtime.Object, error) {
  	if err := s.validate(); err != nil {
  		return nil, err
  	}
  
  	selector, err := metav1.ParseToLabelSelector(s.Selector)
  	if err != nil {
  		return nil, err
  	}
  
  	if len(s.MaxUnavailable) > 0 {
  		maxUnavailable := intstr.Parse(s.MaxUnavailable)
  		return &policy.PodDisruptionBudget{
  			ObjectMeta: metav1.ObjectMeta{
  				Name: s.Name,
  			},
  			Spec: policy.PodDisruptionBudgetSpec{
  				MaxUnavailable: &maxUnavailable,
  				Selector:       selector,
  			},
  		}, nil
  	}
  
  	if len(s.MinAvailable) > 0 {
  		minAvailable := intstr.Parse(s.MinAvailable)
  		return &policy.PodDisruptionBudget{
  			ObjectMeta: metav1.ObjectMeta{
  				Name: s.Name,
  			},
  			Spec: policy.PodDisruptionBudgetSpec{
  				MinAvailable: &minAvailable,
  				Selector:     selector,
  			},
  		}, nil
  	}
  
  	return nil, err
  }
docs: // StructuredGenerate outputs a pod disruption budget object using the configured fields.