The slice of the chart this controller needs. Chart satisfies it; declaring
it structurally keeps the controller testable against a stub and free of a
circular import back into core.
Optional. When the chart reports its own end, replay listens for it while
it owns the chart's data: a chart destroyed mid-session stops the playback
timer and is written to no more, and nothing is restored to it.
The slice of the chart this controller needs.
Chartsatisfies it; declaring it structurally keeps the controller testable against a stub and free of a circular import back into core.