public static void PackGenericArraySegmentTo(Packer packer, object objectTree, IMessagePackSingleObjectSerializer itemSerializer)
        {
            var count  = ( int )objectTree.GetType().GetProperty("Count").GetGetMethod().InvokePreservingExceptionType(objectTree);
            var offset = ( int )objectTree.GetType().GetProperty("Offset").GetGetMethod().InvokePreservingExceptionType(objectTree);
            var array  = objectTree.GetType().GetProperty("Array").GetGetMethod().InvokePreservingExceptionType(objectTree) as Array;

            packer.PackArrayHeader(count);
            for (int i = 0; i < count; i++)
            {
                itemSerializer.PackTo(packer, array.GetValue(i + offset));
            }
        }