class_docstr: Simple linked list, where only elements controls removal of them.
  
  When going out of a `let` block, the pushed environment should be destroyed
  and not just the last element of the stack.
class_docstr_tok: ["Simple","linked","list",",","where","only","elements","controls","removal","of","them",".","When","going","out","of","a","`","let","`","block",",","the","pushed","environment","should","be","destroyed","and","not","just","the","last","element","of","the","stack","."]
code: def push(self, val):
      element = ListElement(self, val, prv=self.end)
  
      # is first element to add?
      if self.start is None:
          self.start = element
      else:
          self.end.nxt = element
  
      self.end = element
      return self.end
  
imports: import functools
  import inspect
  import itertools
  from operator import attrgetter
  from typing import Any
  from gluonts.pydantic import pydantic, deep_update
label_desc: Use image node_id 2 for calling the LinkedList obj's underlying member method code with example usage: obj.push(val) and returns: self