Three files, because there are only three things to do:
- Create a data source by implementing `Source`.
- If it is endless, use the `EndlessTrait` in your implementation.
- Create a readable stream with the `StreamAdapter`.