docs: public void popContextData(){
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.entry(tc, "popContextData");
          }
          
          // If we pushed thread context onto the thread, be sure to reset it before
          // taking it off.
          if (this.originalCD != null) {
            //Each producer service of the Transfer service is accessed in order to get the thread context data
            Iterator<ITransferContextService> TransferIterator = com.ibm.ws.webcontainer.osgi.WebContainer.getITransferContextServices();
            if (TransferIterator != null) {
              while(TransferIterator.hasNext()){
                ITransferContextService tcs = TransferIterator.next();
                if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                    Tr.debug(tc, "Calling resetState on: " + tcs);
                }
                tcs.resetState();
              }
            }
          }
          
          
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
              Tr.debug(tc, "Restoring the current thread's class loader");
          }
          if(currentCL != null){
              //Revert back to the thread's current class loader
              AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() {
                  public ClassLoader run() {
                      Thread.currentThread().setContextClassLoader(currentCL);
                      return currentCL;
                  }
              });
          }
          
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
              Tr.debug(tc, "Restoring the current thread's context data");
          }
          //When popping we are going to reset the thread context to clear everything off, then we are going to set it back to the state when we first pushed
          //our stuff onto the thread
          if(currentCD != null){
              Iterator<ITransferContextService> TransferIterator = com.ibm.ws.webcontainer.osgi.WebContainer.getITransferContextServices();
              if (TransferIterator != null) { 
                  while(TransferIterator.hasNext()){
                      ITransferContextService tcs = TransferIterator.next();
                      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                          Tr.debug(tc, "calling restoreState on: " + tcs);
                      }
                      tcs.restoreState(currentCD);
                  }  
              }
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
              Tr.debug(tc, "Ending the current ComponentMetaData context");
          }
          //Reset data for other components that we already have hooks into
          ComponentMetaDataAccessorImpl cmdai = ComponentMetaDataAccessorImpl.getComponentMetaDataAccessor();
          cmdai.endContext();
          
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.exit(tc, "popContextData");
          }
      }