docs: @Override
      public Enumeration getEnumeration() throws JMSException {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(this, tc, "getEnumeration");
          Enumeration vEnum = null;
  
          // Synchronize here so that you can't create an enumeration while the
          // browser is being closed.
          synchronized (enums) {
  
              // By the time we have synchronized on enums we have control of the
              // state of the object.
              if (state == CLOSED) {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                      SibTr.debug(this, tc, "Called getEnumeration on a closed Browser");
                  // d238447 FFDC Review. App error, no FFDC required.
                  throw (JMSException) JmsErrorUtils.newThrowable(JMSException.class,
                                                                  "BROWSER_CLOSED_CWSIA0142",
                                                                  null,
                                                                  tc
                                  );
              }
  
              if (createdFirst) {
                  // If we haven't yet given the user the upfront one we created.
                  if (firstEnumeration != null) {
                      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                          SibTr.debug(this, tc, "Using the enumeration that was created by the constructor");
                      // Pass it ready to be returned.
                      vEnum = firstEnumeration;
  
                      // Stop us using it again.
                      firstEnumeration = null;
                  }
                  else {
                      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                          SibTr.debug(this, tc, "Creating a new enumeration");
                      // Need to create a new one.
                      vEnum = instantiateBrowser();
                  }
              }
  
              else {
                  // We have not created the first one, so do it now. The call to this
                  // method will have come from the constructor so we don't need to
                  // return the Enumeration - just stash it away for later use.
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                      SibTr.debug(this, tc, "Creating the first Enumeration (to check existence etc)");
                  firstEnumeration = instantiateBrowser();
                  createdFirst = true;
              }
  
          } // release the lock
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(this, tc, "getEnumeration", vEnum);
          return vEnum;
      }