code: func New(keyFunc Comparable) *SkipList {
  	if DefaultMaxLevel <= 0 {
  		panic("skiplist default level must not be zero or negative")
  	}
  
  	return &SkipList{
  		elementNode:    elementNode{next: make([]*Element, DefaultMaxLevel)},
  		prevNodesCache: make([]*elementNode, DefaultMaxLevel),
  		level:          DefaultMaxLevel,
  		keyFunc:        keyFunc,
  		randSource:     defaultSource,
  		reversed:       keyFunc.Descending(),
  	}
  }
docs: // Creates a new skiplist.
  // keyFunc is a func checking the "greater than" logic.
  // If k1 equals k2, keyFunc(k1, k2) and keyFunc(k2, k1) must both be false.
  // For built-in types, keyFunc can be found in skiplist package.
  // For instance, skiplist.Int is for the list with int keys.
  // By default, the list with built-in type key is in ascending order.
  // The keyFunc named as skiplist.IntDesc is for descending key order list.