protected virtual void AddSelector(IMacroSelectorForType selector, Dictionary <Type, IMacroSelectorForType> list)
        {
            Assert.ArgumentNotNull(selector, "selector");
            Assert.ArgumentNotNull(list, "list");

            foreach (var type in selector.ApplicableTypes)
            {
                if (!list.ContainsKey(type))
                {
                    list.Add(type, selector);
                }
            }
        }
        protected virtual void AddSelector(IMacroSelectorForType selector, Dictionary<Type, IMacroSelectorForType> list)
        {
            Assert.ArgumentNotNull(selector, "selector");
            Assert.ArgumentNotNull(list, "list");

            foreach (var type in selector.ApplicableTypes)
            {
                if (!list.ContainsKey(type))
                {
                    list.Add(type, selector);
                }
            }
        }
 public virtual void AddValueSelector(IMacroSelectorForType selector)
 {
     AddSelector(selector, this.ValueSelectors);
 }
 public virtual void AddOperatorSelector(IMacroSelectorForType selector)
 {
     AddSelector(selector, this.OperatorSelectors);
 }
 public virtual void AddValueSelector(IMacroSelectorForType selector)
 {
     AddSelector(selector, this.ValueSelectors);
 }
 public virtual void AddOperatorSelector(IMacroSelectorForType selector)
 {
     AddSelector(selector, this.OperatorSelectors);
 }