public Bounds AlignBounds(TreeImportSettings settings, Bounds bounds)
        {
            var origin        = bounds.min.y;
            var step          = EditorTreeUtility.GetStepAtTreeLevel(bounds, settings, settings.meshDetailLevel);
            var alignedBounds = TreeUtility.GetRoundedAlignedBounds(bounds, bounds.min, step);
            var alignedOrigin = alignedBounds.min.y;
            var peak          = FindPeak();

            var targetCenter = origin + (bounds.size.y / Resolution) * (peak + 0.5f);

            var tmpDst       = float.MaxValue;
            var actualCenter = 0f;

            for (var i = 0; i < (int)(alignedBounds.size.y / step); ++i)
            {
                var pos = alignedOrigin + (i + 0.5f) * step;
                var dst = Mathf.Abs(targetCenter - pos);
                if (dst < tmpDst)
                {
                    actualCenter = pos;
                    tmpDst       = dst;
                }
                else
                {
                    Debug.Log($"Break at i ({actualCenter:F4})");
                    break;
                }
            }


            var diff = targetCenter - actualCenter;

            if (diff > 0)
            {
                diff -= step;
            }

            var height = bounds.max.y - bounds.min.y;

            var alignedMin = alignedBounds.min;

            alignedMin.y     += diff;
            alignedBounds.min = alignedMin;
            Debug.Log($"origin: {origin:F4}, AO: {alignedBounds.min.y:F4}, height: {height:F4}, step: {step:F4}, TC: {targetCenter:F4}, AC: {actualCenter:F4}");

            return(alignedBounds);
        }