/// <summary>
            /// Insert a new horizontal placement from a linked list
            /// based on the comparison of the horizontal position
            /// </summary>
            /// <param name="list">list d'éléments horizontaux successifs</param>
            /// <param name="input">élément horizontal</param>
            public static void Compare(LinkedList <HorizontalPlacementItem> list, HorizontalPlacementItem input)
            {
                LinkedListNode <HorizontalPlacementItem> positiveCurrent = list.First;
                LinkedListNode <HorizontalPlacementItem> negativeCurrent = list.Last;

                while (positiveCurrent != null && positiveCurrent != negativeCurrent)
                {
                    if (HorizontalComparer.Compare(positiveCurrent.Value, input) == 1)
                    {
                        list.AddAfter(positiveCurrent, input);
                        break;
                    }
                    else if (HorizontalComparer.Compare(negativeCurrent.Value, input) == -1)
                    {
                        list.AddBefore(negativeCurrent, input);
                        break;
                    }
                    positiveCurrent = positiveCurrent.Next;
                    negativeCurrent = negativeCurrent.Previous;
                }
                if (positiveCurrent == null || positiveCurrent == negativeCurrent)
                {
                    list.AddLast(input);
                }
            }
            /// <summary>
            /// Insert a placement item into the right horizontal placement item
            /// </summary>
            /// <param name="list">vertical placement</param>
            /// <param name="p">element to place</param>
            public static void Compare(LinkedList <VerticalPlacementItem> list, PlacementItem p)
            {
                VerticalPlacementItem input = new VerticalPlacementItem();

                input.Add(new HorizontalPlacementItem(p));
                LinkedListNode <VerticalPlacementItem> positiveCurrent = list.First;
                LinkedListNode <VerticalPlacementItem> negativeCurrent = list.Last;

                while (positiveCurrent != null && positiveCurrent != negativeCurrent)
                {
                    if (VerticalComparer.Compare(positiveCurrent.Value, input) == 0)
                    {
                        HorizontalComparer.Compare(positiveCurrent.Value.Items, input.Items.First.Value);
                        break;
                    }
                    else if (VerticalComparer.Compare(negativeCurrent.Value, input) == 0)
                    {
                        HorizontalComparer.Compare(negativeCurrent.Value.Items, input.Items.First.Value);
                        break;
                    }
                    else if (VerticalComparer.Compare(positiveCurrent.Value, input) == 1)
                    {
                        list.AddAfter(positiveCurrent, input);
                        break;
                    }
                    else if (VerticalComparer.Compare(negativeCurrent.Value, input) == -1)
                    {
                        list.AddBefore(negativeCurrent, input);
                        break;
                    }
                    positiveCurrent = positiveCurrent.Next;
                    negativeCurrent = negativeCurrent.Previous;
                }
                if (positiveCurrent == null || positiveCurrent == negativeCurrent)
                {
                    list.AddLast(input);
                }
            }