public ConcatenationRopeEnumerator(ConcatenationRope concatenationRope, int start)
        {
            this.initialRope = concatenationRope;
            this.toTraverse  = new RopeDeque();
            this.toTraverse.Add(concatenationRope);
            this.currentRope = null;
            this.initStart   = start;
            this.Init();

            if (start < 0 || start > concatenationRope.Length())
            {
                throw new ArgumentOutOfRangeException("Rope index out of range: " + start);
            }

            this.MoveNext(start);
        }