Program: 44778
Project: 44778
Buggy source:
private PlayerInfo processEventInfo(Object o) throws Exception {
  Object[] values=((Object[])o);
  if (log.isDebugEnabled())   log.debug(Arrays.toString(values));
  String event=(String)values[0];
  PlayerInfo playerInfo=new PlayerInfo(event,(String)values[1],(String)values[2],parseLong(values[3]),(String)values[4],parseLong(values[5]));
  if (values.length > 6) {
    Date updated;
    if (values[6] instanceof Date) {
      updated=(Date)values[6];
    }
 else {
      try {
        updated=new Date((Integer)values[6] * 1000L);
      }
 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(Arrays.toString(data));
    PenaltyInfo penalty=new PenaltyInfo();
    penalty.setType(Penalty.BAN);
    penalty.setCreated(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(Arrays.toString(data));
    PenaltyInfo penalty=new PenaltyInfo();
    penalty.setType(Penalty.NOTICE);
    penalty.setCreated(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):
private 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,(String)values[1],(String)values[2],parseLong(values[3]),(String)values[4],parseLong(values[5]));
  if (values.length > 6) {
    Date updated;
    if (values[6] instanceof Date) {
      updated=(Date)values[6];
    }
 else {
      try {
        updated=new Date((Integer)values[6] * 1000L);
      }
 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(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(parseLong(data[0]));
    penalty.setReason((String)data[1]);
    penalty.setAdmin((String)data[2]);
    penalty.setAdminId(smartCast(data[3]));
    playerInfo.setPenaltyInfo(penalty);
  }
  return playerInfo;
}