Each permission describes a set of protected operations; to implement policy and enforcement the set operations subset, intersection, and union are defined on each type of permission.
bool IsSubsetOf (CodeAccessPermission permission); // name change from IsSafeSubsetOf() – “safe” confusing
CodeAccessPermission Intersection (CodeAccessPermission permission);
CodeAccessPermission Union (CodeAccessPermission permission);
Since the semantics of each type of permission differ, each permission class must implement the appropriate set operations accordingly.