/// <summary>
 /// Creates a new instance of <see cref="TieredList{T}"/> that
 /// is empty but has an initial capacity of the amount specified.
 /// </summary>
 /// <param name="item">
 /// The object represented by this <see cref="TieredListItem{T}"/>.
 /// </param>
 /// <param name="capacity">
 /// The initial capacity of the new list.
 /// </param>
 public TieredListItem(T item, int capacity)
 {
     Item     = item;
     Children = new TieredList <T>(this, capacity);
 }
 /// <summary>
 /// Creates a new instance of <see cref="TieredList{T}"/> that
 /// is empty but has an initial capacity of the amount specified.
 /// </summary>
 /// <param name="item">
 /// The object represented by this <see cref="TieredListItem{T}"/>.
 /// </param>
 /// <param name="parent">
 /// The <see cref="TieredListItem{T}"/> containing this object.
 /// </param>
 /// <param name="capacity">
 /// The initial capacity of the new list.
 /// </param>
 public TieredListItem(T item, TieredListItem <T> parent, int capacity)
 {
     Item     = item;
     Parent   = parent;
     Children = new TieredList <T>(this, capacity);
 }
 /// <summary>
 /// Creates a new instance of <see cref="TieredList{T}"/>.
 /// </summary>
 /// <param name="item">
 /// The object represented by this <see cref="TieredListItem{T}"/>.
 /// </param>
 /// <param name="parent">
 /// The <see cref="TieredListItem{T}"/> containing this object.
 /// </param>
 public TieredListItem(T item, TieredListItem <T> parent)
 {
     Item     = item;
     Parent   = parent;
     Children = new TieredList <T>(this);
 }
 /// <summary>
 /// Creates a new instance of <see cref="TieredList{T}"/>.
 /// </summary>
 /// <param name="item">
 /// The object represented by this <see cref="TieredListItem{T}"/>.
 /// </param>
 public TieredListItem(T item)
 {
     Item     = item;
     Children = new TieredList <T>(this);
 }
 /// <summary>
 /// Creates a new instance of <see cref="TieredList{T}"/>.
 /// </summary>
 public TieredListItem()
 {
     Children = new TieredList <T>(this);
 }
 /// <summary>
 /// Creates a new instance of <see cref="TieredList{T}"/> that
 /// is populated with items copied from the specified collection.
 /// </summary>
 /// <param name="item">
 /// The object represented by this <see cref="TieredListItem{T}"/>.
 /// </param>
 /// <param name="parent">
 /// The <see cref="TieredListItem{T}"/> containing this object.
 /// </param>
 /// <param name="children">
 /// The collection whose items are copied to the new list.
 /// </param>
 public TieredListItem(T item, TieredListItem <T> parent, IEnumerable <TieredListItem <T> > children)
 {
     Item     = item;
     Parent   = parent;
     Children = new TieredList <T>(this, children.Cast <ITieredListItem <T> >());
 }
 /// <summary>
 /// Creates a new instance of <see cref="TieredList{T}"/> that
 /// is populated with items copied from the specified collection.
 /// </summary>
 /// <param name="item">
 /// The object represented by this <see cref="TieredListItem{T}"/>.
 /// </param>
 /// <param name="parent">
 /// The <see cref="TieredListItem{T}"/> containing this object.
 /// </param>
 /// <param name="children">
 /// The collection whose items are copied to the new list.
 /// </param>
 public TieredListItem(T item, TieredListItem <T> parent, IEnumerable <T> children)
 {
     Item     = item;
     Parent   = parent;
     Children = new TieredList <T>(this, children.Select(child => new TieredListItem <T>(child) as ITieredListItem <T>));
 }