protected final Catch findCatch(Exception exception) {
		Class<?> exceptionType = exception.getClass();
		Catch potentialCatch = null;

		if (this.catches == null)
			return potentialCatch;

		for (Catch catchHandler : this.catches) {
			if (catchHandler.exceptionType.equals(exceptionType))
				return catchHandler;

			if (catchHandler.exceptionType.isAssignableFrom(exceptionType)) {
				if (potentialCatch != null) {
					// FIXME how java determine subClass?
					// if (catchHandler.exceptionType.isSubClass(potentialCatch.exceptionType))
					// potentialCatch = catchHandler;
				} else
					potentialCatch = catchHandler;
			}
		}

		return potentialCatch;
	}