code: func MarshalInitConfigurationToBytes(cfg *kubeadmapi.InitConfiguration, gv schema.GroupVersion) ([]byte, error) {
  	initbytes, err := kubeadmutil.MarshalToYamlForCodecs(cfg, gv, kubeadmscheme.Codecs)
  	if err != nil {
  		return []byte{}, err
  	}
  	allFiles := [][]byte{initbytes}
  
  	// Exception: If the specified groupversion is targeting the internal type, don't print embedded ClusterConfiguration contents
  	// This is mostly used for unit testing. In a real scenario the internal version of the API is never marshalled as-is.
  	if gv.Version != runtime.APIVersionInternal {
  		clusterbytes, err := MarshalClusterConfigurationToBytes(&cfg.ClusterConfiguration, gv)
  		if err != nil {
  			return []byte{}, err
  		}
  		allFiles = append(allFiles, clusterbytes)
  	}
  	return bytes.Join(allFiles, []byte(kubeadmconstants.YAMLDocumentSeparator)), nil
  }
docs: // MarshalInitConfigurationToBytes marshals the internal InitConfiguration object to bytes. It writes the embedded
  // ClusterConfiguration object with ComponentConfigs out as separate YAML documents