docs: def recoverString(self, strIndex, withIndex=False):
          '''
          This will return the string that starts at the given index
          @param strIndex - the index of the string we want to recover
          @return - string that we found starting at the specified '$' index
          '''
          retNums = []
          indices = []
          
          #figure out the first hop backwards
          currIndex = strIndex
          prevChar = self.getCharAtIndex(currIndex)
          currIndex = self.getOccurrenceOfCharAtIndex(prevChar, currIndex)
          
          #while we haven't looped back to the start
          while currIndex != strIndex:
              #update the string
              retNums.append(prevChar)
              if withIndex:
                  indices.append(currIndex)
          
              #figure out where to go from here
              prevChar = self.getCharAtIndex(currIndex)
              currIndex = self.getOccurrenceOfCharAtIndex(prevChar, currIndex)
          
          for i in xrange(0, self.vcLen):
              if strIndex < self.endIndex[i]:
                  retNums.append(i)
                  break
                  
          if withIndex:
              indices.append(strIndex)
          
          #reverse the numbers, convert to characters, and join them in to a single sequence
          ret = ''.join(self.numToChar[retNums[::-1]])
          
          #return what we found
          if withIndex:
              return (ret, indices[::-1])
          else:
              return ret