code: def _parse(self, text, i):
          
  
          m = self.start_dict_re.match(text, i)
          if m:
              parsed = m.group(0)
              i += len(parsed)
              return self._parse_dict(text, i)
  
          m = self.start_list_re.match(text, i)
          if m:
              parsed = m.group(0)
              i += len(parsed)
              return self._parse_list(text, i)
  
          m = self.value_re.match(text, i)
          if m:
              parsed = m.group(0)
              i += len(parsed)
              if hasattr(self.current_type, "read"):
                  reader = self.current_type()
                  # Give the escaped value to `read` to be symetrical with
                  # `plistValue` which handles the escaping itself.
                  value = reader.read(m.group(1))
                  return value, i
  
              value = self._trim_value(m.group(1))
  
              if self.current_type in (None, dict, OrderedDict):
                  self.current_type = self._guess_current_type(parsed, value)
  
              if self.current_type == bool:
                  value = bool(int(value))  # bool(u'0') returns True
                  return value, i
  
              value = self.current_type(value)
  
              return value, i
  
          m = self.hex_re.match(text, i)
          if m:
              from glyphsLib.types import BinaryData
  
              parsed, value = m.group(0), m.group(1)
              decoded = BinaryData.fromHex(value)
              i += len(parsed)
              return decoded, i
          else:
              self._fail("Unexpected content", text, i)
docs: Recursive function to parse a single dictionary, list, or value.