if (code == null) throw new IllegalStateException("Not visiting Code"); int size = Integer.MAX_VALUE; int tightStartPC = 0; int tightEndPC = Integer.MAX_VALUE; if (code.getExceptionTable() == null) return size; for (CodeException catchBlock : code.getExceptionTable()) { int startPC = catchBlock.getStartPC(); int endPC = catchBlock.getEndPC(); if (pc >= startPC && pc <= endPC) { int thisSize = endPC - startPC; if (size > thisSize) { size = thisSize; tightStartPC = startPC; tightEndPC = endPC; } } } if (size == Integer.MAX_VALUE) return size;   size = (size+7) / 8; LineNumberTable lineNumberTable = code.getLineNumberTable(); if (lineNumberTable == null) return size;  int count = 0; for(LineNumber line : lineNumberTable.getLineNumberTable()) { if (line.getStartPC() > tightEndPC) break; if (line.getStartPC() >= tightStartPC) count++; } return count;
return getSizeOfSurroundingTryBlock(null, pc);
	 public int getSizeOfSurroundingTryBlock(int pc) {			if (code == null) throw new IllegalStateException("Not visiting Code");			int size = Integer.MAX_VALUE;			int tightStartPC = 0;			int tightEndPC = Integer.MAX_VALUE;			if (code.getExceptionTable() == null) return size;			for (CodeException catchBlock : code.getExceptionTable()) {				int startPC = catchBlock.getStartPC();				int endPC = catchBlock.getEndPC();				if (pc >= startPC && pc <= endPC) {					int thisSize = endPC - startPC;					if (size > thisSize) {						size = thisSize;						tightStartPC = startPC;						tightEndPC = endPC;					}				}			}			if (size == Integer.MAX_VALUE) return size;						// try to guestimate number of lines that correspond			size = (size+7) / 8;			LineNumberTable lineNumberTable = code.getLineNumberTable();			if (lineNumberTable == null) return size;					int count = 0;			for(LineNumber line : lineNumberTable.getLineNumberTable()) {				if (line.getStartPC() > tightEndPC) break;				if (line.getStartPC() >= tightStartPC) count++;			}			return count;	 }