code: public char[] decodeStringOnly(int length) throws IOException {
  
  		final char[] ca = new char[length];
  
  		for (int i = 0; i < length; i++) {
  			final int codePoint = decodeUnsignedInteger();
  			if (Character.isSupplementaryCodePoint(codePoint)) {
  				// supplementary code-point
  				// Assumption: it doesn't happen very often
  				return decodeStringOnlySupplementaryCodePoints(ca, length, i,
  						codePoint);
  			} else {
  				ca[i] = (char) codePoint;
  			}
  		}
  
  		return ca;
  	}
docs: Decode the characters of a string whose length (#code-points) has already
  been read. Look for codepoints of more than 16 bits that are represented
  as UTF-16 surrogate pairs in Java.
  
  @param length
  Length of the character sequence to read.
  @return The character sequence as a string.