docs: public static String obfuscateWith(
  		final BiMap<Character, ObfuscationOperationRule<Character, Character>> rules,
  		final String toObfuscate)
  	{
  		final StringBuilder sb = new StringBuilder();
  		for (int i = 0; i < toObfuscate.length(); i++)
  		{
  			final char currentCharacter = toObfuscate.charAt(i);
  			final Character asCharacter = Character.valueOf(currentCharacter);
  			final String charAsString = Character.toString(currentCharacter);
  			if (rules.containsKey(asCharacter))
  			{
  				final ObfuscationOperationRule<Character, Character> obfuscationOperationRule = rules
  					.get(asCharacter);
  				final Set<Integer> indexes = obfuscationOperationRule.getIndexes();
  				final Operation operation = obfuscationOperationRule.getOperation();
  				if (indexes.contains(Integer.valueOf(i)) && operation != null)
  				{
  					sb.append(Operation.operate(currentCharacter, operation));
  					continue;
  				}
  				final Character replaceWith = obfuscationOperationRule.getReplaceWith();
  				sb.append(replaceWith);
  
  			}
  			else
  			{
  				sb.append(charAsString);
  			}
  		}
  		return sb.toString();
  	}