code: def paranoidclass(cls):
      
      for methname in dir(cls):
          meth = getattr(cls, methname)
          if U.has_fun_prop(meth, "argtypes"):
              argtypes = U.get_fun_prop(meth, "argtypes")
              if "self" in argtypes and isinstance(argtypes["self"], T.Self):
                  argtypes["self"] = T.Generic(cls)
                  U.set_fun_prop(meth, "argtypes", argtypes) # TODO Not necessary because of reference
          if U.has_fun_prop(meth, "returntype"):
              if isinstance(U.get_fun_prop(meth, "returntype"), T.Self):
                  U.set_fun_prop(meth, "returntype", T.Generic(cls))
      return cls
docs: A class decorator to specify that class methods contain paranoid decorators.
  
      Example usage:
  
        | @paranoidclass
        | class Point:
        |     def __init__(self, x, y):
        |         ...
        |     @returns(Number)
        |     def distance_from_zero():
        |         ...