Program: 70781
Project: 70781
Buggy source:
/** 
 * Swap two consecutive entries
 * @param iIndex1
 * @param iIndex2
 */
private final void swap(int iIndex1,int iIndex2){
  final Fill o1=elPaletteEntries1.get(iIndex1);
  final Fill o2=elPaletteEntries1.get(iIndex2);
  if (iIndex1 < iIndex2) {
    elPaletteEntries1.remove(iIndex2);
    elPaletteEntries1.add(iIndex1,o2);
    elPaletteEntries1.remove(iIndex2);
    elPaletteEntries1.add(iIndex2,o1);
  }
 else {
    elPaletteEntries1.remove(iIndex1);
    elPaletteEntries1.add(iIndex2,o1);
    elPaletteEntries1.remove(iIndex1);
    elPaletteEntries1.add(iIndex1,o2);
  }
  if (iSelectedIndex == iIndex1) {
    iSelectedIndex=iIndex2;
  }
 else   if (iSelectedIndex == iIndex2) {
    iSelectedIndex=iIndex1;
  }
  if (vSeriesDefns != null) {
    int index1=iIndex1;
    int index2=iIndex2;
    if (isMultiAxes()) {
      int min=Math.min(index1,index2);
      int max=Math.max(index1,index2);
      if (vSeriesDefns.length - 1 < min) {
      }
 else       if (min <= vSeriesDefns.length - 1 && vSeriesDefns.length - 1 < max) {
        vSeriesDefns[min].getSeriesPalette().getEntries().set(0,ChartUtil.eCopy(elPaletteEntries1.get(min)));
      }
 else       if (vSeriesDefns.length - 1 >= max) {
        vSeriesDefns[min].getSeriesPalette().getEntries().set(0,ChartUtil.eCopy(elPaletteEntries1.get(min)));
        vSeriesDefns[max].getSeriesPalette().getEntries().set(0,ChartUtil.eCopy(elPaletteEntries1.get(max)));
      }
    }
 else {
      for (int i=0; i < vSeriesDefns.length; i++) {
        int size=vSeriesDefns[i].getSeriesPalette().getEntries().size();
        if ((iIndex1 - i) >= 0) {
          index1=iIndex1 - i;
        }
 else {
          index1=size - i + iIndex1;
        }
        if ((iIndex2 - i) >= 0) {
          index2=iIndex2 - i;
        }
 else {
          index2=size - i + iIndex2;
        }
        EList<Fill> el=vSeriesDefns[i].getSeriesPalette().getEntries();
        final Fill o3=el.get(index1);
        final Fill o4=el.get(index2);
        if (index1 < index2) {
          el.remove(index2);
          el.remove(index1);
          el.add(index1,o4);
          el.add(index2,o3);
        }
 else {
          el.remove(index1);
          el.remove(index2);
          el.add(index2,o3);
          el.add(index1,o4);
        }
      }
    }
  }
  scrollToView(iSelectedIndex);
  coPaletteEntries.redraw();
}

Fixed version (ground truth):
/** 
 * Swap two consecutive entries
 * @param iIndex1
 * @param iIndex2
 */
private final void swap(int iIndex1,int iIndex2){
  final Fill o1=elPaletteEntries1.get(iIndex1);
  final Fill o2=elPaletteEntries1.get(iIndex2);
  if (iIndex1 < iIndex2) {
    elPaletteEntries1.remove(iIndex2);
    elPaletteEntries1.add(iIndex1,o2);
    elPaletteEntries1.remove(iIndex2);
    elPaletteEntries1.add(iIndex2,o1);
  }
 else {
    elPaletteEntries1.remove(iIndex1);
    elPaletteEntries1.add(iIndex2,o1);
    elPaletteEntries1.remove(iIndex1);
    elPaletteEntries1.add(iIndex1,o2);
  }
  if (iSelectedIndex == iIndex1) {
    iSelectedIndex=iIndex2;
  }
 else   if (iSelectedIndex == iIndex2) {
    iSelectedIndex=iIndex1;
  }
  if (vSeriesDefns != null) {
    int index1=iIndex1;
    int index2=iIndex2;
    if (isMultiAxes() && wizardContext.getModel().getLegend().getItemType().getValue() == LegendItemType.SERIES) {
      int min=Math.min(index1,index2);
      int max=Math.max(index1,index2);
      if (vSeriesDefns.length - 1 < min) {
      }
 else       if (min <= vSeriesDefns.length - 1 && vSeriesDefns.length - 1 < max) {
        vSeriesDefns[min].getSeriesPalette().getEntries().set(0,ChartUtil.eCopy(elPaletteEntries1.get(min)));
      }
 else       if (vSeriesDefns.length - 1 >= max) {
        vSeriesDefns[min].getSeriesPalette().getEntries().set(0,ChartUtil.eCopy(elPaletteEntries1.get(min)));
        vSeriesDefns[max].getSeriesPalette().getEntries().set(0,ChartUtil.eCopy(elPaletteEntries1.get(max)));
      }
    }
 else {
      for (int i=0; i < vSeriesDefns.length; i++) {
        int size=vSeriesDefns[i].getSeriesPalette().getEntries().size();
        if ((iIndex1 - i) >= 0) {
          index1=iIndex1 - i;
        }
 else {
          index1=size - i + iIndex1;
        }
        if ((iIndex2 - i) >= 0) {
          index2=iIndex2 - i;
        }
 else {
          index2=size - i + iIndex2;
        }
        EList<Fill> el=vSeriesDefns[i].getSeriesPalette().getEntries();
        final Fill o3=el.get(index1);
        final Fill o4=el.get(index2);
        if (index1 < index2) {
          el.remove(index2);
          el.remove(index1);
          el.add(index1,o4);
          el.add(index2,o3);
        }
 else {
          el.remove(index1);
          el.remove(index2);
          el.add(index2,o3);
          el.add(index1,o4);
        }
      }
    }
  }
  scrollToView(iSelectedIndex);
  coPaletteEntries.redraw();
}