public void makeDeclaration(Set done) {
		super.makeDeclaration(done);
		/*
		 * Normally we have to declare our exceptionLocal. This is automatically
		 * done in dumpSource.
		 * 
		 * If we are unlucky the exceptionLocal is used outside of this block.
		 * In that case we do a transformation.
		 */
		if (exceptionLocal != null) {
			if (declare.contains(exceptionLocal))
				declare.remove(exceptionLocal);
			else {
				LocalInfo dummyLocal = new LocalInfo();
				Expression store = new StoreInstruction(new LocalStoreOperator(
						exceptionLocal.getType(), exceptionLocal))
						.addOperand(new LocalLoadOperator(dummyLocal.getType(),
								null, dummyLocal));
				InstructionBlock ib = new InstructionBlock(store);
				ib.setFlowBlock(flowBlock);
				ib.appendBlock(catchBlock);
				catchBlock = ib;
				exceptionLocal = dummyLocal;
				String localName = dummyLocal.guessName();
				Iterator doneIter = done.iterator();
				while (doneIter.hasNext()) {
					Declarable previous = (Declarable) doneIter.next();
					if (localName.equals(previous.getName())) {
						/* A name conflict happened. */
						dummyLocal.makeNameUnique();
						break;
					}
				}
			}
		}
	}