final RunnablePriority priority = runInto == null ? RunnablePriority.Normal : runInto.priority();
// Retrieve the annotation run type (if any)
final RunType runType = runInto == null ? null : runInto.value();
final JRebirthRunnable waveHandlerRunnable = buildWaveRunnable(wave, customMethod, priority);
// If the notified class is part of the UI
// We must perform this action into the JavaFX Application Thread
// only if the run type hasn't been overridden
if (runType != null && runType == RunType.JAT || runType == null && getWaveReady() instanceof Model) {
JRebirth.runIntoJAT(waveHandlerRunnable);
// Launch the wave handling into JRebirth Thread Pool
} else if (runType != null && runType == RunType.JTP) {
JRebirth.runIntoJTP(waveHandlerRunnable);
} else {
// Otherwise we can perform it right now into the current thread (JRebirthThread - JIT)
waveHandlerRunnable.run();
}
}