docs: public boolean okToForward(MessageItem item)
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(tc, "okToForward", item);
      boolean returnValue = false;    
      if(isLink())
      {
        //we can only send if this bus was not the originating bus
        returnValue = neighbourOnDifferentBus(item.getOriginatingBus());
        if (returnValue)
        {
          // Check foreign bus is sendAllowed
          BusHandler bus = null;
          try
          {
            bus = _destinationHandler.getDestinationManager().findBus(_neighbour.getBusId());
          }
          catch (Exception e)
          {
            // FFDC
            FFDCFilter.processException(
              e,
              "com.ibm.ws.sib.processor.impl.PubSubOutputHandler.okToForward",
              "1:446:1.164.1.5",
              this);
              
            SibTr.error(tc, "PUBSUB_LINK_FORWARD_CWSIP0855",
              new Object[] {
                _destinationHandler.getName(),
                _neighbour.getBusId(),
                e});            
          }
          
          if (bus!=null)
            returnValue = bus.isSendAllowed();               
        }
      }
      else
      {
        if(item.isFromRemoteBus())
        {
          //the msg has come in on a remote bus and is being sent to
          //a PSOH on the local bus
          returnValue = true;
        }
        else
        {
          //we can only send if this ME was the originator
          //which means the msg was not from a remote ME
          returnValue = !item.isFromRemoteME();
        }
        
      }
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) 
        SibTr.exit(tc, "okToForward", new Boolean(returnValue));    
      return returnValue;
    }