code: int decodeEci( PackedBits8 data, int bitLocation ) {
  		// NOTE: I'm having trouble testing this code. Just finding an encoding which will do ECI is difficult
  		//       almost all use UTF-8 by default and that supports a lot of characters
  
  		// number of 1 bits before first 0 define number of additional codewords
  		int firstByte = data.read(bitLocation,8,true);
  		bitLocation += 8;
  
  		int numCodeWords = 1;
  		while( (firstByte&(1 << (7-numCodeWords))) != 0 ) {
  			numCodeWords++;
  		}
  		// trip the bits that indicate the number of code words
  		if( numCodeWords > 1) {
  			firstByte <<= numCodeWords-1;
  			firstByte >>= numCodeWords-1;
  		}
  
  		// read the 6-digit designator
  		int assignmentValue = firstByte;
  		for (int i = 1; i < numCodeWords; i++) {
  			assignmentValue <<= 8;
  			assignmentValue |= data.read(bitLocation,8,true);
  			bitLocation += 8;
  		}
  
  		encodingEci = getEciCharacterSet(assignmentValue);
  
  		return bitLocation;
  	}
docs: Decodes Extended Channel Interpretation (ECI) Mode. Allows character set to be changed
  
  @param data encoded data
  @return Location it has read up to in bits