private static LooseArray DeserializeArray(TextReader reader)
        {
            if (reader.Read() != '[')
            {
                throw new ArgumentException("reader: Does not contain a serialized array.");
            }

            LooseArray array = new LooseArray();

            bool first = true;

            for (;;)
            {
                EatWhitespace(reader);

                if (reader.Peek() == ']')
                {
                    break;
                }

                if (!first)
                {
                    if (reader.Read() != ',')
                    {
                        throw new ArgumentException("reader: Malformed array.");
                    }

                    first = false;
                }

                array.Add(DeserializeObject(reader));
            }

            reader.Read();

            return(array);
        }
        private static void SerializeArray(StringBuilder str, LooseArray array)
        {
            str.Append('[');

            bool comma = false;
            
            foreach (LooseObject obj in array) {
                if (comma)
                    str.Append(',');

                comma = true;

                SerializeObject(str, obj);
            }
            
            str.Append(']');
        }
        private static LooseArray DeserializeArray(TextReader reader)
        {
            if (reader.Read() != '[')
                throw new ArgumentException("reader: Does not contain a serialized array.");

            LooseArray array = new LooseArray();

            bool first = true;
            for (;;) {
                EatWhitespace(reader);

                if (reader.Peek() == ']')
                    break;

                if (!first) {
                    if (reader.Read() != ',')
                        throw new ArgumentException("reader: Malformed array.");

                    first = false;
                }

                array.Add(DeserializeObject(reader));
            }

            reader.Read();

            return array;
        }