struct   type t = {     name : string;     version : [`V_0_1_6_beta | `V_2_0_2_beta];   }   let to_json {name; version}: Yojson.Basic.json =     `Assoc [       "name"`String name;       "version",       (match version with       |`V_0_1_6_beta -> `String "V_0_1_6_beta"       |`V_2_0_2_beta -> `String "V_2_0_2_beta");     ]   let default_v1 = {name = "default_v1"; version = `V_0_1_6_beta}   let default_v2 = {name = "default_v2"; version = `V_2_0_2_beta}   let get_tool t =     let open Machine.Tool.Default in     match t.version with     |`V_0_1_6_beta -> hisat     |`V_2_0_2_beta -> hisat2   let name t = t.name end