let rec fastq_step ~read ~compiler (pipeline: fastq pipeline) =     let {work_dir; machine ; _ } = compiler in     match pipeline with     | Fastq f -> f     | Concat_text (l: fastq pipeline list) ->       failwith "Compilation of Biokepi.Pipeline.Concat_text: not implemented"     | Gunzip_concat (l: fastq_gz pipeline list) ->       let fastqs =         let rec f =           function           | Fastq_gz t -> t           | With_metadata (metadata_spec, p) ->             apply_with_metadata ~metadata_spec (f p)         in         List.map l ~f in       let result_path = work_dir // to_file_prefix ~read pipeline ^ ".fastq" in       dbg "Result_Path: %S" result_path;       Workflow_utilities.Gunzip.concat ~run_with:machine fastqs ~result_path     | With_metadata (metadata_spec, pipeline) ->       fastq_step ~read ~compiler pipeline |> apply_with_metadata ~metadata_spec