docs: private boolean streamCanAcceptNewMessage(MessageItem msgItem, long valueTick) throws SIException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(this, tc, "streamCanAcceptNewMessage", new Object[] { msgItem, Long.valueOf(valueTick) });
          boolean allowSend = false;
  
          if (isStreamBlocked())
          {
              //once the stream is blocked, only an AckExpected message or a Silence on the blocking tick
              //can unset it - therefore we do not re-check and we only allow this message through if it fills a gap.
              if (valueTick <= valueHorizon)
              {
                  //the message might fill in a gap so we allow it through
                  allowSend = true;
              }
          }
          else
          {
              //the stream is not currently blocked.
              //However, the destination might no longer be able to accept messages, in which case
              //we should update the flag and only allow the send if the message fills a gap.
              JsMessage msg = msgItem.getMessage();
              int blockingReason = deliverer.checkAbleToAcceptMessage(msg.getRoutingDestination());
              if (blockingReason != DestinationHandler.OUTPUT_HANDLER_FOUND)
              {
                  //We might still be able to let this message through if it
                  //fills in a gap
                  if (valueTick <= valueHorizon)
                  {
                      //the message might fill in a gap so we allow it through
                      allowSend = true;
                  }
                  else
                  {
                      // The stream is now blocked
                      setStreamIsBlocked(true, blockingReason, null, msg.getRoutingDestination());
                      // Keep track of the value tick. We may subsequently get a SILENCE for the
                      // tick signalling that the associated message has been deleted from the 
                      // source and that the stream may be marked as unblocked.
                      linkBlockingTick = valueTick;
                  }
              }
              else
              {
                  allowSend = true;
              }
          }
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(tc, "streamCanAcceptNewMessage", Boolean.valueOf(allowSend));
  
          return allowSend;
      }