internal PdfArray ReadArray(IPdfStreamReader streamReader, IPdf pdf)
        {
            var arrayInit = streamReader.Read();

            if (arrayInit != '[')
            {
                throw new InvalidDataException("Unexpected array initializer, expected [");
            }
            var items = new List <PdfObject>();

            streamReader.SeekToNextToken();

            while (true)
            {
                var item = this.ReadObject(streamReader, pdf);

                if (item != null)
                {
                    items.Add(item);
                }
                else
                {
                    //ignore whitespace
                    if (streamReader.PeekIsNextByteWhitespace())
                    {
                        streamReader.Seek(1, SeekOrigin.Current);
                    }
                    else if (streamReader.Peek() == ']')
                    {
                        //we're at the end of the array, do nothing, it gets handled below.
                    }
                    else
                    {
                        throw new InvalidDataException("Unable to parse array, invalid object.");
                    }
                }

                if (streamReader.Peek() == ']')
                {
                    streamReader.Seek(1, SeekOrigin.Current);
                    streamReader.SeekToNextToken();

                    break;
                }
            }

            return(items.ToArray());
        }