Program: 45605
Project: 45605
Buggy source:
/** 
 * Set the status of this cell Cell states DISK - Cell is on disk with no memory footprint INACTIVE - Cell object is in memory with bounds initialized, NO geometry is loaded INACTIVE - All cell data is in memory ACTIVE - Cell is within the avatars proximity bounds VISIBLE - Cell is in the view frustum The system guarantees that if a change is made between non adjacent status, say from INACTIVE to VISIBLE that setStatus will automatically be called for the intermediate values. If you overload this method in your own class you must call super.setStatus(...) as the first operation in your method. Note users should not call this method directly, it should only be called from implementations of the cache.
 * @param status the cell status
 * @param increasing indicates if the status is increasing
 */
protected void setStatus(CellStatus status,boolean increasing){
synchronized (statusLock) {
    if (status == CellStatus.INACTIVE && increasing) {
      resolveAutoComponentAnnotationsForCell();
      CellComponent[] compList=getComponentsArray();
      for (      CellComponent c : compList) {
        resolveAutoComponentAnnotationsForComponents(c);
      }
    }
    currentStatus=status;
    for (    CellComponent component : getComponentsArray()) {
      component.setComponentStatus(status,increasing);
    }
    for (    CellRenderer renderer : getCellRenderers()) {
      setRendererStatus(renderer,status);
    }
switch (status) {
case DISK:
      if (!increasing) {
        if (transformChangeListeners != null) {
          transformChangeListeners.clear();
        }
        ChannelComponent channel=getComponent(ChannelComponent.class);
        if (channel != null) {
          channel.removeMessageReceiver(CellClientStateMessage.class);
          channel.removeMessageReceiver(CellClientComponentMessage.class);
        }
        clientStateReceiver=null;
        componentReceiver=null;
synchronized (components) {
          components.clear();
        }
      }
    break;
case ACTIVE:
  if (increasing && clientStateReceiver == null) {
    clientStateReceiver=new CellClientStateMessageReceiver(this);
    componentReceiver=new CellComponentMessageReceiver(this);
    ChannelComponent channel=getComponent(ChannelComponent.class);
    if (channel != null) {
      channel.addMessageReceiver(CellClientStateMessage.class,clientStateReceiver);
      channel.addMessageReceiver(CellClientComponentMessage.class,componentReceiver);
    }
    try {
      createCellRendererImpl(ClientContext.getRendererType());
    }
 catch (    Exception e) {
      logger.log(Level.SEVERE,"String_Node_Str" + getClass().getName(),e);
    }
  }
break;
}
}
}

Fixed version (ground truth):
/** 
 * Set the status of this cell Cell states DISK - Cell is on disk with no memory footprint INACTIVE - Cell object is in memory with bounds initialized, NO geometry is loaded INACTIVE - All cell data is in memory ACTIVE - Cell is within the avatars proximity bounds VISIBLE - Cell is in the view frustum The system guarantees that if a change is made between non adjacent status, say from INACTIVE to VISIBLE that setStatus will automatically be called for the intermediate values. If you overload this method in your own class you must call super.setStatus(...) as the first operation in your method. Note users should not call this method directly, it should only be called from implementations of the cache.
 * @param status the cell status
 * @param increasing indicates if the status is increasing
 */
protected void setStatus(CellStatus status,boolean increasing){
synchronized (statusLock) {
    if (status == CellStatus.INACTIVE && increasing) {
      resolveAutoComponentAnnotationsForCell();
      CellComponent[] compList=getComponentsArray();
      for (      CellComponent c : compList) {
        resolveAutoComponentAnnotationsForComponents(c);
      }
    }
    currentStatus=status;
    for (    CellComponent component : getComponentsArray()) {
      component.setComponentStatus(status,increasing);
    }
    for (    CellRenderer renderer : getCellRenderers()) {
      setRendererStatus(renderer,status);
    }
switch (status) {
case DISK:
      if (!increasing) {
        if (transformChangeListeners != null) {
          transformChangeListeners.clear();
        }
        ChannelComponent channel=getComponent(ChannelComponent.class);
        if (channel != null) {
          channel.removeMessageReceiver(CellClientStateMessage.class);
          channel.removeMessageReceiver(CellClientComponentMessage.class);
        }
        clientStateReceiver=null;
        componentReceiver=null;
synchronized (components) {
          components.clear();
        }
synchronized (cellRenderers) {
          cellRenderers.clear();
        }
      }
    break;
case ACTIVE:
  if (increasing && clientStateReceiver == null) {
    clientStateReceiver=new CellClientStateMessageReceiver(this);
    componentReceiver=new CellComponentMessageReceiver(this);
    ChannelComponent channel=getComponent(ChannelComponent.class);
    if (channel != null) {
      channel.addMessageReceiver(CellClientStateMessage.class,clientStateReceiver);
      channel.addMessageReceiver(CellClientComponentMessage.class,componentReceiver);
    }
    try {
      createCellRendererImpl(ClientContext.getRendererType());
    }
 catch (    Exception e) {
      logger.log(Level.SEVERE,"String_Node_Str" + getClass().getName(),e);
    }
  }
break;
}
}
}