public void Run(IView contentView, FigmaViewRendererService rendererService)
        {
            var mainNodes = rendererService.NodesProcessed.Where(s => s.FigmaNode.Parent is FigmaCanvas)
                            .ToArray();

            Run(mainNodes, contentView, rendererService);
        }
        public void Run(ProcessedNode[] mainViews, IView contentView, FigmaViewRendererService rendererService)
        {
            var orderedNodes = mainViews
                               .OrderBy(s => ((IAbsoluteBoundingBox)s.FigmaNode).absoluteBoundingBox.Left)
                               .ThenBy(s => ((IAbsoluteBoundingBox)s.FigmaNode).absoluteBoundingBox.Top)
                               .ToArray();

            //We want know the background color of the figma camvas and apply to our scrollview
            var firstNode = orderedNodes.FirstOrDefault();

            if (firstNode == null)
            {
                return;
            }

            var canvas = firstNode.ParentView?.FigmaNode as FigmaCanvas;

            if (canvas != null)
            {
                contentView.BackgroundColor = canvas.backgroundColor;
                if (contentView.Parent is IScrollView scrollview)
                {
                    scrollview.BackgroundColor = canvas.backgroundColor;

                    //we need correct current initial positioning
                    var rectangle = orderedNodes
                                    .Select(s => s.FigmaNode)
                                    .GetBoundRectangle();
                    scrollview.SetContentSize(rectangle.Width + VerticalMargins * 2, rectangle.Height + HorizontalMargins * 2);
                }
            }

            if (UsesConstraints)
            {
                foreach (var node in orderedNodes)
                {
                    rendererService.PropertySetter.Configure(CodeProperties.Constraints,
                                                             node.View, node.FigmaNode, node.ParentView?.View, node.ParentView?.FigmaNode, rendererService);
                }
            }
            else
            {
                var rectangle = orderedNodes
                                .Select(s => s.FigmaNode)
                                .GetBoundRectangle();

                foreach (var node in orderedNodes)
                {
                    //we need correct current initial positioning
                    if (node.FigmaNode is IAbsoluteBoundingBox box)
                    {
                        node.View.SetPosition(-rectangle.X + box.absoluteBoundingBox.X + VerticalMargins, -rectangle.Y + box.absoluteBoundingBox.Y + HorizontalMargins);
                    }
                }
            }
        }