func (s *replayAwareScope) Counter(name string) tally.Counter {
	return &replayAwareCounter{s.isReplay, s.scope.Counter(name)}
}
Counter returns the Counter object corresponding to the name.
package metrics
import (
	"sync"
	"time"
	"github.com/uber-go/tally"
)
type (
	Clock interface {
		Now() time.Time
	}
	durationRecorder interface {
		RecordDuration(duration time.Duration)
	}
	replayAwareScope struct {
		isReplay *bool
		scope    tally.Scope
		clock    Clock
	}
	replayAwareCounter struct {
		isReplay *bool
		counter  tally.Counter
	}
	replayAwareGauge struct {
		isReplay *bool
		gauge    tally.Gauge
	}
	replayAwareTimer struct {
		isReplay *bool
		timer    tally.Timer
		clock    Clock
	}
	replayAwareHistogram struct {
		isReplay  *bool
		histogram tally.Histogram
		clock     Clock
	}
	replayAwareStopwatchRecorder struct {
		isReplay *bool
		recorder durationRecorder
		clock    Clock
	}
	TaggedScope struct {
		tally.Scope
		*sync.Map
	}
)
func WrapScope(isReplay *bool, scope tally.Scope, clock Clock) tally.Scope {
	return &replayAwareScope{isReplay, scope, clock}
}
func (c *replayAwareCounter) Inc(delta int64) {
	if *c.isReplay {
		return
	}
	c.counter.Inc(delta)
}
func (g *replayAwareGauge) Update(value float64) {
	if *g.isReplay {
		return
	}
	g.gauge.Update(value)
}
func (t *replayAwareTimer) Record(value time.Duration) {
	if *t.isReplay {
		return
	}
	t.timer.Record(value)
}
func (t *replayAwareTimer) RecordDuration(duration time.Duration) {
	t.Record(duration)
}
func (t *replayAwareTimer) Start() tally.Stopwatch {
	return tally.NewStopwatch(t.clock.Now(), &replayAwareStopwatchRecorder{t.isReplay, t, t.clock})
}
func (h *replayAwareHistogram) RecordValue(value float64) {
	if *h.isReplay {
		return
	}
	h.histogram.RecordValue(value)
}
func (h *replayAwareHistogram) RecordDuration(value time.Duration) {
	if *h.isReplay {
		return
	}
	h.histogram.RecordDuration(value)
}
func (h *replayAwareHistogram) Start() tally.Stopwatch {
	return tally.NewStopwatch(h.clock.Now(), &replayAwareStopwatchRecorder{h.isReplay, h, h.clock})
}
func (r *replayAwareStopwatchRecorder) RecordStopwatch(stopwatchStart time.Time) {
	if *r.isReplay {
		return
	}
	d := r.clock.Now().Sub(stopwatchStart)
	r.recorder.RecordDuration(d)
}