Program: 174517
Project: 174517
Buggy source:
/** 
 * Methods related to living.                            
 */
public void onLivingUpdate(){
  if (this.isFusion()) {
    this.whenFused();
  }
  if (!this.world.isRemote) {
    for (int i=0; i < this.heldEntities.size(); ++i) {
      EntityLivingBase entity=this.heldEntities.get(i);
      if (entity != null && entity.isEntityAlive()) {
        double[] offset=new double[]{0,this.height,0};
        if (this.isFusion()) {
switch (i) {
case 0:
            offset=new double[]{1,1,-1};
          break;
case 1:
        offset=new double[]{-1,1,-1};
      break;
case 2:
    offset=new double[]{1,1,1};
  break;
case 3:
offset=new double[]{-1,1,1};
break;
case 4:
offset=new double[]{1,2,-1};
break;
case 5:
offset=new double[]{-1,2,-1};
break;
case 6:
offset=new double[]{1,2,1};
break;
case 7:
offset=new double[]{-1,2,1};
break;
case 8:
offset=new double[]{0,1,-1};
break;
case 9:
offset=new double[]{0,1,1};
break;
case 10:
offset=new double[]{-1,1,0};
break;
case 11:
offset=new double[]{1,1,0};
break;
case 12:
offset=new double[]{0,2,-1};
break;
case 13:
offset=new double[]{0,2,1};
break;
case 14:
offset=new double[]{-1,2,0};
break;
case 15:
offset=new double[]{1,2,0};
break;
default :
offset=new double[]{0,1.5,0};
if (entity.ticksExisted % 10 == 0) {
entity.attackEntityFrom(DamageSource.IN_WALL,1.0F);
}
}
}
entity.setPositionAndRotation(this.posX + offset[0],this.posY + offset[1],this.posZ + offset[2],this.rotationYaw,this.rotationPitch);
entity.motionX=0;
entity.motionY=0;
entity.motionZ=0;
}
 else if (this.isFusion()) {
this.heldEntities.remove(i);
--i;
}
}
if (this.heldEntities.isEmpty()) {
this.addHeldEntity(null);
}
 else if (this.isFusion()) {
this.motionX=0;
this.motionZ=0;
}
}
super.onLivingUpdate();
}

Fixed version (ground truth):
/** 
 * Methods related to living.                            
 */
public void onLivingUpdate(){
  if (this.isFusion()) {
    this.whenFused();
  }
  if (!this.world.isRemote) {
    for (int i=0; i < this.heldEntities.size(); ++i) {
      EntityLivingBase entity=this.heldEntities.get(i);
      if (entity != null && (entity.isEntityAlive() || entity.getDistanceSq(this) < 16)) {
        double[] offset=new double[]{0,this.height,0};
        if (this.isFusion()) {
switch (i) {
case 0:
            offset=new double[]{1,1,-1};
          break;
case 1:
        offset=new double[]{-1,1,-1};
      break;
case 2:
    offset=new double[]{1,1,1};
  break;
case 3:
offset=new double[]{-1,1,1};
break;
case 4:
offset=new double[]{1,2,-1};
break;
case 5:
offset=new double[]{-1,2,-1};
break;
case 6:
offset=new double[]{1,2,1};
break;
case 7:
offset=new double[]{-1,2,1};
break;
case 8:
offset=new double[]{0,1,-1};
break;
case 9:
offset=new double[]{0,1,1};
break;
case 10:
offset=new double[]{-1,1,0};
break;
case 11:
offset=new double[]{1,1,0};
break;
case 12:
offset=new double[]{0,2,-1};
break;
case 13:
offset=new double[]{0,2,1};
break;
case 14:
offset=new double[]{-1,2,0};
break;
case 15:
offset=new double[]{1,2,0};
break;
default :
offset=new double[]{0,1.5,0};
if (entity.ticksExisted % 10 == 0) {
entity.attackEntityFrom(DamageSource.IN_WALL,1.0F);
}
}
}
entity.setPositionAndRotation(this.posX + offset[0],this.posY + offset[1],this.posZ + offset[2],this.rotationYaw,this.rotationPitch);
entity.motionX=0;
entity.motionY=0;
entity.motionZ=0;
}
 else if (this.isFusion()) {
this.heldEntities.remove(i);
--i;
}
}
if (this.heldEntities.isEmpty()) {
this.dataManager.set(HOLDING,false);
}
 else if (this.isFusion()) {
this.motionX=0;
this.motionZ=0;
}
}
super.onLivingUpdate();
}