code: def test_adjoint(self, device, dtype, batch_size):
      x_data = self._make_rand_data(device, dtype, batch_size, dims=6)
      y_data = self._make_rand_data(device, dtype, batch_size, dims=6)
      x = Se3.exp(x_data)
      y = Se3.exp(y_data)
      self.assert_close(x.inverse().adjoint(), x.adjoint().inverse())
      self.assert_close((x * y).adjoint(), x.adjoint() @ y.adjoint())
  
imports: import pytest
  import torch
  from kornia.geometry.conversions import euler_from_quaternion, rotation_matrix_to_quaternion
  from kornia.geometry.liegroup import Se3, So3
  from kornia.geometry.quaternion import Quaternion
  from kornia.geometry.vector import Vector3
  from kornia.testing import BaseTester
label_desc: Use image node_id 30 for calling the TestSe3 obj's underlying member method code with example usage: obj.test_adjoint(device, dtype, batch_size) without return types