LOG.debug(MSG_FEMSHIP_PRO);
GrouperSession.validate(s);
  protected static Set findEffectiveMemberships(    Owner o, String mid, Field f, Owner via, int depth  )    throws MembershipNotFoundException  {    /*     * @caller    private Membership._membershipsToDelete(s, imm)     * @caller    public  MembershipFinder.findEffectiveMemberships(s, g, subj, f, via, depth)      * @filtered  false     * @session   false     */    LOG.debug(MSG_FEMSHIP_PRO);    Set mships = new LinkedHashSet();    try {      Session hs  = HibernateHelper.getSession();      Query   qry = hs.createQuery(        "from Membership as ms where      "        + "     ms.owner_id     = :owner  "        + "and  ms.member_id    = :mid    "        + "and  ms.field.name   = :fname  "        + "and  ms.field.type   = :ftype  "        + "and  ms.via_id       = :via    "        + "and  ms.depth        = :depth"      );      qry.setCacheable(GrouperConfig.QRY_MSF_FEM);      qry.setCacheRegion(GrouperConfig.QCR_MSF_FEM);      qry.setParameter( "owner"   , o                     );      qry.setString(    "mid"     , mid                   ); // FIXME      qry.setString(    "fname"   , f.getName()           );      qry.setString(    "ftype"   , f.getType().toString());      qry.setParameter( "via"     , via                   );      qry.setInteger(   "depth"   , depth                 );      mships.addAll(qry.list());      hs.close();    }    catch (HibernateException eH) {      throw new MembershipNotFoundException(eH.getMessage(), eH);    }    return mships;  } // protected static Set findEffectiveMembership(o, mid, field, via, depth)