private JsonToken ParseNextMember()
        {
            switch (NextClean())
            {
            case ';':
            case ',':
            {
                if (NextClean() == '}')
                {
                    return(Yield(JsonToken.EndObject()));
                }
                break;
            }

            case '}':
                return(Yield(JsonToken.EndObject()));

            default:
                throw new JsonException("Expected a ',' or '}'.");
            }

            _reader.Back();
            string name = Parse().Text;

            return(Yield(JsonToken.Member(name), ParseObjectMemberValueMethod));
        }
        /// <summary>
        /// Parses the first member name of the object or the end of the array
        /// in case of an empty object.
        /// </summary>

        private JsonToken ParseObjectMember()
        {
            char ch = NextClean();

            if (ch == '}')
            {
                return(Yield(JsonToken.EndObject()));
            }

            if (ch == BufferedCharReader.EOF)
            {
                throw new JsonException("An object must end with '}'.");
            }

            _reader.Back();
            string name = Parse().Text;

            return(Yield(JsonToken.Member(name), ParseObjectMemberValueMethod));
        }
 protected override void WriteMemberImpl(string name)
 {
     Write(JsonToken.Member(name));
 }