docs: public LdapSearcher search(String context, String filterExpr, Object... filterArgs) {
          searchResults.clear();
  
          LdapContext ldapContext = null;
          NamingEnumeration<SearchResult> ldapResult = null;
          try {
              ldapContext = buildLdapContext();
              ldapResult = ldapContext.search(context, filterExpr, filterArgs, createSearchControls());
              while (ldapResult.hasMore()) {
                  searchResults.add(ldapResult.next());
              }
          } catch (NamingException ex) {
              throw new RuntimeException("LDAP search has failed", ex);
          } finally {
              if (ldapResult != null) {
                  try {
                      ldapResult.close();
                  } catch (NamingException ex) {
                      log.error("Failed to close LDAP results enumeration", ex);
                  }
              }
              if (ldapContext != null) {
                  try {
                      ldapContext.close();
                  } catch (NamingException ex) {
                      log.error("Failed to close LDAP context", ex);
                  }
              }
          }
  
          return this;
      }