public BEValue bdecodeMap() throws IOException {
		int c = this.getNextIndicator();
		if (c != 'd')
			throw new InvalidBEncodingException("Expected 'd', not '"
					+ (char)c + "'");
		this.indicator = 0;

		Map<String, BEValue> result = new HashMap<String, BEValue>();
		c = this.getNextIndicator();
		while (c != 'e')
		{
			// Dictonary keys are always strings.
			String key = this.bdecode().getString();

			BEValue value = this.bdecode();
			result.put(key, value);

			c = this.getNextIndicator();
		}
		this.indicator = 0;

		return new BEValue(result);
	}