code: private List<Match> getBestCombination(final Configuration configuration, final String password)
      {
          this.best_matches.clear();
          this.best_matches_length = 0;
          final List<Match> all_matches = getAllMatches(configuration, password);
          final Map<Integer, Match> brute_force_matches = new HashMap<>();
          for (int i = 0; i < password.length(); i++)
          {
              brute_force_matches.put(i, createBruteForceMatch(password, configuration, i));
          }
  
          final List<Match> good_enough_matches = findGoodEnoughCombination(password, all_matches, brute_force_matches);
  
          if (all_matches == null || all_matches.size() == 0 || isRandom(password, good_enough_matches))
          {
              List<Match> matches = new ArrayList<>();
              backfillBruteForce(password, brute_force_matches, matches);
              Collections.sort(matches, comparator);
              return matches;
          }
          Collections.sort(all_matches, comparator);
  
          try
          {
              return findBestCombination(password, all_matches, brute_force_matches);
          }
          catch (TimeoutException e)
          {
              return good_enough_matches;
          }
      }
docs: Returns the best combination of matches based on multiple methods.  We run the password through the
  {@code findGoodEnoughCombination} method test to see if is considered "random".  If it isn't, we
  run it through the {@code findBestCombination} method, which is much more expensive for large
  passwords.
  
  @param configuration the configuration
  @param password      the password
  @return the best list of matches, sorted by start index.