public new void CopyTest()
        {
            Random random    = RandomManager.CreateRandom(SeedVariatorType.CallingMethod);
            int    loopCount = 10;
            int    offset    = random.Next(fieldTypes.Length);

            Type[] sourceTypes;

            Type[] targetTypes = GetTestTypes(loopCount, out sourceTypes, offset);

            Xtensive.Tuples.Tuple source         = Xtensive.Tuples.Tuple.Create(sourceTypes);
            Xtensive.Tuples.Tuple target         = Xtensive.Tuples.Tuple.Create(targetTypes);
            Xtensive.Tuples.Tuple sameTypeTarget = Xtensive.Tuples.Tuple.Create(sourceTypes);

            PopulateData(sourceTypes, source);
            PopulateData(targetTypes, target);
            PopulateData(sourceTypes, sameTypeTarget);

            int startingIndex       = random.Next(fieldTypes.Length * loopCount / 3) + fieldTypes.Length;
            int startingTargetIndex = (random.Next(loopCount / 4) + 1) * fieldTypes.Length + offset + startingIndex % fieldTypes.Length;
            int count = random.Next(fieldTypes.Length * loopCount / 4);

            source.CopyTo(target, startingIndex, startingTargetIndex, count);

            AssertAreSame(source, target, startingIndex, startingTargetIndex, count);

            source.CopyTo(sameTypeTarget, source.Count);

            AssertAreSame(source, sameTypeTarget);
        }
        public void CopyToTest()
        {
            const int iterationCount = 10000000;
            Random    random         = RandomManager.CreateRandom(SeedVariatorType.CallingMethod);

            Xtensive.Tuples.Tuple tuple = Xtensive.Tuples.Tuple.Create(10, 20, 234.456f, 2345.34534d, "aaaaaaaaaaa", DateTime.Now);
            var hashCode = tuple.GetHashCode();
            var copy     = tuple.CreateNew();

            // Warmup
            for (int i = 0; i < iterationCount / 10; i++)
            {
                tuple.CopyTo(copy);
            }

            // Actual run
            TestHelper.CollectGarbage(true);
            // TestLog.Info("Get ready...");
            using (new Measurement("Copying tuples", MeasurementOptions.Log, iterationCount)) {
                for (int i = 0; i < iterationCount; i++)
                {
                    tuple.CopyTo(copy);
                }
            }
        }