code: func (m *MonitorConfig) CheckAndSetDefaults() error {
  	if m.Context == nil {
  		return trace.BadParameter("missing parameter Context")
  	}
  	if m.DisconnectExpiredCert.IsZero() && m.ClientIdleTimeout == 0 {
  		return trace.BadParameter("either DisconnectExpiredCert or ClientIdleTimeout should be set")
  	}
  	if m.Conn == nil {
  		return trace.BadParameter("missing parameter Conn")
  	}
  	if m.Entry == nil {
  		return trace.BadParameter("missing parameter Entry")
  	}
  	if m.Tracker == nil {
  		return trace.BadParameter("missing parameter Tracker")
  	}
  	if m.Audit == nil {
  		return trace.BadParameter("missing parameter Audit")
  	}
  	if m.Clock == nil {
  		m.Clock = clockwork.NewRealClock()
  	}
  	return nil
  }
docs: // CheckAndSetDefaults checks values and sets defaults