private LookUpSwitchOpecode convertToLookUpSwitchOpecode(ByteBuffer byteBuffer ,OpcodeType opcodeType,int zeroPadding) {
		int startPosition = byteBuffer.position();
		LookUpSwitchOpecode luso = new LookUpSwitchOpecode();
		luso.setOpcodeType(opcodeType);
		
		int i = 0;
		while (i < zeroPadding) {
			logger.debug("\t\t\t\t\t" + Integer.toString(byteBuffer.get() & 0xff)); // skip zero paddings
			i++;
		}
		
		luso.setDefaultOffset((byteBuffer.getInt()));
		luso.setPairCount((byteBuffer.getInt()));

		// TODO 他にもっと動的な0paddingを解決出来る方法を考えたい
		if (luso.getPairCount() < 0) {
			logger.debug("\t\t\t\t\tpadding is illegal (offset is negative value): " + zeroPadding);
			byteBuffer.position(startPosition);
			return null;
		}
		logger.debug("" + byteBuffer.limit() + ":" + byteBuffer.position()  + ":" + luso.getPairCount() + ":" + (byteBuffer.position() + luso.getPairCount() * 8));
		if ((byteBuffer.position() + luso.getPairCount() * 8) < 0 || byteBuffer.limit() < (byteBuffer.position() + luso.getPairCount() * 8)) {
			logger.debug("\t\t\t\t\tpadding is illegal (lookupswitch's opecode bytes are over total bytes): " + zeroPadding); 
			byteBuffer.position(startPosition);
			return null;
		}
		
		
		i = 0;
		Map<Integer,Integer> offsetMap = new HashMap<>();
		while (i < luso.getPairCount()) {
			int key = (byteBuffer.getInt());
			int offset = (byteBuffer.getInt());
			offsetMap.put(key, offset);
			i++;
		}
		
		luso.setOffsetMap(offsetMap);
		
		return luso;
	}