public void Unregister(IDeactivater instance)
            {
                try
                {
                    lockSlim.EnterWriteLock();

                    recentUsedGrains.Remove(instance);
                }
                finally
                {
                    lockSlim.ExitWriteLock();
                }
            }
        public void Unregister(Type grainType, IDeactivater deactivater)
        {
            instances.TryGetValue(grainType, out var byType);

            byType?.Unregister(deactivater);
        }
        public void Register(Type grainType, IDeactivater deactivater, int maxActivations)
        {
            var byType = instances.GetOrAdd(grainType, t => new LastUsedInstances(maxActivations));

            byType.Register(deactivater);
        }