parameters: (self, reader)
return_statement: return left
docstring: :type reader: ArrayReader
          :rtype: integer
docstring_summary: :type reader: ArrayReader
          :rtype: integer
docstring_tokens: : type reader : ArrayReader : rtype : integer
function: def getIndex(self, reader):
          """
          :type reader: ArrayReader
          :rtype: integer
          """
          left, right = 0, reader.length()-1
          while left < right:
              mid = left + (right-left)//2
              if reader.compareSub(left, mid, mid if (right-left+1)%2 else mid+1, right) >= 0:
                  right = mid
              else:
                  left = mid+1
          return left
function_tokens: def getIndex ( self , reader ) : left , right = 0 , reader . length ( ) - 1 while left < right : mid = left + ( right - left ) // 2 if reader . compareSub ( left , mid , mid if ( right - left + 1 ) % 2 else mid + 1 , right ) >= 0 : right = mid else : left = mid + 1 return left