code: func (ah *Accounting) Send(peer *Peer, size uint32, msg interface{}) error {
  	// get the price for a message (through the protocol spec)
  	price := ah.Price(msg)
  	// this message doesn't need accounting
  	if price == nil {
  		return nil
  	}
  	// evaluate the price for sending messages
  	costToLocalNode := price.For(Sender, size)
  	// do the accounting
  	err := ah.Add(costToLocalNode, peer)
  	// record metrics: just increase counters for user-facing metrics
  	ah.doMetrics(costToLocalNode, size, err)
  	return err
  }
docs: // Send takes a peer, a size and a msg and
  //   - calculates the cost for the local node sending a msg of size to peer using the Prices interface
  //   - credits/debits local node using balance interface