return Character.valueOf((char) readInt(offset[readUnsignedShort()])); case 'D': return Double.valueOf(Double.longBitsToDouble(readLong(offset[readUnsignedShort()]))); case 'F': return Float.valueOf(Float.intBitsToFloat(readInt(offset[readUnsignedShort()]))); return Integer.valueOf(readInt(offset[readUnsignedShort()])); case 'J': return Long.valueOf(readLong(offset[readUnsignedShort()])); case 'S': return Short.valueOf((short) readInt(offset[readUnsignedShort()]));