While iterating through Server#recipeIterator(), at some point the following error will occur:
java.lang.AbstractMethodError: Method net/minecraft/world/item/crafting/DyeRecipe.toBukkitRecipe(Lorg/bukkit/NamespacedKey;)Lorg/bukkit/inventory/Recipe; is abstract
at net.minecraft.world.item.crafting.DyeRecipe.toBukkitRecipe(DyeRecipe.java)
at net.minecraft.world.item.crafting.RecipeHolder.toBukkitRecipe(RecipeHolder.java:16)
at org.bukkit.craftbukkit.inventory.RecipeIterator.next(RecipeIterator.java:24)
at org.bukkit.craftbukkit.inventory.RecipeIterator.next(RecipeIterator.java:10)
This is because DyeRecipe extends NormalCraftingRecipe which implements CraftingRecipe which extends Recipe<CraftingInput>. Recipe<CraftingInput> defines a the method toBukkitRecipe(), but this is not implemented in any of these extended/implemented classes, causing the given error.
As a result, you pretty much can't use RecipeIterator at the moment.