docs: public void writeSilenceForced(long tick) throws SIResourceException
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(this, tc, "writeSilenceForced",  Long.valueOf(tick) );
      
      // Details of the new silence
      long startTick = -1;
      long endTick = -1;
      long completedPrefix = -1;
      
      // used to send message if it moves inside inDoubt window
      List sendList = null;
      
      synchronized (this)
      {
        oststream.setCursor(tick);
  
        // Get the TickRange containing this tick 
        TickRange tr = oststream.getNext();
          
        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
        {
          SibTr.debug(tc, "writeSilenceForced from: " + tr.startstamp + " to " + tr.endstamp + " on Stream " +  stream);
        }
    
        TickRange silenceRange = oststream.writeCompletedRangeForced(tr);
        
        // While we have the stream locked cache the details of the new completed
        // range
        if(silenceRange != null)
        {
          startTick = silenceRange.startstamp;
          endTick = silenceRange.endstamp;
          completedPrefix = getCompletedPrefix();
        }
        
        // Check whether removing this message means we have
        // a message to send
        TickRange str = null;
        if ( (str = msgRemoved(tick, oststream, null)) != null)
        {
          sendList = new LinkedList();
          sendList.add(str);
          if(str.valuestamp > lastMsgSent)
            lastMsgSent = str.valuestamp;
        }
      }
      
      // Do the send outside of the synchronise
      
      // If we created a new completed (silenced) range then we actually send this to the
      // target ME. If we don't do this it's possible for the target to never realise that
      // this message has been explicitly deleted (via the MBeans), and therefore, if there's
      // a problem with the message it will never know to give up trying to process it, which
      // could leave the stream blocked until an ME re-start.
      if(startTick != -1)
      {
        downControl.sendSilenceMessage(startTick,
            endTick,
            completedPrefix,
            false,
            priority,
            reliability,
            stream);
      }
     
      if (sendList != null)
      {
        sendMsgs( sendList, false );
      }
      
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "writeSilenceForced");
  
    }