private void WriteEscapedString(ReadOnlySpan <byte> unescapedString)
            {
                while (!unescapedString.IsEmpty)
                {
                    int?indexOfFirstCharacterThatNeedsEscaping = JsonTextWriter.IndexOfCharacterThatNeedsEscaping(unescapedString);
                    if (!indexOfFirstCharacterThatNeedsEscaping.HasValue)
                    {
                        // No escaping needed;
                        indexOfFirstCharacterThatNeedsEscaping = unescapedString.Length;
                    }

                    // Write as much of the string as possible
                    this.jsonTextMemoryWriter.Write(
                        unescapedString.Slice(
                            start: 0,
                            length: indexOfFirstCharacterThatNeedsEscaping.Value));
                    unescapedString = unescapedString.Slice(start: indexOfFirstCharacterThatNeedsEscaping.Value);

                    // Escape the next character if it exists
                    if (!unescapedString.IsEmpty)
                    {
                        byte character = unescapedString[0];
                        unescapedString = unescapedString.Slice(start: 1);

                        switch (character)
                        {
                        case (byte)'\\':
                            this.jsonTextMemoryWriter.Write((byte)'\\');
                            this.jsonTextMemoryWriter.Write((byte)'\\');
                            break;

                        case (byte)'"':
                            this.jsonTextMemoryWriter.Write((byte)'\\');
                            this.jsonTextMemoryWriter.Write((byte)'"');
                            break;

                        case (byte)'/':
                            this.jsonTextMemoryWriter.Write((byte)'\\');
                            this.jsonTextMemoryWriter.Write((byte)'/');
                            break;

                        case (byte)'\b':
                            this.jsonTextMemoryWriter.Write((byte)'\\');
                            this.jsonTextMemoryWriter.Write((byte)'b');
                            break;

                        case (byte)'\f':
                            this.jsonTextMemoryWriter.Write((byte)'\\');
                            this.jsonTextMemoryWriter.Write((byte)'f');
                            break;

                        case (byte)'\n':
                            this.jsonTextMemoryWriter.Write((byte)'\\');
                            this.jsonTextMemoryWriter.Write((byte)'n');
                            break;

                        case (byte)'\r':
                            this.jsonTextMemoryWriter.Write((byte)'\\');
                            this.jsonTextMemoryWriter.Write((byte)'r');
                            break;

                        case (byte)'\t':
                            this.jsonTextMemoryWriter.Write((byte)'\\');
                            this.jsonTextMemoryWriter.Write((byte)'t');
                            break;

                        default:
                            char wideCharToEscape = (char)character;
                            // We got a control character (U+0000 through U+001F).
                            this.jsonTextMemoryWriter.Write((byte)'\\');
                            this.jsonTextMemoryWriter.Write((byte)'u');
                            this.jsonTextMemoryWriter.Write(GetHexDigit((wideCharToEscape >> 12) & 0xF));
                            this.jsonTextMemoryWriter.Write(GetHexDigit((wideCharToEscape >> 8) & 0xF));
                            this.jsonTextMemoryWriter.Write(GetHexDigit((wideCharToEscape >> 4) & 0xF));
                            this.jsonTextMemoryWriter.Write(GetHexDigit((wideCharToEscape >> 0) & 0xF));
                            break;
                        }
                    }
                }
            }