code: func (hc *halfConn) splitBlock(b *block, n int) (*block, *block) {
  	if len(b.data) <= n {
  		return b, nil
  	}
  	bb := hc.newBlock()
  	bb.resize(len(b.data) - n)
  	copy(bb.data, b.data[n:])
  	b.data = b.data[0:n]
  	return b, bb
  }
docs: // splitBlock splits a block after the first n bytes,
  // returning a block with those n bytes and a
  // block with the remainder.  the latter may be nil.