Program: 7511
Project: 7511
Buggy source:
public XmlConfiguration(String dir,Element eltConfigFile,GestionVariables gv) throws IOException {
  fileName=gv.resolveAndEvalString(dir + eltConfigFile.getAttributeValue(FILE_NAME_ATTRIB));
  parameters=new ArrayList<Parameter>();
  @SuppressWarnings("String_Node_Str") List<Element> eltParameters=eltConfigFile.getChildren(PARAMETER_TAG);
  for (  Element eltParameter : eltParameters) {
    Parameter parameter=new Parameter(gv.resolveAndEvalString(eltParameter.getAttributeValue(PARAMETER_KEY_ATTRIB)),getXmlMode(eltParameter.getAttributeValue(XPATH_MODE_ATTRIB)));
    if (eltParameter.getChildren() != null && !eltParameter.getChildren().isEmpty()) {
      @SuppressWarnings("String_Node_Str") List<Element> eltValues=eltParameter.getChildren(VALUE_TAG);
      if (eltValues == null || eltValues.isEmpty()) {
        parameter.addValue(new Value(null,null,gv.resolveAndEvalString(eltParameter.getTextTrim()),parameter.getMode()));
      }
      for (      Element eltValue : eltValues) {
        String relativePath=eltValue.getAttributeValue(RELATIVE_VALUE_ATTRIB);
        if (relativePath != null && !"String_Node_Str".equals(relativePath)) {
          relativePath=gv.resolveAndEvalString(relativePath);
        }
        String location=eltValue.getAttributeValue(VALUE_LOCATION_ATTRIB);
        if (location != null && !"String_Node_Str".equals(location)) {
          location=gv.resolveAndEvalString(location);
        }
        parameter.addValue(new Value(location,relativePath,gv.resolveAndEvalString(eltValue.getTextTrim()),getXmlMode(eltValue.getAttributeValue(XPATH_MODE_ATTRIB))));
      }
    }
 else {
      parameter.addValue(new Value(null,null,gv.resolveAndEvalString(eltParameter.getTextTrim()),parameter.getMode()));
    }
    parameters.add(parameter);
  }
}

Fixed version (ground truth):
public XmlConfiguration(String dir,Element eltConfigFile,GestionVariables gv) throws IOException {
  fileName=gv.resolveAndEvalString(dir + eltConfigFile.getAttributeValue(FILE_NAME_ATTRIB));
  parameters=new ArrayList<Parameter>();
  @SuppressWarnings("String_Node_Str") List<Element> eltParameters=eltConfigFile.getChildren(PARAMETER_TAG);
  for (  Element eltParameter : eltParameters) {
    Parameter parameter=new Parameter(gv.resolveAndEvalString(eltParameter.getAttributeValue(PARAMETER_KEY_ATTRIB)),getXmlMode(eltParameter.getAttributeValue(XPATH_MODE_ATTRIB)));
    if (eltParameter.getChildren() != null && !eltParameter.getChildren().isEmpty()) {
      @SuppressWarnings("String_Node_Str") List<Element> eltValues=eltParameter.getChildren(VALUE_TAG);
      if (eltValues == null || eltValues.isEmpty()) {
        parameter.addValue(new Value(null,null,gv.resolveAndEvalString(eltParameter.getTextTrim()),parameter.getMode()));
      }
      for (      Element eltValue : eltValues) {
        String relativePath=eltValue.getAttributeValue(RELATIVE_VALUE_ATTRIB);
        if (relativePath != null && !"String_Node_Str".equals(relativePath)) {
          relativePath=gv.resolveAndEvalString(relativePath);
        }
        String location=eltValue.getAttributeValue(VALUE_LOCATION_ATTRIB);
        if (location != null && !"String_Node_Str".equals(location)) {
          location=gv.resolveAndEvalString(location);
        }
        parameter.addValue(new Value(location,relativePath,gv.resolveAndEvalString(eltValue.getTextTrim()),parameter.getMode()));
      }
    }
 else {
      parameter.addValue(new Value(null,null,gv.resolveAndEvalString(eltParameter.getTextTrim()),parameter.getMode()));
    }
    parameters.add(parameter);
  }
}