Program: 34708
Project: 34708
Buggy source:
public static void replaceBlock(Block toReplace,Block replacement,Class<? extends ItemBlock> itemBlockClass){
  Stopwatch.time("String_Node_Str");
  Class<?>[] classTest=new Class<?>[4];
  Exception exception=null;
  try {
    for (    Field blockField : Blocks.class.getDeclaredFields()) {
      if (Block.class.isAssignableFrom(blockField.getType())) {
        Block block=(Block)blockField.get(null);
        if (block == toReplace) {
          String registryName=Block.blockRegistry.getNameForObject(block);
          int id=Block.getIdFromBlock(block);
          Log.debug("String_Node_Str",id,registryName);
          FMLControlledNamespacedRegistry<Block> registryBlocks=GameData.getBlockRegistry();
          registryBlocks.registryObjects.put(registryName,replacement);
          registryBlocks.underlyingIntegerMap.func_148746_a(replacement,id);
          blockField.setAccessible(true);
          Unfinalizer.unfinalizeField(blockField);
          blockField.set(null,replacement);
          ItemBlock itemBlock=itemBlockClass.getConstructor(Block.class).newInstance(replacement);
          FMLControlledNamespacedRegistry<Item> registryItems=GameData.getItemRegistry();
          registryItems.registryObjects.put(registryName,itemBlock);
          registryItems.underlyingIntegerMap.func_148746_a(itemBlock,id);
          int itemID=Item.getIdFromItem(itemBlock);
          StatBase stat=StatList.mineBlockStatArray[itemID];
          StatList.allStats.remove(stat);
          StatList.objectMineStats.remove(stat);
          StatList.generalStats.remove(stat);
          StatList.objectBreakStats[itemID]=StatList.objectUseStats[itemID]=null;
          StatList.objectCraftStats[itemID]=StatList.mineBlockStatArray[itemID]=null;
          classTest[0]=blockField.get(null).getClass();
          classTest[1]=Block.blockRegistry.getObjectById(id).getClass();
          classTest[2]=((ItemBlock)Item.getItemFromBlock(replacement)).field_150939_a.getClass();
          classTest[3]=Item.getItemFromBlock(replacement).getClass();
        }
      }
    }
  }
 catch (  Exception e) {
    exception=e;
  }
  Stopwatch.finish("String_Node_Str");
  Log.debug("String_Node_Str",classTest[0]);
  Log.debug("String_Node_Str",classTest[1]);
  Log.debug("String_Node_Str",classTest[2]);
  Log.debug("String_Node_Str",classTest[3]);
  if (classTest[0] != classTest[1] || classTest[0] != classTest[2] || classTest[0] == null || classTest[3] != itemBlockClass) {
    throw new RuntimeException("String_Node_Str" + toReplace.getUnlocalizedName() + "String_Node_Str"+ classTest[0]+ "String_Node_Str"+ classTest[1]+ "String_Node_Str"+ classTest[2]+ "String_Node_Str"+ classTest[3],exception);
  }
}

Fixed version (ground truth):
public static void replaceBlock(Block toReplace,Block replacement){
  Stopwatch.time("String_Node_Str");
  Class<?>[] classTest=new Class<?>[4];
  Exception exception=null;
  try {
    for (    Field blockField : Blocks.class.getDeclaredFields()) {
      if (Block.class.isAssignableFrom(blockField.getType())) {
        Block block=(Block)blockField.get(null);
        if (block == toReplace) {
          String registryName=Block.blockRegistry.getNameForObject(block);
          int id=Block.getIdFromBlock(block);
          Log.debug("String_Node_Str",id,registryName);
          ((ItemBlock)Item.getItemFromBlock(block)).field_150939_a=replacement;
          FMLControlledNamespacedRegistry<Block> registryBlocks=GameData.getBlockRegistry();
          registryBlocks.registryObjects.put(registryName,replacement);
          registryBlocks.underlyingIntegerMap.func_148746_a(replacement,id);
          blockField.setAccessible(true);
          Unfinalizer.unfinalizeField(blockField);
          blockField.set(null,replacement);
          classTest[0]=blockField.get(null).getClass();
          classTest[1]=Block.blockRegistry.getObjectById(id).getClass();
          classTest[2]=((ItemBlock)Item.getItemFromBlock(replacement)).field_150939_a.getClass();
        }
      }
    }
  }
 catch (  Exception e) {
    exception=e;
  }
  Stopwatch.finish("String_Node_Str");
  Log.debug("String_Node_Str",classTest[0]);
  Log.debug("String_Node_Str",classTest[1]);
  Log.debug("String_Node_Str",classTest[2]);
  if (classTest[0] != classTest[1] || classTest[0] != classTest[2] || classTest[0] == null) {
    throw new RuntimeException("String_Node_Str" + toReplace.getUnlocalizedName() + "String_Node_Str"+ classTest[0]+ "String_Node_Str"+ classTest[1]+ "String_Node_Str"+ classTest[2],exception);
  }
}