Program: 73498
Project: 73498
Buggy source:
/** 
 * Swap two consecutive entries
 * @param iIndex1
 * @param iIndex2
 */
private final void swap(int iIndex1,int iIndex2){
  final Object o1=elPaletteEntries1.get(iIndex1);
  final Object 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;
    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 el=vSeriesDefns[i].getSeriesPalette().getEntries();
      final Object o3=el.get(index1);
      final Object 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 Object o1=elPaletteEntries1.get(iIndex1);
  final Object 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,EcoreUtil.copy((EObject)elPaletteEntries1.get(min)));
      }
 else       if (vSeriesDefns.length - 1 >= max) {
        vSeriesDefns[min].getSeriesPalette().getEntries().set(0,EcoreUtil.copy((EObject)elPaletteEntries1.get(min)));
        vSeriesDefns[max].getSeriesPalette().getEntries().set(0,EcoreUtil.copy((EObject)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 el=vSeriesDefns[i].getSeriesPalette().getEntries();
        final Object o3=el.get(index1);
        final Object 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();
}