private void promoteInSets() {
		for (Iterator i = predecessors.iterator(); i.hasNext();) {
			FlowBlock pred = (FlowBlock) i.next();
			SuccessorInfo succInfo = (SuccessorInfo) pred.successors.get(this);

			/*
			 * First get the gen/kill sets of all jumps of predecessor to this
			 * block and calculate the intersection.
			 */
			VariableSet gens = succInfo.gen;
			SlotSet kills = succInfo.kill;

			/*
			 * Merge in locals of this block with those condionally written by
			 * previous blocks
			 */
			in.merge(gens);

			/*
			 * The ins of the successor that are not killed (i.e.
			 * unconditionally overwritten) by this block are new ins for this
			 * block.
			 */
			SlotSet newIn = (SlotSet) in.clone();
			newIn.removeAll(kills);

			if (pred.in.addAll(newIn))
				pred.promoteInSets();
		}

		if (nextByAddr != null)
			nextByAddr.promoteInSets();
	}