type moveToFrontDecoder … // newMTFDecoder creates a move-to-front decoder with an explicit initial list // of symbols. func newMTFDecoder(symbols []byte) moveToFrontDecoder { … } // newMTFDecoderWithRange creates a move-to-front decoder with an initial // symbol list of 0...n-1. func newMTFDecoderWithRange(n int) moveToFrontDecoder { … } func (m moveToFrontDecoder) Decode(n int) (b byte) { … } // First returns the symbol at the front of the list. func (m moveToFrontDecoder) First() byte { … }