Program: 57230
Project: 57230
Buggy source:
@Override public void doLayout(final List<? extends IGLLayoutElement> children,float w,float h){
  final RankTableModel table=model.getTable();
  final IColumModelLayout p=(IColumModelLayout)getParent();
  IRowSetter setter=new IRowSetter(){
    @Override public void set(    int rowIndex,    float x,    float y,    float w,    float h,    boolean pickable){
      int at=rowIndexToGlElement.get(rowIndex);
      if (h <= 0 && at >= 0) {
        before.set(rowIndex,y <= 0);
        rowIndexToGlElement.remove(rowIndex);
        inPool.set(at);
        IGLLayoutElement row=children.get(at);
        if (h > 0)         System.err.println();
        row.setBounds(x,y,w,h);
        ValueElement elem=(ValueElement)row.asElement();
        elem.setAnimationFlag(before.get(rowIndex) ? FLAG_FROM_ABOVE : FLAG_FROM_BELOW);
        elem.setVisibility(EVisibility.VISIBLE);
      }
 else       if (h <= 0) {
        before.set(rowIndex,y <= 0);
      }
 else       if (at < 0) {
        if (inPool.isEmpty()) {
        }
 else {
          at=inPool.length() - 1;
          inPool.clear(at);
          rowIndexToGlElement.put(rowIndex,at);
          IGLLayoutElement row=children.get(at);
          row.setBounds(x,y,w,h);
          ValueElement elem=(ValueElement)row.asElement();
          elem.setLayoutData(table.getDataItem(rowIndex));
          elem.setAnimationFlag(before.get(rowIndex) ? FLAG_FROM_ABOVE : FLAG_FROM_BELOW);
          elem.setVisibility(pickable ? EVisibility.PICKABLE : EVisibility.VISIBLE);
        }
      }
 else {
        if (at > children.size()) {
          System.err.println();
        }
        IGLLayoutElement row=children.get(at);
        row.setBounds(x,y,w,h);
        ValueElement elem=(ValueElement)row.asElement();
        elem.setAnimationFlag(FLAG_NONE);
        elem.setVisibility(pickable ? EVisibility.PICKABLE : EVisibility.VISIBLE);
      }
    }
  }
;
  p.layoutRows(model,setter,w,h);
}

Fixed version (ground truth):
@Override public void doLayout(final List<? extends IGLLayoutElement> children,float w,float h){
  final RankTableModel table=model.getTable();
  final IColumModelLayout p=(IColumModelLayout)getParent();
  IRowSetter setter=new IRowSetter(){
    @Override public void set(    int rowIndex,    float x,    float y,    float w,    float h,    boolean pickable){
      int at=rowIndexToGlElement.get(rowIndex);
      if (h <= 0 && at >= 0) {
        before.set(rowIndex,y <= 0);
        rowIndexToGlElement.remove(rowIndex);
        inPool.set(at);
        IGLLayoutElement row=children.get(at);
        row.setBounds(x,y,w,h);
        ValueElement elem=(ValueElement)row.asElement();
        elem.setAnimationFlag(before.get(rowIndex) ? FLAG_TO_ABOVE : FLAG_TO_BELOW);
        elem.setVisibility(EVisibility.VISIBLE);
      }
 else       if (h <= 0) {
        before.set(rowIndex,y <= 0);
      }
 else       if (at < 0) {
        if (inPool.isEmpty()) {
        }
 else {
          at=inPool.nextSetBit(0);
          inPool.clear(at);
          rowIndexToGlElement.put(rowIndex,at);
          if (rowIndex == 20)           System.err.println();
          IGLLayoutElement row=children.get(at);
          row.setBounds(x,y,w,h);
          ValueElement elem=(ValueElement)row.asElement();
          removeAnimationsOf(elem,true);
          elem.setRow(table.getDataItem(rowIndex));
          elem.setAnimationFlag(before.get(rowIndex) ? FLAG_FROM_ABOVE : FLAG_FROM_BELOW);
          elem.setVisibility(pickable ? EVisibility.PICKABLE : EVisibility.VISIBLE);
        }
      }
 else {
        IGLLayoutElement row=children.get(at);
        row.setBounds(x,y,w,h);
        ValueElement elem=(ValueElement)row.asElement();
        elem.setAnimationFlag(FLAG_NONE);
        elem.setVisibility(pickable ? EVisibility.PICKABLE : EVisibility.VISIBLE);
      }
    }
  }
;
  p.layoutRows(model,setter,w,h);
}