using System.Collections.Immutable; namespace AIStudio.Tools.PluginSystem.Assistants.DataModel; public class PropSpec( IEnumerable required, IEnumerable optional, IEnumerable? nonReadable = null, IEnumerable? nonWriteable = null, IEnumerable? confidential = null) { public ImmutableArray Required { get; } = MaterializeDistinct(required); public ImmutableArray Optional { get; } = MaterializeDistinct(optional); public ImmutableArray Confidential { get; } = MaterializeDistinct(confidential ?? []); public ImmutableArray NonReadable { get; } = MaterializeDistinct((nonReadable ?? []).Concat(confidential ?? [])); public ImmutableArray NonWriteable { get; } = MaterializeDistinct((nonWriteable ?? []).Concat(confidential ?? [])); private static ImmutableArray MaterializeDistinct(IEnumerable source) { return source.Distinct(StringComparer.Ordinal).ToImmutableArray(); } }