class_docstr: An immutable object holding a source code fragment.
  
  When using Source(...), the source lines are deindented.
class_docstr_tok: ["An","immutable","object","holding","a","source","code","fragment",".","When","using","Source","(","...",")",",","the","source","lines","are","deindented","."]
code: def __init__(self, obj: object = None) -> None:
      if not obj:
          self.lines: List[str] = []
      elif isinstance(obj, Source):
          self.lines = obj.lines
      elif isinstance(obj, (tuple, list)):
          self.lines = deindent(x.rstrip("\n") for x in obj)
      elif isinstance(obj, str):
          self.lines = deindent(obj.split("\n"))
      else:
          try:
              rawcode = getrawcode(obj)
              src = inspect.getsource(rawcode)
          except TypeError:
              src = inspect.getsource(obj)  # type: ignore[arg-type]
          self.lines = deindent(src.split("\n"))
  
imports: import ast
  import inspect
  import textwrap
  import tokenize
  import types
  import warnings
  from bisect import bisect_right
  from typing import Iterable
  from typing import Iterator
  from typing import List
  from typing import Optional
  from typing import overload
  from typing import Tuple
  from typing import Union
label_desc: Use image node_id 1 to create a new Source object  with example: obj = Source(obj)