namespace DevDisciples.Parsing; public class VisitorContainer { private Dictionary Visitors { get; } = new(); private Visitor.Visit Default { get; set; } = default!; public void Register(Visitor.Visit visitor) { Visitors[typeof(TVisitee)] = visitor; } public Visitor.Visit this[Type type] => Visitors.GetValueOrDefault(type, Default); } public class VisitorContainer { protected Dictionary> Visitors { get; } = new(); public Visitor.Visit Default { get; set; } = default!; public VisitorContainer Register(Visitor.Visit visitor) { Visitors[typeof(TVisitee)] = visitor; return this; } public Visitor.Visit this[Type type] => Visitors.ContainsKey(type) ? Visitors[type] : Default; } public class VisitorContainer { protected Dictionary> Visitors { get; } = new(); public Visitor.Visit Default { get; set; } = default!; public void Register(Visitor.Visit visitor) { Visitors[typeof(TVisitee)] = visitor; } public Visitor.Visit this[Type type] => Visitors.ContainsKey(type) ? Visitors[type] : Default; }