Program: 86575
Project: 86575
Buggy source:
/** 
 * Get a boundary ready to be tested.
 * @return
 */
private Boundary getExampleBoundary(){
  List<BoundaryPart> bpl=new ArrayList<BoundaryPart>();
  BoundaryPart bp;
  Edge cstr;
  List<Edge> boundaryEdges;
  Boundary bound=new Boundary();
  cstr=null;
  boundaryEdges=new ArrayList<Edge>();
  boundaryEdges.add(new Edge(0,1,0,3,2,0));
  bp=new BoundaryPart(boundaryEdges);
  bpl.add(bp);
  cstr=new Edge(3,2,0,9,0,0);
  boundaryEdges=new ArrayList<Edge>();
  boundaryEdges.add(new Edge(3,2,0,5,3,0));
  boundaryEdges.add(new Edge(5,3,0,6,5,0));
  bp=new BoundaryPart(boundaryEdges,cstr);
  bpl.add(bp);
  cstr=new Edge(6,5,0,5,10,0);
  boundaryEdges=new ArrayList<Edge>();
  boundaryEdges.add(new Edge(6,5,0,7,7,0));
  bp=new BoundaryPart(boundaryEdges,cstr);
  bpl.add(bp);
  cstr=new Edge(7,7,0,10,7,0);
  boundaryEdges=new ArrayList<Edge>();
  bp=new BoundaryPart(cstr);
  bpl.add(bp);
  cstr=new Edge(7,7,0,10,9,0);
  boundaryEdges=new ArrayList<Edge>();
  boundaryEdges.add(new Edge(7,7,0,6,10,0));
  bp=new BoundaryPart(boundaryEdges,cstr);
  bpl.add(bp);
  cstr=new Edge(6,10,0,9,12,0);
  boundaryEdges=new ArrayList<Edge>();
  boundaryEdges.add(new Edge(6,10,0,5,11,0));
  bp=new BoundaryPart(boundaryEdges,cstr);
  bpl.add(bp);
  cstr=new Edge(5,11,0,9,12,0);
  boundaryEdges=new ArrayList<Edge>();
  boundaryEdges.add(new Edge(5,11,0,3,12,0));
  bp=new BoundaryPart(boundaryEdges,cstr);
  bpl.add(bp);
  cstr=new Edge(3,12,0,9,12,0);
  boundaryEdges=new ArrayList<Edge>();
  boundaryEdges.add(new Edge(3,12,0,0,13,0));
  bp=new BoundaryPart(boundaryEdges,cstr);
  bpl.add(bp);
  bound.setBoundary(bpl);
  return bound;
}

Fixed version (ground truth):
/** 
 * Get a boundary ready to be tested.
 * @return
 */
private Boundary getExampleBoundary(){
  List<BoundaryPart> bpl=new ArrayList<BoundaryPart>();
  BoundaryPart bp;
  Edge cstr;
  List<Edge> boundaryEdges;
  Boundary bound=new Boundary();
  cstr=null;
  boundaryEdges=new ArrayList<Edge>();
  boundaryEdges.add(new Edge(0,1,0,3,2,0));
  bp=new BoundaryPart(boundaryEdges);
  bpl.add(bp);
  cstr=new Edge(3,2,0,9,0,0);
  boundaryEdges=new ArrayList<Edge>();
  boundaryEdges.add(new Edge(3,2,0,5,3,0));
  boundaryEdges.add(new Edge(5,3,0,6,5,0));
  bp=new BoundaryPart(boundaryEdges,cstr);
  bpl.add(bp);
  cstr=new Edge(6,5,0,10,5,0);
  boundaryEdges=new ArrayList<Edge>();
  boundaryEdges.add(new Edge(6,5,0,7,7,0));
  bp=new BoundaryPart(boundaryEdges,cstr);
  bpl.add(bp);
  cstr=new Edge(7,7,0,10,7,0);
  boundaryEdges=new ArrayList<Edge>();
  bp=new BoundaryPart(cstr);
  bpl.add(bp);
  cstr=new Edge(7,7,0,10,9,0);
  boundaryEdges=new ArrayList<Edge>();
  boundaryEdges.add(new Edge(7,7,0,6,10,0));
  bp=new BoundaryPart(boundaryEdges,cstr);
  bpl.add(bp);
  cstr=new Edge(6,10,0,9,12,0);
  boundaryEdges=new ArrayList<Edge>();
  boundaryEdges.add(new Edge(6,10,0,5,11,0));
  bp=new BoundaryPart(boundaryEdges,cstr);
  bpl.add(bp);
  cstr=new Edge(5,11,0,9,12,0);
  boundaryEdges=new ArrayList<Edge>();
  boundaryEdges.add(new Edge(5,11,0,3,12,0));
  bp=new BoundaryPart(boundaryEdges,cstr);
  bpl.add(bp);
  cstr=new Edge(3,12,0,9,12,0);
  boundaryEdges=new ArrayList<Edge>();
  boundaryEdges.add(new Edge(3,12,0,0,13,0));
  bp=new BoundaryPart(boundaryEdges,cstr);
  bpl.add(bp);
  bound.setBoundary(bpl);
  return bound;
}