private void DrawTies(ScoreRendererBase renderer, Note element, double notePositionY)
        {
            if (element.TieType == NoteTieType.Start)
            {
                measurementService.TieStartSystem  = element.Measure?.System;
                measurementService.TieStartPoint   = new Point(scoreService.CursorPositionX + GetNoteheadWidthPx(element, renderer) / 2, notePositionY);
                measurementService.TieStartElement = element;
            }
            else if (element.TieType != NoteTieType.None) //Stop or StopAndStartAnother / Stop lub StopAndStartAnother
            {
                var tieEndpointThickness = renderer.GetEngravingDefault("tieEndpointThickness") ?? 1;
                var tieMidpointThickness = renderer.GetEngravingDefault("tieMidpointThickness") ?? 2;
                var tiePen = new Pen(element.CoalesceColor(renderer), tieEndpointThickness);

                double arcHeight = renderer.LinespacesToPixels(2);
                var    modifierY = element.StemDirection == VerticalDirection.Down ? -1 : 1;
                var    arcStartX = measurementService.TieStartPoint.X;// - element.GetNoteheadWidthPx(renderer) / 2;
                var    arcStartY = measurementService.TieStartPoint.Y + renderer.LinespacesToPixels(1) * modifierY;

                if (renderer.Settings.RenderingMode == ScoreRenderingModes.Panorama || element.Measure?.System == measurementService.TieStartSystem)
                {
                    double arcWidth = scoreService.CursorPositionX - measurementService.TieStartPoint.X + element.GetNoteheadWidthPx(renderer) / 2 - 2; //-2 to modyfikator, żeby łuki się nie krzyżowały
                    DrawTiesInternal(renderer, arcStartX, arcStartY, arcStartY, arcWidth, arcHeight, modifierY, element, tiePen, tieMidpointThickness);
                }
                else
                {
                    //Draw ties at system breaks
                    var firstHalfOfArcWidth = (measurementService.TieStartElement.Measure?.BarlineLocationX ?? measurementService.TieStartSystem.Width)
                                              - measurementService.TieStartElement.TextBlockLocation.X - measurementService.TieStartElement.GetNoteheadWidthPx(renderer) / 2;
                    DrawTiesInternal(renderer, arcStartX, arcStartY, arcStartY + arcHeight * modifierY, firstHalfOfArcWidth, arcHeight, modifierY, measurementService.TieStartElement, tiePen, tieMidpointThickness);

                    var secondHalfOfArcStartX = element.TextBlockLocation.X - 20;
                    var arcStartYSecondHalf   = element.TextBlockLocation.Y + renderer.LinespacesToPixels(1) * modifierY;
                    DrawTiesInternal(renderer, secondHalfOfArcStartX, arcStartYSecondHalf, arcStartYSecondHalf,
                                     element.TextBlockLocation.X - secondHalfOfArcStartX, arcHeight, modifierY, element, tiePen, tieMidpointThickness);
                }

                if (element.TieType == NoteTieType.StopAndStartAnother)
                {
                    measurementService.TieStartPoint = new Point(scoreService.CursorPositionX + 2, notePositionY);
                }
            }
        }