Program: 173555
Project: 173555
Buggy source:
/** 
 * @see rails.common.parser.Configurable#configureFromXML(org.w3c.dom.Element)
 */
public void configureFromXML(Tag tag) throws ConfigurationException {
  Pattern namePattern=Pattern.compile("String_Node_Str");
  infoText=name=tag.getAttributeAsString("String_Node_Str");
  Matcher m=namePattern.matcher(name);
  if (!m.matches()) {
    throw new ConfigurationException("String_Node_Str" + name);
  }
  String letters=m.group(1);
  if (letters.length() == 1) {
    letter=letters.charAt(0);
  }
 else {
    letter=26 + letters.charAt(1);
  }
  try {
    number=Integer.parseInt(m.group(2));
    if (number > 90)     number-=100;
  }
 catch (  NumberFormatException e) {
  }
  if (lettersGoHorizontal()) {
    row=number;
    column=letter - '@';
    if (getTileOrientation() == TileOrientation.EW) {
      x=column;
      y=row / 2;
    }
 else {
      x=column;
      y=(row + 1) / 2;
    }
  }
 else {
    row=letter - '@';
    column=number;
    if (getTileOrientation() == TileOrientation.EW) {
      x=(column + 8 + (letterAHasEvenNumbers() ? 1 : 0)) / 2 - 4;
      y=row;
    }
 else {
      x=column;
      y=(row + 1) / 2;
    }
  }
  preprintedTiled=tag.getAttributeAsInteger("String_Node_Str",-999);
  preprintedTileRotation=tag.getAttributeAsInteger("String_Node_Str",0);
  currentTileRotation=preprintedTileRotation;
  impassable=tag.getAttributeAsString("String_Node_Str");
  tileCost=tag.getAttributeAsIntegerArray("String_Node_Str",new int[0]);
  valuesPerPhase=tag.getAttributeAsIntegerArray("String_Node_Str",null);
  cityName=tag.getAttributeAsString("String_Node_Str","String_Node_Str");
  if (Util.hasValue(cityName)) {
    infoText+="String_Node_Str" + cityName;
  }
  if (tag.getAttributeAsString("String_Node_Str") != null) {
    setBlockedForTokenLays(tag.getAttributeAsBoolean("String_Node_Str",false));
  }
  reservedForCompany=tag.getAttributeAsString("String_Node_Str");
  List<Tag> bonusTags=tag.getChildren("String_Node_Str");
  if (bonusTags != null) {
    revenueBonuses=new ArrayList<RevenueBonusTemplate>();
    for (    Tag bonusTag : bonusTags) {
      RevenueBonusTemplate bonus=new RevenueBonusTemplate();
      bonus.configureFromXML(bonusTag);
      revenueBonuses.add(bonus);
    }
  }
  for (  int side : tag.getAttributeAsIntegerArray("String_Node_Str",new int[0])) {
    if (openHexSides == null)     openHexSides=new boolean[6];
    openHexSides[side % 6]=true;
  }
  Tag accessTag=tag.getChild("String_Node_Str");
  if (accessTag != null) {
    String runThroughString=accessTag.getAttributeAsString("String_Node_Str");
    if (Util.hasValue(runThroughString)) {
      try {
        runThroughAllowed=RunThrough.valueOf(runThroughString.toUpperCase());
      }
 catch (      IllegalArgumentException e) {
        throw new ConfigurationException("String_Node_Str" + name + "String_Node_Str"+ runThroughString,e);
      }
    }
    String runToString=accessTag.getAttributeAsString("String_Node_Str");
    if (Util.hasValue(runToString)) {
      try {
        runToAllowed=RunTo.valueOf(runToString.toUpperCase());
      }
 catch (      IllegalArgumentException e) {
        throw new ConfigurationException("String_Node_Str" + name + "String_Node_Str"+ runToString,e);
      }
    }
    String loopString=accessTag.getAttributeAsString("String_Node_Str");
    if (Util.hasValue(loopString)) {
      try {
        loopAllowed=Loop.valueOf(loopString.toUpperCase());
      }
 catch (      IllegalArgumentException e) {
        throw new ConfigurationException("String_Node_Str" + name + "String_Node_Str"+ loopString,e);
      }
    }
    String typeString=accessTag.getAttributeAsString("String_Node_Str");
    if (Util.hasValue(typeString)) {
      try {
        stopType=Type.valueOf(typeString.toUpperCase());
      }
 catch (      IllegalArgumentException e) {
        throw new ConfigurationException("String_Node_Str" + name + "String_Node_Str"+ typeString,e);
      }
    }
    String scoreTypeString=accessTag.getAttributeAsString("String_Node_Str");
    if (Util.hasValue(scoreTypeString)) {
      try {
        scoreType=Score.valueOf(scoreTypeString.toUpperCase());
      }
 catch (      IllegalArgumentException e) {
        throw new ConfigurationException("String_Node_Str" + name + "String_Node_Str"+ scoreTypeString,e);
      }
    }
  }
}

Fixed version (ground truth):
/** 
 * @see rails.common.parser.Configurable#configureFromXML(org.w3c.dom.Element)
 */
public void configureFromXML(Tag tag) throws ConfigurationException {
  Pattern namePattern=Pattern.compile("String_Node_Str");
  infoText=name=tag.getAttributeAsString("String_Node_Str");
  Matcher m=namePattern.matcher(name);
  if (!m.matches()) {
    throw new ConfigurationException("String_Node_Str" + name);
  }
  String letters=m.group(1);
  if (letters.length() == 1) {
    letter=letters.charAt(0);
  }
 else {
    letter=26 + letters.charAt(1);
  }
  try {
    number=Integer.parseInt(m.group(2));
    if (number > 90)     number-=100;
  }
 catch (  NumberFormatException e) {
  }
  if (lettersGoHorizontal()) {
    row=number;
    column=letter - '@';
    if (getTileOrientation() == TileOrientation.EW) {
      x=column;
      y=row / 2;
    }
 else {
      x=column;
      y=(row + 1) / 2;
    }
  }
 else {
    row=letter - '@';
    column=number;
    if (getTileOrientation() == TileOrientation.EW) {
      x=(column + 8 + (letterAHasEvenNumbers() ? 1 : 0)) / 2 - 4;
      y=row;
    }
 else {
      x=column;
      y=(row + 1) / 2;
    }
  }
  preprintedTileId=tag.getAttributeAsInteger("String_Node_Str",-999);
  preprintedTileRotation=tag.getAttributeAsInteger("String_Node_Str",0);
  currentTileRotation=preprintedTileRotation;
  impassable=tag.getAttributeAsString("String_Node_Str");
  tileCost=tag.getAttributeAsIntegerArray("String_Node_Str",new int[0]);
  valuesPerPhase=tag.getAttributeAsIntegerArray("String_Node_Str",null);
  cityName=tag.getAttributeAsString("String_Node_Str","String_Node_Str");
  if (Util.hasValue(cityName)) {
    infoText+="String_Node_Str" + cityName;
  }
  if (tag.getAttributeAsString("String_Node_Str") != null) {
    setBlockedForTokenLays(tag.getAttributeAsBoolean("String_Node_Str",false));
  }
  reservedForCompany=tag.getAttributeAsString("String_Node_Str");
  List<Tag> bonusTags=tag.getChildren("String_Node_Str");
  if (bonusTags != null) {
    revenueBonuses=new ArrayList<RevenueBonusTemplate>();
    for (    Tag bonusTag : bonusTags) {
      RevenueBonusTemplate bonus=new RevenueBonusTemplate();
      bonus.configureFromXML(bonusTag);
      revenueBonuses.add(bonus);
    }
  }
  for (  int side : tag.getAttributeAsIntegerArray("String_Node_Str",new int[0])) {
    if (openHexSides == null)     openHexSides=new boolean[6];
    openHexSides[side % 6]=true;
  }
  Tag accessTag=tag.getChild("String_Node_Str");
  if (accessTag != null) {
    String runThroughString=accessTag.getAttributeAsString("String_Node_Str");
    if (Util.hasValue(runThroughString)) {
      try {
        runThroughAllowed=RunThrough.valueOf(runThroughString.toUpperCase());
      }
 catch (      IllegalArgumentException e) {
        throw new ConfigurationException("String_Node_Str" + name + "String_Node_Str"+ runThroughString,e);
      }
    }
    String runToString=accessTag.getAttributeAsString("String_Node_Str");
    if (Util.hasValue(runToString)) {
      try {
        runToAllowed=RunTo.valueOf(runToString.toUpperCase());
      }
 catch (      IllegalArgumentException e) {
        throw new ConfigurationException("String_Node_Str" + name + "String_Node_Str"+ runToString,e);
      }
    }
    String loopString=accessTag.getAttributeAsString("String_Node_Str");
    if (Util.hasValue(loopString)) {
      try {
        loopAllowed=Loop.valueOf(loopString.toUpperCase());
      }
 catch (      IllegalArgumentException e) {
        throw new ConfigurationException("String_Node_Str" + name + "String_Node_Str"+ loopString,e);
      }
    }
    String typeString=accessTag.getAttributeAsString("String_Node_Str");
    if (Util.hasValue(typeString)) {
      try {
        stopType=Type.valueOf(typeString.toUpperCase());
      }
 catch (      IllegalArgumentException e) {
        throw new ConfigurationException("String_Node_Str" + name + "String_Node_Str"+ typeString,e);
      }
    }
    String scoreTypeString=accessTag.getAttributeAsString("String_Node_Str");
    if (Util.hasValue(scoreTypeString)) {
      try {
        scoreType=Score.valueOf(scoreTypeString.toUpperCase());
      }
 catch (      IllegalArgumentException e) {
        throw new ConfigurationException("String_Node_Str" + name + "String_Node_Str"+ scoreTypeString,e);
      }
    }
  }
}