Class Repo is the main abstraction of the framework. It is a base class for any repository of files and/or resources. (See section 3.2).
Two abstract methods, getFile(name) and getResource(name), define the interface for creating file and resource objects, but let subclasses decide what logic to use when instantiating the objects. These methods demonstrate the Factory Method design pattern. Both methods let subclasses to throw two kinds of exceptions:
Being a base class for any test data repository, class Repo must provide all utility methods for its subclasses. Test data repositories may need to know their ``outside caller,'' which is defined in section 3.4.1. Therefore, class Repo needs to provide information about the outside caller. (See section 4.5).