public async ValueTask <bool> MoveNextColumn()
        {
            if (!_initialised)
            {
                return(false);
            }

            if (_endOfPipe)
            {
                return(false);
            }

            if (_atEndOfLine)
            {
                return(false);
            }

            _valueBuffer.Reset();

            bool complete;

            do
            {
                var readResult = await _pipe.Reader.ReadAsync().ConfigureAwait(false);

                complete = ReadColumn(readResult.Buffer, out var position);

                if (readResult.IsCompleted)
                {
                    _endOfPipe = true;
                    return(false);
                }

                _pipe.Reader.AdvanceTo(position);
            } while (!complete);

            _columnActive = !_endOfPipe;
            _currentColumn++;

            return(!_endOfPipe);
        }