private static String escapeJavaStyleString(String str, boolean escapeSingleQuotes) {
   if (str == null) {
     return null;
   }
   try {
     StringPrintWriter writer = new StringPrintWriter(str.length() * 2);
     escapeJavaStyleString(writer, str, escapeSingleQuotes);
     return writer.getString();
   } catch (IOException ioe) {
     // this should never ever happen while writing to a StringWriter
     ioe.printStackTrace();
     return null;
   }
 }
 /**
  * Worker method for the {@link #escapeJavaScript(String)} method.
  *
  * @param str String to escape values in, may be null
  * @param escapeSingleQuotes escapes single quotes if <code>true</code>
  * @param escapeForwardSlash TODO
  * @return the escaped string
  */
 private static String escapeJavaStyleString(
     String str, boolean escapeSingleQuotes, boolean escapeForwardSlash) {
   if (str == null) {
     return null;
   }
   try {
     StringWriter writer = new StringWriter(str.length() * 2);
     escapeJavaStyleString(writer, str, escapeSingleQuotes, escapeForwardSlash);
     return writer.toString();
   } catch (IOException ioe) {
     // this should never ever happen while writing to a StringWriter
     throw new UnhandledException(ioe);
   }
 }
 /**
  * Escapes the characters in a <code>String</code> using Java String rules to a <code>Writer
  * </code>.
  *
  * <p>A <code>null</code> string input has no effect.
  *
  * @see #escapeJava(java.lang.String)
  * @param out Writer to write escaped string into
  * @param str String to escape values in, may be null
  * @throws IllegalArgumentException if the Writer is <code>null</code>
  * @throws IOException if error occurs on underlying Writer
  */
 public static void escapeJava(Writer out, String str) throws IOException {
   escapeJavaStyleString(out, str, false);
 }
 /**
  * Escapes the characters in a <code>String</code> using JavaScript String rules to a <code>Writer
  * </code>.
  *
  * <p>A <code>null</code> string input has no effect.
  *
  * @see #escapeJavaScript(java.lang.String)
  * @param out Writer to write escaped string into
  * @param str String to escape values in, may be null
  * @throws IllegalArgumentException if the Writer is <code>null</code>
  * @throws IOException if error occurs on underlying Writer
  */
 public static void escapeJavaScript(Writer out, String str) throws IOException {
   escapeJavaStyleString(out, str, true);
 }