let rec compile_variant_caller_step ~compiler (pipeline: vcf pipeline) =     let {reference_build; work_dir; machine; _} = compiler in     (* result prefix ignore optimizations *)     let vcf_node =       match pipeline with       | Somatic_variant_caller (som_vc, bam_pair) ->         let (`Normal normal, `Tumor tumor, `Pipeline new_bam_pair) =           compile_bam_pair ~compiler bam_pair in         let result_prefix =           work_dir           // to_file_prefix (Somatic_variant_caller (som_vc, new_bam_pair)) in         dbg "Result_Prefix: %S" result_prefix;         som_vc.Variant_caller.make_target           ~run_with:machine ~input:(Variant_caller.Somatic {normal; tumor})           ~result_prefix ()       | Germline_variant_caller (gvc, bam) ->         let result_prefix = work_dir // to_file_prefix pipeline in         dbg "Result_Prefix: %S" result_prefix;         let input_bam = compile_aligner_step ~compiler bam in         gvc.Variant_caller.make_target           ~run_with:machine ~input:(Variant_caller.Germline input_bam)           ~result_prefix ()       | With_metadata (metadata_spec, p) ->         compile_variant_caller_step ~compiler p         |> apply_with_metadata ~metadata_spec     in     compiler.wrap_vcf_node pipeline vcf_node