1234567891011121314151617181920212223242526272829303132333435363738394041424344moduleValue=Runtime.ValuemoduleDep=Runtime.Testgen_neg.Depletmake_deriving~(cache_on:unit->unit)~(cache_off:unit->unit)=(* Value dependency graph and a reader for it *)letvdg=ref(Dep.Graph.empty())inletread()=!vdgin(* Instruction coverage measurement handler *)letmoduleH:Handler.HANDLER=structincludeHandler.Defaultletinit_spec(_spec:Handler.spec):unit=cache_off()letfinish():unit=cache_on()leton_program(value_program:Value.t):unit=vdg:=Dep.Graph.assemble_graphvalue_programleton_value(value:Value.t):unit=Dep.Graph.add_node~taint:false!vdgvalueleton_value_dependency(value:Value.t)(value_dep:Value.t)(label:Dep.Edges.label):unit=Dep.Graph.add_edge!vdgvaluevalue_deplabelendin(* Return the handler and the reader *)((moduleH:Handler.HANDLER),read)letmake_non_deriving()=(* Value dependency graph and a reader for it *)letvdg=ref(Dep.Graph.empty())inletread()=!vdgin(* Instruction coverage measurement handler *)letmoduleH:Handler.HANDLER=structincludeHandler.Defaultleton_program(value_program:Value.t):unit=vdg:=Dep.Graph.assemble_graphvalue_programendin(* Return the handler and the reader *)((moduleH:Handler.HANDLER),read)letmake~(derive:bool)~(cache_on:unit->unit)~(cache_off:unit->unit)=ifderivethenmake_deriving~cache_on~cache_offelsemake_non_deriving()