There is an issue in the fix.
158 if ((!previousWasEncoded) || (!CharsetUtil.isWhitespace(separator)))
160 matcher.appendReplacement(sb, decoded);
161 previousWasEncoded = true;
in funciton call matcher.appendReplacement( ), if the decoded contains "$", an exception will be thrown:
java.lang.IllegalArgumentException: Illegal group reference
As described in java api doc, public Matcher appendReplacement(StringBuffer sb, String replacement):
Note that backslashes () and dollar signs ($) in the replacement string may cause the results to be different than if it were being treated as a literal replacement string. Dollar signs may be treated as references to captured subsequences as described above, and backslashes are used to escape literal characters in the replacement string.
Here is the temporary fix between line 159 and line 160:
decoded = decoded.replace("
decoded = decoded.replace("$", "