package clock

import 

// NowScheduler is the interface implemented by a clock that provides an
// optimized implementation of Now.
type NowScheduler interface {
	Scheduler

	// Now returns the current local time.
	Now() time.Time
}

// Now returns the current local time.
//
// Unless the underlying Scheduler implements Timer, Now calls Timer with zero
// duration and uses C on the returned timer to wait for the current time.
func ( *Clock) () time.Time {
	 := .sched()
	if ,  := .(NowScheduler);  {
		return .Now()
	}

	 := .Timer(0)
	return <-.C()
}