Program: 15871
Project: 15871
Buggy source:
@SuppressWarnings("String_Node_Str") private void onListModelDataChange(ListDataEvent event){
  final ListModel<?> model=event.getModel();
  int type=event.getType();
  int index0=event.getIndex0();
  int index1=event.getIndex1();
  List<Component[]> cbrCompsList=(List<Component[]>)_owner.getAttribute(BinderCtrl.CHILDREN_BINDING_RENDERED_COMPONENTS);
  int oldsz=cbrCompsList == null ? 0 : cbrCompsList.size();
  int newsz=model.getSize();
  boolean refreshOwnerCBAttr=false;
  if (type == ListDataEvent.INTERVAL_ADDED) {
    int addedCount=index1 - index0 + 1;
    if ((newsz - oldsz) < 0)     throw new UiException("String_Node_Str");
 else     if ((oldsz + addedCount) != newsz) {
      index0=oldsz;
      index1=newsz - 1;
    }
    renderModelData(model,index0,index1);
  }
 else   if (type == ListDataEvent.CONTENTS_CHANGED) {
    if (index0 >= 0 && index1 >= 0) {
      renderModelData(model,index0,index1);
      cbrCompsList=(List<Component[]>)_owner.getAttribute(BinderCtrl.CHILDREN_BINDING_RENDERED_COMPONENTS);
      for (int i=0; i <= (index1 - index0); i++) {
        int oIndex=index0 + i;
        Component[] oldComps=cbrCompsList.get(oIndex);
        int nIndex=oldsz + i;
        Component[] newComps=cbrCompsList.get(nIndex);
        for (        Component nc : newComps)         _owner.insertBefore(nc,oldComps[0]);
        for (        Component oc : oldComps)         oc.detach();
        cbrCompsList.add(oIndex,newComps);
        cbrCompsList.remove(oIndex + 1);
        cbrCompsList.remove(nIndex);
      }
      refreshOwnerCBAttr=true;
    }
 else     syncModel(model);
  }
 else   if (type == ListDataEvent.INTERVAL_REMOVED) {
    if (oldsz - newsz <= 0)     throw new UiException("String_Node_Str");
    for (int i=index0; i <= index1; i++) {
      Component[] oldComps=cbrCompsList.get(index0);
      if (oldComps != null) {
        for (        Component oc : oldComps) {
          oc.detach();
        }
      }
      cbrCompsList.remove(index0);
    }
    refreshOwnerCBAttr=true;
  }
  if (refreshOwnerCBAttr)   _owner.setAttribute(BinderCtrl.CHILDREN_BINDING_RENDERED_COMPONENTS,cbrCompsList);
}

Fixed version (ground truth):
@SuppressWarnings("String_Node_Str") private void onListModelDataChange(ListDataEvent event){
  final ListModel<?> model=event.getModel();
  int type=event.getType();
  int index0=event.getIndex0();
  int index1=event.getIndex1();
  List<Component[]> cbrCompsList=(List<Component[]>)_owner.getAttribute(BinderCtrl.CHILDREN_BINDING_RENDERED_COMPONENTS);
  int oldsz=cbrCompsList == null ? 0 : cbrCompsList.size();
  int newsz=model.getSize();
  boolean refreshOwnerCBAttr=false;
  if (type == ListDataEvent.INTERVAL_ADDED) {
    int addedCount=index1 - index0 + 1;
    if ((newsz - oldsz) < 0)     throw new UiException("String_Node_Str");
 else     if ((oldsz + addedCount) != newsz) {
      index0=oldsz;
      index1=newsz - 1;
    }
    renderModelData(model,index0,index1);
  }
 else   if (type == ListDataEvent.CONTENTS_CHANGED) {
    if (index0 >= 0 && index1 >= 0) {
      renderModelData(model,index0,index1);
      cbrCompsList=(List<Component[]>)_owner.getAttribute(BinderCtrl.CHILDREN_BINDING_RENDERED_COMPONENTS);
      for (int i=0; i <= (index1 - index0); i++) {
        int oIndex=index0 + i;
        Component[] oldComps=cbrCompsList.get(oIndex);
        int nIndex=oldsz + i;
        Component[] newComps=cbrCompsList.get(nIndex);
        for (        Component nc : newComps)         _owner.insertBefore(nc,oldComps[0]);
        for (        Component oc : oldComps)         oc.detach();
        cbrCompsList.add(oIndex,newComps);
        cbrCompsList.remove(oIndex + 1);
        cbrCompsList.remove(nIndex);
      }
      refreshOwnerCBAttr=true;
    }
 else     syncModel(model);
  }
 else   if (type == ListDataEvent.INTERVAL_REMOVED) {
    if (oldsz - newsz < 0)     throw new UiException("String_Node_Str");
    if (cbrCompsList != null) {
      for (int i=index0; i <= index1; i++) {
        Component[] oldComps=cbrCompsList.get(index0);
        if (oldComps != null) {
          for (          Component oc : oldComps) {
            oc.detach();
          }
        }
        cbrCompsList.remove(index0);
      }
    }
    refreshOwnerCBAttr=true;
  }
  if (refreshOwnerCBAttr)   _owner.setAttribute(BinderCtrl.CHILDREN_BINDING_RENDERED_COMPONENTS,cbrCompsList);
}