public Set propagateUsage() {
		used = new SimpleSet();
		Set allUse = new SimpleSet();
		Set childUse0 = subBlocks[0].propagateUsage();
		Set childUse1 = subBlocks[1].propagateUsage();
		/*
		 * All variables used somewhere inside both sub blocks, are used in this
		 * block, too. Also the variables used in first block are used in this
		 * block, except when it can be declared locally. (Note that
		 * subBlocks[0].used != childUse0)
		 */
		used.addAll(subBlocks[0].used);
		if (subBlocks[0] instanceof LoopBlock)
			((LoopBlock) subBlocks[0]).removeLocallyDeclareable(used);
		allUse.addAll(childUse0);
		allUse.addAll(childUse1);
		childUse0.retainAll(childUse1);
		used.addAll(childUse0);
		return allUse;
	}