This is the core class that does all the heavy lifting. By default you don't need to setup anything. There are some extension points for you to use if you want to customise the behavior.
Offers basic abstraction over the JSON config. You can extend it and add your own getters for custom parameters.
ConfigDefinition specifies the bare minimum of what should a config contain.
Handles everything related to generating and reading manifests for tables and files.
Throw this exception whenever an expectation fails and user is able to fix it by supplying different configuration or data. Typical case is invalid parameter in config. Do not use it for any expectation failure, that is out of user's reach. Such case would be when there are insufficient privledges to write a file.