void AddCReg(KeyAndType asType, bool preserveExistingDefaults, ICReg registration)
 {
     ICReg currentReg;
     if (!_registrations.TryGetValue(asType, out currentReg))
     {
         _registrations.Add(asType, registration);
         return;
     }
     var multi = currentReg as ICRegMulti;
     if (multi != null)
     {
         multi.Add(registration, preserveExistingDefaults);
         return;
     }
     multi = new CRegMulti();
     multi.Add(currentReg, false);
     multi.Add(registration, preserveExistingDefaults);
     _registrations[asType] = multi;
 }
        void AddCReg(KeyAndType asType, bool preserveExistingDefaults, ICReg registration)
        {
            ICReg currentReg;

            if (!_registrations.TryGetValue(asType, out currentReg))
            {
                _registrations.Add(asType, registration);
                return;
            }
            var multi = currentReg as ICRegMulti;

            if (multi != null)
            {
                multi.Add(registration, preserveExistingDefaults);
                return;
            }
            multi = new CRegMulti();
            multi.Add(currentReg, false);
            multi.Add(registration, preserveExistingDefaults);
            _registrations[asType] = multi;
        }