schedule(event: VirtualEvent): IDisposable {
throw new Error(`Scheduled time (${event.time}) must be >= now (${this._now}).`);
}
this._queue.add(queued);
this._onEventScheduled.fire(event);
return { dispose: () => this._queue.remove(queued) };
}
peekNext(): VirtualEvent | undefined { return this._queue.getMin(); }