private Object parseString() throws StreamCorruptedException {
		int strLen = readLength();
		indexPlus(1); // get rid of "
		Object output;
		CharBuffer cb = CharBuffer.allocate(strLen);
		boolean containsZeroChar = false;
		for (int r = 0; r < strLen; r++) {
			char ch;
			try {
				ch = input.get();
				if (ch == '\u0000') {
					containsZeroChar = true;
				}
			} catch (Throwable e) {
				throw new StreamCorruptedException("Char failed to parse, got " + cb.toString() + " so far");
			}
			cb.put(ch);
		}
		indexPlus(2);
		cb.rewind();
		String test = cb.toString();
		if (!containsZeroChar) {
			// no stringy loss
			output = test;
		} else {
			output = cb;
		}
		objHistory.add(output);
		return output;
	}