docs: def parse(self, type_str):
          """
          Parses a type string into an appropriate instance of
          :class:`~eth_abi.grammar.ABIType`.  If a type string cannot be parsed,
          throws :class:`~eth_abi.exceptions.ParseError`.
  
          :param type_str: The type string to be parsed.
          :returns: An instance of :class:`~eth_abi.grammar.ABIType` containing
              information about the parsed type string.
          """
          if not isinstance(type_str, str):
              raise TypeError('Can only parse string values: got {}'.format(type(type_str)))
  
          try:
              return super().parse(type_str)
          except parsimonious.ParseError as e:
              raise ParseError(e.text, e.pos, e.expr)