code: boolean _close()
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(tc, "_close");
  
      boolean closedNow = false;
  
      synchronized (this)
      {
        if (!_closed)
        {
          _closed = true;
          closedNow = true;
        }
      }
  
      if (closedNow)
      {
        /*
         * This must be done outside the synchronization as it will synchronize on
         * the set of producer sessions whilst detaching this producer and if not
         * done outside, this could cause a deadlock with methods that synchronize
         * on the set and then each producersession in the set in turn.
         */
        _inputHandler.detachProducer(this);
        _inputHandler = null;
      }
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "_close", new Boolean(closedNow));
  
      return closedNow;
    }
docs: Method _close.
  <p>Internal method to close a producer session</p>
  @return boolean True if this close call closed the session
  False if the session was already closed