def METHOD_NAME():
    original_merge_strategies = list(metadata.MERGE_STRATEGIES)
    class MergeNumbersAsList(metadata.MergeStrategy):
        """
        Scalar float or int values are joined in a list.
        """
        types = ((int, float), (int, float))
        @classmethod
        def merge(cls, left, right):
            return [left, right]
    class MergeConcatStrings(metadata.MergePlus):
        """
        Scalar string values are concatenated
        """
        types = (str, str)
        enabled = False
    # Normally can't merge two scalar types
    meta1 = {"k1": 1, "k2": "a"}
    meta2 = {"k1": 2, "k2": "b"}
    # Enable new merge strategy
    with enable_merge_strategies(MergeNumbersAsList, MergeConcatStrings):
        assert MergeNumbersAsList.enabled
        assert MergeConcatStrings.enabled
        out = merge(meta1, meta2, metadata_conflicts="error")
    assert out["k1"] == [1, 2]
    assert out["k2"] == "ab"
    assert not MergeNumbersAsList.enabled
    assert not MergeConcatStrings.enabled
    # Confirm the default enabled=False behavior
    with pytest.raises(MergeConflictError):
        merge(meta1, meta2, metadata_conflicts="error")
    # Enable all MergeStrategy subclasses
    with enable_merge_strategies(metadata.MergeStrategy):
        assert MergeNumbersAsList.enabled
        assert MergeConcatStrings.enabled
        out = merge(meta1, meta2, metadata_conflicts="error")
    assert out["k1"] == [1, 2]
    assert out["k2"] == "ab"
    assert not MergeNumbersAsList.enabled
    assert not MergeConcatStrings.enabled
    metadata.MERGE_STRATEGIES = original_merge_strategies