code: private static List<String> translateLeet(final Configuration configuration, final String password)
      {
          final List<String> translations = new ArrayList();
          final TreeMap<Integer, Character[]> replacements = new TreeMap<>();
  
          for (int i = 0; i < password.length(); i++)
          {
              final Character[] replacement = configuration.getLeetTable().get(password.charAt(i));
              if (replacement != null)
              {
                  replacements.put(i, replacement);
              }
          }
  
          // Do not bother continuing if we're going to replace every single character
          if(replacements.keySet().size() == password.length())
              return translations;
  
          if (replacements.size() > 0)
          {
              final char[] password_char = new char[password.length()];
              for (int i = 0; i < password.length(); i++)
              {
                  password_char[i] = password.charAt(i);
              }
              replaceAtIndex(replacements, replacements.firstKey(), password_char, translations);
          }
  
          return translations;
      }
docs: Removes all leet substitutions from the password and returns a list of plain text versions.
  
  @param configuration the configuration file used to estimate entropy.
  @param password      the password to translate from leet.
  @return a list of all combinations of possible leet translations for the password with all leet removed.