private static boolean fixFinallyBlocks(AttrCodeContent codeContent,
			int argSlots, ExceptionCatch excCatch, Hashtable catchesSet) {
		boolean isChanged = false;
		if (catchesSet.get(excCatch) == null) {
			int endIndex = excCatch.end().getIndex();
			if (excCatch.handler().getIndex() > endIndex
					&& excCatch.isAnyType()) {
				int startIndex = excCatch.start().getIndex();
				for (int j = 0, count = codeContent.getCatchesCount(); j < count; j++) {
					ExceptionCatch secondCatch = codeContent.getCatch(j);
					if (secondCatch.end().getIndex() <= startIndex
							&& secondCatch.handler().getIndex() >= endIndex
							&& fixFinallyBlocks(codeContent, argSlots,
									secondCatch, catchesSet)) {
						if (codeContent.getCatchesCount() != count)
							return true;
						startIndex = excCatch.start().getIndex();
						endIndex = excCatch.end().getIndex();
						isChanged = true;
					}
				}
				catchesSet.put(excCatch, "");
				if (fixFinallyBlocksFor(codeContent, argSlots, endIndex,
						excCatch.handler().getIndex())) {
					isChanged = true;
				}
			}
		}
		return isChanged;
	}