code: def _iterateDocumentCharsBackward(self, block, startColumnIndex):
          
          # Chars in the start line
          endTime = time.time() + self._MAX_SEARCH_TIME_SEC
          for columnIndex, char in reversed(list(enumerate(block.text()[:startColumnIndex]))):
              yield block, columnIndex, char
          block = block.previous()
  
          # Next lines
          while block.isValid():
              for columnIndex, char in reversed(list(enumerate(block.text()))):
                  yield block, columnIndex, char
  
              if time.time() > endTime:
                  raise _TimeoutException('Time is over')
  
              block = block.previous()
docs: Traverse document forward. Yield (block, columnIndex, char)
          Raise _TimeoutException if time is over