code: def position_for_index(self, index):
          
          if not self.elements:
              return 0
  
          start = 0
          end = int(len(self.elements) / 2)
          slice_length = end - start
          pivot_point = int(slice_length / 2)
          pivot_index = self.elements[pivot_point * 2]
  
          while slice_length > 1:
              if pivot_index < index:
                  start = pivot_point
              elif pivot_index > index:
                  end = pivot_point
              else:
                  break
  
              slice_length = end - start
              pivot_point = start + int(slice_length / 2)
              pivot_index = self.elements[pivot_point * 2]
  
          if pivot_index == index:
              return pivot_point * 2
          elif pivot_index > index:
              return pivot_point * 2
          else:
              return (pivot_point + 1) * 2
docs: Calculates the position within the vector to insert a given index.
  
          This is used internally by insert and upsert. If there are duplicate
          indexes then the position is returned as if the value for that index
          were to be updated, but it is the callers responsibility to check
          whether there is a duplicate at that index