type ParseFn = fn(&str, Arc<RwLock<Context<'static>>>) -> Result<Model, Box<ParseErrorCollection>>;
/// Runs a roundtrip parse test for one input model using the parsers configured in `config.toml`.
fn roundtrip_test(path: &str, filename: &str, extension: &str) -> Result<(), Box<dyn Error>> {
/// Removes generated and expected artefacts for a roundtrip test directory when accept mode is enabled.
/// Keeps source model files (`.essence`, `.param`) and `config.toml`. Nested directories are not removed,
fn expected_roundtrip_files_for_case(case_name: &str, parse_succeeded: bool) -> BTreeSet<String> {
let serialised = fs::read_to_string(roundtrip_model_json_path(path, case_name, file_type))?;