Program: 180040
Project: 180040
Buggy source:
public ParallelPlot(MDialog frame,DataSet data,int[] vars,String mode,JList varList){
  super(frame);
  Dimension size=frame.getSize();
  this.width=size.width;
  this.height=size.height;
  oldWidth=size.width;
  oldHeight=size.height;
  this.vars=vars;
  this.data=data;
  this.k=vars.length;
  this.paintMode=mode;
  this.varList=varList;
  border=22;
  onlyHi=new boolean[data.n];
  for (int i=0; i < data.n; i++)   onlyHi[i]=true;
  if (k == 2) {
    if (data.categorical(vars[0]) && !data.categorical(vars[1]) && mode.equals("String_Node_Str")) {
      paintMode="String_Node_Str";
      xVar=vars[1];
      yVar=vars[0];
    }
    if (data.categorical(vars[1]) && !data.categorical(vars[0]) && mode.equals("String_Node_Str")) {
      paintMode="String_Node_Str";
      xVar=vars[0];
      yVar=vars[1];
    }
  }
  if (paintMode.equals("String_Node_Str")) {
    k=data.getNumLevels(yVar);
    frame.setSize(50 * (1 + k),400);
  }
  selected=new boolean[k];
  inverted=new boolean[k];
  for (int j=0; j < k; j++) {
    selected[j]=false;
    inverted[j]=false;
  }
  permA=new int[k];
  for (int j=0; j < k; j++)   permA[j]=j;
  frame.getContentPane().add(this);
  Font SF=new Font("String_Node_Str",Font.BOLD,12);
  frame.setFont(SF);
  getData();
  this.setBackground(frame.getBackground());
  setCoordinates(0,0,0,0,-1);
  if (paintMode.equals("String_Node_Str"))   frame.setTitle("String_Node_Str" + data.getName(xVar) + "String_Node_Str"+ data.getName(yVar)+ "String_Node_Str");
 else   if (paintMode.equals("String_Node_Str"))   frame.setTitle("String_Node_Str" + data.setName + "String_Node_Str");
 else   frame.setTitle("String_Node_Str" + data.setName + "String_Node_Str");
  evtq=Toolkit.getDefaultToolkit().getSystemEventQueue();
  this.enableEvents(AWTEvent.MOUSE_EVENT_MASK);
  this.enableEvents(AWTEvent.KEY_EVENT_MASK);
  this.requestFocus();
}

Fixed version (ground truth):
public ParallelPlot(MDialog frame,DataSet data,int[] vars,String mode,JList varList){
  super(frame);
  Dimension size=frame.getSize();
  this.width=size.width;
  this.height=size.height;
  oldWidth=size.width;
  oldHeight=size.height;
  this.vars=vars;
  this.data=data;
  this.k=vars.length;
  this.paintMode=mode;
  this.varList=varList;
  border=22;
  onlyHi=new boolean[data.n];
  for (int i=0; i < data.n; i++)   onlyHi[i]=true;
  if (k == 2) {
    if (data.categorical(vars[0]) && !data.categorical(vars[1]) && mode.equals("String_Node_Str")) {
      paintMode="String_Node_Str";
      xVar=vars[1];
      yVar=vars[0];
    }
    if (data.categorical(vars[1]) && !data.categorical(vars[0]) && mode.equals("String_Node_Str")) {
      paintMode="String_Node_Str";
      xVar=vars[0];
      yVar=vars[1];
    }
  }
  if (paintMode.equals("String_Node_Str")) {
    k=data.getNumLevels(yVar);
    frame.setSize(50 * (1 + k),400);
  }
  selected=new boolean[k];
  inverted=new boolean[k];
  for (int j=0; j < k; j++) {
    selected[j]=false;
    inverted[j]=false;
  }
  permA=new int[k];
  for (int j=0; j < k; j++)   permA[j]=j;
  frame.getContentPane().add(this);
  Font SF=new Font("String_Node_Str",Font.BOLD,12);
  frame.setFont(SF);
  getData();
  this.setBackground(frame.getBackground());
  setCoordinates(0,0,0,0,-1);
  if (paintMode.equals("String_Node_Str"))   setName("String_Node_Str" + data.getName(xVar) + "String_Node_Str"+ data.getName(yVar)+ "String_Node_Str");
 else   if (paintMode.equals("String_Node_Str"))   setName("String_Node_Str" + data.setName + "String_Node_Str");
 else   setName("String_Node_Str" + data.setName + "String_Node_Str");
  evtq=Toolkit.getDefaultToolkit().getSystemEventQueue();
  this.enableEvents(AWTEvent.MOUSE_EVENT_MASK);
  this.enableEvents(AWTEvent.KEY_EVENT_MASK);
  this.requestFocus();
}