class_docstr: a immutable object holding a source code fragment,
  possibly deindenting it.
docstr: return a new source object deindented by offset.
  If offset is None then guess an indentation offset from
  the first non-blank line.  Subsequent lines which have a
  lower indentation offset will be copied verbatim as
  they are assumed to be part of multilines.
docstr_tok: ["return","a","new","source","object","deindented","by","offset",".","If","offset","is","None","then","guess","an","indentation","offset","from","the","first","non-blank","line",".","Subsequent","lines","which","have","a","lower","indentation","offset","will","be","copied","verbatim","as","they","are","assumed","to","be","part","of","multilines","."]
code: def deindent(self, offset=None):
      """return a new source object deindented by offset.
      If offset is None then guess an indentation offset from
      the first non-blank line.  Subsequent lines which have a
      lower indentation offset will be copied verbatim as
      they are assumed to be part of multilines.
      """
      # XXX maybe use the tokenizer to properly handle multiline
      #     strings etc.pp?
      newsource = Source()
      newsource.lines[:] = deindent(self.lines, offset)
      return newsource
  
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 11 for calling the Source obj's underlying member method code with example usage: obj.deindent(offset) and returns: newsource