code: func (s *BytesStore) reverse(srcPos, destPos int64) {
  	assert(srcPos < destPos)
  	assert(destPos < s.position())
  	// fmt.Printf("reverse src=%v dest=%v\n", srcPos, destPos)
  
  	srcBlockIndex := int(srcPos >> s.blockBits)
  	src := int(srcPos & int64(s.blockMask))
  	srcBlock := s.blocks[srcBlockIndex]
  
  	destBlockIndex := int(destPos >> s.blockBits)
  	dest := int(destPos & int64(s.blockMask))
  	destBlock := s.blocks[destBlockIndex]
  
  	// fmt.Printf("  srcBlock=%v destBlock=%v\n", srcBlockIndex, destBlockIndex)
  
  	limit := int((destPos - srcPos + 1) / 2)
  	for i := 0; i < limit; i++ {
  		// fmt.Printf("  cycle src=%v dest=%v\n", src, dest)
  		srcBlock[src], destBlock[dest] = destBlock[dest], srcBlock[src]
  		if src++; src == int(s.blockSize) {
  			srcBlockIndex++
  			srcBlock = s.blocks[srcBlockIndex]
  			fmt.Printf("  set destBlock=%v srcBlock=%v\n", destBlock, srcBlock)
  			src = 0
  		}
  
  		if dest--; dest == -1 {
  			destBlockIndex--
  			destBlock = s.blocks[destBlockIndex]
  			fmt.Printf("  set destBlock=%v srcBlock=%v\n", destBlock, srcBlock)
  			dest = int(s.blockSize - 1)
  		}
  	}
  }
docs: /* Reverse from srcPos, inclusive, to destPos, inclusive. */