Future features will require MessageMetric to provide source.

Therefore, we implement the resulting type-safe insanity now, to not
disrupt the public APIs when the release is out.