class_docstr: Classical Lisp style singly linked list. Adding elements to the head using cons is O(1).
  Element access is O(k) where k is the position of the element in the list. Taking the
  length of the list is O(n).
  
  Fully supports the Sequence and Hashable protocols including indexing and slicing but
  if you need fast random access go for the PVector instead.
  
  Do not instantiate directly, instead use the factory functions :py:func:`l` or :py:func:`plist` to
  create an instance.
  
  Some examples:
  
  >>> x = plist([1, 2])
  >>> y = x.cons(3)
  >>> x
  plist([1, 2])
  >>> y
  plist([3, 1, 2])
  >>> y.first
  3
  >>> y.rest == x
  True
  >>> y[:2]
  plist([3, 1])
code: def __bool__(self):
      return True
  
imports: from collections.abc import Sequence, Hashable
  from numbers import Integral
  from functools import reduce
  from typing import Generic, TypeVar
label_desc: Use image node_id 2 for calling the PList obj's underlying member method code with example usage: obj.__bool__() and returns: True