code: def parse(cls, buf: memoryview, params: Params) \
              -> Tuple[Parseable, memoryview]:
          
          for data_type in params.expected:
              try:
                  return data_type.parse(buf, params)
              except NotParseable:
                  pass
          raise UnexpectedType(buf)
docs: Parses the given buffer by attempting to parse the list of
          :attr:`~Params.expected` types until one of them succeeds,
          then returns the parsed object.
  
          Args:
              buf: The bytes containing the data to be parsed.
              params: The parameters used by some parseable types.