class_docstr: A base class for operators that are composed of other operators.
  
  Args:
      operands: (tuple[~.operation.Operator]): a tuple of operators which will be combined.
  
  Keyword Args:
      id (str or None): id for the operator. Default is None.
  
  The child composite operator should define the `_op_symbol` property
  during initialization and define any relevant representations, such as
  :meth:`~.operation.Operator.matrix` and :meth:`~.operation.Operator.decomposition`.
docstr: Groups all operands of the composite operator that act on overlapping wires.
  
  Returns:
      List[List[Operator]]: List of lists of operators that act on overlapping wires. All the
      inner lists commute with each other.
docstr_tok: ["Groups","all","operands","of","the","composite","operator","that","act","on","overlapping","wires",".","Returns",":","List","[","List","[","Operator","]","]",":","List","of","lists","of","operators","that","act","on","overlapping","wires",".","All","the","inner","lists","commute","with","each","other","."]
code: def overlapping_ops(self) -> List[List[Operator]]:
      """Groups all operands of the composite operator that act on overlapping wires.
  
      Returns:
          List[List[Operator]]: List of lists of operators that act on overlapping wires. All the
          inner lists commute with each other.
      """
      if self._overlapping_ops is None:
          overlapping_ops = []  # [(wires, [ops])]
          for op in self:
              ops = [op]
              wires = op.wires
              op_added = False
              for idx, (old_wires, old_ops) in enumerate(
                  overlapping_ops
              ):
                  if any(wire in old_wires for wire in wires):
                      overlapping_ops[idx] = (
                          old_wires + wires,
                          old_ops + ops,
                      )
                      op_added = True
                      break
              if not op_added:
                  overlapping_ops.append((op.wires, [op]))
  
          self._overlapping_ops = [
              overlapping_op[1] for overlapping_op in overlapping_ops
          ]
  
      return self._overlapping_ops
  
imports: import abc
  from typing import Callable, List
  import copy
  import numpy
  import pennylane
  from pennylane import math
  from pennylane.operation import Operator, convert_to_opmath, _UNSET_BATCH_SIZE
  from pennylane.wires import Wires
label_desc: Use image node_id 20 for calling the CompositeOp obj's underlying member method code with example usage: obj.overlapping_ops() and returns: self