private FleaseAcceptorCell getCell(ASCIIString cellId) {
    FleaseAcceptorCell cc = cells.get(cellId);
    if (cc == null) {
      cc = new FleaseAcceptorCell();
      cells.put(cellId, cc);
    } else {
      if ((cc.lastAccess + config.getCellTimeout()) < System.currentTimeMillis()) {
        if (Logging.isDebug())
          Logging.logMessage(
              Logging.LEVEL_DEBUG, Category.replication, this, "A GCed cell " + cellId);
        // Cell is outdated and GCed.

        // Create a new cell and transfer the previous view.
        FleaseAcceptorCell tmp = new FleaseAcceptorCell();
        tmp.setViewId(cc.getViewId());
        if (cc.isViewInvalidated()) {
          tmp.invalidateView();
        }

        cells.put(cellId, tmp);
        cc = tmp;
      }
    }
    /*if (Logging.isDebug())
    Logging.logMessage(Logging.LEVEL_DEBUG,this,"using cell "+cellId);*/
    cc.touch();
    return cc;
  }