code: func (ec *Client) CallContract(ctx context.Context, msg ethereum.CallMsg, blockNumber *big.Int) ([]byte, error) {
  	var hex hexutil.Bytes
  	err := ec.c.CallContext(ctx, &hex, "eth_call", toCallArg(msg), toBlockNumArg(blockNumber))
  	if err != nil {
  		return nil, err
  	}
  	return hex, nil
  }
docs: // TODO: SubscribePendingTransactions (needs server side)
  // Contract Calling
  // CallContract executes a message call transaction, which is directly executed in the VM
  // of the node, but never mined into the blockchain.
  //
  // blockNumber selects the block height at which the call runs. It can be nil, in which
  // case the code is taken from the latest known block. Note that state from very old
  // blocks might not be available.