public TGpiProvider <T> Query <T>()
        {
            var key = typeof(T);

            if (_Gpis.ContainsKey(key))
            {
                return(_Gpis[key] as TGpiProvider <T>);
            }
            var provider = new TGpiProvider <T>();

            _Gpis.Add(key, provider);
            return(provider);
        }
        private void _Add <TSoul>(TSoul soul)
        {
            var key = typeof(TSoul);

            if (_Gpis.ContainsKey(key))
            {
                _Gpis[key].Add(soul);
            }
            else
            {
                var porvider = new TGpiProvider <TSoul>();
                porvider.Add(soul);
                _Gpis.Add(key, porvider);
            }
        }