def METHOD_NAME(self, row_index: IndexType, col_index: IndexType, *batch_indices: IndexType) -> torch.Tensor:
    row_index = row_index.unsqueeze(-1)
    col_index = col_index.unsqueeze(-1)
    batch_indices = tuple(batch_index.unsqueeze(-1) for batch_index in batch_indices)
    inner_index = torch.arange(0, self.left_linear_op.size(-1), device=self.device)
    inner_index = _pad_with_singletons(inner_index, row_index.dim() - 1, 0)
    left_tensor = self.left_linear_op.METHOD_NAME(
        row_index, inner_index, *batch_indices[-len(self.left_linear_op.batch_shape) :]
    )
    right_tensor = self.right_linear_op.METHOD_NAME(
        inner_index, col_index, *batch_indices[-len(self.right_linear_op.batch_shape) :]
    )
    res = (left_tensor * right_tensor).sum(-1)
    return res