class_docstr: a immutable object holding a source code fragment,
  possibly deindenting it.
code: def __init__(self, *parts, **kwargs):
      self.lines = lines = []
      de = kwargs.get("deindent", True)
      rstrip = kwargs.get("rstrip", True)
      for part in parts:
          if not part:
              partlines = []
          if isinstance(part, Source):
              partlines = part.lines
          elif isinstance(part, (tuple, list)):
              partlines = [x.rstrip("\n") for x in part]
          elif isinstance(part, py.builtin._basestring):
              partlines = part.split("\n")
              if rstrip:
                  while partlines:
                      if partlines[-1].strip():
                          break
                      partlines.pop()
          else:
              partlines = getsource(part, deindent=de).lines
          if de:
              partlines = deindent(partlines)
          lines.extend(partlines)
  
imports: from __future__ import generators
  from bisect import bisect_right
  import sys
  import inspect, tokenize
  import py
  from types import ModuleType
label_desc: Use image node_id 1 to create a new Source object from inherited base classes: object with example: obj = Source()