code: func Subseed(seed Trytes, index uint64, spongeFunc ...SpongeFunction) (Trits, error) {
  	if err := ValidTrytes(seed); err != nil {
  		return nil, err
  	} else if len(seed) != HashTrinarySize/TrinaryRadix {
  		return nil, ErrInvalidSeed
  	}
  
  	trits, err := TrytesToTrits(seed)
  	if err != nil {
  		return nil, err
  	}
  
  	incrementedSeed := AddTrits(trits, IntToTrits(int64(index)))
  
  	h := GetSpongeFunc(spongeFunc, kerl.NewKerl)
  	defer h.Reset()
  
  	err = h.Absorb(incrementedSeed)
  	if err != nil {
  		return nil, err
  	}
  
  	subseed, err := h.Squeeze(HashTrinarySize)
  	if err != nil {
  		return nil, err
  	}
  	return subseed, err
  }
docs: // Subseed takes a seed and an index and returns the given subseed.
  // Optionally takes the SpongeFunction to use. Default is Kerl.