Abstract Metric class. Metric names must be unique, are hierarchical,
and use periods as separators. For example, 'a.b.c'. Uniqueness is only
enforced when a Metric is registered. The name of a metric cannot contain
the slash ('/') character.

Service protocol is the protocol that a client like the Observatory
could use to access the services provided by the Dart VM for
debugging and inspecting Dart programs. This class encapsulates the
version number and Uri for accessing this service.

An asynchronous task on the timeline. An asynchronous task can have many
(nested) synchronous operations. Synchronous operations can live longer than
the current isolate event. To pass a TimelineTask to another isolate,
you must first call pass to get the task id and then construct a new
TimelineTask in the other isolate.