Program: 173893
Project: 173893
Buggy source:
/** 
 * @see game.ConfigurableComponentI#configureFromXML(org.w3c.dom.Element)
 */
public void configureFromXML(Element el) throws ConfigurationException {
  NamedNodeMap nnp=el.getAttributes();
  Pattern namePattern=Pattern.compile("String_Node_Str");
  name=XmlUtils.extractStringAttribute(nnp,"String_Node_Str");
  Matcher m=namePattern.matcher(name);
  if (!m.matches()) {
    throw new ConfigurationException("String_Node_Str" + name);
  }
  letter=m.group(1).charAt(0);
  try {
    number=Integer.parseInt(m.group(2));
  }
 catch (  NumberFormatException e) {
  }
  if (lettersGoHorizontal) {
    row=number;
    column=letter - '@';
    if (tileOrientation == MapHex.EW) {
      x=column;
      y=row / 2;
    }
 else {
      x=column;
      y=(row + 1) / 2;
    }
  }
 else {
    row=letter - '@';
    column=number;
    if (tileOrientation == MapHex.EW) {
      x=(column + (letterAHasEvenNumbers ? 1 : 0)) / 2;
      y=row;
    }
 else {
      x=column;
      y=(row + 1) / 2;
    }
  }
  String sTileId=XmlUtils.extractStringAttribute(nnp,"String_Node_Str");
  if (sTileId != null) {
    try {
      preprintedTileId=Integer.parseInt(sTileId);
    }
 catch (    NumberFormatException e) {
      throw new ConfigurationException("String_Node_Str" + sTileId);
    }
  }
 else {
    preprintedTileId=-999;
  }
  preprintedTileOrientation=XmlUtils.extractIntegerAttribute(nnp,"String_Node_Str",0);
  currentTile=TileManager.get().getTile(preprintedTileId);
  currentTileRotation=preprintedTileOrientation;
  impassable=XmlUtils.extractStringAttribute(nnp,"String_Node_Str");
  tileCost=XmlUtils.extractIntegerAttribute(nnp,"String_Node_Str",0);
  stations=(ArrayList)currentTile.getStations();
  preferredCity=XmlUtils.extractIntegerAttribute(nnp,"String_Node_Str",0);
  companyHomeName=XmlUtils.extractStringAttribute(nnp,"String_Node_Str");
  companyDestinationName=XmlUtils.extractStringAttribute(nnp,"String_Node_Str");
}

Fixed version (ground truth):
/** 
 * @see game.ConfigurableComponentI#configureFromXML(org.w3c.dom.Element)
 */
public void configureFromXML(Element el) throws ConfigurationException {
  NamedNodeMap nnp=el.getAttributes();
  Pattern namePattern=Pattern.compile("String_Node_Str");
  name=XmlUtils.extractStringAttribute(nnp,"String_Node_Str");
  Matcher m=namePattern.matcher(name);
  if (!m.matches()) {
    throw new ConfigurationException("String_Node_Str" + name);
  }
  letter=m.group(1).charAt(0);
  try {
    number=Integer.parseInt(m.group(2));
  }
 catch (  NumberFormatException e) {
  }
  if (lettersGoHorizontal) {
    row=number;
    column=letter - '@';
    if (tileOrientation == MapHex.EW) {
      x=column;
      y=row / 2;
    }
 else {
      x=column;
      y=(row + 1) / 2;
    }
  }
 else {
    row=letter - '@';
    column=number;
    if (tileOrientation == MapHex.EW) {
      x=(column + (letterAHasEvenNumbers ? 1 : 0)) / 2;
      y=row;
    }
 else {
      x=column;
      y=(row + 1) / 2;
    }
  }
  String sTileId=XmlUtils.extractStringAttribute(nnp,"String_Node_Str");
  if (sTileId != null) {
    try {
      preprintedTileId=Integer.parseInt(sTileId);
    }
 catch (    NumberFormatException e) {
      throw new ConfigurationException("String_Node_Str" + sTileId);
    }
  }
 else {
    preprintedTileId=-999;
  }
  preprintedTileOrientation=XmlUtils.extractIntegerAttribute(nnp,"String_Node_Str",0);
  currentTile=TileManager.get().getTile(preprintedTileId);
  currentTileRotation=preprintedTileOrientation;
  impassable=XmlUtils.extractStringAttribute(nnp,"String_Node_Str");
  tileCost=XmlUtils.extractIntegerAttribute(nnp,"String_Node_Str",0);
  preferredCity=XmlUtils.extractIntegerAttribute(nnp,"String_Node_Str",0);
  companyHomeName=XmlUtils.extractStringAttribute(nnp,"String_Node_Str");
  companyDestinationName=XmlUtils.extractStringAttribute(nnp,"String_Node_Str");
  stations=new ArrayList();
  for (int i=0; i < currentTile.getStations().size(); i++) {
    Station s=(Station)currentTile.getStations().get(i);
    stations.add(new Station(s.getId(),s.getType(),s.getValue(),s.getBaseSlots()));
  }
}