private void MaterializeRow()
            {
                Coordinator currentCoordinator = _shaper.RootCoordinator;

                var depth = 0;
                var haveInitializedChildren = false;

                for (; depth < _current.Length; depth++)
                {
                    // find a coordinator at this depth that currently has data (if any)
                    while (currentCoordinator != null &&
                           !currentCoordinator.CoordinatorFactory.HasData(_shaper))
                    {
                        currentCoordinator = currentCoordinator.Next;
                    }
                    if (null == currentCoordinator)
                    {
                        break;
                    }

                    // check if this row contains a new element for this coordinator
                    if (currentCoordinator.HasNextElement(_shaper))
                    {
                        // if we have children and haven't initialized them yet, do so now
                        if (!haveInitializedChildren &&
                            null != currentCoordinator.Child)
                        {
                            currentCoordinator.Child.ResetCollection(_shaper);
                        }
                        haveInitializedChildren = true;

                        // read the next element
                        currentCoordinator.ReadNextElement(_shaper);

                        // place the coordinator in the result array to indicate there is a new
                        // element at this depth
                        _current[depth] = currentCoordinator;
                    }
                    else
                    {
                        // clear out the coordinator in result array to indicate there is no new
                        // element at this depth
                        _current[depth] = null;
                    }

                    // move to child (in the next iteration we deal with depth + 1
                    currentCoordinator = currentCoordinator.Child;
                }

                // clear out all positions below the depth we reached before we ran out of data
                for (; depth < _current.Length; depth++)
                {
                    _current[depth] = null;
                }
            }
            private void MaterializeRow()
            {
                Coordinator coordinator = (Coordinator)this._shaper.RootCoordinator;
                int         index       = 0;
                bool        flag        = false;

                for (; index < this._current.Length; ++index)
                {
                    while (coordinator != null && !coordinator.CoordinatorFactory.HasData((Shaper)this._shaper))
                    {
                        coordinator = coordinator.Next;
                    }
                    if (coordinator != null)
                    {
                        if (coordinator.HasNextElement((Shaper)this._shaper))
                        {
                            if (!flag && coordinator.Child != null)
                            {
                                coordinator.Child.ResetCollection((Shaper)this._shaper);
                            }
                            flag = true;
                            coordinator.ReadNextElement((Shaper)this._shaper);
                            this._current[index] = coordinator;
                        }
                        else
                        {
                            this._current[index] = (Coordinator)null;
                        }
                        coordinator = coordinator.Child;
                    }
                    else
                    {
                        break;
                    }
                }
                for (; index < this._current.Length; ++index)
                {
                    this._current[index] = (Coordinator)null;
                }
            }