code: func ValidateBootstrapTokens(bts []kubeadm.BootstrapToken, fldPath *field.Path) field.ErrorList {
  	allErrs := field.ErrorList{}
  	for i, bt := range bts {
  		btPath := fldPath.Child(fmt.Sprintf("%d", i))
  		allErrs = append(allErrs, ValidateToken(bt.Token.String(), btPath.Child(kubeadmcmdoptions.TokenStr))...)
  		allErrs = append(allErrs, ValidateTokenUsages(bt.Usages, btPath.Child(kubeadmcmdoptions.TokenUsages))...)
  		allErrs = append(allErrs, ValidateTokenGroups(bt.Usages, bt.Groups, btPath.Child(kubeadmcmdoptions.TokenGroups))...)
  
  		if bt.Expires != nil && bt.TTL != nil {
  			allErrs = append(allErrs, field.Invalid(btPath, "", "the BootstrapToken .TTL and .Expires fields are mutually exclusive"))
  		}
  	}
  	return allErrs
  }
docs: // ValidateBootstrapTokens validates a slice of BootstrapToken objects