/// <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);
                }
            }
 /// <summary>
 /// Compare two vertical elements of placement
 /// </summary>
 /// <param name="x">placement item 1</param>
 /// <param name="y">placement item 2</param>
 /// <returns>1 or -1</returns>
 public static int Compare(VerticalPlacementItem x, VerticalPlacementItem y)
 {
     return(y.Compare(x));
 }