public DataObjectArray Parse()
        {
            DataObjectArray array = new DataObjectArray();

            DiscardToken(TokenType.ArrayStart);

            Token next = _peekableStream.Peek();

            while (next.Type != TokenType.ArrayEnd)
            {
                if (next.Type == TokenType.ArrayStart)
                {
                    array.Add(Parse());
                }
                else
                {
                    Debug.Log(_peekableStream.Peek().Value);
                    array.Add(new DataObjectFlexible(_peekableStream.Pop().Value));
                }

                next = _peekableStream.Peek();

                if (next.Type != TokenType.ArrayEnd)
                {
                    DiscardToken(TokenType.SequenceSeperator);
                }
                else if (next.Type == TokenType.ArrayEnd)
                {
                    break;
                }

                next = _peekableStream.Peek();
            }

            DiscardToken(TokenType.ArrayEnd);
            return(array);
        }