internal void RemoveUser(String key, DrawableBase user)
{
if(String.IsNullOrWhiteSpace(key))
throw new ArgumentNullException();
if(user == null)
throw new ArgumentNullException();
if(!Users.ContainsKey(key))
throw new ArgumentException("Attempt to remove a user from an unknown key.");
if(Users[key] == null)
throw new ArgumentException("Attempt to remove an unknown user.");
if(!Users[key].Contains(user))
throw new ArgumentException("Attempt to remove an unknown user.");
Users[key].Remove(user);
//Let the cache policy decide what to do.
ApplyCachePolicyForRemovalOfUser(key);
}