public object GetService(Type serviceType, string contract = null)
        {
            var pair = Tuple.Create(serviceType, contract ?? string.Empty);

            if (!_registry.ContainsKey(pair))
            {
                var res = _container.TryGetExportedValue(serviceType);
                Intercept(res);
                return(res);
            }

            var ret = _registry[pair].Last()();

            Intercept(ret);
            return(ret);
        }