internal WebAssemblyInstance(Module module, WebAssemblyImports imports)
        {
            Module  = module;
            Imports = imports;
            _vm     = new VirtualMachine(this);

            var memoryImport = Module.Import.SingleOrDefault(i => i.Type == ExternalKind.Memory);

            if (memoryImport != null)
            {
                Memory = Imports.GetMemory(memoryImport);
                foreach (var segment in module.Data)
                {
                    Memory.Write(segment);
                }
            }

            var table = Module.Table;

            Table = new WebAssemblyTable(table.FirstOrDefault()?.Limits.Min ?? 0);
            foreach (var segment in module.Element)
            {
                Table.Write(segment);
            }
        }
 public WebAssemblyInstance Instantiate(WebAssemblyImports imports = null)
 {
     return(new WebAssemblyInstance(_module, imports));
 }