docs: def binary_to_term(data):
      """
      Decode Erlang terms within binary data into Python types
      """
      if not isinstance(data, bytes):
          raise ParseException('not bytes input')
      size = len(data)
      if size <= 1:
          raise ParseException('null input')
      if b_ord(data[0]) != _TAG_VERSION:
          raise ParseException('invalid version')
      try:
          i, term = _binary_to_term(1, data)
          if i != size:
              raise ParseException('unparsed data')
          return term
      except struct.error:
          raise ParseException('missing data')
      except IndexError:
          raise ParseException('missing data')