code: @Override
      protected String escapeCharacter(char ch, char previousChar) {
          switch (ch) {
              case '"':
                  return "\\\"";
              case '\\':
                  return "\\\\";
              case '\t':
                  return "\\t";
              case '\n':
                  return "\\n";
              case '\r':
                  return "\\r";
              case '\f':
                  return "\\f";
              case '\b':
                  return "\\b";
              case '\u000B': // vertical tab: http://bclary.com/2004/11/07/#a-7.8.4
                  return "\\u000B";
              case '\u2028':
                  return "\\u2028"; // Line separator
              case '\u2029':
                  return "\\u2029"; // Paragraph separator
              case '/':
                  // preserve special handling that exists in JSONObject.quote to improve security if JSON is embedded in HTML document
                  // prevents outputting "</" gets outputted with unicode escaping for the slash
                  if (previousChar == '<') {
                      return "\\u002f"; 
                  }
                  break;
          }
          if(ch < ' ') {
              // escape all other control characters
              return "\\u" + StringGroovyMethods.padLeft(Integer.toHexString(ch), 4, "0");
          }
          return null;
      }
docs: /* (non-Javadoc)
  @see AbstractCharReplacementEncoder#escapeCharacter(char, char)