This interface provides a source for data entries. The implementation
determines the type of the data entries. Typical examples are files or
directories. The source can pump its data entries into a data entry reader
(a "push" model for the entries), which can then optionally read their
contents (a "pull" model for the contents).