code: public List<DataSlice> getPersistentData() throws PersistentDataEncodingException
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(tc, "getPersistentData");
  
      // this is going to be spilled, so if not already told ConsumerKey that it is locked
      // tell it now!
      synchronized (this)
      {
        if (!informedConsumerKeyThatLocked)
        {
          RemoteDispatchableKey dkey = key.getRemoteDispatchableKey();
          RemoteQPConsumerKey ck = null;
          if (dkey instanceof RemoteQPConsumerKey)
            ck = (RemoteQPConsumerKey) dkey;
          if (ck != null)
          {
            ck.messageLocked(key);
            informedConsumerKeyThatLocked = true;
          }
        }
        // set RemoteDispatchableKey to null so no one can inform the RemoteDispatchableKey about any state change
        // in this message in the future. If we did not do this, it is possible that an eventUnlocked()
        // call occurs after this method call and before the in-memory AIMessageItem object is discarded,
        // which would cause informedConsumerKeyThatLocked to be set to false and the ConsumerKey unlocked
        // count would be incremented.
        key.clearRemoteDispatchableKey();
      }
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "getPersistentData");
  
      return super.getPersistentData();
    }
docs: Feature SIB0112b.mp.1