public synchronized CryptoSession newCryptoSession() {
		if (currentCryptoSession == null || currentCryptoSession.isClosed()) {
			// If no this no current open cryptosession, return a new full/independent 
			// cryptosession, and use it as the parent for any subsequent sessions
			currentCryptoSession = CryptoProviders.getInstance().newSession();
			return currentCryptoSession;
		}

		// return a nested / dependent cryptosession
		return new CryptoProviderSessionChildImpl(currentCryptoSession);
	}
Returns a new {@link CryptoSession} that the caller can use to query for
passwords and such.  Caller is responsible for closing the instance when done.
<p>
Later callers to this method will receive a nested CryptoSession that shares it's
state with the initial CryptoSession, until the initial CryptoSession is closed(). 

@return new {@link CryptoSession} instance, never null
Ghidra/Features/Base/src/main/java/ghidra/formats/gfilesystem/FileSystemService.java