file = NULL;
     next_call_no = 0;
     version = 0;
-    m_supportsSeeking = false;
 }
 
 
     if (!file->open(filename, File::Read)) {
         return false;
     }
-    m_supportsSeeking = file->supportsOffsets();
 
     version = read_uint();
     if (version > TRACE_VERSION) {
 }
 
 
+void Parser::getBookmark(ParseBookmark &bookmark) {
+    bookmark.offset = file->currentOffset();
+    bookmark.next_call_no = next_call_no;
+}
+
+
+void Parser::setBookmark(const ParseBookmark &bookmark) {
+    file->setCurrentOffset(bookmark.offset);
+    next_call_no = bookmark.next_call_no;
+}
+
+
 Call *Parser::parse_call(void) {
     do {
         int c = read_byte();
 
 Call * Parser::scan_call()
 {
-    assert(m_supportsSeeking);
     do {
         int c = read_byte();
         switch(c) {
 
     EnumMap enums;
     BitmaskMap bitmasks;
 
-    bool m_supportsSeeking;
-
     unsigned next_call_no;
 
 public:
         return file->supportsOffsets();
     }
 
-    void getBookmark(ParseBookmark &bookmark) {
-        bookmark.offset = file->currentOffset();
-        bookmark.next_call_no = next_call_no;
-    }
+    void getBookmark(ParseBookmark &bookmark);
 
-    void setBookmark(const ParseBookmark &bookmark) {
-        file->setCurrentOffset(bookmark.offset);
-        next_call_no = bookmark.next_call_no;
-    }
+    void setBookmark(const ParseBookmark &bookmark);
 
     int percentRead()
     {