def METHOD_NAME(self):
    """
    Tests for these problems:
    iterrows does not necessarily preserve types:
    https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.iterrows.html
    itertuples does not preserve column names with understores or colons.
    """
    evaluator = Evaluator(function=self.identity)
    #  Test with ints and floats ONLY. A
    candidates = pd.DataFrame(
        {
            "ints": [1, 2, 3],
            "floats": [2.0, 3.0, 4.0],
            "_leading": [2.0, 3.0, 4.0],
            "has:colon": [1, 2.0, 3],
            ":colon:leading": [2.0, 3.0, 4.0],
            "strings": ["a", "b", "c"],
            "booleans": [True, False, True],
            "lists": [[1, 2, 3], [4, 5, 6], [7, 8, 9]],
            "dicts": [{"a": 1, "b": 2}, {"c": 3, "d": 4}, {"e": 5, "f": 6}],
            "dicts_compund": [
                {"a": 1, "b": True},
                {"c": 3, "d": "4"},
                {"e": 5, "f": 6},
            ],
            "tuples": [(1, 2, 3), (4, 5, 6), (7, 8, 9)],
        },
        index=[7, 8, 9],
    )
    futures = evaluator.submit_data(candidates)
    data = [fut.result() for fut in futures]
    df2 = pd.DataFrame(data, index=candidates.index)
    # Strip additional Xopt columns
    for key in df2.columns:
        if key.startswith("xopt_"):
            df2.pop(key)
    df2.columns = df2.columns.str.replace("_out", "")
    assert df2.equals(candidates), "DataFrame types were not preserved"