documented hmm kernel