docs: public synchronized int addObject(Object object) throws ConversationStateFullException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(this, tc, "addObject", "object=" + object);
  
          int objectIndex = 0;
  
          if (freeSlot == MINUS_ONE)
          { // Object Store full ?
              extendObjectTable(); // extend it
          }
  
          objectIndex = freeSlot;
          objectTable[objectIndex] = object; // Save object
          // Set high water mark
          highWatermark = Math.max(highWatermark, freeSlot);
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
              SibTr.debug(this, tc, "High Water Mark = ", Integer.valueOf(highWatermark));
  
          foundFreeSlot = false;
          // Find next free slot
          for (int i = (highWatermark + 1); i <= maxIndex; i++)
          {
              if (objectTable[i] == null)
              {
                  freeSlot = i; // Save index of next free slot
                  foundFreeSlot = true;
                  break;
              }
          }
  
          if (!foundFreeSlot)
          { // Not found a free slot yet
              for (int i = OBJECT_TABLE_ORIGIN; i <= (highWatermark - 1); i++)
              {
                  if (objectTable[i] == null)
                  {
                      freeSlot = i; // Save index of next free slot
                      foundFreeSlot = true;
                      break;
                  }
              }
          }
          // No free slots, extend table on next add
          if (!foundFreeSlot)
          {
              freeSlot = MINUS_ONE; // Indicate need for extension
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
          {
              SibTr.debug(tc, "Next free slot = ", Integer.valueOf(freeSlot));
              SibTr.debug(tc, "Max Index = ", Integer.valueOf(maxIndex));
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(this, tc, "addObject", "" + objectIndex);
          return objectIndex; // Pass back object index
      }