public static TankInstance GetInstance(TankUnikey key)
        {
            IRepository repository;
            IXQueryable tank;

            if (key.TryGetTank(out tank, out repository))
            {
                return(TankInstanceManager.GetInstance(repository, tank, key));
            }
            else
            {
                return(null);
            }
        }
        private static TankInstance GetInstance(IRepository repository, IXQueryable tank, TankUnikey unikey)
        {
            var key = unikey.ToString();

            return(s_instances.GetOrCreate(key, () =>
            {
                var storage = TankInstanceManager.GetRepositoryTankConfigInfoStorage(repository);
                TankInstanceConfigurationInfo configInfo;
                storage.TryGetValue(key, out configInfo);
                var instance = new TankInstance(repository, TankEntity.Create(tank), configInfo);
                storage[key] = instance.ConfigurationInfo;
                return instance;
            }));
        }