code: func (p *Price) For(payer Payer, size uint32) int64 {
  	price := p.Value
  	if p.PerByte {
  		price *= uint64(size)
  	}
  	if p.Payer == payer {
  		return 0 - int64(price)
  	}
  	return int64(price)
  }
docs: // For gives back the price for a message
  // A protocol provides the message price in absolute value
  // This method then returns the correct signed amount,
  // depending on who pays, which is identified by the `payer` argument:
  // `Send` will pass a `Sender` payer, `Receive` will pass the `Receiver` argument.
  // Thus: If Sending and sender pays, amount positive, otherwise negative
  // If Receiving, and receiver pays, amount positive, otherwise negative