Program: 112804
Project: 112804
Buggy source:
/** 
 * Attack with the minion
 * @param targetMinionPlayerIndex The index of the target player.  0 if targeting yourself or your own minions, 1 if targeting the enemy
 * @param targetMinion The target minion
 * @param boardState The BoardState before this card has performed its action.  It will be manipulated and returned.
 * @param deckPlayer0 The deck of player0
 * @param deckPlayer0 The deck of player1
 * @return The boardState is manipulated and returned
 */
protected HearthTreeNode attack_core(int targetMinionPlayerIndex,Minion targetMinion,HearthTreeNode boardState,Deck deckPlayer0,Deck deckPlayer1) throws HSException {
  if (hasAttacked_) {
    return null;
  }
  if (targetMinionPlayerIndex == 0) {
    return null;
  }
  if (attack_ + extraAttackUntilTurnEnd_ <= 0)   return null;
  HearthTreeNode toRet=boardState;
  byte origAttack=targetMinion.attack_;
  toRet=targetMinion.takeDamage((byte)(this.attack_ + this.extraAttackUntilTurnEnd_),0,targetMinionPlayerIndex,toRet,deckPlayer0,deckPlayer1);
  toRet=this.takeDamage(origAttack,targetMinionPlayerIndex,0,toRet,deckPlayer0,deckPlayer1);
  if (!(targetMinion instanceof Hero)) {
    if (targetMinion.getHealth() <= 0) {
      toRet=targetMinion.destroyed(targetMinionPlayerIndex,boardState,deckPlayer0,deckPlayer1);
      toRet.data_.removeMinion_p1(targetMinion);
    }
  }
  if (!(this instanceof Hero)) {
    if (health_ <= 0) {
      toRet=this.destroyed(0,boardState,deckPlayer0,deckPlayer1);
      toRet.data_.removeMinion_p0(this);
    }
  }
  if (windFury_ && !hasWindFuryAttacked_)   hasWindFuryAttacked_=true;
 else   hasAttacked_=true;
  return toRet;
}

Fixed version (ground truth):
/** 
 * Attack with the minion
 * @param targetMinionPlayerIndex The index of the target player.  0 if targeting yourself or your own minions, 1 if targeting the enemy
 * @param targetMinion The target minion
 * @param boardState The BoardState before this card has performed its action.  It will be manipulated and returned.
 * @param deckPlayer0 The deck of player0
 * @param deckPlayer0 The deck of player1
 * @return The boardState is manipulated and returned
 */
protected HearthTreeNode attack_core(int targetMinionPlayerIndex,Minion targetMinion,HearthTreeNode boardState,Deck deckPlayer0,Deck deckPlayer1) throws HSException {
  if (hasAttacked_) {
    return null;
  }
  if (targetMinionPlayerIndex == 0) {
    return null;
  }
  if (attack_ + extraAttackUntilTurnEnd_ <= 0)   return null;
  HearthTreeNode toRet=boardState;
  byte origAttack=targetMinion.attack_;
  toRet=targetMinion.takeDamage((byte)(this.attack_ + this.extraAttackUntilTurnEnd_),0,targetMinionPlayerIndex,toRet,deckPlayer0,deckPlayer1);
  toRet=this.takeDamage(origAttack,targetMinionPlayerIndex,0,toRet,deckPlayer0,deckPlayer1);
  if (!(targetMinion instanceof Hero)) {
    if (targetMinion.getHealth() <= 0) {
      toRet=targetMinion.destroyed(targetMinionPlayerIndex,toRet,deckPlayer0,deckPlayer1);
      toRet.data_.removeMinion_p1(targetMinion);
    }
  }
  if (!(this instanceof Hero)) {
    if (health_ <= 0) {
      toRet=this.destroyed(0,toRet,deckPlayer0,deckPlayer1);
      toRet.data_.removeMinion_p0(this);
    }
  }
  if (windFury_ && !hasWindFuryAttacked_)   hasWindFuryAttacked_=true;
 else   hasAttacked_=true;
  return toRet;
}