protected internal virtual void ReturnFreeClient(INetworkFileSystemClient client, bool forBinary)
        {
            TimedReferenceDictionary <INetworkFileSystemClient, INetworkFileSystemClient> cache;

            if (forBinary)
            {
                cache = this.freeClientsForBinaryAccess;
            }
            else
            {
                cache = this.freeClients;
            }

            if (!client.Connected)
            {
                lock (cache)
                {
                    cache.Clear();
                }

                return;
            }

            lock (cache)
            {
                if (client.Connected)
                {
                    if (!cache.ContainsKey(client))
                    {
                        cache[client] = client;
                    }
                }
            }
        }
		protected internal virtual void ReturnFreeClient(INetworkFileSystemClient client, bool forBinary)
		{
			TimedReferenceDictionary<INetworkFileSystemClient, INetworkFileSystemClient> cache;

			if (forBinary)
			{
				cache = this.freeClientsForBinaryAccess;
			}
			else
			{
				cache = this.freeClients;
			}

			if (!client.Connected)
			{				
				lock (cache)
				{
					cache.Clear();
				}

				return;
			}

			lock (cache)
			{
				if (client.Connected)
				{
					if (!cache.ContainsKey(client))
					{
						cache[client] = client;
					}
				}
			}
		}
			protected internal FreeClientContext(NetworkFileSystem fileSystem, INetworkFileSystemClient client, bool forBinary)
			{
				this.forBinary = forBinary;
				this.fileSystem = fileSystem;
				this.NetworkFileSystemClient = client;				
			}
 protected internal FreeClientContext(NetworkFileSystem fileSystem, INetworkFileSystemClient client, bool forBinary)
 {
     this.forBinary  = forBinary;
     this.fileSystem = fileSystem;
     this.NetworkFileSystemClient = client;
 }