def METHOD_NAME(cls, obj, dtype):
    pandas_type = PandasType.from_ibis(dtype)
    if obj.dtype == pandas_type and dtype.is_primitive():
        return obj
    method_name = f"convert_{dtype.__class__.__name__}"
    convert_method = getattr(cls, method_name, cls.convert_default)
    result = convert_method(obj, dtype, pandas_type)
    assert not isinstance(result, np.ndarray), f"{convert_method} -> {type(result)}"
    return result