Program: 63433
Project: 63433
Buggy source:
private void executionReport(Message message,SessionID sessionID) throws FieldNotFound {
  ExecID execID=(ExecID)message.getField(new ExecID());
  if (alreadyProcessed(execID,sessionID))   return;
  Order order=orderTableModel.getOrder(message.getField(new ClOrdID()).getValue());
  if (order == null) {
    return;
  }
  double fillSize=0;
  try {
    LastShares lastShares=new LastShares();
    message.getField(lastShares);
    fillSize=lastShares.getValue();
  }
 catch (  FieldNotFound e) {
    LeavesQty leavesQty=new LeavesQty();
    message.getField(leavesQty);
    fillSize=order.getQuantity() - leavesQty.getValue();
  }
  if (fillSize > 0) {
    order.setOpen((int)(order.getOpen() - fillSize));
    order.setExecuted((int)message.getField(new CumQty()).getValue());
    order.setAvgPx(message.getField(new AvgPx()).getValue());
  }
  OrdStatus ordStatus=(OrdStatus)message.getField(new OrdStatus());
  if (ordStatus.valueEquals(OrdStatus.REJECTED)) {
    order.setRejected(true);
    order.setOpen(0);
  }
 else   if (ordStatus.valueEquals(OrdStatus.CANCELED) || ordStatus.valueEquals(OrdStatus.DONE_FOR_DAY)) {
    order.setCanceled(true);
    order.setOpen(0);
  }
 else   if (ordStatus.valueEquals(OrdStatus.NEW)) {
    if (order.isNew()) {
      order.setNew(false);
    }
  }
  try {
    order.setMessage(message.getField(new Text()).getValue());
  }
 catch (  FieldNotFound e) {
  }
  orderTableModel.updateOrder(order,message.getField(new ClOrdID()).getValue());
  observableOrder.update(order);
  if (fillSize > 0) {
    Execution execution=new Execution();
    execution.setExchangeID(sessionID + message.getField(new ExecID()).getValue());
    execution.setSymbol(message.getField(new Symbol()).getValue());
    execution.setQuantity((int)fillSize);
    execution.setPrice(message.getField(new LastPx()).getValue());
    Side side=(Side)message.getField(new Side());
    execution.setSide(FIXSideToSide(side));
    executionTableModel.addExecution(execution);
  }
}

Fixed version (ground truth):
private void executionReport(Message message,SessionID sessionID) throws FieldNotFound {
  ExecID execID=(ExecID)message.getField(new ExecID());
  if (alreadyProcessed(execID,sessionID))   return;
  Order order=orderTableModel.getOrder(message.getField(new ClOrdID()).getValue());
  if (order == null) {
    return;
  }
  double fillSize=0;
  try {
    LastShares lastShares=new LastShares();
    message.getField(lastShares);
    fillSize=lastShares.getValue();
  }
 catch (  FieldNotFound e) {
    LeavesQty leavesQty=new LeavesQty();
    message.getField(leavesQty);
    fillSize=order.getQuantity() - leavesQty.getValue();
  }
  if (fillSize > 0) {
    order.setOpen((int)(order.getOpen() - fillSize));
    order.setExecuted((int)message.getField(new CumQty()).getValue());
    order.setAvgPx(message.getField(new AvgPx()).getValue());
  }
  OrdStatus ordStatus=(OrdStatus)message.getField(new OrdStatus());
  if (ordStatus.valueEquals(OrdStatus.REJECTED)) {
    order.setRejected(true);
    order.setOpen(0);
  }
 else   if (ordStatus.valueEquals(OrdStatus.CANCELED) || ordStatus.valueEquals(OrdStatus.DONE_FOR_DAY)) {
    order.setCanceled(true);
    order.setOpen(0);
  }
 else   if (ordStatus.valueEquals(OrdStatus.NEW)) {
    if (order.isNew()) {
      order.setNew(false);
    }
  }
  try {
    order.setMessage(message.getField(new Text()).getValue());
  }
 catch (  FieldNotFound e) {
  }
  orderTableModel.updateOrder(order,message.getField(new ClOrdID()).getValue());
  observableOrder.update(order);
  if (fillSize > 0) {
    Execution execution=new Execution();
    execution.setExchangeID(sessionID + message.getField(new ExecID()).getValue());
    execution.setSymbol(message.getField(new Symbol()).getValue());
    execution.setQuantity((int)fillSize);
    if (message.isSetField(LastPx.FIELD)) {
      execution.setPrice(message.getField(new LastPx()).getValue());
    }
    Side side=(Side)message.getField(new Side());
    execution.setSide(FIXSideToSide(side));
    executionTableModel.addExecution(execution);
  }
}