// ------------------------------------------
 // | For failures due to insufficient grant |
 // ------------------------------------------
 public SecurityException(string message, AssemblyName assemblyName, PermissionSet grant, PermissionSet refused, MethodInfo method, SecurityAction action, Object demanded, IPermission permThatFailed, Evidence evidence)
     : base(message)
 {
     PermissionSet.s_fullTrust.Assert();
     SetErrorCode(System.__HResults.COR_E_SECURITY);
     Action = action;
     if(permThatFailed != null)
         m_typeOfPermissionThatFailed = permThatFailed.GetType();
     FirstPermissionThatFailed = permThatFailed;
     Demanded = demanded;
     m_granted = (grant == null ? "" : grant.ToXml().ToString());
     m_refused = (refused == null ? "" : refused.ToXml().ToString());
     m_denied = "";
     m_permitOnly = "";
     m_assemblyName = assemblyName;
     Method = method;
     m_url = "";
     m_zone = SecurityZone.NoZone;
     if(evidence != null)
     {
         Url url = (Url)evidence.FindType(typeof(Url));
         if(url != null)
             m_url = url.GetURLString().ToString();
         Zone zone = (Zone)evidence.FindType(typeof(Zone));
         if(zone != null)
             m_zone = zone.SecurityZone;
     }
     m_debugString = this.ToString(true, false);
 }