private void removeBlock(final Block block) {
		trace.remove(block);
		subroutines.remove(block);
		catchBlocks.remove(block);
		handlers.remove(block);

		// edgeModCount is incremented by super.removeNode().
		// Dominators will be recomputed automatically if needed, so just
		// clear the pointers to let the GC work.

		block.setDomParent(null);
		block.setPdomParent(null);
		block.domChildren().clear();
		block.pdomChildren().clear();
		block.domFrontier().clear();
		block.pdomFrontier().clear();

		Iterator iter = handlers.values().iterator();

		while (iter.hasNext()) {
			final Handler handler = (Handler) iter.next();
			handler.protectedBlocks().remove(block);
		}

		iter = subroutines.values().iterator();

		while (iter.hasNext()) {
			final Subroutine sub = (Subroutine) iter.next();
			sub.removePathsContaining(block);

			if (sub.exit() == block) {
				sub.setExit(null);
			}
		}

		if (block.tree() != null) {
			iter = block.tree().stmts().iterator();

			while (iter.hasNext()) {
				final Stmt s = (Stmt) iter.next();

				if (s instanceof LabelStmt) {
					final Label label = ((LabelStmt) s).label();
					label.setStartsBlock(false);
					iniBlock.tree().addStmt(new LabelStmt(label));
				}

				s.cleanup();
			}
		}

		super.removeNode(block.label());
	}