public IEnumerable<KeyValuePair<RecordKey, RecordUpdate>> sortedWalk()
{
for (int x=0;x<this.number_of_records;x++) {
SegmentBlockEncoderRecordOffsetList.RecordInfo ri = new SegmentBlockEncoderRecordOffsetList.RecordInfo();
int position = -(4 + ((number_of_records-x) * Util.structSize(ref ri)));
Console.WriteLine("pos : " + position);
this.datastream.Seek(position, SeekOrigin.End);
ri = Util.readStruct<SegmentBlockEncoderRecordOffsetList.RecordInfo>(this.datastream);
this.datastream.Seek(ri.record_start_pos, SeekOrigin.Begin);
byte[] key_bytes = new byte[ri.key_len];
this.datastream.Read(key_bytes, 0, ri.key_len);
byte[] data_bytes = new byte[ri.data_len];
this.datastream.Read(data_bytes, 0, ri.data_len);
RecordKey key = new RecordKey(key_bytes);
RecordUpdate update = RecordUpdate.FromEncodedData(data_bytes);
yield return new KeyValuePair<RecordKey,RecordUpdate>(key, update);
}
// return this.scanForward(ScanRange<RecordKey>.All());
}