code: public static void unescapeHtml(final char[] text, final int offset, final int len, final Writer writer)
                                      throws IOException{
  
          if (writer == null) {
              throw new IllegalArgumentException("Argument 'writer' cannot be null");
          }
  
          final int textLen = (text == null? 0 : text.length);
  
          if (offset < 0 || offset > textLen) {
              throw new IllegalArgumentException(
                      "Invalid (offset, len). offset=" + offset + ", len=" + len + ", text.length=" + textLen);
          }
  
          if (len < 0 || (offset + len) > textLen) {
              throw new IllegalArgumentException(
                      "Invalid (offset, len). offset=" + offset + ", len=" + len + ", text.length=" + textLen);
          }
  
          HtmlEscapeUtil.unescape(text, offset, len, writer);
  
      }
docs: <p>
  Perform an HTML <strong>unescape</strong> operation on a <tt>char[]</tt> input.
  </p>
  <p>
  No additional configuration arguments are required. Unescape operations
  will always perform <em>complete</em> unescape of NCRs (whole HTML5 set supported), decimal
  and hexadecimal references.
  </p>
  <p>
  This method is <strong>thread-safe</strong>.
  </p>
  
  @param text the <tt>char[]</tt> to be unescaped.
  @param offset the position in <tt>text</tt> at which the unescape operation should start.
  @param len the number of characters in <tt>text</tt> that should be unescaped.
  @param writer the <tt>java.io.Writer</tt> to which the unescaped result will be written. Nothing will
  be written at all to this writer if input is <tt>null</tt>.
  @throws IOException if an input/output exception occurs