private void mergeFinallyBlock(FlowBlock tryFlow, FlowBlock catchFlow,
			StructuredBlock finallyBlock) {
		TryBlock tryBlock = (TryBlock) tryFlow.block;
		if (tryBlock.getSubBlocks()[0] instanceof TryBlock) {
			/*
			 * A try { try { } catch {} } finally{} is equivalent to a try {}
			 * catch {} finally {} so remove the surrounding tryBlock.
			 */
			TryBlock innerTry = (TryBlock) tryBlock.getSubBlocks()[0];
			innerTry.gen = tryBlock.gen;
			innerTry.replace(tryBlock);
			tryBlock = innerTry;
			tryFlow.lastModified = tryBlock;
			tryFlow.block = tryBlock;
		}

		/* Now merge try and catch flow blocks */
		mergeTryCatch(tryFlow, catchFlow);
		FinallyBlock newBlock = new FinallyBlock();
		newBlock.setCatchBlock(finallyBlock);
		tryBlock.addCatchBlock(newBlock);
	}