code: @Override
      public void close() {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(this, tc, "close");
  
          int originalState = 0;
          Object[] enumCopy = null;
  
          synchronized (enums) {
              // Save the state of the closed flag before we update it here. If
              // this is the first time that close has been called then we want
              // to carry out the logic, otherwise silently complete with no
              // further action.
              originalState = state;
              state = CLOSED;
  
              // Make sure that we do this part inside the sync block too in order
              // to prevent concurrent modification problems.
              enumCopy = enums.toArray();
          }
  
          if (originalState != CLOSED) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  SibTr.debug(this, tc, "About to close " + enumCopy.length + " enums.");
              for (int i = 0; i < enumCopy.length; i++) {
                  EnumImpl anEnum = (EnumImpl) enumCopy[i];
                  anEnum.close();
              }
  
              // Remove from the list maintained in the session.
              theSession.removeBrowser(this);
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(this, tc, "close");
      }
docs: /*
  (non-Javadoc)
  
  @see javax.jms.QueueBrowser#close()