private void writeSymbolMap() throws IOException {

		BZip2BitOutputStream bitOutputStream = this.bitOutputStream;

		final boolean[] blockValuesPresent = this.blockValuesPresent;
		final boolean[] condensedInUse = new boolean[16];

		for (int i = 0; i < 16; i++) {
			for (int j = 0, k = i << 4; j < 16; j++, k++) {
				if (blockValuesPresent[k]) {
					condensedInUse[i] = true;
				}
			}
		}

		for (int i = 0; i < 16; i++) {
			bitOutputStream.writeBoolean (condensedInUse[i]);
		}

		for (int i = 0; i < 16; i++) {
			if (condensedInUse[i]) {
				for (int j = 0, k = i * 16; j < 16; j++, k++) {
					bitOutputStream.writeBoolean (blockValuesPresent[k]);
				}
			}
		}

	}