nsAutoLock lock(mJARChannel->mLock);
nsAutoMonitor monitor(mJARChannel->mMonitor);
    NS_IMETHOD OnStopRequest(nsIChannel* jarCacheTransport,                              nsISupports* context,                              nsresult status,                              const PRUnichar* aMsg) {        nsresult rv = NS_OK;        nsAutoLock lock(mJARChannel->mLock);        if (NS_SUCCEEDED(status) && mJARChannel->mJarCacheTransport) {            NS_ASSERTION(jarCacheTransport == (mJARChannel->mJarCacheTransport).get(),                         "wrong transport");            // after successfully downloading the jar file to the cache,            // start the extraction process:            nsCOMPtr<nsIFileChannel> jarCacheFile;            rv = NS_NewFileChannel(mJarCacheFile,                                    PR_RDONLY,                                   nsnull,      // XXX content type                                   0,           // XXX content length                                   mJARChannel->mLoadGroup,                                   mJARChannel->mCallbacks,                                   mJARChannel->mLoadAttributes,                                   nsnull,                                   mJARChannel->mBufferSegmentSize,                                   mJARChannel->mBufferMaxSize,                                   getter_AddRefs(jarCacheFile));            if (NS_FAILED(rv)) return rv;            rv = mJARChannel->ExtractJARElement(jarCacheFile);        }        mJARChannel->mJarCacheTransport = nsnull;        return rv;    }