Program: 65179
Project: 65179
Buggy source:
public BorderInfo[] cacheBorderInfo(IContainerArea container){
  BoxStyle style=container.getBoxStyle();
  if (null == style || BoxStyle.DEFAULT == style) {
    return null;
  }
  int borderTopWidth=getScaledValue(style.getTopBorderWidth());
  int borderLeftWidth=getScaledValue(style.getLeftBorderWidth());
  int borderBottomWidth=getScaledValue(style.getBottomBorderWidth());
  int borderRightWidth=getScaledValue(style.getRightBorderWidth());
  if (borderTopWidth > 0 || borderLeftWidth > 0 || borderBottomWidth > 0 || borderRightWidth > 0) {
    int startX=currentX + getX(container);
    int startY=currentY + getY(container);
    BorderInfo[] borders=new BorderInfo[4];
    borders[BorderInfo.TOP_BORDER]=new BorderInfo(startX,startY + borderTopWidth / 2,startX + getWidth(container),startY + borderTopWidth / 2,borderTopWidth,style.getTopBorderColor(),style.getTopBorderStyle(),BorderInfo.TOP_BORDER);
    borders[BorderInfo.RIGHT_BORDER]=new BorderInfo(startX + getWidth(container) - borderRightWidth / 2,startY,startX + getWidth(container) - borderRightWidth / 2,startY + getHeight(container),borderRightWidth,style.getRightBorderColor(),style.getRightBorderStyle(),BorderInfo.RIGHT_BORDER);
    borders[BorderInfo.BOTTOM_BORDER]=new BorderInfo(startX,startY + getHeight(container) - borderBottomWidth / 2,startX + getWidth(container),startY + getHeight(container) - borderBottomWidth / 2,borderBottomWidth,style.getBottomBorderColor(),style.getBottomBorderStyle(),BorderInfo.BOTTOM_BORDER);
    borders[BorderInfo.LEFT_BORDER]=new BorderInfo(startX + borderLeftWidth / 2,startY,startX + borderLeftWidth / 2,startY + getHeight(container),borderLeftWidth,style.getLeftBorderColor(),style.getLeftBorderStyle(),BorderInfo.LEFT_BORDER);
    return borders;
  }
  return null;
}

Fixed version (ground truth):
private BorderInfo[] cacheBorderInfo(IContainerArea container){
  BoxStyle style=container.getBoxStyle();
  if (null == style || BoxStyle.DEFAULT == style) {
    return null;
  }
  int borderTopWidth=getScaledValue(style.getTopBorderWidth());
  int borderLeftWidth=getScaledValue(style.getLeftBorderWidth());
  int borderBottomWidth=getScaledValue(style.getBottomBorderWidth());
  int borderRightWidth=getScaledValue(style.getRightBorderWidth());
  if (borderTopWidth > 0 || borderLeftWidth > 0 || borderBottomWidth > 0 || borderRightWidth > 0) {
    int startX=currentX + getX(container);
    int startY=currentY + getY(container);
    BorderInfo[] borders=new BorderInfo[4];
    borders[BorderInfo.TOP_BORDER]=new BorderInfo(startX,startY + borderTopWidth / 2,startX + getWidth(container),startY + borderTopWidth / 2,borderTopWidth,style.getTopBorderColor(),style.getTopBorderStyle(),BorderInfo.TOP_BORDER);
    borders[BorderInfo.RIGHT_BORDER]=new BorderInfo(startX + getWidth(container) - borderRightWidth / 2,startY,startX + getWidth(container) - borderRightWidth / 2,startY + getHeight(container),borderRightWidth,style.getRightBorderColor(),style.getRightBorderStyle(),BorderInfo.RIGHT_BORDER);
    borders[BorderInfo.BOTTOM_BORDER]=new BorderInfo(startX,startY + getHeight(container) - borderBottomWidth / 2,startX + getWidth(container),startY + getHeight(container) - borderBottomWidth / 2,borderBottomWidth,style.getBottomBorderColor(),style.getBottomBorderStyle(),BorderInfo.BOTTOM_BORDER);
    borders[BorderInfo.LEFT_BORDER]=new BorderInfo(startX + borderLeftWidth / 2,startY,startX + borderLeftWidth / 2,startY + getHeight(container),borderLeftWidth,style.getLeftBorderColor(),style.getLeftBorderStyle(),BorderInfo.LEFT_BORDER);
    return borders;
  }
  return null;
}