public void TEST_CompactRange(int level, Slice begin, Slice end) {
		assert (level >= 0);
		assert (level + 1 < config.kNumLevels);

		InternalKey begin_storage, end_storage;

		ManualCompaction manual = new ManualCompaction();
		manual.level = level;
		manual.done = false;
		if (begin == null) {
			manual.begin = null;
		} else {
			begin_storage = new InternalKey(begin,
					SequenceNumber.MaxSequenceNumber,
					ValueType.ValueTypeForSeek);
			manual.begin = begin_storage;
		}
		if (end == null) {
			manual.end = null;
		} else {
			end_storage = new InternalKey(end, new SequenceNumber(0),
					new ValueType((byte) 0));
			manual.end = end_storage;
		}

		mutex_.lock();
		try {
			while (!manual.done) {
				while (manual_compaction_ != null) {
					bg_cv_.await();
				}
				manual_compaction_ = manual;
				MaybeScheduleCompaction();
				while (manual_compaction_ == manual) {
					bg_cv_.await();
				}
			}
		} catch (InterruptedException e) {
			e.printStackTrace();
		} finally {
			mutex_.unlock();
		}
	}