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());
        }