private String readString() throws EncodingException
	{
		int handle = readInt();
		boolean inline = ((handle & 1) != 0);
		handle = handle >> 1;

		if (inline)
		{
			if (handle == 0)
				return "";

			byte[] data = readBytes(handle);

			String str;
			try
			{
				str = new String(data, "UTF-8");
			}
			catch (UnsupportedEncodingException e)
			{
				throw new EncodingException("Error parsing AMF3 string from " + data);
			}

			stringReferences.add(str);

			return str;
		}
		else
		{
			return stringReferences.get(handle);
		}
	}