public void suspend() {
    synchronized (TimelineEngine.LOCK) {
      TimelineScenarioState oldState = this.state;
      if (oldState != TimelineScenarioState.PLAYING) return;
      this.statePriorToSuspension = oldState;
      this.state = TimelineScenarioState.SUSPENDED;

      for (TimelineScenarioActor running : this.runningActors) {
        if (running instanceof Timeline) {
          ((Timeline) running).suspend();
        }
      }
    }
  }