try { Membership.delImmediateMembership(this.s, this, subj, f); GrouperLog.debug(LOG, this.s, msg + ": deleted");
catch (SchemaException eS) { throw new MemberDeleteException(eS.getMessage());
  public void deleteMember(Subject subj, Field f)     throws  InsufficientPrivilegeException,             MemberDeleteException,            SchemaException  {    String  msg = MSG_DM + "'" + f.getName() + "' " + SubjectHelper.getPretty(subj);    GrouperLog.debug(LOG, this.s, msg);    try {      PrivilegeResolver.getInstance().canWriteField(        this.s, this, this.s.getSubject(), f, FieldType.LIST      );      GrouperLog.debug(LOG, s, msg + " can write list");    } catch (InsufficientPrivilegeException eIP) {      GrouperLog.debug(LOG, s, msg + " cannot write list");      try {        this._canOPTOUT(subj, f);        GrouperLog.debug(LOG, s, msg + " can OPTOUT");      }      catch (InsufficientPrivilegeException optinEIP) {        String err = msg + " cannot OPTOUT: " + eIP.getMessage();        GrouperLog.debug(LOG, s, err);        throw new InsufficientPrivilegeException(err);      }    }    try {      Membership.delImmediateMembership(this.s, this, subj, f);      GrouperLog.debug(LOG, this.s, msg + ": deleted");    }    catch (MembershipNotFoundException eMNF) {      // TODO Why don't I throw this directly?      throw new MemberDeleteException(eMNF.getMessage());    }  } // public void deleteMember(subj, f)