void ReadData() { if (creating) { throw new InvalidOperationException(); } lock (file) { if (namespaces != null) { return; } MyBinaryReader reader = file.BinaryReader; int old_pos = (int)reader.BaseStream.Position; reader.BaseStream.Position = DataOffset; int source_idx = reader.ReadLeb128(); source = file.GetSourceFile(source_idx); int count_includes = reader.ReadLeb128(); if (count_includes > 0) { include_files = new List <SourceFileEntry> (); for (int i = 0; i < count_includes; i++) { include_files.Add(file.GetSourceFile(reader.ReadLeb128())); } } int count_ns = reader.ReadLeb128(); namespaces = new List <NamespaceEntry> (); for (int i = 0; i < count_ns; i++) { namespaces.Add(new NamespaceEntry(file, reader)); } reader.BaseStream.Position = old_pos; } }