Program: 170220
Project: 170220
Buggy source:
void displayPortInfo(){
  buildMetadata();
  final JDialog jdialog=new JDialog(driver.frame);
  jdialog.addWindowListener(new WindowAdapter(){
    public void windowClosing(    WindowEvent ev){
      jdialog.dispose();
    }
  }
);
  jdialog.setTitle("String_Node_Str");
  jdialog.toFront();
  JPanel panel=new JPanel(new GridBagLayout());
  panel.setBackground(Color.GRAY);
  GridBagLayout gbl=new GridBagLayout();
  GridBagConstraints gbc=new GridBagConstraints();
  panel.setLayout(gbl);
  gbc.fill=GridBagConstraints.BOTH;
  gbc.weightx=0.5;
  gbc.weighty=0.5;
  gbc.gridx=0;
  gbc.gridy=0;
  gbc.gridwidth=ROWSIZE;
  JTextField tf0=new JTextField("String_Node_Str" + fullClassName + "String_Node_Str");
  tf0.setEditable(false);
  gbl.setConstraints(tf0,gbc);
  tf0.setBackground(lg);
  panel.add(tf0);
  gbc.weightx=1.5;
  gbc.weighty=0.5;
  gbc.gridx=0;
  gbc.gridy=1;
  gbc.gridwidth=ROWSIZE;
  if (compDescr == null || compDescr.equals("String_Node_Str")) {
    compDescr="String_Node_Str";
  }
  JTextField tf1=new JTextField(compDescr);
  tf1.setEditable(false);
  gbl.setConstraints(tf1,gbc);
  tf1.setBackground(lg);
  panel.add(tf1);
  gbc.fill=GridBagConstraints.BOTH;
  gbc.weightx=0.5;
  gbc.gridwidth=1;
  gbc.gridy=2;
  JTextField[] tft=new JTextField[ROWSIZE];
  tft[0]=new JTextField("String_Node_Str");
  tft[1]=new JTextField("String_Node_Str");
  tft[2]=new JTextField("String_Node_Str");
  tft[3]=new JTextField("String_Node_Str");
  tft[4]=new JTextField("String_Node_Str");
  displayRow(gbc,gbl,tft,panel,Color.BLUE);
  for (  AInPort ip : inputPortAttrs.values()) {
    JTextField[] tfi=new JTextField[ROWSIZE];
    tfi[0]=new JTextField(ip.value);
    String s="String_Node_Str";
    if (ip.arrayPort)     s+="String_Node_Str";
    if (ip.fixedSize)     s+="String_Node_Str";
    if (ip.optional)     s+="String_Node_Str";
    tfi[1]=new JTextField(s);
    if (ip.type == null)     tfi[2]=new JTextField("String_Node_Str");
 else     tfi[2]=new JTextField(ip.type.getName());
    tfi[3]=new JTextField(ip.description);
    int res=testMatch(tfi[0].getText(),tfi[1].getText());
    String results[]={"String_Node_Str","String_Node_Str","String_Node_Str"};
    tfi[4]=new JTextField(results[res]);
    gbc.gridx=0;
    gbc.weightx=0.5;
    displayRow(gbc,gbl,tfi,panel,Color.BLACK);
  }
  for (  AOutPort op : outputPortAttrs.values()) {
    JTextField[] tfo=new JTextField[ROWSIZE];
    tfo[0]=new JTextField(op.value);
    String s="String_Node_Str";
    if (op.arrayPort)     s+="String_Node_Str";
    if (op.fixedSize)     s+="String_Node_Str";
    if (op.optional)     s+="String_Node_Str";
    tfo[1]=new JTextField(s);
    if (op.type == null)     tfo[2]=new JTextField("String_Node_Str");
 else     tfo[2]=new JTextField(op.type.getName());
    tfo[3]=new JTextField(op.description);
    int res=testMatch(tfo[0].getText(),tfo[1].getText());
    String results[]={"String_Node_Str","String_Node_Str","String_Node_Str"};
    tfo[4]=new JTextField(results[res]);
    displayRow(gbc,gbl,tfo,panel,Color.BLACK);
  }
  LinkedList<String> lst=checkUnmatchedPorts();
  for (  String ls : lst) {
    JTextField[] tfu=new JTextField[ROWSIZE];
    tfu[0]=new JTextField(ls.substring(1));
    if (ls.substring(0,1).equals("String_Node_Str"))     tfu[1]=new JTextField("String_Node_Str");
 else     tfu[1]=new JTextField("String_Node_Str");
    tfu[2]=new JTextField("String_Node_Str");
    tfu[3]=new JTextField("String_Node_Str");
    tfu[4]=new JTextField("String_Node_Str");
    displayRow(gbc,gbl,tfu,panel,Color.BLACK);
  }
  jdialog.add(panel);
  Point p=driver.frame.getLocation();
  Dimension dim=driver.frame.getSize();
  int x_off=100;
  int y_off=100;
  jdialog.setPreferredSize(new Dimension(dim.width - x_off,dim.height - y_off));
  jdialog.pack();
  int height=200 + inputPortAttrs.size() * 40 + outputPortAttrs.size() * 40;
  int width=(int)jdialog.getPreferredSize().getWidth();
  jdialog.setLocation(p.x + dim.width - width,p.y + dim.height - height - y_off);
  jdialog.setSize(800,height);
  panel.setVisible(true);
  jdialog.setVisible(true);
  jdialog.toFront();
  panel.repaint();
  jdialog.repaint();
  driver.frame.repaint();
}

Fixed version (ground truth):
void displayPortInfo(){
  buildMetadata();
  final JDialog jdialog=new JDialog(driver.frame);
  jdialog.addWindowListener(new WindowAdapter(){
    public void windowClosing(    WindowEvent ev){
      jdialog.dispose();
    }
  }
);
  jdialog.setTitle("String_Node_Str");
  jdialog.toFront();
  JPanel panel=new JPanel(new GridBagLayout());
  panel.setBackground(Color.GRAY);
  GridBagLayout gbl=new GridBagLayout();
  GridBagConstraints gbc=new GridBagConstraints();
  panel.setLayout(gbl);
  gbc.fill=GridBagConstraints.BOTH;
  gbc.weightx=0.5;
  gbc.weighty=0.5;
  gbc.gridx=0;
  gbc.gridy=0;
  gbc.gridwidth=ROWSIZE;
  JTextField tf0=new JTextField("String_Node_Str" + fullClassName + "String_Node_Str");
  tf0.setEditable(false);
  gbl.setConstraints(tf0,gbc);
  tf0.setBackground(lg);
  panel.add(tf0);
  gbc.weightx=1.5;
  gbc.weighty=0.5;
  gbc.gridx=0;
  gbc.gridy=1;
  gbc.gridwidth=ROWSIZE;
  if (compDescr == null || compDescr.equals("String_Node_Str")) {
    compDescr="String_Node_Str";
  }
  JTextField tf1=new JTextField(compDescr);
  tf1.setEditable(false);
  gbl.setConstraints(tf1,gbc);
  tf1.setBackground(lg);
  panel.add(tf1);
  gbc.fill=GridBagConstraints.BOTH;
  gbc.weightx=0.5;
  gbc.gridwidth=1;
  gbc.gridy=2;
  JTextField[] tft=new JTextField[ROWSIZE];
  tft[0]=new JTextField("String_Node_Str");
  tft[1]=new JTextField("String_Node_Str");
  tft[2]=new JTextField("String_Node_Str");
  tft[3]=new JTextField("String_Node_Str");
  tft[4]=new JTextField("String_Node_Str");
  displayRow(gbc,gbl,tft,panel,Color.BLUE);
  for (  AInPort ip : inputPortAttrs.values()) {
    JTextField[] tfi=new JTextField[ROWSIZE];
    tfi[0]=new JTextField(ip.value);
    String s="String_Node_Str";
    if (ip.arrayPort)     s+="String_Node_Str";
    if (ip.fixedSize)     s+="String_Node_Str";
    if (ip.optional)     s+="String_Node_Str";
    tfi[1]=new JTextField(s);
    if (ip.type == null)     tfi[2]=new JTextField("String_Node_Str");
 else     tfi[2]=new JTextField(ip.type.getName());
    tfi[3]=new JTextField(ip.description);
    int res=testMatch(tfi[0].getText(),tfi[1].getText());
    String results[]={"String_Node_Str","String_Node_Str","String_Node_Str"};
    tfi[4]=new JTextField(results[res]);
    gbc.gridx=0;
    gbc.weightx=0.5;
    displayRow(gbc,gbl,tfi,panel,Color.BLACK);
  }
  for (  AOutPort op : outputPortAttrs.values()) {
    JTextField[] tfo=new JTextField[ROWSIZE];
    tfo[0]=new JTextField(op.value);
    String s="String_Node_Str";
    if (op.arrayPort)     s+="String_Node_Str";
    if (op.fixedSize)     s+="String_Node_Str";
    if (op.optional)     s+="String_Node_Str";
    tfo[1]=new JTextField(s);
    if (op.type == null)     tfo[2]=new JTextField("String_Node_Str");
 else     tfo[2]=new JTextField(op.type.getName());
    tfo[3]=new JTextField(op.description);
    int res=testMatch(tfo[0].getText(),tfo[1].getText());
    String results[]={"String_Node_Str","String_Node_Str","String_Node_Str"};
    tfo[4]=new JTextField(results[res]);
    displayRow(gbc,gbl,tfo,panel,Color.BLACK);
  }
  LinkedList<String> lst=checkUnmatchedPorts();
  for (  String ls : lst) {
    JTextField[] tfu=new JTextField[ROWSIZE];
    tfu[0]=new JTextField(ls.substring(1));
    if (ls.substring(0,1).equals("String_Node_Str"))     tfu[1]=new JTextField("String_Node_Str");
 else     tfu[1]=new JTextField("String_Node_Str");
    tfu[2]=new JTextField("String_Node_Str");
    tfu[3]=new JTextField("String_Node_Str");
    tfu[4]=new JTextField("String_Node_Str");
    displayRow(gbc,gbl,tfu,panel,Color.BLACK);
  }
  jdialog.add(panel);
  Point p=driver.frame.getLocation();
  Dimension dim=driver.frame.getSize();
  int x_off=100;
  int y_off=100;
  jdialog.setPreferredSize(new Dimension(dim.width - x_off,dim.height - y_off));
  jdialog.pack();
  int height=200 + inputPortAttrs.size() * 40 + outputPortAttrs.size() * 40;
  int width=(int)jdialog.getPreferredSize().getWidth();
  jdialog.setLocation(p.x + dim.width - width,p.y + dim.height - height - y_off);
  jdialog.setSize(800,height);
  panel.setVisible(true);
  jdialog.setVisible(true);
  jdialog.toFront();
  jdialog.pack();
  jdialog.validate();
  panel.repaint();
  jdialog.repaint();
  driver.frame.repaint();
}