/** {@inheritDoc} */
 @Override
 public MemberList getMembers() throws DirectoryException {
   Group targetGroup = DirectoryServer.getGroupManager().getGroupInstance(targetGroupDN);
   if (targetGroup == null) {
     LocalizableMessage message =
         ERR_VIRTUAL_STATIC_GROUP_NO_TARGET_GROUP.get(targetGroupDN, groupEntryDN);
     throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), message);
   } else if (targetGroup instanceof VirtualStaticGroup) {
     LocalizableMessage message =
         ERR_VIRTUAL_STATIC_GROUP_TARGET_CANNOT_BE_VIRTUAL.get(groupEntryDN, targetGroupDN);
     throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
   } else {
     return targetGroup.getMembers();
   }
 }
  /** {@inheritDoc} */
  @Override
  public boolean isMember(Entry userEntry, Set<DN> examinedGroups) throws DirectoryException {
    if (!examinedGroups.add(getGroupDN())) {
      return false;
    }

    Group targetGroup = DirectoryServer.getGroupManager().getGroupInstance(targetGroupDN);
    if (targetGroup == null) {
      LocalizableMessage message =
          ERR_VIRTUAL_STATIC_GROUP_NO_TARGET_GROUP.get(targetGroupDN, groupEntryDN);
      throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), message);
    } else if (targetGroup instanceof VirtualStaticGroup) {
      LocalizableMessage message =
          ERR_VIRTUAL_STATIC_GROUP_TARGET_CANNOT_BE_VIRTUAL.get(groupEntryDN, targetGroupDN);
      throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
    } else {
      return targetGroup.isMember(userEntry);
    }
  }