public void setNextByAddr(FlowBlock flow) {
		/* nextByAddr can be set, when reordering block in transform exc */
		// if (nextByAddr != null)
		// throw new IllegalStateException("nextByAddr already set");
		if (flow == END_OF_METHOD || flow == NEXT_BY_ADDR)
			throw new IllegalArgumentException("nextByAddr mustn't be special");
		SuccessorInfo info = (SuccessorInfo) successors.remove(NEXT_BY_ADDR);
		SuccessorInfo flowInfo = (SuccessorInfo) successors.get(flow);
		if (info != null) {
			NEXT_BY_ADDR.predecessors.remove(this);
			Jump jumps = info.jumps;
			jumps.destination = flow;
			while (jumps.next != null) {
				jumps = jumps.next;
				jumps.destination = flow;
			}
			successors.put(flow, info);
			if (flowInfo != null) {
				info.gen.addAll(flowInfo.gen);
				info.kill.retainAll(flowInfo.kill);
				jumps.next = flowInfo.jumps;
			} else
				flow.predecessors.add(this);
		}
		checkConsistent();

		nextByAddr = flow;
		flow.prevByAddr = this;
	}