code: public final void addReference(ItemReference reference, long lockID, Transaction transaction) throws OutOfCacheSpace, ProtocolException, StreamIsFull, TransactionException, PersistenceException, SevereMessageStoreException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(this, tc, "addReference", new Object[] { reference, transaction});
  
          _references();
          final MessageStoreImpl messageStore = getMessageStoreImpl();
          int strategy = reference.getStorageStrategy();
          final long itemID = messageStore.getUniqueValue(strategy);
          TupleTypeEnum type = TupleTypeEnum.ITEM_REFERENCE;
          reference.setSizeRefsByMsgSize(messageStore.getJdbcSpillSizeMsgRefsByMsgSize()); // PK57207
          Persistable childPersistable = getTuple().createPersistable(itemID, type);
          final AbstractItemLink link = new ItemReferenceLink(reference, this, childPersistable);
          // Defect 463642
          // Revert to using spill limits previously removed in SIB0112d.ms.2
          link.setParentWasSpillingAtAddTime(getListStatistics().isSpilling());
          messageStore.registerLink(link, reference);
          link.cmdAdd(this, lockID, (PersistentTransaction)transaction);
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "addReference");
      }
docs: @see com.ibm.ws.sib.msgstore.ItemCollection#addReference(com.ibm.ws.sib.msgstore.ItemReference, com.ibm.ws.sib.msgstore.transactions.Transaction)
  
  @throws OutOfCacheSpace if there is not enough space in the
  unstoredCache and the storage strategy is AbstractItem.STORE_NEVER.
  
  @throws StreamIsFull if the size of the stream would exceed the
  maximum permissable size if an add were performed.
  @throws SevereMessageStoreException
  
  @throws {@ProtocolException} Thrown if an add is attempted when the
  transaction cannot allow any further work to be added i.e. after
  completion of the transaction.
  
  @throws {@TransactionException} Thrown if an unexpected error occurs.