function transferAndCall(address to, uint256 value, bytes4 sig, bytes memory data)
    public
    returns (bool)
  {
    _transfer(msg.sender, to, value);
    (bool success,) = to.call(abi.encodePacked(sig, uint256(msg.sender), value, data));
    require(success);
    return true;
  }