class_docstr: This implements partial flexbuffer deserialization to be able
  to read custom options. It is not intended to be a general
  purpose flexbuffer deserializer and as such only supports a
  limited number of types and assumes the data is a flat map.
docstr: Decodes the flexbuffer type vector. Map keys are stored in this form
docstr_tok: ["Decodes","the","flexbuffer","type","vector",".","Map","keys","are","stored","in","this","form"]
code: def decode_keys(self, end, size, byte_width):
      """Decodes the flexbuffer type vector. Map keys are stored in this form"""
      # Keys are strings here. The format is all strings separated by null, followed by back
      # offsets for each of the string. For example, (str1)\0(str1)\0(offset1)(offset2) The end
      # pointer is pointing at the end of all strings
      keys = list()
      for i in range(0, size):
          offset_pos = end + i * byte_width
          start_index = self.indirect_jump(offset_pos, byte_width)
          str_size = self.buffer[start_index:].find(b"\0")
          assert str_size != -1
          s = self.buffer[start_index : start_index + str_size].decode(
              "utf-8"
          )
          keys.append(s)
      return keys
  
file_path: tvm/python/tvm/relay/frontend/tflite_flexbuffer.py
imports: import struct
  from enum import IntEnum
label_desc: Use image node_id 3 for calling the FlexBufferDecoder obj's underlying member method code with example usage: obj.decode_keys(end, size, byte_width) and returns: keys