code: func NaturalLess(s, t string) bool {
  	sItr := chunkIter{base: s, pos: 0}
  	tItr := chunkIter{base: t, pos: 0}
  
  	for sItr.hasNext() && tItr.hasNext() {
  		sChunk := sItr.nextChunk()
  		tChunk := tItr.nextChunk()
  
  		res := compareChunks(sChunk, tChunk)
  
  		if 0 == res {
  			continue
  		}
  
  		return res < 0
  	}
  
  	return tItr.hasNext() && !sItr.hasNext()
  }
docs: // NaturalLess compares strings lexicographically *except* substrings of numbers are sorted numerically