Program: 44758
Project: 44758
Buggy source:
@Deprecated protected PlayerInfo processEventInfo(Object o) throws Exception {
  Object[] values=((Object[])o);
  if (log.isDebugEnabled())   log.debug("String_Node_Str",Arrays.toString(values));
  String event=(String)values[0];
  PlayerInfo playerInfo=new PlayerInfo(event);
  playerInfo.setName((String)values[1]);
  playerInfo.setHash((String)values[2]);
  playerInfo.setClientId(parseLong(values[3]));
  playerInfo.setIp((String)values[4]);
  playerInfo.setLevel(parseLong(values[5]));
  if (values.length > 6) {
    Date updated;
    if (values[6] instanceof Date) {
      updated=(Date)values[6];
    }
 else {
      try {
        updated=DateUtils.timestampToDate((Long)values[6]);
      }
 catch (      Exception e) {
        log.error(e.getMessage());
        updated=new Date();
      }
    }
    playerInfo.setUpdated(updated);
  }
  if (Events.BAN.equals(event)) {
    Object[] data=(Object[])values[7];
    if (log.isDebugEnabled())     log.debug("String_Node_Str",Arrays.toString(data));
    PenaltyInfo penalty=new PenaltyInfo();
    penalty.setType(Penalty.BAN);
    penalty.setCreated(DateUtils.timestampToDate(parseLong(data[1])));
    penalty.setDuration(parseLong(data[2]));
    penalty.setReason((String)data[3]);
    penalty.setAdmin((String)data[4]);
    penalty.setAdminId(smartCast(data[5]));
    playerInfo.setPenaltyInfo(penalty);
  }
 else   if (Events.ADDNOTE.equals(event)) {
    Object[] data=(Object[])values[7];
    if (log.isDebugEnabled())     log.debug("String_Node_Str",Arrays.toString(data));
    PenaltyInfo penalty=new PenaltyInfo();
    penalty.setType(Penalty.NOTICE);
    penalty.setCreated(DateUtils.timestampToDate(parseLong(data[0])));
    penalty.setReason((String)data[1]);
    penalty.setAdmin((String)data[2]);
    penalty.setAdminId(smartCast(data[3]));
    playerInfo.setPenaltyInfo(penalty);
  }
  return playerInfo;
}

Fixed version (ground truth):
@Deprecated protected PlayerInfo processEventInfo(Object o) throws Exception {
  Object[] values=((Object[])o);
  if (log.isDebugEnabled())   log.debug("String_Node_Str",Arrays.toString(values));
  String event=(String)values[0];
  PlayerInfo playerInfo=new PlayerInfo(event);
  playerInfo.setName((String)values[1]);
  playerInfo.setHash((String)values[2]);
  playerInfo.setClientId(parseLong(values[3]));
  playerInfo.setIp((String)values[4]);
  playerInfo.setLevel(parseLong(values[5]));
  if (values.length > 6) {
    Date updated;
    if (values[6] instanceof Date) {
      updated=(Date)values[6];
    }
 else {
      try {
        updated=DateUtils.timestampToDate(parseLong(values[6]));
      }
 catch (      Exception e) {
        log.error(e.getMessage());
        updated=new Date();
      }
    }
    playerInfo.setUpdated(updated);
  }
  if (Events.BAN.equals(event)) {
    Object[] data=(Object[])values[7];
    if (log.isDebugEnabled())     log.debug("String_Node_Str",Arrays.toString(data));
    PenaltyInfo penalty=new PenaltyInfo();
    penalty.setType(Penalty.BAN);
    penalty.setCreated(DateUtils.timestampToDate(parseLong(data[1])));
    penalty.setDuration(parseLong(data[2]));
    penalty.setReason((String)data[3]);
    penalty.setAdmin((String)data[4]);
    penalty.setAdminId(smartCast(data[5]));
    playerInfo.setPenaltyInfo(penalty);
  }
 else   if (Events.ADDNOTE.equals(event)) {
    Object[] data=(Object[])values[7];
    if (log.isDebugEnabled())     log.debug("String_Node_Str",Arrays.toString(data));
    PenaltyInfo penalty=new PenaltyInfo();
    penalty.setType(Penalty.NOTICE);
    penalty.setCreated(DateUtils.timestampToDate(parseLong(data[0])));
    penalty.setReason((String)data[1]);
    penalty.setAdmin((String)data[2]);
    penalty.setAdminId(smartCast(data[3]));
    playerInfo.setPenaltyInfo(penalty);
  }
  return playerInfo;
}