/// <summary>
            /// <see cref="ChildGenerator"/> の新しいインスタンスを生成する。
            /// </summary>
            /// <param name="owner">アイテムを生成する対象の <see cref="VirtualizingUniformSizeWrapPanel"/>。</param>
            public ChildGenerator(VirtualizingUniformSizeWrapPanel owner)
            {
                this.owner = owner;

                // ItemContainerGenerator 取得前に InternalChildren にアクセスしないと null になる
                var childrenCount = owner.InternalChildren.Count;
                this.generator = owner.ItemContainerGenerator;

                // TODO input InternalChildren created child.
                // generator=>
                // firstGeneratedIndex
                // lastGeneratedIndex

                var first = int.MaxValue;
                var last = -1;
                for(int i = 0; i < childrenCount; i++)
                {
                    var childPos = new GeneratorPosition(i, 0);
                    var index = generator.IndexFromGeneratorPosition(childPos);

                    first = Math.Min(first, index);
                    last = Math.Max(last, index);
                }

                if (first < int.MaxValue)
                    firstGeneratedIndex = first;
                else
                    firstGeneratedIndex = -1;

                if (last >= 0) lastGeneratedIndex = last;

                Console.WriteLine("F{0}:L{1}", firstGeneratedIndex, lastGeneratedIndex);

            }
            public ChildGenerator(VirtualizingUniformSizeWrapPanel owner, int firstIndex, int endIndex)
            {
                this.owner = owner;

                // ItemContainerGenerator 取得前に InternalChildren にアクセスしないと null になる
                var childrenCount = owner.InternalChildren.Count;
                this.generator = owner.ItemContainerGenerator;

                // TODO input InternalChildren created child.
                // generator=>
                // firstGeneratedIndex
                // lastGeneratedIndex

                firstGeneratedIndex = firstIndex;
                lastGeneratedIndex = endIndex;

                // TODO validate

                Console.WriteLine("F{0}:L{1}", firstGeneratedIndex, lastGeneratedIndex);

            }