docs: private int decodeKanji( QrCode qr , PackedBits8 data, int bitLocation ) {
  		int lengthBits = QrCodeEncoder.getLengthBitsKanji(qr.version);
  
  		int length = data.read(bitLocation,lengthBits,true);
  		bitLocation += lengthBits;
  
  		byte rawdata[] = new byte[ length*2 ];
  
  		for (int i = 0; i < length; i++) {
  			if( data.size < bitLocation+13 ) {
  				qr.failureCause = QrCode.Failure.MESSAGE_OVERFLOW;
  				return -1;
  			}
  			int letter = data.read(bitLocation,13,true);
  			bitLocation += 13;
  
  			letter = ((letter/0x0C0) << 8) | (letter%0x0C0);
  
  			if (letter < 0x01F00) {
  				// In the 0x8140 to 0x9FFC range
  				letter += 0x08140;
  			} else {
  				// In the 0xE040 to 0xEBBF range
  				letter += 0x0C140;
  			}
  			rawdata[i*2] = (byte) (letter >> 8);
  			rawdata[i*2 + 1] = (byte) letter;
  		}
  
  		// Shift_JIS may not be supported in some environments:
  		try {
  			workString.append( new String(rawdata, "Shift_JIS") );
  		} catch (UnsupportedEncodingException ignored) {
  			qr.failureCause = KANJI_UNAVAILABLE;
  			return -1;
  		}
  
  		return bitLocation;
  	}