public void CanCreateACycledLists()
        {
            var list = new List<LinkedListCustomItem>();
            var current = (LinkedListCustomItem)null;

            for (int i = 0; i < 100; i++)
            {
                var item = new LinkedListCustomItem { Number = i };

                if (current != null)
                {
                    current.Next = item;
                }

                current = item;
                list.Add(item);
            }

            //list[4].Next = list[2];
            var cItem = list[0];
            var count = 0;
            var by4 = 4;
            var by2 = 2;
            LinkedListCustomItem by4Item = null;
            LinkedListCustomItem by2Item = null;

            do
            {
                // do something
                try
                {
                    by4Item = list[by4];
                    by4 += 4;
                }
                catch
                {
                    by4Item = null;
                    by4 -= 4;
                }

                try
                {
                    by2Item = list[by2];
                    by2 += 2;
                }
                catch
                {
                    by2Item = null;
                    by2 -= 2;
                }

                cItem = cItem.Next;
                count++;
            } while (cItem.Next != null && !this.EvaluateCondition(by4Item, by2Item));

            Console.WriteLine(count);
        }
        private bool EvaluateCondition(LinkedListCustomItem by4, LinkedListCustomItem by2)
        {
            var res = false;

            res = ReferenceEquals(by4, by2);

            if (res)
            {
                if (by4 != null)
                {
                    Console.WriteLine(by4.Number);
                }
                if (by2 != null)
                {
                    Console.WriteLine(by2.Number);
                }
            }

            return res;
        }