public void addPage(@NotNull WizardPage<T> page, int index, boolean replace) {
if (index >= wizardPages.size()) {
addPage(page);
return;
}
if (replace) {
setPage(page, index);
} else {
List<WizardPage<T>> before = ListHelper.slice(wizardPages, 0, index);
WizardPage<T> currentPage = wizardPages.get(index);
List<WizardPage<T>> after = ListHelper.slice(wizardPages, index + 1, wizardPages.size());
wizardPages.clear();
wizardPages.addAll(before);
addPage(page);
wizardPages.add(currentPage);
wizardPages.addAll(after);
}
}