def METHOD_NAME(self):
    """
    Test that decompose_xxyy_into_xxyy_xx correctly recovers decompositions.
    """
    for _ in range(100):
        source_coordinate, interaction, target_coordinate = self._generate_xxyy_test_case()
        r, s, u, v, x, y = decompose_xxyy_into_xxyy_xx(
            target_coordinate[0],
            target_coordinate[1],
            source_coordinate[0],
            source_coordinate[1],
            interaction[0],
        )
        prod = (
            np.kron(RZGate(2 * r).to_matrix(), RZGate(2 * s).to_matrix())
            @ canonical_matrix(*source_coordinate)
            @ np.kron(RZGate(2 * u).to_matrix(), RZGate(2 * v).to_matrix())
            @ canonical_matrix(interaction[0], 0.0, 0.0)
            @ np.kron(RZGate(2 * x).to_matrix(), RZGate(2 * y).to_matrix())
        )
        expected = canonical_matrix(*target_coordinate)
        self.assertTrue(np.all(np.abs(prod - expected) < EPSILON))