code: func (s *sstack) Push(data interface{}) {
  	if s.size == s.capacity {
  		s.active = make([]*item, blockSize)
  		s.blocks = append(s.blocks, s.active)
  		s.capacity += blockSize
  		s.offset = 0
  	} else if s.offset == blockSize {
  		s.active = s.blocks[s.size/blockSize]
  		s.offset = 0
  	}
  	if s.setIndex != nil {
  		s.setIndex(data.(*item).value, s.size)
  	}
  	s.active[s.offset] = data.(*item)
  	s.offset++
  	s.size++
  }
docs: // Pushes a value onto the stack, expanding it if necessary. Required by
  // heap.Interface.