};
private final BlockingQueue<Object> queue = new LinkedBlockingQueue<>();
private final Subject<Object> actionProcessor = PublishSubject.create();
private final Subject<Command> commandProcessor = PublishSubject.create();
private final Patcher patcher = new Patcher(this::dispatch);
<BUG>private ExecutorService executor;
public <STATE> MainLoop(
</BUG>
STATE initialState,
BiFunction<STATE, Object, Update<STATE>> updater,

};
private final BlockingQueue<Object> queue = new LinkedBlockingQueue<>();
private final Subject<Object> actionProcessor = PublishSubject.create();
private final Subject<Command> commandProcessor = PublishSubject.create();
private final Patcher patcher = new Patcher(this::dispatch);
private ExecutorService executor;
public static <STATE> MainLoop createStages(
STATE initialState,
BiFunction<STATE, Object, Update<STATE>> updater,
