/// <summary>
 /// Returns a sequence of two list items.
 /// </summary>
 public static IEnumerable <ComponentListItem> Append(this ComponentListItem first, ComponentListItem second) =>
 Enumerable.Empty <ComponentListItem>().Append(first).Append(second);
 /// <summary>
 /// Creates a line-list item from this general list item. If you don't need to pass any arguments, don't use this method; general list items are implicitly
 /// converted to line-list items.
 /// </summary>
 /// <param name="item"></param>
 /// <param name="verticalAlignment">The vertical alignment of the item.</param>
 /// <param name="width">The width of the item.</param>
 public static LineListItem ToLineListItem(
     this ComponentListItem item, FlexboxVerticalAlignment verticalAlignment = FlexboxVerticalAlignment.NotSpecified, ContentBasedLength width = null) =>
 new LineListItem(() => item.GetItemAndComponent(FlexboxVerticalAlignmentStatics.Class(verticalAlignment), width));
 /// <summary>
 /// Concatenates list items.
 /// </summary>
 public static IEnumerable <ComponentListItem> Concat(this ComponentListItem first, IEnumerable <ComponentListItem> second) => second.Prepend(first);
 /// <summary>
 /// Concatenates line-list items.
 /// </summary>
 public static IEnumerable <LineListItem> ConcatLineListItems(this ComponentListItem item, IEnumerable <LineListItem> lineListItems) =>
 ((LineListItem)item).Concat(lineListItems);
 /// <summary>
 /// Returns a sequence of two line-list items.
 /// </summary>
 public static IEnumerable <LineListItem> AppendLineListItem(this ComponentListItem item, LineListItem lineListItem) =>
 ((LineListItem)item).Append(lineListItem);
 /// <summary>
 /// Creates a line-list-item collection containing only this general list item.
 /// </summary>
 /// <param name="item"></param>
 public static IReadOnlyCollection <LineListItem> ToLineListItemCollection(this ComponentListItem item) => ((LineListItem)item).ToCollection();
 /// <summary>
 /// Returns a sequence of two wrapping-list items.
 /// </summary>
 public static IEnumerable <WrappingListItem> AppendWrappingListItem(this ComponentListItem item, WrappingListItem wrappingListItem) =>
 ((WrappingListItem)item).Append(wrappingListItem);
 /// <summary>
 /// Concatenates wrapping-list items.
 /// </summary>
 public static IEnumerable <WrappingListItem> ConcatWrappingListItems(this ComponentListItem item, IEnumerable <WrappingListItem> wrappingListItems) =>
 ((WrappingListItem)item).Concat(wrappingListItems);
 /// <summary>
 /// Creates a wrapping-list-item collection containing only this general list item.
 /// </summary>
 /// <param name="item"></param>
 public static IReadOnlyCollection <WrappingListItem> ToWrappingListItemCollection(this ComponentListItem item) =>
 ((WrappingListItem)item).ToCollection();
 /// <summary>
 /// Creates a wrapping-list item from this general list item. If you don't need to pass any arguments, don't use this method; general list items are
 /// implicitly converted to wrapping-list items.
 /// </summary>
 /// <param name="item"></param>
 /// <param name="verticalAlignment">The vertical alignment of the item.</param>
 /// <param name="width">The width of the item.</param>
 public static WrappingListItem ToWrappingListItem(
     this ComponentListItem item, FlexboxVerticalAlignment verticalAlignment = FlexboxVerticalAlignment.NotSpecified, ContentBasedLength width = null)
 {
     return(new WrappingListItem(() => item.GetItemAndComponent(FlexboxVerticalAlignmentStatics.Class(verticalAlignment), width)));
 }