public override bool Equals(object obj)
{
IPermission perm = obj as IPermission;
if (obj != null && perm == null)
return false;
if (!IsSubsetOf(perm))
return false;
if (perm != null && !perm.IsSubsetOf(this))
return false;
return true;
}