namespace NubLang.Syntax; public sealed class Module { public static Dictionary Collect(List syntaxTrees) { var modules = new Dictionary(); foreach (var syntaxTree in syntaxTrees) { if (!modules.TryGetValue(syntaxTree.ModuleName, out var module)) { module = new Module(); modules.Add(syntaxTree.ModuleName, module); } module._definitions.AddRange(syntaxTree.Definitions); } return modules; } private readonly List _definitions = []; public List Structs(bool includePrivate) { return _definitions .OfType() .Where(x => x.Exported || includePrivate) .ToList(); } public List Functions(bool includePrivate) { return _definitions .OfType() .Where(x => x.Exported || includePrivate) .ToList(); } }