GrouperLog.debug(LOG, s, msg + "system maintained");
  protected void canPrivDispatch(    GrouperSession s, Group g, Subject subj, Privilege priv  )    throws  InsufficientPrivilegeException,            SchemaException  {    String msg = "canPrivDispatch '" + priv.getName().toUpperCase() + "': ";    if      (priv.equals(AccessPrivilege.ADMIN))  {       GrouperLog.debug(LOG, s, msg + "canADMIN");      this.canADMIN(s, g, subj);    }    else if (priv.equals(AccessPrivilege.OPTIN))  {      GrouperLog.debug(LOG, s, msg + "canOPTIN");      this.canOPTIN(s, g, subj);    }    else if (priv.equals(AccessPrivilege.OPTOUT)) {      GrouperLog.debug(LOG, s, msg + "canOPTOUT");      this.canOPTOUT(s, g, subj);    }    else if (priv.equals(AccessPrivilege.READ))   {      GrouperLog.debug(LOG, s, msg + "canREAD");      this.canREAD(s, g, subj);    }    else if (priv.equals(AccessPrivilege.UPDATE)) {      GrouperLog.debug(LOG, s, msg + "canUPDATE");      this.canUPDATE(s, g, subj);    }    else if (priv.equals(AccessPrivilege.VIEW))   {      GrouperLog.debug(LOG, s, msg + "canVIEW");      this.canVIEW(s, g, subj);    }    else if (priv.equals(AccessPrivilege.SYSTEM))  {      GrouperLog.debug(LOG, s, msg + "system maintained");      throw new InsufficientPrivilegeException("system maintained");    }    else {      throw new SchemaException("unknown access privilege: " + priv);    }  } // protected void canPrivDispatch(s, g, subj, priv)