code: def adjoint(self):
          
          if not self.is_linear:
              raise OpNotImplementedError('nonlinear operators have no adjoint')
  
          if self.vector.space.is_real:
              # The complex conjugate of a real vector is the vector itself.
              return self.vector * self.operator.adjoint
          else:
              return self.vector.conj() * self.operator.adjoint
docs: Adjoint of this operator.
  
          The adjoint of the operator right vector multiplication is the left
          multiplication of the given operator by the complex conjugate of the
          given vector.
  
              ``OperatorRightVectorMult(op, y).adjoint ==
              OperatorLeftVectorMult(op.adjoint, y.conj())``
  
          Returns
          -------
          adjoint : `OperatorLeftVectorMult`
  
          Raises
          ------
          OpNotImplementedError
              If the underlying operator is non-linear.