code: def decode_list(self, node, cache, as_map_key):
          
          if node:
              if node[0] == MAP_AS_ARR:
                  # key must be decoded before value for caching to work.
                  returned_dict = {}
                  for k, v in pairs(node[1:]):
                      key = self._decode(k, cache, True)
                      val = self._decode(v, cache, as_map_key)
                      returned_dict[key] = val
                  return transit_types.frozendict(returned_dict)
  
              decoded = self._decode(node[0], cache, as_map_key)
              if isinstance(decoded, Tag):
                  return self.decode_tag(decoded.tag,
                                         self._decode(node[1], cache, as_map_key))
          return tuple(self._decode(x, cache, as_map_key) for x in node)
docs: Special case decodes map-as-array.
          Otherwise lists are treated as Python lists.
  
          Arguments follow the same convention as the top-level 'decode'
          function.