Program: 31503
Project: 31503
Buggy source:
@Inject(method="String_Node_Str",at=@At(value="String_Node_Str",target="String_Node_Str" + "String_Node_Str"),locals=LocalCapture.CAPTURE_FAILHARD) public void callWorldOnExplosionEvent(CallbackInfo ci,HashSet<?> hashset,boolean flag,int j,int k,float f3,int j1,int l,int k1,int i1,List<?> list){
  final org.spongepowered.api.world.explosion.Explosion spongeExplosion=(org.spongepowered.api.world.explosion.Explosion)this;
  final ImmutableList.Builder<Transaction<BlockSnapshot>> blockTransactionBuilder=ImmutableList.builder();
  for (  Object obj : affectedBlockPositions) {
    final BlockPos blockPos=(BlockPos)obj;
    final BlockSnapshot currentSnapshot=((org.spongepowered.api.world.World)worldObj).createSnapshot(blockPos.getX(),blockPos.getY(),blockPos.getZ());
    blockTransactionBuilder.add(new Transaction<BlockSnapshot>(currentSnapshot,currentSnapshot.withState(BlockTypes.AIR.getDefaultState())));
  }
  final ImmutableList<Transaction<BlockSnapshot>> blockTransactions=blockTransactionBuilder.build();
  Cause cause;
  final EntityLivingBase igniter=getExplosivePlacedBy();
  if (exploder != null && igniter != null) {
    cause=Cause.of(igniter,exploder,worldObj);
  }
 else   if (exploder == null && igniter != null) {
    cause=Cause.of(igniter,worldObj);
  }
 else   if (exploder != null && igniter == null) {
    cause=Cause.of(exploder,worldObj);
  }
 else {
    cause=Cause.of(worldObj);
  }
  final ImmutableList.Builder<EntitySnapshot> entitySnapshotBuilder=ImmutableList.builder();
  for (  Object obj : list) {
    org.spongepowered.api.entity.Entity spongeEntity=(org.spongepowered.api.entity.Entity)obj;
    entitySnapshotBuilder.add(spongeEntity.createSnapshot());
  }
  final ImmutableList<EntitySnapshot> entitySnapshots=entitySnapshotBuilder.build();
  @SuppressWarnings("String_Node_Str") final ExplosionEvent.Detonate event=SpongeEventFactory.createExplosionEventDetonate(Sponge.getGame(),cause,(List<org.spongepowered.api.entity.Entity>)list,entitySnapshots,spongeExplosion,(org.spongepowered.api.world.World)worldObj,blockTransactions);
  boolean cancelled=Sponge.getGame().getEventManager().post(event);
  affectedBlockPositions.clear();
  if (!cancelled) {
    if (spongeExplosion.shouldBreakBlocks()) {
      for (      Transaction<BlockSnapshot> transaction : event.getTransactions()) {
        if (transaction.isValid()) {
          affectedBlockPositions.add(VecHelper.toBlockPos(transaction.getFinal().getPosition()));
        }
      }
    }
  }
}

Fixed version (ground truth):
@Redirect(method="String_Node_Str",at=@At(value="String_Node_Str",target="String_Node_Str" + "String_Node_Str")) public List<?> callWorldOnExplosionEvent(World world,Entity entity,AxisAlignedBB aabb){
  List<?> list=world.getEntitiesWithinAABBExcludingEntity(entity,aabb);
  final org.spongepowered.api.world.explosion.Explosion spongeExplosion=(org.spongepowered.api.world.explosion.Explosion)this;
  final ImmutableList.Builder<Transaction<BlockSnapshot>> blockTransactionBuilder=ImmutableList.builder();
  for (  Object obj : affectedBlockPositions) {
    final BlockPos blockPos=(BlockPos)obj;
    final BlockSnapshot currentSnapshot=((org.spongepowered.api.world.World)worldObj).createSnapshot(blockPos.getX(),blockPos.getY(),blockPos.getZ());
    blockTransactionBuilder.add(new Transaction<>(currentSnapshot,currentSnapshot.withState(BlockTypes.AIR.getDefaultState())));
  }
  final ImmutableList<Transaction<BlockSnapshot>> blockTransactions=blockTransactionBuilder.build();
  Cause cause;
  final EntityLivingBase igniter=getExplosivePlacedBy();
  if (exploder != null && igniter != null) {
    cause=Cause.of(igniter,exploder,worldObj);
  }
 else   if (exploder == null && igniter != null) {
    cause=Cause.of(igniter,worldObj);
  }
 else   if (exploder != null && igniter == null) {
    cause=Cause.of(exploder,worldObj);
  }
 else {
    cause=Cause.of(worldObj);
  }
  final ImmutableList.Builder<EntitySnapshot> entitySnapshotBuilder=ImmutableList.builder();
  for (  Object obj : list) {
    org.spongepowered.api.entity.Entity spongeEntity=(org.spongepowered.api.entity.Entity)obj;
    entitySnapshotBuilder.add(spongeEntity.createSnapshot());
  }
  final ImmutableList<EntitySnapshot> entitySnapshots=entitySnapshotBuilder.build();
  @SuppressWarnings("String_Node_Str") final ExplosionEvent.Detonate event=SpongeEventFactory.createExplosionEventDetonate(Sponge.getGame(),cause,(List<org.spongepowered.api.entity.Entity>)list,entitySnapshots,spongeExplosion,(org.spongepowered.api.world.World)worldObj,blockTransactions);
  boolean cancelled=Sponge.postEvent(event);
  affectedBlockPositions.clear();
  if (!cancelled) {
    if (spongeExplosion.shouldBreakBlocks()) {
      for (      Transaction<BlockSnapshot> transaction : event.getTransactions()) {
        if (transaction.isValid()) {
          affectedBlockPositions.add(VecHelper.toBlockPos(transaction.getFinal().getPosition()));
        }
      }
    }
  }
  return list;
}