nus-yam/ex-repair huggingface dataset:
Program: 108999
Project: 108999
Buggy source:
public CriteriaListView(final Composite parent,final Controller controller,final Model model){
  this.controller=controller;
  this.controller.addListener(EventTarget.CRITERION_DEFINITION,this);
  this.model=model;
  this.symbolL=controller.getResources().getImage("String_Node_Str");
  this.symbolT=controller.getResources().getImage("String_Node_Str");
  this.symbolK=controller.getResources().getImage("String_Node_Str");
  this.symbolD=controller.getResources().getImage("String_Node_Str");
  root=new Composite(parent,SWT.NONE);
  GridLayout l=new GridLayout();
  l.numColumns=1;
  root.setLayout(l);
  final Table table=new Table(root,SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL);
  table.setHeaderVisible(true);
  final GridData d=SWTUtil.createFillGridData();
  table.setLayoutData(d);
  column1=new TableColumn(table,SWT.NONE);
  column1.setText("String_Node_Str");
  column2=new TableColumn(table,SWT.NONE);
  column2.setText(Resources.getMessage("String_Node_Str"));
  column3=new TableColumn(table,SWT.NONE);
  column3.setText(Resources.getMessage("String_Node_Str"));
  column1.pack();
  column2.pack();
  column3.pack();
}

Fixed version (ground truth):
public CriteriaListView(final Composite parent,final Controller controller){
  this.controller=controller;
  this.controller.addListener(EventTarget.CRITERION_DEFINITION,this);
  this.controller.addListener(EventTarget.MODEL,this);
  this.symbolL=controller.getResources().getImage("String_Node_Str");
  this.symbolT=controller.getResources().getImage("String_Node_Str");
  this.symbolK=controller.getResources().getImage("String_Node_Str");
  this.symbolD=controller.getResources().getImage("String_Node_Str");
  root=new Composite(parent,SWT.NONE);
  GridLayout l=new GridLayout();
  l.numColumns=1;
  root.setLayout(l);
  table=new Table(root,SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL);
  table.setHeaderVisible(true);
  final GridData d=SWTUtil.createFillGridData();
  table.setLayoutData(d);
  column1=new TableColumn(table,SWT.NONE);
  column1.setText("String_Node_Str");
  column2=new TableColumn(table,SWT.NONE);
  column2.setText(Resources.getMessage("String_Node_Str"));
  column3=new TableColumn(table,SWT.NONE);
  column3.setText(Resources.getMessage("String_Node_Str"));
  column1.pack();
  column2.pack();
  column3.pack();
}
Program: 109000
Project: 109000
Buggy source:
@Override public void update(ModelEvent event){
  if (event.target == EventTarget.CRITERION_DEFINITION) {
    if (model != null) {
      root.setRedraw(false);
      if (model.getKAnonymityModel().isActive() && model.getKAnonymityModel().isEnabled()) {
        TableItem item=new TableItem(table,SWT.NONE);
        item.setText(new String[]{"String_Node_Str",model.getKAnonymityModel().toString(),"String_Node_Str"});
        item.setImage(0,symbolK);
      }
      if (model.getDPresenceModel().isActive() && model.getDPresenceModel().isEnabled()) {
        TableItem item=new TableItem(table,SWT.NONE);
        item.setText(new String[]{"String_Node_Str",model.getDPresenceModel().toString(),"String_Node_Str"});
        item.setImage(0,symbolD);
      }
      for (      ModelLDiversityCriterion c : model.getLDiversityModel().values()) {
        TableItem item=new TableItem(table,SWT.NONE);
        item.setText(new String[]{"String_Node_Str",c.toString(),c.getAttribute()});
        item.setImage(0,symbolL);
      }
      for (      ModelTClosenessCriterion c : model.getTClosenessModel().values()) {
        TableItem item=new TableItem(table,SWT.NONE);
        item.setText(new String[]{"String_Node_Str",c.toString(),c.getAttribute()});
        item.setImage(0,symbolT);
      }
      column1.pack();
      column2.pack();
      column3.pack();
      root.setRedraw(true);
    }
  }
}

Fixed version (ground truth):
@Override public void update(ModelEvent event){
  if (event.target == EventTarget.MODEL) {
    this.model=(Model)event.data;
  }
 else   if (event.target == EventTarget.CRITERION_DEFINITION) {
    if (model != null) {
      root.setRedraw(false);
      table.removeAll();
      if (model.getKAnonymityModel().isActive() && model.getKAnonymityModel().isEnabled()) {
        TableItem item=new TableItem(table,SWT.NONE);
        item.setText(new String[]{"String_Node_Str",model.getKAnonymityModel().toString(),"String_Node_Str"});
        item.setImage(0,symbolK);
      }
      if (model.getDPresenceModel().isActive() && model.getDPresenceModel().isEnabled()) {
        TableItem item=new TableItem(table,SWT.NONE);
        item.setText(new String[]{"String_Node_Str",model.getDPresenceModel().toString(),"String_Node_Str"});
        item.setImage(0,symbolD);
      }
      for (      ModelLDiversityCriterion c : model.getLDiversityModel().values()) {
        if (c.isActive() && c.isEnabled()) {
          TableItem item=new TableItem(table,SWT.NONE);
          item.setText(new String[]{"String_Node_Str",c.toString(),c.getAttribute()});
          item.setImage(0,symbolL);
        }
      }
      for (      ModelTClosenessCriterion c : model.getTClosenessModel().values()) {
        if (c.isActive() && c.isEnabled()) {
          TableItem item=new TableItem(table,SWT.NONE);
          item.setText(new String[]{"String_Node_Str",c.toString(),c.getAttribute()});
          item.setImage(0,symbolT);
        }
      }
      column1.pack();
      column2.pack();
      column3.pack();
      root.setRedraw(true);
    }
  }
}
Program: 109002
Project: 109002
Buggy source:
@Override protected Control createDialogArea(final Composite parent){
  parent.setLayout(new GridLayout());
  text=new StyledText(parent,SWT.BORDER);
  final GridData d=SWTUtil.createFillGridData();
  d.grabExcessHorizontalSpace=true;
  d.grabExcessVerticalSpace=true;
  text.setLayoutData(d);
  text.setText(this.initial);
  text.addModifyListener(new ModifyListener(){
    @Override public void modifyText(    ModifyEvent arg0){
      highlight();
      parse();
    }
  }
);
  error=new Label(parent,SWT.NONE);
  final GridData d2=SWTUtil.createFillGridData();
  d2.grabExcessHorizontalSpace=true;
  error.setLayoutData(d2);
  error.setText("String_Node_Str");
  return parent;
}

Fixed version (ground truth):
@Override protected Control createDialogArea(final Composite parent){
  parent.setLayout(new GridLayout());
  text=new StyledText(parent,SWT.BORDER | SWT.MULTI | SWT.WRAP);
  text.setLayoutData(SWTUtil.createFillGridData());
  text.setText(this.queryString);
  text.addModifyListener(new ModifyListener(){
    @Override public void modifyText(    ModifyEvent arg0){
      highlight();
      parse();
    }
  }
);
  error=new Label(parent,SWT.NONE);
  error.setLayoutData(SWTUtil.createFillHorizontallyGridData());
  error.setText("String_Node_Str");
  return parent;
}
Program: 109005
Project: 109005
Buggy source:
public QueryDialog(final Data data,final Shell parent,String initial){
  super(parent);
  this.initial=initial;
  this.data=data;
}

Fixed version (ground truth):
public QueryDialog(final Data data,final Shell parent,String initial){
  super(parent);
  this.queryString=initial;
  this.data=data;
}
Program: 109006
Project: 109006
Buggy source:
public String getQuery(){
  return text.getText();
}

Fixed version (ground truth):
public String getQuery(){
  return queryString;
}
Program: 109007
Project: 109007
Buggy source:
public void tokenize(String query){
  int quote=-1;
  boolean first=true;
  char[] data=query.toCharArray();
  for (int i=0; i < data.length; i++) {
    if (data[i] == '\\') {
      i++;
    }
 else     if (data[i] == '"') {
      if (quote == -1) {
        quote=i;
      }
 else {
        if (first) {
          listener.field(quote,i - quote + 1);
        }
 else {
          listener.value(quote,i - quote + 1);
        }
        quote=-1;
        first=!first;
      }
    }
 else     if (quote == -1 && data[i] == '(') {
      listener.begin(i);
    }
 else     if (quote == -1 && data[i] == ')') {
      listener.end(i);
    }
 else     if (quote == -1 && i < data.length - 2 && data[i] == 'a' && data[i + 1] == 'n' && data[i + 2] == 'd') {
      listener.and(i,3);
    }
 else     if (quote == -1 && i < data.length - 1 && data[i] == 'o' && data[i + 1] == 'r') {
      listener.or(i,2);
    }
 else     if ((quote == -1 && i < data.length - 1 && data[i] == '<' && data[i + 1] == '=')) {
      listener.leq(i,2);
    }
 else     if ((quote == -1 && i < data.length - 1 && data[i] == '>' && data[i + 1] == '=')) {
      listener.geq(i,2);
    }
 else     if (quote == -1 && data[i] == '=') {
      listener.equals(i);
    }
 else     if (quote == -1 && data[i] == '<') {
      listener.less(i);
    }
 else     if (quote == -1 && data[i] == '>') {
      listener.greater(i);
    }
    if (i >= data.length)     break;
  }
}

Fixed version (ground truth):
public void tokenize(String query){
  int quote=-1;
  boolean first=true;
  char[] data=query.toCharArray();
  for (int i=0; i < data.length; i++) {
    if (data[i] == '\\') {
      i++;
    }
 else     if (data[i] == '"') {
      if (quote == -1) {
        quote=i;
      }
 else {
        if (first) {
          listener.field(quote,i - quote + 1);
        }
 else {
          listener.value(quote,i - quote + 1);
        }
        quote=-1;
        first=!first;
      }
    }
 else     if (quote == -1 && data[i] == '(') {
      listener.begin(i);
    }
 else     if (quote == -1 && data[i] == ')') {
      listener.end(i);
    }
 else     if (quote == -1 && i < data.length - 2 && data[i] == 'a' && data[i + 1] == 'n' && data[i + 2] == 'd') {
      listener.and(i,3);
      i+=2;
    }
 else     if (quote == -1 && i < data.length - 1 && data[i] == 'o' && data[i + 1] == 'r') {
      listener.or(i,2);
      i++;
    }
 else     if ((quote == -1 && i < data.length - 1 && data[i] == '<' && data[i + 1] == '=')) {
      listener.leq(i,2);
      i++;
    }
 else     if ((quote == -1 && i < data.length - 1 && data[i] == '>' && data[i + 1] == '=')) {
      listener.geq(i,2);
      i++;
    }
 else     if (quote == -1 && data[i] == '=') {
      listener.equals(i);
    }
 else     if (quote == -1 && data[i] == '<') {
      listener.less(i);
    }
 else     if (quote == -1 && data[i] == '>') {
      listener.greater(i);
    }
 else     if (quote == -1 && (data[i] != ' ' && data[i] != '\t' && data[i] != '\n')) {
      listener.invalid(i);
    }
    if (i >= data.length)     break;
  }
}
Program: 109008
Project: 109008
Buggy source:
/** 
 * Reset a previous lattice and run the algorithm 
 * @param handle
 * @param definition
 * @param config
 * @param lattice
 * @param algorithm
 * @return
 * @throws IOException
 */
protected Result anonymizeInternal(final DataHandle handle,final DataDefinition definition,final ARXConfiguration config,Lattice lattice,int multiplier,AbstractAlgorithm algorithm) throws IOException {
  final DataManager manager=prepareDataManager(handle,definition,config);
  config.initialize(manager);
  checkAfterEncoding(config,manager);
  if (lattice == null) {
    lattice=new LatticeBuilder(manager.getMaxLevels(),manager.getMinLevels(),manager.getHierachyHeights()).build();
  }
  printLattice("String_Node_Str",lattice);
  lattice.setListener(listener);
  lattice.setMultiplier(multiplier);
  final INodeChecker checker=new NodeChecker(manager,config.getMetric(),config,historySize,snapshotSizeDataset,snapshotSizeSnapshot);
  config.getMetric().initialize(manager.getDataQI(),manager.getHierarchies(),config);
  if (algorithm != null) {
    algorithm=FLASHAlgorithm.create((AbstractFLASHAlgorithm)algorithm,checker);
  }
 else {
    algorithm=FLASHAlgorithm.create(lattice,checker,new FLASHStrategy(lattice,manager.getHierarchies()));
  }
  algorithm.traverse();
  printLattice("String_Node_Str",lattice);
  return new Result(config.getMetric(),checker,lattice,manager,algorithm);
}

Fixed version (ground truth):
/** 
 * Reset a previous lattice and run the algorithm 
 * @param handle
 * @param definition
 * @param config
 * @param lattice
 * @param algorithm
 * @return
 * @throws IOException
 */
protected Result anonymizeInternal(final DataHandle handle,final DataDefinition definition,final ARXConfiguration config,Lattice lattice,int multiplier,AbstractAlgorithm algorithm) throws IOException {
  final DataManager manager=prepareDataManager(handle,definition,config);
  config.initialize(manager);
  checkAfterEncoding(config,manager);
  if (lattice == null) {
    lattice=new LatticeBuilder(manager.getMaxLevels(),manager.getMinLevels(),manager.getHierachyHeights()).build();
  }
  lattice.setListener(listener);
  lattice.setMultiplier(multiplier);
  final INodeChecker checker=new NodeChecker(manager,config.getMetric(),config,historySize,snapshotSizeDataset,snapshotSizeSnapshot);
  config.getMetric().initialize(manager.getDataQI(),manager.getHierarchies(),config);
  if (algorithm != null) {
    algorithm=FLASHAlgorithm.create((AbstractFLASHAlgorithm)algorithm,checker);
  }
 else {
    algorithm=FLASHAlgorithm.create(lattice,checker,new FLASHStrategy(lattice,manager.getHierarchies()));
  }
  algorithm.traverse();
  return new Result(config.getMetric(),checker,lattice,manager,algorithm);
}
Program: 109009
Project: 109009
Buggy source:
/** 
 * Finds an expression within the given range
 * @param ops
 * @param offset
 * @param length
 * @return
 */
private int findExpression(List<Operator> ops,int offset,int length){
  if (offset >= ops.size()) {
    throw new RuntimeException("String_Node_Str");
  }
  Operator op=ops.get(offset);
  if (op instanceof BinaryOperator) {
    throw new RuntimeException("String_Node_Str");
  }
 else   if (op instanceof UnaryOperator) {
    return 1;
  }
 else   if (op instanceof PrecedenceOperator) {
    PrecedenceOperator pop=(PrecedenceOperator)op;
    if (!pop.begin) {
      throw new RuntimeException("String_Node_Str");
    }
 else {
      int open=1;
      for (int i=offset + 1; i < length; i++) {
        if (ops.get(i) instanceof PrecedenceOperator) {
          pop=(PrecedenceOperator)ops.get(i);
          if (pop.begin)           open++;
 else           open--;
          if (open == 0) {
            return i - offset + 1;
          }
        }
      }
      throw new RuntimeException("String_Node_Str" + open + "String_Node_Str"+ length);
    }
  }
 else {
    throw new RuntimeException("String_Node_Str");
  }
}

Fixed version (ground truth):
/** 
 * Finds an expression within the given range
 * @param ops
 * @param offset
 * @param length
 * @return
 */
private int findExpression(List<Operator> ops,int offset,int length){
  if (offset >= ops.size()) {
    throw new RuntimeException("String_Node_Str");
  }
  Operator op=ops.get(offset);
  if (op instanceof BinaryOperator) {
    throw new RuntimeException("String_Node_Str");
  }
 else   if (op instanceof UnaryOperator) {
    return 1;
  }
 else   if (op instanceof PrecedenceOperator) {
    PrecedenceOperator pop=(PrecedenceOperator)op;
    if (!pop.begin) {
      throw new RuntimeException("String_Node_Str");
    }
 else {
      int open=1;
      for (int i=offset + 1; i < offset + length; i++) {
        if (ops.get(i) instanceof PrecedenceOperator) {
          pop=(PrecedenceOperator)ops.get(i);
          if (pop.begin)           open++;
 else           open--;
          if (open == 0) {
            return i - offset + 1;
          }
        }
 else {
        }
      }
      throw new RuntimeException("String_Node_Str" + open + "String_Node_Str"+ length);
    }
  }
 else {
    throw new RuntimeException("String_Node_Str");
  }
}
Program: 109010
Project: 109010
Buggy source:
private void update(){
  this.size=model.getInputConfig().getResearchSubset().length();
}

Fixed version (ground truth):
private void update(){
  int size=model.getInputConfig().getResearchSubset().size();
  int total=model.getInputConfig().getInput().getHandle().getNumRows();
  double percent=(double)size / (double)total * 100d;
  this.size.setText(String.valueOf(size));
  this.total.setText(String.valueOf(total));
  this.percent.setText(format.format(percent));
}
Program: 109011
Project: 109011
Buggy source:
private void actionImportData(final String path,final char separator){
  final WorkerImport worker=new WorkerImport(path,separator);
  main.showProgressDialog(Resources.getMessage("String_Node_Str"),worker);
  if (worker.getError() != null) {
    main.showErrorDialog(Resources.getMessage("String_Node_Str"),Resources.getMessage("String_Node_Str") + worker.getError().getMessage());
    return;
  }
  reset();
  final Data data=worker.getResult();
  model.reset();
  model.getInputConfig().setInput(data);
  model.setInputBytes(new File(path).length());
  final DataDefinition definition=data.getDefinition();
  for (int i=0; i < data.getHandle().getNumColumns(); i++) {
    definition.setAttributeType(model.getInputConfig().getInput().getHandle().getAttributeName(i),AttributeType.INSENSITIVE_ATTRIBUTE);
    definition.setDataType(model.getInputConfig().getInput().getHandle().getAttributeName(i),DataType.STRING);
  }
  model.resetCriteria();
  model.getInputConfig().setResearchSubset(RowSet.create(data));
  update(new ModelEvent(this,EventTarget.MODEL,model));
  update(new ModelEvent(this,EventTarget.INPUT,data.getHandle()));
  if (data.getHandle().getNumColumns() > 0) {
    model.setSelectedAttribute(data.getHandle().getAttributeName(0));
    update(new ModelEvent(this,EventTarget.SELECTED_ATTRIBUTE,data.getHandle().getAttributeName(0)));
    update(new ModelEvent(this,EventTarget.CRITERION_DEFINITION,null));
    update(new ModelEvent(this,EventTarget.RESEARCH_SUBSET,null));
  }
}

Fixed version (ground truth):
private void actionImportData(final String path,final char separator){
  final WorkerImport worker=new WorkerImport(path,separator);
  main.showProgressDialog(Resources.getMessage("String_Node_Str"),worker);
  if (worker.getError() != null) {
    main.showErrorDialog(Resources.getMessage("String_Node_Str"),Resources.getMessage("String_Node_Str") + worker.getError().getMessage());
    return;
  }
  reset();
  final Data data=worker.getResult();
  model.reset();
  RowSet subset=RowSet.create(data);
  for (int i=0; i < subset.length(); i++) {
    subset.add(i);
  }
  model.getInputConfig().setResearchSubset(subset);
  model.getInputConfig().setInput(data);
  model.setInputBytes(new File(path).length());
  final DataDefinition definition=data.getDefinition();
  for (int i=0; i < data.getHandle().getNumColumns(); i++) {
    definition.setAttributeType(model.getInputConfig().getInput().getHandle().getAttributeName(i),AttributeType.INSENSITIVE_ATTRIBUTE);
    definition.setDataType(model.getInputConfig().getInput().getHandle().getAttributeName(i),DataType.STRING);
  }
  model.resetCriteria();
  update(new ModelEvent(this,EventTarget.MODEL,model));
  update(new ModelEvent(this,EventTarget.INPUT,data.getHandle()));
  if (data.getHandle().getNumColumns() > 0) {
    model.setSelectedAttribute(data.getHandle().getAttributeName(0));
    update(new ModelEvent(this,EventTarget.SELECTED_ATTRIBUTE,data.getHandle().getAttributeName(0)));
    update(new ModelEvent(this,EventTarget.CRITERION_DEFINITION,null));
    update(new ModelEvent(this,EventTarget.RESEARCH_SUBSET,subset));
  }
}
Program: 109012
Project: 109012
Buggy source:
public void actionSubsetFile(){
  final String path=actionShowOpenFileDialog("String_Node_Str");
  if (path == null) {
    return;
  }
  final SeparatorDialog dialog=new SeparatorDialog(main.getShell(),this,path,true);
  dialog.create();
  if (dialog.open() == Window.CANCEL) {
    return;
  }
  final WorkerImport worker=new WorkerImport(path,dialog.getSeparator());
  main.showProgressDialog(Resources.getMessage("String_Node_Str"),worker);
  if (worker.getError() != null) {
    main.showErrorDialog(Resources.getMessage("String_Node_Str"),Resources.getMessage("String_Node_Str") + worker.getError().getMessage());
    return;
  }
  Data subsetData=worker.getResult();
  Data data=model.getInputConfig().getInput();
  DataSubset subset=DataSubset.create(data,subsetData);
  model.getInputConfig().setResearchSubset(subset.getRowSet());
  update(new ModelEvent(this,EventTarget.RESEARCH_SUBSET,subset.getRowSet()));
}

Fixed version (ground truth):
public void actionSubsetFile(){
  final String path=actionShowOpenFileDialog("String_Node_Str");
  if (path == null) {
    return;
  }
  final SeparatorDialog dialog=new SeparatorDialog(main.getShell(),this,path,true);
  dialog.create();
  if (dialog.open() == Window.CANCEL) {
    return;
  }
  final WorkerImport worker=new WorkerImport(path,dialog.getSeparator());
  main.showProgressDialog(Resources.getMessage("String_Node_Str"),worker);
  if (worker.getError() != null) {
    main.showErrorDialog(Resources.getMessage("String_Node_Str"),Resources.getMessage("String_Node_Str") + worker.getError().getMessage());
    return;
  }
  Data subsetData=worker.getResult();
  Data data=model.getInputConfig().getInput();
  try {
    DataSubset subset=DataSubset.create(data,subsetData);
    model.getInputConfig().setResearchSubset(subset.getRowSet());
    update(new ModelEvent(this,EventTarget.RESEARCH_SUBSET,subset.getRowSet()));
  }
 catch (  IllegalArgumentException e) {
    main.showErrorDialog("String_Node_Str",e.getMessage());
  }
}
Program: 109014
Project: 109014
Buggy source:
public ArrayDataProvider(final String[][] data,final RowSet rows){
  this.data=data;
  this.rows=rows;
}

Fixed version (ground truth):
public ArrayDataProvider(final String[][] data){
  this.data=data;
}
Program: 109015
Project: 109015
Buggy source:
@Override public void setData(final String[][] data,final RowSet rows,int[] colors,int[] groups){
  this.table.setRedraw(false);
  this.handle=null;
  this.data=data;
  this.rows=rows;
  this.headerImages.clear();
  this.gridLayer=new TableGridLayerStack(new ArrayDataProvider(data,rows));
  this.table.setLayer(gridLayer);
  this.table.refresh();
  this.gridLayer.getBodyLayer().getViewportLayer().recalculateScrollBars();
  this.table.getVerticalBar().setVisible(false);
  this.table.getHorizontalBar().setVisible(false);
  this.table.setRedraw(true);
  this.table.redraw();
  this.table.setVisible(true);
  this.table.getVerticalBar().setVisible(true);
  this.table.getHorizontalBar().setVisible(true);
  this.table.setVisible(true);
  this.rowColors=colors;
  this.rowGroups=groups;
}

Fixed version (ground truth):
@Override public void setData(final String[][] data,final RowSet rows,int[] colors,int[] groups){
  this.table.setRedraw(false);
  this.handle=null;
  this.data=data;
  this.rows=rows;
  this.headerImages.clear();
  this.gridLayer=new TableGridLayerStack(new ArrayDataProvider(data));
  this.table.setLayer(gridLayer);
  this.table.refresh();
  this.gridLayer.getBodyLayer().getViewportLayer().recalculateScrollBars();
  this.table.getVerticalBar().setVisible(false);
  this.table.getHorizontalBar().setVisible(false);
  this.table.setRedraw(true);
  this.table.redraw();
  this.table.setVisible(true);
  this.table.getVerticalBar().setVisible(true);
  this.table.getHorizontalBar().setVisible(true);
  this.table.setVisible(true);
  this.rowColors=colors;
  this.rowGroups=groups;
}
Program: 109016
Project: 109016
Buggy source:
public HandleDataProvider(final DataHandle data,final RowSet rows){
  this.data=data;
  this.rows=rows;
}

Fixed version (ground truth):
public HandleDataProvider(final DataHandle data){
  this.data=data;
}
Program: 109017
Project: 109017
Buggy source:
@Override public void reset(){
  this.table.setRedraw(false);
  this.headerImages.clear();
  this.gridLayer=new TableGridLayerStack(new HandleDataProvider(null,null));
  this.handle=null;
  this.data=null;
  this.rows=null;
  this.table.setLayer(gridLayer);
  this.table.refresh();
  this.gridLayer.getBodyLayer().getViewportLayer().recalculateScrollBars();
  this.table.getVerticalBar().setVisible(false);
  this.table.getHorizontalBar().setVisible(false);
  this.table.setRedraw(true);
  this.table.redraw();
  this.table.setVisible(false);
  this.table.getVerticalBar().setVisible(true);
  this.table.getHorizontalBar().setVisible(true);
  this.table.setVisible(false);
}

Fixed version (ground truth):
@Override public void reset(){
  this.table.setRedraw(false);
  this.headerImages.clear();
  this.gridLayer=new TableGridLayerStack(new HandleDataProvider(null));
  this.handle=null;
  this.data=null;
  this.rows=null;
  this.table.setLayer(gridLayer);
  this.table.refresh();
  this.gridLayer.getBodyLayer().getViewportLayer().recalculateScrollBars();
  this.table.getVerticalBar().setVisible(false);
  this.table.getHorizontalBar().setVisible(false);
  this.table.setRedraw(true);
  this.table.redraw();
  this.table.setVisible(false);
  this.table.getVerticalBar().setVisible(true);
  this.table.getHorizontalBar().setVisible(true);
  this.table.setVisible(false);
}
Program: 109018
Project: 109018
Buggy source:
private void sortDefault(){
  list.removeAll();
  final DataType type=model.getDataType();
  Collections.sort(model.getItems(),new Comparator<String>(){
    @Override public int compare(    final String arg0,    final String arg1){
      try {
        return order * type.compare(arg0,arg1);
      }
 catch (      final ParseException e) {
        throw new RuntimeException(e);
      }
    }
  }
);
  for (  final String s : model.getItems()) {
    list.add(s);
  }
}

Fixed version (ground truth):
private void sortDefault(){
  list.removeAll();
  final DataType<?> type=model.getDataType();
  Collections.sort(model.getItems(),new Comparator<String>(){
    @Override public int compare(    final String arg0,    final String arg1){
      try {
        return order * type.compare(arg0,arg1);
      }
 catch (      final ParseException e) {
        throw new RuntimeException(e);
      }
    }
  }
);
  for (  final String s : model.getItems()) {
    list.add(s);
  }
}
Program: 109021
Project: 109021
Buggy source:
/** 
 * Initializes the configuration
 * @param manager
 */
protected void initialize(DataManager manager){
  if (criteria.isEmpty()) {
    throw new RuntimeException("String_Node_Str");
  }
  this.requirements=0x0;
  for (  PrivacyCriterion c : criteria) {
    this.requirements|=c.getRequirements();
  }
  if (this.containsCriterion(DPresence.class)) {
    this.getCriterion(DPresence.class).initialize(manager);
  }
  for (  PrivacyCriterion c : criteria) {
    if (!(c instanceof DPresence)) {
      c.initialize(manager);
    }
  }
  absMaxOutliers=(int)Math.floor(this.relMaxOutliers * (double)manager.getDataQI().getDataLength());
  List<PrivacyCriterion> list=new ArrayList<PrivacyCriterion>();
  if (this.containsCriterion(DPresence.class)) {
    list.add(this.getCriterion(DPresence.class));
  }
  if (this.containsCriterion(LDiversity.class)) {
    list.addAll(this.getCriteria(LDiversity.class));
  }
  if (this.containsCriterion(TCloseness.class)) {
    list.addAll(this.getCriteria(TCloseness.class));
  }
  this.aCriteria=list.toArray(new PrivacyCriterion[0]);
  this.snapshotLength=2;
  if (this.requires(REQUIREMENT_DISTRIBUTION)) {
    this.snapshotLength+=2;
  }
  if (this.requires(REQUIREMENT_SECONDARY_COUNTER)) {
    this.snapshotLength+=1;
  }
}

Fixed version (ground truth):
/** 
 * Initializes the configuration
 * @param manager
 */
protected void initialize(DataManager manager){
  if (criteria.isEmpty()) {
    throw new RuntimeException("String_Node_Str");
  }
  this.requirements=0x0;
  for (  PrivacyCriterion c : criteria) {
    this.requirements|=c.getRequirements();
  }
  if (this.containsCriterion(DPresence.class)) {
    this.getCriterion(DPresence.class).initialize(manager);
  }
  for (  PrivacyCriterion c : criteria) {
    if (!(c instanceof DPresence)) {
      c.initialize(manager);
    }
  }
  int dataLength=0;
  if (this.containsCriterion(DPresence.class)) {
    dataLength=this.getCriterion(DPresence.class).getResearchSubsetSize();
  }
 else {
    dataLength=manager.getDataQI().getDataLength();
  }
  absMaxOutliers=(int)Math.floor(this.relMaxOutliers * (double)dataLength);
  List<PrivacyCriterion> list=new ArrayList<PrivacyCriterion>();
  if (this.containsCriterion(DPresence.class)) {
    list.add(this.getCriterion(DPresence.class));
  }
  if (this.containsCriterion(LDiversity.class)) {
    list.addAll(this.getCriteria(LDiversity.class));
  }
  if (this.containsCriterion(TCloseness.class)) {
    list.addAll(this.getCriteria(TCloseness.class));
  }
  this.aCriteria=list.toArray(new PrivacyCriterion[0]);
  this.snapshotLength=2;
  if (this.requires(REQUIREMENT_DISTRIBUTION)) {
    this.snapshotLength+=2;
  }
  if (this.requires(REQUIREMENT_SECONDARY_COUNTER)) {
    this.snapshotLength+=1;
  }
}
Program: 109022
Project: 109022
Buggy source:
@Override public void addAll(int[] key,int representant,int count,int sensitive,int pcount){
  final int hash=HashTableUtil.hashcode(key);
  final HashGroupifyEntry entry=addInternal(key,hash,representant,count,pcount);
  if (sensitive != -1) {
    if (entry.distribution == null) {
      entry.distribution=new Distribution();
    }
    entry.distribution.add(sensitive);
  }
}

Fixed version (ground truth):
@Override public void addAll(int[] key,int representant,int count,int sensitive,int pcount){
  final int hash=HashTableUtil.hashcode(key);
  final HashGroupifyEntry entry=addInternal(key,hash,representant,count,pcount);
  if (sensitive != -1) {
    if (entry.distribution == null) {
      entry.distribution=new Distribution();
    }
    if (subset == null || subset.get(representant)) {
      entry.distribution.add(sensitive);
    }
  }
}
Program: 109025
Project: 109025
Buggy source:
@Override protected void createDataTypeArray(){
  dataTypes=new DataType[1][header.length];
  for (int i=0; i < header.length; i++) {
    final DataType type=definition.getDataType(header[i]);
    if (type != null) {
      dataTypes[0][i]=type;
    }
 else {
      dataTypes[0][i]=DataType.STRING;
    }
  }
}

Fixed version (ground truth):
@Override protected void createDataTypeArray(){
  dataTypes=new DataType[1][header.length];
  for (int i=0; i < header.length; i++) {
    final DataType<?> type=definition.getDataType(header[i]);
    if (type != null) {
      dataTypes[0][i]=type;
    }
 else {
      dataTypes[0][i]=DataType.STRING;
    }
  }
}
Program: 109026
Project: 109026
Buggy source:
/** 
 * Triggers a tagged event at the listener
 */
public void triggerTagged(){
  this.listener.nodeTagged(size * multiplier);
}

Fixed version (ground truth):
/** 
 * Triggers a tagged event at the listener
 */
public void triggerTagged(){
  if (this.listener != null)   this.listener.nodeTagged(size * multiplier);
}
Program: 109028
Project: 109028
Buggy source:
/** 
 * Entry point.
 * @param args the arguments
 */
public static void main(final String[] args){
  final Data data=getData();
  data.getDefinition().setAttributeType("String_Node_Str",getHierarchyAge());
  data.getDefinition().setAttributeType("String_Node_Str",getHierarchyZipcode());
  data.getDefinition().setAttributeType("String_Node_Str",AttributeType.SENSITIVE_ATTRIBUTE);
  data.getDefinition().setAttributeType("String_Node_Str",AttributeType.SENSITIVE_ATTRIBUTE);
  final ARXAnonymizer anonymizer=new ARXAnonymizer();
  final ARXConfiguration config=new ARXConfiguration();
  config.addCriterion(new KAnonymity(3));
  config.addCriterion(new HierarchicalDistanceTCloseness("String_Node_Str",0.6d,getHierarchyDisease()));
  config.addCriterion(new HierarchicalDistanceTCloseness("String_Node_Str",0.6d,getHierarchyDisease()));
  config.setProtectSensitiveAssociations(false);
  config.setAllowedOutliers(0d);
  config.setMetric(Metric.createEntropyMetric());
  try {
    final ARXResult result=anonymizer.anonymize(data,config);
    printResult(result,data);
    System.out.println("String_Node_Str");
    final Iterator<String[]> transformed=result.getHandle().iterator();
    while (transformed.hasNext()) {
      System.out.print("String_Node_Str");
      System.out.println(Arrays.toString(transformed.next()));
    }
  }
 catch (  final IllegalArgumentException e) {
    throw new RuntimeException(e);
  }
catch (  final IOException e) {
    throw new RuntimeException(e);
  }
}

Fixed version (ground truth):
/** 
 * Entry point.
 * @param args the arguments
 */
public static void main(final String[] args){
  final Data data=getData();
  data.getDefinition().setAttributeType("String_Node_Str",getHierarchyAge());
  data.getDefinition().setAttributeType("String_Node_Str",getHierarchyZipcode());
  data.getDefinition().setAttributeType("String_Node_Str",AttributeType.SENSITIVE_ATTRIBUTE);
  data.getDefinition().setAttributeType("String_Node_Str",AttributeType.SENSITIVE_ATTRIBUTE);
  final ARXAnonymizer anonymizer=new ARXAnonymizer();
  final ARXConfiguration config=new ARXConfiguration();
  config.addCriterion(new KAnonymity(3));
  config.addCriterion(new HierarchicalDistanceTCloseness("String_Node_Str",0.6d,getHierarchyDisease()));
  config.addCriterion(new HierarchicalDistanceTCloseness("String_Node_Str",0.6d,getHierarchyDisease()));
  config.setProtectSensitiveAssociations(false);
  config.setAllowedOutliers(0d);
  config.setMetric(Metric.createEntropyMetric());
  try {
    final ARXResult result=anonymizer.anonymize(data,config);
    printResult(result,data);
    if (result.getGlobalOptimum() != null) {
      System.out.println("String_Node_Str");
      final Iterator<String[]> transformed=result.getHandle().iterator();
      while (transformed.hasNext()) {
        System.out.print("String_Node_Str");
        System.out.println(Arrays.toString(transformed.next()));
      }
    }
  }
 catch (  final IllegalArgumentException e) {
    throw new RuntimeException(e);
  }
catch (  final IOException e) {
    throw new RuntimeException(e);
  }
}
Program: 109031
Project: 109031
Buggy source:
/** 
 * Resets a lattice, i.e., it marks all anonymous transformations as "not visited"
 * @param lattice
 */
private void reset(Lattice lattice){
  for (  Node[] level : lattice.getLevels()) {
    for (    Node node : level) {
      node.setNotTagged();
      node.setAnonymous(false);
      node.setKAnonymous(false);
    }
  }
}

Fixed version (ground truth):
/** 
 * Resets a lattice, i.e., it marks all anonymous transformations as "not visited"
 * @param lattice
 */
private void reset(Lattice lattice){
  for (  Node[] level : lattice.getLevels()) {
    for (    Node node : level) {
      if (node.isAnonymous()) {
        node.setNotTagged();
        node.setNotChecked();
        node.setAnonymous(false);
        node.setKAnonymous(false);
      }
    }
  }
}
Program: 109032
Project: 109032
Buggy source:
/** 
 * Gets the handle.
 * @return the handle
 */
@Override public DataHandle getHandle(final ARXNode fnode){
  currentNode=fnode;
  if ((currentNode != null) && (currentNode == lastNode)) {
    return this;
  }
  lastNode=currentNode;
  final Node node=new Node(new IDGenerator());
  node.setTransformation(fnode.getTransformation(),0);
  if (currentNode.isChecked()) {
    node.setChecked();
  }
  checker.transformAndMarkOutliers(node);
  if (!currentNode.isChecked()) {
    currentNode.access().setChecked(true);
    if (node.isAnonymous()) {
      currentNode.access().setAnonymous();
    }
 else {
      currentNode.access().setNotAnonymous();
    }
    currentNode.access().setMaximumInformationLoss(node.getInformationLoss());
    currentNode.access().setMinimumInformationLoss(node.getInformationLoss());
    lattice.estimateInformationLoss();
  }
  createDataTypeArray();
  return this;
}

Fixed version (ground truth):
/** 
 * Gets the handle.
 * @return the handle
 */
@Override public DataHandle getHandle(final ARXNode fnode){
  currentNode=fnode;
  if ((currentNode != null) && (currentNode == lastNode)) {
    return this;
  }
  lastNode=currentNode;
  final Node node=new Node(0);
  node.setTransformation(fnode.getTransformation(),0);
  if (currentNode.isChecked()) {
    node.setChecked();
  }
  checker.transformAndMarkOutliers(node);
  if (!currentNode.isChecked()) {
    currentNode.access().setChecked(true);
    if (node.isAnonymous()) {
      currentNode.access().setAnonymous();
    }
 else {
      currentNode.access().setNotAnonymous();
    }
    currentNode.access().setMaximumInformationLoss(node.getInformationLoss());
    currentNode.access().setMinimumInformationLoss(node.getInformationLoss());
    lattice.estimateInformationLoss();
  }
  createDataTypeArray();
  return this;
}
Program: 109033
Project: 109033
Buggy source:
@Override public void initialize(DataManager manager){
  bitset=new CompressedBitSet(manager.getDataQI().getDataLength());
  for (  Integer line : subset) {
    bitset.set(line);
  }
  this.subset=null;
}

Fixed version (ground truth):
@Override public void initialize(DataManager manager){
  bitset=new CompressedBitSet(manager.getDataQI().getDataLength());
  for (  Integer line : subset) {
    bitset.set(line);
  }
}
Program: 109038
Project: 109038
Buggy source:
/** 
 * Creates a new handle that represents the research subset
 * @param source
 * @param subset
 */
public DataHandleSubset(DataHandle source,CompressedBitSet subset){
  this.source=source;
  ArrayList<Integer> list=new ArrayList<Integer>();
  for (int i=0; i < subset.getSize(); i++) {
    if (subset.get(i))     list.add(i);
  }
  this.subset=new int[list.size()];
  for (int i=0; i < list.size(); i++) {
    this.subset[i]=list.get(i);
  }
  createDataTypeArray();
}

Fixed version (ground truth):
/** 
 * Creates a new handle that represents the research subset
 * @param source
 * @param subset
 */
public DataHandleSubset(DataHandle source,CompressedBitSet subset){
  this.source=source;
  this.dataTypes=source.dataTypes;
  this.definition=source.definition;
  this.header=source.header;
  this.other=source.other;
  ArrayList<Integer> list=new ArrayList<Integer>();
  for (int i=0; i < subset.getSize(); i++) {
    if (subset.get(i))     list.add(i);
  }
  this.subset=new int[list.size()];
  for (int i=0; i < list.size(); i++) {
    this.subset[i]=list.get(i);
  }
  createDataTypeArray();
}
Program: 109039
Project: 109039
Buggy source:
@Override public boolean isAnonymous(HashGroupifyEntry entry){
  int[] buckets=entry.distribution.getBuckets();
  int totalElements=0;
  for (int i=0; i < buckets.length; i+=2) {
    if (buckets[i] != -1) {
      totalElements+=buckets[i + 1];
    }
  }
  double val=total;
  for (int i=0; i < buckets.length; i+=2) {
    if (buckets[i] != -1) {
      double frequency=distribution[buckets[i]];
      val+=Math.abs((frequency - ((double)buckets[i + 1] / (double)totalElements))) - frequency;
    }
  }
  val/=2;
  return val <= t;
}

Fixed version (ground truth):
@Override public boolean isAnonymous(HashGroupifyEntry entry){
  int[] buckets=entry.distribution.getBuckets();
  int totalElements=0;
  for (int i=0; i < buckets.length; i+=2) {
    if (buckets[i] != -1) {
      totalElements+=buckets[i + 1];
    }
  }
  double val=1.0d;
  for (int i=0; i < buckets.length; i+=2) {
    if (buckets[i] != -1) {
      double frequency=distribution[buckets[i]];
      val+=Math.abs((frequency - ((double)buckets[i + 1] / (double)totalElements))) - frequency;
    }
  }
  val/=2;
  return val <= t;
}
Program: 109040
Project: 109040
Buggy source:
@Override public void initialize(DataManager manager){
  distribution=manager.getDistribution();
  total=manager.getDataQI().getDataLength();
}

Fixed version (ground truth):
@Override public void initialize(DataManager manager){
  distribution=manager.getDistribution();
}
Program: 109041
Project: 109041
Buggy source:
@Override public boolean isAnonymous(HashGroupifyEntry entry){
  int[] buckets=entry.distribution.getBuckets();
  int totalElements=0;
  for (int i=0; i < buckets.length; i+=2) {
    if (buckets[i] != -1) {
      totalElements+=buckets[i + 1];
    }
  }
  double val=0d;
  for (int i=0; i < buckets.length; i+=2) {
    if (buckets[i] != -1) {
      val+=Math.abs((distribution[buckets[i]] - ((double)buckets[i + 1] / (double)totalElements)));
    }
  }
  val/=2;
  return val <= t;
}

Fixed version (ground truth):
@Override public boolean isAnonymous(HashGroupifyEntry entry){
  int[] buckets=entry.distribution.getBuckets();
  int totalElements=0;
  for (int i=0; i < buckets.length; i+=2) {
    if (buckets[i] != -1) {
      totalElements+=buckets[i + 1];
    }
  }
  double val=total;
  for (int i=0; i < buckets.length; i+=2) {
    if (buckets[i] != -1) {
      double frequency=distribution[buckets[i]];
      val+=Math.abs((frequency - ((double)buckets[i + 1] / (double)totalElements))) - frequency;
    }
  }
  val/=2;
  return val <= t;
}
Program: 109042
Project: 109042
Buggy source:
@Override public void initialize(DataManager manager){
  distribution=manager.getDistribution();
}

Fixed version (ground truth):
@Override public void initialize(DataManager manager){
  distribution=manager.getDistribution();
  total=manager.getDataQI().getDataLength();
}
Program: 109044
Project: 109044
Buggy source:
protected ARXResult anonymizeInternal(final DataHandle handle,final DataDefinition definition,final ARXConfiguration config) throws IOException {
  final DataManager manager=prepareDataManager(handle,definition,config);
  config.initialize(manager);
  final long time=System.currentTimeMillis();
  checkAfterEncoding(config,manager);
  final Lattice lattice=new LatticeBuilder(manager.getMaxLevels(),manager.getMinLevels(),manager.getHierachyHeights()).build();
  lattice.setListener(listener);
  final INodeChecker checker=new NodeChecker(manager,config.getMetric(),config,historySize,snapshotSizeDataset,snapshotSizeSnapshot);
  config.getMetric().initialize(manager.getDataQI(),manager.getHierarchies());
  final FLASHStrategy strategy=new FLASHStrategy(lattice,manager.getHierarchies());
  final AbstractAlgorithm algorithm=new FLASHAlgorithm(lattice,checker,strategy);
  algorithm.setListener(listener);
  algorithm.traverse();
  final Result result=new Result(config.getMetric(),checker,lattice);
  final DataHandleOutput outHandle=new DataHandleOutput(result.metric,manager,result.checker,System.currentTimeMillis() - time,suppressionString,handle.getDefinition(),result.lattice,removeOutliers,config);
  outHandle.associate(handle);
  handle.associate(outHandle);
  return outHandle;
}

Fixed version (ground truth):
protected ARXResult anonymizeInternal(final DataHandle handle,final DataDefinition definition,final ARXConfiguration config) throws IOException {
  final DataManager manager=prepareDataManager(handle,definition,config);
  config.initialize(manager);
  final long time=System.currentTimeMillis();
  checkAfterEncoding(config,manager);
  final Lattice lattice=new LatticeBuilder(manager.getMaxLevels(),manager.getMinLevels(),manager.getHierachyHeights()).build();
  lattice.setListener(listener);
  final INodeChecker checker=new NodeChecker(manager,config.getMetric(),config,historySize,snapshotSizeDataset,snapshotSizeSnapshot);
  config.getMetric().initialize(manager.getDataQI(),manager.getHierarchies(),config);
  final FLASHStrategy strategy=new FLASHStrategy(lattice,manager.getHierarchies());
  final AbstractAlgorithm algorithm=new FLASHAlgorithm(lattice,checker,strategy);
  algorithm.setListener(listener);
  algorithm.traverse();
  final Result result=new Result(config.getMetric(),checker,lattice);
  final DataHandleOutput outHandle=new DataHandleOutput(result.metric,manager,result.checker,System.currentTimeMillis() - time,suppressionString,handle.getDefinition(),result.lattice,removeOutliers,config);
  outHandle.associate(handle);
  handle.associate(outHandle);
  return outHandle;
}
Program: 109045
Project: 109045
Buggy source:
/** 
 * Returns all privacy criteria that are instances of the given class
 * @param clazz
 * @return
 */
@SuppressWarnings("String_Node_Str") public <T extends PrivacyCriterion>Set<T> getCriteria(Class<T> clazz){
  Set<T> result=new HashSet<T>();
  for (  PrivacyCriterion c : criteria) {
    if (clazz.isInstance(c)) {
      result.add((T)c);
    }
  }
  if (result.isEmpty())   return null;
 else   return result;
}

Fixed version (ground truth):
/** 
 * Returns all privacy criteria that are instances of the given class
 * @param clazz
 * @return
 */
@SuppressWarnings("String_Node_Str") public <T extends PrivacyCriterion>Set<T> getCriteria(Class<T> clazz){
  Set<T> result=new HashSet<T>();
  for (  PrivacyCriterion c : criteria) {
    if (clazz.isInstance(c)) {
      result.add((T)c);
    }
  }
  return result;
}
Program: 109046
Project: 109046
Buggy source:
/** 
 * For cloning
 * @param value
 * @param values
 */
private InformationLossCombined(final double value,final Map<Metric<?>,InformationLoss> values){
  super(value);
  this.values=values;
}

Fixed version (ground truth):
InformationLossCombined(final double value){
  super(value);
}
Program: 109047
Project: 109047
Buggy source:
/** 
 * Returns all criteria
 * @return
 */
public PrivacyCriterion[] getCriteria(){
  return this.criteria;
}

Fixed version (ground truth):
/** 
 * Returns all criteria.
 * @return
 */
public Set<PrivacyCriterion> getCriteria(){
  return this.criteria;
}
Program: 109048
Project: 109048
Buggy source:
/** 
 * Removes all criteria that are instances of the given class
 * @param clazz
 * @return
 */
@SuppressWarnings("String_Node_Str") public <T extends PrivacyCriterion>boolean removeCriterion(Class<T> clazz){
  Set<T> toRemove=new HashSet<T>();
  for (  PrivacyCriterion c : criteria) {
    if (clazz.isInstance(c)) {
      toRemove.add((T)c);
    }
  }
  if (toRemove.isEmpty())   return false;
  int index=0;
  PrivacyCriterion[] temp=new PrivacyCriterion[criteria.length - toRemove.size()];
  for (  PrivacyCriterion c : criteria) {
    if (!toRemove.contains(c)) {
      temp[index++]=c;
    }
  }
  this.criteria=temp;
  return true;
}

Fixed version (ground truth):
/** 
 * Removes all criteria that are instances of the given class
 * @param clazz
 * @return
 */
@SuppressWarnings("String_Node_Str") public <T extends PrivacyCriterion>boolean removeCriterion(Class<T> clazz){
  Set<T> toRemove=new HashSet<T>();
  for (  PrivacyCriterion c : criteria) {
    if (clazz.isInstance(c)) {
      toRemove.add((T)c);
    }
  }
  if (toRemove.isEmpty())   return false;
  criteria.removeAll(toRemove);
  return true;
}
Program: 109049
Project: 109049
Buggy source:
/** 
 * Adds a criterion to the configuration
 * @param c
 */
public ARXConfiguration addCriterion(PrivacyCriterion c){
  criteria=Arrays.copyOf(criteria,criteria.length + 1);
  criteria[criteria.length - 1]=c;
  return this;
}

Fixed version (ground truth):
/** 
 * Adds a criterion to the configuration
 * @param c
 */
public ARXConfiguration addCriterion(PrivacyCriterion c){
  criteria.add(c);
  return this;
}
Program: 109050
Project: 109050
Buggy source:
public ARXConfiguration clone(){
  throw new RuntimeException("String_Node_Str");
}

Fixed version (ground truth):
/** 
 * Clones this config
 */
public ARXConfiguration clone(){
  throw new RuntimeException("String_Node_Str");
}