docs: public void consumeMessages(LockedMessageEnumeration messages) throws Exception
    {
      if (tc.isEntryEnabled())
        SibTr.entry(tc, "consumeMessages", new Object[] { messages });
  
      SIBusMessage jsMessage = null;
      
      while (messages.hasNext())
      {    
        try
        {
          jsMessage = messages.nextLocked();
        }
        catch (SIException e)
        {
          FFDCFilter.processException(
            e,
            "com.ibm.ws.sib.processor.proxyhandler.NeighbourProxyListener.consumeMessages",
            "1:157:1.73",
            this);
            
          SibTr.exception(tc, e);
        }
    
        if (jsMessage!=null && 
            ((JsMessage) jsMessage).getJsMessageType() != MessageType.SUBSCRIPTION)
        {
          if (tc.isDebugEnabled())
            SibTr.debug(
              tc,
              "Message On incorrect Destination, expecting message "
                + "of Type "
                + MessageType.SUBSCRIPTION
                + " received "
                + ((JsMessage) jsMessage).getJsMessageType());
                
          if (tc.isEntryEnabled()) SibTr.exit(tc, "consumeMessages");
          return;
        }
    
        // Only continue if the message returned is not null
        if (jsMessage!=null)
        {    
          SubscriptionMessage subMessage = null;     
          
          try
          {
            subMessage = ((JsMessage) jsMessage).makeInboundSubscriptionMessage();
          }
          catch (IncorrectMessageTypeException e)
          {
            FFDCFilter.processException(
              e,
              "com.ibm.ws.sib.processor.proxyhandler.NeighbourProxyListener.consumeMessages",
              "1:193:1.73",
              this);
              
            SibTr.exception(tc, e);
          }
          
          // Invoke the limited ME comms trace again now that we have fluffed up the message
          if (TraceComponent.isAnyTracingEnabled()) {
            MECommsTrc.traceMessage(tc, 
                iProxyHandler.getMessageProcessor(), 
                subMessage.getGuaranteedSourceMessagingEngineUUID(),
                MECommsTrc.OP_SUBMSG_CONSUME, 
                null, 
                subMessage);
          }
          
          LocalTransaction transaction = null;
          
          // Switch on the Type of the Message to understand what we need to 
          // process
          try
          {
            
            // Get a transaction to operate under
            transaction = iProxyHandler.getTransactionManager().createLocalTransaction(true);
      
            switch (subMessage.getSubscriptionMessageType().toInt())
            {
              case SubscriptionMessageType.CREATE_INT :
      
                // Create a new Proxy subscription
                handleCreateProxySubscription(subMessage, (Transaction) transaction);
      
                break;
      
              case SubscriptionMessageType.DELETE_INT :
      
                // Delete a proxy subscription
                handleDeleteProxySubscription(subMessage, (Transaction) transaction);
      
                break;
      
              case SubscriptionMessageType.RESET_INT :
      
                // Reset the subscription state.
                handleResetState(subMessage, (Transaction) transaction, false);
      
                break;
      
              case SubscriptionMessageType.REQUEST_INT :
      
                // Reset the subscription state.
                handleResetState(subMessage, (Transaction) transaction, true);
      
                break;
    
              case SubscriptionMessageType.REPLY_INT :
      
                // Reset the subscription state.
                handleResetState(subMessage, (Transaction) transaction, false);
      
                break;
              default :
                // Log Message
                break;
            }
      
            // Delete the current message from the destination as we 
            // have now read it.
            messages.deleteCurrent(transaction);
          
            // Commit the transaction.
            transaction.commit();
          }      
          catch (SIException e)
          {        
            // If there are any exceptions, then this is bad, log a FFDC
            FFDCFilter.processException(
              e,
              "com.ibm.ws.sib.processor.proxyhandler.NeighbourProxyListener.consumeMessages",
              "1:273:1.73",
              this);
              
            SibTr.exception(tc, e);
            
            handleRollback(subMessage, transaction);                
          }
          catch (RuntimeException e)
          {        
            // If there are any exceptions, then this is bad, log a FFDC
            FFDCFilter.processException(
              e,
              "com.ibm.ws.sib.processor.proxyhandler.NeighbourProxyListener.consumeMessages",
              "1:286:1.73",
              this);
              
            SibTr.exception(tc, e);
            
            handleRollback(subMessage, transaction);        
            
            if (tc.isEntryEnabled()) SibTr.exit(tc, "consumeMessages", e);
            
            throw e;
          }
    
        }
      }
  
      if (tc.isEntryEnabled())
        SibTr.exit(tc, "consumeMessages");
    }