static boolean parseStringCharactersWithEscape(@NotNull String chars,
                                                 boolean textBlock,
                                                 @NotNull StringBuilder out,
                                                 int @Nullable [] sourceOffsets) {
    int index = 0;
    final int outOffset = out.length();
    while (index < chars.length()) {
      char c = chars.charAt(index++);
      if (sourceOffsets != null) {
        sourceOffsets[out.length() - outOffset] = index - 1;
        sourceOffsets[out.length() + 1 - outOffset] = index;
      }
      if (c != '\\') {
        out.append(c);
        continue;
      }
      index = parseEscapedSymbol(false, chars, index, textBlock, out);
      if (index == -1) return false;
      if (sourceOffsets != null) {
        sourceOffsets[out.length() - outOffset] = index;
      }
    }
    return true;
  }
static boolean parseStringCharactersWithEscape(@NotNull String chars,
                                                 boolean textBlock,
                                                 @NotNull StringBuilder out,
                                                 int @Nullable [] sourceOffsets)