docs: def consume_item_lazy(rlp, start):
      """Read an item from an RLP string lazily.
  
      If the length prefix announces a string, the string is read; if it
      announces a list, a :class:`LazyList` is created.
  
      :param rlp: the rlp string to read from
      :param start: the position at which to start reading
      :returns: a tuple ``(item, end)`` where ``item`` is the read string or a
                :class:`LazyList` and ``end`` is the position of the first
                unprocessed byte.
      """
      p, t, l, s = consume_length_prefix(rlp, start)
      if t is bytes:
          item, _, end = consume_payload(rlp, p, s, bytes, l)
          return item, end
      else:
          assert t is list
          return LazyList(rlp, s, s + l), s + l