/// <summary>
        /// MultiChainCliClientFactory provides access to a collection of MultiChainCliClients
        /// </summary>
        /// <param name="multiChainCliGenerate">Provides access to Generate (native currency or coins) MultChain Core methods</param>
        /// <param name="multiChainCliOffChain">Provides access to OffChain MultChain Core methods</param>
        /// <param name="multiChainCliControl">Provides access to Control MultChain Core methods</param>
        /// <param name="multiChainCliGeneral">Provides access to General MultChain Core methods</param>
        /// <param name="multiChainCliNetwork">Provides access to Network MultChain Core methods</param>
        /// <param name="multiChainCliUtility">Provides access to Utility MultChain Core methods</param>
        /// <param name="multiChainCliMining">Provides access to Mining MultChain Core methods</param>
        /// <param name="multiChainCliWallet">Provides access to Wallet MultChain Core methods</param>
        /// <param name="multiChainCliForge">Provides access to the custom MultiChain Cli Forge client</param>
        /// <param name="multiChainCliRaw">Provides access to Raw MultChain Core methods</param>
        public MultiChainCliClientFactory(IMultiChainCliGenerate multiChainCliGenerate,
                                          IMultiChainCliOffChain multiChainCliOffChain,
                                          IMultiChainCliControl multiChainCliControl,
                                          IMultiChainCliGeneral multiChainCliGeneral,
                                          IMultiChainCliNetwork multiChainCliNetwork,
                                          IMultiChainCliUtility multiChainCliUtility,
                                          IMultiChainCliMining multiChainCliMining,
                                          IMultiChainCliWallet multiChainCliWallet,
                                          IMultiChainCliForge multiChainCliForge,
                                          IMultiChainCliRaw multiChainCliRaw)
        {
            _clients = new Dictionary <Type, object>();

            _multiChainCliGenerate = multiChainCliGenerate;
            _clients.TryAdd(typeof(IMultiChainCliGenerate), multiChainCliGenerate);

            _multiChainCliOffChain = multiChainCliOffChain;
            _clients.TryAdd(typeof(IMultiChainCliGeneral), multiChainCliOffChain);

            _multiChainCliControl = multiChainCliControl;
            _clients.TryAdd(typeof(IMultiChainCliControl), multiChainCliControl);

            _multiChainCliGeneral = multiChainCliGeneral;
            _clients.TryAdd(typeof(IMultiChainCliGeneral), multiChainCliGeneral);

            _multiChainCliNetwork = multiChainCliNetwork;
            _clients.TryAdd(typeof(IMultiChainCliNetwork), multiChainCliNetwork);

            _multiChainCliUtility = multiChainCliUtility;
            _clients.TryAdd(typeof(IMultiChainCliUtility), multiChainCliUtility);

            _multiChainCliMining = multiChainCliMining;
            _clients.TryAdd(typeof(IMultiChainCliMining), multiChainCliMining);

            _multiChainCliWallet = multiChainCliWallet;
            _clients.TryAdd(typeof(IMultiChainCliWallet), multiChainCliWallet);

            _multiChainCliForge = multiChainCliForge;
            _clients.TryAdd(typeof(IMultiChainCliForge), multiChainCliForge);

            _multiChainCliRaw = multiChainCliRaw;
            _clients.TryAdd(typeof(IMultiChainCliRaw), multiChainCliRaw);
        }
        public OffChainCLIClientInferredTests()
        {
            var provider = new ServiceHelperExplicitSource();

            OffChain = provider.GetService <IMultiChainCliOffChain>();
        }