codecs

lateinit var codecs: CodecDictionary

What decodes them: the dictionary this scope was made for.

Set once, by bind, the moment that dictionary has been constructed and before the catalog carrying it is published - so it is safe to read without synchronisation, the publication being a @Volatile write that happens after. Nothing can repoint it afterwards, which is what keeps a codec reached through one catalog from resolving through another's.