code: func (t *TeleportClusterNameMarshaler) Unmarshal(bytes []byte, opts ...MarshalOption) (ClusterName, error) {
  	var clusterName ClusterNameV2
  
  	if len(bytes) == 0 {
  		return nil, trace.BadParameter("missing resource data")
  	}
  
  	cfg, err := collectOptions(opts)
  	if err != nil {
  		return nil, trace.Wrap(err)
  	}
  
  	if cfg.SkipValidation {
  		if err := utils.FastUnmarshal(bytes, &clusterName); err != nil {
  			return nil, trace.BadParameter(err.Error())
  		}
  	} else {
  		err = utils.UnmarshalWithSchema(GetClusterNameSchema(""), &clusterName, bytes)
  		if err != nil {
  			return nil, trace.BadParameter(err.Error())
  		}
  	}
  
  	err = clusterName.CheckAndSetDefaults()
  	if err != nil {
  		return nil, trace.Wrap(err)
  	}
  
  	if cfg.ID != 0 {
  		clusterName.SetResourceID(cfg.ID)
  	}
  	if !cfg.Expires.IsZero() {
  		clusterName.SetExpiry(cfg.Expires)
  	}
  
  	return &clusterName, nil
  }
docs: // Unmarshal unmarshals ClusterName from JSON.