def METHOD_NAME(df_factory):
    df1 = df_factory(x=[1, 2], y=[4, 5])
    df1b = df_factory(x=[1, 2], y=[4, 5])
    df2 = df_factory(x=[1, 3], y=[4, 5])
    assert df1.fingerprint() == df1b.fingerprint()
    assert df1.fingerprint() != df2.fingerprint()
    assert df1.fingerprint() == df1b.fingerprint()
    df1.add_variable('q', 1)  # this changes the state
    assert df1.fingerprint() != df1b.fingerprint()
    # but if we treeshake, it does not
    assert df1.fingerprint(treeshake=True) != df1b.fingerprint()