code: @Nonnull
    public static <KEYTYPE, DATATYPE extends IHasParent <DATATYPE> & IHasID <KEYTYPE>> DefaultTreeWithID <KEYTYPE, DATATYPE> buildTree (@Nonnull final Collection <? extends DATATYPE> aAll)
    {
      ValueEnforcer.notNull (aAll, "All");
  
      return buildTree (aAll, IParentProvider.parentProviderHasParent ());
    }
docs: A generic method to build a tree of objects.
  
  @param <KEYTYPE>
  The tree key type.
  @param <DATATYPE>
  The tree item value type.
  @param aAll
  A linear list of objects to build the tree from. May not be
  <code>null</code>.
  @return A tree with all the objects. Never <code>null</code>.
  @throws IllegalStateException
  if the hierarchy cannot be determined because an object references
  a parent that is not in the list!