public DateTime?ReadDate()
        {
            if (mReader == null)
            {
                throw new ObjectDisposedException(null);
            }

            if (mIndex == mCount)
            {
                throw new InvalidOperationException();
            }

            if (mVector[mIndex])
            {
                // FILETIME = 100-nanosecond intervals since January 1, 1601 (UTC)
                var date = mReader.ReadInt64Internal();
                mIndex += 1;
                return(DateTime.FromFileTimeUtc(date));
            }
            else
            {
                mIndex += 1;
                return(null);
            }
        }
        public long?ReadNumber()
        {
            if (mReader == null)
            {
                throw new ObjectDisposedException(null);
            }

            if (mIndex == mCount)
            {
                throw new InvalidOperationException();
            }

            if (mVector[mIndex])
            {
                var number = mReader.ReadInt64Internal();
                mIndex += 1;
                return(number);
            }
            else
            {
                mIndex += 1;
                return(null);
            }
        }