ErrorLog.error(GrouperSubject.class, E.GSUBJ_NOCREATOR + eSNF0.getMessage());
  private void _addAttrs() {    // TODO Ideally I wouldn't just iterate through the appropriate items in    //      the fields list but I think I need more logic than that    // TODO Attach lists.  Maybe.  Aren't there security issues with    //      that?  We're already ignoring them when it comes to attributes.    try {      Session hs = HibernateHelper.getSession();      hs.refresh(this.g);      hs.close();    }    catch (HibernateException eH) {      String msg = "unable to refresh group subject (" + this.name + "): " + eH.getMessage();      ErrorLog.error(GrouperSubject.class, msg);    }    try {      // Don't bother with any of the create* attrs unless we can find      // the creating subject      Subject creator = this.g.getCreateSubject();      this._addAttr("createSubjectId"   , creator.getId()                   );      this._addAttr("createSubjectType" , creator.getType().getName()       );      this._addAttr("createTime"        , this.g.getCreateTime().toString() );     }    catch (SubjectNotFoundException eSNF0) {      // No creator?    }    try {      // Don't bother with any of the modify* attrs unless we can find      // the modifying subject      Subject modifier = this.g.getModifySubject();      this._addAttr("modifySubjectId"   , modifier.getId()                  );      this._addAttr("modifySubjectType" , modifier.getType().getName()      );      this._addAttr("modifyTime"        , this.g.getModifyTime().toString() );     }    catch (SubjectNotFoundException eSNF1) {      // No modifier?    }    Map       attrs = this.g.getAttributes();    Iterator  iter  = attrs.keySet().iterator();    while (iter.hasNext()) {      String key = (String) iter.next();      this._addAttr(key, (String) attrs.get(key));    }    DebugLog.info(      GrouperSubject.class,       "[" + this.name + "] attached attributes: " + this.attrs.size()    );  } // private void _addAttrs(g)