Inheritance: IHandleAccountStateTransitions
        public static void Build()
        {
            UnitOfWork = new InMemoryUnitOfWork();
            ClientProjections = new ClientProjections(UnitOfWork.Repository);
            ClientRepository = new ClientRepository(UnitOfWork.Repository);
            ClientService = new ClientService(ClientRepository, new AccountNumberService(), UnitOfWork);
            AccountProjections = new AccountProjections(UnitOfWork.Repository);
            AccountRepository = new AccountRepository(UnitOfWork.Repository);
            AccountService = new AccountService(AccountRepository, UnitOfWork);
            ClientPassedAwayHandler = new ClientPassedAwayHandler(AccountRepository, UnitOfWork);

            SubscribeToEvents();
        }
        public static void Build()
        {
            LogFactory.BuildLogger = type => new ConsoleWindowLogger(type);

            Repository = new InMemoryRepository();
            DataQuery = Repository as IDataQuery;
            UnitOfWork = new InMemoryUnitOfWork(Repository);
            ClientProjections = new ClientProjections(Repository);
            ClientRepository = new ClientRepository(Repository, DataQuery);
            ClientApplicationService = new ClientApplicationService(ClientRepository, ClientProjections, UnitOfWork);
            AccountProjections = new AccountProjections(Repository);
            AccountRepository = new AccountRepository(Repository);
            AccountNumberService = new AccountNumberService(DataQuery);
            AccountApplicationService = new AccountApplicationService(AccountRepository, AccountProjections, AccountNumberService, UnitOfWork);

            RegisterCommands();
            SubscribeToCommands();
            RegisterSpecifications();
        }