anchor.diff:          let ptotold =  log_prior pall values
           // initialize iteration number
           let metr_k = 1
  -        Sampler(logl, pall, metr_k, rng, pp.SetValues values, deltas, ltotold, ptotold, false, runalt, runacc)
  -
  -    member x.Probe(isBurnIn:bool) =
  +        Sampler(pall, metr_k, rng, pp.SetValues values, deltas, ltotold, ptotold, false, runalt, runacc)
  +
  +    member x.Probe(isBurnIn:bool, logl: Parameters -> float) =
           let paramcount = pall.Length
           let rng = MT19937(rng)
           let values = Array.copy pp.values
  
positive.code:         let alterable = [for i in 0..paramcount-1 do if pall.[i].delay < metr_k then yield i]
          let freeparamcount = alterable.Length
          if freeparamcount=0 then 
              Sampler(logl, pall, metr_k+1, rng, pp, deltas, ltotold, ptotold, accept, runalt, runacc)
          else
          let alt = // chain_params[i].alt=1 ~ alt |> List.any (fun item -> item=i)
              if freeparamcount=1 then alterable // one parameter always alters
  
negative.code: type SamplerResult = {sampler:Sampler; samples:Sample seq; acceptanceRate: float}
  
  /// An immutable state of Filzbach MCMC sampler.
  and  Sampler private (// utilities
                        pall: ParameterDefinition[],
                        // variables
                        metr_k: int,
  