Membership.addImmediateMembership(s, ns, subj, f);
Membership.addImmediateMembership(s, (Object) ns, subj, f);
  public void grantPriv(    GrouperSession s, Stem ns, Subject subj, Privilege priv  )    throws  GrantPrivilegeException,             InsufficientPrivilegeException,            SchemaException  {    GrouperSession.validate(s);    Field   f   = this._getField(priv);    String  msg = MSG_GP + "'" + f + "' " + SubjectHelper.getPretty(subj);    String  err = ERR_GP;    GrouperLog.debug(LOG, s, msg);    try {      PrivilegeResolver.getInstance().canWriteField(        s, ns, s.getSubject(), f, FieldType.NAMING      );      GrouperLog.debug(LOG, s, msg + " can grant priv");    }    catch (InsufficientPrivilegeException eIP) {      GrouperLog.debug(LOG, s, msg + ": " + eIP.getMessage());      throw new InsufficientPrivilegeException(eIP.getMessage());    }    try {      Membership.addImmediateMembership(s, ns, subj, f);    }    catch (MemberAddException eMA) {      GrouperLog.debug(LOG, s, msg + ": " + eMA.getMessage());      throw new GrantPrivilegeException(eMA.getMessage());    }    GrouperLog.debug(LOG, s, msg + ": granted");  } // public void grantPriv(s, ns, subj, priv)