Program: 16529
Project: 16529
Buggy source:
/** 
 * Processes an AU request. <p>Default: in addition to what are handled by   {@link XulElement#service}, it also handles onSelect.
 * @since 5.0.0
 */
public void service(org.zkoss.zk.au.AuRequest request,boolean everError){
  final String cmd=request.getCommand();
  if (cmd.equals("String_Node_Str")) {
    Events.postEvent(DataLoadingEvent.getDataLoadingEvent(request,_preloadsz > 0 ? _preloadsz : 0));
  }
 else   if (cmd.equals("String_Node_Str")) {
    final Map data=request.getData();
    _currentTop=AuRequests.getInt(data,"String_Node_Str",0);
    _currentLeft=AuRequests.getInt(data,"String_Node_Str",0);
  }
 else   if (cmd.equals("String_Node_Str")) {
    _topPad=AuRequests.getInt(request.getData(),"String_Node_Str",0);
  }
 else   if (cmd.equals("String_Node_Str")) {
    final String width=AuRequests.getInnerWidth(request);
    _innerWidth=width == null ? "String_Node_Str" : width;
  }
 else   if (cmd.equals(Events.ON_RENDER)) {
    final RenderEvent event=RenderEvent.getRenderEvent(request);
    final Set items=event.getItems();
    int cnt=items.size();
    if (cnt == 0)     return;
    cnt=20 - cnt;
    if (cnt > 0 && _preloadsz > 0) {
      if (cnt > _preloadsz)       cnt=_preloadsz;
      final List toload=new LinkedList();
      Iterator it=getRows().getChildren().iterator();
      while (it.hasNext()) {
        final Row row=(Row)it.next();
        if (items.contains(row))         break;
        if (!row.isLoaded())         toload.add(0,row);
      }
      if (!toload.isEmpty()) {
        int bfcnt=cnt / 3;
        for (Iterator e=toload.iterator(); bfcnt > 0 && e.hasNext(); --bfcnt, --cnt) {
          items.add(e.next());
        }
      }
      while (cnt > 0 && it.hasNext()) {
        final Row row=(Row)it.next();
        if (!row.isLoaded() && items.add(row))         --cnt;
      }
    }
    renderItems(items);
  }
 else   super.service(request,everError);
}

Fixed version (ground truth):
/** 
 * Processes an AU request. <p>Default: in addition to what are handled by   {@link XulElement#service}, it also handles onSelect.
 * @since 5.0.0
 */
public void service(org.zkoss.zk.au.AuRequest request,boolean everError){
  final String cmd=request.getCommand();
  if (cmd.equals("String_Node_Str")) {
    Events.postEvent(DataLoadingEvent.getDataLoadingEvent(request,getPreloadSize()));
  }
 else   if (cmd.equals("String_Node_Str")) {
    final Map data=request.getData();
    _currentTop=AuRequests.getInt(data,"String_Node_Str",0);
    _currentLeft=AuRequests.getInt(data,"String_Node_Str",0);
  }
 else   if (cmd.equals("String_Node_Str")) {
    _topPad=AuRequests.getInt(request.getData(),"String_Node_Str",0);
  }
 else   if (cmd.equals("String_Node_Str")) {
    final String width=AuRequests.getInnerWidth(request);
    _innerWidth=width == null ? "String_Node_Str" : width;
  }
 else   if (cmd.equals(Events.ON_RENDER)) {
    final RenderEvent event=RenderEvent.getRenderEvent(request);
    final Set items=event.getItems();
    int cnt=items.size();
    if (cnt == 0)     return;
    cnt=20 - cnt;
    if (cnt > 0 && _preloadsz > 0) {
      if (cnt > _preloadsz)       cnt=_preloadsz;
      final List toload=new LinkedList();
      Iterator it=getRows().getChildren().iterator();
      while (it.hasNext()) {
        final Row row=(Row)it.next();
        if (items.contains(row))         break;
        if (!row.isLoaded())         toload.add(0,row);
      }
      if (!toload.isEmpty()) {
        int bfcnt=cnt / 3;
        for (Iterator e=toload.iterator(); bfcnt > 0 && e.hasNext(); --bfcnt, --cnt) {
          items.add(e.next());
        }
      }
      while (cnt > 0 && it.hasNext()) {
        final Row row=(Row)it.next();
        if (!row.isLoaded() && items.add(row))         --cnt;
      }
    }
    renderItems(items);
  }
 else   super.service(request,everError);
}