public String DebugString() {
		StringBuffer r = new StringBuffer();
		r.append("VersionEdit {");
		if (has_comparator_) {
			r.append("\n  Comparator: ");
			r.append(comparator_);
		}
		if (has_log_number_) {
			r.append("\n  LogNumber: ");
			r.append(logging.AppendNumberTo(log_number_));
		}
		if (has_prev_log_number_) {
			r.append("\n  PrevLogNumber: ");
			r.append(logging.AppendNumberTo(prev_log_number_));
		}
		if (has_next_file_number_) {
			r.append("\n  NextFile: ");
			r.append(logging.AppendNumberTo(next_file_number_));
		}
		if (has_last_sequence_) {
			r.append("\n  LastSeq: ");
			r.append(logging.AppendNumberTo(last_sequence_.value));
		}
		for (int i = 0; i < compact_pointers_.size(); i++) {
			r.append("\n  CompactPointer: ");

			r.append(logging
					.AppendNumberTo(compact_pointers_.get(i).getFirst()));
			r.append(" ");
			r.append(compact_pointers_.get(i).getSecond().DebugString());
		}
		java.util.Iterator<Pair<Integer, Long>> itr = deleted_files_.iterator();
		while (itr.hasNext()) {
			Pair<Integer, Long> p = itr.next();
			r.append("\n  DeleteFile: ");
			r.append(logging.AppendNumberTo(p.getFirst()));
			r.append(" ");
			r.append(logging.AppendNumberTo(p.getSecond()));
		}

		for (int i = 0; i < new_files_.size(); i++) {
			FileMetaData f = new_files_.get(i).getSecond();
			r.append("\n  AddFile: ");
			r.append(logging.AppendNumberTo(new_files_.get(i).getFirst()));
			r.append(" ");
			r.append(logging.AppendNumberTo(f.getNumber()));
			r.append(" ");

			r.append(f.getFile_size());
			r.append(" ");
			r.append(f.getSmallest().DebugString());
			r.append(" .. ");
			r.append(f.getLargest().DebugString());
		}
		r.append("\n}\n");
		return r.toString();
	}