class_docstr: an immutable object holding a source code fragment,
  possibly deindenting it.
class_docstr_tok: ["an","immutable","object","holding","a","source","code","fragment",",","possibly","deindenting","it","."]
docstr: return (start, end) tuple which spans the minimal
  statement region which containing the given lineno.
docstr_tok: ["return","(","start",",","end",")","tuple","which","spans","the","minimal","statement","region","which","containing","the","given","lineno","."]
code: def getstatementrange(self, lineno):
      """return (start, end) tuple which spans the minimal
      statement region which containing the given lineno.
      """
      if not (0 <= lineno < len(self)):
          raise IndexError("lineno out of range")
      ast, start, end = getstatementrange_ast(lineno, self)
      return start, end
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import ast
  import inspect
  import linecache
  import sys
  import textwrap
  import tokenize
  import warnings
  from ast import PyCF_ONLY_AST
  from bisect import bisect_right
  import py
  import six
label_desc: Use image node_id 9 for calling the Source obj's underlying member method code with example usage: obj.getstatementrange(lineno) and returns: start,  end