class ActorManager {

  Mono<Void> invokeTimer(ActorId actorId, String timerName) {
    return Mono.fromSupplier(() -> {
      AbstractActor actor = this.activeActors.getOrDefault(actorId, null);
      if (actor == null) {
        throw new IllegalArgumentException(
            String.format("Could not find actor %s of type %s.",
                actorId.toString(),
                this.runtimeContext.getActorTypeInformation().getName()));
      }

      ActorTimer actorTimer = actor.getActorTimer(timerName);
      if (actorTimer == null) {
        throw new IllegalStateException(
            String.format("Could not find timer %s for actor %s.",
                timerName,
                this.runtimeContext.getActorTypeInformation().getName()));
      }

      return actorTimer;
    }).flatMap(actorTimer -> invokeMethod(
        actorId,
        ActorMethodContext.createForTimer(actorTimer.getName()),
        actorTimer.getCallback(),
        actorTimer.getState()))
        .then();
  }

    ActorManager(ActorRuntimeContext runtimeContext);

}