let index     ~reference_build     ~index_prefix     ~configuration     ~(run_with : Machine.t) =   let open KEDSL in   let reference_fasta =     Machine.get_reference_genome run_with reference_build     |> Reference_genome.fasta in   let result_dir = Filename.dirname index_prefix in   let version = configuration.Configuration.version in   let hisat_tool =     Machine.get_tool run_with (Configuration.get_tool configuration) in   let build_binary =     match version with     | `V_0_1_6_beta -> "hisat-build"     | `V_2_0_2_beta -> "hisat2-build"   in   let name =     sprintf "%s-%s" build_binary (Filename.basename reference_fasta#product#path) in   let first_index_file =     match version with     | `V_0_1_6_beta -> sprintf "%s.1.bt2" index_prefix     | `V_2_0_2_beta -> sprintf "%s.1.ht2" index_prefix   in   workflow_node ~name     (single_file ~host:(Machine.(as_host run_with)) first_index_file)     ~edges:[       on_failure_activate (Remove.directory ~run_with result_dir);       depends_on reference_fasta;       depends_on Machine.Tool.(ensure hisat_tool);     ]     ~tags:[Target_tags.aligner]     ~make:(Machine.run_big_program run_with ~name              ~self_ids:["hisat""index"]              Program.(                Machine.Tool.(init hisat_tool)                && shf "mkdir %s" result_dir                && shf "%s %s %s"                  build_binary                  reference_fasta#product#path                  index_prefix              ))