--- a/net/minecraft/world/item/crafting/Recipe.java
+++ b/net/minecraft/world/item/crafting/Recipe.java
@@ -9,6 +9,7 @@
 import net.minecraft.world.level.block.Blocks;
 
 public interface Recipe<C extends Container> {
+
     boolean matches(C inventory, Level world);
 
     ItemStack assemble(C inventory, RegistryAccess registryManager);
@@ -18,16 +19,17 @@
     ItemStack getResultItem(RegistryAccess registryManager);
 
     default NonNullList<ItemStack> getRemainingItems(C inventory) {
-        NonNullList<ItemStack> nonNullList = NonNullList.withSize(inventory.getContainerSize(), ItemStack.EMPTY);
+        NonNullList<ItemStack> nonnulllist = NonNullList.withSize(inventory.getContainerSize(), ItemStack.EMPTY);
 
-        for(int i = 0; i < nonNullList.size(); ++i) {
+        for (int i = 0; i < nonnulllist.size(); ++i) {
             Item item = inventory.getItem(i).getItem();
+
             if (item.hasCraftingRemainingItem()) {
-                nonNullList.set(i, new ItemStack(item.getCraftingRemainingItem()));
+                nonnulllist.set(i, new ItemStack(item.getCraftingRemainingItem()));
             }
         }
 
-        return nonNullList;
+        return nonnulllist;
     }
 
     default NonNullList<Ingredient> getIngredients() {
@@ -55,9 +57,18 @@
     RecipeType<?> getType();
 
     default boolean isIncomplete() {
-        NonNullList<Ingredient> nonNullList = this.getIngredients();
-        return nonNullList.isEmpty() || nonNullList.stream().anyMatch((ingredient) -> {
-            return ingredient.getItems().length == 0;
+        NonNullList<Ingredient> nonnulllist = this.getIngredients();
+
+        return nonnulllist.isEmpty() || nonnulllist.stream().anyMatch((recipeitemstack) -> {
+            return recipeitemstack.getItems().length == 0;
         });
     }
+
+    org.bukkit.inventory.Recipe toBukkitRecipe(org.bukkit.NamespacedKey id); // CraftBukkit
+
+    // Paper start - improved exact choice recipes
+    default boolean hasExactIngredients() {
+        return false;
+    }
+    // Paper end
 }
