public static bool CheckMergeConnectivity(MyCubeGrid hitGrid, MyCubeGrid gridToMerge, Vector3I gridOffset)
        {
            // CH: Beware, this funtion seems horribly inefficient! Think twice before using it (e.g. don't use it in a 10000x loop) or optimize it :-)
            MatrixI mergeTransform = hitGrid.CalculateMergeTransform(gridToMerge, gridOffset);
            Quaternion mergeOri;
            mergeTransform.GetBlockOrientation().GetQuaternion(out mergeOri);

            foreach (var block in gridToMerge.GetBlocks())
            {
                Quaternion ori;
                Vector3I pos = Vector3I.Transform(block.Position, mergeTransform);
                block.Orientation.GetQuaternion(out ori);
                //Matrix mergeGridMatrix = Matrix.CreateFromQuaternion(mergeOri);
                //Matrix oriMatrix = Matrix.CreateFromQuaternion(ori);
                //Matrix result = oriMatrix * mergeGridMatrix;
                //Quaternion quatFromMatrix = Quaternion.CreateFromRotationMatrix(result);
                // Seems that quaternion multiplication is reversed to matrix multiplication!
                ori = mergeOri * ori;
				var mountPoints = block.BlockDefinition.GetBuildProgressModelMountPoints(block.BuildLevelRatio);
                if (MyCubeGrid.CheckConnectivity(hitGrid, block.BlockDefinition, mountPoints, ref ori, ref pos))
                    return true;
            }

            return false;
        }