namespace Terminal.Gui;
///
/// Interface for supplying data to a on demand as root level nodes are expanded by the
/// user
///
public interface ITreeBuilder
{
/// Returns true if is implemented by this class
///
bool SupportsCanExpand { get; }
///
/// Returns true/false for whether a model has children. This method should be implemented when
/// is an expensive operation otherwise should return false
/// (in which case this method will not be called)
///
///
/// Only implement this method if you have a very fast way of determining whether an object can have children e.g.
/// checking a Type (directories can always be expanded)
///
///
///
bool CanExpand (T toExpand);
///
/// Returns all children of a given which should be added to the tree as new branches
/// underneath it
///
///
///
IEnumerable GetChildren (T forObject);
}