code: def update_elements(self, line, column, charcount, docdelta=0):
          
          target = self.charindex(line, column) + charcount
  
          #We are looking for all the instances whose *start* attribute lies
          #after this target. Then we update them all by that amount.
          #However, we need to be careful because of docdelta. If an elements
          #docstring contains the target, we don't want to update it.
          if line < self.contains_index:
              for t in self.types:
                  if self._update_char_check(self.types[t], target, docdelta):
                      self._element_charfix(self.types[t], charcount)
  
              for m in self.members:
                  if self.members[m].start > target:
                      self.members[m].start += charcount
                      self.members[m].end += charcount
  
              self._contains_index = None
          else:
              for iexec in self.executables:
                  if self._update_char_check(self.executables[iexec], target, docdelta):
                      self._element_charfix(self.executables[iexec], charcount)
docs: Updates all the element instances that are children of this module
          to have new start and end charindex values based on an operation that
          was performed on the module source code.
  
          :arg line: the line number of the *start* of the operation.
          :arg column: the column number of the start of the operation.
          :arg charcount: the total character length change from the operation.
          :arg docdelta: the character length of changes made to types/execs
            that are children of the module whose docstrings external to their
            definitions were changed.