if (this.hasComposite()) { this.deleteCompositeMember(); }
  public void delete()     throws  GroupDeleteException,            InsufficientPrivilegeException  {    // TODO Refactor into smaller components    StopWatch sw = new StopWatch();    sw.start();    GrouperSession.validate(this.getSession());    PrivilegeResolver.getInstance().canADMIN(this.getSession(), this, this.getSession().getSubject());    try {      Set deletes = new LinkedHashSet();      // And revoke all access privileges      this._revokeAllAccessPrivs();      // And delete all memberships - as root      deletes.addAll(         Membership.deleteAllFieldType(          GrouperSessionFinder.getRootSession(), this, FieldType.LIST        )      );      // Add the group last for good luck          deletes.add(this);      // Preserve name for logging      String name = this.getName();      // And then commit changes to registry      HibernateHelper.delete(deletes);      // TODO info      sw.stop();      EventLog.info(this.getSession(), M.GROUP_DEL + U.q(name), sw);    }    catch (InsufficientPrivilegeException eIP) {      throw new InsufficientPrivilegeException(eIP.getMessage(), eIP);    }    catch (Exception e) {      throw new GroupDeleteException(e.getMessage(), e);    }  } // public void delete()