function Metrics(apdexT, mapper, normalizer) {
  if (apdexT == null || apdexT === '') {
    throw new Error('metrics must be created with apdexT')
  }
  if (!mapper) {
    throw new Error('metrics must be created with a mapper')
  }
  if (!normalizer) {
    throw new Error('metrics must be created with a name normalizer')
  }

  this.empty = true
  this.started = Date.now()
  this.apdexT = apdexT
  this.mapper = mapper
  this.normalizer = normalizer
  this.unscoped = Object.create(null) // {name : stats}
  this.scoped = Object.create(null) // {scope : {name : stats}}
}
A metric is a set of aggregated data (summary statistics) associated with a
metric name. Some metrics belong to scopes, which are typically the name of
a transaction or a background task. This class is a collection of mappings
from names (or scopes and names) to data, as well as functions for
manipulating those data directly. It also can produce a serialized
representation suitable for stringifying into JSON and sending to the
collector.

There are several metrics collections in existence at any given time. Each
agent has one metrics collection, which is created at the beginning of each
harvest cycle. Each new transaction also gets its own metrics collection,
which is merged into the agent's metrics when the transaction is finalized.
This allows each set of metrics to be added to the harvest cycle atomically,
which guarantees that each transaction will not have its metrics split
across multiple harvest cycles. If delivery to the collector fails, the
metrics collection associated with the failed delivery can be merged back
into the metrics collection for the ongoing harvest cycle.

Metrics can be remapped, which is a process by which they are assigned a
short, numerical ID by New Relic. This can shrink the serialized JSON
considerably. The mapping from transaction name (and scope) happens only
at serialization time, which allows the mappings from name to ID to happen
on the fly.

@param {number} apdexT The apdex-tolerating value, for use in creating apdex
                       statistics.
@param {MetricMapper} mapper The mapper that turns metric names into IDs.
@param normalizer