code: def adjoint(self):
          
          if not self.is_linear:
              raise OpNotImplementedError('nonlinear operators have no adjoint')
  
          return OperatorComp(self.right.adjoint, self.left.adjoint,
                              self.__tmp)
docs: Adjoint of this operator.
  
          The adjoint of the operator composition is the composition of
          the operator adjoints in reverse order:
  
              ``OperatorComp(left, right).adjoint ==
              OperatorComp(right.adjoint, left.adjoint)``
  
          Returns
          -------
          adjoint : `OperatorComp`
  
          Raises
          ------
          OpNotImplementedError
              If any of the underlying operators are non-linear.