public override IPermission Intersect(IPermission target) { SecurityPermission sp = Cast(target); if (sp == null) { return(null); } if (IsEmpty() || sp.IsEmpty()) { return(null); } if (this.IsUnrestricted() && sp.IsUnrestricted()) { return(new SecurityPermission(PermissionState.Unrestricted)); } if (this.IsUnrestricted()) { return(sp.Copy()); } if (sp.IsUnrestricted()) { return(this.Copy()); } SecurityPermissionFlag f = flags & sp.flags; if (f == SecurityPermissionFlag.NoFlags) { return(null); } else { return(new SecurityPermission(f)); } }