public void Read(uint imports, IList <PdbImport> result)
        {
            if (imports == 0)
            {
                return;
            }
            if (!blobStream.TryCreateReader(imports, out var reader))
            {
                return;
            }
            while (reader.Position < reader.Length)
            {
                var           kind = ImportDefinitionKindUtils.ToPdbImportDefinitionKind(reader.ReadCompressedUInt32());
                string        targetNamespace, alias;
                AssemblyRef   targetAssembly;
                PdbImport     import;
                ITypeDefOrRef targetType;
                switch (kind)
                {
                case PdbImportDefinitionKind.ImportNamespace:
                    // <import> ::= ImportNamespace <target-namespace>
                    targetNamespace = ReadUTF8(reader.ReadCompressedUInt32());
                    import          = new PdbImportNamespace(targetNamespace);
                    break;

                case PdbImportDefinitionKind.ImportAssemblyNamespace:
                    // <import> ::= ImportAssemblyNamespace <target-assembly> <target-namespace>
                    targetAssembly  = TryReadAssemblyRef(reader.ReadCompressedUInt32());
                    targetNamespace = ReadUTF8(reader.ReadCompressedUInt32());
                    import          = new PdbImportAssemblyNamespace(targetAssembly, targetNamespace);
                    break;

                case PdbImportDefinitionKind.ImportType:
                    // <import> ::= ImportType <target-type>
                    targetType = TryReadType(reader.ReadCompressedUInt32());
                    import     = new PdbImportType(targetType);
                    break;

                case PdbImportDefinitionKind.ImportXmlNamespace:
                    // <import> ::= ImportXmlNamespace <alias> <target-namespace>
                    alias           = ReadUTF8(reader.ReadCompressedUInt32());
                    targetNamespace = ReadUTF8(reader.ReadCompressedUInt32());
                    import          = new PdbImportXmlNamespace(alias, targetNamespace);
                    break;

                case PdbImportDefinitionKind.ImportAssemblyReferenceAlias:
                    // <import> ::= ImportReferenceAlias <alias>
                    alias  = ReadUTF8(reader.ReadCompressedUInt32());
                    import = new PdbImportAssemblyReferenceAlias(alias);
                    break;

                case PdbImportDefinitionKind.AliasAssemblyReference:
                    // <import> ::= AliasAssemblyReference <alias> <target-assembly>
                    alias          = ReadUTF8(reader.ReadCompressedUInt32());
                    targetAssembly = TryReadAssemblyRef(reader.ReadCompressedUInt32());
                    import         = new PdbAliasAssemblyReference(alias, targetAssembly);
                    break;

                case PdbImportDefinitionKind.AliasNamespace:
                    // <import> ::= AliasNamespace <alias> <target-namespace>
                    alias           = ReadUTF8(reader.ReadCompressedUInt32());
                    targetNamespace = ReadUTF8(reader.ReadCompressedUInt32());
                    import          = new PdbAliasNamespace(alias, targetNamespace);
                    break;

                case PdbImportDefinitionKind.AliasAssemblyNamespace:
                    // <import> ::= AliasAssemblyNamespace <alias> <target-assembly> <target-namespace>
                    alias           = ReadUTF8(reader.ReadCompressedUInt32());
                    targetAssembly  = TryReadAssemblyRef(reader.ReadCompressedUInt32());
                    targetNamespace = ReadUTF8(reader.ReadCompressedUInt32());
                    import          = new PdbAliasAssemblyNamespace(alias, targetAssembly, targetNamespace);
                    break;

                case PdbImportDefinitionKind.AliasType:
                    // <import> ::= AliasType <alias> <target-type>
                    alias      = ReadUTF8(reader.ReadCompressedUInt32());
                    targetType = TryReadType(reader.ReadCompressedUInt32());
                    import     = new PdbAliasType(alias, targetType);
                    break;

                case ImportDefinitionKindUtils.UNKNOWN_IMPORT_KIND:
                    import = null;
                    break;

                default:
                    Debug.Fail("Unknown import definition kind: " + kind.ToString());
                    import = null;
                    break;
                }
                if (import != null)
                {
                    result.Add(import);
                }
            }
            Debug.Assert(reader.Position == reader.Length);
        }