Program: 17628
Project: 17628
Buggy source:
public EPLTreeTab(final EncogProgram prg){
  super(null);
  this.graph=new DelegateForest<MappedNode,Integer>();
  buildGraph(prg);
  TreeLayout<MappedNode,Integer> treeLayout=new TreeLayout<MappedNode,Integer>(graph);
  Transformer<MappedNode,Paint> vertexPaint=new Transformer<MappedNode,Paint>(){
    public Paint transform(    MappedNode v){
      return Color.white;
    }
  }
;
  vv=new VisualizationViewer<MappedNode,Integer>(treeLayout,new Dimension(600,600));
  vv.getRenderer().getVertexLabelRenderer().setPosition(Renderer.VertexLabel.Position.CNTR);
  vv.getRenderContext().setVertexLabelTransformer(new Transformer<MappedNode,String>(){
    @Override public String transform(    MappedNode node){
      int opcode=node.getTemplate().getOpcode();
      if (opcode == StandardExtensions.OPCODE_VAR) {
        int varIndex=(int)node.getParam2();
        return prg.getVariables().getVariableName(varIndex);
      }
 else       if (opcode == StandardExtensions.OPCODE_CONST_BOOL) {
        return (node.getParam1() == 0 ? "String_Node_Str" : "String_Node_Str");
      }
 else       if (opcode == StandardExtensions.OPCODE_CONST_FLOAT) {
        double d=node.getConstValue().toFloatValue();
        return ("String_Node_Str" + prg.getContext().getFormat().format(d,1));
      }
 else       if (opcode == StandardExtensions.OPCODE_CONST_INT) {
        return ("String_Node_Str" + ((int)node.getParam1()));
      }
 else       if (node.getTemplate().isOperator()) {
        return node.getTemplate().getName();
      }
 else {
        return node.getTemplate().getName() + "String_Node_Str";
      }
    }
  }
);
  vv.setVertexToolTipTransformer(new ToStringLabeller<MappedNode>());
  vv.setVertexToolTipTransformer(new Transformer<MappedNode,String>(){
    public String transform(    MappedNode node){
      int opcode=node.getTemplate().getOpcode();
      if (opcode == StandardExtensions.OPCODE_CONST_FLOAT) {
        double d=node.getConstValue().toFloatValue();
        return ("String_Node_Str" + prg.getContext().getFormat().format(d,10));
      }
 else       if (opcode == StandardExtensions.OPCODE_CONST_INT) {
        return ("String_Node_Str" + ((int)node.getParam1()));
      }
 else {
        return null;
      }
    }
  }
);
  final GraphZoomScrollPane panel=new GraphZoomScrollPane(vv);
  this.setLayout(new BorderLayout());
  add(panel,BorderLayout.CENTER);
  final AbstractModalGraphMouse graphMouse=new DefaultModalGraphMouse<MappedNode,Integer>();
  vv.setGraphMouse(graphMouse);
  vv.getRenderContext().setVertexFillPaintTransformer(vertexPaint);
  vv.getRenderContext().setEdgeShapeTransformer(new EdgeShape.Line());
  vv.getRenderContext().setEdgeArrowPredicate(new Predicate(){
    @Override public boolean evaluate(    Object arg0){
      return false;
    }
  }
);
  Predicate d;
  vv.addKeyListener(graphMouse.getModeKeyListener());
  final ScalingControl scaler=new CrossoverScalingControl();
  JButton plus=new JButton("String_Node_Str");
  plus.addActionListener(new ActionListener(){
    public void actionPerformed(    ActionEvent e){
      scaler.scale(vv,1.1f,vv.getCenter());
    }
  }
);
  JButton minus=new JButton("String_Node_Str");
  minus.addActionListener(new ActionListener(){
    public void actionPerformed(    ActionEvent e){
      scaler.scale(vv,1 / 1.1f,vv.getCenter());
    }
  }
);
  JButton reset=new JButton("String_Node_Str");
  reset.addActionListener(new ActionListener(){
    public void actionPerformed(    ActionEvent e){
      vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.LAYOUT).setToIdentity();
      vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW).setToIdentity();
    }
  }
);
  JPanel controls=new JPanel();
  controls.setLayout(new FlowLayout(FlowLayout.LEFT));
  controls.add(plus);
  controls.add(minus);
  controls.add(reset);
  Border border=BorderFactory.createEtchedBorder();
  controls.setBorder(border);
  add(controls,BorderLayout.NORTH);
}

Fixed version (ground truth):
public EPLTreeTab(final EncogProgram prg){
  super(null);
  this.graph=new DelegateForest<ProgramNode,Integer>();
  buildGraph(prg);
  TreeLayout<ProgramNode,Integer> treeLayout=new TreeLayout<ProgramNode,Integer>(graph);
  Transformer<ProgramNode,Paint> vertexPaint=new Transformer<ProgramNode,Paint>(){
    public Paint transform(    ProgramNode v){
      return Color.white;
    }
  }
;
  vv=new VisualizationViewer<ProgramNode,Integer>(treeLayout,new Dimension(600,600));
  vv.getRenderer().getVertexLabelRenderer().setPosition(Renderer.VertexLabel.Position.CNTR);
  vv.getRenderContext().setVertexLabelTransformer(new Transformer<ProgramNode,String>(){
    @Override public String transform(    ProgramNode node){
      ProgramExtensionTemplate temp=node.getTemplate();
      if (temp == StandardExtensions.EXTENSION_VAR_SUPPORT) {
        int varIndex=(int)node.getData()[0].toIntValue();
        return prg.getVariables().getVariableName(varIndex);
      }
 else       if (temp == StandardExtensions.EXTENSION_CONST_SUPPORT) {
        return node.getData()[0].toStringValue();
      }
 else       if (node.getTemplate().getNodeType() == NodeType.OperatorLeft || node.getTemplate().getNodeType() == NodeType.OperatorRight) {
        return node.getTemplate().getName();
      }
 else {
        return node.getTemplate().getName() + "String_Node_Str";
      }
    }
  }
);
  vv.setVertexToolTipTransformer(new ToStringLabeller<ProgramNode>());
  vv.setVertexToolTipTransformer(new Transformer<ProgramNode,String>(){
    public String transform(    ProgramNode node){
      ProgramExtensionTemplate temp=node.getTemplate();
      if (temp == StandardExtensions.EXTENSION_CONST_SUPPORT) {
        return node.getData()[0].toStringValue();
      }
 else {
        return null;
      }
    }
  }
);
  final GraphZoomScrollPane panel=new GraphZoomScrollPane(vv);
  this.setLayout(new BorderLayout());
  add(panel,BorderLayout.CENTER);
  final AbstractModalGraphMouse graphMouse=new DefaultModalGraphMouse<ProgramNode,Integer>();
  vv.setGraphMouse(graphMouse);
  vv.getRenderContext().setVertexFillPaintTransformer(vertexPaint);
  vv.getRenderContext().setEdgeShapeTransformer(new EdgeShape.Line());
  vv.getRenderContext().setEdgeArrowPredicate(new Predicate(){
    @Override public boolean evaluate(    Object arg0){
      return false;
    }
  }
);
  Predicate d;
  vv.addKeyListener(graphMouse.getModeKeyListener());
  final ScalingControl scaler=new CrossoverScalingControl();
  JButton plus=new JButton("String_Node_Str");
  plus.addActionListener(new ActionListener(){
    public void actionPerformed(    ActionEvent e){
      scaler.scale(vv,1.1f,vv.getCenter());
    }
  }
);
  JButton minus=new JButton("String_Node_Str");
  minus.addActionListener(new ActionListener(){
    public void actionPerformed(    ActionEvent e){
      scaler.scale(vv,1 / 1.1f,vv.getCenter());
    }
  }
);
  JButton reset=new JButton("String_Node_Str");
  reset.addActionListener(new ActionListener(){
    public void actionPerformed(    ActionEvent e){
      vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.LAYOUT).setToIdentity();
      vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW).setToIdentity();
    }
  }
);
  JPanel controls=new JPanel();
  controls.setLayout(new FlowLayout(FlowLayout.LEFT));
  controls.add(plus);
  controls.add(minus);
  controls.add(reset);
  Border border=BorderFactory.createEtchedBorder();
  controls.setBorder(border);
  add(controls,BorderLayout.NORTH);
}