https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=56270
*p == 'B' ? 1 << 0 : 
            *p == 'V' ? 1 << 1 : 
            *p == 'K' ? 1 << 2 : 
            *p == 'W' ? 1 << 3 : 
            *p == 'z' ? 1 << 4 : 
            *p == 'o' ? 1 << 5 : 
            *p == 'n' ? 1 << 6 : 
            *p == 'd' ? 1 << 7 : 
            *p == 'u' ? 1 << 8 : 
            *p == 'e' ? 1 << 9 : 
            *p == 'f' ? 1 << 10 : 
            *p == 's' ? 1 << 11 : 
            *p == 'm' ? 1 << 12 : 
            *p == 'x' ? 1 << 13 : 
            *p == 'g' ? 1 << 14 : 
            *p == 'h' ? 1 << 15 : 
            *p == 'i' ? 1 << 16 : 
            *p == 'j' ? 1 << 17 : 
            *p == 'k' ? 1 << 18 : 
            (throw std::logic_error("Unknown character in _mst literal"), 0)
        );
    }
    return typ;
}
using Opcode = std::pair<opcodetype, std::vector<unsigned char>>;
template<typename Key> struct Node;
template<typename Key> using NodeRef = std::shared_ptr<const Node<Key>>;
template<typename Key, typename... Args>
NodeRef<Key> MakeNodeRef(Args&&... args) { return std::make_shared<const Node<Key>>(std::forward<Args>(args)...); }
enum class Fragment {