code: func (cfg *HeartbeatConfig) CheckAndSetDefaults() error {
  	if err := cfg.Mode.CheckAndSetDefaults(); err != nil {
  		return trace.Wrap(err)
  	}
  	if cfg.Context == nil {
  		return trace.BadParameter("missing parameter Context")
  	}
  	if cfg.Announcer == nil {
  		return trace.BadParameter("missing parameter Announcer")
  	}
  	if cfg.Component == "" {
  		return trace.BadParameter("missing parameter Component")
  	}
  	if cfg.CheckPeriod == 0 {
  		return trace.BadParameter("missing parameter CheckPeriod")
  	}
  	if cfg.KeepAlivePeriod == 0 {
  		return trace.BadParameter("missing parameter KeepAlivePeriod")
  	}
  	if cfg.AnnouncePeriod == 0 {
  		return trace.BadParameter("missing parameter AnnouncePeriod")
  	}
  	if cfg.ServerTTL == 0 {
  		return trace.BadParameter("missing parmeter ServerTTL")
  	}
  	if cfg.GetServerInfo == nil {
  		return trace.BadParameter("missing parameter GetServerInfo")
  	}
  	if cfg.Clock == nil {
  		cfg.Clock = clockwork.NewRealClock()
  	}
  
  	return nil
  }
docs: // CheckAndSetDefaults checks and sets default values