Program: 169641
Project: 169641
Buggy source:
/** 
 * Gets a list of warhead recipes for the given explosive. Will return an empty list if the explosive has no items registered.
 * @param handler - explosive, with valid items
 * @param recipes - list to add recipes to
 */
public static void getRecipes(IExplosiveHandler handler,List<IRecipe> recipes){
  System.out.println("String_Node_Str" + handler);
  List<ItemStackWrapper> items=ExplosiveRegistry.getItems(handler);
  if (items != null) {
    System.out.println("String_Node_Str" + items.size() + "String_Node_Str");
    final ItemStack micro_warhead_empty=MissileModuleBuilder.INSTANCE.buildWarhead(WarheadCasings.EXPLOSIVE_MICRO,(ItemStack)null).toStack();
    final ItemStack small_warhead_empty=MissileModuleBuilder.INSTANCE.buildWarhead(WarheadCasings.EXPLOSIVE_SMALL,(ItemStack)null).toStack();
    final ItemStack medium_warhead_empty=MissileModuleBuilder.INSTANCE.buildWarhead(WarheadCasings.EXPLOSIVE_STANDARD,(ItemStack)null).toStack();
    for (    ItemStackWrapper wrapper : items) {
      if (wrapper != null && wrapper.itemStack != null) {
        System.out.println("String_Node_Str" + wrapper.itemStack);
        ItemStack stack=wrapper.itemStack.copy();
        stack.stackSize=1;
        final Warhead micro_warhead=MissileModuleBuilder.INSTANCE.buildWarhead(WarheadCasings.EXPLOSIVE_MICRO,stack);
        final Warhead small_warhead=MissileModuleBuilder.INSTANCE.buildWarhead(WarheadCasings.EXPLOSIVE_SMALL,stack);
        final Warhead medium_warhead=MissileModuleBuilder.INSTANCE.buildWarhead(WarheadCasings.EXPLOSIVE_STANDARD,stack);
        WarheadRecipe microWarheadRecipe=new WarheadRecipe(micro_warhead,stack,micro_warhead_empty);
        recipes.add(microWarheadRecipe);
        recipes.add(new MicroMissileRecipe(wrapper.itemStack,MissileModuleBuilder.INSTANCE.buildMissile(MissileCasings.MICRO,(ItemStack)null).toStack(),microWarheadRecipe.getRecipeOutput()));
        recipes.add(new WarheadRecipe(small_warhead,stack,small_warhead_empty));
        recipes.add(new WarheadRecipe(medium_warhead,stack,medium_warhead_empty));
        for (        WarheadCasings casing : new WarheadCasings[]{WarheadCasings.EXPLOSIVE_SMALL,WarheadCasings.EXPLOSIVE_STANDARD}) {
          System.out.println("String_Node_Str" + casing);
          Warhead warhead=MissileModuleBuilder.INSTANCE.buildWarhead(casing,stack);
          for (int i=1; i < warhead.getMaxExplosives(); i++) {
            System.out.println("String_Node_Str" + i);
            System.out.println("String_Node_Str" + warhead + "String_Node_Str"+ warhead.explosive);
            ItemStack nextStack=stack.copy();
            nextStack.stackSize=i + 1;
            Warhead nextWarhead=MissileModuleBuilder.INSTANCE.buildWarhead(casing,nextStack);
            System.out.println("String_Node_Str" + nextWarhead + "String_Node_Str"+ nextWarhead.explosive);
            recipes.add(new WarheadRecipe(nextWarhead,stack,warhead.toStack()));
            warhead=nextWarhead.clone();
          }
        }
      }
 else {
        Engine.error("String_Node_Str" + handler + "String_Node_Str"+ wrapper);
      }
    }
  }
}

Fixed version (ground truth):
/** 
 * Gets a list of warhead recipes for the given explosive. Will return an empty list if the explosive has no items registered.
 * @param handler - explosive, with valid items
 * @param recipes - list to add recipes to
 */
public static void getRecipes(IExplosiveHandler handler,List<IRecipe> recipes){
  System.out.println("String_Node_Str" + handler);
  List<ItemStackWrapper> items=ExplosiveRegistry.getItems(handler);
  if (items != null) {
    System.out.println("String_Node_Str" + items.size() + "String_Node_Str");
    for (    ItemStackWrapper wrapper : items) {
      if (wrapper != null && wrapper.itemStack != null) {
        System.out.println("String_Node_Str" + wrapper.itemStack);
        ItemStack stack=wrapper.itemStack.copy();
        stack.stackSize=1;
        final Warhead micro_warhead=MissileModuleBuilder.INSTANCE.buildWarhead(WarheadCasings.EXPLOSIVE_MICRO,stack);
        final Warhead small_warhead=MissileModuleBuilder.INSTANCE.buildWarhead(WarheadCasings.EXPLOSIVE_SMALL,stack);
        final Warhead medium_warhead=MissileModuleBuilder.INSTANCE.buildWarhead(WarheadCasings.EXPLOSIVE_STANDARD,stack);
        WarheadRecipe microWarheadRecipe=new WarheadRecipe(micro_warhead,stack);
        recipes.add(microWarheadRecipe);
        recipes.add(new MicroMissileRecipe(wrapper.itemStack,MissileModuleBuilder.INSTANCE.buildMissile(MissileCasings.MICRO,(ItemStack)null).toStack(),microWarheadRecipe.getRecipeOutput()));
        recipes.add(new WarheadRecipe(small_warhead,stack));
        recipes.add(new WarheadRecipe(medium_warhead,stack));
        for (        WarheadCasings casing : new WarheadCasings[]{WarheadCasings.EXPLOSIVE_SMALL,WarheadCasings.EXPLOSIVE_STANDARD}) {
          final int s=MissileModuleBuilder.INSTANCE.buildWarhead(casing,stack).getMaxExplosives();
          for (int i=1; i < s; i++) {
            ItemStack nextStack=stack.copy();
            nextStack.stackSize=i + 1;
            recipes.add(new WarheadRecipe(MissileModuleBuilder.INSTANCE.buildWarhead(casing,nextStack),stack));
          }
        }
      }
 else {
        Engine.error("String_Node_Str" + handler + "String_Node_Str"+ wrapper);
      }
    }
  }
}