private void insertProtectedRegionStores() {
		db("  Inserting protected region stores");

		final HashSet tryPreds = new HashSet();

		final Iterator blocks = catchBlocks.iterator();

		// Iterate over the blocks in this control flow graph. Build a
		// set of predacessors of all protected blocks that themselves are
		// not in the protected block. These blocks end with a jump into
		// a protected region.
		while (blocks.hasNext()) {
			final Block block = (Block) blocks.next();

			final Handler handler = (Handler) handlers.get(block);

			if (handler != null) {
				final HashSet p = new HashSet();

				final Iterator prots = handler.protectedBlocks().iterator();

				while (prots.hasNext()) {
					final Block prot = (Block) prots.next();
					p.addAll(preds(prot));
				}

				p.removeAll(handler.protectedBlocks());

				tryPreds.addAll(p);
			}
		}

		// Starting with the source block,
		insertProtStores(srcBlock, tryPreds, new ResizeableArrayList());
	}