code: def adjoint(self):
          
          if self.__domain_is_field:
              if isinstance(self.domain, RealNumbers):
                  return InnerProductOperator(self.multiplicand)
              elif isinstance(self.domain, ComplexNumbers):
                  return InnerProductOperator(self.multiplicand.conjugate())
              else:
                  raise NotImplementedError(
                      'adjoint not implemented for domain{!r}'
                      ''.format(self.domain))
          elif self.domain.is_complex:
              return MultiplyOperator(np.conj(self.multiplicand),
                                      domain=self.range, range=self.domain)
          else:
              return MultiplyOperator(self.multiplicand,
                                      domain=self.range, range=self.domain)
docs: Adjoint of this operator.
  
          Returns
          -------
          adjoint : `InnerProductOperator` or `MultiplyOperator`
              If the domain of this operator is the scalar field of a
              `LinearSpace` the adjoint is the inner product with ``y``,
              else it is the multiplication with ``y``.
  
          Examples
          --------
          >>> r3 = odl.rn(3)
          >>> x = r3.element([1, 2, 3])
  
          Multiply by a space element:
  
          >>> op = MultiplyOperator(x)
          >>> out = r3.element()
          >>> op.adjoint(x)
          rn(3).element([ 1.,  4.,  9.])
  
          Multiply scalars with a fixed vector:
  
          >>> op2 = MultiplyOperator(x, domain=r3.field)
          >>> op2.adjoint(x)
          14.0
  
          Multiply vectors with a fixed scalar:
  
          >>> op2 = MultiplyOperator(3.0, domain=r3, range=r3)
          >>> op2.adjoint(x)
          rn(3).element([ 3.,  6.,  9.])
  
          Multiplication operator with complex space:
  
          >>> c3 = odl.cn(3)
          >>> x_complex = c3.element([1, 1j, 1-1j])
          >>> op3 = MultiplyOperator(x_complex)
          >>> op3.adjoint.multiplicand
          cn(3).element([ 1.-0.j,  0.-1.j,  1.+1.j])