code: public void close(VirtualConnection inVC, Exception e) {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.entry(tc, "close(), " + this);
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
              try {
                  if (inVC != null) {
                      Tr.debug(tc, "Closing the connection: " + inVC.getConnectionDescriptor());
                  }
              } catch (NullPointerException npe) {
                  // ignore this race condition since it is only for debug
              }
          }
  
          // synchronize on this TCPConnlink to prevent duplicate closes from being
          // processed
          // this can happen when the channel shuts down and close is called from
          // elsewhere
          // doing a quick synch with a boolean will help channel stop run faster
          boolean processClose = true;
          synchronized (this) {
              if (this.closed) {
                  processClose = false;
              }
              this.closed = true;
          }
  
          if (processClose) {
              super.close(inVC, e);
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.exit(tc, "close()");
          }
      }
docs: /*
  @see
  com.ibm.wsspi.channelfw.base.OutboundConnectorLink#close(com.ibm.wsspi.
  channelfw.VirtualConnection, java.lang.Exception)