docs: public static String disentangle(
  		final BiMap<Character, ObfuscationRule<Character, Character>> rules,
  		final String obfuscated)
  	{
  		boolean processed = false;
  		char currentChar;
  		Character currentCharacter;
  		final StringBuilder sb = new StringBuilder();
  		for (int i = 0; i < obfuscated.length(); i++)
  		{
  			currentChar = obfuscated.charAt(i);
  			currentCharacter = Character.valueOf(currentChar);
  
  			for (final Entry<Character, ObfuscationRule<Character, Character>> entry : rules
  				.entrySet())
  			{
  				ObfuscationRule<Character, Character> obfuscationRule = entry.getValue();
  				Character replaceWith = obfuscationRule.getReplaceWith();
  				Character character = obfuscationRule.getCharacter();
  				if (currentCharacter.equals(replaceWith) && rules.containsKey(replaceWith))
  				{
  					sb.append(character);
  					processed = true;
  					break;
  				}
  			}
  			if (!processed)
  			{
  				sb.append(currentChar);
  			}
  			processed = false;
  		}
  		return sb.toString();
  	}