func: function handlePayment(
          uint256 gasUsed,
          uint256 dataGas,
          uint256 gasPrice,
          address gasToken,
          address refundReceiver
      )
          private
      {
          uint256 amount = ((gasUsed - gasleft()) + dataGas) * gasPrice;
          
          address receiver = refundReceiver == address(0) ? tx.origin : refundReceiver;
          if (gasToken == address(0)) {
                  
              require(receiver.send(amount), "Could not pay gas costs with ether");
          } else {
              require(transferToken(gasToken, receiver, amount), "Could not pay gas costs with token");
          }
      }