docs: public void add(final ItemReference ref, long lockID, final Transaction transaction)
                      throws ProtocolException, OutOfCacheSpace, StreamIsFull, TransactionException, PersistenceException, SevereMessageStoreException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(this, tc, "add", new Object[] { ref, Long.valueOf(lockID), transaction });
  
          if (null == _getMembership())
          {
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  SibTr.exit(this, tc, "add");
              throw new InvalidAddOperation("STREAM_NOT_STORED_SIMS0004", new Object[] { ref, this });
          }
  
          if (null != ref._getMembership())
          {
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  SibTr.exit(this, tc, "add");
              throw new InvalidAddOperation("STREAM_ADD_CONFLICT_SIMS0005", new Object[] { ref, this });
          }
  
          Item item = ref.getReferredItem();
          if (null == item)
          {
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  SibTr.exit(this, tc, "add");
              throw new ReferenceConsistencyViolation("REFERENCE_CONSISTENCY_SIMS0003", new Object[] { ref, this });
          }
  
          ReferenceCollection ic = ((ReferenceCollection) _getMembership());
          ic.addReference(ref, lockID, transaction);
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(this, tc, "add");
      }