type Timer … type noopTimer … // newNoopTimer creates a timer with a unique channel to avoid contention // for the channel's lock across multiple unrelated timers. func newNoopTimer() noopTimer { … } func (t noopTimer) C() <-chan time.Time { … } func (noopTimer) Next() { … } func (noopTimer) Stop() { … } type variableTimer … func (t *variableTimer) C() <-chan time.Time { … } func (t *variableTimer) Next() { … } func (t *variableTimer) Stop() { … } type fixedTimer … func (t *fixedTimer) C() <-chan time.Time { … } func (t *fixedTimer) Next() { … } func (t *fixedTimer) Stop() { … } var RealTimer … var internalClock …