public static void Register <TInterface, TActual>() where TActual : TInterface, IFactory, new()
        {
            if (typeof(TInterface) == typeof(IFactory))
            {
                throw new CantRegisterTypeIFactoryInAbstractFactoryException();
            }
            var t = typeof(TInterface);

            if (_factories.ContainsKey(t))
            {
                throw new Exception($"The type ({t}) is already registered");
            }
            var actual = new TActual();

            actual.PrimeRegistry();
            _factories.Add(t, actual);
        }
 public Enumerator(IndexerWrapper <TActual, TActualItem> enumerable)
 {
     actual  = enumerable.Actual;
     indexer = enumerable.indexer;
     index   = -1;
     Current = default !;