/// <summary>
        /// Add new account to repository.
        /// </summary>
        /// <param name="name">
        /// Holder name.
        /// </param>
        /// <param name="email">
        /// Holder e-mail.
        /// </param>
        /// <param name="accountFactory">
        /// Factory for current account status.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// Throws if name or e-mail is null.
        /// </exception>.
        public override void NewAccount(string name, string email, AbstractAccountFactory accountFactory)
        {
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentNullException(nameof(name));
            }

            if (string.IsNullOrEmpty(email))
            {
                throw new ArgumentNullException(nameof(email));
            }

            AbstractAccount newAccount = accountFactory.GetNewAccount(new NumGenerator());

            newAccount.Name  = name;
            newAccount.Email = email;

            repository.Save(newAccount);
        }
 /// <summary>
 /// Return new bank account.
 /// </summary>
 /// <param name="name">
 /// Holder name.
 /// </param>
 /// <param name="email">
 /// Holder email.
 /// </param>
 /// <param name="accountFactory">
 /// Factory for current account status.
 /// </param>
 public abstract void NewAccount(string name, string email, AbstractAccountFactory accountFactory);