code: func (entries Entries) predecessor(key uint64) (Entry, int) {
  	if len(entries) == 0 {
  		return nil, -1
  	}
  
  	i := entries.search(key)
  	if i == len(entries) {
  		return entries[i-1], i - 1
  	}
  
  	if entries[i].Key() == key {
  		return entries[i], i
  	}
  
  	i--
  
  	if i < 0 {
  		return nil, -1
  	}
  
  	return entries[i], i
  }
docs: // predecessor will return the first entry that has a key
  // less than or equal to the provided key.  Also returned
  // is the index of the find.  Returns nil, -1 if a predecessor
  // does not exist.