public static byte[] decompress(ArtStorageMode mode, byte[] source, int maxDecompressedSize,
			TaskMonitor monitor) throws IOException {
		if (mode == ArtStorageMode.kStorageModeLZ4) {
			return decompressLZ4(source, maxDecompressedSize, monitor);
		}
		if (mode == ArtStorageMode.kStorageModeLZ4HC) {
			return decompressLZ4HC(source, maxDecompressedSize, monitor);
		}
		if (mode == ArtStorageMode.kStorageModeUncompressed) {
			return source;//not compressed
		}
		throw new IOException("invalid storage mode");
	}
Decompresses the source bytes using the specified "mode".
@param mode storage mode (aka compression type)
@param source compressed bytes, if compressed
@param maxDecompressedSize maximum byte size after being decompressed
@return decompressed bytes
@param monitor task monitor for controlling the task
@throws IOException should an error occur reading the bytes
Ghidra/Features/FileFormats/src/main/java/ghidra/file/formats/android/util/Decompressor.java