code: func (vs *Set) ChangePower(id crypto.PublicKey, power *big.Int) *big.Int {
  	address := id.GetAddress()
  	// Calculate flow into this validator (positive means in, negative means out)
  	flow := vs.Flow(id, power)
  	vs.totalPower.Add(vs.totalPower, flow)
  
  	if vs.trim && power.Sign() == 0 {
  		delete(vs.publicKeys, address)
  		delete(vs.powers, address)
  	} else {
  		vs.publicKeys[address] = crypto.NewAddressable(id)
  		vs.powers[address] = new(big.Int).Set(power)
  	}
  	return flow
  }
docs: // Add the power of a validator and returns the flow into that validator