def METHOD_NAME():
    provider = mock.Mock(MetadataProvider)
    provider.configure_mock(name="test_meta")
    provider.generate_metadata.return_value = pd.DataFrame({"test1": [1, 2], "test2": [3, 4]})
    provider.supported_types.return_value = ["text", "category"]
    MetadataProviderRegistry.register(provider)
    df = pd.DataFrame({"col1": ["hello", "world"], "col2": ["CAT1", "CAT2"], "col3": [1, 2]})
    dataset = Dataset(df, column_types={"col1": "text", "col2": "category", "col3": "numeric"})
    metadata = dataset.column_meta["col1", "test_meta"]
    assert provider.generate_metadata.is_called_once()
    assert "test1" in metadata.columns
    assert "test2" in metadata.columns
    assert metadata["test1"].tolist() == [1, 2]
    # Metadata are cached, no extra calls should be done to the metadata provider
    metadata = dataset.column_meta["col1", "test_meta"]
    assert provider.generate_metadata.is_called_once()
    assert "test1" in metadata.columns
    assert "test2" in metadata.columns
    assert metadata["test1"].tolist() == [1, 2]